You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Annotations with selectors inside an Annotation page
This helper should be useful both for providing enough information to display the current item in a sequence, helpers for next/previous in a sequence and also easy to build a tree or list navigation from one.
Here's what a single parsed sequence might look like:
constsequence: ParsedSequence={id: 'https://example.org/sequence',type: 'manifest-items',label: {en: ['something']},start: 0,grouping: [[0],[1,2],[3]],navigation: {id: '..',// maybe reuse the range ID?label: {en: ['Table of contents']},items: [{id: '..',label: {en: ['Cover']},start: 0,indexes: [0]},{id: '..',label: {en: ['Chapter 1']},start: 1,indexes: [1,2]},{id: '..',label: {en: ['Back cover']},start: 3,indexes: [3]},]},items: [// Should all be resolvable with `vault.get()`{id: 'https://example.org/cover',type: 'Canvas',label: {en: ['Cover']}},{id: 'https://example.org/page-1',type: 'Canvas',label: {en: ['Page 1']}},{id: 'https://example.org/page-2',type: 'Canvas',label: {en: ['Page 2']}},{id: 'https://example.org/back',type: 'Canvas',label: {en: ['Back']}},],}
With helpers like:
nextInSequence(sequence: ParsedSequence,currentIndex: number): index|undefined;previousInSequence(sequence: ParsedSequence,currentIndex: number): index|undefined;activeNavigation(sequence: ParsedSequence,currentIndex: number): string[];// For active statesgetGrouping(sequence: ParsedSequence,currentIndex: number): number[];
Time-based range navigation here: https://iiif.io/api/cookbook/recipe/0026-toc-opera/
Although this should be supported, returning SpecificResource instead of canvas references (PR upcoming in IIIF Parser) - it would not be able to tell you which media should be playing. So there is still a gap for a vault helper that can take "Canvas" + "Time range" and return enough data to construct an <audio /> tag with correct start/end. To highlight the complexity - you could "paint" an MP4 onto a canvas using:
With this annotation, you are saying that you want to play from 30s-60s from the audio source, and paint it onto the canvas at 0s-30s. So when you have a range that says: canvas/1#t=10 that needs to be resolved into 10s for the UI, but 40s for the <audio/>
Annotations: https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/
In this example, either embedded or referenced annotations, inside of an annotation page, could be constructed into a sequence. For example it could be used to drive navigation through search results or drive exhibition-style experiences.
NavDate navigation, this helper could possible sort them into an order if there is a nav date present - however the generated navigation could be highly configurable, with splitting by year, month, day (for newspapers) and we could do something automatic by default based on the range of dates.
There are quite a few ways viewers can sequences up canvases, and optionally regions / time-slices to present to the user.
You could make a sequences of canvases from:
manifest.items
The slices of IIIF that can affect any given sequence:
manifest.items
individuals
,paged
,facing-pages
,sequence
,hidden
)This helper should be useful both for providing enough information to display the current item in a sequence, helpers for next/previous in a sequence and also easy to build a tree or list navigation from one.
Here's what a single parsed sequence might look like:
With helpers like:
Cookbook
There are some examples of book paging strategies:
https://iiif.io/api/cookbook/recipe/0011-book-3-behavior/
Accordion book - in this example, there are 4 images that are continuous. In other words there is only ever one grouping:
Individuals - the groupings in this example would be flat (or not present)
Table of contents: https://iiif.io/api/cookbook/recipe/0024-book-4-toc/
This will be very relevant, and the most likely use-case to be found in the wild.
Nav date is explained here (possibly out of scope, see below)
https://iiif.io/api/cookbook/recipe/0230-navdate/
Time-based range navigation here: https://iiif.io/api/cookbook/recipe/0026-toc-opera/
Although this should be supported, returning
SpecificResource
instead of canvas references (PR upcoming in IIIF Parser) - it would not be able to tell you which media should be playing. So there is still a gap for a vault helper that can take "Canvas" + "Time range" and return enough data to construct an<audio />
tag with correct start/end. To highlight the complexity - you could "paint" an MP4 onto a canvas using:With this annotation, you are saying that you want to play from 30s-60s from the audio source, and paint it onto the canvas at 0s-30s. So when you have a range that says:
canvas/1#t=10
that needs to be resolved into10s
for the UI, but40s
for the<audio/>
Annotations: https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/
In this example, either embedded or referenced annotations, inside of an annotation page, could be constructed into a sequence. For example it could be used to drive navigation through search results or drive exhibition-style experiences.
Missing pieces
navigation
could be highly configurable, with splitting by year, month, day (for newspapers) and we could do something automatic by default based on the range of dates.sequence
Range) IIIF/cookbook-recipes#27)Assumptions
The text was updated successfully, but these errors were encountered: