react-iiif-vault 1.0.10 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../../../src/context/ResourceContext.tsx","../../../src/context/VaultContext.tsx","../../../src/hooks/useExistingVault.ts","../../../src/hooks/useExternalResource.ts","../../../src/hooks/useExternalManifest.ts","../../../src/context/ManifestContext.tsx","../../../src/context/CanvasContext.tsx","../../../src/hooks/useVault.ts","../../../src/hooks/useVaultSelector.ts","../../../src/context/VisibleCanvasContext.tsx","../../../src/hooks/useManifest.ts","../../../src/context/RangeContext.tsx","../../../src/future-helpers/ranges.ts","../../../src/future-helpers/sequences.ts","../../../src/hooks/useRange.ts","../../../src/viewers/SimpleViewerContext.hooks.ts","../../../src/viewers/SimpleViewerContext.tsx","../../../src/context/ContextBridge.tsx","../../../node_modules/@iiif/helpers/dist/vault-actions/esm/vault-actions.mjs","../../../src/hooks/useDispatch.ts","../../../src/hooks/useVirtualAnnotationPage.ts","../../../src/hooks/useVirtualAnnotationPageContext.tsx","../../../src/canvas-panel/render/DefaultCanvasFallback.tsx","../../../src/context/ViewerPresetContext.tsx","../../../src/canvas-panel/context/overlays.tsx","../../../src/hooks/useCanvas.ts","../../../src/canvas-panel/context/world-size.ts","../../../src/canvas-panel/Viewer.tsx","../../../node_modules/@iiif/helpers/dist/events/esm/events.mjs","../../../src/hooks/useResourceEvents.ts","../../../src/hooks/useStyles.ts","../../../src/hooks/useAnnotation.ts","../../../src/canvas-panel/render/Annotation.tsx","../../../src/hooks/useAnnotationPage.ts","../../../src/canvas-panel/render/AnnotationPage.tsx","../../../src/canvas-panel/render/Image.tsx","../../../src/features/rendering-strategy/rendering-utils.ts","../../../src/hooks/useEnabledAnnotationPageIds.ts","../../../src/utility/flatten-annotation-page-ids.ts","../../../src/hooks/useAnnotationPageManager.ts","../../../src/hooks/useResources.ts","../../../src/context/ImageServiceLoaderContext.tsx","../../../src/hooks/useLoadImageService.ts","../../../src/hooks/usePaintingAnnotations.ts","../../../node_modules/@iiif/helpers/dist/painting-annotations/esm/painting-annotations.mjs","../../../src/hooks/usePaintables.ts","../../../src/features/rendering-strategy/3d-strategy.ts","../../../src/features/rendering-strategy/audio-strategy.ts","../../../src/features/rendering-strategy/image-strategy.ts","../../../src/features/rendering-strategy/textual-content-strategy.ts","../../../src/features/rendering-strategy/video-strategy.ts","../../../src/features/rendering-strategy/get-rendering-strategy.ts","../../../src/hooks/useRenderingStrategy.ts","../../../src/hooks/useVaultEffect.ts","../../../src/hooks/useThumbnail.ts","../../../src/hooks/useSimpleMediaPlayer.ts","../../../src/context/MediaContext.tsx","../../../src/canvas-panel/render/Audio.tsx","../../../src/canvas-panel/render/Video.tsx","../../../src/canvas-panel/render/Model.tsx","../../../src/canvas-panel/render/CanvasBackground.tsx","../../../src/utility/i18n-utils.tsx","../../../src/canvas-panel/render/VideoYouTube.tsx","../../../src/canvas-panel/render/Canvas.tsx","../../../src/canvas-panel/index.tsx","../../../src/components/CanvasAnnotations.tsx","../../../src/components/Metadata.tsx","../../../src/components/CombinedMetadata.tsx","../../../src/hooks/useImage.ts","../../../src/components/Image.tsx","../../../src/components/ManifestMetadata.tsx","../../../node_modules/react-lazy-load-image-component/build/index.js","../../../node_modules/@iiif/helpers/dist/i18n/esm/i18n.mjs","../../../src/components/SingleCanvasThumbnail.tsx","../../../src/components/SequenceThumbnails.tsx","../../../src/context/AnnotationContext.tsx","../../../src/context/AnnotationPageContext.tsx","../../../src/context/CollectionContext.tsx","../../../src/hooks/useAnnotationsAtTime.ts","../../../src/hooks/useCanvasClock.ts","../../../src/hooks/useCanvasSubset.ts","../../../src/hooks/useCollection.ts","../../../src/hooks/useEventListener.ts","../../../src/hooks/useExternalCollection.ts","../../../src/hooks/useImageService.ts","../../../src/hooks/useImageTile.ts","../../../src/hooks/useSearchService.ts","../../../src/hooks/useStyleHelper.ts"],"sourcesContent":["'use client';\nimport { createContext, Component, createElement, isValidElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n didCatch: false,\n error: null\n};\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n this.state = initialState;\n }\n static getDerivedStateFromError(error) {\n return {\n didCatch: true,\n error\n };\n }\n resetErrorBoundary() {\n const {\n error\n } = this.state;\n if (error !== null) {\n var _this$props$onReset, _this$props;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n args,\n reason: \"imperative-api\"\n });\n this.setState(initialState);\n }\n }\n componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n }\n componentDidUpdate(prevProps, prevState) {\n const {\n didCatch\n } = this.state;\n const {\n resetKeys\n } = this.props;\n\n // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n // we'd end up resetting the error boundary immediately.\n // This would likely trigger a second error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n var _this$props$onReset2, _this$props3;\n (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n next: resetKeys,\n prev: prevProps.resetKeys,\n reason: \"keys\"\n });\n this.setState(initialState);\n }\n }\n render() {\n const {\n children,\n fallbackRender,\n FallbackComponent,\n fallback\n } = this.props;\n const {\n didCatch,\n error\n } = this.state;\n let childToRender = children;\n if (didCatch) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n if (typeof fallbackRender === \"function\") {\n childToRender = fallbackRender(props);\n } else if (FallbackComponent) {\n childToRender = createElement(FallbackComponent, props);\n } else if (fallback === null || isValidElement(fallback)) {\n childToRender = fallback;\n } else {\n throw error;\n }\n }\n return createElement(ErrorBoundaryContext.Provider, {\n value: {\n didCatch,\n error,\n resetErrorBoundary: this.resetErrorBoundary\n }\n }, childToRender);\n }\n}\nfunction hasArrayChanged() {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n throw new Error(\"ErrorBoundaryContext not found\");\n }\n}\n\nfunction useErrorBoundary() {\n const context = useContext(ErrorBoundaryContext);\n assertErrorBoundaryContext(context);\n const [state, setState] = useState({\n error: null,\n hasError: false\n });\n const memoized = useMemo(() => ({\n resetBoundary: () => {\n context.resetErrorBoundary();\n setState({\n error: null,\n hasError: false\n });\n },\n showBoundary: error => setState({\n error,\n hasError: true\n })\n }), [context.resetErrorBoundary]);\n if (state.hasError) {\n throw state.error;\n }\n return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n ...props,\n ref\n })));\n\n // Format for display in DevTools\n const name = component.displayName || component.name || \"Unknown\";\n Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n","import React, { ReactNode, useContext, useMemo } from 'react';\n\nconst defaultResourceContext = {\n collection: undefined,\n manifest: undefined,\n range: undefined,\n canvas: undefined,\n annotation: undefined,\n annotationPage: undefined,\n};\n\nexport type ResourceContextType = {\n collection?: string;\n manifest?: string;\n range?: string;\n canvas?: string;\n annotation?: string;\n annotationPage?: string;\n};\n\nexport const ResourceReactContext = React.createContext<ResourceContextType>(defaultResourceContext);\n\nexport const useResourceContext = () => {\n return useContext(ResourceReactContext);\n};\n\nexport function ResourceProvider({ value, children }: { value: ResourceContextType; children: ReactNode }) {\n const parentContext = useResourceContext();\n const newContext = useMemo(() => {\n return {\n ...parentContext,\n ...value,\n };\n }, [value, parentContext]);\n\n return <ResourceReactContext.Provider value={newContext}>{children}</ResourceReactContext.Provider>;\n}\n","import React, { ReactElement, ReactNode, useState } from 'react';\nimport { Vault, VaultOptions, globalVault } from '@iiif/helpers/vault';\nimport { ResourceContextType, ResourceProvider } from './ResourceContext';\n\nexport const ReactVaultContext = React.createContext<{\n vault: Vault | null;\n setVaultInstance: (vault: Vault) => void;\n}>({\n vault: null,\n setVaultInstance: (vault: Vault) => {\n // Do nothing.\n },\n});\n\nexport function VaultProvider({\n vault,\n vaultOptions,\n useGlobal,\n resources,\n children,\n}: {\n vault?: Vault;\n useGlobal?: boolean;\n vaultOptions?: VaultOptions;\n resources?: ResourceContextType;\n children: ReactNode;\n}) {\n const [vaultInstance, setVaultInstance] = useState<Vault>(() => {\n if (vault) {\n return vault;\n }\n if (useGlobal) {\n return globalVault(vaultOptions);\n }\n if (vaultOptions) {\n return new Vault(vaultOptions);\n }\n return new Vault();\n });\n\n return (\n <ReactVaultContext.Provider value={{ vault: vaultInstance, setVaultInstance }}>\n <ResourceProvider value={resources || {}}>{children}</ResourceProvider>\n </ReactVaultContext.Provider>\n );\n}\n","import { globalVault, Vault } from '@iiif/helpers/vault';\nimport { useContext } from 'react';\nimport { ReactVaultContext } from '../context/VaultContext';\n\nexport function useExistingVault(vault?: Vault): Vault {\n const oldContext: any = useContext(ReactVaultContext);\n\n if (vault) {\n return vault;\n }\n\n return oldContext && oldContext.vault ? (oldContext.vault as any) : globalVault();\n}\n","import { useExistingVault } from './useExistingVault';\nimport { useEffect, useMemo, useState } from 'react';\n\nexport type ResourceRequestOptions = {\n noCache?: boolean;\n};\n\nexport function useExternalResource<T extends { id: string }>(\n idOrRef: string | { id: string; type: string },\n { noCache = false }: ResourceRequestOptions = {}\n): {\n id: string;\n requestId: string;\n isLoaded: boolean;\n error: any;\n cached: boolean;\n resource?: T;\n} {\n const id = typeof idOrRef === 'string' ? idOrRef : idOrRef.id;\n const vault = useExistingVault();\n const [realId, setRealId] = useState(id);\n const [error, setError] = useState<Error | undefined>(undefined);\n const initialData = useMemo(() => {\n return vault.get(id, { skipSelfReturn: true }) || undefined;\n }, [id, vault]);\n const [resource, setResource] = useState<T | undefined>(initialData);\n\n useEffect(() => {\n (async () => {\n try {\n const fetchedResource = initialData && !noCache ? initialData : await vault.load<T>(id);\n const _realId = fetchedResource ? fetchedResource.id || (fetchedResource as any)['@id'] : null;\n if (fetchedResource && realId !== _realId) {\n setRealId(_realId);\n }\n\n setResource(fetchedResource);\n } catch (err) {\n setError(err as Error);\n }\n })();\n }, [id, noCache]);\n\n return {\n isLoaded: !!resource,\n id: realId,\n requestId: id,\n error,\n resource,\n cached: !!(resource && resource === initialData),\n };\n}\n","import { ManifestNormalized } from '@iiif/presentation-3-normalized';\nimport { ResourceRequestOptions, useExternalResource } from './useExternalResource';\n\nexport function useExternalManifest(\n idOrRef: string | { id: string; type: string },\n options?: ResourceRequestOptions\n): {\n id: string;\n requestId: string;\n isLoaded: boolean;\n cached?: boolean;\n error: any;\n manifest?: ManifestNormalized;\n} {\n const { id, isLoaded, error, resource, requestId, cached } = useExternalResource<ManifestNormalized>(\n idOrRef,\n options\n );\n\n return { id, isLoaded, error, manifest: resource, requestId, cached };\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function ManifestContext({ manifest, children }: { manifest: string; children: ReactNode }) {\n return <ResourceProvider value={{ manifest }}>{children}</ResourceProvider>;\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function CanvasContext({ canvas, children }: { canvas: string; children: ReactNode }) {\n return <ResourceProvider value={{ canvas }}>{children}</ResourceProvider>;\n}\n","import { ReactVaultContext } from '../context/VaultContext';\nimport { useContext } from 'react';\nimport { Vault } from '@iiif/helpers/vault';\n\nexport const useVault = (): Vault => {\n const { vault } = useContext(ReactVaultContext);\n\n if (vault === null) {\n throw new Error('Vault not found. Ensure you have your provider set up correctly.');\n }\n\n return vault as Vault;\n};\n","import { useVault } from './useVault';\nimport { IIIFStore, Vault } from '@iiif/helpers/vault';\nimport { useEffect, useState } from 'react';\n\nexport function useVaultSelector<T>(selector: (state: IIIFStore, vault: Vault) => T, deps: any[] = []) {\n const vault = useVault();\n const [selectedState, setSelectedState] = useState<T>(() => selector(vault.getState(), vault));\n\n useEffect(() => {\n return vault.subscribe(\n (s) => selector(s, vault),\n (s) => {\n setSelectedState(s);\n },\n false\n );\n }, deps);\n\n return selectedState as T;\n}\n","import { useContext } from 'react';\nimport React from 'react';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { useVaultSelector } from '../hooks/useVaultSelector';\n\nexport const VisibleCanvasReactContext = React.createContext<string[]>([]);\n\nexport function useVisibleCanvases(): CanvasNormalized[] {\n const ids = useContext(VisibleCanvasReactContext);\n\n return useVaultSelector<CanvasNormalized[]>(\n (state) => {\n return ids.map((id) => state.iiif.entities.Canvas[id]).filter(Boolean);\n },\n [ids]\n );\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { ManifestNormalized } from '@iiif/presentation-3-normalized';\nimport { useVault } from './useVault';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useManifest(options?: { id: string }): ManifestNormalized | undefined;\nexport function useManifest<T>(\n options?: { id: string; selector: (manifest: ManifestNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useManifest<T = ManifestNormalized>(\n options: {\n id?: string;\n selector?: (manifest: ManifestNormalized) => T;\n } = {},\n deps: any[] = []\n): ManifestNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const vault = useVault();\n const manifestId = id ? id : ctx.manifest;\n\n const manifest = useVaultSelector(\n (s) => (manifestId ? s.iiif.entities.Manifest[manifestId] : undefined),\n [manifestId]\n );\n\n return useMemo(() => {\n if (!manifest) {\n return undefined;\n }\n if (selector) {\n return selector(manifest);\n }\n return manifest;\n }, [manifest, selector, ...deps]);\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function RangeContext({ range, children }: { range: string; children: ReactNode }) {\n return <ResourceProvider value={{ range }}>{children}</ResourceProvider>;\n}\n","import { Vault } from '@iiif/helpers/vault';\nimport { ManifestNormalized, RangeNormalized } from '@iiif/presentation-3-normalized';\nimport { Reference } from '@iiif/presentation-3';\n\nexport function findFirstCanvasFromRange(vault: Vault, range: RangeNormalized): null | Reference<'Canvas'> {\n for (const inner of range.items) {\n if ((inner as any).type === 'Canvas') {\n return inner as any as Reference<'Canvas'>;\n }\n if (inner.type === 'SpecificResource') {\n return inner.source as Reference<'Canvas'>;\n }\n if (inner.type === 'Range') {\n const found = findFirstCanvasFromRange(vault, vault.get(inner));\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n\nexport function findAllCanvasesInRange(vault: Vault, range: RangeNormalized): Array<Reference<'Canvas'>> {\n const found: Reference<'Canvas'>[] = [];\n for (const inner of range.items) {\n if (inner.type === 'SpecificResource' && inner.source?.type === 'Canvas') {\n if (inner.source.id.indexOf('#') !== -1) {\n found.push({ id: inner.source.id.split('#')[0], type: 'Canvas' });\n } else {\n found.push(inner.source as Reference<'Canvas'>);\n }\n }\n if (inner.type === 'Range') {\n found.push(...findAllCanvasesInRange(vault, vault.get(inner)));\n }\n if ((inner as any).type === 'SpecificResource') {\n const sourceId = typeof (inner as any).source === 'string' ? (inner as any).source : (inner as any).source.id;\n found.push({ id: sourceId, type: 'Canvas' });\n }\n }\n return found;\n}\n\nexport function findManifestSelectedRange(\n vault: Vault,\n manifest: ManifestNormalized,\n canvasId: string\n): null | RangeNormalized {\n for (const range of manifest.structures) {\n const found = findSelectedRange(vault, vault.get(range), canvasId);\n if (found) {\n return found;\n }\n }\n\n return null;\n}\n\nexport function findSelectedRange(vault: Vault, range: RangeNormalized, canvasId: string): null | RangeNormalized {\n for (const inner of range.items) {\n const parsedId = (inner as any)?.source?.id?.split('#')[0];\n if ((inner as any).type === 'SpecificResource' && (inner as any).source === canvasId) {\n return range;\n }\n if (inner.type === 'SpecificResource' && inner.source?.type === 'Canvas' && canvasId === parsedId) {\n return range;\n }\n if (inner.type === 'Range') {\n const found = findSelectedRange(vault, vault.get(inner), canvasId);\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n","import { CanvasNormalized, ManifestNormalized, RangeNormalized } from '@iiif/presentation-3-normalized';\nimport { Reference } from '@iiif/presentation-3';\nimport { Vault } from '@iiif/helpers/vault';\nimport { findAllCanvasesInRange } from './ranges';\n\n/**\n * Get visible canvases from canvas ID\n *\n * This function returns a list of canvas references that should all be displayed\n * when the passed canvasId is visible. This should work for individual items,\n * 2-up paged view and continuous (scrolls).\n *\n * The options are listed below (from IIIF docs)\n *\n * - `unordered` - Valid on Collections, Manifests and Ranges. The Canvases included in resources that have this behavior\n * have no inherent order, and user interfaces should avoid implying an order to the user. Disjoint with individuals,\n * continuous, and paged.\n *\n * - `individuals` - Valid on Collections, Manifests, and Ranges. For Collections that have this behavior, each of the\n * included Manifests are distinct objects in the given order. For Manifests and Ranges, the included Canvases are\n * distinct views, and should not be presented in a page-turning interface. This is the default layout behavior if\n * not specified. Disjoint with unordered, continuous, and paged.\n *\n * - `continuous` Valid on Collections, Manifests and Ranges, which include Canvases that have at least height and\n * width dimensions. Canvases included in resources that have this behavior are partial views and an appropriate\n * rendering might display all of the Canvases virtually stitched together, such as a long scroll split into\n * sections. This behavior has no implication for audio resources. The viewingDirection of the Manifest will\n * determine the appropriate arrangement of the Canvases. Disjoint with unordered, individuals and paged.\n *\n * - `paged` Valid on Collections, Manifests and Ranges, which include Canvases that have at least height and width\n * dimensions. Canvases included in resources that have this behavior represent views that should be presented in\n * a page-turning interface if one is available. The first canvas is a single view (the first recto) and thus the\n * second canvas likely represents the back of the object in the first canvas. If this is not the case, see the\n * behavior value non-paged. Disjoint with unordered, individuals, continuous, facing-pages and non-paged.\n *\n */\nexport function getVisibleCanvasesFromCanvasId(\n vault: Vault,\n manifestOrRange: ManifestNormalized | RangeNormalized,\n canvasId: string | null,\n preventPaged = false\n): Reference<'Canvas'>[] {\n const behavior = manifestOrRange.behavior;\n const fullCanvas = canvasId ? vault.get<CanvasNormalized>(canvasId) : null;\n if (!fullCanvas) {\n return [];\n }\n\n const canvasBehavior = fullCanvas.behavior;\n const isPaged = preventPaged ? false : behavior.includes('paged');\n const isContinuous = isPaged ? false : behavior.includes('continuous');\n const isIndividuals = isPaged || isContinuous ? false : behavior.includes('individuals');\n const isCanvasFacingPages = canvasBehavior.includes('facing-pages');\n const isCanvasNonPaged = canvasBehavior.includes('non-paged');\n\n // Individuals should just be the default.\n if (isCanvasFacingPages || isCanvasNonPaged || isIndividuals || preventPaged) {\n return [{ id: fullCanvas.id, type: 'Canvas' }];\n }\n\n const [manifestItems, ordering] = getManifestSequence(vault, manifestOrRange);\n\n // Continuous should just return all items together.\n if (isContinuous) {\n return manifestItems;\n }\n\n const canvasIndex = manifestItems.findIndex((r) => r.id === canvasId);\n if (canvasIndex === -1) {\n return [];\n }\n\n for (const indexes of ordering) {\n if (indexes.includes(canvasIndex)) {\n return indexes.map((index) => manifestItems[index]);\n }\n }\n\n return [{ id: fullCanvas.id, type: 'Canvas' }];\n}\n\nexport function getManifestSequence(\n vault: Vault,\n manifestOrRange: ManifestNormalized | RangeNormalized,\n { disablePaging, skipNonPaged }: { disablePaging?: boolean; skipNonPaged?: boolean } = {}\n): [Reference<'Canvas'>[], number[][]] {\n const behavior = manifestOrRange.behavior;\n const isPaged = behavior.includes('paged');\n const isContinuous = isPaged ? false : behavior.includes('continuous');\n const isIndividuals = isPaged || isContinuous ? false : behavior.includes('individuals');\n const manifestItems =\n manifestOrRange.type === 'Manifest' ? manifestOrRange.items : findAllCanvasesInRange(vault, manifestOrRange);\n\n // Continuous should just return all items together.\n if (isContinuous) {\n return [manifestItems, [manifestItems.map((_, index) => index)]];\n }\n\n // Individuals should just be the default.\n if (isIndividuals || !isPaged || disablePaging) {\n return [manifestItems, manifestItems.map((_, index) => [index])];\n }\n\n // This is the tricky case.\n const ordering: number[][] = [];\n let currentOrdering: number[] = [];\n\n const flush = () => {\n if (currentOrdering.length) {\n ordering.push([...currentOrdering]);\n currentOrdering = [];\n }\n };\n\n let offset = 0;\n let flushNextPaged = false;\n for (let i = 0; i < manifestItems.length; i++) {\n const canvas = vault.get<CanvasNormalized>(manifestItems[i]);\n if (canvas.behavior.includes('non-paged')) {\n if (i === offset) {\n offset++;\n }\n if (!skipNonPaged) {\n flush();\n ordering.push([i]);\n flush();\n }\n continue;\n }\n\n if (i === offset || canvas.behavior.includes('facing-pages')) {\n // Flush and push a single.\n if (currentOrdering.length) {\n flushNextPaged = true;\n }\n flush();\n ordering.push([i]);\n flush();\n continue;\n }\n\n currentOrdering.push(i);\n\n if (flushNextPaged) {\n flush();\n flushNextPaged = false;\n continue;\n }\n\n if (currentOrdering.length > 1) {\n flush();\n }\n }\n\n if (currentOrdering.length) {\n flush();\n }\n\n return [manifestItems, ordering];\n}\n","// This is valid under a range context.\nimport { useResourceContext } from '../context/ResourceContext';\nimport { RangeNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useRange(options?: { id: string }): RangeNormalized | undefined;\nexport function useRange<T>(\n options?: { id: string; selector: (range: RangeNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useRange<T = RangeNormalized>(\n options: {\n id?: string;\n selector?: (range: RangeNormalized) => T;\n } = {},\n deps: any[] = []\n): RangeNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const rangeId = id ? id : ctx.range;\n\n const range = useVaultSelector((s) => (rangeId ? s.iiif.entities.Range[rangeId] : undefined), [rangeId]);\n\n return useMemo(() => {\n if (!range) {\n return undefined;\n }\n if (selector) {\n return selector(range);\n }\n return range;\n }, [range, selector, ...deps]);\n}\n","import { getManifestSequence } from '../future-helpers/sequences';\nimport { useManifest } from '../hooks/useManifest';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useRange } from '../hooks/useRange';\nimport { useVault } from '../hooks/useVault';\n\nexport function useCanvasSequence({ startCanvas, disablePaging }: { startCanvas?: string; disablePaging?: boolean }) {\n const vault = useVault();\n const manifest = useManifest();\n const range = useRange();\n const [cursor, setCursor] = useState<number>(undefined as any);\n const rangeOrManifest = range ? range : manifest;\n\n if (!rangeOrManifest) {\n throw new Error('Nothing selected');\n }\n\n const [items, initialSequence] = useMemo(\n () => getManifestSequence(vault, rangeOrManifest, { disablePaging }),\n [vault, rangeOrManifest, disablePaging]\n );\n\n const setCanvasIndex = useCallback(\n (index: number) => {\n const foundSequence = initialSequence.findIndex((i) => i.includes(index));\n setCursor(foundSequence === -1 ? 0 : foundSequence);\n },\n [items, initialSequence]\n );\n\n const setCanvasId = useCallback(\n (id: string) => {\n const foundIndex = items.findIndex((i) => i.id === id);\n if (foundIndex !== -1) {\n setCanvasIndex(foundIndex);\n } else {\n setCursor(0);\n }\n },\n [items, initialSequence]\n );\n\n const next = useCallback(() => {\n setCursor((i) => {\n if (i >= initialSequence.length - 1) {\n return i;\n }\n return i + 1;\n });\n }, [initialSequence]);\n\n const previous = useCallback(() => {\n setCursor((i) => {\n if (i <= 0) {\n return 0;\n }\n return i - 1;\n });\n }, [initialSequence]);\n\n // Need to set an initial cursor from the canvasId (if it's valid)\n if (typeof cursor === 'undefined') {\n if (startCanvas) {\n setCanvasId(startCanvas);\n } else {\n setCursor(0);\n }\n }\n\n return {\n visibleItems: initialSequence[cursor]?.map((idx) => items[idx].id) || [],\n cursor,\n items,\n sequence: initialSequence,\n hasPrevious: cursor > 0,\n hasNext: cursor < initialSequence.length - 1,\n setSequenceIndex: setCursor,\n setCanvasIndex,\n setCanvasId,\n next,\n previous,\n };\n}\n","import React, { ReactNode, useCallback, useContext, useEffect } from 'react';\n/**\n * Simple viewer context\n * *****************************************************************************\n *\n * This will be the context to use to get a basic IIIF viewer up and running.\n * It will not focus on having compatibility with the full range of IIIF\n * resources, instead offering a viewer for a Manifest, cycling through canvases\n * while ignoring the paged/facing-pages/continuous behaviors.\n *\n * There will not be support for canvas-on-canvas annotations. Annotations will\n * be filtered, giving details of the canvas space and images to be annotated\n * onto that space. The demo implementation of this viewer will use\n * OpenSeadragon to display.\n *\n * Navigation functions will include the basics:\n * - nextCanvas()\n * - previousCanvas()\n * - goToCanvas(id)\n * - goToCanvasIndex(idx)\n * - goToFirstCanvas()\n * - goToLastCanvas()\n *\n * It will take in only a Manifest ID and will load that Manifest when the\n * context loads.\n *\n * There will be no support for external or embedded annotation lists, although\n * you can set up a nested context to support this.\n *\n * There will be no support for ranges in this view.\n *\n * To use this component, first you will need the provider:\n * import { SimpleViewerProvider } from '...';\n *\n * <SimpleViewerProvider id=\"http://example.org/manifest.json\">\n * <CustomComponent />\n * </SimpleViewerProvider>\n *\n * This is in addition to the core Vault context further up the tree.\n *\n * In components that you want to use parts of the state you can grab the hooks\n * from this file.\n *\n * import { useSimpleViewer } from '...';\n *\n * And use them in your components to get the actions.\n *\n * function NextButton() {\n * const { nextCanvas } = useSimpleViewer();\n *\n * return <button onClick={nextCanvas}>Next</button>;\n * }\n *\n * Since this is a single-context, there is only ever one manifest, canvas and\n * annotation list. You can access the current resource using the normal hooks.\n *\n * function CanvasMetadata() {\n * const metadata = useCanvas(metadataSelector);\n *\n * return <div> ... </div>\n * }\n *\n * So long as this is inside the provider, it will have the correct context.\n */\nimport { createContext, FC, useMemo, useState } from 'react';\nimport { useExternalManifest } from '../hooks/useExternalManifest';\nimport { ManifestContext } from '../context/ManifestContext';\nimport { CanvasContext } from '../context/CanvasContext';\nimport { VisibleCanvasReactContext } from '../context/VisibleCanvasContext';\nimport { useManifest } from '../hooks/useManifest';\nimport { SimpleViewerContext, SimpleViewerProps } from './SimpleViewerContext.types';\nimport { RangeContext } from '../context/RangeContext';\nimport { useCanvasSequence } from './SimpleViewerContext.hooks';\nimport { VaultProvider } from '../context/VaultContext';\nimport { useExistingVault } from '../hooks/useExistingVault';\n\nconst noop = () => {\n //\n};\n\nexport const SimpleViewerReactContext = createContext<SimpleViewerContext>({\n setCurrentCanvasId: noop,\n setCurrentCanvasIndex: noop,\n nextCanvas: noop,\n previousCanvas: noop,\n items: [],\n sequence: [],\n setSequenceIndex: noop,\n currentSequenceIndex: 0,\n hasNext: false,\n hasPrevious: false,\n});\n\nexport function InnerViewerProvider(props: SimpleViewerProps) {\n const manifest = useManifest();\n const {\n cursor,\n visibleItems,\n next,\n sequence,\n items,\n setCanvasIndex,\n setCanvasId,\n previous,\n setSequenceIndex,\n hasNext,\n hasPrevious,\n } = useCanvasSequence({\n startCanvas: props.startCanvas,\n disablePaging: props.pagingEnabled === false,\n });\n\n const ctx = useMemo(\n () =>\n ({\n sequence,\n items,\n // Extra functions.\n setCurrentCanvasId: setCanvasId,\n nextCanvas: next,\n previousCanvas: previous,\n totalCanvases: items.length,\n setCurrentCanvasIndex: setCanvasIndex,\n setSequenceIndex: setSequenceIndex,\n currentSequenceIndex: cursor,\n hasNext,\n hasPrevious,\n } as SimpleViewerContext),\n [sequence, items, setCanvasId, next, previous, items, setCanvasIndex, setSequenceIndex, cursor]\n );\n\n if (!manifest) {\n console.warn('The manifest passed to the provider is not a valid IIIF manifest.');\n return <div>Sorry, something went wrong.</div>;\n }\n\n if (visibleItems.length === 0) {\n return null;\n }\n\n return (\n <SimpleViewerReactContext.Provider value={ctx}>\n <VisibleCanvasReactContext.Provider value={visibleItems}>\n <CanvasContext canvas={visibleItems[0]}>{props.children}</CanvasContext>\n </VisibleCanvasReactContext.Provider>\n </SimpleViewerReactContext.Provider>\n );\n}\n\nexport function SimpleViewerProvider(props: SimpleViewerProps) {\n const vault = useExistingVault(props.vault);\n const manifest = useExternalManifest(props.manifest);\n\n if (!manifest) {\n console.warn('The manifest passed to the provider is not a valid IIIF manifest.');\n return <div>Sorry, something went wrong.</div>;\n }\n\n if (manifest.error) {\n return <div>{manifest.error.toString()}</div>;\n }\n\n if (!manifest.isLoaded) {\n return <div>Loading...</div>;\n }\n\n const inner = <InnerViewerProvider {...props}>{props.children}</InnerViewerProvider>;\n\n return (\n <VaultProvider vault={vault}>\n <ManifestContext manifest={manifest.id}>\n {props.rangeId ? <RangeContext range={props.rangeId}>{inner}</RangeContext> : inner}\n </ManifestContext>\n </VaultProvider>\n );\n}\n\nexport function useSimpleViewer() {\n return useContext(SimpleViewerReactContext);\n}\n","import React, { ReactNode, useContext } from 'react';\nimport { ResourceReactContext } from './ResourceContext';\nimport { ReactVaultContext, VaultProvider } from './VaultContext';\nimport { SimpleViewerReactContext } from '../viewers/SimpleViewerContext';\nimport { VisibleCanvasReactContext } from './VisibleCanvasContext';\n\nexport function useContextBridge() {\n return {\n VaultContext: useContext(ReactVaultContext),\n ResourceContext: useContext(ResourceReactContext),\n SimpleViewerReactContext: useContext(SimpleViewerReactContext),\n VisibleCanvasReactContext: useContext(VisibleCanvasReactContext),\n };\n}\n\nexport function ContextBridge(props: { bridge: ReturnType<typeof useContextBridge>; children: ReactNode }) {\n return (\n <VaultProvider vault={props.bridge.VaultContext.vault || undefined} resources={props.bridge.ResourceContext}>\n <VisibleCanvasReactContext.Provider value={props.bridge.VisibleCanvasReactContext}>\n <SimpleViewerReactContext.Provider value={props.bridge.SimpleViewerReactContext}>\n {props.children}\n </SimpleViewerReactContext.Provider>\n </VisibleCanvasReactContext.Provider>\n </VaultProvider>\n );\n}\n","const E = function(t) {\n return function() {\n const n = { type: t, getType: () => t, toString: () => t };\n return (i, R) => ({\n ...n,\n ...i !== void 0 && { payload: i },\n ...R !== void 0 && { meta: R }\n });\n };\n}, o = \"@iiif/IMPORT_ENTITIES\", c = \"@iiif/MODIFY_ENTITY_FIELD\", s = \"@iiif/REORDER_ENTITY_FIELD\", A = \"@iiif/ADD_REFERENCE\", T = \"@iiif/UPDATE_REFERENCE\", e = \"@iiif/REMOVE_REFERENCE\", _ = \"@iiif/ADD_METADATA\", M = \"@iiif/REMOVE_METADATA\", D = \"@iiif/UPDATE_METADATA\", O = \"@iiif/REORDER_METADATA\", S = E(o)(), a = E(c)(), r = E(s)(), I = E(A)(), U = E(e)(), f = E(T)(), C = E(_)(), N = E(D)(), d = E(M)(), u = E(O)(), J = {\n importEntities: S,\n modifyEntityField: a,\n reorderEntityField: r,\n addReference: I,\n removeReference: U,\n updateReference: f,\n addMetadata: C,\n removeMetadata: d,\n updateMetadata: N,\n reorderMetadata: u\n}, F = \"@iiif/ADD_MAPPING\", P = \"@iiif/ADD_MAPPINGS\", L = E(F)(), V = E(P)(), K = { addMapping: L, addMappings: V }, p = \"@iiif/SET_META_VALUE\", Q = \"@iiif/SET_META_VALUE_DYNAMIC\", Y = \"@iiif/UNSET_META_VALUE\", m = E(p)(), l = E(Q)(), q = E(Y)(), W = {\n setMetaValue: m,\n setMetaValueDynamic: l,\n unsetMetaValue: q\n}, X = \"RESOURCE_ERROR\", Z = \"RESOURCE_LOADING\", $ = \"RESOURCE_READY\", G = \"@iiif/REQUEST_RESOURCE\", H = \"@iiif/REQUEST_ERROR\", g = \"@iiif/REQUEST_MISMATCH\", v = \"@iiif/REQUEST_COMPLETE\", B = \"@iiif/REQUEST_OFFLINE_RESOURCE\", b = E(G)(), h = E(H)(), y = E(g)(), x = E(v)(), j = E(B)(), EE = {\n requestResource: b,\n requestError: h,\n requestMismatch: y,\n requestComplete: x,\n requestOfflineResource: j\n}, k = \"@iiif/BATCH\", w = \"@iiif/BATCH_IMPORT\", tE = E(k)(), iE = E(w)();\nexport {\n F as ADD_MAPPING,\n P as ADD_MAPPINGS,\n _ as ADD_METADATA,\n A as ADD_REFERENCE,\n k as BATCH_ACTIONS,\n w as BATCH_IMPORT,\n o as IMPORT_ENTITIES,\n c as MODIFY_ENTITY_FIELD,\n M as REMOVE_METADATA,\n e as REMOVE_REFERENCE,\n s as REORDER_ENTITY_FIELD,\n O as REORDER_METADATA,\n v as REQUEST_COMPLETE,\n H as REQUEST_ERROR,\n g as REQUEST_MISMATCH,\n B as REQUEST_OFFLINE_RESOURCE,\n G as REQUEST_RESOURCE,\n X as RESOURCE_ERROR,\n Z as RESOURCE_LOADING,\n $ as RESOURCE_READY,\n p as SET_META_VALUE,\n Q as SET_META_VALUE_DYNAMIC,\n Y as UNSET_META_VALUE,\n D as UPDATE_METADATA,\n T as UPDATE_REFERENCE,\n L as addMapping,\n V as addMappings,\n C as addMetadata,\n I as addReference,\n tE as batchActions,\n iE as batchImport,\n J as entityActions,\n S as importEntities,\n K as mappingActions,\n W as metaActions,\n a as modifyEntityField,\n d as removeMetadata,\n U as removeReference,\n r as reorderEntityField,\n u as reorderMetadata,\n EE as requestActions,\n x as requestComplete,\n h as requestError,\n y as requestMismatch,\n j as requestOfflineResource,\n b as requestResource,\n N as updateMetadata,\n f as updateReference\n};\n//# sourceMappingURL=vault-actions.mjs.map\n","import { useVault } from './useVault';\nimport { useMemo } from 'react';\nimport { VaultZustandStore } from '@iiif/helpers/vault/store';\n\nexport function useDispatch(): VaultZustandStore['dispatch'] {\n const vault = useVault();\n const store = vault.getStore();\n\n return useMemo(() => {\n return (action: any) => store.dispatch(action);\n }, [store]);\n}\n","import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';\nimport { Annotation } from '@iiif/presentation-3';\nimport { AnnotationNormalized, AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useVault } from './useVault';\nimport { useVaultSelector } from './useVaultSelector';\nimport { entityActions } from '@iiif/helpers/vault/actions';\nimport { useDispatch } from './useDispatch';\nimport { Vault } from '@iiif/helpers/vault';\n\nexport interface VaultActivatedAnnotation {\n __vault?: Vault;\n bindToVault(vault: Vault): void;\n source: string | { id: string };\n}\n\nfunction isVaultActivated(obj: any): obj is VaultActivatedAnnotation {\n return typeof obj !== 'string' && obj && obj.bindToVault;\n}\n\nexport function useVirtualAnnotationPage() {\n const vault = useVault();\n const sources = useRef<Record<any, any>>([]);\n const dispatch = useDispatch();\n const virtualId = useMemo(() => {\n return `vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random() * 1000000000).toString(16)}`;\n }, []);\n\n useLayoutEffect(() => {\n const page: AnnotationPageNormalized = {\n id: virtualId,\n type: 'AnnotationPage',\n behavior: [],\n label: null,\n thumbnail: [],\n summary: null,\n requiredStatement: null,\n metadata: [],\n rights: null,\n provider: [],\n items: [],\n seeAlso: [],\n homepage: [],\n rendering: [],\n service: [],\n };\n\n dispatch(\n entityActions.importEntities({\n entities: {\n AnnotationPage: {\n [page.id]: page,\n },\n },\n })\n );\n }, [virtualId]);\n\n const fullPage: AnnotationPageNormalized | null = useVaultSelector(\n (state) => (virtualId ? state.iiif.entities.AnnotationPage[virtualId] : null),\n [virtualId]\n );\n\n const addAnnotation = useCallback(\n (id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized, atIndex?: number) => {\n if (virtualId) {\n if (isVaultActivated(id)) {\n const display = id;\n if (!display.__vault) {\n // First bind to vault.\n display.bindToVault(vault);\n }\n id = typeof display.source === 'string' ? display.source : display.source.id;\n sources.current[id] = display;\n } else if (typeof id !== 'string') {\n id = id.id;\n }\n\n const full: AnnotationPageNormalized = vault.get({ id: virtualId, type: 'AnnotationPage' });\n const annotation: AnnotationNormalized = vault.get({ id, type: 'Annotation' });\n if (full && annotation) {\n if (!full.items.find((r: any) => r.id === annotation.id)) {\n dispatch(\n entityActions.addReference({\n id: virtualId,\n type: 'AnnotationPage',\n key: 'items',\n reference: {\n id,\n type: 'Annotation',\n },\n index: atIndex,\n })\n );\n }\n }\n }\n },\n [virtualId]\n );\n const removeAnnotation = useCallback(\n (id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized) => {\n if (virtualId) {\n if (isVaultActivated(id)) {\n id = typeof id.source === 'string' ? id.source : id.source.id;\n } else if (typeof id !== 'string') {\n id = id.id;\n }\n\n if (sources.current[id]) {\n sources.current[id].beforeRemove();\n }\n\n const full: AnnotationPageNormalized = vault.get({ id: virtualId, type: 'AnnotationPage' });\n if (full) {\n dispatch(\n entityActions.removeReference({\n id: virtualId,\n type: 'AnnotationPage',\n key: 'items',\n reference: {\n id,\n type: 'Annotation',\n },\n })\n );\n }\n }\n },\n [virtualId]\n );\n\n return [\n fullPage,\n {\n addAnnotation,\n removeAnnotation,\n },\n ] as const;\n}\n","import { Annotation } from '@iiif/presentation-3';\nimport { AnnotationNormalized, AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport React, { createContext, useContext, useMemo } from 'react';\nimport { useVirtualAnnotationPage, VaultActivatedAnnotation } from './useVirtualAnnotationPage';\n\nconst VirtualAnnotationPageContext = createContext<{\n fullPage: AnnotationPageNormalized | null;\n addAnnotation: (\n id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized,\n atIndex?: number | undefined\n ) => void;\n removeAnnotation: (id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized) => void;\n} | null>(null);\n\nexport function useVirtualAnnotationPageContext() {\n const ctx = useContext(VirtualAnnotationPageContext);\n\n return [\n ctx!.fullPage,\n {\n addAnnotation: ctx!.addAnnotation,\n removeAnnotation: ctx!.removeAnnotation,\n },\n ] as const;\n}\n\nexport function VirtualAnnotationProvider({ children }: { children: any }) {\n const [fullPage, { addAnnotation, removeAnnotation }] = useVirtualAnnotationPage();\n\n return (\n <VirtualAnnotationPageContext.Provider\n value={useMemo(() => ({ fullPage, addAnnotation, removeAnnotation }), [fullPage])}\n >\n {children}\n </VirtualAnnotationPageContext.Provider>\n );\n}\n","import React from 'react';\nimport { FallbackProps } from 'react-error-boundary';\n\nexport function DefaultCanvasFallback({\n width,\n style,\n height,\n error,\n resetErrorBoundary,\n}: { width?: number; height?: number; style?: any } & FallbackProps) {\n return (\n <div style={{ width, height, minHeight: 500, ...(style || {}), background: '#f9f9f9' }}>\n <h3>Error occurred</h3>\n <p>{error.message}</p>\n <button onClick={resetErrorBoundary}>Reset</button>\n </div>\n );\n}\n","import { createContext, useContext } from 'react';\nimport { Preset } from '@atlas-viewer/atlas';\n\nexport const ViewerPresetContext = createContext<Preset | null | undefined>(null);\n\nexport function useViewerPreset() {\n return useContext(ViewerPresetContext);\n}\n","import { createContext, useContext, useEffect } from 'react';\n\nexport const SetOverlaysReactContext = createContext<(key: string, element: any | null, props?: any) => void>(\n () => void 0\n);\nexport const SetPortalReactContext = createContext<(key: string, element: any | null, props?: any) => void>(\n () => void 0\n);\n\nexport function useOverlay(\n type: 'portal' | 'overlay' | 'none',\n key: string,\n element: any,\n props: any,\n deps: any[] = []\n) {\n const setOverlay = useContext(type === 'portal' ? SetPortalReactContext : SetOverlaysReactContext);\n\n useEffect(() => {\n if (type !== 'none') {\n setOverlay(key, element, props);\n }\n return () => {\n setOverlay(key, null);\n };\n }, [key, type, setOverlay, ...deps]);\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useCanvas(options?: { id: string }): CanvasNormalized | undefined;\nexport function useCanvas<T>(\n options?: { id: string; selector: (canvas: CanvasNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useCanvas<T = CanvasNormalized>(\n options: {\n id?: string;\n selector?: (canvas: CanvasNormalized) => T;\n } = {},\n deps: any[] = []\n): CanvasNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const canvasId = id ? id : ctx.canvas;\n\n const canvas = useVaultSelector((s) => (canvasId ? s.iiif.entities.Canvas[canvasId] : undefined), [canvasId]);\n\n return useMemo(() => {\n if (!canvas) {\n return undefined;\n }\n if (selector) {\n return selector(canvas);\n }\n return canvas;\n }, [canvas, selector, ...deps]);\n}\n","import { createContext, useContext, useEffect } from 'react';\nimport { useCanvas } from '../../hooks/useCanvas';\n\nexport const WorldSizeContext = createContext<(canvasId: string, size: number) => void>(() => void 0);\n\nexport function useWorldSize(size: number) {\n const canvas = useCanvas();\n const fn = useContext(WorldSizeContext);\n\n useEffect(() => {\n if (canvas && canvas.id) {\n fn(canvas.id, size);\n\n return () => fn(canvas.id, -1);\n }\n\n return () => void 0;\n }, [canvas, size]);\n}\n","import React, { ReactNode, useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { AtlasAuto, Preset, AtlasProps, ModeContext } from '@atlas-viewer/atlas';\nimport { ErrorBoundary } from 'react-error-boundary';\nimport { ContextBridge, useContextBridge } from '../context/ContextBridge';\nimport { VirtualAnnotationProvider } from '../hooks/useVirtualAnnotationPageContext';\nimport { DefaultCanvasFallback } from './render/DefaultCanvasFallback';\nimport { ViewerPresetContext } from '../context/ViewerPresetContext';\nimport { SetOverlaysReactContext, SetPortalReactContext } from './context/overlays';\nimport { WorldSizeContext } from './context/world-size';\nimport { useCanvas } from '../hooks/useCanvas';\n\nexport function Viewer({\n children,\n errorFallback,\n outerContainerProps = {},\n worldScale: _worldScale,\n ...props\n}: AtlasProps & {\n height?: number | string;\n width?: number | string;\n resizeHash?: number;\n containerProps?: any;\n outerContainerProps?: any;\n aspectRatio?: number;\n errorFallback?: any;\n worldScale?: number;\n} & { children: ReactNode }) {\n const [viewerPreset, setViewerPreset] = useState<Preset | null>();\n const bridge = useContextBridge();\n const ErrorFallback: any = errorFallback || DefaultCanvasFallback;\n const [overlays, setOverlays] = useState<Record<string, any>>({});\n const overlayComponents = Object.entries(overlays);\n const [portals, setPortals] = useState<Record<string, any>>({});\n const portalComponents = Object.entries(portals);\n const [worldSizes, setWorldSizes] = useState<Record<string, number>>({});\n const worldScale = useMemo(() => {\n return _worldScale || Math.max(...Object.values(worldSizes));\n }, [worldSizes]);\n const runtimeOptions = useMemo(() => {\n return { maxOverZoom: worldScale || 1, ...(props.runtimeOptions || {}) };\n }, [worldScale, props.runtimeOptions]);\n\n const updateWorldSize = useCallback((canvasId: string, size: number) => {\n setWorldSizes((sizes) => {\n if (size === -1) {\n const { [canvasId]: _, ...rest } = sizes;\n return rest;\n }\n return { ...sizes, [canvasId]: size };\n });\n }, []);\n\n const updateOverlay = useCallback((key: string, element: ReactNode, props: any) => {\n setOverlays(({ [key]: _, ...prev }) => {\n if (!element) {\n return prev;\n }\n\n return {\n ...prev,\n [key]: { element, props },\n };\n });\n }, []);\n\n const updatePortal = useCallback((key: string, element: ReactNode, props: any) => {\n setPortals(({ [key]: _, ...prev }) => {\n if (!element) {\n return prev;\n }\n\n return {\n ...prev,\n [key]: { element, props },\n };\n });\n }, []);\n\n return (\n <ErrorBoundary resetKeys={[]} fallbackRender={(fallbackProps) => <ErrorFallback {...props} {...fallbackProps} />}>\n <AtlasAuto\n {...props}\n containerProps={{ style: { position: 'relative' }, ...(props.containerProps || {}) }}\n htmlChildren={\n <>\n {overlayComponents.map(([key, { element: Element, props }]) => (\n <React.Fragment key={key}>\n <Element {...(props || {})} />\n </React.Fragment>\n ))}\n </>\n }\n onCreated={(preset: any) => {\n setViewerPreset(preset);\n if (props.onCreated) {\n props.onCreated(preset);\n }\n }}\n runtimeOptions={runtimeOptions}\n >\n <ViewerPresetContext.Provider value={viewerPreset}>\n <WorldSizeContext.Provider value={updateWorldSize}>\n <SetOverlaysReactContext.Provider value={updateOverlay}>\n <SetPortalReactContext.Provider value={updatePortal}>\n <ContextBridge bridge={bridge}>\n <ModeContext.Provider value={props.mode || 'explore'}>\n <VirtualAnnotationProvider>{children}</VirtualAnnotationProvider>\n </ModeContext.Provider>\n </ContextBridge>\n </SetPortalReactContext.Provider>\n </SetOverlaysReactContext.Provider>\n </WorldSizeContext.Provider>\n </ViewerPresetContext.Provider>\n </AtlasAuto>\n <div>\n {portalComponents.map(([key, { element: Element, props }]) => (\n <React.Fragment key={key}>\n <Element {...(props || {})} />\n </React.Fragment>\n ))}\n </div>\n </ErrorBoundary>\n );\n}\n","const a = {}, i = {\n get(n) {\n return n;\n },\n setMetaValue([n, e, r], t) {\n const o = i.getResourceMeta(n, e), c = o ? o[r] : void 0, s = typeof t == \"function\" ? t(c) : t;\n a[n] = {\n ...a[n] || {},\n [e]: {\n ...(a[n] || {})[e] || {},\n [r]: s\n }\n };\n },\n getResourceMeta: (n, e) => {\n const r = a[n];\n if (r)\n return e ? r[e] : r;\n }\n};\nfunction M(n = i) {\n return {\n addEventListener(e, r, t, o) {\n if (e)\n return n.setMetaValue(\n [e.id, \"eventManager\", r],\n (c) => {\n const s = c || [];\n for (const f of s)\n if (f.callback === t)\n return s;\n return [...s, { callback: t, scope: o }];\n }\n ), t;\n },\n removeEventListener(e, r, t) {\n e && n.setMetaValue(\n [e.id, \"eventManager\", r],\n (o) => (o || []).filter((c) => c.callback !== t)\n );\n },\n getListenersAsProps(e, r) {\n const t = typeof e == \"string\" ? { id: e } : e;\n if (!t || !t.id)\n return {};\n const o = n.getResourceMeta(t.id, \"eventManager\"), c = {};\n if (o && t)\n for (const s of Object.keys(o))\n c[s] = (f) => {\n const l = n.get(t);\n for (const { callback: g, scope: u } of o[s] || [])\n (!u || r && u.indexOf(r) !== -1) && g(f, l);\n };\n return c;\n }\n };\n}\nexport {\n M as createEventsHelper\n};\n//# sourceMappingURL=events.mjs.map\n","import { useVault } from './useVault';\nimport { useVaultSelector } from './useVaultSelector';\nimport { useMemo } from 'react';\nimport { NormalizedEntity } from '@iiif/helpers/vault';\nimport { Reference } from '@iiif/presentation-3';\nimport { createEventsHelper } from '@iiif/helpers/events';\n\nexport function useResourceEvents<T extends NormalizedEntity>(resource?: Reference, scope?: string[]) {\n const vault = useVault();\n const helper = useMemo(() => createEventsHelper(vault), [vault]);\n\n const hooks = useVaultSelector(() => {\n if (resource && resource.id) {\n return vault.getResourceMeta(resource.id, 'eventManager');\n }\n return null;\n }, [resource]);\n\n return useMemo(() => {\n return resource ? helper.getListenersAsProps(resource, scope) : {};\n }, [hooks, resource, vault, scope]);\n}\n","import { useVault } from './useVault';\nimport { useMemo } from 'react';\nimport { Reference } from '@iiif/presentation-3';\nimport { createStylesHelper } from '@iiif/helpers/styles';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useStyles<Style extends Record<string, Record<string, any>>>(\n resource: undefined | Reference<any>\n): Style;\nexport function useStyles<Style extends Record<string, any>>(\n resource: undefined | Reference<any>,\n scope: string\n): Style;\nexport function useStyles<Style>(resource?: Reference, scope?: string): Style {\n const vault = useVault();\n const helper = useMemo(() => createStylesHelper(vault), [vault]);\n\n return useVaultSelector(() => {\n if (!resource) {\n return null;\n }\n\n const styles = helper.getAppliedStyles(resource.id);\n return styles ? (scope ? styles[scope] : styles) : undefined;\n }, [resource, scope]) as Style;\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { AnnotationNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\nimport { expandTarget } from '@iiif/helpers/annotation-targets';\nimport { useVault } from './useVault';\n\nexport function useAnnotation(options?: { id: string }): AnnotationNormalized | undefined;\nexport function useAnnotation<T>(\n options?: { id: string; selector: (annotation: AnnotationNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useAnnotation<T = AnnotationNormalized>(\n options: {\n id?: string;\n selector?: (annotation: AnnotationNormalized) => T;\n } = {},\n deps: any[] = []\n): AnnotationNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const vault = useVault();\n const annotationId = id ? id : ctx.annotation;\n\n const annotation = useVaultSelector(\n (s) => (annotationId ? s.iiif.entities.Annotation[annotationId] : undefined),\n [annotationId]\n );\n\n const body = useVaultSelector(\n (s) =>\n annotation && annotation.body\n ? annotation.body\n .map((singleBody) => {\n if (!singleBody) {\n return null;\n }\n\n if ((singleBody as any).type === 'SpecificResource') {\n return {\n ...singleBody,\n source: vault.get(singleBody),\n };\n }\n\n return singleBody ? s.iiif.entities[singleBody.type][singleBody.id] : null;\n })\n .filter(Boolean)\n : [],\n [annotation]\n );\n\n return useMemo(() => {\n if (!annotation) {\n return undefined;\n }\n\n const newAnnotation: any = {\n ...annotation,\n body,\n target: expandTarget(annotation.target as any, { typeMap: vault.getState().iiif.mapping }),\n };\n\n if (selector) {\n return selector(newAnnotation);\n }\n return newAnnotation;\n }, [annotation, selector, body, ...deps]);\n}\n","import { BoxStyle, HTMLPortal, mergeStyles, RegionHighlight } from '@atlas-viewer/atlas';\nimport { useResourceEvents } from '../../hooks/useResourceEvents';\nimport { useStyles } from '../../hooks/useStyles';\nimport React, { FC, useMemo } from 'react';\nimport { useAnnotation } from '../../hooks/useAnnotation';\nimport { useCanvas } from '../../hooks/useCanvas';\n\nexport const RenderAnnotation: FC<{ id: string; className?: string; style?: BoxStyle; interactive?: boolean }> = ({\n id,\n style: defaultStyle,\n className,\n interactive,\n}) => {\n const annotation = useAnnotation({ id });\n const style = useStyles<BoxStyle>(annotation, 'atlas');\n const html = useStyles<{ className?: string; href?: string; title?: string; target?: string }>(annotation, 'html');\n const events = useResourceEvents(annotation as any, ['atlas']);\n const canvas = useCanvas();\n\n const allStyles = useMemo(() => {\n return mergeStyles(defaultStyle, style);\n }, [defaultStyle, style]);\n\n const isValid =\n canvas &&\n annotation &&\n annotation.target &&\n (annotation.target as any).selector &&\n (annotation.target as any).selector.type === 'BoxSelector' &&\n (annotation.target as any).source &&\n ((annotation.target as any).source.id === canvas.id || (annotation.target as any).source === canvas.id);\n\n if (!isValid) {\n return null;\n }\n\n return (\n <RegionHighlight\n id={annotation.id}\n isEditing={true}\n region={(annotation.target as any).selector.spatial}\n style={allStyles}\n className={html?.className || className}\n interactive={!!(html?.href || interactive)}\n href={html?.href || null}\n title={html?.title || null}\n hrefTarget={html?.target || null}\n onClick={() => void 0}\n {...events}\n />\n );\n};\n","import { useResourceContext } from '../context/ResourceContext';\nimport { AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useAnnotationPage(options?: { id: string }): AnnotationPageNormalized | undefined;\nexport function useAnnotationPage<T>(\n options?: { id: string; selector: (annotation: AnnotationPageNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useAnnotationPage<T = AnnotationPageNormalized>(\n options: {\n id?: string;\n selector?: (annotation: AnnotationPageNormalized) => T;\n } = {},\n deps: any[] = []\n): AnnotationPageNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const annotationPageId = id ? id : ctx.annotationPage;\n\n const annotationPage = useVaultSelector(\n (s) => (annotationPageId ? s.iiif.entities.AnnotationPage[annotationPageId] : undefined),\n [annotationPageId]\n );\n\n return useMemo(() => {\n if (!annotationPage) {\n return undefined;\n }\n\n if (selector) {\n return selector(annotationPage);\n }\n return annotationPage;\n }, [annotationPage, ...deps]);\n}\n","import { AnnotationPage } from '@iiif/presentation-3';\nimport { AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { RenderAnnotation } from './Annotation';\nimport { BoxStyle } from '@atlas-viewer/atlas';\nimport { useStyles } from '../../hooks/useStyles';\nimport { useVaultSelector } from '../../hooks/useVaultSelector';\nimport React, { FC, Fragment } from 'react';\nimport { useAnnotationPage } from '../../hooks/useAnnotationPage';\n\nexport const RenderAnnotationPage: FC<{ page: AnnotationPage | AnnotationPageNormalized; className?: string }> = ({\n className,\n page: _page,\n}) => {\n const page = useAnnotationPage({ id: _page.id }) || _page;\n const style = useStyles<BoxStyle>(page, 'atlas');\n const html = useStyles<{ className?: string }>(page, 'html');\n\n useVaultSelector((state) => (page.id ? state.iiif.entities.AnnotationPage[page.id] : null), []);\n\n return (\n <Fragment>\n {page.items?.map((annotation) => {\n return (\n <RenderAnnotation\n key={annotation.id}\n id={annotation.id}\n style={style}\n className={html?.className || className}\n />\n );\n })}\n </Fragment>\n );\n};\n","import { ImageCandidate } from '@atlas-viewer/iiif-image-api';\nimport React, { Fragment, ReactNode, useMemo } from 'react';\nimport { TileSet } from '@atlas-viewer/atlas';\nimport { ImageWithOptionalService } from '../../features/rendering-strategy/resource-types';\nimport { BoxSelector } from '@iiif/helpers';\n\nexport function RenderImage({\n id,\n image,\n thumbnail,\n isStatic,\n x = 0,\n y = 0,\n children,\n selector,\n onClick,\n enableSizes,\n}: {\n id: string;\n image: ImageWithOptionalService;\n thumbnail?: ImageCandidate;\n isStatic?: boolean;\n enableSizes?: boolean;\n selector?: BoxSelector;\n x?: number;\n y?: number;\n children?: ReactNode;\n onClick?: (e: any) => void;\n}) {\n const crop = useMemo(() => {\n // @todo crops only work if x is not zero due to bug in selector parsing\n // setting the spatial width to canvas - which isn't correct.\n if (!selector || (selector.spatial.x === 0 && selector.spatial.y === 0)) {\n return undefined;\n }\n return selector.spatial;\n }, [selector]);\n\n return (\n <world-object\n key={id + (image.service ? 'server' : 'no-service')}\n x={x + image.target.spatial.x}\n y={y + image.target.spatial.y}\n width={image.target.spatial.width}\n height={image.target.spatial.height}\n onClick={onClick}\n >\n {!image.service ? (\n <Fragment key=\"no-service\">\n <world-image\n onClick={onClick}\n uri={image.id}\n target={{ x: 0, y: 0, width: image.target.spatial.width, height: image.target.spatial.height }}\n display={\n image.width && image.height\n ? {\n width: image.width,\n height: image.height,\n }\n : undefined\n }\n crop={crop}\n />\n {children}\n </Fragment>\n ) : (\n <Fragment key=\"service\">\n <TileSet\n tiles={{\n id: image.service.id || image.service['@id'] || 'unknown',\n height: image.height as number,\n width: image.width as number,\n imageService: image.service as any,\n thumbnail: thumbnail && thumbnail.type === 'fixed' ? thumbnail : undefined,\n }}\n enableSizes={enableSizes}\n x={0}\n y={0}\n width={image.target?.spatial.width}\n height={image.target?.spatial.height}\n crop={crop}\n />\n {children}\n </Fragment>\n )}\n </world-object>\n );\n}\n","import { ContentResource, PointSelector, W3CAnnotationTarget } from '@iiif/presentation-3';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { UseRenderingStrategy } from '../../hooks/useRenderingStrategy';\nimport { BoxSelector, expandTarget, SupportedTarget, TemporalBoxSelector } from '@iiif/helpers';\n\n/**\n * Parse specific resource.\n *\n * This could be expanded to support pulling out more from the specific resource.\n *\n * @param resource\n */\nexport function parseSpecificResource(resource: ContentResource) {\n if (resource.type === 'SpecificResource') {\n return [resource.source, { selector: resource.selector }];\n }\n\n return [resource, { selector: null }];\n}\n\nexport function getParsedTargetSelector(\n canvas: CanvasNormalized,\n target: W3CAnnotationTarget | W3CAnnotationTarget[]\n): [TemporalBoxSelector | BoxSelector | PointSelector | null, SupportedTarget['source']] {\n const { selector: imageTarget, source } = expandTarget(target);\n\n if (source.id !== canvas.id) {\n // Skip invalid targets.\n return [null, source];\n }\n\n // Target is where it should be painted.\n const defaultTarget: BoxSelector = {\n type: 'BoxSelector',\n spatial: {\n x: 0,\n y: 0,\n width: Number(canvas.width),\n height: Number(canvas.height),\n },\n };\n\n return [\n imageTarget\n ? imageTarget.type === 'TemporalSelector'\n ? ({\n type: 'TemporalBoxSelector',\n temporal: imageTarget.temporal,\n spatial: defaultTarget.spatial,\n } as any)\n : imageTarget\n : null,\n source,\n ];\n}\n\nexport const emptyActions = {\n makeChoice: () => {\n // no-op\n },\n};\n\nexport const unknownResponse: UseRenderingStrategy[0] = { type: 'unknown' };\n\nexport const unsupportedStrategy = (reason: string): UseRenderingStrategy[0] => {\n return { type: 'unknown', reason, annotations: { pages: [] } };\n};\n\nexport const emptyStrategy = (width: number, height: number): UseRenderingStrategy[0] => {\n return { type: 'empty', width, height, annotations: { pages: [] }, image: null, images: [] };\n};\n","import { useVaultSelector } from './useVaultSelector';\nimport { IIIFStore } from '@iiif/helpers/vault';\n\nfunction getMeta(state: IIIFStore, resourceId: string) {\n const resourceMeta = state?.iiif?.meta[resourceId];\n if (!resourceMeta) {\n return null;\n }\n return resourceMeta.annotationPageManager as any;\n}\n\nexport function useEnabledAnnotationPageIds(resourceId?: string, availablePageIds?: string[]) {\n return useVaultSelector(\n (state) => {\n const pageIds: string[] = [];\n if (!resourceId) {\n return pageIds;\n }\n const allAnnotationListIds = Object.keys(state.iiif.entities.AnnotationPage);\n for (const annotationListId of allAnnotationListIds) {\n if (!availablePageIds || availablePageIds.indexOf(annotationListId) !== -1) {\n const annotationListMeta = getMeta(state, annotationListId);\n if (annotationListMeta && annotationListMeta.views && annotationListMeta.views[resourceId]) {\n pageIds.push(annotationListId);\n }\n }\n }\n\n return pageIds;\n },\n [resourceId, availablePageIds]\n );\n}\n","import { CanvasNormalized, ManifestNormalized } from '@iiif/presentation-3-normalized';\n\nexport function flattenAnnotationPageIds({\n canvas,\n manifest,\n all,\n canvases,\n}: {\n manifest?: ManifestNormalized;\n canvas?: CanvasNormalized;\n canvases?: CanvasNormalized[];\n all?: boolean;\n}) {\n const foundIds: string[] = [];\n\n if (manifest) {\n for (const page of manifest.annotations) {\n if (foundIds.indexOf(page.id) === -1) {\n foundIds.push(page.id);\n }\n }\n }\n\n if (all) {\n if (canvases && canvases.length) {\n for (const canvas_ of canvases) {\n for (const page of canvas_.annotations) {\n if (foundIds.indexOf(page.id) === -1) {\n foundIds.push(page.id);\n }\n }\n }\n }\n } else if (canvas) {\n for (const page of canvas.annotations) {\n if (foundIds.indexOf(page.id) === -1) {\n foundIds.push(page.id);\n }\n }\n }\n\n // Remove enabled page IDs for now.\n // for (const enabledPage of enabledPageIds) {\n // if (foundIds.indexOf(enabledPage) === -1) {\n // foundIds.push(enabledPage);\n // }\n // }\n\n return foundIds;\n}\n","import { useCallback, useMemo } from 'react';\nimport { useVault } from './useVault';\nimport { useManifest } from './useManifest';\nimport { useCanvas } from './useCanvas';\nimport { useVisibleCanvases } from '../context/VisibleCanvasContext';\nimport { useEnabledAnnotationPageIds } from './useEnabledAnnotationPageIds';\nimport { flattenAnnotationPageIds } from '../utility/flatten-annotation-page-ids';\nimport { IIIFStore } from '@iiif/helpers/vault';\n\ntype AnnotationPageResourceMap = {\n [id: string]: boolean;\n};\n\ntype AnnotationPageManager = {\n views: AnnotationPageResourceMap;\n};\n\nfunction getMeta(state: IIIFStore, resourceId: string) {\n const resourceMeta = state?.iiif?.meta[resourceId];\n if (!resourceMeta) {\n return null;\n }\n return resourceMeta.annotationPageManager as AnnotationPageManager;\n}\n\nexport function useAnnotationPageManager(resourceId?: string, options: { all?: boolean } = {}) {\n const vault = useVault();\n const manifest = useManifest();\n const canvas = useCanvas();\n const canvases = useVisibleCanvases();\n const availablePageIds = useMemo(() => {\n return flattenAnnotationPageIds({\n all: options.all,\n manifest,\n canvas,\n canvases,\n });\n }, [options.all, canvas, canvases, manifest]);\n const enabledPageIds = useEnabledAnnotationPageIds(resourceId, options.all ? undefined : availablePageIds);\n\n const setPageDisabled = useCallback(\n (deselectId: string) => {\n if (!resourceId) {\n return;\n }\n vault.setMetaValue<AnnotationPageResourceMap>(\n [deselectId, 'annotationPageManager', 'views'],\n (existingResources: AnnotationPageResourceMap | undefined) => {\n if (existingResources && !existingResources[resourceId]) {\n return existingResources;\n }\n\n return {\n ...(existingResources || {}),\n [resourceId]: false,\n };\n }\n );\n },\n [resourceId, vault]\n );\n\n const setPageEnabled = useCallback(\n (id: string, opt: { deselectOthers?: boolean } = {}) => {\n if (!resourceId) {\n return;\n }\n const state = vault.getState();\n const toDeselect = [];\n\n // Deselect these.\n if (opt?.deselectOthers) {\n const allAnnotationListIds = Object.keys(state.iiif.entities.AnnotationPage);\n for (const annotationPageId of allAnnotationListIds) {\n const annotationListMeta = getMeta(state, annotationPageId);\n if (annotationListMeta && annotationListMeta.views && annotationListMeta.views[resourceId]) {\n toDeselect.push(annotationPageId);\n }\n }\n }\n\n // Disable first.\n for (const deselectId of toDeselect) {\n setPageDisabled(deselectId);\n }\n\n // Then enable.\n vault.setMetaValue<AnnotationPageResourceMap>(\n [id, 'annotationPageManager', 'views'],\n (existingResources: AnnotationPageResourceMap | undefined) => {\n if (existingResources && existingResources[resourceId]) {\n return existingResources;\n }\n return {\n ...(existingResources || {}),\n [resourceId]: true,\n };\n }\n );\n },\n [resourceId, setPageDisabled, vault]\n );\n\n return {\n availablePageIds,\n enabledPageIds,\n setPageEnabled,\n setPageDisabled,\n };\n}\n","import { useVaultSelector } from './useVaultSelector';\n\nexport function useResources<Type>(ids: string[], type: string): Type[] {\n return useVaultSelector((state, vault) => vault.get(ids.map((id) => ({ id, type }))) as any, [ids, type]);\n}\n","import React, { useContext } from 'react';\nimport { ImageServiceLoader } from '@atlas-viewer/iiif-image-api';\n\nexport const ImageServiceLoaderContext = React.createContext<ImageServiceLoader>(new ImageServiceLoader());\n\nexport function useImageServiceLoader() {\n return useContext(ImageServiceLoaderContext);\n}\n","import { ImageService } from '@iiif/presentation-3';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useImageServiceLoader } from '../context/ImageServiceLoaderContext';\n\nexport type ImageServiceLoaderType = (\n imageService: any | undefined,\n { height, width }: { height: number; width: number }\n) => ImageService | undefined;\n\nexport function useLoadImageService() {\n const loader = useImageServiceLoader();\n const [imageServiceStatus, setImageServiceStatus] = useState<Record<string, string>>({});\n const didUnmount = useRef(false);\n useEffect(() => {\n return () => {\n didUnmount.current = true;\n };\n }, []);\n const loadImageService = useCallback<ImageServiceLoaderType>(\n (imageService, { height, width }) => {\n if (imageService) {\n const imageServiceId = imageService.id || (imageService['@id'] as string);\n // We want to kick this off.\n const syncLoaded = loader.loadServiceSync({\n id: imageServiceId,\n width: imageService.width || width,\n height: imageService.height || height,\n source: imageService,\n });\n\n if (syncLoaded) {\n imageService = syncLoaded;\n } else if (!imageServiceStatus[imageServiceId]) {\n if (!didUnmount.current) {\n setImageServiceStatus((r) => {\n return {\n ...r,\n [imageServiceId]: 'loading',\n };\n });\n }\n loader\n .loadService({\n id: imageServiceId,\n width: imageService.width || width,\n height: imageService.height || height,\n })\n .then(() => {\n if (!didUnmount.current) {\n setImageServiceStatus((r) => {\n return {\n ...r,\n [imageServiceId]: 'done',\n };\n });\n }\n });\n }\n }\n return imageService;\n },\n [loader, imageServiceStatus]\n );\n\n return [loadImageService, imageServiceStatus] as const;\n}\n","// This is valid under a canvas context.\nimport { AnnotationNormalized, AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useCanvas } from './useCanvas';\nimport { useVaultSelector } from './useVaultSelector';\nimport { useAnnotation } from './useAnnotation';\n\nexport function usePaintingAnnotations(\n options: { canvasId?: string; enableSingleAnnotation?: boolean } = {}\n): AnnotationNormalized[] {\n const annotation = useAnnotation();\n const canvas = useCanvas(options.canvasId ? { id: options.canvasId } : undefined);\n\n return useVaultSelector(\n (state, vault) => {\n if (!canvas) {\n return [];\n }\n if (annotation && options.enableSingleAnnotation) {\n return [annotation];\n }\n const annotationPages = vault.get(canvas.items);\n const flatAnnotations: AnnotationNormalized[] = [];\n for (const page of annotationPages) {\n flatAnnotations.push(...vault.get(page.items));\n }\n return flatAnnotations;\n },\n [canvas]\n );\n}\n","function x(t) {\n return t.type === \"SpecificResource\" ? [t.source, { selector: t.selector }] : [t, { selector: null }];\n}\nconst d = {}, b = {\n get(t) {\n return t;\n },\n setMetaValue([t, o, r], i) {\n const e = b.getResourceMeta(t, o), n = e ? e[r] : void 0, a = typeof i == \"function\" ? i(n) : i;\n d[t] = {\n ...d[t] || {},\n [o]: {\n ...(d[t] || {})[o] || {},\n [r]: a\n }\n };\n },\n getResourceMeta: (t, o) => {\n const r = d[t];\n if (r)\n return o ? r[o] : r;\n }\n};\nfunction M(t = b) {\n function o(e) {\n const n = e ? typeof e == \"string\" ? t.get(e) : e : null;\n if (!n)\n return [];\n const a = t.get(n.items, { parent: n }), c = [];\n for (const f of a)\n c.push(...t.get(f.items, { parent: f }));\n return c;\n }\n function r(e, n = []) {\n const a = Array.isArray(e) ? e : o(e), c = [];\n let f = null;\n const h = [];\n for (const s of a) {\n if (s.type !== \"Annotation\")\n throw new Error(\"getPaintables() accept either a canvas or list of annotations\");\n const A = Array.from(Array.isArray(s.body) ? s.body : [s.body]);\n for (const w of A) {\n const [m, { selector: P }] = x(w), u = t.get(m), p = (u.type || \"unknown\").toLowerCase();\n if (p === \"choice\") {\n const g = t.get(u.items, { parent: u.id }), y = n.length ? n.map((l) => g.find((V) => V.id === l)).filter(Boolean) : [g[0]];\n y.length === 0 && y.push(g[0]), f = {\n type: \"single-choice\",\n items: g.map((l) => ({\n id: l.id,\n label: l.label,\n selected: y.indexOf(l) !== -1\n })),\n label: m.label\n }, A.push(...y);\n continue;\n }\n c.indexOf(p) === -1 && c.push(p), h.push({\n type: p,\n annotationId: s.id,\n resource: u,\n target: s.target,\n selector: P\n });\n }\n }\n return {\n types: c,\n items: h,\n choice: f\n };\n }\n function i(e) {\n const { choice: n } = r(e);\n return n;\n }\n return {\n getAllPaintingAnnotations: o,\n getPaintables: r,\n extractChoices: i\n };\n}\nexport {\n M as createPaintingAnnotationsHelper,\n x as parseSpecificResource\n};\n//# sourceMappingURL=painting-annotations.mjs.map\n","import { useCallback, useMemo, useState } from 'react';\nimport { useVault } from './useVault';\nimport { usePaintingAnnotations } from './usePaintingAnnotations';\nimport { createPaintingAnnotationsHelper } from '@iiif/helpers/painting-annotations';\n\nexport function usePaintables(\n options?: { defaultChoices?: string[]; enableSingleAnnotation?: boolean },\n deps: any[] = []\n) {\n const vault = useVault();\n const helper = useMemo(() => {\n return createPaintingAnnotationsHelper(vault);\n }, []);\n const paintingAnnotations = usePaintingAnnotations({ enableSingleAnnotation: options?.enableSingleAnnotation });\n const [enabledChoices, setEnabledChoices] = useState<string[]>(options?.defaultChoices || []);\n\n const paintables = useMemo(\n () => helper.getPaintables(paintingAnnotations, enabledChoices),\n [vault, paintingAnnotations, enabledChoices, ...deps]\n );\n\n const makeChoice = useCallback(\n (\n id: string,\n { deselectOthers = true, deselect = false }: { deselectOthers?: boolean; deselect?: boolean } = {}\n ) => {\n if (paintables.choice) {\n // Don't support multiple choice yet.\n if (paintables.choice.type !== 'single-choice') {\n throw new Error('Complex choice not supported yet');\n }\n\n setEnabledChoices((prevChoices) => {\n if (deselect) {\n const without = prevChoices.filter((e) => e !== id);\n\n if (without.length === 0) {\n const defaultId = paintables.items[0].resource.id;\n if (defaultId) {\n return [defaultId];\n } else {\n return [];\n }\n }\n\n return without;\n }\n\n if (deselectOthers) {\n return [id];\n }\n\n const newChoices = [...prevChoices];\n\n // Add the default ID.\n if (newChoices.length === 0 && paintables.items.length) {\n const defaultId = paintables.items[0].resource.id;\n if (defaultId) {\n newChoices.push(defaultId);\n }\n }\n\n if (prevChoices.indexOf(id) !== -1) {\n return prevChoices;\n }\n\n return [...prevChoices, id];\n });\n }\n },\n [paintables.choice]\n );\n\n const actions = { makeChoice };\n\n return [paintables, actions] as const;\n}\n","import { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { unsupportedStrategy } from './rendering-utils';\nimport { AnnotationPageDescription } from './resource-types';\nimport { ExternalWebResource } from '@iiif/presentation-3';\nimport { RenderingStrategy } from './strategies';\nimport { ChoiceDescription, Paintables } from '@iiif/helpers';\n\nexport type Single3DModelStrategy = {\n type: '3d-model';\n model: ExternalWebResource;\n choice?: ChoiceDescription; // future\n annotations?: AnnotationPageDescription; // future\n};\n\nconst supportedFormats = ['model/gltf-binary'];\n\nexport function get3dStrategy(canvas: CanvasNormalized, paintables: Paintables): RenderingStrategy {\n const first = paintables.items[0];\n const resource = first.resource as ExternalWebResource;\n\n if (!resource.format) {\n return unsupportedStrategy('Unknown format');\n }\n\n if (supportedFormats.indexOf(resource.format) === -1) {\n return unsupportedStrategy(`3D format: ${resource.format} is unsupported`);\n }\n\n return {\n type: '3d-model',\n model: resource as any,\n } as Single3DModelStrategy;\n}\n","import { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { unsupportedStrategy } from './rendering-utils';\nimport { MediaStrategy } from './strategies';\nimport { Paintables } from '@iiif/helpers';\n\nexport function getAudioStrategy(canvas: CanvasNormalized, paintables: Paintables) {\n if (!canvas.duration) {\n return unsupportedStrategy('No duration on canvas');\n }\n\n if (paintables.items.length > 1) {\n return unsupportedStrategy('Only one audio source supported');\n }\n\n const audioResource = paintables.items[0]?.resource as any; // @todo stronger type for what this might be.\n\n if (!audioResource) {\n return unsupportedStrategy('Unknown audio');\n }\n\n if (!audioResource.format) {\n return unsupportedStrategy('Audio does not have format');\n }\n\n return {\n type: 'media',\n media: {\n annotationId: paintables.items[0].annotationId,\n duration: canvas.duration,\n url: audioResource.id,\n type: 'Sound',\n target: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n format: audioResource.format,\n selector: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n },\n annotations: {\n pages: [],\n },\n } as MediaStrategy;\n}\n","import { IIIFExternalWebResource } from '@iiif/presentation-3';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { ImageServiceLoaderType } from '../../hooks/useLoadImageService';\nimport { AnnotationPageDescription, ImageWithOptionalService } from './resource-types';\nimport { getImageServices } from '@atlas-viewer/iiif-image-api';\nimport { getParsedTargetSelector, unsupportedStrategy } from './rendering-utils';\nimport { expandTarget } from '@iiif/helpers/annotation-targets';\nimport { BoxSelector, ChoiceDescription, Paintables } from '@iiif/helpers';\n\nexport type SingleImageStrategy = {\n type: 'images';\n image: ImageWithOptionalService;\n images: Array<ImageWithOptionalService>;\n choice?: ChoiceDescription;\n annotations?: AnnotationPageDescription;\n};\n\nexport function getImageStrategy(\n canvas: CanvasNormalized,\n paintables: Paintables,\n loadImageService: ImageServiceLoaderType\n) {\n const imageTypes: ImageWithOptionalService[] = [];\n for (const singleImage of paintables.items) {\n // SingleImageStrategy\n const resource: IIIFExternalWebResource =\n singleImage.resource && singleImage.resource.type === 'SpecificResource'\n ? singleImage.resource.source\n : singleImage.resource;\n\n // Validation.\n if (!resource.id) {\n // @todo we could skip this?\n return unsupportedStrategy('No resource Identifier');\n }\n\n let imageService = undefined;\n if (resource.service) {\n const imageServices = getImageServices(resource as any) as any[];\n if (imageServices[0]) {\n imageService = loadImageService(imageServices[0], canvas);\n }\n }\n\n // Target is where it should be painted.\n const defaultTarget: BoxSelector = {\n type: 'BoxSelector',\n spatial: {\n x: 0,\n y: 0,\n width: Number(canvas.width),\n height: Number(canvas.height),\n },\n };\n\n const [target, source] = getParsedTargetSelector(canvas, singleImage.target);\n if (!(source.id === canvas.id || decodeURIComponent(source.id || '') === (canvas.id || ''))) {\n // Skip invalid targets.\n continue;\n }\n\n // Support for cropping before painting an annotation.\n // @todo this isn't working.\n const defaultImageSelector =\n (singleImage.resource as any).width && (singleImage.resource as any).height\n ? ({\n type: 'BoxSelector',\n spatial: {\n x: 0,\n y: 0,\n width: (singleImage.resource as any).width,\n height: (singleImage.resource as any).height,\n },\n } as BoxSelector)\n : undefined;\n\n let imageSelector = singleImage.resource.type === 'SpecificResource' ? expandTarget(singleImage.resource) : null;\n\n if (singleImage.selector) {\n const found = expandTarget({\n type: 'SpecificResource',\n source: singleImage.resource,\n selector: singleImage.selector,\n });\n\n if (found) {\n imageSelector = found;\n }\n }\n\n const selector: undefined | BoxSelector =\n imageSelector &&\n imageSelector.selector &&\n (imageSelector.selector.type === 'BoxSelector' || imageSelector.selector.type === 'TemporalBoxSelector')\n ? {\n type: 'BoxSelector',\n spatial: {\n x: imageSelector.selector.spatial.x,\n y: imageSelector.selector.spatial.y,\n width: imageSelector.selector.spatial.width,\n height: imageSelector.selector.spatial.height,\n },\n }\n : undefined;\n\n if (imageService && !imageService.id) {\n (imageService as any).id = imageService['@id'];\n }\n\n const imageType: ImageWithOptionalService = {\n id: resource.id,\n type: 'Image',\n annotationId: (singleImage as any).annotationId,\n width: Number(target || selector ? resource.width : canvas.width),\n height: Number(target || selector ? resource.height : canvas.height),\n service: imageService,\n sizes:\n imageService && imageService.sizes\n ? imageService.sizes\n : resource.width && resource.height\n ? [{ width: resource.width, height: resource.height }]\n : [],\n target: target && target.type !== 'PointSelector' ? target : defaultTarget,\n selector: selector,\n };\n\n imageTypes.push(imageType);\n }\n\n return {\n type: 'images',\n image: imageTypes[0],\n images: imageTypes,\n choice: paintables.choice,\n } as SingleImageStrategy;\n}\n","import { InternationalString } from '@iiif/presentation-3';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { AnnotationPageDescription } from './resource-types';\nimport { getParsedTargetSelector } from './rendering-utils';\nimport { RenderingStrategy } from './strategies';\nimport { ChoiceDescription, Paintables, SupportedTarget } from '@iiif/helpers';\n\nexport type TextualContentStrategy = {\n type: 'textual-content';\n items: { annotationId: string; text: InternationalString; target: SupportedTarget | null }[];\n choice?: ChoiceDescription; // future\n annotations?: AnnotationPageDescription; // future\n};\n\nfunction parseType(item: any, languageMap: InternationalString = {}, lang?: string) {\n const language = item.language || lang || 'none';\n switch (item.type) {\n case 'TextualBody': {\n if (typeof item.value !== 'undefined') {\n languageMap[language] = item.value;\n }\n break;\n }\n case 'List':\n case 'Composite':\n case 'Choice': {\n if (item.items) {\n item.items.forEach((inner: any) => parseType(inner, languageMap, language));\n }\n }\n }\n return languageMap;\n}\n\nexport function getTextualContentStrategy(canvas: CanvasNormalized, paintables: Paintables): RenderingStrategy {\n const items: TextualContentStrategy['items'] = [];\n\n paintables.items.forEach((item) => {\n if (item.resource) {\n const [target] = getParsedTargetSelector(canvas, item.target);\n items.push({ annotationId: item.annotationId, text: parseType(item.resource), target: target as any });\n }\n });\n\n return {\n type: 'textual-content',\n items,\n } as TextualContentStrategy;\n}\n","import { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { unsupportedStrategy } from './rendering-utils';\nimport { MediaStrategy } from './strategies';\nimport { Paintables } from '@iiif/helpers';\n\n// https://stackoverflow.com/a/27728417\nconst ytRegex = /^.*(?:(?:youtu\\.be\\/|v\\/|vi\\/|u\\/\\w\\/|embed\\/|shorts\\/)|(?:(?:watch)?\\?vi?=|&vi?=))([^#&?]*).*/;\n\nexport function getVideoStrategy(canvas: CanvasNormalized, paintables: Paintables) {\n const videoPaintables = paintables.items.filter((t) => t.type === 'video');\n\n let noDuration = false;\n\n if (!canvas.duration) {\n noDuration = true;\n }\n\n if (videoPaintables.length > 1) {\n return unsupportedStrategy('Only one video source supported');\n }\n\n const videoResource = videoPaintables[0]?.resource as any; // @todo stronger type for what this might be.\n const isYouTube = !!(videoResource.service || []).find((service: any) =>\n (service.profile || '').includes('youtube.com')\n );\n\n if (!isYouTube && noDuration) {\n return unsupportedStrategy('Video does not have duration');\n }\n\n if (!videoResource) {\n return unsupportedStrategy('Unknown video');\n }\n\n if (!videoResource.format || videoResource.format === 'text/html') {\n if (!isYouTube) {\n return unsupportedStrategy('Video does not have format');\n }\n }\n\n const media = {\n annotationId: (paintables.items[0] as any).annotationId,\n duration: canvas.duration,\n url: videoResource.id,\n type: 'Video',\n items: [],\n target: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n format: videoResource.format,\n selector: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n };\n\n if (isYouTube) {\n media.type = 'VideoYouTube';\n const id = videoResource.id.match(ytRegex);\n if (!id[1]) {\n return unsupportedStrategy('Video is not known youtube video');\n }\n (media as any).youTubeId = id[1];\n }\n\n // @todo support VTT\n\n return {\n type: 'media',\n media,\n annotations: {\n pages: [],\n },\n } as MediaStrategy;\n}\n","import { get3dStrategy } from './3d-strategy';\nimport { getAudioStrategy } from './audio-strategy';\nimport { getImageStrategy } from './image-strategy';\nimport { emptyStrategy, unknownResponse, unsupportedStrategy } from './rendering-utils';\nimport { getTextualContentStrategy } from './textual-content-strategy';\nimport { getVideoStrategy } from './video-strategy';\nimport type { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport type { Paintables } from '@iiif/helpers/painting-annotations';\nimport type { ImageServiceLoaderType } from '../../hooks/useLoadImageService';\n\ninterface GetRenderStrategyOptions {\n canvas: CanvasNormalized | null | undefined;\n paintables: Paintables;\n supports: string[];\n loadImageService: ImageServiceLoaderType;\n}\n\nexport function getRenderingStrategy({ canvas, paintables, supports, loadImageService }: GetRenderStrategyOptions) {\n if (!canvas) {\n console.log('No canvas');\n return unknownResponse;\n }\n\n if (paintables.types.length === 0) {\n if (supports.indexOf('empty') !== -1) {\n return emptyStrategy(canvas.width, canvas.height);\n }\n console.log('No paintables');\n return unknownResponse;\n }\n\n if (paintables.types.length !== 1) {\n if (paintables.types.length === 2 && paintables.types.indexOf('text') !== -1) {\n paintables.types = paintables.types.filter((t) => t !== 'text');\n } else {\n if (supports.indexOf('complex-timeline') === -1) {\n return unsupportedStrategy('Complex timeline not supported');\n }\n return unsupportedStrategy('ComplexTimelineStrategy not yet supported');\n }\n }\n\n const mainType = paintables.types[0];\n\n // Image\n if (mainType === 'image') {\n if (supports.indexOf('images') === -1) {\n return unsupportedStrategy('Image not supported');\n }\n\n return getImageStrategy(canvas, paintables, loadImageService);\n }\n\n // 3D\n if (mainType === 'Model' || mainType === 'model') {\n if (supports.indexOf('3d-model') === -1) {\n return unsupportedStrategy('3D not supported');\n }\n\n return get3dStrategy(canvas, paintables);\n }\n\n if (mainType === 'textualbody') {\n if (supports.indexOf('textual-content') === -1) {\n return unsupportedStrategy('Textual content not supported');\n }\n\n return getTextualContentStrategy(canvas, paintables);\n }\n\n if (mainType === 'sound' || mainType === 'audio') {\n if (supports.indexOf('media') === -1) {\n return unsupportedStrategy('Media not supported');\n }\n\n // Media Strategy with audio or audio sequence.\n return getAudioStrategy(canvas, paintables);\n }\n\n if (mainType === 'video') {\n if (supports.indexOf('media') === -1) {\n return unsupportedStrategy('Media not supported');\n }\n\n // Media Strategy with video or video sequence.\n return getVideoStrategy(canvas, paintables);\n }\n\n // Unknown fallback.\n return unknownResponse;\n}\n","import { AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useCanvas } from './useCanvas';\nimport { useMemo } from 'react';\nimport { useVault } from './useVault';\nimport { RenderingStrategy } from '../features/rendering-strategy/strategies';\nimport {\n emptyActions,\n emptyStrategy,\n unknownResponse,\n unsupportedStrategy,\n} from '../features/rendering-strategy/rendering-utils';\nimport { useAnnotationPageManager } from './useAnnotationPageManager';\nimport { useManifest } from './useManifest';\nimport { useResources } from './useResources';\nimport { useLoadImageService } from './useLoadImageService';\nimport { usePaintables } from './usePaintables';\nimport { getRenderingStrategy } from '../features/rendering-strategy/get-rendering-strategy';\n\n// @todo we may not have any actions returned from the rendering strategy.\nexport type StrategyActions = {\n makeChoice: (id: string, options?: { deselectOthers?: boolean; deselect?: boolean }) => void;\n};\n\nexport type UseRenderingStrategy = [RenderingStrategy, StrategyActions];\n\nexport type UseRenderingStrategyOptions = {\n strategies?: Array<RenderingStrategy['type']>;\n annotationPageManagerId?: string;\n enableSingleAnnotation?: boolean;\n defaultChoices?: string[];\n};\n\nexport function useRenderingStrategy(options?: UseRenderingStrategyOptions): UseRenderingStrategy {\n const manifest = useManifest();\n const canvas = useCanvas();\n const vault = useVault();\n const [loadImageService, imageServiceStatus] = useLoadImageService();\n const { enabledPageIds } = useAnnotationPageManager(options?.annotationPageManagerId || manifest?.id || canvas?.id, {\n all: false,\n });\n const enabledPages = useResources<AnnotationPageNormalized>(enabledPageIds, 'AnnotationPage');\n\n const supports: RenderingStrategy['type'][] = options?.strategies || [\n 'empty',\n 'images',\n 'media',\n 'textual-content',\n 'complex-timeline',\n ];\n\n const [paintables, actions] = usePaintables(options, [imageServiceStatus]);\n\n const strategy = useMemo(() => {\n return getRenderingStrategy({ canvas, paintables, supports, loadImageService });\n }, [canvas, paintables, vault, actions.makeChoice]);\n\n return useMemo(() => {\n if (strategy.type === 'unknown') {\n return [strategy, emptyActions];\n }\n\n return [\n {\n ...strategy,\n annotations: { pages: enabledPages },\n },\n actions,\n ];\n }, [strategy, enabledPages]);\n}\n","import { Vault } from '@iiif/helpers/vault';\nimport { useVault } from './useVault';\nimport { useEffect } from 'react';\n\nexport const useVaultEffect = (callback: (vault: Vault) => void, deps: any[] = []): void => {\n const vault = useVault();\n\n useEffect(() => {\n callback(vault);\n }, [vault, ...deps]);\n};\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport { useManifest } from './useManifest';\nimport { useCanvas } from './useCanvas';\nimport { useVaultEffect } from './useVaultEffect';\nimport { ImageCandidate, ImageCandidateRequest } from '@atlas-viewer/iiif-image-api';\nimport { useImageServiceLoader } from '../context/ImageServiceLoaderContext';\nimport { createThumbnailHelper } from '@iiif/helpers/thumbnail';\nimport { useVault } from './useVault';\n\nexport function useThumbnail(\n request: ImageCandidateRequest,\n dereference?: boolean,\n { canvasId, manifestId }: { canvasId?: string; manifestId?: string } = {}\n) {\n const vault = useVault();\n const loader = useImageServiceLoader();\n const helper = useMemo(() => createThumbnailHelper(vault, { imageServiceLoader: loader }), [vault, loader]);\n\n const [thumbnail, setThumbnail] = useState<ImageCandidate | undefined>();\n const manifest = useManifest(manifestId ? { id: manifestId } : undefined);\n const canvas = useCanvas(canvasId ? { id: canvasId } : undefined);\n const subject = canvas ? canvas : manifest;\n const didUnmount = useRef(false);\n\n useEffect(() => {\n didUnmount.current = false;\n return () => {\n didUnmount.current = true;\n };\n }, []);\n\n if (!subject) {\n throw new Error('Must be called under a manifest or canvas context.');\n }\n\n useVaultEffect(\n (v) => {\n helper.getBestThumbnailAtSize(subject, request, dereference).then((thumb) => {\n if (thumb.best && !didUnmount.current) {\n setThumbnail(thumb.best);\n }\n });\n },\n [subject]\n );\n\n return thumbnail;\n}\n","import { RefObject, useCallback, useEffect, useReducer, useRef } from 'react';\n\ntype MediaPlayerAction =\n | { type: 'PLAY_PAUSE' }\n | { type: 'TOGGLE_MUTE' }\n | { type: 'MUTE' }\n | { type: 'UNMUTE' }\n | { type: 'SET_VOLUME'; volume: number }\n | { type: 'PLAY' }\n | { type: 'PLAY_REQUESTED' }\n | { type: 'PAUSE' }\n | { type: 'FINISHED' };\n\nexport type MediaPlayerState = {\n isPlaying: boolean;\n isMuted: boolean;\n playRequested: boolean;\n volume: number;\n isFinished: boolean;\n duration: number;\n};\n\nexport type MediaPlayerActions = {\n play(): void;\n pause(): void;\n playPause(): void;\n mute(): void;\n unmute(): void;\n toggleMute(): void;\n setVolume(volume: number): void;\n setDurationPercent(percent: number): void;\n setTime(time: number): void;\n};\n\nfunction getDefaultState(duration: number): MediaPlayerState {\n return { isMuted: false, playRequested: false, isPlaying: false, isFinished: false, volume: 100, duration };\n}\n\nfunction reducer(state: MediaPlayerState, action: MediaPlayerAction) {\n switch (action.type) {\n case 'FINISHED':\n return { ...state, isFinished: true, isPlaying: false, playRequested: false };\n case 'PLAY_PAUSE':\n return { ...state, isFinished: false, isPlaying: !state.isPlaying };\n case 'PLAY_REQUESTED':\n return { ...state, isFinished: false, playRequested: true };\n case 'PAUSE':\n return { ...state, isPlaying: false };\n case 'PLAY':\n return { ...state, isFinished: false, playRequested: false, isPlaying: true };\n case 'MUTE':\n return { ...state, isMuted: true };\n case 'SET_VOLUME':\n return { ...state, volume: action.volume, isMuted: action.volume === 0 };\n case 'TOGGLE_MUTE':\n return { ...state, isMuted: !state.isMuted };\n case 'UNMUTE':\n return { ...state, isMuted: false };\n }\n return state;\n}\n\nexport function formatTime(time: number) {\n const seconds = Math.round(time);\n return `${Math.floor(seconds / 60)}:${`${seconds % 60}`.padStart(2, '0')}`;\n}\n\nexport function useSimpleMediaPlayer(props: { duration: number }): readonly [\n {\n element: RefObject<HTMLAudioElement | HTMLVideoElement>;\n currentTime: RefObject<HTMLDivElement>;\n progress: RefObject<HTMLDivElement>;\n },\n MediaPlayerState,\n MediaPlayerActions\n] {\n const [state, dispatch] = useReducer(reducer, getDefaultState(props.duration));\n\n const media = useRef<HTMLAudioElement | HTMLVideoElement>(null);\n const currentTime = useRef<HTMLDivElement>(null);\n const progress = useRef<HTMLDivElement>(null);\n const _isMuted = useRef(false);\n\n const _updateCurrentTime = useCallback(() => {\n if (currentTime.current && media.current) {\n currentTime.current.innerHTML = formatTime(media.current.currentTime);\n if (progress.current) {\n progress.current.style.width = `${(media.current.currentTime / props.duration) * 100}%`;\n }\n if (_isMuted.current !== media.current.muted) {\n _isMuted.current = media.current.muted;\n dispatch(media.current.muted ? { type: 'MUTE' } : { type: 'UNMUTE' });\n }\n }\n }, [props.duration]);\n\n const play = useCallback(() => {\n if (media.current) {\n dispatch({ type: 'PLAY_REQUESTED' });\n media.current.play().then(() => {\n dispatch({ type: 'PLAY' });\n });\n _updateCurrentTime();\n }\n }, [_updateCurrentTime]);\n\n const playPause = useCallback(() => {\n if (media.current) {\n if (media.current.duration > 0 && media.current.paused) {\n play();\n } else {\n pause();\n }\n }\n }, [_updateCurrentTime]);\n\n const pause = useCallback(() => {\n if (media.current) {\n media.current.pause();\n dispatch({ type: 'PAUSE' });\n _updateCurrentTime();\n }\n }, [_updateCurrentTime]);\n\n const toggleMute = useCallback(() => {\n if (media.current) {\n media.current.muted = !media.current.muted;\n dispatch(media.current.muted ? { type: 'MUTE' } : { type: 'UNMUTE' });\n }\n }, []);\n\n const mute = useCallback(() => {\n if (media.current) {\n media.current.muted = true;\n dispatch({ type: 'MUTE' });\n }\n }, []);\n\n const unmute = useCallback(() => {\n if (media.current) {\n media.current.muted = false;\n dispatch({ type: 'UNMUTE' });\n }\n }, []);\n\n const setVolume = useCallback((newVolume: number) => {\n if (media.current) {\n media.current.muted = false;\n media.current.volume = newVolume / 100;\n dispatch({ type: 'SET_VOLUME', volume: newVolume });\n }\n }, []);\n\n const setDurationPercent = useCallback((percent: number) => {\n if (media.current) {\n media.current.currentTime = Math.max(0, Math.min(percent * props.duration, props.duration));\n _updateCurrentTime();\n }\n }, []);\n\n const setTime = useCallback((time: number) => {\n if (media.current) {\n media.current.currentTime = Math.max(0, Math.min(time, props.duration));\n _updateCurrentTime();\n }\n }, []);\n\n useEffect(() => {\n const interval = setInterval(() => {\n _updateCurrentTime();\n }, 350);\n\n return () => clearInterval(interval);\n }, [_updateCurrentTime, props.duration]);\n\n useEffect(() => {\n const ended = () => {\n dispatch({ type: 'FINISHED' });\n };\n const _media = media.current;\n\n _media?.addEventListener('ended', ended);\n\n return () => _media?.removeEventListener('ended', ended);\n }, []);\n\n return [\n { element: media, currentTime, progress },\n state,\n {\n play,\n pause,\n playPause,\n mute,\n unmute,\n toggleMute,\n setVolume,\n setDurationPercent,\n setTime,\n },\n ];\n}\n","import { createContext, ReactNode, RefObject, useContext } from 'react';\nimport { MediaPlayerActions, MediaPlayerState } from '../hooks/useSimpleMediaPlayer';\n\nconst MediaReactContextState = createContext<MediaPlayerState | null>(null);\nconst MediaReactContextActions = createContext<MediaPlayerActions | null>(null);\nconst MediaReactContextElements = createContext<{\n element: RefObject<HTMLAudioElement | HTMLVideoElement>;\n currentTime: RefObject<HTMLDivElement>;\n progress: RefObject<HTMLDivElement>;\n} | null>(null);\n\nexport function useMediaState() {\n const ctx = useContext(MediaReactContextState);\n if (!ctx) {\n throw new Error('Ctx not found');\n }\n return ctx;\n}\n\nexport function useMediaActions() {\n const ctx = useContext(MediaReactContextActions);\n if (!ctx) {\n throw new Error('Ctx not found');\n }\n return ctx;\n}\n\nexport function useMediaElements() {\n const ctx = useContext(MediaReactContextElements);\n if (!ctx) {\n throw new Error('Ctx not found');\n }\n return ctx;\n}\n\nexport function MediaPlayerProvider({\n actions,\n state,\n children,\n currentTime,\n progress,\n element,\n}: {\n actions: MediaPlayerActions;\n state: MediaPlayerState;\n children: ReactNode;\n currentTime: RefObject<HTMLDivElement>;\n progress: RefObject<HTMLDivElement>;\n element: RefObject<HTMLAudioElement | HTMLVideoElement>;\n}) {\n return (\n <MediaReactContextElements.Provider value={{ currentTime, progress, element }}>\n <MediaReactContextActions.Provider value={actions}>\n <MediaReactContextState.Provider value={state}>{children}</MediaReactContextState.Provider>\n </MediaReactContextActions.Provider>\n </MediaReactContextElements.Provider>\n );\n}\n","import { ReactNode } from 'react';\nimport { useSimpleMediaPlayer } from '../../hooks/useSimpleMediaPlayer';\nimport { SingleAudio } from '../../features/rendering-strategy/resource-types';\nimport { MediaPlayerProvider } from '../../context/MediaContext';\nimport { useOverlay } from '../context/overlays';\n\nexport function AudioHTML({ media, children }: { media: SingleAudio; children: ReactNode }) {\n const [{ element, currentTime, progress }, state, actions] = useSimpleMediaPlayer({ duration: media.duration });\n\n return (\n <MediaPlayerProvider\n state={state}\n actions={actions}\n currentTime={currentTime}\n progress={progress}\n element={element}\n >\n <audio ref={element} src={media.url} />\n {children}\n </MediaPlayerProvider>\n );\n}\n\nexport function Audio({\n media,\n mediaControlsDeps,\n children,\n}: {\n media: SingleAudio;\n mediaControlsDeps?: any[];\n children: ReactNode;\n}) {\n useOverlay('portal', 'audio', AudioHTML, { media, children }, [media, ...(mediaControlsDeps || [])]);\n\n return null;\n}\n","import { ReactNode, RefObject } from 'react';\nimport { useSimpleMediaPlayer } from '../../hooks/useSimpleMediaPlayer';\nimport { SingleVideo } from '../../features/rendering-strategy/resource-types';\nimport { MediaPlayerProvider } from '../../context/MediaContext';\nimport { useOverlay } from '../context/overlays';\n\nexport function VideoHTML({\n element,\n media,\n playPause,\n}: {\n element: RefObject<any>;\n media: SingleVideo;\n playPause: () => void;\n}) {\n const Component = 'div' as any;\n return (\n <Component className=\"video-container\" part=\"video-container\" onClick={playPause}>\n <style>\n {`\n .video-container {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: #000;\n z-index: 13;\n display: flex;\n justify-content: center;\n pointer-events: visible;\n }\n `}\n </style>\n <video ref={element as any} src={media.url} style={{ width: '100%', objectFit: 'contain' }} />\n </Component>\n );\n}\n\nexport function Video({\n media,\n mediaControlsDeps,\n children,\n}: {\n media: SingleVideo;\n mediaControlsDeps?: any[];\n children: ReactNode;\n}) {\n const [{ element, currentTime, progress }, state, actions] = useSimpleMediaPlayer({ duration: media.duration });\n\n useOverlay('overlay', 'video-element', VideoHTML, {\n element,\n media,\n playPause: actions.playPause,\n });\n\n useOverlay(\n 'portal',\n 'custom-controls',\n MediaPlayerProvider,\n {\n state: state,\n actions: actions,\n currentTime: currentTime,\n progress: progress,\n element: element,\n children,\n },\n [currentTime, state, media, ...(mediaControlsDeps || [])]\n );\n\n return null;\n}\n","// @ts-ignore\nimport ModelViewer from 'react-model-viewer';\nimport { useOverlay } from '../context/overlays';\n\nexport function ModelHTML({ model }: { model: any }) {\n return (\n <>\n <style>\n {`\n .model-container {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: #000;\n z-index: 13;\n display: flex;\n justify-content: center;\n pointer-events: visible;\n }\n `}\n </style>\n <div className=\"model-container\">\n {/*@ts-ignore*/}\n <model-viewer\n interaction-prompt=\"none\"\n style={{ width: '100%', height: '100%' }}\n camera-controls=\"\"\n ar-status=\"not-presenting\"\n src={model.id}\n />\n </div>\n </>\n );\n}\n\nexport function Model({ model, name }: { model: any; name?: string }) {\n useOverlay('overlay', `model-${name}`, ModelHTML, { model }, [model]);\n\n return null;\n}\n","import { BoxStyle } from '@atlas-viewer/atlas';\nimport { useCanvas } from '../../hooks/useCanvas';\n\nexport function CanvasBackground({ style }: { style?: BoxStyle }) {\n const canvas = useCanvas();\n\n if (!canvas || !canvas.height || !canvas.width) {\n return null;\n }\n\n return (\n <box\n interactive={false}\n target={{ x: 0, y: 0, width: Number(canvas.width), height: Number(canvas.height) }}\n style={style}\n />\n );\n}\n","import { InternationalString } from '@iiif/presentation-3';\nimport React, { ReactNode, useMemo } from 'react';\n\nconst LanguageContext = React.createContext<string>('en');\n\nexport function LanguageProvider(props: { language: string; children: ReactNode }) {\n return <LanguageContext.Provider value={props.language}>{props.children}</LanguageContext.Provider>;\n}\n\nexport function useIIIFLanguage() {\n return React.useContext(LanguageContext);\n}\n\nfunction getLanguagePartFromCode(code: string) {\n return code.indexOf('-') !== -1 ? code.slice(0, code.indexOf('-')) : code;\n}\n\ntype LanguageStringProps = {\n [key: string]: any;\n} & { as?: string | React.FC<any>; language: string; viewingDirection?: 'rtl' | 'rtl' };\n\nexport function LanguageString({ as: Component, language, children, viewingDirection, ...props }: LanguageStringProps) {\n const i18nLanguage = useIIIFLanguage();\n\n const isSame = useMemo(() => {\n return getLanguagePartFromCode(i18nLanguage) === getLanguagePartFromCode(language);\n }, [i18nLanguage, language]);\n\n if (isSame) {\n if (Component) {\n return <Component {...props}>{children}</Component>;\n }\n\n return <span {...props}>{children}</span>;\n }\n\n if (Component) {\n return (\n <Component {...props} lang={language} dir={viewingDirection}>\n {children}\n </Component>\n );\n }\n\n return (\n <span {...props} lang={language} dir={viewingDirection}>\n {children}\n </span>\n );\n}\n\nfunction getClosestLanguage(i18nLanguage: string, languages: string[], i18nLanguages: string[]) {\n if (languages.length === 0) {\n return undefined;\n }\n\n // Only one option.\n if (languages.length === 1) {\n return languages[0];\n }\n\n // Exact match.\n if (languages.indexOf(i18nLanguage) !== -1) {\n return i18nLanguage;\n }\n\n // Root match (en-us === en)\n const root = i18nLanguage.indexOf('-') !== -1 ? i18nLanguage.slice(0, i18nLanguage.indexOf('-')) : null;\n if (root && languages.indexOf(root) !== -1) {\n return root;\n }\n\n // All of the fall backs.\n for (const lang of i18nLanguages) {\n if (languages.indexOf(lang) !== -1) {\n return lang;\n }\n }\n\n if (languages.indexOf('none') !== -1) {\n return 'none';\n }\n\n if (languages.indexOf('@none') !== -1) {\n return '@none';\n }\n\n // Finally, fall back to the first.\n return languages[0];\n}\n\nexport const useClosestLanguage = (getLanguages: () => string[], deps: any[] = []): string | undefined => {\n const i18nLanguage = useIIIFLanguage();\n\n return useMemo(() => {\n const languages = getLanguages();\n\n return getClosestLanguage(i18nLanguage, languages, []);\n }, [i18nLanguage, ...deps]);\n};\n\nexport function useLocaleString(\n inputText: InternationalString | string | null | undefined,\n defaultText?: string,\n separator = '\\n'\n) {\n const language = useClosestLanguage(() => Object.keys(inputText || {}), [inputText]);\n return [\n useMemo(() => {\n if (!inputText) {\n return defaultText || '';\n }\n if (typeof inputText === 'string') {\n return inputText;\n }\n\n const candidateText = language ? inputText[language] : undefined;\n if (candidateText) {\n if (typeof candidateText === 'string') {\n return candidateText;\n }\n return candidateText.join(separator);\n }\n\n return '';\n }, [language, defaultText, inputText]),\n language,\n ] as const;\n}\n\nexport function useCreateLocaleString() {\n const i18nLanguage = useIIIFLanguage();\n\n return function createLocaleString(\n inputText: InternationalString | string | null | undefined,\n defaultText?: string,\n separator?: string\n ) {\n const languages = Object.keys(inputText || {});\n const language = getClosestLanguage(i18nLanguage, languages, []);\n\n if (!inputText) {\n return defaultText || '';\n }\n if (typeof inputText === 'string') {\n return inputText;\n }\n\n const candidateText = language ? inputText[language] : undefined;\n if (candidateText) {\n if (typeof candidateText === 'string') {\n return candidateText;\n }\n return candidateText.join(typeof separator !== 'undefined' ? separator : '\\n');\n }\n\n return '';\n };\n}\n\ntype LocaleStringProps = {\n as?: string | React.FC<any>;\n defaultText?: string;\n to?: string;\n separator?: string;\n enableDangerouslySetInnerHTML?: boolean;\n children: InternationalString | string | null | undefined;\n style?: React.CSSProperties;\n extraProps?: any;\n} & Record<string, any>;\n\nexport function LocaleString({\n as: Component,\n defaultText,\n enableDangerouslySetInnerHTML,\n children,\n separator,\n ...props\n}: LocaleStringProps) {\n const [text, language] = useLocaleString(children, defaultText, separator);\n\n if (language) {\n return (\n <LanguageString\n {...props}\n as={Component}\n language={language}\n title={enableDangerouslySetInnerHTML ? undefined : text}\n dangerouslySetInnerHTML={\n enableDangerouslySetInnerHTML\n ? {\n __html: text,\n }\n : undefined\n }\n >\n {enableDangerouslySetInnerHTML ? undefined : text}\n </LanguageString>\n );\n }\n\n if (Component) {\n return <Component {...props}>{text}</Component>;\n }\n\n return (\n <span\n {...props}\n title={enableDangerouslySetInnerHTML ? undefined : text}\n dangerouslySetInnerHTML={\n enableDangerouslySetInnerHTML\n ? {\n __html: text,\n }\n : undefined\n }\n >\n {enableDangerouslySetInnerHTML ? undefined : text}\n </span>\n );\n}\n","import { useSimpleMediaPlayer } from '../../hooks/useSimpleMediaPlayer';\nimport { useOverlay } from '../context/overlays';\nimport { SingleYouTubeVideo } from '../../features/rendering-strategy/resource-types';\nimport { ReactNode, RefObject, useRef } from 'react';\n\nexport function VideoYouTubeHTML({\n element,\n media,\n playPause,\n}: {\n element: RefObject<any>;\n media: SingleYouTubeVideo;\n playPause: () => void;\n}) {\n const player = useRef<HTMLIFrameElement>(null);\n\n if (!media.youTubeId) {\n return null;\n }\n\n const Component = 'div' as any;\n return (\n <Component className=\"video-container\" part=\"video-container\" onClick={playPause}>\n <style>\n {`\n .video-container {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: #000;\n z-index: 13;\n display: flex;\n justify-content: center;\n pointer-events: visible;\n }\n .video-yt {\n border: none;\n width: 100%;\n object-fit: contain;\n }\n `}\n </style>\n <iframe\n className=\"video-yt\"\n ref={player}\n src={`https://www.youtube.com/embed/${media.youTubeId}?enablejsapi=1&origin=${window.location.host}`}\n referrerPolicy=\"no-referrer\"\n sandbox=\"allow-scripts allow-same-origin allow-presentation\"\n ></iframe>\n </Component>\n );\n}\n\nexport function VideoYouTube({\n media,\n mediaControlsDeps,\n children,\n}: {\n media: SingleYouTubeVideo;\n mediaControlsDeps?: any[];\n children: ReactNode;\n}) {\n const [{ element, currentTime, progress }, state, actions] = useSimpleMediaPlayer({ duration: media.duration });\n\n useOverlay('overlay', 'video-element', VideoYouTubeHTML, {\n element,\n media,\n playPause: actions.playPause,\n });\n\n return null;\n}\n","import { createStylesHelper } from '@iiif/helpers/styles';\nimport { RenderImage } from './Image';\nimport React, { Fragment, ReactNode, useEffect, useLayoutEffect, useMemo } from 'react';\nimport { BoxStyle, HTMLPortal } from '@atlas-viewer/atlas';\nimport { useVirtualAnnotationPageContext } from '../../hooks/useVirtualAnnotationPageContext';\nimport { StrategyActions, useRenderingStrategy } from '../../hooks/useRenderingStrategy';\nimport { useVault } from '../../hooks/useVault';\nimport { useResourceEvents } from '../../hooks/useResourceEvents';\nimport { useThumbnail } from '../../hooks/useThumbnail';\nimport { useCanvas } from '../../hooks/useCanvas';\nimport { RenderAnnotationPage } from './AnnotationPage';\nimport { Audio } from './Audio';\nimport { EmptyStrategy, MediaStrategy, RenderingStrategy } from '../../features/rendering-strategy/strategies';\nimport { Video } from './Video';\nimport { Model } from './Model';\nimport { CanvasContext } from '../../context/CanvasContext';\nimport { SingleImageStrategy } from '../../features/rendering-strategy/image-strategy';\nimport { CanvasBackground } from './CanvasBackground';\nimport { ImageWithOptionalService } from '../../features/rendering-strategy/resource-types';\nimport { LocaleString } from '../../utility/i18n-utils';\nimport { useOverlay } from '../context/overlays';\nimport { useViewerPreset, ViewerPresetContext } from '../../context/ViewerPresetContext';\nimport { ChoiceDescription } from '@iiif/helpers';\nimport { useWorldSize } from '../context/world-size';\nimport { VideoYouTube } from './VideoYouTube';\n\nexport type CanvasProps = {\n x?: number;\n y?: number;\n onCreated?: any;\n onChoiceChange?: (choice?: ChoiceDescription) => void;\n registerActions?: (actions: StrategyActions) => void;\n defaultChoices?: Array<{ id: string; opacity?: number }>;\n isStatic?: boolean;\n keepCanvasScale?: boolean;\n children?: ReactNode;\n renderViewerControls?: (strategy: SingleImageStrategy | EmptyStrategy) => ReactNode;\n viewControlsDeps?: any[];\n renderMediaControls?: (strategy: MediaStrategy) => ReactNode;\n mediaControlsDeps?: any[];\n strategies?: Array<RenderingStrategy['type']>;\n backgroundStyle?: BoxStyle;\n alwaysShowBackground?: boolean;\n enableSizes?: boolean;\n enableYouTube?: boolean;\n ignoreSize?: boolean;\n throwOnUnknown?: boolean;\n onClickPaintingAnnotation?: (id: string, image: ImageWithOptionalService, e: any) => void;\n};\n\nexport function RenderCanvas({\n x,\n y,\n onChoiceChange,\n registerActions,\n defaultChoices,\n isStatic,\n renderViewerControls,\n renderMediaControls,\n viewControlsDeps,\n mediaControlsDeps,\n strategies,\n throwOnUnknown,\n backgroundStyle,\n alwaysShowBackground,\n keepCanvasScale = false,\n enableSizes = false,\n enableYouTube = true,\n onClickPaintingAnnotation,\n children,\n}: CanvasProps) {\n const canvas = useCanvas();\n const elementProps = useResourceEvents(canvas, ['deep-zoom']);\n const [virtualPage] = useVirtualAnnotationPageContext();\n const preset = useViewerPreset();\n const vault = useVault();\n const helper = useMemo(() => createStylesHelper(vault), [vault]);\n const [strategy, actions] = useRenderingStrategy({\n strategies: strategies || ['images'],\n defaultChoices: defaultChoices?.map(({ id }) => id),\n });\n const choice = strategy.type === 'images' ? strategy.choice : undefined;\n const bestScale = useMemo(() => {\n if (keepCanvasScale) {\n return 1;\n }\n return Math.max(\n 1,\n ...(strategy.type === 'images'\n ? strategy.images.map((i) => {\n return (i.width || 0) / i.target?.spatial.width;\n })\n : [])\n );\n }, [keepCanvasScale, strategy]);\n\n useWorldSize(bestScale);\n\n useEffect(() => {\n if (registerActions) {\n registerActions(actions);\n }\n }, [strategy.annotations]);\n\n useEffect(() => {\n if (defaultChoices) {\n for (const choice of defaultChoices) {\n if (typeof choice.opacity !== 'undefined') {\n helper.applyStyles({ id: choice.id }, 'atlas', {\n opacity: choice.opacity,\n });\n }\n }\n }\n }, [defaultChoices]);\n\n useLayoutEffect(() => {\n if (onChoiceChange) {\n onChoiceChange(choice);\n }\n }, [choice]);\n\n useOverlay(\n preset &&\n (strategy.type === 'images' ||\n strategy.type === 'empty' ||\n (strategy.type === 'textual-content' && renderViewerControls))\n ? 'overlay'\n : 'none',\n `canvas-portal-controls-${canvas?.id}`,\n ViewerPresetContext.Provider,\n renderViewerControls\n ? {\n value: preset || null,\n children: renderViewerControls(strategy as any),\n }\n : {},\n [canvas, preset, strategy, ...(viewControlsDeps || [])]\n );\n\n const thumbnail = useThumbnail({ maxWidth: 256, maxHeight: 256 });\n\n if (!canvas) {\n return null;\n }\n\n // accompanyingCanvas\n const accompanyingCanvas = canvas.accompanyingCanvas;\n\n const thumbnailFallbackImage =\n thumbnail && thumbnail.type === 'fixed' ? (\n <world-object height={canvas.height} width={canvas.width} x={x} y={y}>\n <world-image\n uri={thumbnail.id}\n target={{ x: 0, y: 0, width: canvas.width, height: canvas.height }}\n display={\n thumbnail.width && thumbnail.height\n ? {\n width: thumbnail.width,\n height: thumbnail.height,\n }\n : undefined\n }\n crop={undefined}\n />\n </world-object>\n ) : null;\n\n if (strategy.type === 'unknown') {\n if (thumbnailFallbackImage) {\n return thumbnailFallbackImage;\n }\n\n if (throwOnUnknown) {\n throw new Error(strategy.reason || 'Unknown image strategy');\n }\n\n return null;\n }\n\n const annotations = (\n <Fragment>\n {virtualPage ? <RenderAnnotationPage page={virtualPage} /> : null}\n {strategy.annotations && strategy.annotations.pages\n ? strategy.annotations.pages.map((page) => {\n return <RenderAnnotationPage key={page.id} page={page} />;\n })\n : null}\n {children}\n </Fragment>\n );\n\n const totalKey = strategy.type === 'images' ? strategy.images.length : 0;\n\n return (\n <>\n <world-object\n key={`${canvas.id}/${strategy.type}/${totalKey}`}\n height={canvas.height}\n width={canvas.width}\n // scale={bestScale}\n x={x}\n y={y}\n {...elementProps}\n >\n {strategy.type === 'empty' || alwaysShowBackground ? <CanvasBackground style={backgroundStyle} /> : null}\n {strategy.type === 'textual-content'\n ? strategy.items.map((item, n) => {\n return (\n <>\n <HTMLPortal\n key={n}\n // @ts-ignore\n onClick={\n onClickPaintingAnnotation\n ? (e: any) => {\n e.stopPropagation();\n onClickPaintingAnnotation(item.annotationId, item as any, e);\n }\n : undefined\n }\n target={(item.target as any)?.spatial || undefined}\n >\n <div data-textual-content={true}>\n <LocaleString enableDangerouslySetInnerHTML>{item.text}</LocaleString>\n </div>\n </HTMLPortal>\n {annotations}\n </>\n );\n })\n : null}\n {strategy.type === 'images' ? (\n <>\n {strategy.images.map((image, idx) => (\n <RenderImage\n isStatic={isStatic}\n key={image.id + idx}\n image={image}\n id={image.id}\n thumbnail={idx === 0 ? thumbnail : undefined}\n selector={image.selector}\n enableSizes={enableSizes}\n onClick={\n onClickPaintingAnnotation\n ? (e) => {\n e.stopPropagation();\n onClickPaintingAnnotation(image.annotationId, image, e);\n }\n : undefined\n }\n />\n ))}\n {annotations}\n </>\n ) : null}\n {strategy.type === '3d-model' ? <Model model={strategy.model} /> : null}\n {strategy.type === 'media' ? (\n <>\n {strategy.media.type === 'Sound' ? (\n <Audio media={strategy.media} mediaControlsDeps={mediaControlsDeps}>\n {thumbnailFallbackImage}\n {renderMediaControls ? renderMediaControls(strategy) : null}\n </Audio>\n ) : strategy.media.type === 'Video' ? (\n <Video media={strategy.media} mediaControlsDeps={mediaControlsDeps}>\n {thumbnailFallbackImage}\n {renderMediaControls ? renderMediaControls(strategy) : null}\n </Video>\n ) : strategy.media.type === 'VideoYouTube' && enableYouTube ? (\n <VideoYouTube media={strategy.media} mediaControlsDeps={mediaControlsDeps}>\n {thumbnailFallbackImage}\n {renderMediaControls ? renderMediaControls(strategy) : null}\n </VideoYouTube>\n ) : null}\n </>\n ) : null}\n {/* This is required to fix a race condition. */}\n </world-object>\n {strategy.type === 'media' && strategy.media.type === 'Sound' && accompanyingCanvas ? (\n <CanvasContext canvas={accompanyingCanvas.id}>\n <RenderCanvas renderViewerControls={renderViewerControls} />\n </CanvasContext>\n ) : null}\n </>\n );\n}\n","import { FC, forwardRef, ForwardRefExoticComponent, ReactNode, RefAttributes, useImperativeHandle } from 'react';\nimport { Viewer } from './Viewer';\nimport { RenderAnnotation } from './render/Annotation';\nimport { RenderAnnotationPage } from './render/AnnotationPage';\nimport { CanvasProps, RenderCanvas } from './render/Canvas';\nimport { RenderImage } from './render/Image';\nimport { CanvasBackground } from './render/CanvasBackground';\nimport { SimpleViewerProvider, useSimpleViewer } from '../viewers/SimpleViewerContext';\nimport { VaultProvider } from '../context/VaultContext';\nimport { useManifest } from '../hooks/useManifest';\nimport { useVisibleCanvases } from '../context/VisibleCanvasContext';\nimport { CanvasContext } from '../context/CanvasContext';\nimport { useExistingVault } from '../hooks/useExistingVault';\nimport { SimpleViewerContext } from '../viewers/SimpleViewerContext.types';\nimport { Audio, AudioHTML } from './render/Audio';\nimport { Video, VideoHTML } from './render/Video';\nimport { Model, ModelHTML } from './render/Model';\nimport { ViewerMode } from '@atlas-viewer/atlas';\n\ninterface CanvasPanelProps {\n manifest: string;\n startCanvas?: string;\n rangeId?: string;\n pagingEnabled?: boolean;\n header?: ReactNode;\n children?: ReactNode;\n mode?: ViewerMode;\n reuseAtlas?: boolean;\n\n // Inner props\n height?: number;\n spacing?: number;\n components?: {\n ViewerControls?: FC;\n MediaControls?: FC;\n };\n\n // Other components\n canvasProps?: Omit<Partial<CanvasProps>, 'x'>;\n annotations?: ReactNode;\n}\n\ninterface InnerProps {\n height?: number;\n canvasProps?: CanvasPanelProps['canvasProps'];\n spacing?: number;\n components?: CanvasPanelProps['components'];\n children?: ReactNode;\n annotations?: ReactNode;\n header?: ReactNode;\n reuseAtlas?: boolean;\n mode?: ViewerMode;\n}\n\nconst Inner = forwardRef<SimpleViewerContext, InnerProps>(function Inner(props, ref) {\n const manifest = useManifest();\n const canvases = useVisibleCanvases();\n const viewer = useSimpleViewer();\n const { ViewerControls, MediaControls } = props.components || {};\n\n useImperativeHandle(ref, () => viewer, [viewer]);\n\n if (!manifest) {\n return <div />;\n }\n\n let accumulator = 0;\n\n return (\n <>\n {props.header}\n <CanvasPanel.Viewer\n key={props.reuseAtlas ? '' : viewer.currentSequenceIndex}\n height={props.height}\n mode={props.mode}\n >\n {canvases.map((canvas, idx) => {\n const margin = accumulator;\n accumulator += canvas.width + (props.spacing || 0);\n return (\n <CanvasContext canvas={canvas.id} key={canvas.id}>\n <CanvasPanel.RenderCanvas\n key={canvas.id}\n strategies={['3d-model', 'media', 'images', 'empty', 'textual-content']}\n renderViewerControls={idx === 0 && ViewerControls ? () => <ViewerControls /> : undefined}\n renderMediaControls={idx === 0 && MediaControls ? () => <MediaControls /> : undefined}\n x={margin}\n {...(props.canvasProps || {})}\n >\n {props.annotations}\n </CanvasPanel.RenderCanvas>\n </CanvasContext>\n );\n })}\n </CanvasPanel.Viewer>\n {props.children}\n </>\n );\n});\n\ntype CanvasPanelType = ForwardRefExoticComponent<CanvasPanelProps & RefAttributes<SimpleViewerContext>> & {\n RenderImage: typeof RenderImage;\n RenderCanvas: typeof RenderCanvas;\n RenderAnnotationPage: typeof RenderAnnotationPage;\n RenderAnnotation: typeof RenderAnnotation;\n Viewer: typeof Viewer;\n CanvasBackground: typeof CanvasBackground;\n Audio: typeof Audio;\n Video: typeof Video;\n Model: typeof Model;\n AudioHTML: typeof AudioHTML;\n VideoHTML: typeof VideoHTML;\n ModelHTML: typeof ModelHTML;\n};\n\nexport const CanvasPanel = forwardRef<SimpleViewerContext, CanvasPanelProps>(function CanvasPanel(\n { children, height, annotations, canvasProps, spacing, header, components, mode, reuseAtlas, ...props },\n ref\n) {\n const vault = useExistingVault();\n\n return (\n <VaultProvider vault={vault}>\n <SimpleViewerProvider {...props}>\n <Inner\n ref={ref}\n height={height}\n components={components}\n spacing={spacing}\n canvasProps={canvasProps}\n annotations={annotations}\n header={header}\n mode={mode}\n reuseAtlas={reuseAtlas}\n >\n {children}\n </Inner>\n </SimpleViewerProvider>\n </VaultProvider>\n );\n}) as CanvasPanelType;\n\nCanvasPanel.RenderImage = RenderImage;\nCanvasPanel.RenderCanvas = RenderCanvas;\nCanvasPanel.RenderAnnotationPage = RenderAnnotationPage;\nCanvasPanel.RenderAnnotation = RenderAnnotation;\nCanvasPanel.Viewer = Viewer;\nCanvasPanel.CanvasBackground = CanvasBackground;\nCanvasPanel.Audio = Audio;\nCanvasPanel.Video = Video;\nCanvasPanel.Model = Model;\nCanvasPanel.AudioHTML = AudioHTML;\nCanvasPanel.VideoHTML = VideoHTML;\nCanvasPanel.ModelHTML = ModelHTML;\n","import { useCanvas } from '@atlas-viewer/atlas';\nimport { CanvasPanel } from '../canvas-panel';\nimport { useAnnotationPageManager } from '../hooks/useAnnotationPageManager';\nimport { useVault } from '../hooks/useVault';\nimport { forwardRef, useImperativeHandle } from 'react';\n\nexport const CanvasAnnotations = forwardRef<ReturnType<typeof useAnnotationPageManager>, { canvasId?: string }>(\n function CanvasAnnotations({ canvasId }, ref) {\n const canvas = useCanvas();\n const pm = useAnnotationPageManager(canvasId || canvas?.id);\n const vault = useVault();\n\n useImperativeHandle(ref, () => pm, [canvasId, canvas]);\n\n if (!canvas || pm.enabledPageIds.length === 0) {\n return null;\n }\n\n return (\n <>\n {pm.enabledPageIds.map((id) => (\n <CanvasPanel.RenderAnnotationPage key={id} page={vault.get(id)} />\n ))}\n </>\n );\n }\n);\n","import { InternationalString } from '@iiif/presentation-3';\nimport { useMemo } from 'react';\nimport { LocaleString } from '../utility/i18n-utils';\n\ntype FacetConfig = {\n id: string;\n label: InternationalString;\n keys: string[];\n values?: FacetConfigValue[];\n};\n\ntype FacetConfigValue = {\n id: string;\n label: InternationalString;\n values: string[];\n key: string;\n};\n\nexport interface MetadataProps {\n config?: FacetConfig[];\n metadata?: Array<{ label: InternationalString; value: InternationalString } | null>;\n labelWidth?: number;\n allowHtml?: boolean;\n showEmptyMessage?: boolean;\n separator?: string;\n\n classes?: {\n container?: string;\n row?: string;\n label?: string;\n value?: string;\n empty?: string;\n };\n\n emptyMessage?: string;\n emptyValueFallback?: string;\n emptyLabelFallback?: string;\n\n // Slots.\n tableHeader?: React.ReactNode;\n tableFooter?: React.ReactNode;\n emptyFallback?: React.ReactNode;\n}\n\nexport function Metadata({\n metadata = [],\n config,\n labelWidth = 16,\n showEmptyMessage = true,\n allowHtml,\n emptyFallback,\n classes = {},\n emptyMessage = 'No metadata available',\n emptyValueFallback = 'No value',\n emptyLabelFallback = '',\n separator,\n tableFooter,\n tableHeader,\n}: MetadataProps) {\n const metadataKeyMap = useMemo(() => {\n const flatKeys = (config || []).reduce((state, i) => {\n return [...state, ...i.keys];\n }, [] as string[]);\n\n const map: { [key: string]: Array<{ label: InternationalString; value: InternationalString }> } = {};\n for (const item of metadata) {\n const labels = item && item.label ? Object.values(item.label) : [];\n for (const label of labels) {\n if (\n label &&\n label.length &&\n (flatKeys.indexOf(`metadata.${label[0]}`) !== -1 || flatKeys.length === 0) &&\n item\n ) {\n const key = `metadata.${label[0]}`;\n map[key] = map[key] ? map[key] : [];\n map[key].push(item);\n break;\n }\n }\n }\n return map;\n }, [config, metadata]);\n\n const isEmpty = Object.keys(metadataKeyMap).length === 0;\n\n if (isEmpty && showEmptyMessage) {\n return <>{emptyFallback}</> || <div className={classes.empty}>{emptyMessage}</div>;\n }\n\n if (config && config.length) {\n return (\n <table className={classes.container}>\n {tableHeader}\n <tbody>\n {config.map((configItem, idx: number) => {\n const values: any[] = [];\n\n for (const key of configItem.keys) {\n for (const item of metadataKeyMap[key] || []) {\n values.push(\n <LocaleString\n key={idx + '__' + key}\n enableDangerouslySetInnerHTML={allowHtml}\n defaultText={emptyValueFallback}\n separator={separator}\n >\n {item.value}\n </LocaleString>\n );\n }\n }\n\n if (values.length === 0) {\n return null;\n }\n\n return (\n <tr className={classes.row} key={idx}>\n <td className={classes.label} style={labelWidth ? { minWidth: labelWidth } : {}}>\n <LocaleString\n enableDangerouslySetInnerHTML={allowHtml}\n separator={separator}\n defaultText={emptyLabelFallback}\n >\n {configItem.label}\n </LocaleString>\n </td>\n <td className={classes.value}>{values}</td>\n </tr>\n );\n })}\n </tbody>\n {tableFooter}\n </table>\n );\n }\n\n return (\n <table className={classes.container}>\n {tableHeader}\n <tbody>\n {metadata && metadata.length\n ? metadata.map((metadataItem, idx: number) => {\n if (!metadataItem) {\n return null; // null items.\n }\n return (\n <tr className={classes.row} key={idx}>\n <td className={classes.label} style={labelWidth ? { minWidth: labelWidth } : {}}>\n <LocaleString\n enableDangerouslySetInnerHTML={allowHtml}\n defaultText={emptyValueFallback}\n separator={separator}\n >\n {metadataItem.label}\n </LocaleString>\n </td>\n <td className={classes.value}>\n <LocaleString\n enableDangerouslySetInnerHTML={allowHtml}\n defaultText={emptyValueFallback}\n separator={separator}\n >\n {metadataItem.value}\n </LocaleString>\n </td>\n </tr>\n );\n })\n : null}\n </tbody>\n {tableFooter}\n </table>\n );\n}\n","import { useMemo } from 'react';\nimport { useManifest } from '../hooks/useManifest';\nimport { Metadata, MetadataProps } from './Metadata';\nimport { useRange } from '../hooks/useRange';\nimport { useCanvas } from '../hooks/useCanvas';\n\ntype CombinedMetadataProps = Omit<MetadataProps, 'metadata'>;\n\nexport function CombinedMetadata(props: CombinedMetadataProps) {\n const manifest = useManifest();\n const canvas = useCanvas();\n const range = useRange();\n\n const metadata = useMemo(() => {\n const metadata = manifest?.metadata || [];\n const canvasMetadata = canvas?.metadata || [];\n const rangeMetadata = range?.metadata || [];\n\n return [...metadata, ...canvasMetadata, ...rangeMetadata];\n }, [manifest, canvas, range]);\n\n return <Metadata metadata={metadata} {...props} />;\n}\n","import {\n RegionParameter,\n RotationParameter,\n createImageServiceRequest,\n imageServiceRequestToString,\n} from '@atlas-viewer/iiif-image-api';\nimport { ImageService, ImageSize } from '@iiif/presentation-3';\nimport { useMemo } from 'react';\n\nexport function useImage(\n service: ImageService | undefined,\n data: {\n size?: Partial<ImageSize>;\n selector?: RegionParameter;\n rotation?: number | RotationParameter;\n format?: string;\n region?: RegionParameter;\n quality?: string;\n } = {},\n deps: any[] = []\n) {\n return useMemo(() => {\n if (!service) {\n return null;\n }\n\n let quality = data.quality;\n\n if (service && service.extraQualities && data.quality) {\n if (!service.extraQualities.includes(data.quality)) {\n console.log('Invalid quality', data.quality, service.extraQualities);\n quality = 'default';\n }\n }\n\n // @todo other validation.\n\n const request = createImageServiceRequest(service);\n const imageId = imageServiceRequestToString({\n identifier: request.identifier,\n server: request.server,\n scheme: request.scheme,\n type: 'image',\n size: {\n max: !data.size?.width && !data.size?.height,\n confined: false,\n upscaled: false,\n ...(data.size || {}),\n },\n format: data.format || 'jpg',\n // This isn't how it should be modelled, always full,\n // region: data.selector ? data.selector : { full: true },\n region: data.region || { full: true },\n rotation: data?.rotation\n ? Number.isInteger(data.rotation)\n ? { angle: data.rotation }\n : (data.rotation as any)\n : { angle: 0 },\n quality: quality || 'default',\n prefix: request.prefix,\n originalPath: (request as any).originalPath,\n });\n\n return imageId;\n }, [...deps]);\n}\n","import { RegionParameter, RotationParameter } from '@atlas-viewer/iiif-image-api';\nimport { ImageService, ImageSize } from '@iiif/presentation-3';\nimport { useEffect, useState } from 'react';\nimport { useImageServiceLoader } from '../context/ImageServiceLoaderContext';\nimport { useImage } from '../hooks/useImage';\n\nexport interface ImageProps {\n src: string | ImageService;\n alt?: string;\n size?: Partial<ImageSize>;\n region?: RegionParameter;\n className?: string;\n style?: React.CSSProperties;\n fetchImageService?: boolean;\n quality?: string;\n rotation?: number | RotationParameter;\n format?: string;\n\n // Later -> make it responsive.\n // responsive?: boolean;\n // sizes?: ImageSize[];\n}\n\nfunction RemoteImage(props: ImageProps) {\n const serviceId = typeof props.src === 'string' ? props.src : props.src.id;\n const imageService = useImageServiceLoader();\n const [isLoaded, setIsLoaded] = useState(false);\n\n let service: ImageService | undefined = undefined;\n\n if (serviceId) {\n const foundService = imageService.loadServiceSync({ id: serviceId } as any);\n if (foundService) {\n service = foundService as ImageService;\n }\n }\n\n if (!service && !isLoaded) {\n imageService.loadService({ id: serviceId } as any).then(() => {\n setIsLoaded(true);\n });\n }\n\n const src = useImage(\n service,\n {\n size: props.size,\n selector: props.region,\n rotation: props.rotation,\n format: props.format,\n region: props.region,\n quality: props.quality,\n },\n [isLoaded, props.src, props.size, props.region, props.rotation, props.format, props.region, props.quality]\n );\n\n useEffect(() => {\n return () => {\n setIsLoaded(false);\n };\n }, [serviceId]);\n\n if (!src) {\n return <Image {...props} fetchImageService={false} />;\n }\n\n return <img src={src} alt={props.alt} className={props.className} style={props.style} />;\n}\n\nexport function Image(props: ImageProps) {\n if (props.fetchImageService) {\n return <RemoteImage {...props} />;\n }\n\n const service = typeof props.src === 'string' ? { id: props.src, profile: 'level0' as const } : props.src;\n const src = useImage(\n service,\n {\n size: props.size,\n selector: props.region,\n rotation: props.rotation,\n format: props.format,\n region: props.region,\n quality: props.quality,\n },\n [props.src, props.size, props.region, props.rotation, props.format, props.region, props.quality]\n );\n\n if (!src) {\n return null;\n }\n\n return <img src={src} alt={props.alt} className={props.className} style={props.style} />;\n}\n","import { useManifest } from '../hooks/useManifest';\nimport { Metadata, MetadataProps } from './Metadata';\n\ntype ManifestMetadataProps = Omit<MetadataProps, 'metadata'>;\n\nexport function ManifestMetadata(props: ManifestMetadataProps) {\n const manifest = useManifest();\n\n return <Metadata metadata={manifest?.metadata || []} {...props} />;\n}\n","(()=>{var e={296:(e,t,r)=>{var o=/^\\s+|\\s+$/g,n=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt,s=\"object\"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,l=\"object\"==typeof self&&self&&self.Object===Object&&self,a=s||l||Function(\"return this\")(),f=Object.prototype.toString,p=Math.max,y=Math.min,d=function(){return a.Date.now()};function b(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function h(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&\"[object Symbol]\"==f.call(e)}(e))return NaN;if(b(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=b(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(o,\"\");var r=i.test(e);return r||c.test(e)?u(e.slice(2),r?2:8):n.test(e)?NaN:+e}e.exports=function(e,t,r){var o,n,i,c,u,s,l=0,a=!1,f=!1,v=!0;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");function m(t){var r=o,i=n;return o=n=void 0,l=t,c=e.apply(i,r)}function O(e){var r=e-s;return void 0===s||r>=t||r<0||f&&e-l>=i}function w(){var e=d();if(O(e))return g(e);u=setTimeout(w,function(e){var r=t-(e-s);return f?y(r,i-(e-l)):r}(e))}function g(e){return u=void 0,v&&o?m(e):(o=n=void 0,c)}function P(){var e=d(),r=O(e);if(o=arguments,n=this,s=e,r){if(void 0===u)return function(e){return l=e,u=setTimeout(w,t),a?m(e):c}(s);if(f)return u=setTimeout(w,t),m(s)}return void 0===u&&(u=setTimeout(w,t)),c}return t=h(t)||0,b(r)&&(a=!!r.leading,i=(f=\"maxWait\"in r)?p(h(r.maxWait)||0,t):i,v=\"trailing\"in r?!!r.trailing:v),P.cancel=function(){void 0!==u&&clearTimeout(u),l=0,o=s=n=u=void 0},P.flush=function(){return void 0===u?c:g(d())},P}},96:(e,t,r)=>{var o=\"Expected a function\",n=NaN,i=\"[object Symbol]\",c=/^\\s+|\\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,a=parseInt,f=\"object\"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,p=\"object\"==typeof self&&self&&self.Object===Object&&self,y=f||p||Function(\"return this\")(),d=Object.prototype.toString,b=Math.max,h=Math.min,v=function(){return y.Date.now()};function m(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function O(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&d.call(e)==i}(e))return n;if(m(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=m(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(c,\"\");var r=s.test(e);return r||l.test(e)?a(e.slice(2),r?2:8):u.test(e)?n:+e}e.exports=function(e,t,r){var n=!0,i=!0;if(\"function\"!=typeof e)throw new TypeError(o);return m(r)&&(n=\"leading\"in r?!!r.leading:n,i=\"trailing\"in r?!!r.trailing:i),function(e,t,r){var n,i,c,u,s,l,a=0,f=!1,p=!1,y=!0;if(\"function\"!=typeof e)throw new TypeError(o);function d(t){var r=n,o=i;return n=i=void 0,a=t,u=e.apply(o,r)}function w(e){var r=e-l;return void 0===l||r>=t||r<0||p&&e-a>=c}function g(){var e=v();if(w(e))return P(e);s=setTimeout(g,function(e){var r=t-(e-l);return p?h(r,c-(e-a)):r}(e))}function P(e){return s=void 0,y&&n?d(e):(n=i=void 0,u)}function j(){var e=v(),r=w(e);if(n=arguments,i=this,l=e,r){if(void 0===s)return function(e){return a=e,s=setTimeout(g,t),f?d(e):u}(l);if(p)return s=setTimeout(g,t),d(l)}return void 0===s&&(s=setTimeout(g,t)),u}return t=O(t)||0,m(r)&&(f=!!r.leading,c=(p=\"maxWait\"in r)?b(O(r.maxWait)||0,t):c,y=\"trailing\"in r?!!r.trailing:y),j.cancel=function(){void 0!==s&&clearTimeout(s),a=0,n=l=i=s=void 0},j.flush=function(){return void 0===s?u:P(v())},j}(e,t,{leading:n,maxWait:t,trailing:i})}},703:(e,t,r)=>{\"use strict\";var o=r(414);function n(){}function i(){}i.resetWarningCache=n,e.exports=function(){function e(e,t,r,n,i,c){if(c!==o){var u=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw u.name=\"Invariant Violation\",u}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:n};return r.PropTypes=r,r}},697:(e,t,r)=>{e.exports=r(703)()},414:e=>{\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,r),i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(e){if(\"object\"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var o={};(()=>{\"use strict\";r.r(o),r.d(o,{LazyLoadComponent:()=>A,LazyLoadImage:()=>ce,trackWindowScroll:()=>M});const e=require(\"react\");var t=r.n(e),n=r(697);const i=require(\"react-dom\");var c=r.n(i);function u(){return\"undefined\"!=typeof window&&\"IntersectionObserver\"in window&&\"isIntersecting\"in window.IntersectionObserverEntry.prototype}function s(e){return s=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s(e)}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function a(e,t,r){return(t=p(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function f(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,p(o.key),o)}}function p(e){var t=function(e,t){if(\"object\"!==s(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,\"string\");if(\"object\"!==s(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(e);return\"symbol\"===s(t)?t:String(t)}function y(e,t){return y=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},y(e,t)}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}var b=function(e){e.forEach((function(e){e.isIntersecting&&e.target.onVisible()}))},h={},v=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&y(e,t)}(v,e);var r,o,n,i,p=(n=v,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=d(n);if(i){var r=d(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&(\"object\"===s(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}(e)}(this,e)});function v(e){var t;if(function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,v),(t=p.call(this,e)).supportsObserver=!e.scrollPosition&&e.useIntersectionObserver&&u(),t.supportsObserver){var r=e.threshold;t.observer=function(e){return h[e]=h[e]||new IntersectionObserver(b,{rootMargin:e+\"px\"}),h[e]}(r)}return t}return r=v,o=[{key:\"componentDidMount\",value:function(){this.placeholder&&this.observer&&(this.placeholder.onVisible=this.props.onVisible,this.observer.observe(this.placeholder)),this.supportsObserver||this.updateVisibility()}},{key:\"componentWillUnmount\",value:function(){this.observer&&this.placeholder&&this.observer.unobserve(this.placeholder)}},{key:\"componentDidUpdate\",value:function(){this.supportsObserver||this.updateVisibility()}},{key:\"getPlaceholderBoundingBox\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props.scrollPosition,t=this.placeholder.getBoundingClientRect(),r=c().findDOMNode(this.placeholder).style,o=parseInt(r.getPropertyValue(\"margin-left\"),10)||0,n=parseInt(r.getPropertyValue(\"margin-top\"),10)||0;return{bottom:e.y+t.bottom+n,left:e.x+t.left+o,right:e.x+t.right+o,top:e.y+t.top+n}}},{key:\"isPlaceholderInViewport\",value:function(){if(\"undefined\"==typeof window||!this.placeholder)return!1;var e=this.props,t=e.scrollPosition,r=e.threshold,o=this.getPlaceholderBoundingBox(t),n=t.y+window.innerHeight,i=t.x,c=t.x+window.innerWidth,u=t.y;return Boolean(u-r<=o.bottom&&n+r>=o.top&&i-r<=o.right&&c+r>=o.left)}},{key:\"updateVisibility\",value:function(){this.isPlaceholderInViewport()&&this.props.onVisible()}},{key:\"render\",value:function(){var e=this,r=this.props,o=r.className,n=r.height,i=r.placeholder,c=r.style,u=r.width;if(i&&\"function\"!=typeof i.type)return t().cloneElement(i,{ref:function(t){return e.placeholder=t}});var s=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({display:\"inline-block\"},c);return void 0!==u&&(s.width=u),void 0!==n&&(s.height=n),t().createElement(\"span\",{className:o,ref:function(t){return e.placeholder=t},style:s},i)}}],o&&f(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),v}(t().Component);v.propTypes={onVisible:n.PropTypes.func.isRequired,className:n.PropTypes.string,height:n.PropTypes.oneOfType([n.PropTypes.number,n.PropTypes.string]),placeholder:n.PropTypes.element,threshold:n.PropTypes.number,useIntersectionObserver:n.PropTypes.bool,scrollPosition:n.PropTypes.shape({x:n.PropTypes.number.isRequired,y:n.PropTypes.number.isRequired}),width:n.PropTypes.oneOfType([n.PropTypes.number,n.PropTypes.string])},v.defaultProps={className:\"\",placeholder:null,threshold:100,useIntersectionObserver:!0};const m=v;var O=r(296),w=r.n(O),g=r(96),P=r.n(g),j=function(e){var t=getComputedStyle(e,null);return t.getPropertyValue(\"overflow\")+t.getPropertyValue(\"overflow-y\")+t.getPropertyValue(\"overflow-x\")};const T=function(e){if(!(e instanceof HTMLElement))return window;for(var t=e;t&&t instanceof HTMLElement;){if(/(scroll|auto)/.test(j(t)))return t;t=t.parentNode}return window};function S(e){return S=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},S(e)}var E=[\"delayMethod\",\"delayTime\"];function L(){return L=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},L.apply(this,arguments)}function _(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,(void 0,n=function(e,t){if(\"object\"!==S(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,\"string\");if(\"object\"!==S(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(o.key),\"symbol\"===S(n)?n:String(n)),o)}var n}function I(e,t){return I=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},I(e,t)}function x(e,t){if(t&&(\"object\"===S(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return R(e)}function R(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function k(e){return k=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},k(e)}var D=function(){return\"undefined\"==typeof window?0:window.scrollX||window.pageXOffset},C=function(){return\"undefined\"==typeof window?0:window.scrollY||window.pageYOffset};const M=function(e){var r=function(r){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&I(e,t)}(a,r);var o,n,i,s,l=(i=a,s=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=k(i);if(s){var r=k(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return x(this,e)});function a(e){var r;if(function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,a),(r=l.call(this,e)).useIntersectionObserver=e.useIntersectionObserver&&u(),r.useIntersectionObserver)return x(r);var o=r.onChangeScroll.bind(R(r));return\"debounce\"===e.delayMethod?r.delayedScroll=w()(o,e.delayTime):\"throttle\"===e.delayMethod&&(r.delayedScroll=P()(o,e.delayTime)),r.state={scrollPosition:{x:D(),y:C()}},r.baseComponentRef=t().createRef(),r}return o=a,(n=[{key:\"componentDidMount\",value:function(){this.addListeners()}},{key:\"componentWillUnmount\",value:function(){this.removeListeners()}},{key:\"componentDidUpdate\",value:function(){\"undefined\"==typeof window||this.useIntersectionObserver||T(c().findDOMNode(this.baseComponentRef.current))!==this.scrollElement&&(this.removeListeners(),this.addListeners())}},{key:\"addListeners\",value:function(){\"undefined\"==typeof window||this.useIntersectionObserver||(this.scrollElement=T(c().findDOMNode(this.baseComponentRef.current)),this.scrollElement.addEventListener(\"scroll\",this.delayedScroll,{passive:!0}),window.addEventListener(\"resize\",this.delayedScroll,{passive:!0}),this.scrollElement!==window&&window.addEventListener(\"scroll\",this.delayedScroll,{passive:!0}))}},{key:\"removeListeners\",value:function(){\"undefined\"==typeof window||this.useIntersectionObserver||(this.scrollElement.removeEventListener(\"scroll\",this.delayedScroll),window.removeEventListener(\"resize\",this.delayedScroll),this.scrollElement!==window&&window.removeEventListener(\"scroll\",this.delayedScroll))}},{key:\"onChangeScroll\",value:function(){this.useIntersectionObserver||this.setState({scrollPosition:{x:D(),y:C()}})}},{key:\"render\",value:function(){var r=this.props,o=(r.delayMethod,r.delayTime,function(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(r,E)),n=this.useIntersectionObserver?null:this.state.scrollPosition;return t().createElement(e,L({forwardRef:this.baseComponentRef,scrollPosition:n},o))}}])&&_(o.prototype,n),Object.defineProperty(o,\"prototype\",{writable:!1}),a}(t().Component);return r.propTypes={delayMethod:n.PropTypes.oneOf([\"debounce\",\"throttle\"]),delayTime:n.PropTypes.number,useIntersectionObserver:n.PropTypes.bool},r.defaultProps={delayMethod:\"throttle\",delayTime:300,useIntersectionObserver:!0},r};function N(e){return N=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},N(e)}function B(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,(void 0,n=function(e,t){if(\"object\"!==N(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,\"string\");if(\"object\"!==N(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(o.key),\"symbol\"===N(n)?n:String(n)),o)}var n}function V(e,t){return V=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},V(e,t)}function W(e){return W=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},W(e)}var z=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&V(e,t)}(u,e);var r,o,n,i,c=(n=u,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=W(n);if(i){var r=W(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&(\"object\"===N(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}(e)}(this,e)});function u(e){return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,u),c.call(this,e)}return r=u,(o=[{key:\"render\",value:function(){return t().createElement(m,this.props)}}])&&B(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),u}(t().Component);const $=M(z);function U(e){return U=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},U(e)}function q(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,(void 0,n=function(e,t){if(\"object\"!==U(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,\"string\");if(\"object\"!==U(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(o.key),\"symbol\"===U(n)?n:String(n)),o)}var n}function F(e,t){return F=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},F(e,t)}function H(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function Y(e){return Y=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Y(e)}var X=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&F(e,t)}(s,e);var r,o,n,i,c=(n=s,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=Y(n);if(i){var r=Y(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&(\"object\"===U(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return H(e)}(this,e)});function s(e){var t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,s),t=c.call(this,e);var r=e.afterLoad,o=e.beforeLoad,n=e.scrollPosition,i=e.visibleByDefault;return t.state={visible:i},i&&(o(),r()),t.onVisible=t.onVisible.bind(H(t)),t.isScrollTracked=Boolean(n&&Number.isFinite(n.x)&&n.x>=0&&Number.isFinite(n.y)&&n.y>=0),t}return r=s,(o=[{key:\"componentDidUpdate\",value:function(e,t){t.visible!==this.state.visible&&this.props.afterLoad()}},{key:\"onVisible\",value:function(){this.props.beforeLoad(),this.setState({visible:!0})}},{key:\"render\",value:function(){if(this.state.visible)return this.props.children;var e=this.props,r=e.className,o=e.delayMethod,n=e.delayTime,i=e.height,c=e.placeholder,s=e.scrollPosition,l=e.style,a=e.threshold,f=e.useIntersectionObserver,p=e.width;return this.isScrollTracked||f&&u()?t().createElement(m,{className:r,height:i,onVisible:this.onVisible,placeholder:c,scrollPosition:s,style:l,threshold:a,useIntersectionObserver:f,width:p}):t().createElement($,{className:r,delayMethod:o,delayTime:n,height:i,onVisible:this.onVisible,placeholder:c,style:l,threshold:a,width:p})}}])&&q(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),s}(t().Component);X.propTypes={afterLoad:n.PropTypes.func,beforeLoad:n.PropTypes.func,useIntersectionObserver:n.PropTypes.bool,visibleByDefault:n.PropTypes.bool},X.defaultProps={afterLoad:function(){return{}},beforeLoad:function(){return{}},useIntersectionObserver:!0,visibleByDefault:!1};const A=X;function G(e){return G=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},G(e)}var J=[\"afterLoad\",\"beforeLoad\",\"delayMethod\",\"delayTime\",\"effect\",\"placeholder\",\"placeholderSrc\",\"scrollPosition\",\"threshold\",\"useIntersectionObserver\",\"visibleByDefault\",\"wrapperClassName\",\"wrapperProps\"];function K(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function Q(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?K(Object(r),!0).forEach((function(t){Z(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):K(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Z(e,t,r){return(t=re(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ee(){return ee=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},ee.apply(this,arguments)}function te(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,re(o.key),o)}}function re(e){var t=function(e,t){if(\"object\"!==G(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,\"string\");if(\"object\"!==G(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(e);return\"symbol\"===G(t)?t:String(t)}function oe(e,t){return oe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},oe(e,t)}function ne(e){return ne=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ne(e)}var ie=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&oe(e,t)}(u,e);var r,o,n,i,c=(n=u,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=ne(n);if(i){var r=ne(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&(\"object\"===G(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}(e)}(this,e)});function u(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,u),(t=c.call(this,e)).state={loaded:!1},t}return r=u,(o=[{key:\"onImageLoad\",value:function(){var e=this;return this.state.loaded?null:function(t){e.props.onLoad(t),e.props.afterLoad(),e.setState({loaded:!0})}}},{key:\"getImg\",value:function(){var e=this.props,r=(e.afterLoad,e.beforeLoad,e.delayMethod,e.delayTime,e.effect,e.placeholder,e.placeholderSrc,e.scrollPosition,e.threshold,e.useIntersectionObserver,e.visibleByDefault,e.wrapperClassName,e.wrapperProps,function(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(e,J));return t().createElement(\"img\",ee({},r,{onLoad:this.onImageLoad()}))}},{key:\"getLazyLoadImage\",value:function(){var e=this.props,r=e.beforeLoad,o=e.className,n=e.delayMethod,i=e.delayTime,c=e.height,u=e.placeholder,s=e.scrollPosition,l=e.style,a=e.threshold,f=e.useIntersectionObserver,p=e.visibleByDefault,y=e.width;return t().createElement(A,{beforeLoad:r,className:o,delayMethod:n,delayTime:i,height:c,placeholder:u,scrollPosition:s,style:l,threshold:a,useIntersectionObserver:f,visibleByDefault:p,width:y},this.getImg())}},{key:\"getWrappedLazyLoadImage\",value:function(e){var r=this.props,o=r.effect,n=r.height,i=r.placeholderSrc,c=r.width,u=r.wrapperClassName,s=r.wrapperProps,l=this.state.loaded,a=l?\" lazy-load-image-loaded\":\"\",f=l||!i?{}:{backgroundImage:\"url(\".concat(i,\")\"),backgroundSize:\"100% 100%\"};return t().createElement(\"span\",ee({className:u+\" lazy-load-image-background \"+o+a,style:Q(Q({},f),{},{color:\"transparent\",display:\"inline-block\",height:n,width:c})},s),e)}},{key:\"render\",value:function(){var e=this.props,t=e.effect,r=e.placeholderSrc,o=e.visibleByDefault,n=e.wrapperClassName,i=e.wrapperProps,c=this.getLazyLoadImage();return(t||r)&&!o||n||i?this.getWrappedLazyLoadImage(c):c}}])&&te(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),u}(t().Component);ie.propTypes={onLoad:n.PropTypes.func,afterLoad:n.PropTypes.func,beforeLoad:n.PropTypes.func,delayMethod:n.PropTypes.string,delayTime:n.PropTypes.number,effect:n.PropTypes.string,placeholderSrc:n.PropTypes.string,threshold:n.PropTypes.number,useIntersectionObserver:n.PropTypes.bool,visibleByDefault:n.PropTypes.bool,wrapperClassName:n.PropTypes.string,wrapperProps:n.PropTypes.object},ie.defaultProps={onLoad:function(){},afterLoad:function(){return{}},beforeLoad:function(){return{}},delayMethod:\"throttle\",delayTime:300,effect:\"\",placeholderSrc:null,threshold:100,useIntersectionObserver:!0,visibleByDefault:!1,wrapperClassName:\"\"};const ce=ie})(),module.exports=o})();","function k(e, r, i = [], x = !1, d = []) {\n if (d.length && (r = r.filter((t) => d.indexOf(t) === -1)), !r || r.length === 0)\n return;\n if (r.length === 1)\n return r[0];\n if (!e)\n return r.indexOf(\"none\") !== -1 ? \"none\" : r[0];\n if (r.indexOf(e) !== -1)\n return e;\n const c = e.indexOf(\"-\") !== -1 ? e.slice(0, e.indexOf(\"-\")) : null;\n if (c && r.indexOf(c) !== -1)\n return c;\n for (const t of i)\n if (r.indexOf(t) !== -1)\n return t;\n if (!x && e) {\n const s = r.map((n) => n.indexOf(\"-\") !== -1 ? n.slice(0, n.indexOf(\"-\")) : null).indexOf(e);\n if (s !== -1)\n return r[s];\n for (const n of i) {\n const O = n.indexOf(\"-\") !== -1 ? n.slice(0, n.indexOf(\"-\")) : null, f = O ? r.indexOf(O) : -1;\n if (f !== -1)\n return r[f];\n }\n }\n return r.indexOf(\"none\") !== -1 ? \"none\" : r.indexOf(\"@none\") !== -1 ? \"@none\" : r[0];\n}\nfunction l(e, r, i = {}) {\n const {\n strictFallback: x = !1,\n defaultText: d = \"\",\n separator: c = `\n`,\n fallbackLanguages: t = [],\n closest: s,\n skipLanguages: n\n } = i, O = Object.keys(e || {}), f = s ? r : k(r, O, t, x, n);\n if (!e)\n return d;\n if (typeof e == \"string\")\n return e;\n const o = f ? e[f] : void 0;\n if (o && f) {\n if (typeof o == \"string\")\n return o;\n if (o.length === 1 && o[0] === \"\") {\n const v = i.skipLanguages || [];\n return l(e, r, {\n ...i,\n skipLanguages: [...v, f]\n });\n }\n return o.join(c);\n }\n return \"\";\n}\nfunction u(e, r = {}) {\n return l(\n e,\n r.language || (typeof navigator < \"u\" ? navigator.language : \"en\"),\n r\n );\n}\nexport {\n l as buildLocaleString,\n k as getClosestLanguage,\n u as getValue\n};\n//# sourceMappingURL=i18n.mjs.map\n","import { useThumbnail } from '../hooks/useThumbnail';\nimport { useCanvas } from '../hooks/useCanvas';\nimport { LazyLoadComponent as _LazyLoadComponent, LazyLoadImageProps } from 'react-lazy-load-image-component';\nimport { LocaleString } from '../utility/i18n-utils';\nimport { SizeParameter } from '@atlas-viewer/iiif-image-api';\nimport { CanvasContext } from '../context/CanvasContext';\nimport { getValue } from '@iiif/helpers/i18n';\nimport { FC, ReactNode } from 'react';\n\nconst LazyLoadComponent = _LazyLoadComponent as FC<LazyLoadImageProps & { children: ReactNode }>;\n\ninterface SingleCanvasThumbnailProps {\n canvasId?: string;\n size?: Partial<SizeParameter>;\n visible?: boolean;\n alt?: string;\n dereference?: boolean;\n\n // Style\n figure?: boolean;\n showLabel?: boolean;\n classes?: {\n figure?: string;\n img?: string;\n label?: string;\n imageWrapper?: string;\n };\n\n // Slots.\n placeholder?: React.ReactNode;\n fallback?: React.ReactNode;\n}\n\nexport function SingleCanvasThumbnail(props: SingleCanvasThumbnailProps) {\n const { size, visible, classes, canvasId, figure } = props;\n const width = size?.width || 128;\n const height = size?.height || size?.width || 128;\n\n const inner = <Inner {...props} />;\n\n const lazy = (\n <LazyLoadComponent threshold={300} style={{ height, width }} visibleByDefault={visible}>\n {canvasId ? <CanvasContext canvas={canvasId}>{inner}</CanvasContext> : inner}\n </LazyLoadComponent>\n );\n\n if (figure) {\n return <figure className={classes?.figure}>{lazy}</figure>;\n }\n\n return lazy;\n}\n\nfunction Inner({ fallback, size, classes, showLabel, alt, dereference = false }: SingleCanvasThumbnailProps) {\n const canvas = useCanvas();\n const width = size?.width || 128;\n const height = size?.height || size?.width || 128;\n const imageAlt = alt || getValue(canvas?.label) || '';\n\n const thumbnail = useThumbnail({ width, height }, dereference);\n\n if (!thumbnail || thumbnail.type !== 'fixed') {\n return <>{fallback}</>;\n }\n\n return (\n <>\n <div className={classes?.imageWrapper}>\n <img className={classes?.img} src={thumbnail.id} alt={imageAlt} />\n </div>\n {showLabel ? (\n <LocaleString as=\"figcaption\" className={classes?.label}>\n {canvas?.label}\n </LocaleString>\n ) : null}\n </>\n );\n}\n","import { useLayoutEffect, useRef } from 'react';\nimport { useSimpleViewer } from '../viewers/SimpleViewerContext';\nimport { useCanvasSequence } from '../viewers/SimpleViewerContext.hooks';\nimport { SingleCanvasThumbnail } from './SingleCanvasThumbnail';\n\ninterface SequenceThumbnailsProps {\n flat?: boolean;\n size?: { width: number; height?: number };\n classes?: {\n container?: string;\n row?: string;\n item?: string;\n\n // SingleCanvasThumbnail\n figure?: string;\n imageWrapper?: string;\n img?: string;\n label?: string;\n\n selected?: {\n row?: string;\n item?: string;\n figure?: string;\n img?: string;\n label?: string;\n imageWrapper?: string;\n };\n };\n\n figure?: boolean;\n showLabel?: boolean;\n // Slots\n fallback?: React.ReactNode;\n}\n\nexport function SequenceThumbnails({ flat, size, classes = {}, showLabel, figure, fallback }: SequenceThumbnailsProps) {\n const container = useRef<HTMLDivElement>(null);\n const { items, sequence, currentSequenceIndex, setSequenceIndex } = useSimpleViewer();\n const selected = {\n row: classes.selected?.row || classes.row,\n item: classes.selected?.item || classes.item,\n figure: classes.selected?.figure || classes.figure,\n img: classes.selected?.img || classes.img,\n label: classes.selected?.label || classes.label,\n imageWrapper: classes.selected?.imageWrapper || classes.imageWrapper,\n };\n\n useLayoutEffect(() => {\n if (!container.current) {\n return;\n }\n\n const selected = container.current.querySelector(`[data-selected=true]`);\n if (selected) {\n selected.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n }\n }, [currentSequenceIndex]);\n\n const components = [];\n for (const row of sequence) {\n const rowComponents = [];\n const isSelected = sequence[currentSequenceIndex] === row;\n for (const canvasIdx of row) {\n const canvas = items[canvasIdx];\n rowComponents.push(\n <div key={canvasIdx} className={isSelected ? selected.item : classes.item}>\n <SingleCanvasThumbnail\n classes={isSelected ? selected : classes}\n canvasId={canvas.id}\n size={size}\n showLabel={showLabel}\n figure={figure}\n placeholder={<div style={{ height: 128, width: 128 }} />}\n fallback={fallback}\n />\n </div>\n );\n }\n if (flat) {\n components.push(rowComponents);\n continue;\n }\n components.push(\n <div\n onClick={(e) => {\n setSequenceIndex(sequence.indexOf(row));\n }}\n data-selected={isSelected}\n className={isSelected ? selected.row : classes.row}\n >\n {rowComponents}\n </div>\n );\n }\n\n return (\n <div ref={container} className={classes.container}>\n {components}\n </div>\n );\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function AnnotationContext({ annotation, children }: { annotation: string; children: ReactNode }) {\n return <ResourceProvider value={{ annotation }}>{children}</ResourceProvider>;\n}\n","import React, { ReactNode } from 'react';\nimport { ResourceProvider } from './ResourceContext';\n\nexport function AnnotationPageContext({ annotationPage, children }: { annotationPage: string; children: ReactNode }) {\n return <ResourceProvider value={{ annotationPage }}>{children}</ResourceProvider>;\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function CollectionContext({ collection, children }: { collection: string; children: ReactNode }) {\n return <ResourceProvider value={{ collection }}>{children}</ResourceProvider>;\n}\n","// This works under a canvas context\n// The canvas must have a duration\n// When given a timestamp (ms) from the canvas clock will return a list of annotations\n// that need to be painted.\nimport { AnnotationNormalized } from '@iiif/presentation-3-normalized';\nimport { usePaintingAnnotations } from './usePaintingAnnotations';\n\nexport function useAnnotationsAtTime(time: number, options: { canvasId?: string } = {}): AnnotationNormalized[] {\n const allAnnotations = usePaintingAnnotations(options);\n\n // @todo filter.\n\n return allAnnotations;\n}\n","// This will be valid under a canvas.\n// It will be an interface for controlling a virtual clock.\n// It will take in some configuration, like frequency\n// and return some data, like current time\n// It will also provide some methods, like high performance syncing for media\n// And it will also have some basic hooks into the HTML audio/video elements to sync those.\n// Other methods for controlling the clock would be:\n// - set current time\n// - fast forward\n// - rewind\n// - set playback speed\n//\n// Other hooks might come out for priority updates. Like: useLowPriorityCanvasClock(), which will update at a preset\n// lower tick rate.\n\nexport function useCanvasClock(canvasId?: string, autoplay = false) {\n /*\n const canvas = useCanvas(canvasId ? { id: canvasId } : undefined);\n if (!canvas || typeof canvas.duration === 'undefined') {\n throw new Error('Unsupported or undefined canvas');\n }\n\n const update = useUpdate();\n const [lastCall, setLastCall] = useState(0);\n const [currentTime, setCurrentTime] = useState(0);\n\n const [loopStop, loopStart, isActive] = useRafLoop((time) => {\n const timeInSeconds = lastCall === 0 ? 0 : (time - lastCall) / 1000;\n if (currentTime + timeInSeconds < canvas.duration) {\n setCurrentTime((t) => t + timeInSeconds);\n } else {\n setCurrentTime(canvas.duration);\n loopStop();\n }\n setLastCall(time);\n }, autoplay);\n\n const play = useCallback(() => {\n if (currentTime === canvas.duration) {\n setCurrentTime(0);\n setLastCall(0);\n }\n loopStart();\n update();\n }, [currentTime, loopStart, update]);\n\n const pause = useCallback(() => {\n loopStop();\n update();\n }, [loopStop, update]);\n\n return {\n isPlaying: isActive(),\n currentTime,\n duration: canvas.duration,\n play,\n pause,\n seek: setCurrentTime,\n };\n\n */\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { Reference } from '@iiif/presentation-3';\nimport { useVaultSelector } from './useVaultSelector';\nimport { IIIFStore } from '@iiif/helpers/vault';\n\nexport function useCanvasSubset(idsOrRefs?: Array<string | Reference>): Reference<'Canvas'>[] {\n const ctx = useResourceContext();\n const manifestId = ctx.manifest;\n const refs = idsOrRefs ? idsOrRefs.map((item) => (typeof item === 'string' ? item : item?.id)) : [];\n return useVaultSelector(\n (s: IIIFStore) => {\n const manifest = manifestId ? s.iiif.entities.Manifest[manifestId] : undefined;\n const items = manifest?.items || [];\n\n if (typeof idsOrRefs === 'undefined') {\n return items;\n }\n\n const newItems = [];\n for (const item of manifest?.items || []) {\n if (refs.indexOf(item.id) !== -1) {\n newItems.push(item);\n }\n }\n\n return newItems;\n },\n [refs.join('/')]\n );\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { CollectionNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useCollection(options: { id: string }): CollectionNormalized | undefined;\nexport function useCollection<T>(\n options: { id: string; selector: (collection: CollectionNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useCollection<T = CollectionNormalized>(\n options: {\n id?: string;\n selector?: (collection: CollectionNormalized) => T;\n },\n deps: any[] = []\n): CollectionNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const collectionId = id ? id : ctx.collection;\n\n const collection = useVaultSelector(\n (s) => (collectionId ? s.iiif.entities.Collection[collectionId] : undefined),\n [collectionId]\n );\n\n return useMemo(() => {\n if (!collection) {\n return undefined;\n }\n if (selector) {\n return selector(collection);\n }\n return collection;\n }, [collection, selector, ...deps]);\n}\n","import { Reference } from '@iiif/presentation-3';\nimport { useVault } from './useVault';\nimport { useEffect, useMemo } from 'react';\nimport { createEventsHelper } from '@iiif/helpers/events';\n\ntype SupportedEvents = 'onClick';\n\nexport function useEventListener<T>(\n resource: Reference,\n name: SupportedEvents,\n listener: (e: any, resource: T) => void,\n scope?: string[],\n deps: any[] = []\n) {\n const vault = useVault();\n const helper = useMemo(() => createEventsHelper(vault), [vault]);\n\n useEffect(() => {\n const currentResource = resource;\n if (!currentResource) {\n return () => {\n //\n };\n }\n helper.addEventListener(currentResource, name, listener, scope);\n return () => {\n helper.removeEventListener(currentResource, name, listener);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [helper, resource, name, ...deps]);\n}\n","import { CollectionNormalized } from '@iiif/presentation-3-normalized';\nimport { ResourceRequestOptions, useExternalResource } from './useExternalResource';\n\nexport function useExternalCollection(\n idOrRef: string | { id: string; type: string },\n options?: ResourceRequestOptions\n): {\n id: string;\n requestId: string;\n isLoaded: boolean;\n cached?: boolean;\n error: any;\n manifest?: CollectionNormalized;\n} {\n const { id, isLoaded, error, resource, requestId, cached } = useExternalResource<CollectionNormalized>(\n idOrRef,\n options\n );\n\n return { id, isLoaded, error, manifest: resource, requestId, cached };\n}\n","import { usePaintingAnnotations } from './usePaintingAnnotations';\nimport { getImageServices } from '@atlas-viewer/iiif-image-api';\nimport { useCanvas } from './useCanvas';\nimport { useVault } from './useVault';\nimport { IIIFExternalWebResource, ImageService } from '@iiif/presentation-3';\nimport { useImageServiceLoader } from '../context/ImageServiceLoaderContext';\nimport { useEffect, useMemo, useState } from 'react';\n\nexport interface ImageServiceRequestOptions {\n cacheKey?: string;\n}\n\n/**\n * Returns the First image service on the current canvas.\n *\n * @note It is better to use the hook useRenderingStrategy for rendering.\n */\nexport function useImageService({ cacheKey }: ImageServiceRequestOptions = {}): {\n data: ImageService | undefined;\n isFetching: boolean;\n status: 'error' | 'success' | 'loading' | 'idle';\n} {\n const canvas = useCanvas();\n const annotations = usePaintingAnnotations();\n const vault = useVault();\n const imageService = useImageServiceLoader();\n const [_data, setData] = useState<ImageService | undefined>(undefined);\n const [isFetching, setIsFetching] = useState(false);\n const [status, setStatus] = useState<'error' | 'success' | 'loading' | 'idle'>('idle');\n const [error, setError] = useState<Error | undefined>(undefined);\n const key = canvas ? canvas.id : 'undefined';\n const initialData = useMemo(() => {\n try {\n if (canvas && annotations.length) {\n const annotation = annotations[0];\n const resource = vault.get(annotation.body[0]);\n const imageServices = getImageServices(resource as any);\n const firstImageService = imageServices[0];\n\n if (!firstImageService) {\n return undefined;\n }\n\n return (\n imageService.loadServiceSync({\n id: firstImageService.id || (firstImageService['@id'] as string),\n width: firstImageService.width || canvas.width,\n height: firstImageService.height || canvas.height,\n }) || undefined\n );\n }\n } catch (e) {\n console.error(e);\n // silent error.\n }\n\n return undefined;\n\n // This is specifically not exhaustive. We only want to try to loadSync initially or when the canvas changes.\n }, [key, cacheKey, canvas]);\n\n const data = status === 'success' && _data ? _data : initialData;\n\n useEffect(() => {\n (async () => {\n try {\n if (canvas && annotations.length) {\n const annotation = annotations[0];\n const resource = vault.get(annotation.body[0]);\n const imageServices = getImageServices(resource as any) as any[];\n const firstImageService = imageServices[0] as any;\n\n if (!firstImageService) {\n return;\n }\n\n setIsFetching(true);\n setStatus('loading');\n\n try {\n const loadedService =\n (await imageService.loadService({\n id: firstImageService.id || firstImageService['@id'],\n width: firstImageService.width || canvas.width,\n height: firstImageService.height || canvas.height,\n })) || undefined;\n\n setData(loadedService as any);\n setStatus('success');\n setIsFetching(false);\n } catch (err) {\n setStatus('error');\n setError(err as Error);\n }\n }\n } catch (err) {\n setStatus('error');\n setError(err as Error);\n }\n })();\n\n // It's important that this DOESN'T refresh every time there is a new canvas change.\n // In an editing situation, the cache key should be used.\n }, [key, cacheKey]);\n\n return useMemo(() => {\n return {\n data,\n isFetching,\n status,\n error,\n } as any;\n }, [data, isFetching, status, error]);\n}\n","import { useImageService } from './useImageService';\nimport { ImageService } from '@iiif/presentation-3';\n\nexport function useImageTile() {\n const imageService = useImageService();\n\n return {\n isLoading: imageService.isFetching,\n tile: imageService.data\n ? {\n id: imageService.data.id || imageService.data['@id'],\n width: imageService.data.width,\n height: imageService.data.height,\n imageService: imageService.data as ImageService,\n thumbnail: undefined,\n }\n : null,\n };\n}\n","// This works inside of a manifest context\n// Final API to be decided, but this hook will be for driving search querying itself\n// Another hook/context will handle actually getting the search results for a particular canvas\nimport { useManifest } from './useManifest';\nimport { SearchService } from '@iiif/presentation-3';\nimport { ServiceNormalized } from '@iiif/presentation-3-normalized';\n\nexport function useSearchService(): SearchService | undefined {\n const manifest = useManifest();\n return manifest\n ? (manifest.service.find(\n (service: ServiceNormalized) =>\n service.profile === 'SearchService1' || service.profile === 'http://iiif.io/api/search/1/search'\n ) as any)\n : undefined;\n}\n","import { useVault } from './useVault';\nimport { createStylesHelper } from '@iiif/helpers/styles';\nimport { useMemo } from 'react';\n\nexport function useStyleHelper() {\n const vault = useVault();\n return useMemo(() => createStylesHelper(vault), [vault]);\n}\n"],"names":["ErrorBoundaryContext","createContext","initialState","ErrorBoundary","Component","props","error","_this$props$onReset","_this$props","_len","args","_key","info","_this$props$onError","_this$props2","prevProps","prevState","didCatch","resetKeys","hasArrayChanged","_this$props$onReset2","_this$props3","children","fallbackRender","FallbackComponent","fallback","childToRender","createElement","isValidElement","a","b","item","index","defaultResourceContext","ResourceReactContext","React","useResourceContext","useContext","ResourceProvider","value","parentContext","newContext","useMemo","ReactVaultContext","vault","VaultProvider","vaultOptions","useGlobal","resources","vaultInstance","setVaultInstance","useState","globalVault","Vault","useExistingVault","oldContext","useExternalResource","idOrRef","noCache","id","realId","setRealId","setError","initialData","resource","setResource","useEffect","fetchedResource","_realId","err","useExternalManifest","options","isLoaded","requestId","cached","ManifestContext","manifest","CanvasContext","canvas","useVault","useVaultSelector","selector","deps","selectedState","setSelectedState","s","VisibleCanvasReactContext","useVisibleCanvases","ids","state","useManifest","ctx","manifestId","RangeContext","range","findFirstCanvasFromRange","inner","found","findAllCanvasesInRange","_a","sourceId","findManifestSelectedRange","canvasId","findSelectedRange","parsedId","_b","_c","getVisibleCanvasesFromCanvasId","manifestOrRange","preventPaged","behavior","fullCanvas","canvasBehavior","isPaged","isContinuous","isIndividuals","isCanvasFacingPages","isCanvasNonPaged","manifestItems","ordering","getManifestSequence","canvasIndex","r","indexes","disablePaging","skipNonPaged","_","currentOrdering","flush","offset","flushNextPaged","i","useRange","rangeId","useCanvasSequence","startCanvas","cursor","setCursor","rangeOrManifest","items","initialSequence","setCanvasIndex","useCallback","foundSequence","setCanvasId","foundIndex","next","previous","idx","noop","SimpleViewerReactContext","InnerViewerProvider","visibleItems","sequence","setSequenceIndex","hasNext","hasPrevious","jsx","SimpleViewerProvider","useSimpleViewer","useContextBridge","ContextBridge","E","t","n","R","o","c","A","T","e","M","D","O","S","I","U","f","C","N","d","u","J","useDispatch","store","action","isVaultActivated","obj","useVirtualAnnotationPage","sources","useRef","dispatch","virtualId","useLayoutEffect","page","entityActions","fullPage","addAnnotation","atIndex","display","full","annotation","removeAnnotation","VirtualAnnotationPageContext","useVirtualAnnotationPageContext","VirtualAnnotationProvider","DefaultCanvasFallback","width","style","height","resetErrorBoundary","jsxs","ViewerPresetContext","useViewerPreset","SetOverlaysReactContext","SetPortalReactContext","useOverlay","type","key","element","setOverlay","useCanvas","WorldSizeContext","useWorldSize","size","fn","Viewer","errorFallback","outerContainerProps","_worldScale","viewerPreset","setViewerPreset","bridge","ErrorFallback","overlays","setOverlays","overlayComponents","portals","setPortals","portalComponents","worldSizes","setWorldSizes","worldScale","runtimeOptions","updateWorldSize","sizes","rest","updateOverlay","prev","updatePortal","fallbackProps","AtlasAuto","Fragment","Element","preset","ModeContext","l","g","useResourceEvents","scope","helper","createEventsHelper","hooks","useStyles","createStylesHelper","styles","useAnnotation","annotationId","body","singleBody","newAnnotation","expandTarget","RenderAnnotation","defaultStyle","className","interactive","html","events","allStyles","mergeStyles","RegionHighlight","useAnnotationPage","annotationPageId","annotationPage","RenderAnnotationPage","_page","RenderImage","image","thumbnail","isStatic","x","y","onClick","enableSizes","crop","TileSet","parseSpecificResource","getParsedTargetSelector","target","imageTarget","source","defaultTarget","emptyActions","unknownResponse","unsupportedStrategy","reason","emptyStrategy","getMeta","resourceId","resourceMeta","useEnabledAnnotationPageIds","availablePageIds","pageIds","allAnnotationListIds","annotationListId","annotationListMeta","flattenAnnotationPageIds","all","canvases","foundIds","canvas_","useAnnotationPageManager","enabledPageIds","setPageDisabled","deselectId","existingResources","setPageEnabled","opt","toDeselect","useResources","ImageServiceLoaderContext","ImageServiceLoader","useImageServiceLoader","useLoadImageService","loader","imageServiceStatus","setImageServiceStatus","didUnmount","imageService","imageServiceId","syncLoaded","usePaintingAnnotations","annotationPages","flatAnnotations","w","m","P","p","V","usePaintables","createPaintingAnnotationsHelper","paintingAnnotations","enabledChoices","setEnabledChoices","paintables","actions","deselectOthers","deselect","prevChoices","without","defaultId","newChoices","supportedFormats","get3dStrategy","getAudioStrategy","audioResource","getImageStrategy","loadImageService","imageTypes","singleImage","imageServices","getImageServices","imageSelector","imageType","parseType","languageMap","lang","language","getTextualContentStrategy","ytRegex","getVideoStrategy","videoPaintables","noDuration","videoResource","isYouTube","service","media","getRenderingStrategy","supports","mainType","useRenderingStrategy","enabledPages","strategy","useVaultEffect","callback","useThumbnail","request","dereference","createThumbnailHelper","setThumbnail","subject","v","thumb","getDefaultState","duration","reducer","formatTime","time","seconds","useSimpleMediaPlayer","useReducer","currentTime","progress","_isMuted","_updateCurrentTime","play","playPause","pause","toggleMute","mute","unmute","setVolume","newVolume","setDurationPercent","percent","setTime","interval","ended","_media","MediaReactContextState","MediaReactContextActions","MediaReactContextElements","useMediaState","useMediaActions","useMediaElements","MediaPlayerProvider","AudioHTML","Audio","mediaControlsDeps","VideoHTML","Video","ModelHTML","model","Model","name","CanvasBackground","LanguageContext","LanguageProvider","useIIIFLanguage","getLanguagePartFromCode","code","LanguageString","viewingDirection","i18nLanguage","getClosestLanguage","languages","i18nLanguages","root","useClosestLanguage","getLanguages","useLocaleString","inputText","defaultText","separator","candidateText","useCreateLocaleString","LocaleString","enableDangerouslySetInnerHTML","text","VideoYouTubeHTML","player","VideoYouTube","RenderCanvas","onChoiceChange","registerActions","defaultChoices","renderViewerControls","renderMediaControls","viewControlsDeps","strategies","throwOnUnknown","backgroundStyle","alwaysShowBackground","keepCanvasScale","enableYouTube","onClickPaintingAnnotation","elementProps","virtualPage","choice","bestScale","accompanyingCanvas","thumbnailFallbackImage","annotations","totalKey","HTMLPortal","Inner","forwardRef","ref","viewer","ViewerControls","MediaControls","useImperativeHandle","accumulator","CanvasPanel","margin","canvasProps","spacing","header","components","mode","reuseAtlas","CanvasAnnotations","pm","Metadata","metadata","config","labelWidth","showEmptyMessage","allowHtml","emptyFallback","classes","emptyMessage","emptyValueFallback","emptyLabelFallback","tableFooter","tableHeader","metadataKeyMap","flatKeys","map","labels","label","configItem","values","metadataItem","CombinedMetadata","canvasMetadata","rangeMetadata","useImage","data","quality","createImageServiceRequest","imageServiceRequestToString","RemoteImage","serviceId","setIsLoaded","foundService","src","Image","ManifestMetadata","h","j","ce","require$$0","require$$1","L","k","B","W","z","$","q","F","H","Y","X","G","K","Q","Z","re","ee","te","oe","ne","ie","buildModule","LazyLoadComponent","_LazyLoadComponent","SingleCanvasThumbnail","visible","figure","lazy","showLabel","alt","imageAlt","getValue","SequenceThumbnails","flat","container","currentSequenceIndex","selected","_d","_e","_f","row","rowComponents","isSelected","canvasIdx","AnnotationContext","AnnotationPageContext","CollectionContext","collection","useAnnotationsAtTime","useCanvasClock","autoplay","useCanvasSubset","idsOrRefs","refs","newItems","useCollection","collectionId","useEventListener","listener","currentResource","useExternalCollection","useImageService","cacheKey","_data","setData","isFetching","setIsFetching","status","setStatus","firstImageService","loadedService","useImageTile","useSearchService","useStyleHelper"],"mappings":"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","x_google_ignoreList":[0,19,29,45,72,73]}
1
+ {"version":3,"file":"index.mjs","sources":["../../../node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../../../src/context/ResourceContext.tsx","../../../src/context/VaultContext.tsx","../../../src/hooks/useExistingVault.ts","../../../src/hooks/useExternalResource.ts","../../../src/hooks/useExternalManifest.ts","../../../src/context/ManifestContext.tsx","../../../src/context/CanvasContext.tsx","../../../src/hooks/useVault.ts","../../../src/hooks/useVaultSelector.ts","../../../src/context/VisibleCanvasContext.tsx","../../../src/hooks/useManifest.ts","../../../src/context/RangeContext.tsx","../../../src/future-helpers/ranges.ts","../../../src/future-helpers/sequences.ts","../../../src/hooks/useRange.ts","../../../src/viewers/SimpleViewerContext.hooks.ts","../../../src/viewers/SimpleViewerContext.tsx","../../../src/context/ContextBridge.tsx","../../../node_modules/@iiif/helpers/dist/vault-actions/esm/vault-actions.mjs","../../../src/hooks/useDispatch.ts","../../../src/hooks/useVirtualAnnotationPage.ts","../../../src/hooks/useVirtualAnnotationPageContext.tsx","../../../src/canvas-panel/render/DefaultCanvasFallback.tsx","../../../src/context/ViewerPresetContext.tsx","../../../src/canvas-panel/context/overlays.tsx","../../../src/hooks/useCanvas.ts","../../../src/canvas-panel/context/world-size.ts","../../../src/canvas-panel/Viewer.tsx","../../../node_modules/@iiif/helpers/dist/events/esm/events.mjs","../../../src/hooks/useResourceEvents.ts","../../../src/hooks/useStyles.ts","../../../src/hooks/useAnnotation.ts","../../../src/canvas-panel/render/Annotation.tsx","../../../src/hooks/useAnnotationPage.ts","../../../src/canvas-panel/render/AnnotationPage.tsx","../../../src/canvas-panel/render/Image.tsx","../../../src/features/rendering-strategy/rendering-utils.ts","../../../src/hooks/useEnabledAnnotationPageIds.ts","../../../src/utility/flatten-annotation-page-ids.ts","../../../src/hooks/useAnnotationPageManager.ts","../../../src/hooks/useResources.ts","../../../src/context/ImageServiceLoaderContext.tsx","../../../src/hooks/useLoadImageService.ts","../../../src/hooks/usePaintingAnnotations.ts","../../../node_modules/@iiif/helpers/dist/painting-annotations/esm/painting-annotations.mjs","../../../src/hooks/usePaintables.ts","../../../src/features/rendering-strategy/3d-strategy.ts","../../../src/features/rendering-strategy/audio-strategy.ts","../../../src/features/rendering-strategy/image-strategy.ts","../../../src/features/rendering-strategy/textual-content-strategy.ts","../../../src/features/rendering-strategy/video-strategy.ts","../../../src/features/rendering-strategy/get-rendering-strategy.ts","../../../src/hooks/useRenderingStrategy.ts","../../../src/hooks/useVaultEffect.ts","../../../src/hooks/useThumbnail.ts","../../../src/hooks/useSimpleMediaPlayer.ts","../../../src/context/MediaContext.tsx","../../../src/canvas-panel/render/Audio.tsx","../../../src/canvas-panel/render/Video.tsx","../../../src/canvas-panel/render/Model.tsx","../../../src/canvas-panel/render/CanvasBackground.tsx","../../../src/utility/i18n-utils.tsx","../../../src/canvas-panel/render/VideoYouTube.tsx","../../../src/canvas-panel/render/Canvas.tsx","../../../src/canvas-panel/index.tsx","../../../src/components/CanvasAnnotations.tsx","../../../src/components/Metadata.tsx","../../../src/components/CombinedMetadata.tsx","../../../src/hooks/useImage.ts","../../../src/components/Image.tsx","../../../src/components/ManifestMetadata.tsx","../../../node_modules/react-lazy-load-image-component/build/index.js","../../../node_modules/@iiif/helpers/dist/i18n/esm/i18n.mjs","../../../src/components/SingleCanvasThumbnail.tsx","../../../src/components/SequenceThumbnails.tsx","../../../src/context/AnnotationContext.tsx","../../../src/context/AnnotationPageContext.tsx","../../../src/context/CollectionContext.tsx","../../../src/hooks/useAnnotationsAtTime.ts","../../../src/hooks/useCanvasClock.ts","../../../src/hooks/useCanvasSubset.ts","../../../src/hooks/useCollection.ts","../../../src/hooks/useEventListener.ts","../../../src/hooks/useExternalCollection.ts","../../../src/hooks/useImageService.ts","../../../src/hooks/useImageTile.ts","../../../src/hooks/useSearchService.ts","../../../src/hooks/useStyleHelper.ts"],"sourcesContent":["'use client';\nimport { createContext, Component, createElement, isValidElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n didCatch: false,\n error: null\n};\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n this.state = initialState;\n }\n static getDerivedStateFromError(error) {\n return {\n didCatch: true,\n error\n };\n }\n resetErrorBoundary() {\n const {\n error\n } = this.state;\n if (error !== null) {\n var _this$props$onReset, _this$props;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n args,\n reason: \"imperative-api\"\n });\n this.setState(initialState);\n }\n }\n componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n }\n componentDidUpdate(prevProps, prevState) {\n const {\n didCatch\n } = this.state;\n const {\n resetKeys\n } = this.props;\n\n // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n // we'd end up resetting the error boundary immediately.\n // This would likely trigger a second error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n var _this$props$onReset2, _this$props3;\n (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n next: resetKeys,\n prev: prevProps.resetKeys,\n reason: \"keys\"\n });\n this.setState(initialState);\n }\n }\n render() {\n const {\n children,\n fallbackRender,\n FallbackComponent,\n fallback\n } = this.props;\n const {\n didCatch,\n error\n } = this.state;\n let childToRender = children;\n if (didCatch) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n if (typeof fallbackRender === \"function\") {\n childToRender = fallbackRender(props);\n } else if (FallbackComponent) {\n childToRender = createElement(FallbackComponent, props);\n } else if (fallback === null || isValidElement(fallback)) {\n childToRender = fallback;\n } else {\n throw error;\n }\n }\n return createElement(ErrorBoundaryContext.Provider, {\n value: {\n didCatch,\n error,\n resetErrorBoundary: this.resetErrorBoundary\n }\n }, childToRender);\n }\n}\nfunction hasArrayChanged() {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n throw new Error(\"ErrorBoundaryContext not found\");\n }\n}\n\nfunction useErrorBoundary() {\n const context = useContext(ErrorBoundaryContext);\n assertErrorBoundaryContext(context);\n const [state, setState] = useState({\n error: null,\n hasError: false\n });\n const memoized = useMemo(() => ({\n resetBoundary: () => {\n context.resetErrorBoundary();\n setState({\n error: null,\n hasError: false\n });\n },\n showBoundary: error => setState({\n error,\n hasError: true\n })\n }), [context.resetErrorBoundary]);\n if (state.hasError) {\n throw state.error;\n }\n return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n ...props,\n ref\n })));\n\n // Format for display in DevTools\n const name = component.displayName || component.name || \"Unknown\";\n Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n","import React, { ReactNode, useContext, useMemo } from 'react';\n\nconst defaultResourceContext = {\n collection: undefined,\n manifest: undefined,\n range: undefined,\n canvas: undefined,\n annotation: undefined,\n annotationPage: undefined,\n};\n\nexport type ResourceContextType = {\n collection?: string;\n manifest?: string;\n range?: string;\n canvas?: string;\n annotation?: string;\n annotationPage?: string;\n};\n\nexport const ResourceReactContext = React.createContext<ResourceContextType>(defaultResourceContext);\n\nexport const useResourceContext = () => {\n return useContext(ResourceReactContext);\n};\n\nexport function ResourceProvider({ value, children }: { value: ResourceContextType; children: ReactNode }) {\n const parentContext = useResourceContext();\n const newContext = useMemo(() => {\n return {\n ...parentContext,\n ...value,\n };\n }, [value, parentContext]);\n\n return <ResourceReactContext.Provider value={newContext}>{children}</ResourceReactContext.Provider>;\n}\n","import React, { ReactElement, ReactNode, useState } from 'react';\nimport { Vault, VaultOptions, globalVault } from '@iiif/helpers/vault';\nimport { ResourceContextType, ResourceProvider } from './ResourceContext';\n\nexport const ReactVaultContext = React.createContext<{\n vault: Vault | null;\n setVaultInstance: (vault: Vault) => void;\n}>({\n vault: null,\n setVaultInstance: (vault: Vault) => {\n // Do nothing.\n },\n});\n\nexport function VaultProvider({\n vault,\n vaultOptions,\n useGlobal,\n resources,\n children,\n}: {\n vault?: Vault;\n useGlobal?: boolean;\n vaultOptions?: VaultOptions;\n resources?: ResourceContextType;\n children: ReactNode;\n}) {\n const [vaultInstance, setVaultInstance] = useState<Vault>(() => {\n if (vault) {\n return vault;\n }\n if (useGlobal) {\n return globalVault(vaultOptions);\n }\n if (vaultOptions) {\n return new Vault(vaultOptions);\n }\n return new Vault();\n });\n\n return (\n <ReactVaultContext.Provider value={{ vault: vaultInstance, setVaultInstance }}>\n <ResourceProvider value={resources || {}}>{children}</ResourceProvider>\n </ReactVaultContext.Provider>\n );\n}\n","import { globalVault, Vault } from '@iiif/helpers/vault';\nimport { useContext } from 'react';\nimport { ReactVaultContext } from '../context/VaultContext';\n\nexport function useExistingVault(vault?: Vault): Vault {\n const oldContext: any = useContext(ReactVaultContext);\n\n if (vault) {\n return vault;\n }\n\n return oldContext && oldContext.vault ? (oldContext.vault as any) : globalVault();\n}\n","import { useExistingVault } from './useExistingVault';\nimport { useEffect, useMemo, useState } from 'react';\n\nexport type ResourceRequestOptions = {\n noCache?: boolean;\n};\n\nexport function useExternalResource<T extends { id: string }>(\n idOrRef: string | { id: string; type: string },\n { noCache = false }: ResourceRequestOptions = {}\n): {\n id: string;\n requestId: string;\n isLoaded: boolean;\n error: any;\n cached: boolean;\n resource?: T;\n} {\n const id = typeof idOrRef === 'string' ? idOrRef : idOrRef.id;\n const vault = useExistingVault();\n const [realId, setRealId] = useState(id);\n const [error, setError] = useState<Error | undefined>(undefined);\n const initialData = useMemo(() => {\n return vault.get(id, { skipSelfReturn: true }) || undefined;\n }, [id, vault]);\n const [resource, setResource] = useState<T | undefined>(initialData);\n\n useEffect(() => {\n (async () => {\n try {\n const fetchedResource = initialData && !noCache ? initialData : await vault.load<T>(id);\n const _realId = fetchedResource ? fetchedResource.id || (fetchedResource as any)['@id'] : null;\n if (fetchedResource && realId !== _realId) {\n setRealId(_realId);\n }\n\n setResource(fetchedResource);\n } catch (err) {\n setError(err as Error);\n }\n })();\n }, [id, noCache]);\n\n return {\n isLoaded: !!resource,\n id: realId,\n requestId: id,\n error,\n resource,\n cached: !!(resource && resource === initialData),\n };\n}\n","import { ManifestNormalized } from '@iiif/presentation-3-normalized';\nimport { ResourceRequestOptions, useExternalResource } from './useExternalResource';\n\nexport function useExternalManifest(\n idOrRef: string | { id: string; type: string },\n options?: ResourceRequestOptions\n): {\n id: string;\n requestId: string;\n isLoaded: boolean;\n cached?: boolean;\n error: any;\n manifest?: ManifestNormalized;\n} {\n const { id, isLoaded, error, resource, requestId, cached } = useExternalResource<ManifestNormalized>(\n idOrRef,\n options\n );\n\n return { id, isLoaded, error, manifest: resource, requestId, cached };\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function ManifestContext({ manifest, children }: { manifest: string; children: ReactNode }) {\n return <ResourceProvider value={{ manifest }}>{children}</ResourceProvider>;\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function CanvasContext({ canvas, children }: { canvas: string; children: ReactNode }) {\n return <ResourceProvider value={{ canvas }}>{children}</ResourceProvider>;\n}\n","import { ReactVaultContext } from '../context/VaultContext';\nimport { useContext } from 'react';\nimport { Vault } from '@iiif/helpers/vault';\n\nexport const useVault = (): Vault => {\n const { vault } = useContext(ReactVaultContext);\n\n if (vault === null) {\n throw new Error('Vault not found. Ensure you have your provider set up correctly.');\n }\n\n return vault as Vault;\n};\n","import { useVault } from './useVault';\nimport { IIIFStore, Vault } from '@iiif/helpers/vault';\nimport { useEffect, useState } from 'react';\n\nexport function useVaultSelector<T>(selector: (state: IIIFStore, vault: Vault) => T, deps: any[] = []) {\n const vault = useVault();\n const [selectedState, setSelectedState] = useState<T>(() => selector(vault.getState(), vault));\n\n useEffect(() => {\n return vault.subscribe(\n (s) => selector(s, vault),\n (s) => {\n setSelectedState(s);\n },\n false\n );\n }, deps);\n\n return selectedState as T;\n}\n","import { useContext } from 'react';\nimport React from 'react';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { useVaultSelector } from '../hooks/useVaultSelector';\n\nexport const VisibleCanvasReactContext = React.createContext<string[]>([]);\n\nexport function useVisibleCanvases(): CanvasNormalized[] {\n const ids = useContext(VisibleCanvasReactContext);\n\n return useVaultSelector<CanvasNormalized[]>(\n (state) => {\n return ids.map((id) => state.iiif.entities.Canvas[id]).filter(Boolean);\n },\n [ids]\n );\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { ManifestNormalized } from '@iiif/presentation-3-normalized';\nimport { useVault } from './useVault';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useManifest(options?: { id: string }): ManifestNormalized | undefined;\nexport function useManifest<T>(\n options?: { id: string; selector: (manifest: ManifestNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useManifest<T = ManifestNormalized>(\n options: {\n id?: string;\n selector?: (manifest: ManifestNormalized) => T;\n } = {},\n deps: any[] = []\n): ManifestNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const vault = useVault();\n const manifestId = id ? id : ctx.manifest;\n\n const manifest = useVaultSelector(\n (s) => (manifestId ? s.iiif.entities.Manifest[manifestId] : undefined),\n [manifestId]\n );\n\n return useMemo(() => {\n if (!manifest) {\n return undefined;\n }\n if (selector) {\n return selector(manifest);\n }\n return manifest;\n }, [manifest, selector, ...deps]);\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function RangeContext({ range, children }: { range: string; children: ReactNode }) {\n return <ResourceProvider value={{ range }}>{children}</ResourceProvider>;\n}\n","import { Vault } from '@iiif/helpers/vault';\nimport { ManifestNormalized, RangeNormalized } from '@iiif/presentation-3-normalized';\nimport { Reference } from '@iiif/presentation-3';\n\nexport function findFirstCanvasFromRange(vault: Vault, range: RangeNormalized): null | Reference<'Canvas'> {\n for (const inner of range.items) {\n if ((inner as any).type === 'Canvas') {\n return inner as any as Reference<'Canvas'>;\n }\n if (inner.type === 'SpecificResource') {\n return inner.source as Reference<'Canvas'>;\n }\n if (inner.type === 'Range') {\n const found = findFirstCanvasFromRange(vault, vault.get(inner));\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n\nexport function findAllCanvasesInRange(vault: Vault, range: RangeNormalized): Array<Reference<'Canvas'>> {\n const found: Reference<'Canvas'>[] = [];\n for (const inner of range.items) {\n if (inner.type === 'SpecificResource' && inner.source?.type === 'Canvas') {\n if (inner.source.id.indexOf('#') !== -1) {\n found.push({ id: inner.source.id.split('#')[0], type: 'Canvas' });\n } else {\n found.push(inner.source as Reference<'Canvas'>);\n }\n }\n if (inner.type === 'Range') {\n found.push(...findAllCanvasesInRange(vault, vault.get(inner)));\n }\n if ((inner as any).type === 'SpecificResource') {\n const sourceId = typeof (inner as any).source === 'string' ? (inner as any).source : (inner as any).source.id;\n found.push({ id: sourceId, type: 'Canvas' });\n }\n }\n return found;\n}\n\nexport function findManifestSelectedRange(\n vault: Vault,\n manifest: ManifestNormalized,\n canvasId: string\n): null | RangeNormalized {\n for (const range of manifest.structures) {\n const found = findSelectedRange(vault, vault.get(range), canvasId);\n if (found) {\n return found;\n }\n }\n\n return null;\n}\n\nexport function findSelectedRange(vault: Vault, range: RangeNormalized, canvasId: string): null | RangeNormalized {\n for (const inner of range.items) {\n const parsedId = (inner as any)?.source?.id?.split('#')[0];\n if ((inner as any).type === 'SpecificResource' && (inner as any).source === canvasId) {\n return range;\n }\n if (inner.type === 'SpecificResource' && inner.source?.type === 'Canvas' && canvasId === parsedId) {\n return range;\n }\n if (inner.type === 'Range') {\n const found = findSelectedRange(vault, vault.get(inner), canvasId);\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n","import { CanvasNormalized, ManifestNormalized, RangeNormalized } from '@iiif/presentation-3-normalized';\nimport { Reference } from '@iiif/presentation-3';\nimport { Vault } from '@iiif/helpers/vault';\nimport { findAllCanvasesInRange } from './ranges';\n\n/**\n * Get visible canvases from canvas ID\n *\n * This function returns a list of canvas references that should all be displayed\n * when the passed canvasId is visible. This should work for individual items,\n * 2-up paged view and continuous (scrolls).\n *\n * The options are listed below (from IIIF docs)\n *\n * - `unordered` - Valid on Collections, Manifests and Ranges. The Canvases included in resources that have this behavior\n * have no inherent order, and user interfaces should avoid implying an order to the user. Disjoint with individuals,\n * continuous, and paged.\n *\n * - `individuals` - Valid on Collections, Manifests, and Ranges. For Collections that have this behavior, each of the\n * included Manifests are distinct objects in the given order. For Manifests and Ranges, the included Canvases are\n * distinct views, and should not be presented in a page-turning interface. This is the default layout behavior if\n * not specified. Disjoint with unordered, continuous, and paged.\n *\n * - `continuous` Valid on Collections, Manifests and Ranges, which include Canvases that have at least height and\n * width dimensions. Canvases included in resources that have this behavior are partial views and an appropriate\n * rendering might display all of the Canvases virtually stitched together, such as a long scroll split into\n * sections. This behavior has no implication for audio resources. The viewingDirection of the Manifest will\n * determine the appropriate arrangement of the Canvases. Disjoint with unordered, individuals and paged.\n *\n * - `paged` Valid on Collections, Manifests and Ranges, which include Canvases that have at least height and width\n * dimensions. Canvases included in resources that have this behavior represent views that should be presented in\n * a page-turning interface if one is available. The first canvas is a single view (the first recto) and thus the\n * second canvas likely represents the back of the object in the first canvas. If this is not the case, see the\n * behavior value non-paged. Disjoint with unordered, individuals, continuous, facing-pages and non-paged.\n *\n */\nexport function getVisibleCanvasesFromCanvasId(\n vault: Vault,\n manifestOrRange: ManifestNormalized | RangeNormalized,\n canvasId: string | null,\n preventPaged = false\n): Reference<'Canvas'>[] {\n const behavior = manifestOrRange.behavior;\n const fullCanvas = canvasId ? vault.get<CanvasNormalized>(canvasId) : null;\n if (!fullCanvas) {\n return [];\n }\n\n const canvasBehavior = fullCanvas.behavior;\n const isPaged = preventPaged ? false : behavior.includes('paged');\n const isContinuous = isPaged ? false : behavior.includes('continuous');\n const isIndividuals = isPaged || isContinuous ? false : behavior.includes('individuals');\n const isCanvasFacingPages = canvasBehavior.includes('facing-pages');\n const isCanvasNonPaged = canvasBehavior.includes('non-paged');\n\n // Individuals should just be the default.\n if (isCanvasFacingPages || isCanvasNonPaged || isIndividuals || preventPaged) {\n return [{ id: fullCanvas.id, type: 'Canvas' }];\n }\n\n const [manifestItems, ordering] = getManifestSequence(vault, manifestOrRange);\n\n // Continuous should just return all items together.\n if (isContinuous) {\n return manifestItems;\n }\n\n const canvasIndex = manifestItems.findIndex((r) => r.id === canvasId);\n if (canvasIndex === -1) {\n return [];\n }\n\n for (const indexes of ordering) {\n if (indexes.includes(canvasIndex)) {\n return indexes.map((index) => manifestItems[index]);\n }\n }\n\n return [{ id: fullCanvas.id, type: 'Canvas' }];\n}\n\nexport function getManifestSequence(\n vault: Vault,\n manifestOrRange: ManifestNormalized | RangeNormalized,\n { disablePaging, skipNonPaged }: { disablePaging?: boolean; skipNonPaged?: boolean } = {}\n): [Reference<'Canvas'>[], number[][]] {\n const behavior = manifestOrRange.behavior;\n const isPaged = behavior.includes('paged');\n const isContinuous = isPaged ? false : behavior.includes('continuous');\n const isIndividuals = isPaged || isContinuous ? false : behavior.includes('individuals');\n const manifestItems =\n manifestOrRange.type === 'Manifest' ? manifestOrRange.items : findAllCanvasesInRange(vault, manifestOrRange);\n\n // Continuous should just return all items together.\n if (isContinuous) {\n return [manifestItems, [manifestItems.map((_, index) => index)]];\n }\n\n // Individuals should just be the default.\n if (isIndividuals || !isPaged || disablePaging) {\n return [manifestItems, manifestItems.map((_, index) => [index])];\n }\n\n // This is the tricky case.\n const ordering: number[][] = [];\n let currentOrdering: number[] = [];\n\n const flush = () => {\n if (currentOrdering.length) {\n ordering.push([...currentOrdering]);\n currentOrdering = [];\n }\n };\n\n let offset = 0;\n let flushNextPaged = false;\n for (let i = 0; i < manifestItems.length; i++) {\n const canvas = vault.get<CanvasNormalized>(manifestItems[i]);\n if (canvas.behavior.includes('non-paged')) {\n if (i === offset) {\n offset++;\n }\n if (!skipNonPaged) {\n flush();\n ordering.push([i]);\n flush();\n }\n continue;\n }\n\n if (i === offset || canvas.behavior.includes('facing-pages')) {\n // Flush and push a single.\n if (currentOrdering.length) {\n flushNextPaged = true;\n }\n flush();\n ordering.push([i]);\n flush();\n continue;\n }\n\n currentOrdering.push(i);\n\n if (flushNextPaged) {\n flush();\n flushNextPaged = false;\n continue;\n }\n\n if (currentOrdering.length > 1) {\n flush();\n }\n }\n\n if (currentOrdering.length) {\n flush();\n }\n\n return [manifestItems, ordering];\n}\n","// This is valid under a range context.\nimport { useResourceContext } from '../context/ResourceContext';\nimport { RangeNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useRange(options?: { id: string }): RangeNormalized | undefined;\nexport function useRange<T>(\n options?: { id: string; selector: (range: RangeNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useRange<T = RangeNormalized>(\n options: {\n id?: string;\n selector?: (range: RangeNormalized) => T;\n } = {},\n deps: any[] = []\n): RangeNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const rangeId = id ? id : ctx.range;\n\n const range = useVaultSelector((s) => (rangeId ? s.iiif.entities.Range[rangeId] : undefined), [rangeId]);\n\n return useMemo(() => {\n if (!range) {\n return undefined;\n }\n if (selector) {\n return selector(range);\n }\n return range;\n }, [range, selector, ...deps]);\n}\n","import { getManifestSequence } from '../future-helpers/sequences';\nimport { useManifest } from '../hooks/useManifest';\nimport { useCallback, useMemo, useRef, useState } from 'react';\nimport { useRange } from '../hooks/useRange';\nimport { useVault } from '../hooks/useVault';\n\nexport function useCanvasSequence({ startCanvas, disablePaging }: { startCanvas?: string; disablePaging?: boolean }) {\n const vault = useVault();\n const manifest = useManifest();\n const range = useRange();\n const [cursor, setCursor] = useState<number>(undefined as any);\n const rangeOrManifest = range ? range : manifest;\n\n if (!rangeOrManifest) {\n throw new Error('Nothing selected');\n }\n\n const [items, initialSequence] = useMemo(\n () => getManifestSequence(vault, rangeOrManifest, { disablePaging }),\n [vault, rangeOrManifest, disablePaging]\n );\n const lastSequence = useRef(initialSequence);\n\n if (lastSequence.current !== initialSequence) {\n const prev = lastSequence.current;\n const prevItem = prev[cursor][0];\n const nextItem = initialSequence.findIndex((i) => i.includes(prevItem));\n lastSequence.current = initialSequence;\n setCursor(nextItem);\n }\n\n const setCanvasIndex = useCallback(\n (index: number) => {\n const foundSequence = initialSequence.findIndex((i) => i.includes(index));\n setCursor(foundSequence === -1 ? 0 : foundSequence);\n },\n [items, initialSequence]\n );\n\n const setCanvasId = useCallback(\n (id: string) => {\n const foundIndex = items.findIndex((i) => i.id === id);\n if (foundIndex !== -1) {\n setCanvasIndex(foundIndex);\n } else {\n setCursor(0);\n }\n },\n [items, initialSequence]\n );\n\n const next = useCallback(() => {\n setCursor((i) => {\n if (i >= initialSequence.length - 1) {\n return i;\n }\n return i + 1;\n });\n }, [initialSequence]);\n\n const previous = useCallback(() => {\n setCursor((i) => {\n if (i <= 0) {\n return 0;\n }\n return i - 1;\n });\n }, [initialSequence]);\n\n // Need to set an initial cursor from the canvasId (if it's valid)\n if (typeof cursor === 'undefined') {\n if (startCanvas) {\n setCanvasId(startCanvas);\n } else {\n setCursor(0);\n }\n }\n\n return {\n visibleItems: initialSequence[cursor]?.map((idx) => items[idx].id) || [],\n cursor,\n items,\n sequence: initialSequence,\n hasPrevious: cursor > 0,\n hasNext: cursor < initialSequence.length - 1,\n setSequenceIndex: setCursor,\n setCanvasIndex,\n setCanvasId,\n next,\n previous,\n };\n}\n","import React, { ReactNode, useCallback, useContext, useEffect, useRef } from 'react';\n/**\n * Simple viewer context\n * *****************************************************************************\n *\n * This will be the context to use to get a basic IIIF viewer up and running.\n * It will not focus on having compatibility with the full range of IIIF\n * resources, instead offering a viewer for a Manifest, cycling through canvases\n * while ignoring the paged/facing-pages/continuous behaviors.\n *\n * There will not be support for canvas-on-canvas annotations. Annotations will\n * be filtered, giving details of the canvas space and images to be annotated\n * onto that space. The demo implementation of this viewer will use\n * OpenSeadragon to display.\n *\n * Navigation functions will include the basics:\n * - nextCanvas()\n * - previousCanvas()\n * - goToCanvas(id)\n * - goToCanvasIndex(idx)\n * - goToFirstCanvas()\n * - goToLastCanvas()\n *\n * It will take in only a Manifest ID and will load that Manifest when the\n * context loads.\n *\n * There will be no support for external or embedded annotation lists, although\n * you can set up a nested context to support this.\n *\n * There will be no support for ranges in this view.\n *\n * To use this component, first you will need the provider:\n * import { SimpleViewerProvider } from '...';\n *\n * <SimpleViewerProvider id=\"http://example.org/manifest.json\">\n * <CustomComponent />\n * </SimpleViewerProvider>\n *\n * This is in addition to the core Vault context further up the tree.\n *\n * In components that you want to use parts of the state you can grab the hooks\n * from this file.\n *\n * import { useSimpleViewer } from '...';\n *\n * And use them in your components to get the actions.\n *\n * function NextButton() {\n * const { nextCanvas } = useSimpleViewer();\n *\n * return <button onClick={nextCanvas}>Next</button>;\n * }\n *\n * Since this is a single-context, there is only ever one manifest, canvas and\n * annotation list. You can access the current resource using the normal hooks.\n *\n * function CanvasMetadata() {\n * const metadata = useCanvas(metadataSelector);\n *\n * return <div> ... </div>\n * }\n *\n * So long as this is inside the provider, it will have the correct context.\n */\nimport { createContext, FC, useMemo, useState } from 'react';\nimport { useExternalManifest } from '../hooks/useExternalManifest';\nimport { ManifestContext } from '../context/ManifestContext';\nimport { CanvasContext } from '../context/CanvasContext';\nimport { VisibleCanvasReactContext } from '../context/VisibleCanvasContext';\nimport { useManifest } from '../hooks/useManifest';\nimport { SimpleViewerContext, SimpleViewerProps } from './SimpleViewerContext.types';\nimport { RangeContext } from '../context/RangeContext';\nimport { useCanvasSequence } from './SimpleViewerContext.hooks';\nimport { VaultProvider } from '../context/VaultContext';\nimport { useExistingVault } from '../hooks/useExistingVault';\n\nconst noop = () => {\n //\n};\n\nexport const SimpleViewerReactContext = createContext<SimpleViewerContext>({\n setCurrentCanvasId: noop,\n setCurrentCanvasIndex: noop,\n nextCanvas: noop,\n previousCanvas: noop,\n items: [],\n sequence: [],\n setSequenceIndex: noop,\n currentSequenceIndex: 0,\n hasNext: false,\n hasPrevious: false,\n});\n\nexport function InnerViewerProvider(props: SimpleViewerProps) {\n const manifest = useManifest();\n const {\n cursor,\n visibleItems,\n next,\n sequence,\n items,\n setCanvasIndex,\n setCanvasId,\n previous,\n setSequenceIndex,\n hasNext,\n hasPrevious,\n } = useCanvasSequence({\n startCanvas: props.startCanvas,\n disablePaging: props.pagingEnabled === false,\n });\n\n const ctx = useMemo(\n () =>\n ({\n sequence,\n items,\n // Extra functions.\n setCurrentCanvasId: setCanvasId,\n nextCanvas: next,\n previousCanvas: previous,\n totalCanvases: items.length,\n setCurrentCanvasIndex: setCanvasIndex,\n setSequenceIndex: setSequenceIndex,\n currentSequenceIndex: cursor,\n hasNext,\n hasPrevious,\n } as SimpleViewerContext),\n [sequence, items, setCanvasId, next, previous, items, setCanvasIndex, setSequenceIndex, cursor]\n );\n\n if (!manifest) {\n console.warn('The manifest passed to the provider is not a valid IIIF manifest.');\n return <div>Sorry, something went wrong.</div>;\n }\n\n if (visibleItems.length === 0) {\n return null;\n }\n\n return (\n <SimpleViewerReactContext.Provider value={ctx}>\n <VisibleCanvasReactContext.Provider value={visibleItems}>\n <CanvasContext canvas={visibleItems[0]}>{props.children}</CanvasContext>\n </VisibleCanvasReactContext.Provider>\n </SimpleViewerReactContext.Provider>\n );\n}\n\nexport function SimpleViewerProvider(props: SimpleViewerProps) {\n const vault = useExistingVault(props.vault);\n const manifest = useExternalManifest(props.manifest);\n\n if (!manifest) {\n console.warn('The manifest passed to the provider is not a valid IIIF manifest.');\n return <div>Sorry, something went wrong.</div>;\n }\n\n if (manifest.error) {\n return <div>{manifest.error.toString()}</div>;\n }\n\n if (!manifest.isLoaded) {\n return <div>Loading...</div>;\n }\n\n const inner = <InnerViewerProvider {...props}>{props.children}</InnerViewerProvider>;\n\n return (\n <VaultProvider vault={vault}>\n <ManifestContext manifest={manifest.id}>\n {props.rangeId ? <RangeContext range={props.rangeId}>{inner}</RangeContext> : inner}\n </ManifestContext>\n </VaultProvider>\n );\n}\n\nexport function useSimpleViewer() {\n return useContext(SimpleViewerReactContext);\n}\n","import React, { ReactNode, useContext } from 'react';\nimport { ResourceReactContext } from './ResourceContext';\nimport { ReactVaultContext, VaultProvider } from './VaultContext';\nimport { SimpleViewerReactContext } from '../viewers/SimpleViewerContext';\nimport { VisibleCanvasReactContext } from './VisibleCanvasContext';\n\nexport function useContextBridge() {\n return {\n VaultContext: useContext(ReactVaultContext),\n ResourceContext: useContext(ResourceReactContext),\n SimpleViewerReactContext: useContext(SimpleViewerReactContext),\n VisibleCanvasReactContext: useContext(VisibleCanvasReactContext),\n };\n}\n\nexport function ContextBridge(props: { bridge: ReturnType<typeof useContextBridge>; children: ReactNode }) {\n return (\n <VaultProvider vault={props.bridge.VaultContext.vault || undefined} resources={props.bridge.ResourceContext}>\n <VisibleCanvasReactContext.Provider value={props.bridge.VisibleCanvasReactContext}>\n <SimpleViewerReactContext.Provider value={props.bridge.SimpleViewerReactContext}>\n {props.children}\n </SimpleViewerReactContext.Provider>\n </VisibleCanvasReactContext.Provider>\n </VaultProvider>\n );\n}\n","const E = function(t) {\n return function() {\n const n = { type: t, getType: () => t, toString: () => t };\n return (i, R) => ({\n ...n,\n ...i !== void 0 && { payload: i },\n ...R !== void 0 && { meta: R }\n });\n };\n}, o = \"@iiif/IMPORT_ENTITIES\", c = \"@iiif/MODIFY_ENTITY_FIELD\", s = \"@iiif/REORDER_ENTITY_FIELD\", A = \"@iiif/ADD_REFERENCE\", T = \"@iiif/UPDATE_REFERENCE\", e = \"@iiif/REMOVE_REFERENCE\", _ = \"@iiif/ADD_METADATA\", M = \"@iiif/REMOVE_METADATA\", D = \"@iiif/UPDATE_METADATA\", O = \"@iiif/REORDER_METADATA\", S = E(o)(), a = E(c)(), r = E(s)(), I = E(A)(), U = E(e)(), f = E(T)(), C = E(_)(), N = E(D)(), d = E(M)(), u = E(O)(), J = {\n importEntities: S,\n modifyEntityField: a,\n reorderEntityField: r,\n addReference: I,\n removeReference: U,\n updateReference: f,\n addMetadata: C,\n removeMetadata: d,\n updateMetadata: N,\n reorderMetadata: u\n}, F = \"@iiif/ADD_MAPPING\", P = \"@iiif/ADD_MAPPINGS\", L = E(F)(), V = E(P)(), K = { addMapping: L, addMappings: V }, p = \"@iiif/SET_META_VALUE\", Q = \"@iiif/SET_META_VALUE_DYNAMIC\", Y = \"@iiif/UNSET_META_VALUE\", m = E(p)(), l = E(Q)(), q = E(Y)(), W = {\n setMetaValue: m,\n setMetaValueDynamic: l,\n unsetMetaValue: q\n}, X = \"RESOURCE_ERROR\", Z = \"RESOURCE_LOADING\", $ = \"RESOURCE_READY\", G = \"@iiif/REQUEST_RESOURCE\", H = \"@iiif/REQUEST_ERROR\", g = \"@iiif/REQUEST_MISMATCH\", v = \"@iiif/REQUEST_COMPLETE\", B = \"@iiif/REQUEST_OFFLINE_RESOURCE\", b = E(G)(), h = E(H)(), y = E(g)(), x = E(v)(), j = E(B)(), EE = {\n requestResource: b,\n requestError: h,\n requestMismatch: y,\n requestComplete: x,\n requestOfflineResource: j\n}, k = \"@iiif/BATCH\", w = \"@iiif/BATCH_IMPORT\", tE = E(k)(), iE = E(w)();\nexport {\n F as ADD_MAPPING,\n P as ADD_MAPPINGS,\n _ as ADD_METADATA,\n A as ADD_REFERENCE,\n k as BATCH_ACTIONS,\n w as BATCH_IMPORT,\n o as IMPORT_ENTITIES,\n c as MODIFY_ENTITY_FIELD,\n M as REMOVE_METADATA,\n e as REMOVE_REFERENCE,\n s as REORDER_ENTITY_FIELD,\n O as REORDER_METADATA,\n v as REQUEST_COMPLETE,\n H as REQUEST_ERROR,\n g as REQUEST_MISMATCH,\n B as REQUEST_OFFLINE_RESOURCE,\n G as REQUEST_RESOURCE,\n X as RESOURCE_ERROR,\n Z as RESOURCE_LOADING,\n $ as RESOURCE_READY,\n p as SET_META_VALUE,\n Q as SET_META_VALUE_DYNAMIC,\n Y as UNSET_META_VALUE,\n D as UPDATE_METADATA,\n T as UPDATE_REFERENCE,\n L as addMapping,\n V as addMappings,\n C as addMetadata,\n I as addReference,\n tE as batchActions,\n iE as batchImport,\n J as entityActions,\n S as importEntities,\n K as mappingActions,\n W as metaActions,\n a as modifyEntityField,\n d as removeMetadata,\n U as removeReference,\n r as reorderEntityField,\n u as reorderMetadata,\n EE as requestActions,\n x as requestComplete,\n h as requestError,\n y as requestMismatch,\n j as requestOfflineResource,\n b as requestResource,\n N as updateMetadata,\n f as updateReference\n};\n//# sourceMappingURL=vault-actions.mjs.map\n","import { useVault } from './useVault';\nimport { useMemo } from 'react';\nimport { VaultZustandStore } from '@iiif/helpers/vault/store';\n\nexport function useDispatch(): VaultZustandStore['dispatch'] {\n const vault = useVault();\n const store = vault.getStore();\n\n return useMemo(() => {\n return (action: any) => store.dispatch(action);\n }, [store]);\n}\n","import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';\nimport { Annotation } from '@iiif/presentation-3';\nimport { AnnotationNormalized, AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useVault } from './useVault';\nimport { useVaultSelector } from './useVaultSelector';\nimport { entityActions } from '@iiif/helpers/vault/actions';\nimport { useDispatch } from './useDispatch';\nimport { Vault } from '@iiif/helpers/vault';\n\nexport interface VaultActivatedAnnotation {\n __vault?: Vault;\n bindToVault(vault: Vault): void;\n source: string | { id: string };\n}\n\nfunction isVaultActivated(obj: any): obj is VaultActivatedAnnotation {\n return typeof obj !== 'string' && obj && obj.bindToVault;\n}\n\nexport function useVirtualAnnotationPage() {\n const vault = useVault();\n const sources = useRef<Record<any, any>>([]);\n const dispatch = useDispatch();\n const virtualId = useMemo(() => {\n return `vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random() * 1000000000).toString(16)}`;\n }, []);\n\n useLayoutEffect(() => {\n const page: AnnotationPageNormalized = {\n id: virtualId,\n type: 'AnnotationPage',\n behavior: [],\n label: null,\n thumbnail: [],\n summary: null,\n requiredStatement: null,\n metadata: [],\n rights: null,\n provider: [],\n items: [],\n seeAlso: [],\n homepage: [],\n rendering: [],\n service: [],\n };\n\n dispatch(\n entityActions.importEntities({\n entities: {\n AnnotationPage: {\n [page.id]: page,\n },\n },\n })\n );\n }, [virtualId]);\n\n const fullPage: AnnotationPageNormalized | null = useVaultSelector(\n (state) => (virtualId ? state.iiif.entities.AnnotationPage[virtualId] : null),\n [virtualId]\n );\n\n const addAnnotation = useCallback(\n (id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized, atIndex?: number) => {\n if (virtualId) {\n if (isVaultActivated(id)) {\n const display = id;\n if (!display.__vault) {\n // First bind to vault.\n display.bindToVault(vault);\n }\n id = typeof display.source === 'string' ? display.source : display.source.id;\n sources.current[id] = display;\n } else if (typeof id !== 'string') {\n id = id.id;\n }\n\n const full: AnnotationPageNormalized = vault.get({ id: virtualId, type: 'AnnotationPage' });\n const annotation: AnnotationNormalized = vault.get({ id, type: 'Annotation' });\n if (full && annotation) {\n if (!full.items.find((r: any) => r.id === annotation.id)) {\n dispatch(\n entityActions.addReference({\n id: virtualId,\n type: 'AnnotationPage',\n key: 'items',\n reference: {\n id,\n type: 'Annotation',\n },\n index: atIndex,\n })\n );\n }\n }\n }\n },\n [virtualId]\n );\n const removeAnnotation = useCallback(\n (id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized) => {\n if (virtualId) {\n if (isVaultActivated(id)) {\n id = typeof id.source === 'string' ? id.source : id.source.id;\n } else if (typeof id !== 'string') {\n id = id.id;\n }\n\n if (sources.current[id]) {\n sources.current[id].beforeRemove();\n }\n\n const full: AnnotationPageNormalized = vault.get({ id: virtualId, type: 'AnnotationPage' });\n if (full) {\n dispatch(\n entityActions.removeReference({\n id: virtualId,\n type: 'AnnotationPage',\n key: 'items',\n reference: {\n id,\n type: 'Annotation',\n },\n })\n );\n }\n }\n },\n [virtualId]\n );\n\n return [\n fullPage,\n {\n addAnnotation,\n removeAnnotation,\n },\n ] as const;\n}\n","import { Annotation } from '@iiif/presentation-3';\nimport { AnnotationNormalized, AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport React, { createContext, useContext, useMemo } from 'react';\nimport { useVirtualAnnotationPage, VaultActivatedAnnotation } from './useVirtualAnnotationPage';\n\nconst VirtualAnnotationPageContext = createContext<{\n fullPage: AnnotationPageNormalized | null;\n addAnnotation: (\n id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized,\n atIndex?: number | undefined\n ) => void;\n removeAnnotation: (id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized) => void;\n} | null>(null);\n\nexport function useVirtualAnnotationPageContext() {\n const ctx = useContext(VirtualAnnotationPageContext);\n\n return [\n ctx!.fullPage,\n {\n addAnnotation: ctx!.addAnnotation,\n removeAnnotation: ctx!.removeAnnotation,\n },\n ] as const;\n}\n\nexport function VirtualAnnotationProvider({ children }: { children: any }) {\n const [fullPage, { addAnnotation, removeAnnotation }] = useVirtualAnnotationPage();\n\n return (\n <VirtualAnnotationPageContext.Provider\n value={useMemo(() => ({ fullPage, addAnnotation, removeAnnotation }), [fullPage])}\n >\n {children}\n </VirtualAnnotationPageContext.Provider>\n );\n}\n","import React from 'react';\nimport { FallbackProps } from 'react-error-boundary';\n\nexport function DefaultCanvasFallback({\n width,\n style,\n height,\n error,\n resetErrorBoundary,\n}: { width?: number; height?: number; style?: any } & FallbackProps) {\n return (\n <div style={{ width, height, minHeight: 500, ...(style || {}), background: '#f9f9f9' }}>\n <h3>Error occurred</h3>\n <p>{error.message}</p>\n <button onClick={resetErrorBoundary}>Reset</button>\n </div>\n );\n}\n","import { createContext, useContext } from 'react';\nimport { Preset } from '@atlas-viewer/atlas';\n\nexport const ViewerPresetContext = createContext<Preset | null | undefined>(null);\n\nexport function useViewerPreset() {\n return useContext(ViewerPresetContext);\n}\n","import { createContext, useContext, useEffect } from 'react';\n\nexport const SetOverlaysReactContext = createContext<(key: string, element: any | null, props?: any) => void>(\n () => void 0\n);\nexport const SetPortalReactContext = createContext<(key: string, element: any | null, props?: any) => void>(\n () => void 0\n);\n\nexport function useOverlay(\n type: 'portal' | 'overlay' | 'none',\n key: string,\n element: any,\n props: any,\n deps: any[] = []\n) {\n const setOverlay = useContext(type === 'portal' ? SetPortalReactContext : SetOverlaysReactContext);\n\n useEffect(() => {\n if (type !== 'none') {\n setOverlay(key, element, props);\n }\n return () => {\n setOverlay(key, null);\n };\n }, [key, type, setOverlay, ...deps]);\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useCanvas(options?: { id: string }): CanvasNormalized | undefined;\nexport function useCanvas<T>(\n options?: { id: string; selector: (canvas: CanvasNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useCanvas<T = CanvasNormalized>(\n options: {\n id?: string;\n selector?: (canvas: CanvasNormalized) => T;\n } = {},\n deps: any[] = []\n): CanvasNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const canvasId = id ? id : ctx.canvas;\n\n const canvas = useVaultSelector((s) => (canvasId ? s.iiif.entities.Canvas[canvasId] : undefined), [canvasId]);\n\n return useMemo(() => {\n if (!canvas) {\n return undefined;\n }\n if (selector) {\n return selector(canvas);\n }\n return canvas;\n }, [canvas, selector, ...deps]);\n}\n","import { createContext, useContext, useEffect } from 'react';\nimport { useCanvas } from '../../hooks/useCanvas';\n\nexport const WorldSizeContext = createContext<(canvasId: string, size: number) => void>(() => void 0);\n\nexport function useWorldSize(size: number) {\n const canvas = useCanvas();\n const fn = useContext(WorldSizeContext);\n\n useEffect(() => {\n if (canvas && canvas.id) {\n fn(canvas.id, size);\n\n return () => fn(canvas.id, -1);\n }\n\n return () => void 0;\n }, [canvas, size]);\n}\n","import React, { ReactNode, useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { AtlasAuto, Preset, AtlasProps, ModeContext } from '@atlas-viewer/atlas';\nimport { ErrorBoundary } from 'react-error-boundary';\nimport { ContextBridge, useContextBridge } from '../context/ContextBridge';\nimport { VirtualAnnotationProvider } from '../hooks/useVirtualAnnotationPageContext';\nimport { DefaultCanvasFallback } from './render/DefaultCanvasFallback';\nimport { ViewerPresetContext } from '../context/ViewerPresetContext';\nimport { SetOverlaysReactContext, SetPortalReactContext } from './context/overlays';\nimport { WorldSizeContext } from './context/world-size';\nimport { useCanvas } from '../hooks/useCanvas';\n\nexport function Viewer({\n children,\n errorFallback,\n outerContainerProps = {},\n worldScale: _worldScale,\n ...props\n}: AtlasProps & {\n height?: number | string;\n width?: number | string;\n resizeHash?: number;\n containerProps?: any;\n outerContainerProps?: any;\n aspectRatio?: number;\n errorFallback?: any;\n worldScale?: number;\n} & { children: ReactNode }) {\n const [viewerPreset, setViewerPreset] = useState<Preset | null>();\n const bridge = useContextBridge();\n const ErrorFallback: any = errorFallback || DefaultCanvasFallback;\n const [overlays, setOverlays] = useState<Record<string, any>>({});\n const overlayComponents = Object.entries(overlays);\n const [portals, setPortals] = useState<Record<string, any>>({});\n const portalComponents = Object.entries(portals);\n const [worldSizes, setWorldSizes] = useState<Record<string, number>>({});\n const worldScale = useMemo(() => {\n return _worldScale || Math.max(...Object.values(worldSizes));\n }, [worldSizes]);\n const runtimeOptions = useMemo(() => {\n return { maxOverZoom: worldScale || 1, ...(props.runtimeOptions || {}) };\n }, [worldScale, props.runtimeOptions]);\n\n const updateWorldSize = useCallback((canvasId: string, size: number) => {\n setWorldSizes((sizes) => {\n if (size === -1) {\n const { [canvasId]: _, ...rest } = sizes;\n return rest;\n }\n return { ...sizes, [canvasId]: size };\n });\n }, []);\n\n const updateOverlay = useCallback((key: string, element: ReactNode, props: any) => {\n setOverlays(({ [key]: _, ...prev }) => {\n if (!element) {\n return prev;\n }\n\n return {\n ...prev,\n [key]: { element, props },\n };\n });\n }, []);\n\n const updatePortal = useCallback((key: string, element: ReactNode, props: any) => {\n setPortals(({ [key]: _, ...prev }) => {\n if (!element) {\n return prev;\n }\n\n return {\n ...prev,\n [key]: { element, props },\n };\n });\n }, []);\n\n return (\n <ErrorBoundary resetKeys={[]} fallbackRender={(fallbackProps) => <ErrorFallback {...props} {...fallbackProps} />}>\n <AtlasAuto\n {...props}\n containerProps={{ style: { position: 'relative' }, ...(props.containerProps || {}) }}\n htmlChildren={\n <>\n {overlayComponents.map(([key, { element: Element, props }]) => (\n <React.Fragment key={key}>\n <Element {...(props || {})} />\n </React.Fragment>\n ))}\n </>\n }\n onCreated={(preset: any) => {\n setViewerPreset(preset);\n if (props.onCreated) {\n props.onCreated(preset);\n }\n }}\n runtimeOptions={runtimeOptions}\n >\n <ViewerPresetContext.Provider value={viewerPreset}>\n <WorldSizeContext.Provider value={updateWorldSize}>\n <SetOverlaysReactContext.Provider value={updateOverlay}>\n <SetPortalReactContext.Provider value={updatePortal}>\n <ContextBridge bridge={bridge}>\n <ModeContext.Provider value={props.mode || 'explore'}>\n <VirtualAnnotationProvider>{children}</VirtualAnnotationProvider>\n </ModeContext.Provider>\n </ContextBridge>\n </SetPortalReactContext.Provider>\n </SetOverlaysReactContext.Provider>\n </WorldSizeContext.Provider>\n </ViewerPresetContext.Provider>\n </AtlasAuto>\n <div>\n {portalComponents.map(([key, { element: Element, props }]) => (\n <React.Fragment key={key}>\n <Element {...(props || {})} />\n </React.Fragment>\n ))}\n </div>\n </ErrorBoundary>\n );\n}\n","const a = {}, i = {\n get(n) {\n return n;\n },\n setMetaValue([n, e, r], t) {\n const o = i.getResourceMeta(n, e), c = o ? o[r] : void 0, s = typeof t == \"function\" ? t(c) : t;\n a[n] = {\n ...a[n] || {},\n [e]: {\n ...(a[n] || {})[e] || {},\n [r]: s\n }\n };\n },\n getResourceMeta: (n, e) => {\n const r = a[n];\n if (r)\n return e ? r[e] : r;\n }\n};\nfunction M(n = i) {\n return {\n addEventListener(e, r, t, o) {\n if (e)\n return n.setMetaValue(\n [e.id, \"eventManager\", r],\n (c) => {\n const s = c || [];\n for (const f of s)\n if (f.callback === t)\n return s;\n return [...s, { callback: t, scope: o }];\n }\n ), t;\n },\n removeEventListener(e, r, t) {\n e && n.setMetaValue(\n [e.id, \"eventManager\", r],\n (o) => (o || []).filter((c) => c.callback !== t)\n );\n },\n getListenersAsProps(e, r) {\n const t = typeof e == \"string\" ? { id: e } : e;\n if (!t || !t.id)\n return {};\n const o = n.getResourceMeta(t.id, \"eventManager\"), c = {};\n if (o && t)\n for (const s of Object.keys(o))\n c[s] = (f) => {\n const l = n.get(t);\n for (const { callback: g, scope: u } of o[s] || [])\n (!u || r && u.indexOf(r) !== -1) && g(f, l);\n };\n return c;\n }\n };\n}\nexport {\n M as createEventsHelper\n};\n//# sourceMappingURL=events.mjs.map\n","import { useVault } from './useVault';\nimport { useVaultSelector } from './useVaultSelector';\nimport { useMemo } from 'react';\nimport { NormalizedEntity } from '@iiif/helpers/vault';\nimport { Reference } from '@iiif/presentation-3';\nimport { createEventsHelper } from '@iiif/helpers/events';\n\nexport function useResourceEvents<T extends NormalizedEntity>(resource?: Reference, scope?: string[]) {\n const vault = useVault();\n const helper = useMemo(() => createEventsHelper(vault), [vault]);\n\n const hooks = useVaultSelector(() => {\n if (resource && resource.id) {\n return vault.getResourceMeta(resource.id, 'eventManager');\n }\n return null;\n }, [resource]);\n\n return useMemo(() => {\n return resource ? helper.getListenersAsProps(resource, scope) : {};\n }, [hooks, resource, vault, scope]);\n}\n","import { useVault } from './useVault';\nimport { useMemo } from 'react';\nimport { Reference } from '@iiif/presentation-3';\nimport { createStylesHelper } from '@iiif/helpers/styles';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useStyles<Style extends Record<string, Record<string, any>>>(\n resource: undefined | Reference<any>\n): Style;\nexport function useStyles<Style extends Record<string, any>>(\n resource: undefined | Reference<any>,\n scope: string\n): Style;\nexport function useStyles<Style>(resource?: Reference, scope?: string): Style {\n const vault = useVault();\n const helper = useMemo(() => createStylesHelper(vault), [vault]);\n\n return useVaultSelector(() => {\n if (!resource) {\n return null;\n }\n\n const styles = helper.getAppliedStyles(resource.id);\n return styles ? (scope ? styles[scope] : styles) : undefined;\n }, [resource, scope]) as Style;\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { AnnotationNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\nimport { expandTarget } from '@iiif/helpers/annotation-targets';\nimport { useVault } from './useVault';\n\nexport function useAnnotation(options?: { id: string }): AnnotationNormalized | undefined;\nexport function useAnnotation<T>(\n options?: { id: string; selector: (annotation: AnnotationNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useAnnotation<T = AnnotationNormalized>(\n options: {\n id?: string;\n selector?: (annotation: AnnotationNormalized) => T;\n } = {},\n deps: any[] = []\n): AnnotationNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const vault = useVault();\n const annotationId = id ? id : ctx.annotation;\n\n const annotation = useVaultSelector(\n (s) => (annotationId ? s.iiif.entities.Annotation[annotationId] : undefined),\n [annotationId]\n );\n\n const body = useVaultSelector(\n (s) =>\n annotation && annotation.body\n ? annotation.body\n .map((singleBody) => {\n if (!singleBody) {\n return null;\n }\n\n if ((singleBody as any).type === 'SpecificResource') {\n return {\n ...singleBody,\n source: vault.get(singleBody),\n };\n }\n\n return singleBody ? s.iiif.entities[singleBody.type][singleBody.id] : null;\n })\n .filter(Boolean)\n : [],\n [annotation]\n );\n\n return useMemo(() => {\n if (!annotation) {\n return undefined;\n }\n\n const newAnnotation: any = {\n ...annotation,\n body,\n target: expandTarget(annotation.target as any, { typeMap: vault.getState().iiif.mapping }),\n };\n\n if (selector) {\n return selector(newAnnotation);\n }\n return newAnnotation;\n }, [annotation, selector, body, ...deps]);\n}\n","import { BoxStyle, HTMLPortal, mergeStyles, RegionHighlight } from '@atlas-viewer/atlas';\nimport { useResourceEvents } from '../../hooks/useResourceEvents';\nimport { useStyles } from '../../hooks/useStyles';\nimport React, { FC, useMemo } from 'react';\nimport { useAnnotation } from '../../hooks/useAnnotation';\nimport { useCanvas } from '../../hooks/useCanvas';\n\nexport const RenderAnnotation: FC<{ id: string; className?: string; style?: BoxStyle; interactive?: boolean }> = ({\n id,\n style: defaultStyle,\n className,\n interactive,\n}) => {\n const annotation = useAnnotation({ id });\n const style = useStyles<BoxStyle>(annotation, 'atlas');\n const html = useStyles<{ className?: string; href?: string; title?: string; target?: string }>(annotation, 'html');\n const events = useResourceEvents(annotation as any, ['atlas']);\n const canvas = useCanvas();\n\n const allStyles = useMemo(() => {\n return mergeStyles(defaultStyle, style);\n }, [defaultStyle, style]);\n\n const isValid =\n canvas &&\n annotation &&\n annotation.target &&\n (annotation.target as any).selector &&\n (annotation.target as any).selector.type === 'BoxSelector' &&\n (annotation.target as any).source &&\n ((annotation.target as any).source.id === canvas.id || (annotation.target as any).source === canvas.id);\n\n if (!isValid) {\n return null;\n }\n\n return (\n <RegionHighlight\n id={annotation.id}\n isEditing={true}\n region={(annotation.target as any).selector.spatial}\n style={allStyles}\n className={html?.className || className}\n interactive={!!(html?.href || interactive)}\n href={html?.href || null}\n title={html?.title || null}\n hrefTarget={html?.target || null}\n onClick={() => void 0}\n {...events}\n />\n );\n};\n","import { useResourceContext } from '../context/ResourceContext';\nimport { AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useAnnotationPage(options?: { id: string }): AnnotationPageNormalized | undefined;\nexport function useAnnotationPage<T>(\n options?: { id: string; selector: (annotation: AnnotationPageNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useAnnotationPage<T = AnnotationPageNormalized>(\n options: {\n id?: string;\n selector?: (annotation: AnnotationPageNormalized) => T;\n } = {},\n deps: any[] = []\n): AnnotationPageNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const annotationPageId = id ? id : ctx.annotationPage;\n\n const annotationPage = useVaultSelector(\n (s) => (annotationPageId ? s.iiif.entities.AnnotationPage[annotationPageId] : undefined),\n [annotationPageId]\n );\n\n return useMemo(() => {\n if (!annotationPage) {\n return undefined;\n }\n\n if (selector) {\n return selector(annotationPage);\n }\n return annotationPage;\n }, [annotationPage, ...deps]);\n}\n","import { AnnotationPage } from '@iiif/presentation-3';\nimport { AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { RenderAnnotation } from './Annotation';\nimport { BoxStyle } from '@atlas-viewer/atlas';\nimport { useStyles } from '../../hooks/useStyles';\nimport { useVaultSelector } from '../../hooks/useVaultSelector';\nimport React, { FC, Fragment } from 'react';\nimport { useAnnotationPage } from '../../hooks/useAnnotationPage';\n\nexport const RenderAnnotationPage: FC<{ page: AnnotationPage | AnnotationPageNormalized; className?: string }> = ({\n className,\n page: _page,\n}) => {\n const page = useAnnotationPage({ id: _page.id }) || _page;\n const style = useStyles<BoxStyle>(page, 'atlas');\n const html = useStyles<{ className?: string }>(page, 'html');\n\n useVaultSelector((state) => (page.id ? state.iiif.entities.AnnotationPage[page.id] : null), []);\n\n return (\n <Fragment>\n {page.items?.map((annotation) => {\n return (\n <RenderAnnotation\n key={annotation.id}\n id={annotation.id}\n style={style}\n className={html?.className || className}\n />\n );\n })}\n </Fragment>\n );\n};\n","import { ImageCandidate } from '@atlas-viewer/iiif-image-api';\nimport React, { Fragment, ReactNode, useMemo } from 'react';\nimport { TileSet } from '@atlas-viewer/atlas';\nimport { ImageWithOptionalService } from '../../features/rendering-strategy/resource-types';\nimport { BoxSelector } from '@iiif/helpers';\n\nexport function RenderImage({\n id,\n image,\n thumbnail,\n isStatic,\n x = 0,\n y = 0,\n children,\n selector,\n onClick,\n enableSizes,\n}: {\n id: string;\n image: ImageWithOptionalService;\n thumbnail?: ImageCandidate;\n isStatic?: boolean;\n enableSizes?: boolean;\n selector?: BoxSelector;\n x?: number;\n y?: number;\n children?: ReactNode;\n onClick?: (e: any) => void;\n}) {\n const crop = useMemo(() => {\n // @todo crops only work if x is not zero due to bug in selector parsing\n // setting the spatial width to canvas - which isn't correct.\n if (!selector || (selector.spatial.x === 0 && selector.spatial.y === 0)) {\n return undefined;\n }\n return selector.spatial;\n }, [selector]);\n\n return (\n <world-object\n key={id + (image.service ? 'server' : 'no-service')}\n x={x + image.target.spatial.x}\n y={y + image.target.spatial.y}\n width={image.target.spatial.width}\n height={image.target.spatial.height}\n onClick={onClick}\n >\n {!image.service ? (\n <Fragment key=\"no-service\">\n <world-image\n onClick={onClick}\n uri={image.id}\n target={{ x: 0, y: 0, width: image.target.spatial.width, height: image.target.spatial.height }}\n display={\n image.width && image.height\n ? {\n width: image.width,\n height: image.height,\n }\n : undefined\n }\n crop={crop}\n />\n {children}\n </Fragment>\n ) : (\n <Fragment key=\"service\">\n <TileSet\n tiles={{\n id: image.service.id || image.service['@id'] || 'unknown',\n height: image.height as number,\n width: image.width as number,\n imageService: image.service as any,\n thumbnail: thumbnail && thumbnail.type === 'fixed' ? thumbnail : undefined,\n }}\n enableSizes={enableSizes}\n x={0}\n y={0}\n width={image.target?.spatial.width}\n height={image.target?.spatial.height}\n crop={crop}\n />\n {children}\n </Fragment>\n )}\n </world-object>\n );\n}\n","import { ContentResource, PointSelector, W3CAnnotationTarget } from '@iiif/presentation-3';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { UseRenderingStrategy } from '../../hooks/useRenderingStrategy';\nimport { BoxSelector, expandTarget, SupportedTarget, TemporalBoxSelector } from '@iiif/helpers';\n\n/**\n * Parse specific resource.\n *\n * This could be expanded to support pulling out more from the specific resource.\n *\n * @param resource\n */\nexport function parseSpecificResource(resource: ContentResource) {\n if (resource.type === 'SpecificResource') {\n return [resource.source, { selector: resource.selector }];\n }\n\n return [resource, { selector: null }];\n}\n\nexport function getParsedTargetSelector(\n canvas: CanvasNormalized,\n target: W3CAnnotationTarget | W3CAnnotationTarget[]\n): [TemporalBoxSelector | BoxSelector | PointSelector | null, SupportedTarget['source']] {\n const { selector: imageTarget, source } = expandTarget(target);\n\n if (source.id !== canvas.id) {\n // Skip invalid targets.\n return [null, source];\n }\n\n // Target is where it should be painted.\n const defaultTarget: BoxSelector = {\n type: 'BoxSelector',\n spatial: {\n x: 0,\n y: 0,\n width: Number(canvas.width),\n height: Number(canvas.height),\n },\n };\n\n return [\n imageTarget\n ? imageTarget.type === 'TemporalSelector'\n ? ({\n type: 'TemporalBoxSelector',\n temporal: imageTarget.temporal,\n spatial: defaultTarget.spatial,\n } as any)\n : imageTarget\n : null,\n source,\n ];\n}\n\nexport const emptyActions = {\n makeChoice: () => {\n // no-op\n },\n};\n\nexport const unknownResponse: UseRenderingStrategy[0] = { type: 'unknown' };\n\nexport const unsupportedStrategy = (reason: string): UseRenderingStrategy[0] => {\n return { type: 'unknown', reason, annotations: { pages: [] } };\n};\n\nexport const emptyStrategy = (width: number, height: number): UseRenderingStrategy[0] => {\n return { type: 'empty', width, height, annotations: { pages: [] }, image: null, images: [] };\n};\n","import { useVaultSelector } from './useVaultSelector';\nimport { IIIFStore } from '@iiif/helpers/vault';\n\nfunction getMeta(state: IIIFStore, resourceId: string) {\n const resourceMeta = state?.iiif?.meta[resourceId];\n if (!resourceMeta) {\n return null;\n }\n return resourceMeta.annotationPageManager as any;\n}\n\nexport function useEnabledAnnotationPageIds(resourceId?: string, availablePageIds?: string[]) {\n return useVaultSelector(\n (state) => {\n const pageIds: string[] = [];\n if (!resourceId) {\n return pageIds;\n }\n const allAnnotationListIds = Object.keys(state.iiif.entities.AnnotationPage);\n for (const annotationListId of allAnnotationListIds) {\n if (!availablePageIds || availablePageIds.indexOf(annotationListId) !== -1) {\n const annotationListMeta = getMeta(state, annotationListId);\n if (annotationListMeta && annotationListMeta.views && annotationListMeta.views[resourceId]) {\n pageIds.push(annotationListId);\n }\n }\n }\n\n return pageIds;\n },\n [resourceId, availablePageIds]\n );\n}\n","import { CanvasNormalized, ManifestNormalized } from '@iiif/presentation-3-normalized';\n\nexport function flattenAnnotationPageIds({\n canvas,\n manifest,\n all,\n canvases,\n}: {\n manifest?: ManifestNormalized;\n canvas?: CanvasNormalized;\n canvases?: CanvasNormalized[];\n all?: boolean;\n}) {\n const foundIds: string[] = [];\n\n if (manifest) {\n for (const page of manifest.annotations) {\n if (foundIds.indexOf(page.id) === -1) {\n foundIds.push(page.id);\n }\n }\n }\n\n if (all) {\n if (canvases && canvases.length) {\n for (const canvas_ of canvases) {\n for (const page of canvas_.annotations) {\n if (foundIds.indexOf(page.id) === -1) {\n foundIds.push(page.id);\n }\n }\n }\n }\n } else if (canvas) {\n for (const page of canvas.annotations) {\n if (foundIds.indexOf(page.id) === -1) {\n foundIds.push(page.id);\n }\n }\n }\n\n // Remove enabled page IDs for now.\n // for (const enabledPage of enabledPageIds) {\n // if (foundIds.indexOf(enabledPage) === -1) {\n // foundIds.push(enabledPage);\n // }\n // }\n\n return foundIds;\n}\n","import { useCallback, useMemo } from 'react';\nimport { useVault } from './useVault';\nimport { useManifest } from './useManifest';\nimport { useCanvas } from './useCanvas';\nimport { useVisibleCanvases } from '../context/VisibleCanvasContext';\nimport { useEnabledAnnotationPageIds } from './useEnabledAnnotationPageIds';\nimport { flattenAnnotationPageIds } from '../utility/flatten-annotation-page-ids';\nimport { IIIFStore } from '@iiif/helpers/vault';\n\ntype AnnotationPageResourceMap = {\n [id: string]: boolean;\n};\n\ntype AnnotationPageManager = {\n views: AnnotationPageResourceMap;\n};\n\nfunction getMeta(state: IIIFStore, resourceId: string) {\n const resourceMeta = state?.iiif?.meta[resourceId];\n if (!resourceMeta) {\n return null;\n }\n return resourceMeta.annotationPageManager as AnnotationPageManager;\n}\n\nexport function useAnnotationPageManager(resourceId?: string, options: { all?: boolean } = {}) {\n const vault = useVault();\n const manifest = useManifest();\n const canvas = useCanvas();\n const canvases = useVisibleCanvases();\n const availablePageIds = useMemo(() => {\n return flattenAnnotationPageIds({\n all: options.all,\n manifest,\n canvas,\n canvases,\n });\n }, [options.all, canvas, canvases, manifest]);\n const enabledPageIds = useEnabledAnnotationPageIds(resourceId, options.all ? undefined : availablePageIds);\n\n const setPageDisabled = useCallback(\n (deselectId: string) => {\n if (!resourceId) {\n return;\n }\n vault.setMetaValue<AnnotationPageResourceMap>(\n [deselectId, 'annotationPageManager', 'views'],\n (existingResources: AnnotationPageResourceMap | undefined) => {\n if (existingResources && !existingResources[resourceId]) {\n return existingResources;\n }\n\n return {\n ...(existingResources || {}),\n [resourceId]: false,\n };\n }\n );\n },\n [resourceId, vault]\n );\n\n const setPageEnabled = useCallback(\n (id: string, opt: { deselectOthers?: boolean } = {}) => {\n if (!resourceId) {\n return;\n }\n const state = vault.getState();\n const toDeselect = [];\n\n // Deselect these.\n if (opt?.deselectOthers) {\n const allAnnotationListIds = Object.keys(state.iiif.entities.AnnotationPage);\n for (const annotationPageId of allAnnotationListIds) {\n const annotationListMeta = getMeta(state, annotationPageId);\n if (annotationListMeta && annotationListMeta.views && annotationListMeta.views[resourceId]) {\n toDeselect.push(annotationPageId);\n }\n }\n }\n\n // Disable first.\n for (const deselectId of toDeselect) {\n setPageDisabled(deselectId);\n }\n\n // Then enable.\n vault.setMetaValue<AnnotationPageResourceMap>(\n [id, 'annotationPageManager', 'views'],\n (existingResources: AnnotationPageResourceMap | undefined) => {\n if (existingResources && existingResources[resourceId]) {\n return existingResources;\n }\n return {\n ...(existingResources || {}),\n [resourceId]: true,\n };\n }\n );\n },\n [resourceId, setPageDisabled, vault]\n );\n\n return {\n availablePageIds,\n enabledPageIds,\n setPageEnabled,\n setPageDisabled,\n };\n}\n","import { useVaultSelector } from './useVaultSelector';\n\nexport function useResources<Type>(ids: string[], type: string): Type[] {\n return useVaultSelector((state, vault) => vault.get(ids.map((id) => ({ id, type }))) as any, [ids, type]);\n}\n","import React, { useContext } from 'react';\nimport { ImageServiceLoader } from '@atlas-viewer/iiif-image-api';\n\nexport const ImageServiceLoaderContext = React.createContext<ImageServiceLoader>(new ImageServiceLoader());\n\nexport function useImageServiceLoader() {\n return useContext(ImageServiceLoaderContext);\n}\n","import { ImageService } from '@iiif/presentation-3';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useImageServiceLoader } from '../context/ImageServiceLoaderContext';\n\nexport type ImageServiceLoaderType = (\n imageService: any | undefined,\n { height, width }: { height: number; width: number }\n) => ImageService | undefined;\n\nexport function useLoadImageService() {\n const loader = useImageServiceLoader();\n const [imageServiceStatus, setImageServiceStatus] = useState<Record<string, string>>({});\n const didUnmount = useRef(false);\n useEffect(() => {\n return () => {\n didUnmount.current = true;\n };\n }, []);\n const loadImageService = useCallback<ImageServiceLoaderType>(\n (imageService, { height, width }) => {\n if (imageService) {\n const imageServiceId = imageService.id || (imageService['@id'] as string);\n // We want to kick this off.\n const syncLoaded = loader.loadServiceSync({\n id: imageServiceId,\n width: imageService.width || width,\n height: imageService.height || height,\n source: imageService,\n });\n\n if (syncLoaded) {\n imageService = syncLoaded;\n } else if (!imageServiceStatus[imageServiceId]) {\n if (!didUnmount.current) {\n setImageServiceStatus((r) => {\n return {\n ...r,\n [imageServiceId]: 'loading',\n };\n });\n }\n loader\n .loadService({\n id: imageServiceId,\n width: imageService.width || width,\n height: imageService.height || height,\n })\n .then(() => {\n if (!didUnmount.current) {\n setImageServiceStatus((r) => {\n return {\n ...r,\n [imageServiceId]: 'done',\n };\n });\n }\n });\n }\n }\n return imageService;\n },\n [loader, imageServiceStatus]\n );\n\n return [loadImageService, imageServiceStatus] as const;\n}\n","// This is valid under a canvas context.\nimport { AnnotationNormalized, AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useCanvas } from './useCanvas';\nimport { useVaultSelector } from './useVaultSelector';\nimport { useAnnotation } from './useAnnotation';\n\nexport function usePaintingAnnotations(\n options: { canvasId?: string; enableSingleAnnotation?: boolean } = {}\n): AnnotationNormalized[] {\n const annotation = useAnnotation();\n const canvas = useCanvas(options.canvasId ? { id: options.canvasId } : undefined);\n\n return useVaultSelector(\n (state, vault) => {\n if (!canvas) {\n return [];\n }\n if (annotation && options.enableSingleAnnotation) {\n return [annotation];\n }\n const annotationPages = vault.get(canvas.items);\n const flatAnnotations: AnnotationNormalized[] = [];\n for (const page of annotationPages) {\n flatAnnotations.push(...vault.get(page.items));\n }\n return flatAnnotations;\n },\n [canvas]\n );\n}\n","function x(t) {\n return t.type === \"SpecificResource\" ? [t.source, { selector: t.selector }] : [t, { selector: null }];\n}\nconst d = {}, b = {\n get(t) {\n return t;\n },\n setMetaValue([t, o, r], i) {\n const e = b.getResourceMeta(t, o), n = e ? e[r] : void 0, a = typeof i == \"function\" ? i(n) : i;\n d[t] = {\n ...d[t] || {},\n [o]: {\n ...(d[t] || {})[o] || {},\n [r]: a\n }\n };\n },\n getResourceMeta: (t, o) => {\n const r = d[t];\n if (r)\n return o ? r[o] : r;\n }\n};\nfunction M(t = b) {\n function o(e) {\n const n = e ? typeof e == \"string\" ? t.get(e) : e : null;\n if (!n)\n return [];\n const a = t.get(n.items, { parent: n }), c = [];\n for (const f of a)\n c.push(...t.get(f.items, { parent: f }));\n return c;\n }\n function r(e, n = []) {\n const a = Array.isArray(e) ? e : o(e), c = [];\n let f = null;\n const h = [];\n for (const s of a) {\n if (s.type !== \"Annotation\")\n throw new Error(\"getPaintables() accept either a canvas or list of annotations\");\n const A = Array.from(Array.isArray(s.body) ? s.body : [s.body]);\n for (const w of A) {\n const [m, { selector: P }] = x(w), u = t.get(m), p = (u.type || \"unknown\").toLowerCase();\n if (p === \"choice\") {\n const g = t.get(u.items, { parent: u.id }), y = n.length ? n.map((l) => g.find((V) => V.id === l)).filter(Boolean) : [g[0]];\n y.length === 0 && y.push(g[0]), f = {\n type: \"single-choice\",\n items: g.map((l) => ({\n id: l.id,\n label: l.label,\n selected: y.indexOf(l) !== -1\n })),\n label: m.label\n }, A.push(...y);\n continue;\n }\n c.indexOf(p) === -1 && c.push(p), h.push({\n type: p,\n annotationId: s.id,\n resource: u,\n target: s.target,\n selector: P\n });\n }\n }\n return {\n types: c,\n items: h,\n choice: f\n };\n }\n function i(e) {\n const { choice: n } = r(e);\n return n;\n }\n return {\n getAllPaintingAnnotations: o,\n getPaintables: r,\n extractChoices: i\n };\n}\nexport {\n M as createPaintingAnnotationsHelper,\n x as parseSpecificResource\n};\n//# sourceMappingURL=painting-annotations.mjs.map\n","import { useCallback, useMemo, useState } from 'react';\nimport { useVault } from './useVault';\nimport { usePaintingAnnotations } from './usePaintingAnnotations';\nimport { createPaintingAnnotationsHelper } from '@iiif/helpers/painting-annotations';\n\nexport function usePaintables(\n options?: { defaultChoices?: string[]; enableSingleAnnotation?: boolean },\n deps: any[] = []\n) {\n const vault = useVault();\n const helper = useMemo(() => {\n return createPaintingAnnotationsHelper(vault);\n }, []);\n const paintingAnnotations = usePaintingAnnotations({ enableSingleAnnotation: options?.enableSingleAnnotation });\n const [enabledChoices, setEnabledChoices] = useState<string[]>(options?.defaultChoices || []);\n\n const paintables = useMemo(\n () => helper.getPaintables(paintingAnnotations, enabledChoices),\n [vault, paintingAnnotations, enabledChoices, ...deps]\n );\n\n const makeChoice = useCallback(\n (\n id: string,\n { deselectOthers = true, deselect = false }: { deselectOthers?: boolean; deselect?: boolean } = {}\n ) => {\n if (paintables.choice) {\n // Don't support multiple choice yet.\n if (paintables.choice.type !== 'single-choice') {\n throw new Error('Complex choice not supported yet');\n }\n\n setEnabledChoices((prevChoices) => {\n if (deselect) {\n const without = prevChoices.filter((e) => e !== id);\n\n if (without.length === 0) {\n const defaultId = paintables.items[0].resource.id;\n if (defaultId) {\n return [defaultId];\n } else {\n return [];\n }\n }\n\n return without;\n }\n\n if (deselectOthers) {\n return [id];\n }\n\n const newChoices = [...prevChoices];\n\n // Add the default ID.\n if (newChoices.length === 0 && paintables.items.length) {\n const defaultId = paintables.items[0].resource.id;\n if (defaultId) {\n newChoices.push(defaultId);\n }\n }\n\n if (prevChoices.indexOf(id) !== -1) {\n return prevChoices;\n }\n\n return [...prevChoices, id];\n });\n }\n },\n [paintables.choice]\n );\n\n const actions = { makeChoice };\n\n return [paintables, actions] as const;\n}\n","import { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { unsupportedStrategy } from './rendering-utils';\nimport { AnnotationPageDescription } from './resource-types';\nimport { ExternalWebResource } from '@iiif/presentation-3';\nimport { RenderingStrategy } from './strategies';\nimport { ChoiceDescription, Paintables } from '@iiif/helpers';\n\nexport type Single3DModelStrategy = {\n type: '3d-model';\n model: ExternalWebResource;\n choice?: ChoiceDescription; // future\n annotations?: AnnotationPageDescription; // future\n};\n\nconst supportedFormats = ['model/gltf-binary'];\n\nexport function get3dStrategy(canvas: CanvasNormalized, paintables: Paintables): RenderingStrategy {\n const first = paintables.items[0];\n const resource = first.resource as ExternalWebResource;\n\n if (!resource.format) {\n return unsupportedStrategy('Unknown format');\n }\n\n if (supportedFormats.indexOf(resource.format) === -1) {\n return unsupportedStrategy(`3D format: ${resource.format} is unsupported`);\n }\n\n return {\n type: '3d-model',\n model: resource as any,\n } as Single3DModelStrategy;\n}\n","import { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { unsupportedStrategy } from './rendering-utils';\nimport { MediaStrategy } from './strategies';\nimport { Paintables } from '@iiif/helpers';\n\nexport function getAudioStrategy(canvas: CanvasNormalized, paintables: Paintables) {\n if (!canvas.duration) {\n return unsupportedStrategy('No duration on canvas');\n }\n\n if (paintables.items.length > 1) {\n return unsupportedStrategy('Only one audio source supported');\n }\n\n const audioResource = paintables.items[0]?.resource as any; // @todo stronger type for what this might be.\n\n if (!audioResource) {\n return unsupportedStrategy('Unknown audio');\n }\n\n if (!audioResource.format) {\n return unsupportedStrategy('Audio does not have format');\n }\n\n return {\n type: 'media',\n media: {\n annotationId: paintables.items[0].annotationId,\n duration: canvas.duration,\n url: audioResource.id,\n type: 'Sound',\n target: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n format: audioResource.format,\n selector: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n },\n annotations: {\n pages: [],\n },\n } as MediaStrategy;\n}\n","import { IIIFExternalWebResource } from '@iiif/presentation-3';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { ImageServiceLoaderType } from '../../hooks/useLoadImageService';\nimport { AnnotationPageDescription, ImageWithOptionalService } from './resource-types';\nimport { getImageServices } from '@atlas-viewer/iiif-image-api';\nimport { getParsedTargetSelector, unsupportedStrategy } from './rendering-utils';\nimport { expandTarget } from '@iiif/helpers/annotation-targets';\nimport { BoxSelector, ChoiceDescription, Paintables } from '@iiif/helpers';\n\nexport type SingleImageStrategy = {\n type: 'images';\n image: ImageWithOptionalService;\n images: Array<ImageWithOptionalService>;\n choice?: ChoiceDescription;\n annotations?: AnnotationPageDescription;\n};\n\nexport function getImageStrategy(\n canvas: CanvasNormalized,\n paintables: Paintables,\n loadImageService: ImageServiceLoaderType\n) {\n const imageTypes: ImageWithOptionalService[] = [];\n for (const singleImage of paintables.items) {\n // SingleImageStrategy\n const resource: IIIFExternalWebResource =\n singleImage.resource && singleImage.resource.type === 'SpecificResource'\n ? singleImage.resource.source\n : singleImage.resource;\n\n // Validation.\n if (!resource.id) {\n // @todo we could skip this?\n return unsupportedStrategy('No resource Identifier');\n }\n\n let imageService = undefined;\n if (resource.service) {\n const imageServices = getImageServices(resource as any) as any[];\n if (imageServices[0]) {\n imageService = loadImageService(imageServices[0], canvas);\n }\n }\n\n // Target is where it should be painted.\n const defaultTarget: BoxSelector = {\n type: 'BoxSelector',\n spatial: {\n x: 0,\n y: 0,\n width: Number(canvas.width),\n height: Number(canvas.height),\n },\n };\n\n const [target, source] = getParsedTargetSelector(canvas, singleImage.target);\n if (!(source.id === canvas.id || decodeURIComponent(source.id || '') === (canvas.id || ''))) {\n // Skip invalid targets.\n continue;\n }\n\n // Support for cropping before painting an annotation.\n // @todo this isn't working.\n const defaultImageSelector =\n (singleImage.resource as any).width && (singleImage.resource as any).height\n ? ({\n type: 'BoxSelector',\n spatial: {\n x: 0,\n y: 0,\n width: (singleImage.resource as any).width,\n height: (singleImage.resource as any).height,\n },\n } as BoxSelector)\n : undefined;\n\n let imageSelector = singleImage.resource.type === 'SpecificResource' ? expandTarget(singleImage.resource) : null;\n\n if (singleImage.selector) {\n const found = expandTarget({\n type: 'SpecificResource',\n source: singleImage.resource,\n selector: singleImage.selector,\n });\n\n if (found) {\n imageSelector = found;\n }\n }\n\n const selector: undefined | BoxSelector =\n imageSelector &&\n imageSelector.selector &&\n (imageSelector.selector.type === 'BoxSelector' || imageSelector.selector.type === 'TemporalBoxSelector')\n ? {\n type: 'BoxSelector',\n spatial: {\n x: imageSelector.selector.spatial.x,\n y: imageSelector.selector.spatial.y,\n width: imageSelector.selector.spatial.width,\n height: imageSelector.selector.spatial.height,\n },\n }\n : undefined;\n\n if (imageService && !imageService.id) {\n (imageService as any).id = imageService['@id'];\n }\n\n const imageType: ImageWithOptionalService = {\n id: resource.id,\n type: 'Image',\n annotationId: (singleImage as any).annotationId,\n width: Number(target || selector ? resource.width : canvas.width),\n height: Number(target || selector ? resource.height : canvas.height),\n service: imageService,\n sizes:\n imageService && imageService.sizes\n ? imageService.sizes\n : resource.width && resource.height\n ? [{ width: resource.width, height: resource.height }]\n : [],\n target: target && target.type !== 'PointSelector' ? target : defaultTarget,\n selector: selector,\n };\n\n imageTypes.push(imageType);\n }\n\n return {\n type: 'images',\n image: imageTypes[0],\n images: imageTypes,\n choice: paintables.choice,\n } as SingleImageStrategy;\n}\n","import { InternationalString } from '@iiif/presentation-3';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { AnnotationPageDescription } from './resource-types';\nimport { getParsedTargetSelector } from './rendering-utils';\nimport { RenderingStrategy } from './strategies';\nimport { ChoiceDescription, Paintables, SupportedTarget } from '@iiif/helpers';\n\nexport type TextualContentStrategy = {\n type: 'textual-content';\n items: { annotationId: string; text: InternationalString; target: SupportedTarget | null }[];\n choice?: ChoiceDescription; // future\n annotations?: AnnotationPageDescription; // future\n};\n\nfunction parseType(item: any, languageMap: InternationalString = {}, lang?: string) {\n const language = item.language || lang || 'none';\n switch (item.type) {\n case 'TextualBody': {\n if (typeof item.value !== 'undefined') {\n languageMap[language] = item.value;\n }\n break;\n }\n case 'List':\n case 'Composite':\n case 'Choice': {\n if (item.items) {\n item.items.forEach((inner: any) => parseType(inner, languageMap, language));\n }\n }\n }\n return languageMap;\n}\n\nexport function getTextualContentStrategy(canvas: CanvasNormalized, paintables: Paintables): RenderingStrategy {\n const items: TextualContentStrategy['items'] = [];\n\n paintables.items.forEach((item) => {\n if (item.resource) {\n const [target] = getParsedTargetSelector(canvas, item.target);\n items.push({ annotationId: item.annotationId, text: parseType(item.resource), target: target as any });\n }\n });\n\n return {\n type: 'textual-content',\n items,\n } as TextualContentStrategy;\n}\n","import { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { unsupportedStrategy } from './rendering-utils';\nimport { MediaStrategy } from './strategies';\nimport { Paintables } from '@iiif/helpers';\n\n// https://stackoverflow.com/a/27728417\nconst ytRegex = /^.*(?:(?:youtu\\.be\\/|v\\/|vi\\/|u\\/\\w\\/|embed\\/|shorts\\/)|(?:(?:watch)?\\?vi?=|&vi?=))([^#&?]*).*/;\n\nexport function getVideoStrategy(canvas: CanvasNormalized, paintables: Paintables) {\n const videoPaintables = paintables.items.filter((t) => t.type === 'video');\n\n let noDuration = false;\n\n if (!canvas.duration) {\n noDuration = true;\n }\n\n if (videoPaintables.length > 1) {\n return unsupportedStrategy('Only one video source supported');\n }\n\n const videoResource = videoPaintables[0]?.resource as any; // @todo stronger type for what this might be.\n const isYouTube = !!(videoResource.service || []).find((service: any) =>\n (service.profile || '').includes('youtube.com')\n );\n\n if (!isYouTube && noDuration) {\n return unsupportedStrategy('Video does not have duration');\n }\n\n if (!videoResource) {\n return unsupportedStrategy('Unknown video');\n }\n\n if (!videoResource.format || videoResource.format === 'text/html') {\n if (!isYouTube) {\n return unsupportedStrategy('Video does not have format');\n }\n }\n\n const media = {\n annotationId: (paintables.items[0] as any).annotationId,\n duration: canvas.duration,\n url: videoResource.id,\n type: 'Video',\n items: [],\n target: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n format: videoResource.format,\n selector: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n };\n\n if (isYouTube) {\n media.type = 'VideoYouTube';\n const id = videoResource.id.match(ytRegex);\n if (!id[1]) {\n return unsupportedStrategy('Video is not known youtube video');\n }\n (media as any).youTubeId = id[1];\n }\n\n // @todo support VTT\n\n return {\n type: 'media',\n media,\n annotations: {\n pages: [],\n },\n } as MediaStrategy;\n}\n","import { get3dStrategy } from './3d-strategy';\nimport { getAudioStrategy } from './audio-strategy';\nimport { getImageStrategy } from './image-strategy';\nimport { emptyStrategy, unknownResponse, unsupportedStrategy } from './rendering-utils';\nimport { getTextualContentStrategy } from './textual-content-strategy';\nimport { getVideoStrategy } from './video-strategy';\nimport type { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport type { Paintables } from '@iiif/helpers/painting-annotations';\nimport type { ImageServiceLoaderType } from '../../hooks/useLoadImageService';\n\ninterface GetRenderStrategyOptions {\n canvas: CanvasNormalized | null | undefined;\n paintables: Paintables;\n supports: string[];\n loadImageService: ImageServiceLoaderType;\n}\n\nexport function getRenderingStrategy({ canvas, paintables, supports, loadImageService }: GetRenderStrategyOptions) {\n if (!canvas) {\n console.log('No canvas');\n return unknownResponse;\n }\n\n if (paintables.types.length === 0) {\n if (supports.indexOf('empty') !== -1) {\n return emptyStrategy(canvas.width, canvas.height);\n }\n console.log('No paintables');\n return unknownResponse;\n }\n\n if (paintables.types.length !== 1) {\n if (paintables.types.length === 2 && paintables.types.indexOf('text') !== -1) {\n paintables.types = paintables.types.filter((t) => t !== 'text');\n } else {\n if (supports.indexOf('complex-timeline') === -1) {\n return unsupportedStrategy('Complex timeline not supported');\n }\n return unsupportedStrategy('ComplexTimelineStrategy not yet supported');\n }\n }\n\n const mainType = paintables.types[0];\n\n // Image\n if (mainType === 'image') {\n if (supports.indexOf('images') === -1) {\n return unsupportedStrategy('Image not supported');\n }\n\n return getImageStrategy(canvas, paintables, loadImageService);\n }\n\n // 3D\n if (mainType === 'Model' || mainType === 'model') {\n if (supports.indexOf('3d-model') === -1) {\n return unsupportedStrategy('3D not supported');\n }\n\n return get3dStrategy(canvas, paintables);\n }\n\n if (mainType === 'textualbody') {\n if (supports.indexOf('textual-content') === -1) {\n return unsupportedStrategy('Textual content not supported');\n }\n\n return getTextualContentStrategy(canvas, paintables);\n }\n\n if (mainType === 'sound' || mainType === 'audio') {\n if (supports.indexOf('media') === -1) {\n return unsupportedStrategy('Media not supported');\n }\n\n // Media Strategy with audio or audio sequence.\n return getAudioStrategy(canvas, paintables);\n }\n\n if (mainType === 'video') {\n if (supports.indexOf('media') === -1) {\n return unsupportedStrategy('Media not supported');\n }\n\n // Media Strategy with video or video sequence.\n return getVideoStrategy(canvas, paintables);\n }\n\n // Unknown fallback.\n return unknownResponse;\n}\n","import { AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useCanvas } from './useCanvas';\nimport { useMemo } from 'react';\nimport { useVault } from './useVault';\nimport { RenderingStrategy } from '../features/rendering-strategy/strategies';\nimport {\n emptyActions,\n emptyStrategy,\n unknownResponse,\n unsupportedStrategy,\n} from '../features/rendering-strategy/rendering-utils';\nimport { useAnnotationPageManager } from './useAnnotationPageManager';\nimport { useManifest } from './useManifest';\nimport { useResources } from './useResources';\nimport { useLoadImageService } from './useLoadImageService';\nimport { usePaintables } from './usePaintables';\nimport { getRenderingStrategy } from '../features/rendering-strategy/get-rendering-strategy';\n\n// @todo we may not have any actions returned from the rendering strategy.\nexport type StrategyActions = {\n makeChoice: (id: string, options?: { deselectOthers?: boolean; deselect?: boolean }) => void;\n};\n\nexport type UseRenderingStrategy = [RenderingStrategy, StrategyActions];\n\nexport type UseRenderingStrategyOptions = {\n strategies?: Array<RenderingStrategy['type']>;\n annotationPageManagerId?: string;\n enableSingleAnnotation?: boolean;\n defaultChoices?: string[];\n};\n\nexport function useRenderingStrategy(options?: UseRenderingStrategyOptions): UseRenderingStrategy {\n const manifest = useManifest();\n const canvas = useCanvas();\n const vault = useVault();\n const [loadImageService, imageServiceStatus] = useLoadImageService();\n const { enabledPageIds } = useAnnotationPageManager(options?.annotationPageManagerId || manifest?.id || canvas?.id, {\n all: false,\n });\n const enabledPages = useResources<AnnotationPageNormalized>(enabledPageIds, 'AnnotationPage');\n\n const supports: RenderingStrategy['type'][] = options?.strategies || [\n 'empty',\n 'images',\n 'media',\n 'textual-content',\n 'complex-timeline',\n ];\n\n const [paintables, actions] = usePaintables(options, [imageServiceStatus]);\n\n const strategy = useMemo(() => {\n return getRenderingStrategy({ canvas, paintables, supports, loadImageService });\n }, [canvas, paintables, vault, actions.makeChoice]);\n\n return useMemo(() => {\n if (strategy.type === 'unknown') {\n return [strategy, emptyActions];\n }\n\n return [\n {\n ...strategy,\n annotations: { pages: enabledPages },\n },\n actions,\n ];\n }, [strategy, enabledPages]);\n}\n","import { Vault } from '@iiif/helpers/vault';\nimport { useVault } from './useVault';\nimport { useEffect } from 'react';\n\nexport const useVaultEffect = (callback: (vault: Vault) => void, deps: any[] = []): void => {\n const vault = useVault();\n\n useEffect(() => {\n callback(vault);\n }, [vault, ...deps]);\n};\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport { useManifest } from './useManifest';\nimport { useCanvas } from './useCanvas';\nimport { useVaultEffect } from './useVaultEffect';\nimport { ImageCandidate, ImageCandidateRequest } from '@atlas-viewer/iiif-image-api';\nimport { useImageServiceLoader } from '../context/ImageServiceLoaderContext';\nimport { createThumbnailHelper } from '@iiif/helpers/thumbnail';\nimport { useVault } from './useVault';\n\nexport function useThumbnail(\n request: ImageCandidateRequest,\n dereference?: boolean,\n { canvasId, manifestId }: { canvasId?: string; manifestId?: string } = {}\n) {\n const vault = useVault();\n const loader = useImageServiceLoader();\n const helper = useMemo(() => createThumbnailHelper(vault, { imageServiceLoader: loader }), [vault, loader]);\n\n const [thumbnail, setThumbnail] = useState<ImageCandidate | undefined>();\n const manifest = useManifest(manifestId ? { id: manifestId } : undefined);\n const canvas = useCanvas(canvasId ? { id: canvasId } : undefined);\n const subject = canvas ? canvas : manifest;\n const didUnmount = useRef(false);\n\n useEffect(() => {\n didUnmount.current = false;\n return () => {\n didUnmount.current = true;\n };\n }, []);\n\n if (!subject) {\n throw new Error('Must be called under a manifest or canvas context.');\n }\n\n useVaultEffect(\n (v) => {\n helper.getBestThumbnailAtSize(subject, request, dereference).then((thumb) => {\n if (thumb.best && !didUnmount.current) {\n setThumbnail(thumb.best);\n }\n });\n },\n [subject]\n );\n\n return thumbnail;\n}\n","import { RefObject, useCallback, useEffect, useReducer, useRef } from 'react';\n\ntype MediaPlayerAction =\n | { type: 'PLAY_PAUSE' }\n | { type: 'TOGGLE_MUTE' }\n | { type: 'MUTE' }\n | { type: 'UNMUTE' }\n | { type: 'SET_VOLUME'; volume: number }\n | { type: 'PLAY' }\n | { type: 'PLAY_REQUESTED' }\n | { type: 'PAUSE' }\n | { type: 'FINISHED' };\n\nexport type MediaPlayerState = {\n isPlaying: boolean;\n isMuted: boolean;\n playRequested: boolean;\n volume: number;\n isFinished: boolean;\n duration: number;\n};\n\nexport type MediaPlayerActions = {\n play(): void;\n pause(): void;\n playPause(): void;\n mute(): void;\n unmute(): void;\n toggleMute(): void;\n setVolume(volume: number): void;\n setDurationPercent(percent: number): void;\n setTime(time: number): void;\n};\n\nfunction getDefaultState(duration: number): MediaPlayerState {\n return { isMuted: false, playRequested: false, isPlaying: false, isFinished: false, volume: 100, duration };\n}\n\nfunction reducer(state: MediaPlayerState, action: MediaPlayerAction) {\n switch (action.type) {\n case 'FINISHED':\n return { ...state, isFinished: true, isPlaying: false, playRequested: false };\n case 'PLAY_PAUSE':\n return { ...state, isFinished: false, isPlaying: !state.isPlaying };\n case 'PLAY_REQUESTED':\n return { ...state, isFinished: false, playRequested: true };\n case 'PAUSE':\n return { ...state, isPlaying: false };\n case 'PLAY':\n return { ...state, isFinished: false, playRequested: false, isPlaying: true };\n case 'MUTE':\n return { ...state, isMuted: true };\n case 'SET_VOLUME':\n return { ...state, volume: action.volume, isMuted: action.volume === 0 };\n case 'TOGGLE_MUTE':\n return { ...state, isMuted: !state.isMuted };\n case 'UNMUTE':\n return { ...state, isMuted: false };\n }\n return state;\n}\n\nexport function formatTime(time: number) {\n const seconds = Math.round(time);\n return `${Math.floor(seconds / 60)}:${`${seconds % 60}`.padStart(2, '0')}`;\n}\n\nexport function useSimpleMediaPlayer(props: { duration: number }): readonly [\n {\n element: RefObject<HTMLAudioElement | HTMLVideoElement>;\n currentTime: RefObject<HTMLDivElement>;\n progress: RefObject<HTMLDivElement>;\n },\n MediaPlayerState,\n MediaPlayerActions\n] {\n const [state, dispatch] = useReducer(reducer, getDefaultState(props.duration));\n\n const media = useRef<HTMLAudioElement | HTMLVideoElement>(null);\n const currentTime = useRef<HTMLDivElement>(null);\n const progress = useRef<HTMLDivElement>(null);\n const _isMuted = useRef(false);\n\n const _updateCurrentTime = useCallback(() => {\n if (currentTime.current && media.current) {\n currentTime.current.innerHTML = formatTime(media.current.currentTime);\n if (progress.current) {\n progress.current.style.width = `${(media.current.currentTime / props.duration) * 100}%`;\n }\n if (_isMuted.current !== media.current.muted) {\n _isMuted.current = media.current.muted;\n dispatch(media.current.muted ? { type: 'MUTE' } : { type: 'UNMUTE' });\n }\n }\n }, [props.duration]);\n\n const play = useCallback(() => {\n if (media.current) {\n dispatch({ type: 'PLAY_REQUESTED' });\n media.current.play().then(() => {\n dispatch({ type: 'PLAY' });\n });\n _updateCurrentTime();\n }\n }, [_updateCurrentTime]);\n\n const playPause = useCallback(() => {\n if (media.current) {\n if (media.current.duration > 0 && media.current.paused) {\n play();\n } else {\n pause();\n }\n }\n }, [_updateCurrentTime]);\n\n const pause = useCallback(() => {\n if (media.current) {\n media.current.pause();\n dispatch({ type: 'PAUSE' });\n _updateCurrentTime();\n }\n }, [_updateCurrentTime]);\n\n const toggleMute = useCallback(() => {\n if (media.current) {\n media.current.muted = !media.current.muted;\n dispatch(media.current.muted ? { type: 'MUTE' } : { type: 'UNMUTE' });\n }\n }, []);\n\n const mute = useCallback(() => {\n if (media.current) {\n media.current.muted = true;\n dispatch({ type: 'MUTE' });\n }\n }, []);\n\n const unmute = useCallback(() => {\n if (media.current) {\n media.current.muted = false;\n dispatch({ type: 'UNMUTE' });\n }\n }, []);\n\n const setVolume = useCallback((newVolume: number) => {\n if (media.current) {\n media.current.muted = false;\n media.current.volume = newVolume / 100;\n dispatch({ type: 'SET_VOLUME', volume: newVolume });\n }\n }, []);\n\n const setDurationPercent = useCallback((percent: number) => {\n if (media.current) {\n media.current.currentTime = Math.max(0, Math.min(percent * props.duration, props.duration));\n _updateCurrentTime();\n }\n }, []);\n\n const setTime = useCallback((time: number) => {\n if (media.current) {\n media.current.currentTime = Math.max(0, Math.min(time, props.duration));\n _updateCurrentTime();\n }\n }, []);\n\n useEffect(() => {\n const interval = setInterval(() => {\n _updateCurrentTime();\n }, 350);\n\n return () => clearInterval(interval);\n }, [_updateCurrentTime, props.duration]);\n\n useEffect(() => {\n const ended = () => {\n dispatch({ type: 'FINISHED' });\n };\n const _media = media.current;\n\n _media?.addEventListener('ended', ended);\n\n return () => _media?.removeEventListener('ended', ended);\n }, []);\n\n return [\n { element: media, currentTime, progress },\n state,\n {\n play,\n pause,\n playPause,\n mute,\n unmute,\n toggleMute,\n setVolume,\n setDurationPercent,\n setTime,\n },\n ];\n}\n","import { createContext, ReactNode, RefObject, useContext } from 'react';\nimport { MediaPlayerActions, MediaPlayerState } from '../hooks/useSimpleMediaPlayer';\n\nconst MediaReactContextState = createContext<MediaPlayerState | null>(null);\nconst MediaReactContextActions = createContext<MediaPlayerActions | null>(null);\nconst MediaReactContextElements = createContext<{\n element: RefObject<HTMLAudioElement | HTMLVideoElement>;\n currentTime: RefObject<HTMLDivElement>;\n progress: RefObject<HTMLDivElement>;\n} | null>(null);\n\nexport function useMediaState() {\n const ctx = useContext(MediaReactContextState);\n if (!ctx) {\n throw new Error('Ctx not found');\n }\n return ctx;\n}\n\nexport function useMediaActions() {\n const ctx = useContext(MediaReactContextActions);\n if (!ctx) {\n throw new Error('Ctx not found');\n }\n return ctx;\n}\n\nexport function useMediaElements() {\n const ctx = useContext(MediaReactContextElements);\n if (!ctx) {\n throw new Error('Ctx not found');\n }\n return ctx;\n}\n\nexport function MediaPlayerProvider({\n actions,\n state,\n children,\n currentTime,\n progress,\n element,\n}: {\n actions: MediaPlayerActions;\n state: MediaPlayerState;\n children: ReactNode;\n currentTime: RefObject<HTMLDivElement>;\n progress: RefObject<HTMLDivElement>;\n element: RefObject<HTMLAudioElement | HTMLVideoElement>;\n}) {\n return (\n <MediaReactContextElements.Provider value={{ currentTime, progress, element }}>\n <MediaReactContextActions.Provider value={actions}>\n <MediaReactContextState.Provider value={state}>{children}</MediaReactContextState.Provider>\n </MediaReactContextActions.Provider>\n </MediaReactContextElements.Provider>\n );\n}\n","import { ReactNode } from 'react';\nimport { useSimpleMediaPlayer } from '../../hooks/useSimpleMediaPlayer';\nimport { SingleAudio } from '../../features/rendering-strategy/resource-types';\nimport { MediaPlayerProvider } from '../../context/MediaContext';\nimport { useOverlay } from '../context/overlays';\n\nexport function AudioHTML({ media, children }: { media: SingleAudio; children: ReactNode }) {\n const [{ element, currentTime, progress }, state, actions] = useSimpleMediaPlayer({ duration: media.duration });\n\n return (\n <MediaPlayerProvider\n state={state}\n actions={actions}\n currentTime={currentTime}\n progress={progress}\n element={element}\n >\n <audio ref={element} src={media.url} />\n {children}\n </MediaPlayerProvider>\n );\n}\n\nexport function Audio({\n media,\n mediaControlsDeps,\n children,\n}: {\n media: SingleAudio;\n mediaControlsDeps?: any[];\n children: ReactNode;\n}) {\n useOverlay('portal', 'audio', AudioHTML, { media, children }, [media, ...(mediaControlsDeps || [])]);\n\n return null;\n}\n","import { ReactNode, RefObject } from 'react';\nimport { useSimpleMediaPlayer } from '../../hooks/useSimpleMediaPlayer';\nimport { SingleVideo } from '../../features/rendering-strategy/resource-types';\nimport { MediaPlayerProvider } from '../../context/MediaContext';\nimport { useOverlay } from '../context/overlays';\n\nexport function VideoHTML({\n element,\n media,\n playPause,\n}: {\n element: RefObject<any>;\n media: SingleVideo;\n playPause: () => void;\n}) {\n const Component = 'div' as any;\n return (\n <Component className=\"video-container\" part=\"video-container\" onClick={playPause}>\n <style>\n {`\n .video-container {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: #000;\n z-index: 13;\n display: flex;\n justify-content: center;\n pointer-events: visible;\n }\n `}\n </style>\n <video ref={element as any} src={media.url} style={{ width: '100%', objectFit: 'contain' }} />\n </Component>\n );\n}\n\nexport function Video({\n media,\n mediaControlsDeps,\n children,\n}: {\n media: SingleVideo;\n mediaControlsDeps?: any[];\n children: ReactNode;\n}) {\n const [{ element, currentTime, progress }, state, actions] = useSimpleMediaPlayer({ duration: media.duration });\n\n useOverlay('overlay', 'video-element', VideoHTML, {\n element,\n media,\n playPause: actions.playPause,\n });\n\n useOverlay(\n 'portal',\n 'custom-controls',\n MediaPlayerProvider,\n {\n state: state,\n actions: actions,\n currentTime: currentTime,\n progress: progress,\n element: element,\n children,\n },\n [currentTime, state, media, ...(mediaControlsDeps || [])]\n );\n\n return null;\n}\n","// @ts-ignore\nimport ModelViewer from 'react-model-viewer';\nimport { useOverlay } from '../context/overlays';\n\nexport function ModelHTML({ model }: { model: any }) {\n return (\n <>\n <style>\n {`\n .model-container {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: #000;\n z-index: 13;\n display: flex;\n justify-content: center;\n pointer-events: visible;\n }\n `}\n </style>\n <div className=\"model-container\">\n {/*@ts-ignore*/}\n <model-viewer\n interaction-prompt=\"none\"\n style={{ width: '100%', height: '100%' }}\n camera-controls=\"\"\n ar-status=\"not-presenting\"\n src={model.id}\n />\n </div>\n </>\n );\n}\n\nexport function Model({ model, name }: { model: any; name?: string }) {\n useOverlay('overlay', `model-${name}`, ModelHTML, { model }, [model]);\n\n return null;\n}\n","import { BoxStyle } from '@atlas-viewer/atlas';\nimport { useCanvas } from '../../hooks/useCanvas';\n\nexport function CanvasBackground({ style }: { style?: BoxStyle }) {\n const canvas = useCanvas();\n\n if (!canvas || !canvas.height || !canvas.width) {\n return null;\n }\n\n return (\n <box\n interactive={false}\n target={{ x: 0, y: 0, width: Number(canvas.width), height: Number(canvas.height) }}\n style={style}\n />\n );\n}\n","import { InternationalString } from '@iiif/presentation-3';\nimport React, { ReactNode, useMemo } from 'react';\n\nconst LanguageContext = React.createContext<string>('en');\n\nexport function LanguageProvider(props: { language: string; children: ReactNode }) {\n return <LanguageContext.Provider value={props.language}>{props.children}</LanguageContext.Provider>;\n}\n\nexport function useIIIFLanguage() {\n return React.useContext(LanguageContext);\n}\n\nfunction getLanguagePartFromCode(code: string) {\n return code.indexOf('-') !== -1 ? code.slice(0, code.indexOf('-')) : code;\n}\n\ntype LanguageStringProps = {\n [key: string]: any;\n} & { as?: string | React.FC<any>; language: string; viewingDirection?: 'rtl' | 'rtl' };\n\nexport function LanguageString({ as: Component, language, children, viewingDirection, ...props }: LanguageStringProps) {\n const i18nLanguage = useIIIFLanguage();\n\n const isSame = useMemo(() => {\n return getLanguagePartFromCode(i18nLanguage) === getLanguagePartFromCode(language);\n }, [i18nLanguage, language]);\n\n if (isSame) {\n if (Component) {\n return <Component {...props}>{children}</Component>;\n }\n\n return <span {...props}>{children}</span>;\n }\n\n if (Component) {\n return (\n <Component {...props} lang={language} dir={viewingDirection}>\n {children}\n </Component>\n );\n }\n\n return (\n <span {...props} lang={language} dir={viewingDirection}>\n {children}\n </span>\n );\n}\n\nfunction getClosestLanguage(i18nLanguage: string, languages: string[], i18nLanguages: string[]) {\n if (languages.length === 0) {\n return undefined;\n }\n\n // Only one option.\n if (languages.length === 1) {\n return languages[0];\n }\n\n // Exact match.\n if (languages.indexOf(i18nLanguage) !== -1) {\n return i18nLanguage;\n }\n\n // Root match (en-us === en)\n const root = i18nLanguage.indexOf('-') !== -1 ? i18nLanguage.slice(0, i18nLanguage.indexOf('-')) : null;\n if (root && languages.indexOf(root) !== -1) {\n return root;\n }\n\n // All of the fall backs.\n for (const lang of i18nLanguages) {\n if (languages.indexOf(lang) !== -1) {\n return lang;\n }\n }\n\n if (languages.indexOf('none') !== -1) {\n return 'none';\n }\n\n if (languages.indexOf('@none') !== -1) {\n return '@none';\n }\n\n // Finally, fall back to the first.\n return languages[0];\n}\n\nexport const useClosestLanguage = (getLanguages: () => string[], deps: any[] = []): string | undefined => {\n const i18nLanguage = useIIIFLanguage();\n\n return useMemo(() => {\n const languages = getLanguages();\n\n return getClosestLanguage(i18nLanguage, languages, []);\n }, [i18nLanguage, ...deps]);\n};\n\nexport function useLocaleString(\n inputText: InternationalString | string | null | undefined,\n defaultText?: string,\n separator = '\\n'\n) {\n const language = useClosestLanguage(() => Object.keys(inputText || {}), [inputText]);\n return [\n useMemo(() => {\n if (!inputText) {\n return defaultText || '';\n }\n if (typeof inputText === 'string') {\n return inputText;\n }\n\n const candidateText = language ? inputText[language] : undefined;\n if (candidateText) {\n if (typeof candidateText === 'string') {\n return candidateText;\n }\n return candidateText.join(separator);\n }\n\n return '';\n }, [language, defaultText, inputText]),\n language,\n ] as const;\n}\n\nexport function useCreateLocaleString() {\n const i18nLanguage = useIIIFLanguage();\n\n return function createLocaleString(\n inputText: InternationalString | string | null | undefined,\n defaultText?: string,\n separator?: string\n ) {\n const languages = Object.keys(inputText || {});\n const language = getClosestLanguage(i18nLanguage, languages, []);\n\n if (!inputText) {\n return defaultText || '';\n }\n if (typeof inputText === 'string') {\n return inputText;\n }\n\n const candidateText = language ? inputText[language] : undefined;\n if (candidateText) {\n if (typeof candidateText === 'string') {\n return candidateText;\n }\n return candidateText.join(typeof separator !== 'undefined' ? separator : '\\n');\n }\n\n return '';\n };\n}\n\ntype LocaleStringProps = {\n as?: string | React.FC<any>;\n defaultText?: string;\n to?: string;\n separator?: string;\n enableDangerouslySetInnerHTML?: boolean;\n children: InternationalString | string | null | undefined;\n style?: React.CSSProperties;\n extraProps?: any;\n} & Record<string, any>;\n\nexport function LocaleString({\n as: Component,\n defaultText,\n enableDangerouslySetInnerHTML,\n children,\n separator,\n ...props\n}: LocaleStringProps) {\n const [text, language] = useLocaleString(children, defaultText, separator);\n\n if (language) {\n return (\n <LanguageString\n {...props}\n as={Component}\n language={language}\n title={enableDangerouslySetInnerHTML ? undefined : text}\n dangerouslySetInnerHTML={\n enableDangerouslySetInnerHTML\n ? {\n __html: text,\n }\n : undefined\n }\n >\n {enableDangerouslySetInnerHTML ? undefined : text}\n </LanguageString>\n );\n }\n\n if (Component) {\n return <Component {...props}>{text}</Component>;\n }\n\n return (\n <span\n {...props}\n title={enableDangerouslySetInnerHTML ? undefined : text}\n dangerouslySetInnerHTML={\n enableDangerouslySetInnerHTML\n ? {\n __html: text,\n }\n : undefined\n }\n >\n {enableDangerouslySetInnerHTML ? undefined : text}\n </span>\n );\n}\n","import { useSimpleMediaPlayer } from '../../hooks/useSimpleMediaPlayer';\nimport { useOverlay } from '../context/overlays';\nimport { SingleYouTubeVideo } from '../../features/rendering-strategy/resource-types';\nimport { ReactNode, RefObject, useRef } from 'react';\n\nexport function VideoYouTubeHTML({\n element,\n media,\n playPause,\n}: {\n element: RefObject<any>;\n media: SingleYouTubeVideo;\n playPause: () => void;\n}) {\n const player = useRef<HTMLIFrameElement>(null);\n\n if (!media.youTubeId) {\n return null;\n }\n\n const Component = 'div' as any;\n return (\n <Component className=\"video-container\" part=\"video-container\" onClick={playPause}>\n <style>\n {`\n .video-container {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: #000;\n z-index: 13;\n display: flex;\n justify-content: center;\n pointer-events: visible;\n }\n .video-yt {\n border: none;\n width: 100%;\n object-fit: contain;\n }\n `}\n </style>\n <iframe\n className=\"video-yt\"\n ref={player}\n src={`https://www.youtube.com/embed/${media.youTubeId}?enablejsapi=1&origin=${window.location.host}`}\n referrerPolicy=\"no-referrer\"\n sandbox=\"allow-scripts allow-same-origin allow-presentation\"\n ></iframe>\n </Component>\n );\n}\n\nexport function VideoYouTube({\n media,\n mediaControlsDeps,\n children,\n}: {\n media: SingleYouTubeVideo;\n mediaControlsDeps?: any[];\n children: ReactNode;\n}) {\n const [{ element, currentTime, progress }, state, actions] = useSimpleMediaPlayer({ duration: media.duration });\n\n useOverlay('overlay', 'video-element', VideoYouTubeHTML, {\n element,\n media,\n playPause: actions.playPause,\n });\n\n return null;\n}\n","import { createStylesHelper } from '@iiif/helpers/styles';\nimport { RenderImage } from './Image';\nimport React, { Fragment, ReactNode, useEffect, useLayoutEffect, useMemo } from 'react';\nimport { BoxStyle, HTMLPortal } from '@atlas-viewer/atlas';\nimport { useVirtualAnnotationPageContext } from '../../hooks/useVirtualAnnotationPageContext';\nimport { StrategyActions, useRenderingStrategy } from '../../hooks/useRenderingStrategy';\nimport { useVault } from '../../hooks/useVault';\nimport { useResourceEvents } from '../../hooks/useResourceEvents';\nimport { useThumbnail } from '../../hooks/useThumbnail';\nimport { useCanvas } from '../../hooks/useCanvas';\nimport { RenderAnnotationPage } from './AnnotationPage';\nimport { Audio } from './Audio';\nimport { EmptyStrategy, MediaStrategy, RenderingStrategy } from '../../features/rendering-strategy/strategies';\nimport { Video } from './Video';\nimport { Model } from './Model';\nimport { CanvasContext } from '../../context/CanvasContext';\nimport { SingleImageStrategy } from '../../features/rendering-strategy/image-strategy';\nimport { CanvasBackground } from './CanvasBackground';\nimport { ImageWithOptionalService } from '../../features/rendering-strategy/resource-types';\nimport { LocaleString } from '../../utility/i18n-utils';\nimport { useOverlay } from '../context/overlays';\nimport { useViewerPreset, ViewerPresetContext } from '../../context/ViewerPresetContext';\nimport { ChoiceDescription } from '@iiif/helpers';\nimport { useWorldSize } from '../context/world-size';\nimport { VideoYouTube } from './VideoYouTube';\n\nexport type CanvasProps = {\n x?: number;\n y?: number;\n onCreated?: any;\n onChoiceChange?: (choice?: ChoiceDescription) => void;\n registerActions?: (actions: StrategyActions) => void;\n defaultChoices?: Array<{ id: string; opacity?: number }>;\n isStatic?: boolean;\n keepCanvasScale?: boolean;\n children?: ReactNode;\n renderViewerControls?: (strategy: SingleImageStrategy | EmptyStrategy) => ReactNode;\n viewControlsDeps?: any[];\n renderMediaControls?: (strategy: MediaStrategy) => ReactNode;\n mediaControlsDeps?: any[];\n strategies?: Array<RenderingStrategy['type']>;\n backgroundStyle?: BoxStyle;\n alwaysShowBackground?: boolean;\n enableSizes?: boolean;\n enableYouTube?: boolean;\n ignoreSize?: boolean;\n throwOnUnknown?: boolean;\n onClickPaintingAnnotation?: (id: string, image: ImageWithOptionalService, e: any) => void;\n};\n\nexport function RenderCanvas({\n x,\n y,\n onChoiceChange,\n registerActions,\n defaultChoices,\n isStatic,\n renderViewerControls,\n renderMediaControls,\n viewControlsDeps,\n mediaControlsDeps,\n strategies,\n throwOnUnknown,\n backgroundStyle,\n alwaysShowBackground,\n keepCanvasScale = false,\n enableSizes = false,\n enableYouTube = true,\n onClickPaintingAnnotation,\n children,\n}: CanvasProps) {\n const canvas = useCanvas();\n const elementProps = useResourceEvents(canvas, ['deep-zoom']);\n const [virtualPage] = useVirtualAnnotationPageContext();\n const preset = useViewerPreset();\n const vault = useVault();\n const helper = useMemo(() => createStylesHelper(vault), [vault]);\n const [strategy, actions] = useRenderingStrategy({\n strategies: strategies || ['images'],\n defaultChoices: defaultChoices?.map(({ id }) => id),\n });\n const choice = strategy.type === 'images' ? strategy.choice : undefined;\n const bestScale = useMemo(() => {\n if (keepCanvasScale) {\n return 1;\n }\n return Math.max(\n 1,\n ...(strategy.type === 'images'\n ? strategy.images.map((i) => {\n return (i.width || 0) / i.target?.spatial.width;\n })\n : [])\n );\n }, [keepCanvasScale, strategy]);\n\n useWorldSize(bestScale);\n\n useEffect(() => {\n if (registerActions) {\n registerActions(actions);\n }\n }, [strategy.annotations]);\n\n useEffect(() => {\n if (defaultChoices) {\n for (const choice of defaultChoices) {\n if (typeof choice.opacity !== 'undefined') {\n helper.applyStyles({ id: choice.id }, 'atlas', {\n opacity: choice.opacity,\n });\n }\n }\n }\n }, [defaultChoices]);\n\n useLayoutEffect(() => {\n if (onChoiceChange) {\n onChoiceChange(choice);\n }\n }, [choice]);\n\n useOverlay(\n preset &&\n (strategy.type === 'images' ||\n strategy.type === 'empty' ||\n (strategy.type === 'textual-content' && renderViewerControls))\n ? 'overlay'\n : 'none',\n `canvas-portal-controls-${canvas?.id}`,\n ViewerPresetContext.Provider,\n renderViewerControls\n ? {\n value: preset || null,\n children: renderViewerControls(strategy as any),\n }\n : {},\n [canvas, preset, strategy, ...(viewControlsDeps || [])]\n );\n\n const thumbnail = useThumbnail({ maxWidth: 256, maxHeight: 256 });\n\n if (!canvas) {\n return null;\n }\n\n // accompanyingCanvas\n const accompanyingCanvas = canvas.accompanyingCanvas;\n\n const thumbnailFallbackImage =\n thumbnail && thumbnail.type === 'fixed' ? (\n <world-object height={canvas.height} width={canvas.width} x={x} y={y}>\n <world-image\n uri={thumbnail.id}\n target={{ x: 0, y: 0, width: canvas.width, height: canvas.height }}\n display={\n thumbnail.width && thumbnail.height\n ? {\n width: thumbnail.width,\n height: thumbnail.height,\n }\n : undefined\n }\n crop={undefined}\n />\n </world-object>\n ) : null;\n\n if (strategy.type === 'unknown') {\n if (thumbnailFallbackImage) {\n return thumbnailFallbackImage;\n }\n\n if (throwOnUnknown) {\n throw new Error(strategy.reason || 'Unknown image strategy');\n }\n\n return null;\n }\n\n const annotations = (\n <Fragment>\n {virtualPage ? <RenderAnnotationPage page={virtualPage} /> : null}\n {strategy.annotations && strategy.annotations.pages\n ? strategy.annotations.pages.map((page) => {\n return <RenderAnnotationPage key={page.id} page={page} />;\n })\n : null}\n {children}\n </Fragment>\n );\n\n const totalKey = strategy.type === 'images' ? strategy.images.length : 0;\n\n return (\n <>\n <world-object\n key={`${canvas.id}/${strategy.type}/${totalKey}`}\n height={canvas.height}\n width={canvas.width}\n // scale={bestScale}\n x={x}\n y={y}\n {...elementProps}\n >\n {strategy.type === 'empty' || alwaysShowBackground ? <CanvasBackground style={backgroundStyle} /> : null}\n {strategy.type === 'textual-content'\n ? strategy.items.map((item, n) => {\n return (\n <>\n <HTMLPortal\n key={n}\n // @ts-ignore\n onClick={\n onClickPaintingAnnotation\n ? (e: any) => {\n e.stopPropagation();\n onClickPaintingAnnotation(item.annotationId, item as any, e);\n }\n : undefined\n }\n target={(item.target as any)?.spatial || undefined}\n >\n <div data-textual-content={true}>\n <LocaleString enableDangerouslySetInnerHTML>{item.text}</LocaleString>\n </div>\n </HTMLPortal>\n {annotations}\n </>\n );\n })\n : null}\n {strategy.type === 'images' ? (\n <>\n {strategy.images.map((image, idx) => (\n <RenderImage\n isStatic={isStatic}\n key={image.id + idx}\n image={image}\n id={image.id}\n thumbnail={idx === 0 ? thumbnail : undefined}\n selector={image.selector}\n enableSizes={enableSizes}\n onClick={\n onClickPaintingAnnotation\n ? (e) => {\n e.stopPropagation();\n onClickPaintingAnnotation(image.annotationId, image, e);\n }\n : undefined\n }\n />\n ))}\n {annotations}\n </>\n ) : null}\n {strategy.type === '3d-model' ? <Model model={strategy.model} /> : null}\n {strategy.type === 'media' ? (\n <>\n {strategy.media.type === 'Sound' ? (\n <Audio media={strategy.media} mediaControlsDeps={mediaControlsDeps}>\n {thumbnailFallbackImage}\n {renderMediaControls ? renderMediaControls(strategy) : null}\n </Audio>\n ) : strategy.media.type === 'Video' ? (\n <Video media={strategy.media} mediaControlsDeps={mediaControlsDeps}>\n {thumbnailFallbackImage}\n {renderMediaControls ? renderMediaControls(strategy) : null}\n </Video>\n ) : strategy.media.type === 'VideoYouTube' && enableYouTube ? (\n <VideoYouTube media={strategy.media} mediaControlsDeps={mediaControlsDeps}>\n {thumbnailFallbackImage}\n {renderMediaControls ? renderMediaControls(strategy) : null}\n </VideoYouTube>\n ) : null}\n </>\n ) : null}\n {/* This is required to fix a race condition. */}\n </world-object>\n {strategy.type === 'media' && strategy.media.type === 'Sound' && accompanyingCanvas ? (\n <CanvasContext canvas={accompanyingCanvas.id}>\n <RenderCanvas renderViewerControls={renderViewerControls} />\n </CanvasContext>\n ) : null}\n </>\n );\n}\n","import { FC, forwardRef, ForwardRefExoticComponent, ReactNode, RefAttributes, useImperativeHandle } from 'react';\nimport { Viewer } from './Viewer';\nimport { RenderAnnotation } from './render/Annotation';\nimport { RenderAnnotationPage } from './render/AnnotationPage';\nimport { CanvasProps, RenderCanvas } from './render/Canvas';\nimport { RenderImage } from './render/Image';\nimport { CanvasBackground } from './render/CanvasBackground';\nimport { SimpleViewerProvider, useSimpleViewer } from '../viewers/SimpleViewerContext';\nimport { VaultProvider } from '../context/VaultContext';\nimport { useManifest } from '../hooks/useManifest';\nimport { useVisibleCanvases } from '../context/VisibleCanvasContext';\nimport { CanvasContext } from '../context/CanvasContext';\nimport { useExistingVault } from '../hooks/useExistingVault';\nimport { SimpleViewerContext } from '../viewers/SimpleViewerContext.types';\nimport { Audio, AudioHTML } from './render/Audio';\nimport { Video, VideoHTML } from './render/Video';\nimport { Model, ModelHTML } from './render/Model';\nimport { ViewerMode } from '@atlas-viewer/atlas';\n\ninterface CanvasPanelProps {\n manifest: string;\n startCanvas?: string;\n rangeId?: string;\n pagingEnabled?: boolean;\n header?: ReactNode;\n children?: ReactNode;\n mode?: ViewerMode;\n reuseAtlas?: boolean;\n\n // Inner props\n height?: number;\n spacing?: number;\n components?: {\n ViewerControls?: FC;\n MediaControls?: FC;\n };\n\n // Other components\n canvasProps?: Omit<Partial<CanvasProps>, 'x'>;\n annotations?: ReactNode;\n}\n\ninterface InnerProps {\n height?: number;\n canvasProps?: CanvasPanelProps['canvasProps'];\n spacing?: number;\n components?: CanvasPanelProps['components'];\n children?: ReactNode;\n annotations?: ReactNode;\n header?: ReactNode;\n reuseAtlas?: boolean;\n mode?: ViewerMode;\n}\n\nconst Inner = forwardRef<SimpleViewerContext, InnerProps>(function Inner(props, ref) {\n const manifest = useManifest();\n const canvases = useVisibleCanvases();\n const viewer = useSimpleViewer();\n const { ViewerControls, MediaControls } = props.components || {};\n\n useImperativeHandle(ref, () => viewer, [viewer]);\n\n if (!manifest) {\n return <div />;\n }\n\n let accumulator = 0;\n\n return (\n <>\n {props.header}\n <CanvasPanel.Viewer\n key={props.reuseAtlas ? '' : viewer.currentSequenceIndex}\n height={props.height}\n mode={props.mode}\n >\n {canvases.map((canvas, idx) => {\n const margin = accumulator;\n accumulator += canvas.width + (props.spacing || 0);\n return (\n <CanvasContext canvas={canvas.id} key={canvas.id}>\n <CanvasPanel.RenderCanvas\n key={canvas.id}\n strategies={['3d-model', 'media', 'images', 'empty', 'textual-content']}\n renderViewerControls={idx === 0 && ViewerControls ? () => <ViewerControls /> : undefined}\n renderMediaControls={idx === 0 && MediaControls ? () => <MediaControls /> : undefined}\n x={margin}\n {...(props.canvasProps || {})}\n >\n {props.annotations}\n </CanvasPanel.RenderCanvas>\n </CanvasContext>\n );\n })}\n </CanvasPanel.Viewer>\n {props.children}\n </>\n );\n});\n\ntype CanvasPanelType = ForwardRefExoticComponent<CanvasPanelProps & RefAttributes<SimpleViewerContext>> & {\n RenderImage: typeof RenderImage;\n RenderCanvas: typeof RenderCanvas;\n RenderAnnotationPage: typeof RenderAnnotationPage;\n RenderAnnotation: typeof RenderAnnotation;\n Viewer: typeof Viewer;\n CanvasBackground: typeof CanvasBackground;\n Audio: typeof Audio;\n Video: typeof Video;\n Model: typeof Model;\n AudioHTML: typeof AudioHTML;\n VideoHTML: typeof VideoHTML;\n ModelHTML: typeof ModelHTML;\n};\n\nexport const CanvasPanel = forwardRef<SimpleViewerContext, CanvasPanelProps>(function CanvasPanel(\n { children, height, annotations, canvasProps, spacing, header, components, mode, reuseAtlas, ...props },\n ref\n) {\n const vault = useExistingVault();\n\n return (\n <VaultProvider vault={vault}>\n <SimpleViewerProvider {...props}>\n <Inner\n ref={ref}\n height={height}\n components={components}\n spacing={spacing}\n canvasProps={canvasProps}\n annotations={annotations}\n header={header}\n mode={mode}\n reuseAtlas={reuseAtlas}\n >\n {children}\n </Inner>\n </SimpleViewerProvider>\n </VaultProvider>\n );\n}) as CanvasPanelType;\n\nCanvasPanel.RenderImage = RenderImage;\nCanvasPanel.RenderCanvas = RenderCanvas;\nCanvasPanel.RenderAnnotationPage = RenderAnnotationPage;\nCanvasPanel.RenderAnnotation = RenderAnnotation;\nCanvasPanel.Viewer = Viewer;\nCanvasPanel.CanvasBackground = CanvasBackground;\nCanvasPanel.Audio = Audio;\nCanvasPanel.Video = Video;\nCanvasPanel.Model = Model;\nCanvasPanel.AudioHTML = AudioHTML;\nCanvasPanel.VideoHTML = VideoHTML;\nCanvasPanel.ModelHTML = ModelHTML;\n","import { useCanvas } from '@atlas-viewer/atlas';\nimport { CanvasPanel } from '../canvas-panel';\nimport { useAnnotationPageManager } from '../hooks/useAnnotationPageManager';\nimport { useVault } from '../hooks/useVault';\nimport { forwardRef, useImperativeHandle } from 'react';\n\nexport const CanvasAnnotations = forwardRef<ReturnType<typeof useAnnotationPageManager>, { canvasId?: string }>(\n function CanvasAnnotations({ canvasId }, ref) {\n const canvas = useCanvas();\n const pm = useAnnotationPageManager(canvasId || canvas?.id);\n const vault = useVault();\n\n useImperativeHandle(ref, () => pm, [canvasId, canvas]);\n\n if (!canvas || pm.enabledPageIds.length === 0) {\n return null;\n }\n\n return (\n <>\n {pm.enabledPageIds.map((id) => (\n <CanvasPanel.RenderAnnotationPage key={id} page={vault.get(id)} />\n ))}\n </>\n );\n }\n);\n","import { InternationalString } from '@iiif/presentation-3';\nimport { useMemo } from 'react';\nimport { LocaleString } from '../utility/i18n-utils';\n\ntype FacetConfig = {\n id: string;\n label: InternationalString;\n keys: string[];\n values?: FacetConfigValue[];\n};\n\ntype FacetConfigValue = {\n id: string;\n label: InternationalString;\n values: string[];\n key: string;\n};\n\nexport interface MetadataProps {\n config?: FacetConfig[];\n metadata?: Array<{ label: InternationalString; value: InternationalString } | null>;\n labelWidth?: number;\n allowHtml?: boolean;\n showEmptyMessage?: boolean;\n separator?: string;\n\n classes?: {\n container?: string;\n row?: string;\n label?: string;\n value?: string;\n empty?: string;\n };\n\n emptyMessage?: string;\n emptyValueFallback?: string;\n emptyLabelFallback?: string;\n\n // Slots.\n tableHeader?: React.ReactNode;\n tableFooter?: React.ReactNode;\n emptyFallback?: React.ReactNode;\n}\n\nexport function Metadata({\n metadata = [],\n config,\n labelWidth = 16,\n showEmptyMessage = true,\n allowHtml,\n emptyFallback,\n classes = {},\n emptyMessage = 'No metadata available',\n emptyValueFallback = 'No value',\n emptyLabelFallback = '',\n separator,\n tableFooter,\n tableHeader,\n}: MetadataProps) {\n const metadataKeyMap = useMemo(() => {\n const flatKeys = (config || []).reduce((state, i) => {\n return [...state, ...i.keys];\n }, [] as string[]);\n\n const map: { [key: string]: Array<{ label: InternationalString; value: InternationalString }> } = {};\n for (const item of metadata) {\n const labels = item && item.label ? Object.values(item.label) : [];\n for (const label of labels) {\n if (\n label &&\n label.length &&\n (flatKeys.indexOf(`metadata.${label[0]}`) !== -1 || flatKeys.length === 0) &&\n item\n ) {\n const key = `metadata.${label[0]}`;\n map[key] = map[key] ? map[key] : [];\n map[key].push(item);\n break;\n }\n }\n }\n return map;\n }, [config, metadata]);\n\n const isEmpty = Object.keys(metadataKeyMap).length === 0;\n\n if (isEmpty && showEmptyMessage) {\n return <>{emptyFallback}</> || <div className={classes.empty}>{emptyMessage}</div>;\n }\n\n if (config && config.length) {\n return (\n <table className={classes.container}>\n {tableHeader}\n <tbody>\n {config.map((configItem, idx: number) => {\n const values: any[] = [];\n\n for (const key of configItem.keys) {\n for (const item of metadataKeyMap[key] || []) {\n values.push(\n <LocaleString\n key={idx + '__' + key}\n enableDangerouslySetInnerHTML={allowHtml}\n defaultText={emptyValueFallback}\n separator={separator}\n >\n {item.value}\n </LocaleString>\n );\n }\n }\n\n if (values.length === 0) {\n return null;\n }\n\n return (\n <tr className={classes.row} key={idx}>\n <td className={classes.label} style={labelWidth ? { minWidth: labelWidth } : {}}>\n <LocaleString\n enableDangerouslySetInnerHTML={allowHtml}\n separator={separator}\n defaultText={emptyLabelFallback}\n >\n {configItem.label}\n </LocaleString>\n </td>\n <td className={classes.value}>{values}</td>\n </tr>\n );\n })}\n </tbody>\n {tableFooter}\n </table>\n );\n }\n\n return (\n <table className={classes.container}>\n {tableHeader}\n <tbody>\n {metadata && metadata.length\n ? metadata.map((metadataItem, idx: number) => {\n if (!metadataItem) {\n return null; // null items.\n }\n return (\n <tr className={classes.row} key={idx}>\n <td className={classes.label} style={labelWidth ? { minWidth: labelWidth } : {}}>\n <LocaleString\n enableDangerouslySetInnerHTML={allowHtml}\n defaultText={emptyValueFallback}\n separator={separator}\n >\n {metadataItem.label}\n </LocaleString>\n </td>\n <td className={classes.value}>\n <LocaleString\n enableDangerouslySetInnerHTML={allowHtml}\n defaultText={emptyValueFallback}\n separator={separator}\n >\n {metadataItem.value}\n </LocaleString>\n </td>\n </tr>\n );\n })\n : null}\n </tbody>\n {tableFooter}\n </table>\n );\n}\n","import { useMemo } from 'react';\nimport { useManifest } from '../hooks/useManifest';\nimport { Metadata, MetadataProps } from './Metadata';\nimport { useRange } from '../hooks/useRange';\nimport { useCanvas } from '../hooks/useCanvas';\n\ntype CombinedMetadataProps = Omit<MetadataProps, 'metadata'>;\n\nexport function CombinedMetadata(props: CombinedMetadataProps) {\n const manifest = useManifest();\n const canvas = useCanvas();\n const range = useRange();\n\n const metadata = useMemo(() => {\n const metadata = manifest?.metadata || [];\n const canvasMetadata = canvas?.metadata || [];\n const rangeMetadata = range?.metadata || [];\n\n return [...metadata, ...canvasMetadata, ...rangeMetadata];\n }, [manifest, canvas, range]);\n\n return <Metadata metadata={metadata} {...props} />;\n}\n","import {\n RegionParameter,\n RotationParameter,\n createImageServiceRequest,\n imageServiceRequestToString,\n} from '@atlas-viewer/iiif-image-api';\nimport { ImageService, ImageSize } from '@iiif/presentation-3';\nimport { useMemo } from 'react';\n\nexport function useImage(\n service: ImageService | undefined,\n data: {\n size?: Partial<ImageSize>;\n selector?: RegionParameter;\n rotation?: number | RotationParameter;\n format?: string;\n region?: RegionParameter;\n quality?: string;\n } = {},\n deps: any[] = []\n) {\n return useMemo(() => {\n if (!service) {\n return null;\n }\n\n let quality = data.quality;\n\n if (service && service.extraQualities && data.quality) {\n if (!service.extraQualities.includes(data.quality)) {\n console.log('Invalid quality', data.quality, service.extraQualities);\n quality = 'default';\n }\n }\n\n // @todo other validation.\n\n const request = createImageServiceRequest(service);\n const imageId = imageServiceRequestToString({\n identifier: request.identifier,\n server: request.server,\n scheme: request.scheme,\n type: 'image',\n size: {\n max: !data.size?.width && !data.size?.height,\n confined: false,\n upscaled: false,\n ...(data.size || {}),\n },\n format: data.format || 'jpg',\n // This isn't how it should be modelled, always full,\n // region: data.selector ? data.selector : { full: true },\n region: data.region || { full: true },\n rotation: data?.rotation\n ? Number.isInteger(data.rotation)\n ? { angle: data.rotation }\n : (data.rotation as any)\n : { angle: 0 },\n quality: quality || 'default',\n prefix: request.prefix,\n originalPath: (request as any).originalPath,\n });\n\n return imageId;\n }, [...deps]);\n}\n","import { RegionParameter, RotationParameter } from '@atlas-viewer/iiif-image-api';\nimport { ImageService, ImageSize } from '@iiif/presentation-3';\nimport { useEffect, useState } from 'react';\nimport { useImageServiceLoader } from '../context/ImageServiceLoaderContext';\nimport { useImage } from '../hooks/useImage';\n\nexport interface ImageProps {\n src: string | ImageService;\n alt?: string;\n size?: Partial<ImageSize>;\n region?: RegionParameter;\n className?: string;\n style?: React.CSSProperties;\n fetchImageService?: boolean;\n quality?: string;\n rotation?: number | RotationParameter;\n format?: string;\n\n // Later -> make it responsive.\n // responsive?: boolean;\n // sizes?: ImageSize[];\n}\n\nfunction RemoteImage(props: ImageProps) {\n const serviceId = typeof props.src === 'string' ? props.src : props.src.id;\n const imageService = useImageServiceLoader();\n const [isLoaded, setIsLoaded] = useState(false);\n\n let service: ImageService | undefined = undefined;\n\n if (serviceId) {\n const foundService = imageService.loadServiceSync({ id: serviceId } as any);\n if (foundService) {\n service = foundService as ImageService;\n }\n }\n\n if (!service && !isLoaded) {\n imageService.loadService({ id: serviceId } as any).then(() => {\n setIsLoaded(true);\n });\n }\n\n const src = useImage(\n service,\n {\n size: props.size,\n selector: props.region,\n rotation: props.rotation,\n format: props.format,\n region: props.region,\n quality: props.quality,\n },\n [isLoaded, props.src, props.size, props.region, props.rotation, props.format, props.region, props.quality]\n );\n\n useEffect(() => {\n return () => {\n setIsLoaded(false);\n };\n }, [serviceId]);\n\n if (!src) {\n return <Image {...props} fetchImageService={false} />;\n }\n\n return <img src={src} alt={props.alt} className={props.className} style={props.style} />;\n}\n\nexport function Image(props: ImageProps) {\n if (props.fetchImageService) {\n return <RemoteImage {...props} />;\n }\n\n const service = typeof props.src === 'string' ? { id: props.src, profile: 'level0' as const } : props.src;\n const src = useImage(\n service,\n {\n size: props.size,\n selector: props.region,\n rotation: props.rotation,\n format: props.format,\n region: props.region,\n quality: props.quality,\n },\n [props.src, props.size, props.region, props.rotation, props.format, props.region, props.quality]\n );\n\n if (!src) {\n return null;\n }\n\n return <img src={src} alt={props.alt} className={props.className} style={props.style} />;\n}\n","import { useManifest } from '../hooks/useManifest';\nimport { Metadata, MetadataProps } from './Metadata';\n\ntype ManifestMetadataProps = Omit<MetadataProps, 'metadata'>;\n\nexport function ManifestMetadata(props: ManifestMetadataProps) {\n const manifest = useManifest();\n\n return <Metadata metadata={manifest?.metadata || []} {...props} />;\n}\n","(()=>{var e={296:(e,t,r)=>{var o=/^\\s+|\\s+$/g,n=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt,s=\"object\"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,l=\"object\"==typeof self&&self&&self.Object===Object&&self,a=s||l||Function(\"return this\")(),f=Object.prototype.toString,p=Math.max,y=Math.min,d=function(){return a.Date.now()};function b(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function h(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&\"[object Symbol]\"==f.call(e)}(e))return NaN;if(b(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=b(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(o,\"\");var r=i.test(e);return r||c.test(e)?u(e.slice(2),r?2:8):n.test(e)?NaN:+e}e.exports=function(e,t,r){var o,n,i,c,u,s,l=0,a=!1,f=!1,v=!0;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");function m(t){var r=o,i=n;return o=n=void 0,l=t,c=e.apply(i,r)}function O(e){var r=e-s;return void 0===s||r>=t||r<0||f&&e-l>=i}function w(){var e=d();if(O(e))return g(e);u=setTimeout(w,function(e){var r=t-(e-s);return f?y(r,i-(e-l)):r}(e))}function g(e){return u=void 0,v&&o?m(e):(o=n=void 0,c)}function P(){var e=d(),r=O(e);if(o=arguments,n=this,s=e,r){if(void 0===u)return function(e){return l=e,u=setTimeout(w,t),a?m(e):c}(s);if(f)return u=setTimeout(w,t),m(s)}return void 0===u&&(u=setTimeout(w,t)),c}return t=h(t)||0,b(r)&&(a=!!r.leading,i=(f=\"maxWait\"in r)?p(h(r.maxWait)||0,t):i,v=\"trailing\"in r?!!r.trailing:v),P.cancel=function(){void 0!==u&&clearTimeout(u),l=0,o=s=n=u=void 0},P.flush=function(){return void 0===u?c:g(d())},P}},96:(e,t,r)=>{var o=\"Expected a function\",n=NaN,i=\"[object Symbol]\",c=/^\\s+|\\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,a=parseInt,f=\"object\"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,p=\"object\"==typeof self&&self&&self.Object===Object&&self,y=f||p||Function(\"return this\")(),d=Object.prototype.toString,b=Math.max,h=Math.min,v=function(){return y.Date.now()};function m(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function O(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&d.call(e)==i}(e))return n;if(m(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=m(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(c,\"\");var r=s.test(e);return r||l.test(e)?a(e.slice(2),r?2:8):u.test(e)?n:+e}e.exports=function(e,t,r){var n=!0,i=!0;if(\"function\"!=typeof e)throw new TypeError(o);return m(r)&&(n=\"leading\"in r?!!r.leading:n,i=\"trailing\"in r?!!r.trailing:i),function(e,t,r){var n,i,c,u,s,l,a=0,f=!1,p=!1,y=!0;if(\"function\"!=typeof e)throw new TypeError(o);function d(t){var r=n,o=i;return n=i=void 0,a=t,u=e.apply(o,r)}function w(e){var r=e-l;return void 0===l||r>=t||r<0||p&&e-a>=c}function g(){var e=v();if(w(e))return P(e);s=setTimeout(g,function(e){var r=t-(e-l);return p?h(r,c-(e-a)):r}(e))}function P(e){return s=void 0,y&&n?d(e):(n=i=void 0,u)}function j(){var e=v(),r=w(e);if(n=arguments,i=this,l=e,r){if(void 0===s)return function(e){return a=e,s=setTimeout(g,t),f?d(e):u}(l);if(p)return s=setTimeout(g,t),d(l)}return void 0===s&&(s=setTimeout(g,t)),u}return t=O(t)||0,m(r)&&(f=!!r.leading,c=(p=\"maxWait\"in r)?b(O(r.maxWait)||0,t):c,y=\"trailing\"in r?!!r.trailing:y),j.cancel=function(){void 0!==s&&clearTimeout(s),a=0,n=l=i=s=void 0},j.flush=function(){return void 0===s?u:P(v())},j}(e,t,{leading:n,maxWait:t,trailing:i})}},703:(e,t,r)=>{\"use strict\";var o=r(414);function n(){}function i(){}i.resetWarningCache=n,e.exports=function(){function e(e,t,r,n,i,c){if(c!==o){var u=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw u.name=\"Invariant Violation\",u}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:n};return r.PropTypes=r,r}},697:(e,t,r)=>{e.exports=r(703)()},414:e=>{\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,r),i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(e){if(\"object\"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var o={};(()=>{\"use strict\";r.r(o),r.d(o,{LazyLoadComponent:()=>A,LazyLoadImage:()=>ce,trackWindowScroll:()=>M});const e=require(\"react\");var t=r.n(e),n=r(697);const i=require(\"react-dom\");var c=r.n(i);function u(){return\"undefined\"!=typeof window&&\"IntersectionObserver\"in window&&\"isIntersecting\"in window.IntersectionObserverEntry.prototype}function s(e){return s=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s(e)}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function a(e,t,r){return(t=p(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function f(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,p(o.key),o)}}function p(e){var t=function(e,t){if(\"object\"!==s(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,\"string\");if(\"object\"!==s(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(e);return\"symbol\"===s(t)?t:String(t)}function y(e,t){return y=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},y(e,t)}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}var b=function(e){e.forEach((function(e){e.isIntersecting&&e.target.onVisible()}))},h={},v=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&y(e,t)}(v,e);var r,o,n,i,p=(n=v,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=d(n);if(i){var r=d(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&(\"object\"===s(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}(e)}(this,e)});function v(e){var t;if(function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,v),(t=p.call(this,e)).supportsObserver=!e.scrollPosition&&e.useIntersectionObserver&&u(),t.supportsObserver){var r=e.threshold;t.observer=function(e){return h[e]=h[e]||new IntersectionObserver(b,{rootMargin:e+\"px\"}),h[e]}(r)}return t}return r=v,o=[{key:\"componentDidMount\",value:function(){this.placeholder&&this.observer&&(this.placeholder.onVisible=this.props.onVisible,this.observer.observe(this.placeholder)),this.supportsObserver||this.updateVisibility()}},{key:\"componentWillUnmount\",value:function(){this.observer&&this.placeholder&&this.observer.unobserve(this.placeholder)}},{key:\"componentDidUpdate\",value:function(){this.supportsObserver||this.updateVisibility()}},{key:\"getPlaceholderBoundingBox\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props.scrollPosition,t=this.placeholder.getBoundingClientRect(),r=c().findDOMNode(this.placeholder).style,o=parseInt(r.getPropertyValue(\"margin-left\"),10)||0,n=parseInt(r.getPropertyValue(\"margin-top\"),10)||0;return{bottom:e.y+t.bottom+n,left:e.x+t.left+o,right:e.x+t.right+o,top:e.y+t.top+n}}},{key:\"isPlaceholderInViewport\",value:function(){if(\"undefined\"==typeof window||!this.placeholder)return!1;var e=this.props,t=e.scrollPosition,r=e.threshold,o=this.getPlaceholderBoundingBox(t),n=t.y+window.innerHeight,i=t.x,c=t.x+window.innerWidth,u=t.y;return Boolean(u-r<=o.bottom&&n+r>=o.top&&i-r<=o.right&&c+r>=o.left)}},{key:\"updateVisibility\",value:function(){this.isPlaceholderInViewport()&&this.props.onVisible()}},{key:\"render\",value:function(){var e=this,r=this.props,o=r.className,n=r.height,i=r.placeholder,c=r.style,u=r.width;if(i&&\"function\"!=typeof i.type)return t().cloneElement(i,{ref:function(t){return e.placeholder=t}});var s=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({display:\"inline-block\"},c);return void 0!==u&&(s.width=u),void 0!==n&&(s.height=n),t().createElement(\"span\",{className:o,ref:function(t){return e.placeholder=t},style:s},i)}}],o&&f(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),v}(t().Component);v.propTypes={onVisible:n.PropTypes.func.isRequired,className:n.PropTypes.string,height:n.PropTypes.oneOfType([n.PropTypes.number,n.PropTypes.string]),placeholder:n.PropTypes.element,threshold:n.PropTypes.number,useIntersectionObserver:n.PropTypes.bool,scrollPosition:n.PropTypes.shape({x:n.PropTypes.number.isRequired,y:n.PropTypes.number.isRequired}),width:n.PropTypes.oneOfType([n.PropTypes.number,n.PropTypes.string])},v.defaultProps={className:\"\",placeholder:null,threshold:100,useIntersectionObserver:!0};const m=v;var O=r(296),w=r.n(O),g=r(96),P=r.n(g),j=function(e){var t=getComputedStyle(e,null);return t.getPropertyValue(\"overflow\")+t.getPropertyValue(\"overflow-y\")+t.getPropertyValue(\"overflow-x\")};const T=function(e){if(!(e instanceof HTMLElement))return window;for(var t=e;t&&t instanceof HTMLElement;){if(/(scroll|auto)/.test(j(t)))return t;t=t.parentNode}return window};function S(e){return S=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},S(e)}var E=[\"delayMethod\",\"delayTime\"];function L(){return L=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},L.apply(this,arguments)}function _(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,(void 0,n=function(e,t){if(\"object\"!==S(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,\"string\");if(\"object\"!==S(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(o.key),\"symbol\"===S(n)?n:String(n)),o)}var n}function I(e,t){return I=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},I(e,t)}function x(e,t){if(t&&(\"object\"===S(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return R(e)}function R(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function k(e){return k=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},k(e)}var D=function(){return\"undefined\"==typeof window?0:window.scrollX||window.pageXOffset},C=function(){return\"undefined\"==typeof window?0:window.scrollY||window.pageYOffset};const M=function(e){var r=function(r){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&I(e,t)}(a,r);var o,n,i,s,l=(i=a,s=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=k(i);if(s){var r=k(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return x(this,e)});function a(e){var r;if(function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,a),(r=l.call(this,e)).useIntersectionObserver=e.useIntersectionObserver&&u(),r.useIntersectionObserver)return x(r);var o=r.onChangeScroll.bind(R(r));return\"debounce\"===e.delayMethod?r.delayedScroll=w()(o,e.delayTime):\"throttle\"===e.delayMethod&&(r.delayedScroll=P()(o,e.delayTime)),r.state={scrollPosition:{x:D(),y:C()}},r.baseComponentRef=t().createRef(),r}return o=a,(n=[{key:\"componentDidMount\",value:function(){this.addListeners()}},{key:\"componentWillUnmount\",value:function(){this.removeListeners()}},{key:\"componentDidUpdate\",value:function(){\"undefined\"==typeof window||this.useIntersectionObserver||T(c().findDOMNode(this.baseComponentRef.current))!==this.scrollElement&&(this.removeListeners(),this.addListeners())}},{key:\"addListeners\",value:function(){\"undefined\"==typeof window||this.useIntersectionObserver||(this.scrollElement=T(c().findDOMNode(this.baseComponentRef.current)),this.scrollElement.addEventListener(\"scroll\",this.delayedScroll,{passive:!0}),window.addEventListener(\"resize\",this.delayedScroll,{passive:!0}),this.scrollElement!==window&&window.addEventListener(\"scroll\",this.delayedScroll,{passive:!0}))}},{key:\"removeListeners\",value:function(){\"undefined\"==typeof window||this.useIntersectionObserver||(this.scrollElement.removeEventListener(\"scroll\",this.delayedScroll),window.removeEventListener(\"resize\",this.delayedScroll),this.scrollElement!==window&&window.removeEventListener(\"scroll\",this.delayedScroll))}},{key:\"onChangeScroll\",value:function(){this.useIntersectionObserver||this.setState({scrollPosition:{x:D(),y:C()}})}},{key:\"render\",value:function(){var r=this.props,o=(r.delayMethod,r.delayTime,function(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(r,E)),n=this.useIntersectionObserver?null:this.state.scrollPosition;return t().createElement(e,L({forwardRef:this.baseComponentRef,scrollPosition:n},o))}}])&&_(o.prototype,n),Object.defineProperty(o,\"prototype\",{writable:!1}),a}(t().Component);return r.propTypes={delayMethod:n.PropTypes.oneOf([\"debounce\",\"throttle\"]),delayTime:n.PropTypes.number,useIntersectionObserver:n.PropTypes.bool},r.defaultProps={delayMethod:\"throttle\",delayTime:300,useIntersectionObserver:!0},r};function N(e){return N=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},N(e)}function B(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,(void 0,n=function(e,t){if(\"object\"!==N(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,\"string\");if(\"object\"!==N(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(o.key),\"symbol\"===N(n)?n:String(n)),o)}var n}function V(e,t){return V=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},V(e,t)}function W(e){return W=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},W(e)}var z=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&V(e,t)}(u,e);var r,o,n,i,c=(n=u,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=W(n);if(i){var r=W(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&(\"object\"===N(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}(e)}(this,e)});function u(e){return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,u),c.call(this,e)}return r=u,(o=[{key:\"render\",value:function(){return t().createElement(m,this.props)}}])&&B(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),u}(t().Component);const $=M(z);function U(e){return U=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},U(e)}function q(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,(void 0,n=function(e,t){if(\"object\"!==U(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,\"string\");if(\"object\"!==U(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(o.key),\"symbol\"===U(n)?n:String(n)),o)}var n}function F(e,t){return F=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},F(e,t)}function H(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function Y(e){return Y=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Y(e)}var X=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&F(e,t)}(s,e);var r,o,n,i,c=(n=s,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=Y(n);if(i){var r=Y(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&(\"object\"===U(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return H(e)}(this,e)});function s(e){var t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,s),t=c.call(this,e);var r=e.afterLoad,o=e.beforeLoad,n=e.scrollPosition,i=e.visibleByDefault;return t.state={visible:i},i&&(o(),r()),t.onVisible=t.onVisible.bind(H(t)),t.isScrollTracked=Boolean(n&&Number.isFinite(n.x)&&n.x>=0&&Number.isFinite(n.y)&&n.y>=0),t}return r=s,(o=[{key:\"componentDidUpdate\",value:function(e,t){t.visible!==this.state.visible&&this.props.afterLoad()}},{key:\"onVisible\",value:function(){this.props.beforeLoad(),this.setState({visible:!0})}},{key:\"render\",value:function(){if(this.state.visible)return this.props.children;var e=this.props,r=e.className,o=e.delayMethod,n=e.delayTime,i=e.height,c=e.placeholder,s=e.scrollPosition,l=e.style,a=e.threshold,f=e.useIntersectionObserver,p=e.width;return this.isScrollTracked||f&&u()?t().createElement(m,{className:r,height:i,onVisible:this.onVisible,placeholder:c,scrollPosition:s,style:l,threshold:a,useIntersectionObserver:f,width:p}):t().createElement($,{className:r,delayMethod:o,delayTime:n,height:i,onVisible:this.onVisible,placeholder:c,style:l,threshold:a,width:p})}}])&&q(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),s}(t().Component);X.propTypes={afterLoad:n.PropTypes.func,beforeLoad:n.PropTypes.func,useIntersectionObserver:n.PropTypes.bool,visibleByDefault:n.PropTypes.bool},X.defaultProps={afterLoad:function(){return{}},beforeLoad:function(){return{}},useIntersectionObserver:!0,visibleByDefault:!1};const A=X;function G(e){return G=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},G(e)}var J=[\"afterLoad\",\"beforeLoad\",\"delayMethod\",\"delayTime\",\"effect\",\"placeholder\",\"placeholderSrc\",\"scrollPosition\",\"threshold\",\"useIntersectionObserver\",\"visibleByDefault\",\"wrapperClassName\",\"wrapperProps\"];function K(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function Q(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?K(Object(r),!0).forEach((function(t){Z(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):K(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Z(e,t,r){return(t=re(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ee(){return ee=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},ee.apply(this,arguments)}function te(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,re(o.key),o)}}function re(e){var t=function(e,t){if(\"object\"!==G(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,\"string\");if(\"object\"!==G(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(e);return\"symbol\"===G(t)?t:String(t)}function oe(e,t){return oe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},oe(e,t)}function ne(e){return ne=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ne(e)}var ie=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&oe(e,t)}(u,e);var r,o,n,i,c=(n=u,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=ne(n);if(i){var r=ne(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&(\"object\"===G(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}(e)}(this,e)});function u(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,u),(t=c.call(this,e)).state={loaded:!1},t}return r=u,(o=[{key:\"onImageLoad\",value:function(){var e=this;return this.state.loaded?null:function(t){e.props.onLoad(t),e.props.afterLoad(),e.setState({loaded:!0})}}},{key:\"getImg\",value:function(){var e=this.props,r=(e.afterLoad,e.beforeLoad,e.delayMethod,e.delayTime,e.effect,e.placeholder,e.placeholderSrc,e.scrollPosition,e.threshold,e.useIntersectionObserver,e.visibleByDefault,e.wrapperClassName,e.wrapperProps,function(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(e,J));return t().createElement(\"img\",ee({},r,{onLoad:this.onImageLoad()}))}},{key:\"getLazyLoadImage\",value:function(){var e=this.props,r=e.beforeLoad,o=e.className,n=e.delayMethod,i=e.delayTime,c=e.height,u=e.placeholder,s=e.scrollPosition,l=e.style,a=e.threshold,f=e.useIntersectionObserver,p=e.visibleByDefault,y=e.width;return t().createElement(A,{beforeLoad:r,className:o,delayMethod:n,delayTime:i,height:c,placeholder:u,scrollPosition:s,style:l,threshold:a,useIntersectionObserver:f,visibleByDefault:p,width:y},this.getImg())}},{key:\"getWrappedLazyLoadImage\",value:function(e){var r=this.props,o=r.effect,n=r.height,i=r.placeholderSrc,c=r.width,u=r.wrapperClassName,s=r.wrapperProps,l=this.state.loaded,a=l?\" lazy-load-image-loaded\":\"\",f=l||!i?{}:{backgroundImage:\"url(\".concat(i,\")\"),backgroundSize:\"100% 100%\"};return t().createElement(\"span\",ee({className:u+\" lazy-load-image-background \"+o+a,style:Q(Q({},f),{},{color:\"transparent\",display:\"inline-block\",height:n,width:c})},s),e)}},{key:\"render\",value:function(){var e=this.props,t=e.effect,r=e.placeholderSrc,o=e.visibleByDefault,n=e.wrapperClassName,i=e.wrapperProps,c=this.getLazyLoadImage();return(t||r)&&!o||n||i?this.getWrappedLazyLoadImage(c):c}}])&&te(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),u}(t().Component);ie.propTypes={onLoad:n.PropTypes.func,afterLoad:n.PropTypes.func,beforeLoad:n.PropTypes.func,delayMethod:n.PropTypes.string,delayTime:n.PropTypes.number,effect:n.PropTypes.string,placeholderSrc:n.PropTypes.string,threshold:n.PropTypes.number,useIntersectionObserver:n.PropTypes.bool,visibleByDefault:n.PropTypes.bool,wrapperClassName:n.PropTypes.string,wrapperProps:n.PropTypes.object},ie.defaultProps={onLoad:function(){},afterLoad:function(){return{}},beforeLoad:function(){return{}},delayMethod:\"throttle\",delayTime:300,effect:\"\",placeholderSrc:null,threshold:100,useIntersectionObserver:!0,visibleByDefault:!1,wrapperClassName:\"\"};const ce=ie})(),module.exports=o})();","function k(e, r, i = [], x = !1, d = []) {\n if (d.length && (r = r.filter((t) => d.indexOf(t) === -1)), !r || r.length === 0)\n return;\n if (r.length === 1)\n return r[0];\n if (!e)\n return r.indexOf(\"none\") !== -1 ? \"none\" : r[0];\n if (r.indexOf(e) !== -1)\n return e;\n const c = e.indexOf(\"-\") !== -1 ? e.slice(0, e.indexOf(\"-\")) : null;\n if (c && r.indexOf(c) !== -1)\n return c;\n for (const t of i)\n if (r.indexOf(t) !== -1)\n return t;\n if (!x && e) {\n const s = r.map((n) => n.indexOf(\"-\") !== -1 ? n.slice(0, n.indexOf(\"-\")) : null).indexOf(e);\n if (s !== -1)\n return r[s];\n for (const n of i) {\n const O = n.indexOf(\"-\") !== -1 ? n.slice(0, n.indexOf(\"-\")) : null, f = O ? r.indexOf(O) : -1;\n if (f !== -1)\n return r[f];\n }\n }\n return r.indexOf(\"none\") !== -1 ? \"none\" : r.indexOf(\"@none\") !== -1 ? \"@none\" : r[0];\n}\nfunction l(e, r, i = {}) {\n const {\n strictFallback: x = !1,\n defaultText: d = \"\",\n separator: c = `\n`,\n fallbackLanguages: t = [],\n closest: s,\n skipLanguages: n\n } = i, O = Object.keys(e || {}), f = s ? r : k(r, O, t, x, n);\n if (!e)\n return d;\n if (typeof e == \"string\")\n return e;\n const o = f ? e[f] : void 0;\n if (o && f) {\n if (typeof o == \"string\")\n return o;\n if (o.length === 1 && o[0] === \"\") {\n const v = i.skipLanguages || [];\n return l(e, r, {\n ...i,\n skipLanguages: [...v, f]\n });\n }\n return o.join(c);\n }\n return \"\";\n}\nfunction u(e, r = {}) {\n return l(\n e,\n r.language || (typeof navigator < \"u\" ? navigator.language : \"en\"),\n r\n );\n}\nexport {\n l as buildLocaleString,\n k as getClosestLanguage,\n u as getValue\n};\n//# sourceMappingURL=i18n.mjs.map\n","import { useThumbnail } from '../hooks/useThumbnail';\nimport { useCanvas } from '../hooks/useCanvas';\nimport { LazyLoadComponent as _LazyLoadComponent, LazyLoadImageProps } from 'react-lazy-load-image-component';\nimport { LocaleString } from '../utility/i18n-utils';\nimport { SizeParameter } from '@atlas-viewer/iiif-image-api';\nimport { CanvasContext } from '../context/CanvasContext';\nimport { getValue } from '@iiif/helpers/i18n';\nimport { FC, ReactNode } from 'react';\n\nconst LazyLoadComponent = _LazyLoadComponent as FC<LazyLoadImageProps & { children: ReactNode }>;\n\ninterface SingleCanvasThumbnailProps {\n canvasId?: string;\n size?: Partial<SizeParameter>;\n visible?: boolean;\n alt?: string;\n dereference?: boolean;\n\n // Style\n figure?: boolean;\n showLabel?: boolean;\n classes?: {\n figure?: string;\n img?: string;\n label?: string;\n imageWrapper?: string;\n };\n\n // Slots.\n placeholder?: React.ReactNode;\n fallback?: React.ReactNode;\n}\n\nexport function SingleCanvasThumbnail(props: SingleCanvasThumbnailProps) {\n const { size, visible, classes, canvasId, figure } = props;\n const width = size?.width || 128;\n const height = size?.height || size?.width || 128;\n\n const inner = <Inner {...props} />;\n\n const lazy = (\n <LazyLoadComponent threshold={300} style={{ height, width }} visibleByDefault={visible}>\n {canvasId ? <CanvasContext canvas={canvasId}>{inner}</CanvasContext> : inner}\n </LazyLoadComponent>\n );\n\n if (figure) {\n return <figure className={classes?.figure}>{lazy}</figure>;\n }\n\n return lazy;\n}\n\nfunction Inner({ fallback, size, classes, showLabel, alt, dereference = false }: SingleCanvasThumbnailProps) {\n const canvas = useCanvas();\n const width = size?.width || 128;\n const height = size?.height || size?.width || 128;\n const imageAlt = alt || getValue(canvas?.label) || '';\n\n const thumbnail = useThumbnail({ width, height }, dereference);\n\n if (!thumbnail || thumbnail.type !== 'fixed') {\n return <>{fallback}</>;\n }\n\n return (\n <>\n <div className={classes?.imageWrapper}>\n <img className={classes?.img} src={thumbnail.id} alt={imageAlt} />\n </div>\n {showLabel ? (\n <LocaleString as=\"figcaption\" className={classes?.label}>\n {canvas?.label}\n </LocaleString>\n ) : null}\n </>\n );\n}\n","import { useLayoutEffect, useRef } from 'react';\nimport { useSimpleViewer } from '../viewers/SimpleViewerContext';\nimport { useCanvasSequence } from '../viewers/SimpleViewerContext.hooks';\nimport { SingleCanvasThumbnail } from './SingleCanvasThumbnail';\n\ninterface SequenceThumbnailsProps {\n flat?: boolean;\n size?: { width: number; height?: number };\n classes?: {\n container?: string;\n row?: string;\n item?: string;\n\n // SingleCanvasThumbnail\n figure?: string;\n imageWrapper?: string;\n img?: string;\n label?: string;\n\n selected?: {\n row?: string;\n item?: string;\n figure?: string;\n img?: string;\n label?: string;\n imageWrapper?: string;\n };\n };\n\n figure?: boolean;\n showLabel?: boolean;\n // Slots\n fallback?: React.ReactNode;\n}\n\nexport function SequenceThumbnails({ flat, size, classes = {}, showLabel, figure, fallback }: SequenceThumbnailsProps) {\n const container = useRef<HTMLDivElement>(null);\n const { items, sequence, currentSequenceIndex, setSequenceIndex } = useSimpleViewer();\n const selected = {\n row: classes.selected?.row || classes.row,\n item: classes.selected?.item || classes.item,\n figure: classes.selected?.figure || classes.figure,\n img: classes.selected?.img || classes.img,\n label: classes.selected?.label || classes.label,\n imageWrapper: classes.selected?.imageWrapper || classes.imageWrapper,\n };\n\n useLayoutEffect(() => {\n if (!container.current) {\n return;\n }\n\n const selected = container.current.querySelector(`[data-selected=true]`);\n if (selected) {\n selected.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n }\n }, [currentSequenceIndex]);\n\n const components = [];\n for (const row of sequence) {\n const rowComponents = [];\n const isSelected = sequence[currentSequenceIndex] === row;\n for (const canvasIdx of row) {\n const canvas = items[canvasIdx];\n rowComponents.push(\n <div key={canvasIdx} className={isSelected ? selected.item : classes.item}>\n <SingleCanvasThumbnail\n classes={isSelected ? selected : classes}\n canvasId={canvas.id}\n size={size}\n showLabel={showLabel}\n figure={figure}\n placeholder={<div style={{ height: 128, width: 128 }} />}\n fallback={fallback}\n />\n </div>\n );\n }\n if (flat) {\n components.push(rowComponents);\n continue;\n }\n components.push(\n <div\n onClick={(e) => {\n setSequenceIndex(sequence.indexOf(row));\n }}\n data-selected={isSelected}\n className={isSelected ? selected.row : classes.row}\n >\n {rowComponents}\n </div>\n );\n }\n\n return (\n <div ref={container} className={classes.container}>\n {components}\n </div>\n );\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function AnnotationContext({ annotation, children }: { annotation: string; children: ReactNode }) {\n return <ResourceProvider value={{ annotation }}>{children}</ResourceProvider>;\n}\n","import React, { ReactNode } from 'react';\nimport { ResourceProvider } from './ResourceContext';\n\nexport function AnnotationPageContext({ annotationPage, children }: { annotationPage: string; children: ReactNode }) {\n return <ResourceProvider value={{ annotationPage }}>{children}</ResourceProvider>;\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function CollectionContext({ collection, children }: { collection: string; children: ReactNode }) {\n return <ResourceProvider value={{ collection }}>{children}</ResourceProvider>;\n}\n","// This works under a canvas context\n// The canvas must have a duration\n// When given a timestamp (ms) from the canvas clock will return a list of annotations\n// that need to be painted.\nimport { AnnotationNormalized } from '@iiif/presentation-3-normalized';\nimport { usePaintingAnnotations } from './usePaintingAnnotations';\n\nexport function useAnnotationsAtTime(time: number, options: { canvasId?: string } = {}): AnnotationNormalized[] {\n const allAnnotations = usePaintingAnnotations(options);\n\n // @todo filter.\n\n return allAnnotations;\n}\n","// This will be valid under a canvas.\n// It will be an interface for controlling a virtual clock.\n// It will take in some configuration, like frequency\n// and return some data, like current time\n// It will also provide some methods, like high performance syncing for media\n// And it will also have some basic hooks into the HTML audio/video elements to sync those.\n// Other methods for controlling the clock would be:\n// - set current time\n// - fast forward\n// - rewind\n// - set playback speed\n//\n// Other hooks might come out for priority updates. Like: useLowPriorityCanvasClock(), which will update at a preset\n// lower tick rate.\n\nexport function useCanvasClock(canvasId?: string, autoplay = false) {\n /*\n const canvas = useCanvas(canvasId ? { id: canvasId } : undefined);\n if (!canvas || typeof canvas.duration === 'undefined') {\n throw new Error('Unsupported or undefined canvas');\n }\n\n const update = useUpdate();\n const [lastCall, setLastCall] = useState(0);\n const [currentTime, setCurrentTime] = useState(0);\n\n const [loopStop, loopStart, isActive] = useRafLoop((time) => {\n const timeInSeconds = lastCall === 0 ? 0 : (time - lastCall) / 1000;\n if (currentTime + timeInSeconds < canvas.duration) {\n setCurrentTime((t) => t + timeInSeconds);\n } else {\n setCurrentTime(canvas.duration);\n loopStop();\n }\n setLastCall(time);\n }, autoplay);\n\n const play = useCallback(() => {\n if (currentTime === canvas.duration) {\n setCurrentTime(0);\n setLastCall(0);\n }\n loopStart();\n update();\n }, [currentTime, loopStart, update]);\n\n const pause = useCallback(() => {\n loopStop();\n update();\n }, [loopStop, update]);\n\n return {\n isPlaying: isActive(),\n currentTime,\n duration: canvas.duration,\n play,\n pause,\n seek: setCurrentTime,\n };\n\n */\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { Reference } from '@iiif/presentation-3';\nimport { useVaultSelector } from './useVaultSelector';\nimport { IIIFStore } from '@iiif/helpers/vault';\n\nexport function useCanvasSubset(idsOrRefs?: Array<string | Reference>): Reference<'Canvas'>[] {\n const ctx = useResourceContext();\n const manifestId = ctx.manifest;\n const refs = idsOrRefs ? idsOrRefs.map((item) => (typeof item === 'string' ? item : item?.id)) : [];\n return useVaultSelector(\n (s: IIIFStore) => {\n const manifest = manifestId ? s.iiif.entities.Manifest[manifestId] : undefined;\n const items = manifest?.items || [];\n\n if (typeof idsOrRefs === 'undefined') {\n return items;\n }\n\n const newItems = [];\n for (const item of manifest?.items || []) {\n if (refs.indexOf(item.id) !== -1) {\n newItems.push(item);\n }\n }\n\n return newItems;\n },\n [refs.join('/')]\n );\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { CollectionNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useCollection(options: { id: string }): CollectionNormalized | undefined;\nexport function useCollection<T>(\n options: { id: string; selector: (collection: CollectionNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useCollection<T = CollectionNormalized>(\n options: {\n id?: string;\n selector?: (collection: CollectionNormalized) => T;\n },\n deps: any[] = []\n): CollectionNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const collectionId = id ? id : ctx.collection;\n\n const collection = useVaultSelector(\n (s) => (collectionId ? s.iiif.entities.Collection[collectionId] : undefined),\n [collectionId]\n );\n\n return useMemo(() => {\n if (!collection) {\n return undefined;\n }\n if (selector) {\n return selector(collection);\n }\n return collection;\n }, [collection, selector, ...deps]);\n}\n","import { Reference } from '@iiif/presentation-3';\nimport { useVault } from './useVault';\nimport { useEffect, useMemo } from 'react';\nimport { createEventsHelper } from '@iiif/helpers/events';\n\ntype SupportedEvents = 'onClick';\n\nexport function useEventListener<T>(\n resource: Reference,\n name: SupportedEvents,\n listener: (e: any, resource: T) => void,\n scope?: string[],\n deps: any[] = []\n) {\n const vault = useVault();\n const helper = useMemo(() => createEventsHelper(vault), [vault]);\n\n useEffect(() => {\n const currentResource = resource;\n if (!currentResource) {\n return () => {\n //\n };\n }\n helper.addEventListener(currentResource, name, listener, scope);\n return () => {\n helper.removeEventListener(currentResource, name, listener);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [helper, resource, name, ...deps]);\n}\n","import { CollectionNormalized } from '@iiif/presentation-3-normalized';\nimport { ResourceRequestOptions, useExternalResource } from './useExternalResource';\n\nexport function useExternalCollection(\n idOrRef: string | { id: string; type: string },\n options?: ResourceRequestOptions\n): {\n id: string;\n requestId: string;\n isLoaded: boolean;\n cached?: boolean;\n error: any;\n manifest?: CollectionNormalized;\n} {\n const { id, isLoaded, error, resource, requestId, cached } = useExternalResource<CollectionNormalized>(\n idOrRef,\n options\n );\n\n return { id, isLoaded, error, manifest: resource, requestId, cached };\n}\n","import { usePaintingAnnotations } from './usePaintingAnnotations';\nimport { getImageServices } from '@atlas-viewer/iiif-image-api';\nimport { useCanvas } from './useCanvas';\nimport { useVault } from './useVault';\nimport { IIIFExternalWebResource, ImageService } from '@iiif/presentation-3';\nimport { useImageServiceLoader } from '../context/ImageServiceLoaderContext';\nimport { useEffect, useMemo, useState } from 'react';\n\nexport interface ImageServiceRequestOptions {\n cacheKey?: string;\n}\n\n/**\n * Returns the First image service on the current canvas.\n *\n * @note It is better to use the hook useRenderingStrategy for rendering.\n */\nexport function useImageService({ cacheKey }: ImageServiceRequestOptions = {}): {\n data: ImageService | undefined;\n isFetching: boolean;\n status: 'error' | 'success' | 'loading' | 'idle';\n} {\n const canvas = useCanvas();\n const annotations = usePaintingAnnotations();\n const vault = useVault();\n const imageService = useImageServiceLoader();\n const [_data, setData] = useState<ImageService | undefined>(undefined);\n const [isFetching, setIsFetching] = useState(false);\n const [status, setStatus] = useState<'error' | 'success' | 'loading' | 'idle'>('idle');\n const [error, setError] = useState<Error | undefined>(undefined);\n const key = canvas ? canvas.id : 'undefined';\n const initialData = useMemo(() => {\n try {\n if (canvas && annotations.length) {\n const annotation = annotations[0];\n const resource = vault.get(annotation.body[0]);\n const imageServices = getImageServices(resource as any);\n const firstImageService = imageServices[0];\n\n if (!firstImageService) {\n return undefined;\n }\n\n return (\n imageService.loadServiceSync({\n id: firstImageService.id || (firstImageService['@id'] as string),\n width: firstImageService.width || canvas.width,\n height: firstImageService.height || canvas.height,\n }) || undefined\n );\n }\n } catch (e) {\n console.error(e);\n // silent error.\n }\n\n return undefined;\n\n // This is specifically not exhaustive. We only want to try to loadSync initially or when the canvas changes.\n }, [key, cacheKey, canvas]);\n\n const data = status === 'success' && _data ? _data : initialData;\n\n useEffect(() => {\n (async () => {\n try {\n if (canvas && annotations.length) {\n const annotation = annotations[0];\n const resource = vault.get(annotation.body[0]);\n const imageServices = getImageServices(resource as any) as any[];\n const firstImageService = imageServices[0] as any;\n\n if (!firstImageService) {\n return;\n }\n\n setIsFetching(true);\n setStatus('loading');\n\n try {\n const loadedService =\n (await imageService.loadService({\n id: firstImageService.id || firstImageService['@id'],\n width: firstImageService.width || canvas.width,\n height: firstImageService.height || canvas.height,\n })) || undefined;\n\n setData(loadedService as any);\n setStatus('success');\n setIsFetching(false);\n } catch (err) {\n setStatus('error');\n setError(err as Error);\n }\n }\n } catch (err) {\n setStatus('error');\n setError(err as Error);\n }\n })();\n\n // It's important that this DOESN'T refresh every time there is a new canvas change.\n // In an editing situation, the cache key should be used.\n }, [key, cacheKey]);\n\n return useMemo(() => {\n return {\n data,\n isFetching,\n status,\n error,\n } as any;\n }, [data, isFetching, status, error]);\n}\n","import { useImageService } from './useImageService';\nimport { ImageService } from '@iiif/presentation-3';\n\nexport function useImageTile() {\n const imageService = useImageService();\n\n return {\n isLoading: imageService.isFetching,\n tile: imageService.data\n ? {\n id: imageService.data.id || imageService.data['@id'],\n width: imageService.data.width,\n height: imageService.data.height,\n imageService: imageService.data as ImageService,\n thumbnail: undefined,\n }\n : null,\n };\n}\n","// This works inside of a manifest context\n// Final API to be decided, but this hook will be for driving search querying itself\n// Another hook/context will handle actually getting the search results for a particular canvas\nimport { useManifest } from './useManifest';\nimport { SearchService } from '@iiif/presentation-3';\nimport { ServiceNormalized } from '@iiif/presentation-3-normalized';\n\nexport function useSearchService(): SearchService | undefined {\n const manifest = useManifest();\n return manifest\n ? (manifest.service.find(\n (service: ServiceNormalized) =>\n service.profile === 'SearchService1' || service.profile === 'http://iiif.io/api/search/1/search'\n ) as any)\n : undefined;\n}\n","import { useVault } from './useVault';\nimport { createStylesHelper } from '@iiif/helpers/styles';\nimport { useMemo } from 'react';\n\nexport function useStyleHelper() {\n const vault = useVault();\n return useMemo(() => createStylesHelper(vault), [vault]);\n}\n"],"names":["ErrorBoundaryContext","createContext","initialState","ErrorBoundary","Component","props","error","_this$props$onReset","_this$props","_len","args","_key","info","_this$props$onError","_this$props2","prevProps","prevState","didCatch","resetKeys","hasArrayChanged","_this$props$onReset2","_this$props3","children","fallbackRender","FallbackComponent","fallback","childToRender","createElement","isValidElement","a","b","item","index","defaultResourceContext","ResourceReactContext","React","useResourceContext","useContext","ResourceProvider","value","parentContext","newContext","useMemo","ReactVaultContext","vault","VaultProvider","vaultOptions","useGlobal","resources","vaultInstance","setVaultInstance","useState","globalVault","Vault","useExistingVault","oldContext","useExternalResource","idOrRef","noCache","id","realId","setRealId","setError","initialData","resource","setResource","useEffect","fetchedResource","_realId","err","useExternalManifest","options","isLoaded","requestId","cached","ManifestContext","manifest","CanvasContext","canvas","useVault","useVaultSelector","selector","deps","selectedState","setSelectedState","s","VisibleCanvasReactContext","useVisibleCanvases","ids","state","useManifest","ctx","manifestId","RangeContext","range","findFirstCanvasFromRange","inner","found","findAllCanvasesInRange","_a","sourceId","findManifestSelectedRange","canvasId","findSelectedRange","parsedId","_b","_c","getVisibleCanvasesFromCanvasId","manifestOrRange","preventPaged","behavior","fullCanvas","canvasBehavior","isPaged","isContinuous","isIndividuals","isCanvasFacingPages","isCanvasNonPaged","manifestItems","ordering","getManifestSequence","canvasIndex","r","indexes","disablePaging","skipNonPaged","_","currentOrdering","flush","offset","flushNextPaged","i","useRange","rangeId","useCanvasSequence","startCanvas","cursor","setCursor","rangeOrManifest","items","initialSequence","lastSequence","useRef","prevItem","nextItem","setCanvasIndex","useCallback","foundSequence","setCanvasId","foundIndex","next","previous","idx","noop","SimpleViewerReactContext","InnerViewerProvider","visibleItems","sequence","setSequenceIndex","hasNext","hasPrevious","jsx","SimpleViewerProvider","useSimpleViewer","useContextBridge","ContextBridge","E","t","n","R","o","c","A","T","e","M","D","O","S","I","U","f","C","N","d","u","J","useDispatch","store","action","isVaultActivated","obj","useVirtualAnnotationPage","sources","dispatch","virtualId","useLayoutEffect","page","entityActions","fullPage","addAnnotation","atIndex","display","full","annotation","removeAnnotation","VirtualAnnotationPageContext","useVirtualAnnotationPageContext","VirtualAnnotationProvider","DefaultCanvasFallback","width","style","height","resetErrorBoundary","jsxs","ViewerPresetContext","useViewerPreset","SetOverlaysReactContext","SetPortalReactContext","useOverlay","type","key","element","setOverlay","useCanvas","WorldSizeContext","useWorldSize","size","fn","Viewer","errorFallback","outerContainerProps","_worldScale","viewerPreset","setViewerPreset","bridge","ErrorFallback","overlays","setOverlays","overlayComponents","portals","setPortals","portalComponents","worldSizes","setWorldSizes","worldScale","runtimeOptions","updateWorldSize","sizes","rest","updateOverlay","prev","updatePortal","fallbackProps","AtlasAuto","Fragment","Element","preset","ModeContext","l","g","useResourceEvents","scope","helper","createEventsHelper","hooks","useStyles","createStylesHelper","styles","useAnnotation","annotationId","body","singleBody","newAnnotation","expandTarget","RenderAnnotation","defaultStyle","className","interactive","html","events","allStyles","mergeStyles","RegionHighlight","useAnnotationPage","annotationPageId","annotationPage","RenderAnnotationPage","_page","RenderImage","image","thumbnail","isStatic","x","y","onClick","enableSizes","crop","TileSet","parseSpecificResource","getParsedTargetSelector","target","imageTarget","source","defaultTarget","emptyActions","unknownResponse","unsupportedStrategy","reason","emptyStrategy","getMeta","resourceId","resourceMeta","useEnabledAnnotationPageIds","availablePageIds","pageIds","allAnnotationListIds","annotationListId","annotationListMeta","flattenAnnotationPageIds","all","canvases","foundIds","canvas_","useAnnotationPageManager","enabledPageIds","setPageDisabled","deselectId","existingResources","setPageEnabled","opt","toDeselect","useResources","ImageServiceLoaderContext","ImageServiceLoader","useImageServiceLoader","useLoadImageService","loader","imageServiceStatus","setImageServiceStatus","didUnmount","imageService","imageServiceId","syncLoaded","usePaintingAnnotations","annotationPages","flatAnnotations","w","m","P","p","V","usePaintables","createPaintingAnnotationsHelper","paintingAnnotations","enabledChoices","setEnabledChoices","paintables","actions","deselectOthers","deselect","prevChoices","without","defaultId","newChoices","supportedFormats","get3dStrategy","getAudioStrategy","audioResource","getImageStrategy","loadImageService","imageTypes","singleImage","imageServices","getImageServices","imageSelector","imageType","parseType","languageMap","lang","language","getTextualContentStrategy","ytRegex","getVideoStrategy","videoPaintables","noDuration","videoResource","isYouTube","service","media","getRenderingStrategy","supports","mainType","useRenderingStrategy","enabledPages","strategy","useVaultEffect","callback","useThumbnail","request","dereference","createThumbnailHelper","setThumbnail","subject","v","thumb","getDefaultState","duration","reducer","formatTime","time","seconds","useSimpleMediaPlayer","useReducer","currentTime","progress","_isMuted","_updateCurrentTime","play","playPause","pause","toggleMute","mute","unmute","setVolume","newVolume","setDurationPercent","percent","setTime","interval","ended","_media","MediaReactContextState","MediaReactContextActions","MediaReactContextElements","useMediaState","useMediaActions","useMediaElements","MediaPlayerProvider","AudioHTML","Audio","mediaControlsDeps","VideoHTML","Video","ModelHTML","model","Model","name","CanvasBackground","LanguageContext","LanguageProvider","useIIIFLanguage","getLanguagePartFromCode","code","LanguageString","viewingDirection","i18nLanguage","getClosestLanguage","languages","i18nLanguages","root","useClosestLanguage","getLanguages","useLocaleString","inputText","defaultText","separator","candidateText","useCreateLocaleString","LocaleString","enableDangerouslySetInnerHTML","text","VideoYouTubeHTML","player","VideoYouTube","RenderCanvas","onChoiceChange","registerActions","defaultChoices","renderViewerControls","renderMediaControls","viewControlsDeps","strategies","throwOnUnknown","backgroundStyle","alwaysShowBackground","keepCanvasScale","enableYouTube","onClickPaintingAnnotation","elementProps","virtualPage","choice","bestScale","accompanyingCanvas","thumbnailFallbackImage","annotations","totalKey","HTMLPortal","Inner","forwardRef","ref","viewer","ViewerControls","MediaControls","useImperativeHandle","accumulator","CanvasPanel","margin","canvasProps","spacing","header","components","mode","reuseAtlas","CanvasAnnotations","pm","Metadata","metadata","config","labelWidth","showEmptyMessage","allowHtml","emptyFallback","classes","emptyMessage","emptyValueFallback","emptyLabelFallback","tableFooter","tableHeader","metadataKeyMap","flatKeys","map","labels","label","configItem","values","metadataItem","CombinedMetadata","canvasMetadata","rangeMetadata","useImage","data","quality","createImageServiceRequest","imageServiceRequestToString","RemoteImage","serviceId","setIsLoaded","foundService","src","Image","ManifestMetadata","h","j","ce","require$$0","require$$1","L","k","B","W","z","$","q","F","H","Y","X","G","K","Q","Z","re","ee","te","oe","ne","ie","buildModule","LazyLoadComponent","_LazyLoadComponent","SingleCanvasThumbnail","visible","figure","lazy","showLabel","alt","imageAlt","getValue","SequenceThumbnails","flat","container","currentSequenceIndex","selected","_d","_e","_f","row","rowComponents","isSelected","canvasIdx","AnnotationContext","AnnotationPageContext","CollectionContext","collection","useAnnotationsAtTime","useCanvasClock","autoplay","useCanvasSubset","idsOrRefs","refs","newItems","useCollection","collectionId","useEventListener","listener","currentResource","useExternalCollection","useImageService","cacheKey","_data","setData","isFetching","setIsFetching","status","setStatus","firstImageService","loadedService","useImageTile","useSearchService","useStyleHelper"],"mappings":"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","x_google_ignoreList":[0,19,29,45,72,73]}