react-iiif-vault 1.0.10 → 1.1.0
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.
- package/dist/bundle.d.ts +1058 -0
- package/dist/bundle.global.js +227 -0
- package/dist/canvas-panel.cjs +46 -0
- package/dist/canvas-panel.d.cts +11 -0
- package/dist/canvas-panel.d.ts +11 -0
- package/dist/canvas-panel.js +1 -0
- package/dist/chunk-HEVA2EDS.js +47 -0
- package/dist/chunk-YSH2CIKG.js +1 -0
- package/dist/index-BZirmhnp.d.cts +188 -0
- package/dist/index-Cxs6aAuK.d.ts +188 -0
- package/dist/index.cjs +47 -0
- package/dist/index.d.cts +721 -0
- package/dist/index.d.ts +721 -0
- package/dist/index.js +1 -0
- package/dist/useRenderingStrategy-Xj9yQm4y.d.cts +145 -0
- package/dist/useRenderingStrategy-Xj9yQm4y.d.ts +145 -0
- package/dist/utils.cjs +1 -0
- package/dist/utils.d.cts +32 -0
- package/dist/utils.d.ts +32 -0
- package/dist/utils.js +1 -0
- package/package.json +67 -70
- package/.build/types/canvas-panel/Viewer.d.ts +0 -14
- package/.build/types/canvas-panel/context/overlays.d.ts +0 -3
- package/.build/types/canvas-panel/context/world-size.d.ts +0 -2
- package/.build/types/canvas-panel/index.d.ts +0 -46
- package/.build/types/canvas-panel/render/Annotation.d.ts +0 -8
- package/.build/types/canvas-panel/render/AnnotationPage.d.ts +0 -7
- package/.build/types/canvas-panel/render/Audio.d.ts +0 -11
- package/.build/types/canvas-panel/render/Canvas.d.ts +0 -34
- package/.build/types/canvas-panel/render/CanvasBackground.d.ts +0 -4
- package/.build/types/canvas-panel/render/DefaultCanvasFallback.d.ts +0 -6
- package/.build/types/canvas-panel/render/Image.d.ts +0 -16
- package/.build/types/canvas-panel/render/Model.d.ts +0 -7
- package/.build/types/canvas-panel/render/Video.d.ts +0 -12
- package/.build/types/canvas-panel/render/VideoYouTube.d.ts +0 -12
- package/.build/types/components/CanvasAnnotations.d.ts +0 -10
- package/.build/types/components/CombinedMetadata.d.ts +0 -4
- package/.build/types/components/Image.d.ts +0 -15
- package/.build/types/components/ManifestMetadata.d.ts +0 -4
- package/.build/types/components/Metadata.d.ts +0 -39
- package/.build/types/components/SequenceThumbnails.d.ts +0 -29
- package/.build/types/components/SingleCanvasThumbnail.d.ts +0 -20
- package/.build/types/context/AnnotationContext.d.ts +0 -5
- package/.build/types/context/AnnotationPageContext.d.ts +0 -5
- package/.build/types/context/CanvasContext.d.ts +0 -5
- package/.build/types/context/CollectionContext.d.ts +0 -5
- package/.build/types/context/ContextBridge.d.ts +0 -14
- package/.build/types/context/ImageServiceLoaderContext.d.ts +0 -4
- package/.build/types/context/ManifestContext.d.ts +0 -5
- package/.build/types/context/MediaContext.d.ts +0 -17
- package/.build/types/context/RangeContext.d.ts +0 -5
- package/.build/types/context/ResourceContext.d.ts +0 -15
- package/.build/types/context/VaultContext.d.ts +0 -14
- package/.build/types/context/ViewerPresetContext.d.ts +0 -3
- package/.build/types/context/VisibleCanvasContext.d.ts +0 -4
- package/.build/types/demo/demo.d.ts +0 -1
- package/.build/types/demo/media-controls.d.ts +0 -1
- package/.build/types/demo/viewer-controls.d.ts +0 -1
- package/.build/types/features/rendering-strategy/3d-strategy.d.ts +0 -12
- package/.build/types/features/rendering-strategy/audio-strategy.d.ts +0 -3
- package/.build/types/features/rendering-strategy/get-rendering-strategy.d.ts +0 -11
- package/.build/types/features/rendering-strategy/image-strategy.d.ts +0 -12
- package/.build/types/features/rendering-strategy/rendering-utils.d.ts +0 -12
- package/.build/types/features/rendering-strategy/resource-types.d.ts +0 -55
- package/.build/types/features/rendering-strategy/strategies.d.ts +0 -31
- package/.build/types/features/rendering-strategy/textual-content-strategy.d.ts +0 -16
- package/.build/types/features/rendering-strategy/video-strategy.d.ts +0 -3
- package/.build/types/future-helpers/ranges.d.ts +0 -7
- package/.build/types/future-helpers/sequences.d.ts +0 -8
- package/.build/types/hooks/useAnnotation.d.ts +0 -8
- package/.build/types/hooks/useAnnotationPage.d.ts +0 -8
- package/.build/types/hooks/useAnnotationPageManager.d.ts +0 -10
- package/.build/types/hooks/useAnnotationsAtTime.d.ts +0 -4
- package/.build/types/hooks/useCanvas.d.ts +0 -8
- package/.build/types/hooks/useCanvasClock.d.ts +0 -1
- package/.build/types/hooks/useCanvasSelector.d.ts +0 -0
- package/.build/types/hooks/useCanvasSubset.d.ts +0 -2
- package/.build/types/hooks/useCanvasTimeline.d.ts +0 -0
- package/.build/types/hooks/useCollection.d.ts +0 -8
- package/.build/types/hooks/useDispatch.d.ts +0 -2
- package/.build/types/hooks/useEnabledAnnotationPageIds.d.ts +0 -1
- package/.build/types/hooks/useEventListener.d.ts +0 -4
- package/.build/types/hooks/useExistingVault.d.ts +0 -2
- package/.build/types/hooks/useExternalCollection.d.ts +0 -13
- package/.build/types/hooks/useExternalManifest.d.ts +0 -13
- package/.build/types/hooks/useExternalResource.d.ts +0 -16
- package/.build/types/hooks/useImage.d.ts +0 -10
- package/.build/types/hooks/useImageService.d.ts +0 -9
- package/.build/types/hooks/useImageTile.d.ts +0 -11
- package/.build/types/hooks/useLoadImageService.d.ts +0 -6
- package/.build/types/hooks/useManifest.d.ts +0 -8
- package/.build/types/hooks/usePaintables.d.ts +0 -9
- package/.build/types/hooks/usePaintingAnnotations.d.ts +0 -5
- package/.build/types/hooks/useRange.d.ts +0 -8
- package/.build/types/hooks/useRenderingStrategy.d.ts +0 -15
- package/.build/types/hooks/useResourceEvents.d.ts +0 -3
- package/.build/types/hooks/useResources.d.ts +0 -1
- package/.build/types/hooks/useSearchService.d.ts +0 -2
- package/.build/types/hooks/useSimpleMediaPlayer.d.ts +0 -32
- package/.build/types/hooks/useStyleHelper.d.ts +0 -1
- package/.build/types/hooks/useStyles.d.ts +0 -3
- package/.build/types/hooks/useThumbnail.d.ts +0 -5
- package/.build/types/hooks/useVault.d.ts +0 -2
- package/.build/types/hooks/useVaultEffect.d.ts +0 -2
- package/.build/types/hooks/useVaultSelector.d.ts +0 -2
- package/.build/types/hooks/useVirtualAnnotationPage.d.ts +0 -14
- package/.build/types/hooks/useVirtualAnnotationPageContext.d.ts +0 -671
- package/.build/types/hooks/useVirtualCanvas.d.ts +0 -0
- package/.build/types/index.d.ts +0 -72
- package/.build/types/utility/flatten-annotation-page-ids.d.ts +0 -7
- package/.build/types/utility/i18n-utils.d.ts +0 -30
- package/.build/types/utils.d.ts +0 -2
- package/.build/types/viewers/SimpleViewerContext.d.ts +0 -6
- package/.build/types/viewers/SimpleViewerContext.hooks.d.ts +0 -19
- package/.build/types/viewers/SimpleViewerContext.types.d.ts +0 -46
- package/.build/types/viewers/SingleCanvasContext.d.ts +0 -1
- package/dist/bundle/cjs/index.js +0 -49
- package/dist/bundle/cjs/index.js.map +0 -1
- package/dist/bundle/esm/index.mjs +0 -3314
- package/dist/bundle/esm/index.mjs.map +0 -1
- package/dist/canvas-panel/cjs/canvas-panel.js +0 -47
- package/dist/canvas-panel/cjs/canvas-panel.js.map +0 -1
- package/dist/canvas-panel/esm/canvas-panel.mjs +0 -1853
- package/dist/canvas-panel/esm/canvas-panel.mjs.map +0 -1
- package/dist/index.umd.js +0 -393
- package/dist/index.umd.js.map +0 -1
- package/dist/react17/cjs/index.js +0 -49
- package/dist/react17/cjs/index.js.map +0 -1
- package/dist/react17/esm/index.mjs +0 -3314
- package/dist/react17/esm/index.mjs.map +0 -1
- package/dist/utils/cjs/utils.js +0 -2
- package/dist/utils/cjs/utils.js.map +0 -1
- package/dist/utils/esm/utils.mjs +0 -238
- package/dist/utils/esm/utils.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","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","VisibleCanvasReactContext","useVisibleCanvases","ids","state","useManifest","ctx","manifestId","s","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","h","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","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]}
|