UNPKG

cozy-iiif

Version:

A developer-friendly collection of abstractions and utilities built on top of @iiif/presentation-3 and @iiif/parser

143 lines (142 loc) 4.36 kB
import { Manifest, Canvas, IIIFExternalWebResource, Collection, Range, AnnotationPage, Service } from '@iiif/presentation-3'; export type CozyParseResult = { type: 'collection'; url: string; resource: CozyCollection; } | { type: 'manifest'; url: string; resource: CozyManifest; } | { type: 'iiif-image'; url: string; resource: CozyImageResource; } | { type: 'plain-image'; url: string; } | { type: 'webpage'; url: string; } | { type: 'error'; code: 'INVALID_URL' | 'INVALID_HTTP_RESPONSE' | 'FETCH_ERROR' | 'INVALID_MANIFEST' | 'UNSUPPORTED_FORMAT'; message: string; }; export interface CozyCollection { readonly majorVersion: number; readonly source: Collection; readonly id: string; readonly items: CozyCollectionItem[]; getLabel(locale?: string): string | undefined; getMetadata(locale?: string): CozyMetadata[]; } export interface CozyCollectionItem { readonly id: string; readonly type: string; readonly source: any; getLabel(locale?: string): string | undefined; } export interface CozyManifest { readonly majorVersion: number; readonly source: Manifest; readonly id: string; readonly canvases: CozyCanvas[]; readonly structure: CozyRange[]; getLabel(locale?: string): string | undefined; getTableOfContents(): CozyTOC; getMetadata(locale?: string): CozyMetadata[]; } export interface CozyRange { readonly source: Range; readonly id: string; readonly items: (CozyCanvas | CozyRange)[]; readonly canvases: CozyCanvas[]; readonly ranges: CozyRange[]; getLabel(locale?: string): string | undefined; } export interface CozyCanvas { readonly source: Canvas; readonly id: string; readonly width: number; readonly height: number; readonly images: CozyImageResource[]; readonly annotations: AnnotationPage[]; getImageURL(minSize?: number): string; getLabel(locale?: string): string; getMetadata(locale?: string): CozyMetadata[]; getThumbnailURL(minSize?: number): string; } export interface CozyMetadata { readonly label: string; readonly value: string; } export interface CozyTOC { root: CozyTOCNode[]; enumerateNodes(type?: 'range' | 'canvas'): CozyTOCNode[]; getBreadcrumbs(id: string): CozyTOCNode[]; getNode(id: string): CozyTOCNode | undefined; } export interface CozyTOCNode { readonly id: string; readonly type: 'range' | 'canvas'; readonly source: CozyRange | CozyCanvas; readonly children: CozyTOCNode[]; readonly navItems: CozyCanvas[]; readonly navSections: CozyRange[]; readonly parent?: CozyTOCNode; readonly level: number; getLabel(locale?: string): string | undefined; } export type CozyImageResource = StaticImageResource | ImageServiceResource; export type ImageServiceResource = DynamicImageServiceResource | Level0ImageServiceResource; interface BaseImageResource { readonly source: IIIFExternalWebResource; readonly type: 'static' | 'dynamic' | 'level0'; readonly width: number; readonly height: number; getImageURL(minSize?: number): string; getPixelSize(): Promise<{ width: number; height: number; }>; } export interface StaticImageResource extends BaseImageResource { readonly type: 'static'; readonly url: string; } export interface DynamicImageServiceResource extends BaseImageResource { readonly type: 'dynamic'; readonly service: Service; readonly serviceUrl: string; readonly majorVersion: number; getRegionURL(bounds: Bounds, opts?: GetRegionURLOpts): string; } export interface Level0ImageServiceResource extends BaseImageResource { readonly type: 'level0'; readonly majorVersion: number; readonly service: Service; readonly serviceUrl: string; } export interface ImageRequestOptions { readonly width?: number; readonly height?: number; readonly region?: 'full' | 'square' | { x: number; y: number; width: number; height: number; }; readonly quality?: 'default' | 'color' | 'gray' | 'bitonal'; readonly format?: 'jpg' | 'png' | 'gif' | 'webp'; } export interface Bounds { x: number; y: number; w: number; h: number; } export interface GetRegionURLOpts { minSize?: number; maxSize?: number; } export {};