A modern IIIF viewer with a small footprint (despite the name) distributed as a web component that can be dropped into any HTML page or frontend framework.
This is a work in progress and does not support all required IIIF client features (yet).
This project is heavily inspired by Mirador 4, which I still view as the premier IIIF viewer.
This project is actively developed. The following IIIF features are not yet supported:
choice property is not supportedduration) not supportedstart property: Cannot specify initial canvas or temporal positionnavDate: No date-based navigation for newspapers/journalsbehavior property is not read from manifests; viewing mode is set manually via UIcontinuous, facing-pages, auto-advance, repeat, hidden, etc.viewingDirection: Not used for layout decisionsrendering property: No links to alternative formats (PDF, etc.)placeholderCanvas/accompanyingCanvas: Not supportedThe goal is to support all IIIF client mandatory features with pluggable optional features. The footprint of Triiiceratops, despite the name, is intended to remain considerably smaller than other fully featured viewers while attaining feature parity.
The viewer is available as a web component that works in any framework or static HTML.
Via CDN:
<script
type="module"
src="https://unpkg.com/triiiceratops/dist/triiiceratops-element.js"
></script>
<link
rel="stylesheet"
href="https://unpkg.com/triiiceratops/dist/triiiceratops-element.css"
/>
<div style="height: 600px; width: 100%;">
<triiiceratops-viewer
style="height: 100%; width: 100%; display: block;"
manifest-id="https://iiif.wellcomecollection.org/presentation/v2/b18035723"
>
</triiiceratops-viewer>
</div>
If you are using Svelte, you can import the component directly.
Installation:
pnpm add triiiceratops
Usage:
<script>
import { TriiiceratopsViewer } from 'triiiceratops';
</script>
<!-- Container must have height -->
<div style="height: 600px;">
<TriiiceratopsViewer
manifestId="https://iiif.wellcomecollection.org/presentation/v2/b18035723"
/>
</div>
pnpm install
pnpm dev # Start local demo server
pnpm build:all # Build library, web component, and demo
pnpm test # Run unit tests
pnpm test:e2e # Run end-to-end tests
MIT