react-iiif-vault 1.0.11 → 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.
Files changed (134) hide show
  1. package/dist/bundle.d.ts +1058 -0
  2. package/dist/bundle.global.js +227 -0
  3. package/dist/canvas-panel.cjs +46 -0
  4. package/dist/canvas-panel.d.cts +11 -0
  5. package/dist/canvas-panel.d.ts +11 -0
  6. package/dist/canvas-panel.js +1 -0
  7. package/dist/chunk-HEVA2EDS.js +47 -0
  8. package/dist/chunk-YSH2CIKG.js +1 -0
  9. package/dist/index-BZirmhnp.d.cts +188 -0
  10. package/dist/index-Cxs6aAuK.d.ts +188 -0
  11. package/dist/index.cjs +47 -0
  12. package/dist/index.d.cts +721 -0
  13. package/dist/index.d.ts +721 -0
  14. package/dist/index.js +1 -0
  15. package/dist/useRenderingStrategy-Xj9yQm4y.d.cts +145 -0
  16. package/dist/useRenderingStrategy-Xj9yQm4y.d.ts +145 -0
  17. package/dist/utils.cjs +1 -0
  18. package/dist/utils.d.cts +32 -0
  19. package/dist/utils.d.ts +32 -0
  20. package/dist/utils.js +1 -0
  21. package/package.json +67 -70
  22. package/.build/types/canvas-panel/Viewer.d.ts +0 -14
  23. package/.build/types/canvas-panel/context/overlays.d.ts +0 -3
  24. package/.build/types/canvas-panel/context/world-size.d.ts +0 -2
  25. package/.build/types/canvas-panel/index.d.ts +0 -46
  26. package/.build/types/canvas-panel/render/Annotation.d.ts +0 -8
  27. package/.build/types/canvas-panel/render/AnnotationPage.d.ts +0 -7
  28. package/.build/types/canvas-panel/render/Audio.d.ts +0 -11
  29. package/.build/types/canvas-panel/render/Canvas.d.ts +0 -34
  30. package/.build/types/canvas-panel/render/CanvasBackground.d.ts +0 -4
  31. package/.build/types/canvas-panel/render/DefaultCanvasFallback.d.ts +0 -6
  32. package/.build/types/canvas-panel/render/Image.d.ts +0 -16
  33. package/.build/types/canvas-panel/render/Model.d.ts +0 -7
  34. package/.build/types/canvas-panel/render/Video.d.ts +0 -12
  35. package/.build/types/canvas-panel/render/VideoYouTube.d.ts +0 -12
  36. package/.build/types/components/CanvasAnnotations.d.ts +0 -10
  37. package/.build/types/components/CombinedMetadata.d.ts +0 -4
  38. package/.build/types/components/Image.d.ts +0 -15
  39. package/.build/types/components/ManifestMetadata.d.ts +0 -4
  40. package/.build/types/components/Metadata.d.ts +0 -39
  41. package/.build/types/components/SequenceThumbnails.d.ts +0 -29
  42. package/.build/types/components/SingleCanvasThumbnail.d.ts +0 -20
  43. package/.build/types/context/AnnotationContext.d.ts +0 -5
  44. package/.build/types/context/AnnotationPageContext.d.ts +0 -5
  45. package/.build/types/context/CanvasContext.d.ts +0 -5
  46. package/.build/types/context/CollectionContext.d.ts +0 -5
  47. package/.build/types/context/ContextBridge.d.ts +0 -14
  48. package/.build/types/context/ImageServiceLoaderContext.d.ts +0 -4
  49. package/.build/types/context/ManifestContext.d.ts +0 -5
  50. package/.build/types/context/MediaContext.d.ts +0 -17
  51. package/.build/types/context/RangeContext.d.ts +0 -5
  52. package/.build/types/context/ResourceContext.d.ts +0 -15
  53. package/.build/types/context/VaultContext.d.ts +0 -14
  54. package/.build/types/context/ViewerPresetContext.d.ts +0 -3
  55. package/.build/types/context/VisibleCanvasContext.d.ts +0 -4
  56. package/.build/types/demo/demo.d.ts +0 -1
  57. package/.build/types/demo/media-controls.d.ts +0 -1
  58. package/.build/types/demo/viewer-controls.d.ts +0 -1
  59. package/.build/types/features/rendering-strategy/3d-strategy.d.ts +0 -12
  60. package/.build/types/features/rendering-strategy/audio-strategy.d.ts +0 -3
  61. package/.build/types/features/rendering-strategy/get-rendering-strategy.d.ts +0 -11
  62. package/.build/types/features/rendering-strategy/image-strategy.d.ts +0 -12
  63. package/.build/types/features/rendering-strategy/rendering-utils.d.ts +0 -12
  64. package/.build/types/features/rendering-strategy/resource-types.d.ts +0 -55
  65. package/.build/types/features/rendering-strategy/strategies.d.ts +0 -31
  66. package/.build/types/features/rendering-strategy/textual-content-strategy.d.ts +0 -16
  67. package/.build/types/features/rendering-strategy/video-strategy.d.ts +0 -3
  68. package/.build/types/future-helpers/ranges.d.ts +0 -7
  69. package/.build/types/future-helpers/sequences.d.ts +0 -8
  70. package/.build/types/hooks/useAnnotation.d.ts +0 -8
  71. package/.build/types/hooks/useAnnotationPage.d.ts +0 -8
  72. package/.build/types/hooks/useAnnotationPageManager.d.ts +0 -10
  73. package/.build/types/hooks/useAnnotationsAtTime.d.ts +0 -4
  74. package/.build/types/hooks/useCanvas.d.ts +0 -8
  75. package/.build/types/hooks/useCanvasClock.d.ts +0 -1
  76. package/.build/types/hooks/useCanvasSelector.d.ts +0 -0
  77. package/.build/types/hooks/useCanvasSubset.d.ts +0 -2
  78. package/.build/types/hooks/useCanvasTimeline.d.ts +0 -0
  79. package/.build/types/hooks/useCollection.d.ts +0 -8
  80. package/.build/types/hooks/useDispatch.d.ts +0 -2
  81. package/.build/types/hooks/useEnabledAnnotationPageIds.d.ts +0 -1
  82. package/.build/types/hooks/useEventListener.d.ts +0 -4
  83. package/.build/types/hooks/useExistingVault.d.ts +0 -2
  84. package/.build/types/hooks/useExternalCollection.d.ts +0 -13
  85. package/.build/types/hooks/useExternalManifest.d.ts +0 -13
  86. package/.build/types/hooks/useExternalResource.d.ts +0 -16
  87. package/.build/types/hooks/useImage.d.ts +0 -10
  88. package/.build/types/hooks/useImageService.d.ts +0 -9
  89. package/.build/types/hooks/useImageTile.d.ts +0 -11
  90. package/.build/types/hooks/useLoadImageService.d.ts +0 -6
  91. package/.build/types/hooks/useManifest.d.ts +0 -8
  92. package/.build/types/hooks/usePaintables.d.ts +0 -9
  93. package/.build/types/hooks/usePaintingAnnotations.d.ts +0 -5
  94. package/.build/types/hooks/useRange.d.ts +0 -8
  95. package/.build/types/hooks/useRenderingStrategy.d.ts +0 -15
  96. package/.build/types/hooks/useResourceEvents.d.ts +0 -3
  97. package/.build/types/hooks/useResources.d.ts +0 -1
  98. package/.build/types/hooks/useSearchService.d.ts +0 -2
  99. package/.build/types/hooks/useSimpleMediaPlayer.d.ts +0 -32
  100. package/.build/types/hooks/useStyleHelper.d.ts +0 -1
  101. package/.build/types/hooks/useStyles.d.ts +0 -3
  102. package/.build/types/hooks/useThumbnail.d.ts +0 -5
  103. package/.build/types/hooks/useVault.d.ts +0 -2
  104. package/.build/types/hooks/useVaultEffect.d.ts +0 -2
  105. package/.build/types/hooks/useVaultSelector.d.ts +0 -2
  106. package/.build/types/hooks/useVirtualAnnotationPage.d.ts +0 -14
  107. package/.build/types/hooks/useVirtualAnnotationPageContext.d.ts +0 -671
  108. package/.build/types/hooks/useVirtualCanvas.d.ts +0 -0
  109. package/.build/types/index.d.ts +0 -72
  110. package/.build/types/utility/flatten-annotation-page-ids.d.ts +0 -7
  111. package/.build/types/utility/i18n-utils.d.ts +0 -30
  112. package/.build/types/utils.d.ts +0 -2
  113. package/.build/types/viewers/SimpleViewerContext.d.ts +0 -6
  114. package/.build/types/viewers/SimpleViewerContext.hooks.d.ts +0 -19
  115. package/.build/types/viewers/SimpleViewerContext.types.d.ts +0 -46
  116. package/.build/types/viewers/SingleCanvasContext.d.ts +0 -1
  117. package/dist/bundle/cjs/index.js +0 -49
  118. package/dist/bundle/cjs/index.js.map +0 -1
  119. package/dist/bundle/esm/index.mjs +0 -3319
  120. package/dist/bundle/esm/index.mjs.map +0 -1
  121. package/dist/canvas-panel/cjs/canvas-panel.js +0 -47
  122. package/dist/canvas-panel/cjs/canvas-panel.js.map +0 -1
  123. package/dist/canvas-panel/esm/canvas-panel.mjs +0 -1858
  124. package/dist/canvas-panel/esm/canvas-panel.mjs.map +0 -1
  125. package/dist/index.umd.js +0 -393
  126. package/dist/index.umd.js.map +0 -1
  127. package/dist/react17/cjs/index.js +0 -49
  128. package/dist/react17/cjs/index.js.map +0 -1
  129. package/dist/react17/esm/index.mjs +0 -3319
  130. package/dist/react17/esm/index.mjs.map +0 -1
  131. package/dist/utils/cjs/utils.js +0 -2
  132. package/dist/utils/cjs/utils.js.map +0 -1
  133. package/dist/utils/esm/utils.mjs +0 -238
  134. 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, useRef, useState } from 'react';\nimport { useRange } from '../hooks/useRange';\nimport { useVault } from '../hooks/useVault';\n\nexport function useCanvasSequence({ startCanvas, disablePaging }: { startCanvas?: string; disablePaging?: boolean }) {\n const vault = useVault();\n const manifest = useManifest();\n const range = useRange();\n const [cursor, setCursor] = useState<number>(undefined as any);\n const rangeOrManifest = range ? range : manifest;\n\n if (!rangeOrManifest) {\n throw new Error('Nothing selected');\n }\n\n const [items, initialSequence] = useMemo(\n () => getManifestSequence(vault, rangeOrManifest, { disablePaging }),\n [vault, rangeOrManifest, disablePaging]\n );\n const lastSequence = useRef(initialSequence);\n\n if (lastSequence.current !== initialSequence) {\n const prev = lastSequence.current;\n const prevItem = prev[cursor][0];\n const nextItem = initialSequence.findIndex((i) => i.includes(prevItem));\n lastSequence.current = initialSequence;\n setCursor(nextItem);\n }\n\n const setCanvasIndex = useCallback(\n (index: number) => {\n const foundSequence = initialSequence.findIndex((i) => i.includes(index));\n setCursor(foundSequence === -1 ? 0 : foundSequence);\n },\n [items, initialSequence]\n );\n\n const setCanvasId = useCallback(\n (id: string) => {\n const foundIndex = items.findIndex((i) => i.id === id);\n if (foundIndex !== -1) {\n setCanvasIndex(foundIndex);\n } else {\n setCursor(0);\n }\n },\n [items, initialSequence]\n );\n\n const next = useCallback(() => {\n setCursor((i) => {\n if (i >= initialSequence.length - 1) {\n return i;\n }\n return i + 1;\n });\n }, [initialSequence]);\n\n const previous = useCallback(() => {\n setCursor((i) => {\n if (i <= 0) {\n return 0;\n }\n return i - 1;\n });\n }, [initialSequence]);\n\n // Need to set an initial cursor from the canvasId (if it's valid)\n if (typeof cursor === 'undefined') {\n if (startCanvas) {\n setCanvasId(startCanvas);\n } else {\n setCursor(0);\n }\n }\n\n return {\n visibleItems: initialSequence[cursor]?.map((idx) => items[idx].id) || [],\n cursor,\n items,\n sequence: initialSequence,\n hasPrevious: cursor > 0,\n hasNext: cursor < initialSequence.length - 1,\n setSequenceIndex: setCursor,\n setCanvasIndex,\n setCanvasId,\n next,\n previous,\n };\n}\n","import React, { ReactNode, useCallback, useContext, useEffect, useRef } from 'react';\n/**\n * Simple viewer context\n * *****************************************************************************\n *\n * This will be the context to use to get a basic IIIF viewer up and running.\n * It will not focus on having compatibility with the full range of IIIF\n * resources, instead offering a viewer for a Manifest, cycling through canvases\n * while ignoring the paged/facing-pages/continuous behaviors.\n *\n * There will not be support for canvas-on-canvas annotations. Annotations will\n * be filtered, giving details of the canvas space and images to be annotated\n * onto that space. The demo implementation of this viewer will use\n * OpenSeadragon to display.\n *\n * Navigation functions will include the basics:\n * - nextCanvas()\n * - previousCanvas()\n * - goToCanvas(id)\n * - goToCanvasIndex(idx)\n * - goToFirstCanvas()\n * - goToLastCanvas()\n *\n * It will take in only a Manifest ID and will load that Manifest when the\n * context loads.\n *\n * There will be no support for external or embedded annotation lists, although\n * you can set up a nested context to support this.\n *\n * There will be no support for ranges in this view.\n *\n * To use this component, first you will need the provider:\n * import { SimpleViewerProvider } from '...';\n *\n * <SimpleViewerProvider id=\"http://example.org/manifest.json\">\n * <CustomComponent />\n * </SimpleViewerProvider>\n *\n * This is in addition to the core Vault context further up the tree.\n *\n * In components that you want to use parts of the state you can grab the hooks\n * from this file.\n *\n * import { useSimpleViewer } from '...';\n *\n * And use them in your components to get the actions.\n *\n * function NextButton() {\n * const { nextCanvas } = useSimpleViewer();\n *\n * return <button onClick={nextCanvas}>Next</button>;\n * }\n *\n * Since this is a single-context, there is only ever one manifest, canvas and\n * annotation list. You can access the current resource using the normal hooks.\n *\n * function CanvasMetadata() {\n * const metadata = useCanvas(metadataSelector);\n *\n * return <div> ... </div>\n * }\n *\n * So long as this is inside the provider, it will have the correct context.\n */\nimport { createContext, FC, useMemo, useState } from 'react';\nimport { useExternalManifest } from '../hooks/useExternalManifest';\nimport { ManifestContext } from '../context/ManifestContext';\nimport { CanvasContext } from '../context/CanvasContext';\nimport { VisibleCanvasReactContext } from '../context/VisibleCanvasContext';\nimport { useManifest } from '../hooks/useManifest';\nimport { SimpleViewerContext, SimpleViewerProps } from './SimpleViewerContext.types';\nimport { RangeContext } from '../context/RangeContext';\nimport { useCanvasSequence } from './SimpleViewerContext.hooks';\nimport { VaultProvider } from '../context/VaultContext';\nimport { useExistingVault } from '../hooks/useExistingVault';\n\nconst noop = () => {\n //\n};\n\nexport const SimpleViewerReactContext = createContext<SimpleViewerContext>({\n setCurrentCanvasId: noop,\n setCurrentCanvasIndex: noop,\n nextCanvas: noop,\n previousCanvas: noop,\n items: [],\n sequence: [],\n setSequenceIndex: noop,\n currentSequenceIndex: 0,\n hasNext: false,\n hasPrevious: false,\n});\n\nexport function InnerViewerProvider(props: SimpleViewerProps) {\n const manifest = useManifest();\n const {\n cursor,\n visibleItems,\n next,\n sequence,\n items,\n setCanvasIndex,\n setCanvasId,\n previous,\n setSequenceIndex,\n hasNext,\n hasPrevious,\n } = useCanvasSequence({\n startCanvas: props.startCanvas,\n disablePaging: props.pagingEnabled === false,\n });\n\n const ctx = useMemo(\n () =>\n ({\n sequence,\n items,\n // Extra functions.\n setCurrentCanvasId: setCanvasId,\n nextCanvas: next,\n previousCanvas: previous,\n totalCanvases: items.length,\n setCurrentCanvasIndex: setCanvasIndex,\n setSequenceIndex: setSequenceIndex,\n currentSequenceIndex: cursor,\n hasNext,\n hasPrevious,\n } as SimpleViewerContext),\n [sequence, items, setCanvasId, next, previous, items, setCanvasIndex, setSequenceIndex, cursor]\n );\n\n if (!manifest) {\n console.warn('The manifest passed to the provider is not a valid IIIF manifest.');\n return <div>Sorry, something went wrong.</div>;\n }\n\n if (visibleItems.length === 0) {\n return null;\n }\n\n return (\n <SimpleViewerReactContext.Provider value={ctx}>\n <VisibleCanvasReactContext.Provider value={visibleItems}>\n <CanvasContext canvas={visibleItems[0]}>{props.children}</CanvasContext>\n </VisibleCanvasReactContext.Provider>\n </SimpleViewerReactContext.Provider>\n );\n}\n\nexport function SimpleViewerProvider(props: SimpleViewerProps) {\n const vault = useExistingVault(props.vault);\n const manifest = useExternalManifest(props.manifest);\n\n if (!manifest) {\n console.warn('The manifest passed to the provider is not a valid IIIF manifest.');\n return <div>Sorry, something went wrong.</div>;\n }\n\n if (manifest.error) {\n return <div>{manifest.error.toString()}</div>;\n }\n\n if (!manifest.isLoaded) {\n return <div>Loading...</div>;\n }\n\n const inner = <InnerViewerProvider {...props}>{props.children}</InnerViewerProvider>;\n\n return (\n <VaultProvider vault={vault}>\n <ManifestContext manifest={manifest.id}>\n {props.rangeId ? <RangeContext range={props.rangeId}>{inner}</RangeContext> : inner}\n </ManifestContext>\n </VaultProvider>\n );\n}\n\nexport function useSimpleViewer() {\n return useContext(SimpleViewerReactContext);\n}\n","import React, { ReactNode, useContext } from 'react';\nimport { ResourceReactContext } from './ResourceContext';\nimport { ReactVaultContext, VaultProvider } from './VaultContext';\nimport { SimpleViewerReactContext } from '../viewers/SimpleViewerContext';\nimport { VisibleCanvasReactContext } from './VisibleCanvasContext';\n\nexport function useContextBridge() {\n return {\n VaultContext: useContext(ReactVaultContext),\n ResourceContext: useContext(ResourceReactContext),\n SimpleViewerReactContext: useContext(SimpleViewerReactContext),\n VisibleCanvasReactContext: useContext(VisibleCanvasReactContext),\n };\n}\n\nexport function ContextBridge(props: { bridge: ReturnType<typeof useContextBridge>; children: ReactNode }) {\n return (\n <VaultProvider vault={props.bridge.VaultContext.vault || undefined} resources={props.bridge.ResourceContext}>\n <VisibleCanvasReactContext.Provider value={props.bridge.VisibleCanvasReactContext}>\n <SimpleViewerReactContext.Provider value={props.bridge.SimpleViewerReactContext}>\n {props.children}\n </SimpleViewerReactContext.Provider>\n </VisibleCanvasReactContext.Provider>\n </VaultProvider>\n );\n}\n","const E = function(t) {\n return function() {\n const n = { type: t, getType: () => t, toString: () => t };\n return (i, R) => ({\n ...n,\n ...i !== void 0 && { payload: i },\n ...R !== void 0 && { meta: R }\n });\n };\n}, o = \"@iiif/IMPORT_ENTITIES\", c = \"@iiif/MODIFY_ENTITY_FIELD\", s = \"@iiif/REORDER_ENTITY_FIELD\", A = \"@iiif/ADD_REFERENCE\", T = \"@iiif/UPDATE_REFERENCE\", e = \"@iiif/REMOVE_REFERENCE\", _ = \"@iiif/ADD_METADATA\", M = \"@iiif/REMOVE_METADATA\", D = \"@iiif/UPDATE_METADATA\", O = \"@iiif/REORDER_METADATA\", S = E(o)(), a = E(c)(), r = E(s)(), I = E(A)(), U = E(e)(), f = E(T)(), C = E(_)(), N = E(D)(), d = E(M)(), u = E(O)(), J = {\n importEntities: S,\n modifyEntityField: a,\n reorderEntityField: r,\n addReference: I,\n removeReference: U,\n updateReference: f,\n addMetadata: C,\n removeMetadata: d,\n updateMetadata: N,\n reorderMetadata: u\n}, F = \"@iiif/ADD_MAPPING\", P = \"@iiif/ADD_MAPPINGS\", L = E(F)(), V = E(P)(), K = { addMapping: L, addMappings: V }, p = \"@iiif/SET_META_VALUE\", Q = \"@iiif/SET_META_VALUE_DYNAMIC\", Y = \"@iiif/UNSET_META_VALUE\", m = E(p)(), l = E(Q)(), q = E(Y)(), W = {\n setMetaValue: m,\n setMetaValueDynamic: l,\n unsetMetaValue: q\n}, X = \"RESOURCE_ERROR\", Z = \"RESOURCE_LOADING\", $ = \"RESOURCE_READY\", G = \"@iiif/REQUEST_RESOURCE\", H = \"@iiif/REQUEST_ERROR\", g = \"@iiif/REQUEST_MISMATCH\", v = \"@iiif/REQUEST_COMPLETE\", B = \"@iiif/REQUEST_OFFLINE_RESOURCE\", b = E(G)(), h = E(H)(), y = E(g)(), x = E(v)(), j = E(B)(), EE = {\n requestResource: b,\n requestError: h,\n requestMismatch: y,\n requestComplete: x,\n requestOfflineResource: j\n}, k = \"@iiif/BATCH\", w = \"@iiif/BATCH_IMPORT\", tE = E(k)(), iE = E(w)();\nexport {\n F as ADD_MAPPING,\n P as ADD_MAPPINGS,\n _ as ADD_METADATA,\n A as ADD_REFERENCE,\n k as BATCH_ACTIONS,\n w as BATCH_IMPORT,\n o as IMPORT_ENTITIES,\n c as MODIFY_ENTITY_FIELD,\n M as REMOVE_METADATA,\n e as REMOVE_REFERENCE,\n s as REORDER_ENTITY_FIELD,\n O as REORDER_METADATA,\n v as REQUEST_COMPLETE,\n H as REQUEST_ERROR,\n g as REQUEST_MISMATCH,\n B as REQUEST_OFFLINE_RESOURCE,\n G as REQUEST_RESOURCE,\n X as RESOURCE_ERROR,\n Z as RESOURCE_LOADING,\n $ as RESOURCE_READY,\n p as SET_META_VALUE,\n Q as SET_META_VALUE_DYNAMIC,\n Y as UNSET_META_VALUE,\n D as UPDATE_METADATA,\n T as UPDATE_REFERENCE,\n L as addMapping,\n V as addMappings,\n C as addMetadata,\n I as addReference,\n tE as batchActions,\n iE as batchImport,\n J as entityActions,\n S as importEntities,\n K as mappingActions,\n W as metaActions,\n a as modifyEntityField,\n d as removeMetadata,\n U as removeReference,\n r as reorderEntityField,\n u as reorderMetadata,\n EE as requestActions,\n x as requestComplete,\n h as requestError,\n y as requestMismatch,\n j as requestOfflineResource,\n b as requestResource,\n N as updateMetadata,\n f as updateReference\n};\n//# sourceMappingURL=vault-actions.mjs.map\n","import { useVault } from './useVault';\nimport { useMemo } from 'react';\nimport { VaultZustandStore } from '@iiif/helpers/vault/store';\n\nexport function useDispatch(): VaultZustandStore['dispatch'] {\n const vault = useVault();\n const store = vault.getStore();\n\n return useMemo(() => {\n return (action: any) => store.dispatch(action);\n }, [store]);\n}\n","import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';\nimport { Annotation } from '@iiif/presentation-3';\nimport { AnnotationNormalized, AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useVault } from './useVault';\nimport { useVaultSelector } from './useVaultSelector';\nimport { entityActions } from '@iiif/helpers/vault/actions';\nimport { useDispatch } from './useDispatch';\nimport { Vault } from '@iiif/helpers/vault';\n\nexport interface VaultActivatedAnnotation {\n __vault?: Vault;\n bindToVault(vault: Vault): void;\n source: string | { id: string };\n}\n\nfunction isVaultActivated(obj: any): obj is VaultActivatedAnnotation {\n return typeof obj !== 'string' && obj && obj.bindToVault;\n}\n\nexport function useVirtualAnnotationPage() {\n const vault = useVault();\n const sources = useRef<Record<any, any>>([]);\n const dispatch = useDispatch();\n const virtualId = useMemo(() => {\n return `vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random() * 1000000000).toString(16)}`;\n }, []);\n\n useLayoutEffect(() => {\n const page: AnnotationPageNormalized = {\n id: virtualId,\n type: 'AnnotationPage',\n behavior: [],\n label: null,\n thumbnail: [],\n summary: null,\n requiredStatement: null,\n metadata: [],\n rights: null,\n provider: [],\n items: [],\n seeAlso: [],\n homepage: [],\n rendering: [],\n service: [],\n };\n\n dispatch(\n entityActions.importEntities({\n entities: {\n AnnotationPage: {\n [page.id]: page,\n },\n },\n })\n );\n }, [virtualId]);\n\n const fullPage: AnnotationPageNormalized | null = useVaultSelector(\n (state) => (virtualId ? state.iiif.entities.AnnotationPage[virtualId] : null),\n [virtualId]\n );\n\n const addAnnotation = useCallback(\n (id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized, atIndex?: number) => {\n if (virtualId) {\n if (isVaultActivated(id)) {\n const display = id;\n if (!display.__vault) {\n // First bind to vault.\n display.bindToVault(vault);\n }\n id = typeof display.source === 'string' ? display.source : display.source.id;\n sources.current[id] = display;\n } else if (typeof id !== 'string') {\n id = id.id;\n }\n\n const full: AnnotationPageNormalized = vault.get({ id: virtualId, type: 'AnnotationPage' });\n const annotation: AnnotationNormalized = vault.get({ id, type: 'Annotation' });\n if (full && annotation) {\n if (!full.items.find((r: any) => r.id === annotation.id)) {\n dispatch(\n entityActions.addReference({\n id: virtualId,\n type: 'AnnotationPage',\n key: 'items',\n reference: {\n id,\n type: 'Annotation',\n },\n index: atIndex,\n })\n );\n }\n }\n }\n },\n [virtualId]\n );\n const removeAnnotation = useCallback(\n (id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized) => {\n if (virtualId) {\n if (isVaultActivated(id)) {\n id = typeof id.source === 'string' ? id.source : id.source.id;\n } else if (typeof id !== 'string') {\n id = id.id;\n }\n\n if (sources.current[id]) {\n sources.current[id].beforeRemove();\n }\n\n const full: AnnotationPageNormalized = vault.get({ id: virtualId, type: 'AnnotationPage' });\n if (full) {\n dispatch(\n entityActions.removeReference({\n id: virtualId,\n type: 'AnnotationPage',\n key: 'items',\n reference: {\n id,\n type: 'Annotation',\n },\n })\n );\n }\n }\n },\n [virtualId]\n );\n\n return [\n fullPage,\n {\n addAnnotation,\n removeAnnotation,\n },\n ] as const;\n}\n","import { Annotation } from '@iiif/presentation-3';\nimport { AnnotationNormalized, AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport React, { createContext, useContext, useMemo } from 'react';\nimport { useVirtualAnnotationPage, VaultActivatedAnnotation } from './useVirtualAnnotationPage';\n\nconst VirtualAnnotationPageContext = createContext<{\n fullPage: AnnotationPageNormalized | null;\n addAnnotation: (\n id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized,\n atIndex?: number | undefined\n ) => void;\n removeAnnotation: (id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized) => void;\n} | null>(null);\n\nexport function useVirtualAnnotationPageContext() {\n const ctx = useContext(VirtualAnnotationPageContext);\n\n return [\n ctx!.fullPage,\n {\n addAnnotation: ctx!.addAnnotation,\n removeAnnotation: ctx!.removeAnnotation,\n },\n ] as const;\n}\n\nexport function VirtualAnnotationProvider({ children }: { children: any }) {\n const [fullPage, { addAnnotation, removeAnnotation }] = useVirtualAnnotationPage();\n\n return (\n <VirtualAnnotationPageContext.Provider\n value={useMemo(() => ({ fullPage, addAnnotation, removeAnnotation }), [fullPage])}\n >\n {children}\n </VirtualAnnotationPageContext.Provider>\n );\n}\n","import React from 'react';\nimport { FallbackProps } from 'react-error-boundary';\n\nexport function DefaultCanvasFallback({\n width,\n style,\n height,\n error,\n resetErrorBoundary,\n}: { width?: number; height?: number; style?: any } & FallbackProps) {\n return (\n <div style={{ width, height, minHeight: 500, ...(style || {}), background: '#f9f9f9' }}>\n <h3>Error occurred</h3>\n <p>{error.message}</p>\n <button onClick={resetErrorBoundary}>Reset</button>\n </div>\n );\n}\n","import { createContext, useContext } from 'react';\nimport { Preset } from '@atlas-viewer/atlas';\n\nexport const ViewerPresetContext = createContext<Preset | null | undefined>(null);\n\nexport function useViewerPreset() {\n return useContext(ViewerPresetContext);\n}\n","import { createContext, useContext, useEffect } from 'react';\n\nexport const SetOverlaysReactContext = createContext<(key: string, element: any | null, props?: any) => void>(\n () => void 0\n);\nexport const SetPortalReactContext = createContext<(key: string, element: any | null, props?: any) => void>(\n () => void 0\n);\n\nexport function useOverlay(\n type: 'portal' | 'overlay' | 'none',\n key: string,\n element: any,\n props: any,\n deps: any[] = []\n) {\n const setOverlay = useContext(type === 'portal' ? SetPortalReactContext : SetOverlaysReactContext);\n\n useEffect(() => {\n if (type !== 'none') {\n setOverlay(key, element, props);\n }\n return () => {\n setOverlay(key, null);\n };\n }, [key, type, setOverlay, ...deps]);\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useCanvas(options?: { id: string }): CanvasNormalized | undefined;\nexport function useCanvas<T>(\n options?: { id: string; selector: (canvas: CanvasNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useCanvas<T = CanvasNormalized>(\n options: {\n id?: string;\n selector?: (canvas: CanvasNormalized) => T;\n } = {},\n deps: any[] = []\n): CanvasNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const canvasId = id ? id : ctx.canvas;\n\n const canvas = useVaultSelector((s) => (canvasId ? s.iiif.entities.Canvas[canvasId] : undefined), [canvasId]);\n\n return useMemo(() => {\n if (!canvas) {\n return undefined;\n }\n if (selector) {\n return selector(canvas);\n }\n return canvas;\n }, [canvas, selector, ...deps]);\n}\n","import { createContext, useContext, useEffect } from 'react';\nimport { useCanvas } from '../../hooks/useCanvas';\n\nexport const WorldSizeContext = createContext<(canvasId: string, size: number) => void>(() => void 0);\n\nexport function useWorldSize(size: number) {\n const canvas = useCanvas();\n const fn = useContext(WorldSizeContext);\n\n useEffect(() => {\n if (canvas && canvas.id) {\n fn(canvas.id, size);\n\n return () => fn(canvas.id, -1);\n }\n\n return () => void 0;\n }, [canvas, size]);\n}\n","import React, { ReactNode, useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { AtlasAuto, Preset, AtlasProps, ModeContext } from '@atlas-viewer/atlas';\nimport { ErrorBoundary } from 'react-error-boundary';\nimport { ContextBridge, useContextBridge } from '../context/ContextBridge';\nimport { VirtualAnnotationProvider } from '../hooks/useVirtualAnnotationPageContext';\nimport { DefaultCanvasFallback } from './render/DefaultCanvasFallback';\nimport { ViewerPresetContext } from '../context/ViewerPresetContext';\nimport { SetOverlaysReactContext, SetPortalReactContext } from './context/overlays';\nimport { WorldSizeContext } from './context/world-size';\nimport { useCanvas } from '../hooks/useCanvas';\n\nexport function Viewer({\n children,\n errorFallback,\n outerContainerProps = {},\n worldScale: _worldScale,\n ...props\n}: AtlasProps & {\n height?: number | string;\n width?: number | string;\n resizeHash?: number;\n containerProps?: any;\n outerContainerProps?: any;\n aspectRatio?: number;\n errorFallback?: any;\n worldScale?: number;\n} & { children: ReactNode }) {\n const [viewerPreset, setViewerPreset] = useState<Preset | null>();\n const bridge = useContextBridge();\n const ErrorFallback: any = errorFallback || DefaultCanvasFallback;\n const [overlays, setOverlays] = useState<Record<string, any>>({});\n const overlayComponents = Object.entries(overlays);\n const [portals, setPortals] = useState<Record<string, any>>({});\n const portalComponents = Object.entries(portals);\n const [worldSizes, setWorldSizes] = useState<Record<string, number>>({});\n const worldScale = useMemo(() => {\n return _worldScale || Math.max(...Object.values(worldSizes));\n }, [worldSizes]);\n const runtimeOptions = useMemo(() => {\n return { maxOverZoom: worldScale || 1, ...(props.runtimeOptions || {}) };\n }, [worldScale, props.runtimeOptions]);\n\n const updateWorldSize = useCallback((canvasId: string, size: number) => {\n setWorldSizes((sizes) => {\n if (size === -1) {\n const { [canvasId]: _, ...rest } = sizes;\n return rest;\n }\n return { ...sizes, [canvasId]: size };\n });\n }, []);\n\n const updateOverlay = useCallback((key: string, element: ReactNode, props: any) => {\n setOverlays(({ [key]: _, ...prev }) => {\n if (!element) {\n return prev;\n }\n\n return {\n ...prev,\n [key]: { element, props },\n };\n });\n }, []);\n\n const updatePortal = useCallback((key: string, element: ReactNode, props: any) => {\n setPortals(({ [key]: _, ...prev }) => {\n if (!element) {\n return prev;\n }\n\n return {\n ...prev,\n [key]: { element, props },\n };\n });\n }, []);\n\n return (\n <ErrorBoundary resetKeys={[]} fallbackRender={(fallbackProps) => <ErrorFallback {...props} {...fallbackProps} />}>\n <AtlasAuto\n {...props}\n containerProps={{ style: { position: 'relative' }, ...(props.containerProps || {}) }}\n htmlChildren={\n <>\n {overlayComponents.map(([key, { element: Element, props }]) => (\n <React.Fragment key={key}>\n <Element {...(props || {})} />\n </React.Fragment>\n ))}\n </>\n }\n onCreated={(preset: any) => {\n setViewerPreset(preset);\n if (props.onCreated) {\n props.onCreated(preset);\n }\n }}\n runtimeOptions={runtimeOptions}\n >\n <ViewerPresetContext.Provider value={viewerPreset}>\n <WorldSizeContext.Provider value={updateWorldSize}>\n <SetOverlaysReactContext.Provider value={updateOverlay}>\n <SetPortalReactContext.Provider value={updatePortal}>\n <ContextBridge bridge={bridge}>\n <ModeContext.Provider value={props.mode || 'explore'}>\n <VirtualAnnotationProvider>{children}</VirtualAnnotationProvider>\n </ModeContext.Provider>\n </ContextBridge>\n </SetPortalReactContext.Provider>\n </SetOverlaysReactContext.Provider>\n </WorldSizeContext.Provider>\n </ViewerPresetContext.Provider>\n </AtlasAuto>\n <div>\n {portalComponents.map(([key, { element: Element, props }]) => (\n <React.Fragment key={key}>\n <Element {...(props || {})} />\n </React.Fragment>\n ))}\n </div>\n </ErrorBoundary>\n );\n}\n","const a = {}, i = {\n get(n) {\n return n;\n },\n setMetaValue([n, e, r], t) {\n const o = i.getResourceMeta(n, e), c = o ? o[r] : void 0, s = typeof t == \"function\" ? t(c) : t;\n a[n] = {\n ...a[n] || {},\n [e]: {\n ...(a[n] || {})[e] || {},\n [r]: s\n }\n };\n },\n getResourceMeta: (n, e) => {\n const r = a[n];\n if (r)\n return e ? r[e] : r;\n }\n};\nfunction M(n = i) {\n return {\n addEventListener(e, r, t, o) {\n if (e)\n return n.setMetaValue(\n [e.id, \"eventManager\", r],\n (c) => {\n const s = c || [];\n for (const f of s)\n if (f.callback === t)\n return s;\n return [...s, { callback: t, scope: o }];\n }\n ), t;\n },\n removeEventListener(e, r, t) {\n e && n.setMetaValue(\n [e.id, \"eventManager\", r],\n (o) => (o || []).filter((c) => c.callback !== t)\n );\n },\n getListenersAsProps(e, r) {\n const t = typeof e == \"string\" ? { id: e } : e;\n if (!t || !t.id)\n return {};\n const o = n.getResourceMeta(t.id, \"eventManager\"), c = {};\n if (o && t)\n for (const s of Object.keys(o))\n c[s] = (f) => {\n const l = n.get(t);\n for (const { callback: g, scope: u } of o[s] || [])\n (!u || r && u.indexOf(r) !== -1) && g(f, l);\n };\n return c;\n }\n };\n}\nexport {\n M as createEventsHelper\n};\n//# sourceMappingURL=events.mjs.map\n","import { useVault } from './useVault';\nimport { useVaultSelector } from './useVaultSelector';\nimport { useMemo } from 'react';\nimport { NormalizedEntity } from '@iiif/helpers/vault';\nimport { Reference } from '@iiif/presentation-3';\nimport { createEventsHelper } from '@iiif/helpers/events';\n\nexport function useResourceEvents<T extends NormalizedEntity>(resource?: Reference, scope?: string[]) {\n const vault = useVault();\n const helper = useMemo(() => createEventsHelper(vault), [vault]);\n\n const hooks = useVaultSelector(() => {\n if (resource && resource.id) {\n return vault.getResourceMeta(resource.id, 'eventManager');\n }\n return null;\n }, [resource]);\n\n return useMemo(() => {\n return resource ? helper.getListenersAsProps(resource, scope) : {};\n }, [hooks, resource, vault, scope]);\n}\n","import { useVault } from './useVault';\nimport { useMemo } from 'react';\nimport { Reference } from '@iiif/presentation-3';\nimport { createStylesHelper } from '@iiif/helpers/styles';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useStyles<Style extends Record<string, Record<string, any>>>(\n resource: undefined | Reference<any>\n): Style;\nexport function useStyles<Style extends Record<string, any>>(\n resource: undefined | Reference<any>,\n scope: string\n): Style;\nexport function useStyles<Style>(resource?: Reference, scope?: string): Style {\n const vault = useVault();\n const helper = useMemo(() => createStylesHelper(vault), [vault]);\n\n return useVaultSelector(() => {\n if (!resource) {\n return null;\n }\n\n const styles = helper.getAppliedStyles(resource.id);\n return styles ? (scope ? styles[scope] : styles) : undefined;\n }, [resource, scope]) as Style;\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { AnnotationNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\nimport { expandTarget } from '@iiif/helpers/annotation-targets';\nimport { useVault } from './useVault';\n\nexport function useAnnotation(options?: { id: string }): AnnotationNormalized | undefined;\nexport function useAnnotation<T>(\n options?: { id: string; selector: (annotation: AnnotationNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useAnnotation<T = AnnotationNormalized>(\n options: {\n id?: string;\n selector?: (annotation: AnnotationNormalized) => T;\n } = {},\n deps: any[] = []\n): AnnotationNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const vault = useVault();\n const annotationId = id ? id : ctx.annotation;\n\n const annotation = useVaultSelector(\n (s) => (annotationId ? s.iiif.entities.Annotation[annotationId] : undefined),\n [annotationId]\n );\n\n const body = useVaultSelector(\n (s) =>\n annotation && annotation.body\n ? annotation.body\n .map((singleBody) => {\n if (!singleBody) {\n return null;\n }\n\n if ((singleBody as any).type === 'SpecificResource') {\n return {\n ...singleBody,\n source: vault.get(singleBody),\n };\n }\n\n return singleBody ? s.iiif.entities[singleBody.type][singleBody.id] : null;\n })\n .filter(Boolean)\n : [],\n [annotation]\n );\n\n return useMemo(() => {\n if (!annotation) {\n return undefined;\n }\n\n const newAnnotation: any = {\n ...annotation,\n body,\n target: expandTarget(annotation.target as any, { typeMap: vault.getState().iiif.mapping }),\n };\n\n if (selector) {\n return selector(newAnnotation);\n }\n return newAnnotation;\n }, [annotation, selector, body, ...deps]);\n}\n","import { BoxStyle, HTMLPortal, mergeStyles, RegionHighlight } from '@atlas-viewer/atlas';\nimport { useResourceEvents } from '../../hooks/useResourceEvents';\nimport { useStyles } from '../../hooks/useStyles';\nimport React, { FC, useMemo } from 'react';\nimport { useAnnotation } from '../../hooks/useAnnotation';\nimport { useCanvas } from '../../hooks/useCanvas';\n\nexport const RenderAnnotation: FC<{ id: string; className?: string; style?: BoxStyle; interactive?: boolean }> = ({\n id,\n style: defaultStyle,\n className,\n interactive,\n}) => {\n const annotation = useAnnotation({ id });\n const style = useStyles<BoxStyle>(annotation, 'atlas');\n const html = useStyles<{ className?: string; href?: string; title?: string; target?: string }>(annotation, 'html');\n const events = useResourceEvents(annotation as any, ['atlas']);\n const canvas = useCanvas();\n\n const allStyles = useMemo(() => {\n return mergeStyles(defaultStyle, style);\n }, [defaultStyle, style]);\n\n const isValid =\n canvas &&\n annotation &&\n annotation.target &&\n (annotation.target as any).selector &&\n (annotation.target as any).selector.type === 'BoxSelector' &&\n (annotation.target as any).source &&\n ((annotation.target as any).source.id === canvas.id || (annotation.target as any).source === canvas.id);\n\n if (!isValid) {\n return null;\n }\n\n return (\n <RegionHighlight\n id={annotation.id}\n isEditing={true}\n region={(annotation.target as any).selector.spatial}\n style={allStyles}\n className={html?.className || className}\n interactive={!!(html?.href || interactive)}\n href={html?.href || null}\n title={html?.title || null}\n hrefTarget={html?.target || null}\n onClick={() => void 0}\n {...events}\n />\n );\n};\n","import { useResourceContext } from '../context/ResourceContext';\nimport { AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useAnnotationPage(options?: { id: string }): AnnotationPageNormalized | undefined;\nexport function useAnnotationPage<T>(\n options?: { id: string; selector: (annotation: AnnotationPageNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useAnnotationPage<T = AnnotationPageNormalized>(\n options: {\n id?: string;\n selector?: (annotation: AnnotationPageNormalized) => T;\n } = {},\n deps: any[] = []\n): AnnotationPageNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const annotationPageId = id ? id : ctx.annotationPage;\n\n const annotationPage = useVaultSelector(\n (s) => (annotationPageId ? s.iiif.entities.AnnotationPage[annotationPageId] : undefined),\n [annotationPageId]\n );\n\n return useMemo(() => {\n if (!annotationPage) {\n return undefined;\n }\n\n if (selector) {\n return selector(annotationPage);\n }\n return annotationPage;\n }, [annotationPage, ...deps]);\n}\n","import { AnnotationPage } from '@iiif/presentation-3';\nimport { AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { RenderAnnotation } from './Annotation';\nimport { BoxStyle } from '@atlas-viewer/atlas';\nimport { useStyles } from '../../hooks/useStyles';\nimport { useVaultSelector } from '../../hooks/useVaultSelector';\nimport React, { FC, Fragment } from 'react';\nimport { useAnnotationPage } from '../../hooks/useAnnotationPage';\n\nexport const RenderAnnotationPage: FC<{ page: AnnotationPage | AnnotationPageNormalized; className?: string }> = ({\n className,\n page: _page,\n}) => {\n const page = useAnnotationPage({ id: _page.id }) || _page;\n const style = useStyles<BoxStyle>(page, 'atlas');\n const html = useStyles<{ className?: string }>(page, 'html');\n\n useVaultSelector((state) => (page.id ? state.iiif.entities.AnnotationPage[page.id] : null), []);\n\n return (\n <Fragment>\n {page.items?.map((annotation) => {\n return (\n <RenderAnnotation\n key={annotation.id}\n id={annotation.id}\n style={style}\n className={html?.className || className}\n />\n );\n })}\n </Fragment>\n );\n};\n","import { ImageCandidate } from '@atlas-viewer/iiif-image-api';\nimport React, { Fragment, ReactNode, useMemo } from 'react';\nimport { TileSet } from '@atlas-viewer/atlas';\nimport { ImageWithOptionalService } from '../../features/rendering-strategy/resource-types';\nimport { BoxSelector } from '@iiif/helpers';\n\nexport function RenderImage({\n id,\n image,\n thumbnail,\n isStatic,\n x = 0,\n y = 0,\n children,\n selector,\n onClick,\n enableSizes,\n}: {\n id: string;\n image: ImageWithOptionalService;\n thumbnail?: ImageCandidate;\n isStatic?: boolean;\n enableSizes?: boolean;\n selector?: BoxSelector;\n x?: number;\n y?: number;\n children?: ReactNode;\n onClick?: (e: any) => void;\n}) {\n const crop = useMemo(() => {\n // @todo crops only work if x is not zero due to bug in selector parsing\n // setting the spatial width to canvas - which isn't correct.\n if (!selector || (selector.spatial.x === 0 && selector.spatial.y === 0)) {\n return undefined;\n }\n return selector.spatial;\n }, [selector]);\n\n return (\n <world-object\n key={id + (image.service ? 'server' : 'no-service')}\n x={x + image.target.spatial.x}\n y={y + image.target.spatial.y}\n width={image.target.spatial.width}\n height={image.target.spatial.height}\n onClick={onClick}\n >\n {!image.service ? (\n <Fragment key=\"no-service\">\n <world-image\n onClick={onClick}\n uri={image.id}\n target={{ x: 0, y: 0, width: image.target.spatial.width, height: image.target.spatial.height }}\n display={\n image.width && image.height\n ? {\n width: image.width,\n height: image.height,\n }\n : undefined\n }\n crop={crop}\n />\n {children}\n </Fragment>\n ) : (\n <Fragment key=\"service\">\n <TileSet\n tiles={{\n id: image.service.id || image.service['@id'] || 'unknown',\n height: image.height as number,\n width: image.width as number,\n imageService: image.service as any,\n thumbnail: thumbnail && thumbnail.type === 'fixed' ? thumbnail : undefined,\n }}\n enableSizes={enableSizes}\n x={0}\n y={0}\n width={image.target?.spatial.width}\n height={image.target?.spatial.height}\n crop={crop}\n />\n {children}\n </Fragment>\n )}\n </world-object>\n );\n}\n","import { ContentResource, PointSelector, W3CAnnotationTarget } from '@iiif/presentation-3';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { UseRenderingStrategy } from '../../hooks/useRenderingStrategy';\nimport { BoxSelector, expandTarget, SupportedTarget, TemporalBoxSelector } from '@iiif/helpers';\n\n/**\n * Parse specific resource.\n *\n * This could be expanded to support pulling out more from the specific resource.\n *\n * @param resource\n */\nexport function parseSpecificResource(resource: ContentResource) {\n if (resource.type === 'SpecificResource') {\n return [resource.source, { selector: resource.selector }];\n }\n\n return [resource, { selector: null }];\n}\n\nexport function getParsedTargetSelector(\n canvas: CanvasNormalized,\n target: W3CAnnotationTarget | W3CAnnotationTarget[]\n): [TemporalBoxSelector | BoxSelector | PointSelector | null, SupportedTarget['source']] {\n const { selector: imageTarget, source } = expandTarget(target);\n\n if (source.id !== canvas.id) {\n // Skip invalid targets.\n return [null, source];\n }\n\n // Target is where it should be painted.\n const defaultTarget: BoxSelector = {\n type: 'BoxSelector',\n spatial: {\n x: 0,\n y: 0,\n width: Number(canvas.width),\n height: Number(canvas.height),\n },\n };\n\n return [\n imageTarget\n ? imageTarget.type === 'TemporalSelector'\n ? ({\n type: 'TemporalBoxSelector',\n temporal: imageTarget.temporal,\n spatial: defaultTarget.spatial,\n } as any)\n : imageTarget\n : null,\n source,\n ];\n}\n\nexport const emptyActions = {\n makeChoice: () => {\n // no-op\n },\n};\n\nexport const unknownResponse: UseRenderingStrategy[0] = { type: 'unknown' };\n\nexport const unsupportedStrategy = (reason: string): UseRenderingStrategy[0] => {\n return { type: 'unknown', reason, annotations: { pages: [] } };\n};\n\nexport const emptyStrategy = (width: number, height: number): UseRenderingStrategy[0] => {\n return { type: 'empty', width, height, annotations: { pages: [] }, image: null, images: [] };\n};\n","import { useVaultSelector } from './useVaultSelector';\nimport { IIIFStore } from '@iiif/helpers/vault';\n\nfunction getMeta(state: IIIFStore, resourceId: string) {\n const resourceMeta = state?.iiif?.meta[resourceId];\n if (!resourceMeta) {\n return null;\n }\n return resourceMeta.annotationPageManager as any;\n}\n\nexport function useEnabledAnnotationPageIds(resourceId?: string, availablePageIds?: string[]) {\n return useVaultSelector(\n (state) => {\n const pageIds: string[] = [];\n if (!resourceId) {\n return pageIds;\n }\n const allAnnotationListIds = Object.keys(state.iiif.entities.AnnotationPage);\n for (const annotationListId of allAnnotationListIds) {\n if (!availablePageIds || availablePageIds.indexOf(annotationListId) !== -1) {\n const annotationListMeta = getMeta(state, annotationListId);\n if (annotationListMeta && annotationListMeta.views && annotationListMeta.views[resourceId]) {\n pageIds.push(annotationListId);\n }\n }\n }\n\n return pageIds;\n },\n [resourceId, availablePageIds]\n );\n}\n","import { CanvasNormalized, ManifestNormalized } from '@iiif/presentation-3-normalized';\n\nexport function flattenAnnotationPageIds({\n canvas,\n manifest,\n all,\n canvases,\n}: {\n manifest?: ManifestNormalized;\n canvas?: CanvasNormalized;\n canvases?: CanvasNormalized[];\n all?: boolean;\n}) {\n const foundIds: string[] = [];\n\n if (manifest) {\n for (const page of manifest.annotations) {\n if (foundIds.indexOf(page.id) === -1) {\n foundIds.push(page.id);\n }\n }\n }\n\n if (all) {\n if (canvases && canvases.length) {\n for (const canvas_ of canvases) {\n for (const page of canvas_.annotations) {\n if (foundIds.indexOf(page.id) === -1) {\n foundIds.push(page.id);\n }\n }\n }\n }\n } else if (canvas) {\n for (const page of canvas.annotations) {\n if (foundIds.indexOf(page.id) === -1) {\n foundIds.push(page.id);\n }\n }\n }\n\n // Remove enabled page IDs for now.\n // for (const enabledPage of enabledPageIds) {\n // if (foundIds.indexOf(enabledPage) === -1) {\n // foundIds.push(enabledPage);\n // }\n // }\n\n return foundIds;\n}\n","import { useCallback, useMemo } from 'react';\nimport { useVault } from './useVault';\nimport { useManifest } from './useManifest';\nimport { useCanvas } from './useCanvas';\nimport { useVisibleCanvases } from '../context/VisibleCanvasContext';\nimport { useEnabledAnnotationPageIds } from './useEnabledAnnotationPageIds';\nimport { flattenAnnotationPageIds } from '../utility/flatten-annotation-page-ids';\nimport { IIIFStore } from '@iiif/helpers/vault';\n\ntype AnnotationPageResourceMap = {\n [id: string]: boolean;\n};\n\ntype AnnotationPageManager = {\n views: AnnotationPageResourceMap;\n};\n\nfunction getMeta(state: IIIFStore, resourceId: string) {\n const resourceMeta = state?.iiif?.meta[resourceId];\n if (!resourceMeta) {\n return null;\n }\n return resourceMeta.annotationPageManager as AnnotationPageManager;\n}\n\nexport function useAnnotationPageManager(resourceId?: string, options: { all?: boolean } = {}) {\n const vault = useVault();\n const manifest = useManifest();\n const canvas = useCanvas();\n const canvases = useVisibleCanvases();\n const availablePageIds = useMemo(() => {\n return flattenAnnotationPageIds({\n all: options.all,\n manifest,\n canvas,\n canvases,\n });\n }, [options.all, canvas, canvases, manifest]);\n const enabledPageIds = useEnabledAnnotationPageIds(resourceId, options.all ? undefined : availablePageIds);\n\n const setPageDisabled = useCallback(\n (deselectId: string) => {\n if (!resourceId) {\n return;\n }\n vault.setMetaValue<AnnotationPageResourceMap>(\n [deselectId, 'annotationPageManager', 'views'],\n (existingResources: AnnotationPageResourceMap | undefined) => {\n if (existingResources && !existingResources[resourceId]) {\n return existingResources;\n }\n\n return {\n ...(existingResources || {}),\n [resourceId]: false,\n };\n }\n );\n },\n [resourceId, vault]\n );\n\n const setPageEnabled = useCallback(\n (id: string, opt: { deselectOthers?: boolean } = {}) => {\n if (!resourceId) {\n return;\n }\n const state = vault.getState();\n const toDeselect = [];\n\n // Deselect these.\n if (opt?.deselectOthers) {\n const allAnnotationListIds = Object.keys(state.iiif.entities.AnnotationPage);\n for (const annotationPageId of allAnnotationListIds) {\n const annotationListMeta = getMeta(state, annotationPageId);\n if (annotationListMeta && annotationListMeta.views && annotationListMeta.views[resourceId]) {\n toDeselect.push(annotationPageId);\n }\n }\n }\n\n // Disable first.\n for (const deselectId of toDeselect) {\n setPageDisabled(deselectId);\n }\n\n // Then enable.\n vault.setMetaValue<AnnotationPageResourceMap>(\n [id, 'annotationPageManager', 'views'],\n (existingResources: AnnotationPageResourceMap | undefined) => {\n if (existingResources && existingResources[resourceId]) {\n return existingResources;\n }\n return {\n ...(existingResources || {}),\n [resourceId]: true,\n };\n }\n );\n },\n [resourceId, setPageDisabled, vault]\n );\n\n return {\n availablePageIds,\n enabledPageIds,\n setPageEnabled,\n setPageDisabled,\n };\n}\n","import { useVaultSelector } from './useVaultSelector';\n\nexport function useResources<Type>(ids: string[], type: string): Type[] {\n return useVaultSelector((state, vault) => vault.get(ids.map((id) => ({ id, type }))) as any, [ids, type]);\n}\n","import React, { useContext } from 'react';\nimport { ImageServiceLoader } from '@atlas-viewer/iiif-image-api';\n\nexport const ImageServiceLoaderContext = React.createContext<ImageServiceLoader>(new ImageServiceLoader());\n\nexport function useImageServiceLoader() {\n return useContext(ImageServiceLoaderContext);\n}\n","import { ImageService } from '@iiif/presentation-3';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useImageServiceLoader } from '../context/ImageServiceLoaderContext';\n\nexport type ImageServiceLoaderType = (\n imageService: any | undefined,\n { height, width }: { height: number; width: number }\n) => ImageService | undefined;\n\nexport function useLoadImageService() {\n const loader = useImageServiceLoader();\n const [imageServiceStatus, setImageServiceStatus] = useState<Record<string, string>>({});\n const didUnmount = useRef(false);\n useEffect(() => {\n return () => {\n didUnmount.current = true;\n };\n }, []);\n const loadImageService = useCallback<ImageServiceLoaderType>(\n (imageService, { height, width }) => {\n if (imageService) {\n const imageServiceId = imageService.id || (imageService['@id'] as string);\n // We want to kick this off.\n const syncLoaded = loader.loadServiceSync({\n id: imageServiceId,\n width: imageService.width || width,\n height: imageService.height || height,\n source: imageService,\n });\n\n if (syncLoaded) {\n imageService = syncLoaded;\n } else if (!imageServiceStatus[imageServiceId]) {\n if (!didUnmount.current) {\n setImageServiceStatus((r) => {\n return {\n ...r,\n [imageServiceId]: 'loading',\n };\n });\n }\n loader\n .loadService({\n id: imageServiceId,\n width: imageService.width || width,\n height: imageService.height || height,\n })\n .then(() => {\n if (!didUnmount.current) {\n setImageServiceStatus((r) => {\n return {\n ...r,\n [imageServiceId]: 'done',\n };\n });\n }\n });\n }\n }\n return imageService;\n },\n [loader, imageServiceStatus]\n );\n\n return [loadImageService, imageServiceStatus] as const;\n}\n","// This is valid under a canvas context.\nimport { AnnotationNormalized, AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useCanvas } from './useCanvas';\nimport { useVaultSelector } from './useVaultSelector';\nimport { useAnnotation } from './useAnnotation';\n\nexport function usePaintingAnnotations(\n options: { canvasId?: string; enableSingleAnnotation?: boolean } = {}\n): AnnotationNormalized[] {\n const annotation = useAnnotation();\n const canvas = useCanvas(options.canvasId ? { id: options.canvasId } : undefined);\n\n return useVaultSelector(\n (state, vault) => {\n if (!canvas) {\n return [];\n }\n if (annotation && options.enableSingleAnnotation) {\n return [annotation];\n }\n const annotationPages = vault.get(canvas.items);\n const flatAnnotations: AnnotationNormalized[] = [];\n for (const page of annotationPages) {\n flatAnnotations.push(...vault.get(page.items));\n }\n return flatAnnotations;\n },\n [canvas]\n );\n}\n","function x(t) {\n return t.type === \"SpecificResource\" ? [t.source, { selector: t.selector }] : [t, { selector: null }];\n}\nconst d = {}, b = {\n get(t) {\n return t;\n },\n setMetaValue([t, o, r], i) {\n const e = b.getResourceMeta(t, o), n = e ? e[r] : void 0, a = typeof i == \"function\" ? i(n) : i;\n d[t] = {\n ...d[t] || {},\n [o]: {\n ...(d[t] || {})[o] || {},\n [r]: a\n }\n };\n },\n getResourceMeta: (t, o) => {\n const r = d[t];\n if (r)\n return o ? r[o] : r;\n }\n};\nfunction M(t = b) {\n function o(e) {\n const n = e ? typeof e == \"string\" ? t.get(e) : e : null;\n if (!n)\n return [];\n const a = t.get(n.items, { parent: n }), c = [];\n for (const f of a)\n c.push(...t.get(f.items, { parent: f }));\n return c;\n }\n function r(e, n = []) {\n const a = Array.isArray(e) ? e : o(e), c = [];\n let f = null;\n const h = [];\n for (const s of a) {\n if (s.type !== \"Annotation\")\n throw new Error(\"getPaintables() accept either a canvas or list of annotations\");\n const A = Array.from(Array.isArray(s.body) ? s.body : [s.body]);\n for (const w of A) {\n const [m, { selector: P }] = x(w), u = t.get(m), p = (u.type || \"unknown\").toLowerCase();\n if (p === \"choice\") {\n const g = t.get(u.items, { parent: u.id }), y = n.length ? n.map((l) => g.find((V) => V.id === l)).filter(Boolean) : [g[0]];\n y.length === 0 && y.push(g[0]), f = {\n type: \"single-choice\",\n items: g.map((l) => ({\n id: l.id,\n label: l.label,\n selected: y.indexOf(l) !== -1\n })),\n label: m.label\n }, A.push(...y);\n continue;\n }\n c.indexOf(p) === -1 && c.push(p), h.push({\n type: p,\n annotationId: s.id,\n resource: u,\n target: s.target,\n selector: P\n });\n }\n }\n return {\n types: c,\n items: h,\n choice: f\n };\n }\n function i(e) {\n const { choice: n } = r(e);\n return n;\n }\n return {\n getAllPaintingAnnotations: o,\n getPaintables: r,\n extractChoices: i\n };\n}\nexport {\n M as createPaintingAnnotationsHelper,\n x as parseSpecificResource\n};\n//# sourceMappingURL=painting-annotations.mjs.map\n","import { useCallback, useMemo, useState } from 'react';\nimport { useVault } from './useVault';\nimport { usePaintingAnnotations } from './usePaintingAnnotations';\nimport { createPaintingAnnotationsHelper } from '@iiif/helpers/painting-annotations';\n\nexport function usePaintables(\n options?: { defaultChoices?: string[]; enableSingleAnnotation?: boolean },\n deps: any[] = []\n) {\n const vault = useVault();\n const helper = useMemo(() => {\n return createPaintingAnnotationsHelper(vault);\n }, []);\n const paintingAnnotations = usePaintingAnnotations({ enableSingleAnnotation: options?.enableSingleAnnotation });\n const [enabledChoices, setEnabledChoices] = useState<string[]>(options?.defaultChoices || []);\n\n const paintables = useMemo(\n () => helper.getPaintables(paintingAnnotations, enabledChoices),\n [vault, paintingAnnotations, enabledChoices, ...deps]\n );\n\n const makeChoice = useCallback(\n (\n id: string,\n { deselectOthers = true, deselect = false }: { deselectOthers?: boolean; deselect?: boolean } = {}\n ) => {\n if (paintables.choice) {\n // Don't support multiple choice yet.\n if (paintables.choice.type !== 'single-choice') {\n throw new Error('Complex choice not supported yet');\n }\n\n setEnabledChoices((prevChoices) => {\n if (deselect) {\n const without = prevChoices.filter((e) => e !== id);\n\n if (without.length === 0) {\n const defaultId = paintables.items[0].resource.id;\n if (defaultId) {\n return [defaultId];\n } else {\n return [];\n }\n }\n\n return without;\n }\n\n if (deselectOthers) {\n return [id];\n }\n\n const newChoices = [...prevChoices];\n\n // Add the default ID.\n if (newChoices.length === 0 && paintables.items.length) {\n const defaultId = paintables.items[0].resource.id;\n if (defaultId) {\n newChoices.push(defaultId);\n }\n }\n\n if (prevChoices.indexOf(id) !== -1) {\n return prevChoices;\n }\n\n return [...prevChoices, id];\n });\n }\n },\n [paintables.choice]\n );\n\n const actions = { makeChoice };\n\n return [paintables, actions] as const;\n}\n","import { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { unsupportedStrategy } from './rendering-utils';\nimport { AnnotationPageDescription } from './resource-types';\nimport { ExternalWebResource } from '@iiif/presentation-3';\nimport { RenderingStrategy } from './strategies';\nimport { ChoiceDescription, Paintables } from '@iiif/helpers';\n\nexport type Single3DModelStrategy = {\n type: '3d-model';\n model: ExternalWebResource;\n choice?: ChoiceDescription; // future\n annotations?: AnnotationPageDescription; // future\n};\n\nconst supportedFormats = ['model/gltf-binary'];\n\nexport function get3dStrategy(canvas: CanvasNormalized, paintables: Paintables): RenderingStrategy {\n const first = paintables.items[0];\n const resource = first.resource as ExternalWebResource;\n\n if (!resource.format) {\n return unsupportedStrategy('Unknown format');\n }\n\n if (supportedFormats.indexOf(resource.format) === -1) {\n return unsupportedStrategy(`3D format: ${resource.format} is unsupported`);\n }\n\n return {\n type: '3d-model',\n model: resource as any,\n } as Single3DModelStrategy;\n}\n","import { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { unsupportedStrategy } from './rendering-utils';\nimport { MediaStrategy } from './strategies';\nimport { Paintables } from '@iiif/helpers';\n\nexport function getAudioStrategy(canvas: CanvasNormalized, paintables: Paintables) {\n if (!canvas.duration) {\n return unsupportedStrategy('No duration on canvas');\n }\n\n if (paintables.items.length > 1) {\n return unsupportedStrategy('Only one audio source supported');\n }\n\n const audioResource = paintables.items[0]?.resource as any; // @todo stronger type for what this might be.\n\n if (!audioResource) {\n return unsupportedStrategy('Unknown audio');\n }\n\n if (!audioResource.format) {\n return unsupportedStrategy('Audio does not have format');\n }\n\n return {\n type: 'media',\n media: {\n annotationId: paintables.items[0].annotationId,\n duration: canvas.duration,\n url: audioResource.id,\n type: 'Sound',\n target: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n format: audioResource.format,\n selector: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n },\n annotations: {\n pages: [],\n },\n } as MediaStrategy;\n}\n","import { IIIFExternalWebResource } from '@iiif/presentation-3';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { ImageServiceLoaderType } from '../../hooks/useLoadImageService';\nimport { AnnotationPageDescription, ImageWithOptionalService } from './resource-types';\nimport { getImageServices } from '@atlas-viewer/iiif-image-api';\nimport { getParsedTargetSelector, unsupportedStrategy } from './rendering-utils';\nimport { expandTarget } from '@iiif/helpers/annotation-targets';\nimport { BoxSelector, ChoiceDescription, Paintables } from '@iiif/helpers';\n\nexport type SingleImageStrategy = {\n type: 'images';\n image: ImageWithOptionalService;\n images: Array<ImageWithOptionalService>;\n choice?: ChoiceDescription;\n annotations?: AnnotationPageDescription;\n};\n\nexport function getImageStrategy(\n canvas: CanvasNormalized,\n paintables: Paintables,\n loadImageService: ImageServiceLoaderType\n) {\n const imageTypes: ImageWithOptionalService[] = [];\n for (const singleImage of paintables.items) {\n // SingleImageStrategy\n const resource: IIIFExternalWebResource =\n singleImage.resource && singleImage.resource.type === 'SpecificResource'\n ? singleImage.resource.source\n : singleImage.resource;\n\n // Validation.\n if (!resource.id) {\n // @todo we could skip this?\n return unsupportedStrategy('No resource Identifier');\n }\n\n let imageService = undefined;\n if (resource.service) {\n const imageServices = getImageServices(resource as any) as any[];\n if (imageServices[0]) {\n imageService = loadImageService(imageServices[0], canvas);\n }\n }\n\n // Target is where it should be painted.\n const defaultTarget: BoxSelector = {\n type: 'BoxSelector',\n spatial: {\n x: 0,\n y: 0,\n width: Number(canvas.width),\n height: Number(canvas.height),\n },\n };\n\n const [target, source] = getParsedTargetSelector(canvas, singleImage.target);\n if (!(source.id === canvas.id || decodeURIComponent(source.id || '') === (canvas.id || ''))) {\n // Skip invalid targets.\n continue;\n }\n\n // Support for cropping before painting an annotation.\n // @todo this isn't working.\n const defaultImageSelector =\n (singleImage.resource as any).width && (singleImage.resource as any).height\n ? ({\n type: 'BoxSelector',\n spatial: {\n x: 0,\n y: 0,\n width: (singleImage.resource as any).width,\n height: (singleImage.resource as any).height,\n },\n } as BoxSelector)\n : undefined;\n\n let imageSelector = singleImage.resource.type === 'SpecificResource' ? expandTarget(singleImage.resource) : null;\n\n if (singleImage.selector) {\n const found = expandTarget({\n type: 'SpecificResource',\n source: singleImage.resource,\n selector: singleImage.selector,\n });\n\n if (found) {\n imageSelector = found;\n }\n }\n\n const selector: undefined | BoxSelector =\n imageSelector &&\n imageSelector.selector &&\n (imageSelector.selector.type === 'BoxSelector' || imageSelector.selector.type === 'TemporalBoxSelector')\n ? {\n type: 'BoxSelector',\n spatial: {\n x: imageSelector.selector.spatial.x,\n y: imageSelector.selector.spatial.y,\n width: imageSelector.selector.spatial.width,\n height: imageSelector.selector.spatial.height,\n },\n }\n : undefined;\n\n if (imageService && !imageService.id) {\n (imageService as any).id = imageService['@id'];\n }\n\n const imageType: ImageWithOptionalService = {\n id: resource.id,\n type: 'Image',\n annotationId: (singleImage as any).annotationId,\n width: Number(target || selector ? resource.width : canvas.width),\n height: Number(target || selector ? resource.height : canvas.height),\n service: imageService,\n sizes:\n imageService && imageService.sizes\n ? imageService.sizes\n : resource.width && resource.height\n ? [{ width: resource.width, height: resource.height }]\n : [],\n target: target && target.type !== 'PointSelector' ? target : defaultTarget,\n selector: selector,\n };\n\n imageTypes.push(imageType);\n }\n\n return {\n type: 'images',\n image: imageTypes[0],\n images: imageTypes,\n choice: paintables.choice,\n } as SingleImageStrategy;\n}\n","import { InternationalString } from '@iiif/presentation-3';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { AnnotationPageDescription } from './resource-types';\nimport { getParsedTargetSelector } from './rendering-utils';\nimport { RenderingStrategy } from './strategies';\nimport { ChoiceDescription, Paintables, SupportedTarget } from '@iiif/helpers';\n\nexport type TextualContentStrategy = {\n type: 'textual-content';\n items: { annotationId: string; text: InternationalString; target: SupportedTarget | null }[];\n choice?: ChoiceDescription; // future\n annotations?: AnnotationPageDescription; // future\n};\n\nfunction parseType(item: any, languageMap: InternationalString = {}, lang?: string) {\n const language = item.language || lang || 'none';\n switch (item.type) {\n case 'TextualBody': {\n if (typeof item.value !== 'undefined') {\n languageMap[language] = item.value;\n }\n break;\n }\n case 'List':\n case 'Composite':\n case 'Choice': {\n if (item.items) {\n item.items.forEach((inner: any) => parseType(inner, languageMap, language));\n }\n }\n }\n return languageMap;\n}\n\nexport function getTextualContentStrategy(canvas: CanvasNormalized, paintables: Paintables): RenderingStrategy {\n const items: TextualContentStrategy['items'] = [];\n\n paintables.items.forEach((item) => {\n if (item.resource) {\n const [target] = getParsedTargetSelector(canvas, item.target);\n items.push({ annotationId: item.annotationId, text: parseType(item.resource), target: target as any });\n }\n });\n\n return {\n type: 'textual-content',\n items,\n } as TextualContentStrategy;\n}\n","import { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { unsupportedStrategy } from './rendering-utils';\nimport { MediaStrategy } from './strategies';\nimport { Paintables } from '@iiif/helpers';\n\n// https://stackoverflow.com/a/27728417\nconst ytRegex = /^.*(?:(?:youtu\\.be\\/|v\\/|vi\\/|u\\/\\w\\/|embed\\/|shorts\\/)|(?:(?:watch)?\\?vi?=|&vi?=))([^#&?]*).*/;\n\nexport function getVideoStrategy(canvas: CanvasNormalized, paintables: Paintables) {\n const videoPaintables = paintables.items.filter((t) => t.type === 'video');\n\n let noDuration = false;\n\n if (!canvas.duration) {\n noDuration = true;\n }\n\n if (videoPaintables.length > 1) {\n return unsupportedStrategy('Only one video source supported');\n }\n\n const videoResource = videoPaintables[0]?.resource as any; // @todo stronger type for what this might be.\n const isYouTube = !!(videoResource.service || []).find((service: any) =>\n (service.profile || '').includes('youtube.com')\n );\n\n if (!isYouTube && noDuration) {\n return unsupportedStrategy('Video does not have duration');\n }\n\n if (!videoResource) {\n return unsupportedStrategy('Unknown video');\n }\n\n if (!videoResource.format || videoResource.format === 'text/html') {\n if (!isYouTube) {\n return unsupportedStrategy('Video does not have format');\n }\n }\n\n const media = {\n annotationId: (paintables.items[0] as any).annotationId,\n duration: canvas.duration,\n url: videoResource.id,\n type: 'Video',\n items: [],\n target: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n format: videoResource.format,\n selector: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n };\n\n if (isYouTube) {\n media.type = 'VideoYouTube';\n const id = videoResource.id.match(ytRegex);\n if (!id[1]) {\n return unsupportedStrategy('Video is not known youtube video');\n }\n (media as any).youTubeId = id[1];\n }\n\n // @todo support VTT\n\n return {\n type: 'media',\n media,\n annotations: {\n pages: [],\n },\n } as MediaStrategy;\n}\n","import { get3dStrategy } from './3d-strategy';\nimport { getAudioStrategy } from './audio-strategy';\nimport { getImageStrategy } from './image-strategy';\nimport { emptyStrategy, unknownResponse, unsupportedStrategy } from './rendering-utils';\nimport { getTextualContentStrategy } from './textual-content-strategy';\nimport { getVideoStrategy } from './video-strategy';\nimport type { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport type { Paintables } from '@iiif/helpers/painting-annotations';\nimport type { ImageServiceLoaderType } from '../../hooks/useLoadImageService';\n\ninterface GetRenderStrategyOptions {\n canvas: CanvasNormalized | null | undefined;\n paintables: Paintables;\n supports: string[];\n loadImageService: ImageServiceLoaderType;\n}\n\nexport function getRenderingStrategy({ canvas, paintables, supports, loadImageService }: GetRenderStrategyOptions) {\n if (!canvas) {\n console.log('No canvas');\n return unknownResponse;\n }\n\n if (paintables.types.length === 0) {\n if (supports.indexOf('empty') !== -1) {\n return emptyStrategy(canvas.width, canvas.height);\n }\n console.log('No paintables');\n return unknownResponse;\n }\n\n if (paintables.types.length !== 1) {\n if (paintables.types.length === 2 && paintables.types.indexOf('text') !== -1) {\n paintables.types = paintables.types.filter((t) => t !== 'text');\n } else {\n if (supports.indexOf('complex-timeline') === -1) {\n return unsupportedStrategy('Complex timeline not supported');\n }\n return unsupportedStrategy('ComplexTimelineStrategy not yet supported');\n }\n }\n\n const mainType = paintables.types[0];\n\n // Image\n if (mainType === 'image') {\n if (supports.indexOf('images') === -1) {\n return unsupportedStrategy('Image not supported');\n }\n\n return getImageStrategy(canvas, paintables, loadImageService);\n }\n\n // 3D\n if (mainType === 'Model' || mainType === 'model') {\n if (supports.indexOf('3d-model') === -1) {\n return unsupportedStrategy('3D not supported');\n }\n\n return get3dStrategy(canvas, paintables);\n }\n\n if (mainType === 'textualbody') {\n if (supports.indexOf('textual-content') === -1) {\n return unsupportedStrategy('Textual content not supported');\n }\n\n return getTextualContentStrategy(canvas, paintables);\n }\n\n if (mainType === 'sound' || mainType === 'audio') {\n if (supports.indexOf('media') === -1) {\n return unsupportedStrategy('Media not supported');\n }\n\n // Media Strategy with audio or audio sequence.\n return getAudioStrategy(canvas, paintables);\n }\n\n if (mainType === 'video') {\n if (supports.indexOf('media') === -1) {\n return unsupportedStrategy('Media not supported');\n }\n\n // Media Strategy with video or video sequence.\n return getVideoStrategy(canvas, paintables);\n }\n\n // Unknown fallback.\n return unknownResponse;\n}\n","import { AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useCanvas } from './useCanvas';\nimport { useMemo } from 'react';\nimport { useVault } from './useVault';\nimport { RenderingStrategy } from '../features/rendering-strategy/strategies';\nimport {\n emptyActions,\n emptyStrategy,\n unknownResponse,\n unsupportedStrategy,\n} from '../features/rendering-strategy/rendering-utils';\nimport { useAnnotationPageManager } from './useAnnotationPageManager';\nimport { useManifest } from './useManifest';\nimport { useResources } from './useResources';\nimport { useLoadImageService } from './useLoadImageService';\nimport { usePaintables } from './usePaintables';\nimport { getRenderingStrategy } from '../features/rendering-strategy/get-rendering-strategy';\n\n// @todo we may not have any actions returned from the rendering strategy.\nexport type StrategyActions = {\n makeChoice: (id: string, options?: { deselectOthers?: boolean; deselect?: boolean }) => void;\n};\n\nexport type UseRenderingStrategy = [RenderingStrategy, StrategyActions];\n\nexport type UseRenderingStrategyOptions = {\n strategies?: Array<RenderingStrategy['type']>;\n annotationPageManagerId?: string;\n enableSingleAnnotation?: boolean;\n defaultChoices?: string[];\n};\n\nexport function useRenderingStrategy(options?: UseRenderingStrategyOptions): UseRenderingStrategy {\n const manifest = useManifest();\n const canvas = useCanvas();\n const vault = useVault();\n const [loadImageService, imageServiceStatus] = useLoadImageService();\n const { enabledPageIds } = useAnnotationPageManager(options?.annotationPageManagerId || manifest?.id || canvas?.id, {\n all: false,\n });\n const enabledPages = useResources<AnnotationPageNormalized>(enabledPageIds, 'AnnotationPage');\n\n const supports: RenderingStrategy['type'][] = options?.strategies || [\n 'empty',\n 'images',\n 'media',\n 'textual-content',\n 'complex-timeline',\n ];\n\n const [paintables, actions] = usePaintables(options, [imageServiceStatus]);\n\n const strategy = useMemo(() => {\n return getRenderingStrategy({ canvas, paintables, supports, loadImageService });\n }, [canvas, paintables, vault, actions.makeChoice]);\n\n return useMemo(() => {\n if (strategy.type === 'unknown') {\n return [strategy, emptyActions];\n }\n\n return [\n {\n ...strategy,\n annotations: { pages: enabledPages },\n },\n actions,\n ];\n }, [strategy, enabledPages]);\n}\n","import { Vault } from '@iiif/helpers/vault';\nimport { useVault } from './useVault';\nimport { useEffect } from 'react';\n\nexport const useVaultEffect = (callback: (vault: Vault) => void, deps: any[] = []): void => {\n const vault = useVault();\n\n useEffect(() => {\n callback(vault);\n }, [vault, ...deps]);\n};\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport { useManifest } from './useManifest';\nimport { useCanvas } from './useCanvas';\nimport { useVaultEffect } from './useVaultEffect';\nimport { ImageCandidate, ImageCandidateRequest } from '@atlas-viewer/iiif-image-api';\nimport { useImageServiceLoader } from '../context/ImageServiceLoaderContext';\nimport { createThumbnailHelper } from '@iiif/helpers/thumbnail';\nimport { useVault } from './useVault';\n\nexport function useThumbnail(\n request: ImageCandidateRequest,\n dereference?: boolean,\n { canvasId, manifestId }: { canvasId?: string; manifestId?: string } = {}\n) {\n const vault = useVault();\n const loader = useImageServiceLoader();\n const helper = useMemo(() => createThumbnailHelper(vault, { imageServiceLoader: loader }), [vault, loader]);\n\n const [thumbnail, setThumbnail] = useState<ImageCandidate | undefined>();\n const manifest = useManifest(manifestId ? { id: manifestId } : undefined);\n const canvas = useCanvas(canvasId ? { id: canvasId } : undefined);\n const subject = canvas ? canvas : manifest;\n const didUnmount = useRef(false);\n\n useEffect(() => {\n didUnmount.current = false;\n return () => {\n didUnmount.current = true;\n };\n }, []);\n\n if (!subject) {\n throw new Error('Must be called under a manifest or canvas context.');\n }\n\n useVaultEffect(\n (v) => {\n helper.getBestThumbnailAtSize(subject, request, dereference).then((thumb) => {\n if (thumb.best && !didUnmount.current) {\n setThumbnail(thumb.best);\n }\n });\n },\n [subject]\n );\n\n return thumbnail;\n}\n","import { RefObject, useCallback, useEffect, useReducer, useRef } from 'react';\n\ntype MediaPlayerAction =\n | { type: 'PLAY_PAUSE' }\n | { type: 'TOGGLE_MUTE' }\n | { type: 'MUTE' }\n | { type: 'UNMUTE' }\n | { type: 'SET_VOLUME'; volume: number }\n | { type: 'PLAY' }\n | { type: 'PLAY_REQUESTED' }\n | { type: 'PAUSE' }\n | { type: 'FINISHED' };\n\nexport type MediaPlayerState = {\n isPlaying: boolean;\n isMuted: boolean;\n playRequested: boolean;\n volume: number;\n isFinished: boolean;\n duration: number;\n};\n\nexport type MediaPlayerActions = {\n play(): void;\n pause(): void;\n playPause(): void;\n mute(): void;\n unmute(): void;\n toggleMute(): void;\n setVolume(volume: number): void;\n setDurationPercent(percent: number): void;\n setTime(time: number): void;\n};\n\nfunction getDefaultState(duration: number): MediaPlayerState {\n return { isMuted: false, playRequested: false, isPlaying: false, isFinished: false, volume: 100, duration };\n}\n\nfunction reducer(state: MediaPlayerState, action: MediaPlayerAction) {\n switch (action.type) {\n case 'FINISHED':\n return { ...state, isFinished: true, isPlaying: false, playRequested: false };\n case 'PLAY_PAUSE':\n return { ...state, isFinished: false, isPlaying: !state.isPlaying };\n case 'PLAY_REQUESTED':\n return { ...state, isFinished: false, playRequested: true };\n case 'PAUSE':\n return { ...state, isPlaying: false };\n case 'PLAY':\n return { ...state, isFinished: false, playRequested: false, isPlaying: true };\n case 'MUTE':\n return { ...state, isMuted: true };\n case 'SET_VOLUME':\n return { ...state, volume: action.volume, isMuted: action.volume === 0 };\n case 'TOGGLE_MUTE':\n return { ...state, isMuted: !state.isMuted };\n case 'UNMUTE':\n return { ...state, isMuted: false };\n }\n return state;\n}\n\nexport function formatTime(time: number) {\n const seconds = Math.round(time);\n return `${Math.floor(seconds / 60)}:${`${seconds % 60}`.padStart(2, '0')}`;\n}\n\nexport function useSimpleMediaPlayer(props: { duration: number }): readonly [\n {\n element: RefObject<HTMLAudioElement | HTMLVideoElement>;\n currentTime: RefObject<HTMLDivElement>;\n progress: RefObject<HTMLDivElement>;\n },\n MediaPlayerState,\n MediaPlayerActions\n] {\n const [state, dispatch] = useReducer(reducer, getDefaultState(props.duration));\n\n const media = useRef<HTMLAudioElement | HTMLVideoElement>(null);\n const currentTime = useRef<HTMLDivElement>(null);\n const progress = useRef<HTMLDivElement>(null);\n const _isMuted = useRef(false);\n\n const _updateCurrentTime = useCallback(() => {\n if (currentTime.current && media.current) {\n currentTime.current.innerHTML = formatTime(media.current.currentTime);\n if (progress.current) {\n progress.current.style.width = `${(media.current.currentTime / props.duration) * 100}%`;\n }\n if (_isMuted.current !== media.current.muted) {\n _isMuted.current = media.current.muted;\n dispatch(media.current.muted ? { type: 'MUTE' } : { type: 'UNMUTE' });\n }\n }\n }, [props.duration]);\n\n const play = useCallback(() => {\n if (media.current) {\n dispatch({ type: 'PLAY_REQUESTED' });\n media.current.play().then(() => {\n dispatch({ type: 'PLAY' });\n });\n _updateCurrentTime();\n }\n }, [_updateCurrentTime]);\n\n const playPause = useCallback(() => {\n if (media.current) {\n if (media.current.duration > 0 && media.current.paused) {\n play();\n } else {\n pause();\n }\n }\n }, [_updateCurrentTime]);\n\n const pause = useCallback(() => {\n if (media.current) {\n media.current.pause();\n dispatch({ type: 'PAUSE' });\n _updateCurrentTime();\n }\n }, [_updateCurrentTime]);\n\n const toggleMute = useCallback(() => {\n if (media.current) {\n media.current.muted = !media.current.muted;\n dispatch(media.current.muted ? { type: 'MUTE' } : { type: 'UNMUTE' });\n }\n }, []);\n\n const mute = useCallback(() => {\n if (media.current) {\n media.current.muted = true;\n dispatch({ type: 'MUTE' });\n }\n }, []);\n\n const unmute = useCallback(() => {\n if (media.current) {\n media.current.muted = false;\n dispatch({ type: 'UNMUTE' });\n }\n }, []);\n\n const setVolume = useCallback((newVolume: number) => {\n if (media.current) {\n media.current.muted = false;\n media.current.volume = newVolume / 100;\n dispatch({ type: 'SET_VOLUME', volume: newVolume });\n }\n }, []);\n\n const setDurationPercent = useCallback((percent: number) => {\n if (media.current) {\n media.current.currentTime = Math.max(0, Math.min(percent * props.duration, props.duration));\n _updateCurrentTime();\n }\n }, []);\n\n const setTime = useCallback((time: number) => {\n if (media.current) {\n media.current.currentTime = Math.max(0, Math.min(time, props.duration));\n _updateCurrentTime();\n }\n }, []);\n\n useEffect(() => {\n const interval = setInterval(() => {\n _updateCurrentTime();\n }, 350);\n\n return () => clearInterval(interval);\n }, [_updateCurrentTime, props.duration]);\n\n useEffect(() => {\n const ended = () => {\n dispatch({ type: 'FINISHED' });\n };\n const _media = media.current;\n\n _media?.addEventListener('ended', ended);\n\n return () => _media?.removeEventListener('ended', ended);\n }, []);\n\n return [\n { element: media, currentTime, progress },\n state,\n {\n play,\n pause,\n playPause,\n mute,\n unmute,\n toggleMute,\n setVolume,\n setDurationPercent,\n setTime,\n },\n ];\n}\n","import { createContext, ReactNode, RefObject, useContext } from 'react';\nimport { MediaPlayerActions, MediaPlayerState } from '../hooks/useSimpleMediaPlayer';\n\nconst MediaReactContextState = createContext<MediaPlayerState | null>(null);\nconst MediaReactContextActions = createContext<MediaPlayerActions | null>(null);\nconst MediaReactContextElements = createContext<{\n element: RefObject<HTMLAudioElement | HTMLVideoElement>;\n currentTime: RefObject<HTMLDivElement>;\n progress: RefObject<HTMLDivElement>;\n} | null>(null);\n\nexport function useMediaState() {\n const ctx = useContext(MediaReactContextState);\n if (!ctx) {\n throw new Error('Ctx not found');\n }\n return ctx;\n}\n\nexport function useMediaActions() {\n const ctx = useContext(MediaReactContextActions);\n if (!ctx) {\n throw new Error('Ctx not found');\n }\n return ctx;\n}\n\nexport function useMediaElements() {\n const ctx = useContext(MediaReactContextElements);\n if (!ctx) {\n throw new Error('Ctx not found');\n }\n return ctx;\n}\n\nexport function MediaPlayerProvider({\n actions,\n state,\n children,\n currentTime,\n progress,\n element,\n}: {\n actions: MediaPlayerActions;\n state: MediaPlayerState;\n children: ReactNode;\n currentTime: RefObject<HTMLDivElement>;\n progress: RefObject<HTMLDivElement>;\n element: RefObject<HTMLAudioElement | HTMLVideoElement>;\n}) {\n return (\n <MediaReactContextElements.Provider value={{ currentTime, progress, element }}>\n <MediaReactContextActions.Provider value={actions}>\n <MediaReactContextState.Provider value={state}>{children}</MediaReactContextState.Provider>\n </MediaReactContextActions.Provider>\n </MediaReactContextElements.Provider>\n );\n}\n","import { ReactNode } from 'react';\nimport { useSimpleMediaPlayer } from '../../hooks/useSimpleMediaPlayer';\nimport { SingleAudio } from '../../features/rendering-strategy/resource-types';\nimport { MediaPlayerProvider } from '../../context/MediaContext';\nimport { useOverlay } from '../context/overlays';\n\nexport function AudioHTML({ media, children }: { media: SingleAudio; children: ReactNode }) {\n const [{ element, currentTime, progress }, state, actions] = useSimpleMediaPlayer({ duration: media.duration });\n\n return (\n <MediaPlayerProvider\n state={state}\n actions={actions}\n currentTime={currentTime}\n progress={progress}\n element={element}\n >\n <audio ref={element} src={media.url} />\n {children}\n </MediaPlayerProvider>\n );\n}\n\nexport function Audio({\n media,\n mediaControlsDeps,\n children,\n}: {\n media: SingleAudio;\n mediaControlsDeps?: any[];\n children: ReactNode;\n}) {\n useOverlay('portal', 'audio', AudioHTML, { media, children }, [media, ...(mediaControlsDeps || [])]);\n\n return null;\n}\n","import { ReactNode, RefObject } from 'react';\nimport { useSimpleMediaPlayer } from '../../hooks/useSimpleMediaPlayer';\nimport { SingleVideo } from '../../features/rendering-strategy/resource-types';\nimport { MediaPlayerProvider } from '../../context/MediaContext';\nimport { useOverlay } from '../context/overlays';\n\nexport function VideoHTML({\n element,\n media,\n playPause,\n}: {\n element: RefObject<any>;\n media: SingleVideo;\n playPause: () => void;\n}) {\n const Component = 'div' as any;\n return (\n <Component className=\"video-container\" part=\"video-container\" onClick={playPause}>\n <style>\n {`\n .video-container {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: #000;\n z-index: 13;\n display: flex;\n justify-content: center;\n pointer-events: visible;\n }\n `}\n </style>\n <video ref={element as any} src={media.url} style={{ width: '100%', objectFit: 'contain' }} />\n </Component>\n );\n}\n\nexport function Video({\n media,\n mediaControlsDeps,\n children,\n}: {\n media: SingleVideo;\n mediaControlsDeps?: any[];\n children: ReactNode;\n}) {\n const [{ element, currentTime, progress }, state, actions] = useSimpleMediaPlayer({ duration: media.duration });\n\n useOverlay('overlay', 'video-element', VideoHTML, {\n element,\n media,\n playPause: actions.playPause,\n });\n\n useOverlay(\n 'portal',\n 'custom-controls',\n MediaPlayerProvider,\n {\n state: state,\n actions: actions,\n currentTime: currentTime,\n progress: progress,\n element: element,\n children,\n },\n [currentTime, state, media, ...(mediaControlsDeps || [])]\n );\n\n return null;\n}\n","// @ts-ignore\nimport ModelViewer from 'react-model-viewer';\nimport { useOverlay } from '../context/overlays';\n\nexport function ModelHTML({ model }: { model: any }) {\n return (\n <>\n <style>\n {`\n .model-container {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: #000;\n z-index: 13;\n display: flex;\n justify-content: center;\n pointer-events: visible;\n }\n `}\n </style>\n <div className=\"model-container\">\n {/*@ts-ignore*/}\n <model-viewer\n interaction-prompt=\"none\"\n style={{ width: '100%', height: '100%' }}\n camera-controls=\"\"\n ar-status=\"not-presenting\"\n src={model.id}\n />\n </div>\n </>\n );\n}\n\nexport function Model({ model, name }: { model: any; name?: string }) {\n useOverlay('overlay', `model-${name}`, ModelHTML, { model }, [model]);\n\n return null;\n}\n","import { BoxStyle } from '@atlas-viewer/atlas';\nimport { useCanvas } from '../../hooks/useCanvas';\n\nexport function CanvasBackground({ style }: { style?: BoxStyle }) {\n const canvas = useCanvas();\n\n if (!canvas || !canvas.height || !canvas.width) {\n return null;\n }\n\n return (\n <box\n interactive={false}\n target={{ x: 0, y: 0, width: Number(canvas.width), height: Number(canvas.height) }}\n style={style}\n />\n );\n}\n","import { InternationalString } from '@iiif/presentation-3';\nimport React, { ReactNode, useMemo } from 'react';\n\nconst LanguageContext = React.createContext<string>('en');\n\nexport function LanguageProvider(props: { language: string; children: ReactNode }) {\n return <LanguageContext.Provider value={props.language}>{props.children}</LanguageContext.Provider>;\n}\n\nexport function useIIIFLanguage() {\n return React.useContext(LanguageContext);\n}\n\nfunction getLanguagePartFromCode(code: string) {\n return code.indexOf('-') !== -1 ? code.slice(0, code.indexOf('-')) : code;\n}\n\ntype LanguageStringProps = {\n [key: string]: any;\n} & { as?: string | React.FC<any>; language: string; viewingDirection?: 'rtl' | 'rtl' };\n\nexport function LanguageString({ as: Component, language, children, viewingDirection, ...props }: LanguageStringProps) {\n const i18nLanguage = useIIIFLanguage();\n\n const isSame = useMemo(() => {\n return getLanguagePartFromCode(i18nLanguage) === getLanguagePartFromCode(language);\n }, [i18nLanguage, language]);\n\n if (isSame) {\n if (Component) {\n return <Component {...props}>{children}</Component>;\n }\n\n return <span {...props}>{children}</span>;\n }\n\n if (Component) {\n return (\n <Component {...props} lang={language} dir={viewingDirection}>\n {children}\n </Component>\n );\n }\n\n return (\n <span {...props} lang={language} dir={viewingDirection}>\n {children}\n </span>\n );\n}\n\nfunction getClosestLanguage(i18nLanguage: string, languages: string[], i18nLanguages: string[]) {\n if (languages.length === 0) {\n return undefined;\n }\n\n // Only one option.\n if (languages.length === 1) {\n return languages[0];\n }\n\n // Exact match.\n if (languages.indexOf(i18nLanguage) !== -1) {\n return i18nLanguage;\n }\n\n // Root match (en-us === en)\n const root = i18nLanguage.indexOf('-') !== -1 ? i18nLanguage.slice(0, i18nLanguage.indexOf('-')) : null;\n if (root && languages.indexOf(root) !== -1) {\n return root;\n }\n\n // All of the fall backs.\n for (const lang of i18nLanguages) {\n if (languages.indexOf(lang) !== -1) {\n return lang;\n }\n }\n\n if (languages.indexOf('none') !== -1) {\n return 'none';\n }\n\n if (languages.indexOf('@none') !== -1) {\n return '@none';\n }\n\n // Finally, fall back to the first.\n return languages[0];\n}\n\nexport const useClosestLanguage = (getLanguages: () => string[], deps: any[] = []): string | undefined => {\n const i18nLanguage = useIIIFLanguage();\n\n return useMemo(() => {\n const languages = getLanguages();\n\n return getClosestLanguage(i18nLanguage, languages, []);\n }, [i18nLanguage, ...deps]);\n};\n\nexport function useLocaleString(\n inputText: InternationalString | string | null | undefined,\n defaultText?: string,\n separator = '\\n'\n) {\n const language = useClosestLanguage(() => Object.keys(inputText || {}), [inputText]);\n return [\n useMemo(() => {\n if (!inputText) {\n return defaultText || '';\n }\n if (typeof inputText === 'string') {\n return inputText;\n }\n\n const candidateText = language ? inputText[language] : undefined;\n if (candidateText) {\n if (typeof candidateText === 'string') {\n return candidateText;\n }\n return candidateText.join(separator);\n }\n\n return '';\n }, [language, defaultText, inputText]),\n language,\n ] as const;\n}\n\nexport function useCreateLocaleString() {\n const i18nLanguage = useIIIFLanguage();\n\n return function createLocaleString(\n inputText: InternationalString | string | null | undefined,\n defaultText?: string,\n separator?: string\n ) {\n const languages = Object.keys(inputText || {});\n const language = getClosestLanguage(i18nLanguage, languages, []);\n\n if (!inputText) {\n return defaultText || '';\n }\n if (typeof inputText === 'string') {\n return inputText;\n }\n\n const candidateText = language ? inputText[language] : undefined;\n if (candidateText) {\n if (typeof candidateText === 'string') {\n return candidateText;\n }\n return candidateText.join(typeof separator !== 'undefined' ? separator : '\\n');\n }\n\n return '';\n };\n}\n\ntype LocaleStringProps = {\n as?: string | React.FC<any>;\n defaultText?: string;\n to?: string;\n separator?: string;\n enableDangerouslySetInnerHTML?: boolean;\n children: InternationalString | string | null | undefined;\n style?: React.CSSProperties;\n extraProps?: any;\n} & Record<string, any>;\n\nexport function LocaleString({\n as: Component,\n defaultText,\n enableDangerouslySetInnerHTML,\n children,\n separator,\n ...props\n}: LocaleStringProps) {\n const [text, language] = useLocaleString(children, defaultText, separator);\n\n if (language) {\n return (\n <LanguageString\n {...props}\n as={Component}\n language={language}\n title={enableDangerouslySetInnerHTML ? undefined : text}\n dangerouslySetInnerHTML={\n enableDangerouslySetInnerHTML\n ? {\n __html: text,\n }\n : undefined\n }\n >\n {enableDangerouslySetInnerHTML ? undefined : text}\n </LanguageString>\n );\n }\n\n if (Component) {\n return <Component {...props}>{text}</Component>;\n }\n\n return (\n <span\n {...props}\n title={enableDangerouslySetInnerHTML ? undefined : text}\n dangerouslySetInnerHTML={\n enableDangerouslySetInnerHTML\n ? {\n __html: text,\n }\n : undefined\n }\n >\n {enableDangerouslySetInnerHTML ? undefined : text}\n </span>\n );\n}\n","import { useSimpleMediaPlayer } from '../../hooks/useSimpleMediaPlayer';\nimport { useOverlay } from '../context/overlays';\nimport { SingleYouTubeVideo } from '../../features/rendering-strategy/resource-types';\nimport { ReactNode, RefObject, useRef } from 'react';\n\nexport function VideoYouTubeHTML({\n element,\n media,\n playPause,\n}: {\n element: RefObject<any>;\n media: SingleYouTubeVideo;\n playPause: () => void;\n}) {\n const player = useRef<HTMLIFrameElement>(null);\n\n if (!media.youTubeId) {\n return null;\n }\n\n const Component = 'div' as any;\n return (\n <Component className=\"video-container\" part=\"video-container\" onClick={playPause}>\n <style>\n {`\n .video-container {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: #000;\n z-index: 13;\n display: flex;\n justify-content: center;\n pointer-events: visible;\n }\n .video-yt {\n border: none;\n width: 100%;\n object-fit: contain;\n }\n `}\n </style>\n <iframe\n className=\"video-yt\"\n ref={player}\n src={`https://www.youtube.com/embed/${media.youTubeId}?enablejsapi=1&origin=${window.location.host}`}\n referrerPolicy=\"no-referrer\"\n sandbox=\"allow-scripts allow-same-origin allow-presentation\"\n ></iframe>\n </Component>\n );\n}\n\nexport function VideoYouTube({\n media,\n mediaControlsDeps,\n children,\n}: {\n media: SingleYouTubeVideo;\n mediaControlsDeps?: any[];\n children: ReactNode;\n}) {\n const [{ element, currentTime, progress }, state, actions] = useSimpleMediaPlayer({ duration: media.duration });\n\n useOverlay('overlay', 'video-element', VideoYouTubeHTML, {\n element,\n media,\n playPause: actions.playPause,\n });\n\n return null;\n}\n","import { createStylesHelper } from '@iiif/helpers/styles';\nimport { RenderImage } from './Image';\nimport React, { Fragment, ReactNode, useEffect, useLayoutEffect, useMemo } from 'react';\nimport { BoxStyle, HTMLPortal } from '@atlas-viewer/atlas';\nimport { useVirtualAnnotationPageContext } from '../../hooks/useVirtualAnnotationPageContext';\nimport { StrategyActions, useRenderingStrategy } from '../../hooks/useRenderingStrategy';\nimport { useVault } from '../../hooks/useVault';\nimport { useResourceEvents } from '../../hooks/useResourceEvents';\nimport { useThumbnail } from '../../hooks/useThumbnail';\nimport { useCanvas } from '../../hooks/useCanvas';\nimport { RenderAnnotationPage } from './AnnotationPage';\nimport { Audio } from './Audio';\nimport { EmptyStrategy, MediaStrategy, RenderingStrategy } from '../../features/rendering-strategy/strategies';\nimport { Video } from './Video';\nimport { Model } from './Model';\nimport { CanvasContext } from '../../context/CanvasContext';\nimport { SingleImageStrategy } from '../../features/rendering-strategy/image-strategy';\nimport { CanvasBackground } from './CanvasBackground';\nimport { ImageWithOptionalService } from '../../features/rendering-strategy/resource-types';\nimport { LocaleString } from '../../utility/i18n-utils';\nimport { useOverlay } from '../context/overlays';\nimport { useViewerPreset, ViewerPresetContext } from '../../context/ViewerPresetContext';\nimport { ChoiceDescription } from '@iiif/helpers';\nimport { useWorldSize } from '../context/world-size';\nimport { VideoYouTube } from './VideoYouTube';\n\nexport type CanvasProps = {\n x?: number;\n y?: number;\n onCreated?: any;\n onChoiceChange?: (choice?: ChoiceDescription) => void;\n registerActions?: (actions: StrategyActions) => void;\n defaultChoices?: Array<{ id: string; opacity?: number }>;\n isStatic?: boolean;\n keepCanvasScale?: boolean;\n children?: ReactNode;\n renderViewerControls?: (strategy: SingleImageStrategy | EmptyStrategy) => ReactNode;\n viewControlsDeps?: any[];\n renderMediaControls?: (strategy: MediaStrategy) => ReactNode;\n mediaControlsDeps?: any[];\n strategies?: Array<RenderingStrategy['type']>;\n backgroundStyle?: BoxStyle;\n alwaysShowBackground?: boolean;\n enableSizes?: boolean;\n enableYouTube?: boolean;\n ignoreSize?: boolean;\n throwOnUnknown?: boolean;\n onClickPaintingAnnotation?: (id: string, image: ImageWithOptionalService, e: any) => void;\n};\n\nexport function RenderCanvas({\n x,\n y,\n onChoiceChange,\n registerActions,\n defaultChoices,\n isStatic,\n renderViewerControls,\n renderMediaControls,\n viewControlsDeps,\n mediaControlsDeps,\n strategies,\n throwOnUnknown,\n backgroundStyle,\n alwaysShowBackground,\n keepCanvasScale = false,\n enableSizes = false,\n enableYouTube = true,\n onClickPaintingAnnotation,\n children,\n}: CanvasProps) {\n const canvas = useCanvas();\n const elementProps = useResourceEvents(canvas, ['deep-zoom']);\n const [virtualPage] = useVirtualAnnotationPageContext();\n const preset = useViewerPreset();\n const vault = useVault();\n const helper = useMemo(() => createStylesHelper(vault), [vault]);\n const [strategy, actions] = useRenderingStrategy({\n strategies: strategies || ['images'],\n defaultChoices: defaultChoices?.map(({ id }) => id),\n });\n const choice = strategy.type === 'images' ? strategy.choice : undefined;\n const bestScale = useMemo(() => {\n if (keepCanvasScale) {\n return 1;\n }\n return Math.max(\n 1,\n ...(strategy.type === 'images'\n ? strategy.images.map((i) => {\n return (i.width || 0) / i.target?.spatial.width;\n })\n : [])\n );\n }, [keepCanvasScale, strategy]);\n\n useWorldSize(bestScale);\n\n useEffect(() => {\n if (registerActions) {\n registerActions(actions);\n }\n }, [strategy.annotations]);\n\n useEffect(() => {\n if (defaultChoices) {\n for (const choice of defaultChoices) {\n if (typeof choice.opacity !== 'undefined') {\n helper.applyStyles({ id: choice.id }, 'atlas', {\n opacity: choice.opacity,\n });\n }\n }\n }\n }, [defaultChoices]);\n\n useLayoutEffect(() => {\n if (onChoiceChange) {\n onChoiceChange(choice);\n }\n }, [choice]);\n\n useOverlay(\n preset &&\n (strategy.type === 'images' ||\n strategy.type === 'empty' ||\n (strategy.type === 'textual-content' && renderViewerControls))\n ? 'overlay'\n : 'none',\n `canvas-portal-controls-${canvas?.id}`,\n ViewerPresetContext.Provider,\n renderViewerControls\n ? {\n value: preset || null,\n children: renderViewerControls(strategy as any),\n }\n : {},\n [canvas, preset, strategy, ...(viewControlsDeps || [])]\n );\n\n const thumbnail = useThumbnail({ maxWidth: 256, maxHeight: 256 });\n\n if (!canvas) {\n return null;\n }\n\n // accompanyingCanvas\n const accompanyingCanvas = canvas.accompanyingCanvas;\n\n const thumbnailFallbackImage =\n thumbnail && thumbnail.type === 'fixed' ? (\n <world-object height={canvas.height} width={canvas.width} x={x} y={y}>\n <world-image\n uri={thumbnail.id}\n target={{ x: 0, y: 0, width: canvas.width, height: canvas.height }}\n display={\n thumbnail.width && thumbnail.height\n ? {\n width: thumbnail.width,\n height: thumbnail.height,\n }\n : undefined\n }\n crop={undefined}\n />\n </world-object>\n ) : null;\n\n if (strategy.type === 'unknown') {\n if (thumbnailFallbackImage) {\n return thumbnailFallbackImage;\n }\n\n if (throwOnUnknown) {\n throw new Error(strategy.reason || 'Unknown image strategy');\n }\n\n return null;\n }\n\n const annotations = (\n <Fragment>\n {virtualPage ? <RenderAnnotationPage page={virtualPage} /> : null}\n {strategy.annotations && strategy.annotations.pages\n ? strategy.annotations.pages.map((page) => {\n return <RenderAnnotationPage key={page.id} page={page} />;\n })\n : null}\n {children}\n </Fragment>\n );\n\n const totalKey = strategy.type === 'images' ? strategy.images.length : 0;\n\n return (\n <>\n <world-object\n key={`${canvas.id}/${strategy.type}/${totalKey}`}\n height={canvas.height}\n width={canvas.width}\n // scale={bestScale}\n x={x}\n y={y}\n {...elementProps}\n >\n {strategy.type === 'empty' || alwaysShowBackground ? <CanvasBackground style={backgroundStyle} /> : null}\n {strategy.type === 'textual-content'\n ? strategy.items.map((item, n) => {\n return (\n <>\n <HTMLPortal\n key={n}\n // @ts-ignore\n onClick={\n onClickPaintingAnnotation\n ? (e: any) => {\n e.stopPropagation();\n onClickPaintingAnnotation(item.annotationId, item as any, e);\n }\n : undefined\n }\n target={(item.target as any)?.spatial || undefined}\n >\n <div data-textual-content={true}>\n <LocaleString enableDangerouslySetInnerHTML>{item.text}</LocaleString>\n </div>\n </HTMLPortal>\n {annotations}\n </>\n );\n })\n : null}\n {strategy.type === 'images' ? (\n <>\n {strategy.images.map((image, idx) => (\n <RenderImage\n isStatic={isStatic}\n key={image.id + idx}\n image={image}\n id={image.id}\n thumbnail={idx === 0 ? thumbnail : undefined}\n selector={image.selector}\n enableSizes={enableSizes}\n onClick={\n onClickPaintingAnnotation\n ? (e) => {\n e.stopPropagation();\n onClickPaintingAnnotation(image.annotationId, image, e);\n }\n : undefined\n }\n />\n ))}\n {annotations}\n </>\n ) : null}\n {strategy.type === '3d-model' ? <Model model={strategy.model} /> : null}\n {strategy.type === 'media' ? (\n <>\n {strategy.media.type === 'Sound' ? (\n <Audio media={strategy.media} mediaControlsDeps={mediaControlsDeps}>\n {thumbnailFallbackImage}\n {renderMediaControls ? renderMediaControls(strategy) : null}\n </Audio>\n ) : strategy.media.type === 'Video' ? (\n <Video media={strategy.media} mediaControlsDeps={mediaControlsDeps}>\n {thumbnailFallbackImage}\n {renderMediaControls ? renderMediaControls(strategy) : null}\n </Video>\n ) : strategy.media.type === 'VideoYouTube' && enableYouTube ? (\n <VideoYouTube media={strategy.media} mediaControlsDeps={mediaControlsDeps}>\n {thumbnailFallbackImage}\n {renderMediaControls ? renderMediaControls(strategy) : null}\n </VideoYouTube>\n ) : null}\n </>\n ) : null}\n {/* This is required to fix a race condition. */}\n </world-object>\n {strategy.type === 'media' && strategy.media.type === 'Sound' && accompanyingCanvas ? (\n <CanvasContext canvas={accompanyingCanvas.id}>\n <RenderCanvas renderViewerControls={renderViewerControls} />\n </CanvasContext>\n ) : null}\n </>\n );\n}\n","import { FC, forwardRef, ForwardRefExoticComponent, ReactNode, RefAttributes, useImperativeHandle } from 'react';\nimport { Viewer } from './Viewer';\nimport { RenderAnnotation } from './render/Annotation';\nimport { RenderAnnotationPage } from './render/AnnotationPage';\nimport { CanvasProps, RenderCanvas } from './render/Canvas';\nimport { RenderImage } from './render/Image';\nimport { CanvasBackground } from './render/CanvasBackground';\nimport { SimpleViewerProvider, useSimpleViewer } from '../viewers/SimpleViewerContext';\nimport { VaultProvider } from '../context/VaultContext';\nimport { useManifest } from '../hooks/useManifest';\nimport { useVisibleCanvases } from '../context/VisibleCanvasContext';\nimport { CanvasContext } from '../context/CanvasContext';\nimport { useExistingVault } from '../hooks/useExistingVault';\nimport { SimpleViewerContext } from '../viewers/SimpleViewerContext.types';\nimport { Audio, AudioHTML } from './render/Audio';\nimport { Video, VideoHTML } from './render/Video';\nimport { Model, ModelHTML } from './render/Model';\nimport { ViewerMode } from '@atlas-viewer/atlas';\n\ninterface CanvasPanelProps {\n manifest: string;\n startCanvas?: string;\n rangeId?: string;\n pagingEnabled?: boolean;\n header?: ReactNode;\n children?: ReactNode;\n mode?: ViewerMode;\n reuseAtlas?: boolean;\n\n // Inner props\n height?: number;\n spacing?: number;\n components?: {\n ViewerControls?: FC;\n MediaControls?: FC;\n };\n\n // Other components\n canvasProps?: Omit<Partial<CanvasProps>, 'x'>;\n annotations?: ReactNode;\n}\n\ninterface InnerProps {\n height?: number;\n canvasProps?: CanvasPanelProps['canvasProps'];\n spacing?: number;\n components?: CanvasPanelProps['components'];\n children?: ReactNode;\n annotations?: ReactNode;\n header?: ReactNode;\n reuseAtlas?: boolean;\n mode?: ViewerMode;\n}\n\nconst Inner = forwardRef<SimpleViewerContext, InnerProps>(function Inner(props, ref) {\n const manifest = useManifest();\n const canvases = useVisibleCanvases();\n const viewer = useSimpleViewer();\n const { ViewerControls, MediaControls } = props.components || {};\n\n useImperativeHandle(ref, () => viewer, [viewer]);\n\n if (!manifest) {\n return <div />;\n }\n\n let accumulator = 0;\n\n return (\n <>\n {props.header}\n <CanvasPanel.Viewer\n key={props.reuseAtlas ? '' : viewer.currentSequenceIndex}\n height={props.height}\n mode={props.mode}\n >\n {canvases.map((canvas, idx) => {\n const margin = accumulator;\n accumulator += canvas.width + (props.spacing || 0);\n return (\n <CanvasContext canvas={canvas.id} key={canvas.id}>\n <CanvasPanel.RenderCanvas\n key={canvas.id}\n strategies={['3d-model', 'media', 'images', 'empty', 'textual-content']}\n renderViewerControls={idx === 0 && ViewerControls ? () => <ViewerControls /> : undefined}\n renderMediaControls={idx === 0 && MediaControls ? () => <MediaControls /> : undefined}\n x={margin}\n {...(props.canvasProps || {})}\n >\n {props.annotations}\n </CanvasPanel.RenderCanvas>\n </CanvasContext>\n );\n })}\n </CanvasPanel.Viewer>\n {props.children}\n </>\n );\n});\n\ntype CanvasPanelType = ForwardRefExoticComponent<CanvasPanelProps & RefAttributes<SimpleViewerContext>> & {\n RenderImage: typeof RenderImage;\n RenderCanvas: typeof RenderCanvas;\n RenderAnnotationPage: typeof RenderAnnotationPage;\n RenderAnnotation: typeof RenderAnnotation;\n Viewer: typeof Viewer;\n CanvasBackground: typeof CanvasBackground;\n Audio: typeof Audio;\n Video: typeof Video;\n Model: typeof Model;\n AudioHTML: typeof AudioHTML;\n VideoHTML: typeof VideoHTML;\n ModelHTML: typeof ModelHTML;\n};\n\nexport const CanvasPanel = forwardRef<SimpleViewerContext, CanvasPanelProps>(function CanvasPanel(\n { children, height, annotations, canvasProps, spacing, header, components, mode, reuseAtlas, ...props },\n ref\n) {\n const vault = useExistingVault();\n\n return (\n <VaultProvider vault={vault}>\n <SimpleViewerProvider {...props}>\n <Inner\n ref={ref}\n height={height}\n components={components}\n spacing={spacing}\n canvasProps={canvasProps}\n annotations={annotations}\n header={header}\n mode={mode}\n reuseAtlas={reuseAtlas}\n >\n {children}\n </Inner>\n </SimpleViewerProvider>\n </VaultProvider>\n );\n}) as CanvasPanelType;\n\nCanvasPanel.RenderImage = RenderImage;\nCanvasPanel.RenderCanvas = RenderCanvas;\nCanvasPanel.RenderAnnotationPage = RenderAnnotationPage;\nCanvasPanel.RenderAnnotation = RenderAnnotation;\nCanvasPanel.Viewer = Viewer;\nCanvasPanel.CanvasBackground = CanvasBackground;\nCanvasPanel.Audio = Audio;\nCanvasPanel.Video = Video;\nCanvasPanel.Model = Model;\nCanvasPanel.AudioHTML = AudioHTML;\nCanvasPanel.VideoHTML = VideoHTML;\nCanvasPanel.ModelHTML = ModelHTML;\n","import { useCanvas } from '@atlas-viewer/atlas';\nimport { CanvasPanel } from '../canvas-panel';\nimport { useAnnotationPageManager } from '../hooks/useAnnotationPageManager';\nimport { useVault } from '../hooks/useVault';\nimport { forwardRef, useImperativeHandle } from 'react';\n\nexport const CanvasAnnotations = forwardRef<ReturnType<typeof useAnnotationPageManager>, { canvasId?: string }>(\n function CanvasAnnotations({ canvasId }, ref) {\n const canvas = useCanvas();\n const pm = useAnnotationPageManager(canvasId || canvas?.id);\n const vault = useVault();\n\n useImperativeHandle(ref, () => pm, [canvasId, canvas]);\n\n if (!canvas || pm.enabledPageIds.length === 0) {\n return null;\n }\n\n return (\n <>\n {pm.enabledPageIds.map((id) => (\n <CanvasPanel.RenderAnnotationPage key={id} page={vault.get(id)} />\n ))}\n </>\n );\n }\n);\n","import { InternationalString } from '@iiif/presentation-3';\nimport { useMemo } from 'react';\nimport { LocaleString } from '../utility/i18n-utils';\n\ntype FacetConfig = {\n id: string;\n label: InternationalString;\n keys: string[];\n values?: FacetConfigValue[];\n};\n\ntype FacetConfigValue = {\n id: string;\n label: InternationalString;\n values: string[];\n key: string;\n};\n\nexport interface MetadataProps {\n config?: FacetConfig[];\n metadata?: Array<{ label: InternationalString; value: InternationalString } | null>;\n labelWidth?: number;\n allowHtml?: boolean;\n showEmptyMessage?: boolean;\n separator?: string;\n\n classes?: {\n container?: string;\n row?: string;\n label?: string;\n value?: string;\n empty?: string;\n };\n\n emptyMessage?: string;\n emptyValueFallback?: string;\n emptyLabelFallback?: string;\n\n // Slots.\n tableHeader?: React.ReactNode;\n tableFooter?: React.ReactNode;\n emptyFallback?: React.ReactNode;\n}\n\nexport function Metadata({\n metadata = [],\n config,\n labelWidth = 16,\n showEmptyMessage = true,\n allowHtml,\n emptyFallback,\n classes = {},\n emptyMessage = 'No metadata available',\n emptyValueFallback = 'No value',\n emptyLabelFallback = '',\n separator,\n tableFooter,\n tableHeader,\n}: MetadataProps) {\n const metadataKeyMap = useMemo(() => {\n const flatKeys = (config || []).reduce((state, i) => {\n return [...state, ...i.keys];\n }, [] as string[]);\n\n const map: { [key: string]: Array<{ label: InternationalString; value: InternationalString }> } = {};\n for (const item of metadata) {\n const labels = item && item.label ? Object.values(item.label) : [];\n for (const label of labels) {\n if (\n label &&\n label.length &&\n (flatKeys.indexOf(`metadata.${label[0]}`) !== -1 || flatKeys.length === 0) &&\n item\n ) {\n const key = `metadata.${label[0]}`;\n map[key] = map[key] ? map[key] : [];\n map[key].push(item);\n break;\n }\n }\n }\n return map;\n }, [config, metadata]);\n\n const isEmpty = Object.keys(metadataKeyMap).length === 0;\n\n if (isEmpty && showEmptyMessage) {\n return <>{emptyFallback}</> || <div className={classes.empty}>{emptyMessage}</div>;\n }\n\n if (config && config.length) {\n return (\n <table className={classes.container}>\n {tableHeader}\n <tbody>\n {config.map((configItem, idx: number) => {\n const values: any[] = [];\n\n for (const key of configItem.keys) {\n for (const item of metadataKeyMap[key] || []) {\n values.push(\n <LocaleString\n key={idx + '__' + key}\n enableDangerouslySetInnerHTML={allowHtml}\n defaultText={emptyValueFallback}\n separator={separator}\n >\n {item.value}\n </LocaleString>\n );\n }\n }\n\n if (values.length === 0) {\n return null;\n }\n\n return (\n <tr className={classes.row} key={idx}>\n <td className={classes.label} style={labelWidth ? { minWidth: labelWidth } : {}}>\n <LocaleString\n enableDangerouslySetInnerHTML={allowHtml}\n separator={separator}\n defaultText={emptyLabelFallback}\n >\n {configItem.label}\n </LocaleString>\n </td>\n <td className={classes.value}>{values}</td>\n </tr>\n );\n })}\n </tbody>\n {tableFooter}\n </table>\n );\n }\n\n return (\n <table className={classes.container}>\n {tableHeader}\n <tbody>\n {metadata && metadata.length\n ? metadata.map((metadataItem, idx: number) => {\n if (!metadataItem) {\n return null; // null items.\n }\n return (\n <tr className={classes.row} key={idx}>\n <td className={classes.label} style={labelWidth ? { minWidth: labelWidth } : {}}>\n <LocaleString\n enableDangerouslySetInnerHTML={allowHtml}\n defaultText={emptyValueFallback}\n separator={separator}\n >\n {metadataItem.label}\n </LocaleString>\n </td>\n <td className={classes.value}>\n <LocaleString\n enableDangerouslySetInnerHTML={allowHtml}\n defaultText={emptyValueFallback}\n separator={separator}\n >\n {metadataItem.value}\n </LocaleString>\n </td>\n </tr>\n );\n })\n : null}\n </tbody>\n {tableFooter}\n </table>\n );\n}\n","import { useMemo } from 'react';\nimport { useManifest } from '../hooks/useManifest';\nimport { Metadata, MetadataProps } from './Metadata';\nimport { useRange } from '../hooks/useRange';\nimport { useCanvas } from '../hooks/useCanvas';\n\ntype CombinedMetadataProps = Omit<MetadataProps, 'metadata'>;\n\nexport function CombinedMetadata(props: CombinedMetadataProps) {\n const manifest = useManifest();\n const canvas = useCanvas();\n const range = useRange();\n\n const metadata = useMemo(() => {\n const metadata = manifest?.metadata || [];\n const canvasMetadata = canvas?.metadata || [];\n const rangeMetadata = range?.metadata || [];\n\n return [...metadata, ...canvasMetadata, ...rangeMetadata];\n }, [manifest, canvas, range]);\n\n return <Metadata metadata={metadata} {...props} />;\n}\n","import {\n RegionParameter,\n RotationParameter,\n createImageServiceRequest,\n imageServiceRequestToString,\n} from '@atlas-viewer/iiif-image-api';\nimport { ImageService, ImageSize } from '@iiif/presentation-3';\nimport { useMemo } from 'react';\n\nexport function useImage(\n service: ImageService | undefined,\n data: {\n size?: Partial<ImageSize>;\n selector?: RegionParameter;\n rotation?: number | RotationParameter;\n format?: string;\n region?: RegionParameter;\n quality?: string;\n } = {},\n deps: any[] = []\n) {\n return useMemo(() => {\n if (!service) {\n return null;\n }\n\n let quality = data.quality;\n\n if (service && service.extraQualities && data.quality) {\n if (!service.extraQualities.includes(data.quality)) {\n console.log('Invalid quality', data.quality, service.extraQualities);\n quality = 'default';\n }\n }\n\n // @todo other validation.\n\n const request = createImageServiceRequest(service);\n const imageId = imageServiceRequestToString({\n identifier: request.identifier,\n server: request.server,\n scheme: request.scheme,\n type: 'image',\n size: {\n max: !data.size?.width && !data.size?.height,\n confined: false,\n upscaled: false,\n ...(data.size || {}),\n },\n format: data.format || 'jpg',\n // This isn't how it should be modelled, always full,\n // region: data.selector ? data.selector : { full: true },\n region: data.region || { full: true },\n rotation: data?.rotation\n ? Number.isInteger(data.rotation)\n ? { angle: data.rotation }\n : (data.rotation as any)\n : { angle: 0 },\n quality: quality || 'default',\n prefix: request.prefix,\n originalPath: (request as any).originalPath,\n });\n\n return imageId;\n }, [...deps]);\n}\n","import { RegionParameter, RotationParameter } from '@atlas-viewer/iiif-image-api';\nimport { ImageService, ImageSize } from '@iiif/presentation-3';\nimport { useEffect, useState } from 'react';\nimport { useImageServiceLoader } from '../context/ImageServiceLoaderContext';\nimport { useImage } from '../hooks/useImage';\n\nexport interface ImageProps {\n src: string | ImageService;\n alt?: string;\n size?: Partial<ImageSize>;\n region?: RegionParameter;\n className?: string;\n style?: React.CSSProperties;\n fetchImageService?: boolean;\n quality?: string;\n rotation?: number | RotationParameter;\n format?: string;\n\n // Later -> make it responsive.\n // responsive?: boolean;\n // sizes?: ImageSize[];\n}\n\nfunction RemoteImage(props: ImageProps) {\n const serviceId = typeof props.src === 'string' ? props.src : props.src.id;\n const imageService = useImageServiceLoader();\n const [isLoaded, setIsLoaded] = useState(false);\n\n let service: ImageService | undefined = undefined;\n\n if (serviceId) {\n const foundService = imageService.loadServiceSync({ id: serviceId } as any);\n if (foundService) {\n service = foundService as ImageService;\n }\n }\n\n if (!service && !isLoaded) {\n imageService.loadService({ id: serviceId } as any).then(() => {\n setIsLoaded(true);\n });\n }\n\n const src = useImage(\n service,\n {\n size: props.size,\n selector: props.region,\n rotation: props.rotation,\n format: props.format,\n region: props.region,\n quality: props.quality,\n },\n [isLoaded, props.src, props.size, props.region, props.rotation, props.format, props.region, props.quality]\n );\n\n useEffect(() => {\n return () => {\n setIsLoaded(false);\n };\n }, [serviceId]);\n\n if (!src) {\n return <Image {...props} fetchImageService={false} />;\n }\n\n return <img src={src} alt={props.alt} className={props.className} style={props.style} />;\n}\n\nexport function Image(props: ImageProps) {\n if (props.fetchImageService) {\n return <RemoteImage {...props} />;\n }\n\n const service = typeof props.src === 'string' ? { id: props.src, profile: 'level0' as const } : props.src;\n const src = useImage(\n service,\n {\n size: props.size,\n selector: props.region,\n rotation: props.rotation,\n format: props.format,\n region: props.region,\n quality: props.quality,\n },\n [props.src, props.size, props.region, props.rotation, props.format, props.region, props.quality]\n );\n\n if (!src) {\n return null;\n }\n\n return <img src={src} alt={props.alt} className={props.className} style={props.style} />;\n}\n","import { useManifest } from '../hooks/useManifest';\nimport { Metadata, MetadataProps } from './Metadata';\n\ntype ManifestMetadataProps = Omit<MetadataProps, 'metadata'>;\n\nexport function ManifestMetadata(props: ManifestMetadataProps) {\n const manifest = useManifest();\n\n return <Metadata metadata={manifest?.metadata || []} {...props} />;\n}\n","(()=>{var e={296:(e,t,r)=>{var o=/^\\s+|\\s+$/g,n=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt,s=\"object\"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,l=\"object\"==typeof self&&self&&self.Object===Object&&self,a=s||l||Function(\"return this\")(),f=Object.prototype.toString,p=Math.max,y=Math.min,d=function(){return a.Date.now()};function b(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function h(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&\"[object Symbol]\"==f.call(e)}(e))return NaN;if(b(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=b(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(o,\"\");var r=i.test(e);return r||c.test(e)?u(e.slice(2),r?2:8):n.test(e)?NaN:+e}e.exports=function(e,t,r){var o,n,i,c,u,s,l=0,a=!1,f=!1,v=!0;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");function m(t){var r=o,i=n;return o=n=void 0,l=t,c=e.apply(i,r)}function O(e){var r=e-s;return void 0===s||r>=t||r<0||f&&e-l>=i}function w(){var e=d();if(O(e))return g(e);u=setTimeout(w,function(e){var r=t-(e-s);return f?y(r,i-(e-l)):r}(e))}function g(e){return u=void 0,v&&o?m(e):(o=n=void 0,c)}function P(){var e=d(),r=O(e);if(o=arguments,n=this,s=e,r){if(void 0===u)return function(e){return l=e,u=setTimeout(w,t),a?m(e):c}(s);if(f)return u=setTimeout(w,t),m(s)}return void 0===u&&(u=setTimeout(w,t)),c}return t=h(t)||0,b(r)&&(a=!!r.leading,i=(f=\"maxWait\"in r)?p(h(r.maxWait)||0,t):i,v=\"trailing\"in r?!!r.trailing:v),P.cancel=function(){void 0!==u&&clearTimeout(u),l=0,o=s=n=u=void 0},P.flush=function(){return void 0===u?c:g(d())},P}},96:(e,t,r)=>{var o=\"Expected a function\",n=NaN,i=\"[object Symbol]\",c=/^\\s+|\\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,a=parseInt,f=\"object\"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,p=\"object\"==typeof self&&self&&self.Object===Object&&self,y=f||p||Function(\"return this\")(),d=Object.prototype.toString,b=Math.max,h=Math.min,v=function(){return y.Date.now()};function m(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function O(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&d.call(e)==i}(e))return n;if(m(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=m(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(c,\"\");var r=s.test(e);return r||l.test(e)?a(e.slice(2),r?2:8):u.test(e)?n:+e}e.exports=function(e,t,r){var n=!0,i=!0;if(\"function\"!=typeof e)throw new TypeError(o);return m(r)&&(n=\"leading\"in r?!!r.leading:n,i=\"trailing\"in r?!!r.trailing:i),function(e,t,r){var n,i,c,u,s,l,a=0,f=!1,p=!1,y=!0;if(\"function\"!=typeof e)throw new TypeError(o);function d(t){var r=n,o=i;return n=i=void 0,a=t,u=e.apply(o,r)}function w(e){var r=e-l;return void 0===l||r>=t||r<0||p&&e-a>=c}function g(){var e=v();if(w(e))return P(e);s=setTimeout(g,function(e){var r=t-(e-l);return p?h(r,c-(e-a)):r}(e))}function P(e){return s=void 0,y&&n?d(e):(n=i=void 0,u)}function j(){var e=v(),r=w(e);if(n=arguments,i=this,l=e,r){if(void 0===s)return function(e){return a=e,s=setTimeout(g,t),f?d(e):u}(l);if(p)return s=setTimeout(g,t),d(l)}return void 0===s&&(s=setTimeout(g,t)),u}return t=O(t)||0,m(r)&&(f=!!r.leading,c=(p=\"maxWait\"in r)?b(O(r.maxWait)||0,t):c,y=\"trailing\"in r?!!r.trailing:y),j.cancel=function(){void 0!==s&&clearTimeout(s),a=0,n=l=i=s=void 0},j.flush=function(){return void 0===s?u:P(v())},j}(e,t,{leading:n,maxWait:t,trailing:i})}},703:(e,t,r)=>{\"use strict\";var o=r(414);function n(){}function i(){}i.resetWarningCache=n,e.exports=function(){function e(e,t,r,n,i,c){if(c!==o){var u=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw u.name=\"Invariant Violation\",u}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:n};return r.PropTypes=r,r}},697:(e,t,r)=>{e.exports=r(703)()},414:e=>{\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,r),i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(e){if(\"object\"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var o={};(()=>{\"use strict\";r.r(o),r.d(o,{LazyLoadComponent:()=>A,LazyLoadImage:()=>ce,trackWindowScroll:()=>M});const e=require(\"react\");var t=r.n(e),n=r(697);const i=require(\"react-dom\");var c=r.n(i);function u(){return\"undefined\"!=typeof window&&\"IntersectionObserver\"in window&&\"isIntersecting\"in window.IntersectionObserverEntry.prototype}function s(e){return s=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s(e)}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function a(e,t,r){return(t=p(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function f(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,p(o.key),o)}}function p(e){var t=function(e,t){if(\"object\"!==s(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,\"string\");if(\"object\"!==s(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(e);return\"symbol\"===s(t)?t:String(t)}function y(e,t){return y=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},y(e,t)}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}var b=function(e){e.forEach((function(e){e.isIntersecting&&e.target.onVisible()}))},h={},v=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&y(e,t)}(v,e);var r,o,n,i,p=(n=v,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=d(n);if(i){var r=d(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&(\"object\"===s(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}(e)}(this,e)});function v(e){var t;if(function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,v),(t=p.call(this,e)).supportsObserver=!e.scrollPosition&&e.useIntersectionObserver&&u(),t.supportsObserver){var r=e.threshold;t.observer=function(e){return h[e]=h[e]||new IntersectionObserver(b,{rootMargin:e+\"px\"}),h[e]}(r)}return t}return r=v,o=[{key:\"componentDidMount\",value:function(){this.placeholder&&this.observer&&(this.placeholder.onVisible=this.props.onVisible,this.observer.observe(this.placeholder)),this.supportsObserver||this.updateVisibility()}},{key:\"componentWillUnmount\",value:function(){this.observer&&this.placeholder&&this.observer.unobserve(this.placeholder)}},{key:\"componentDidUpdate\",value:function(){this.supportsObserver||this.updateVisibility()}},{key:\"getPlaceholderBoundingBox\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props.scrollPosition,t=this.placeholder.getBoundingClientRect(),r=c().findDOMNode(this.placeholder).style,o=parseInt(r.getPropertyValue(\"margin-left\"),10)||0,n=parseInt(r.getPropertyValue(\"margin-top\"),10)||0;return{bottom:e.y+t.bottom+n,left:e.x+t.left+o,right:e.x+t.right+o,top:e.y+t.top+n}}},{key:\"isPlaceholderInViewport\",value:function(){if(\"undefined\"==typeof window||!this.placeholder)return!1;var e=this.props,t=e.scrollPosition,r=e.threshold,o=this.getPlaceholderBoundingBox(t),n=t.y+window.innerHeight,i=t.x,c=t.x+window.innerWidth,u=t.y;return Boolean(u-r<=o.bottom&&n+r>=o.top&&i-r<=o.right&&c+r>=o.left)}},{key:\"updateVisibility\",value:function(){this.isPlaceholderInViewport()&&this.props.onVisible()}},{key:\"render\",value:function(){var e=this,r=this.props,o=r.className,n=r.height,i=r.placeholder,c=r.style,u=r.width;if(i&&\"function\"!=typeof i.type)return t().cloneElement(i,{ref:function(t){return e.placeholder=t}});var s=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({display:\"inline-block\"},c);return void 0!==u&&(s.width=u),void 0!==n&&(s.height=n),t().createElement(\"span\",{className:o,ref:function(t){return e.placeholder=t},style:s},i)}}],o&&f(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),v}(t().Component);v.propTypes={onVisible:n.PropTypes.func.isRequired,className:n.PropTypes.string,height:n.PropTypes.oneOfType([n.PropTypes.number,n.PropTypes.string]),placeholder:n.PropTypes.element,threshold:n.PropTypes.number,useIntersectionObserver:n.PropTypes.bool,scrollPosition:n.PropTypes.shape({x:n.PropTypes.number.isRequired,y:n.PropTypes.number.isRequired}),width:n.PropTypes.oneOfType([n.PropTypes.number,n.PropTypes.string])},v.defaultProps={className:\"\",placeholder:null,threshold:100,useIntersectionObserver:!0};const m=v;var O=r(296),w=r.n(O),g=r(96),P=r.n(g),j=function(e){var t=getComputedStyle(e,null);return t.getPropertyValue(\"overflow\")+t.getPropertyValue(\"overflow-y\")+t.getPropertyValue(\"overflow-x\")};const T=function(e){if(!(e instanceof HTMLElement))return window;for(var t=e;t&&t instanceof HTMLElement;){if(/(scroll|auto)/.test(j(t)))return t;t=t.parentNode}return window};function S(e){return S=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},S(e)}var E=[\"delayMethod\",\"delayTime\"];function L(){return L=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},L.apply(this,arguments)}function _(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,(void 0,n=function(e,t){if(\"object\"!==S(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,\"string\");if(\"object\"!==S(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(o.key),\"symbol\"===S(n)?n:String(n)),o)}var n}function I(e,t){return I=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},I(e,t)}function x(e,t){if(t&&(\"object\"===S(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return R(e)}function R(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function k(e){return k=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},k(e)}var D=function(){return\"undefined\"==typeof window?0:window.scrollX||window.pageXOffset},C=function(){return\"undefined\"==typeof window?0:window.scrollY||window.pageYOffset};const M=function(e){var r=function(r){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&I(e,t)}(a,r);var o,n,i,s,l=(i=a,s=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=k(i);if(s){var r=k(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return x(this,e)});function a(e){var r;if(function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,a),(r=l.call(this,e)).useIntersectionObserver=e.useIntersectionObserver&&u(),r.useIntersectionObserver)return x(r);var o=r.onChangeScroll.bind(R(r));return\"debounce\"===e.delayMethod?r.delayedScroll=w()(o,e.delayTime):\"throttle\"===e.delayMethod&&(r.delayedScroll=P()(o,e.delayTime)),r.state={scrollPosition:{x:D(),y:C()}},r.baseComponentRef=t().createRef(),r}return o=a,(n=[{key:\"componentDidMount\",value:function(){this.addListeners()}},{key:\"componentWillUnmount\",value:function(){this.removeListeners()}},{key:\"componentDidUpdate\",value:function(){\"undefined\"==typeof window||this.useIntersectionObserver||T(c().findDOMNode(this.baseComponentRef.current))!==this.scrollElement&&(this.removeListeners(),this.addListeners())}},{key:\"addListeners\",value:function(){\"undefined\"==typeof window||this.useIntersectionObserver||(this.scrollElement=T(c().findDOMNode(this.baseComponentRef.current)),this.scrollElement.addEventListener(\"scroll\",this.delayedScroll,{passive:!0}),window.addEventListener(\"resize\",this.delayedScroll,{passive:!0}),this.scrollElement!==window&&window.addEventListener(\"scroll\",this.delayedScroll,{passive:!0}))}},{key:\"removeListeners\",value:function(){\"undefined\"==typeof window||this.useIntersectionObserver||(this.scrollElement.removeEventListener(\"scroll\",this.delayedScroll),window.removeEventListener(\"resize\",this.delayedScroll),this.scrollElement!==window&&window.removeEventListener(\"scroll\",this.delayedScroll))}},{key:\"onChangeScroll\",value:function(){this.useIntersectionObserver||this.setState({scrollPosition:{x:D(),y:C()}})}},{key:\"render\",value:function(){var r=this.props,o=(r.delayMethod,r.delayTime,function(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(r,E)),n=this.useIntersectionObserver?null:this.state.scrollPosition;return t().createElement(e,L({forwardRef:this.baseComponentRef,scrollPosition:n},o))}}])&&_(o.prototype,n),Object.defineProperty(o,\"prototype\",{writable:!1}),a}(t().Component);return r.propTypes={delayMethod:n.PropTypes.oneOf([\"debounce\",\"throttle\"]),delayTime:n.PropTypes.number,useIntersectionObserver:n.PropTypes.bool},r.defaultProps={delayMethod:\"throttle\",delayTime:300,useIntersectionObserver:!0},r};function N(e){return N=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},N(e)}function B(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,(void 0,n=function(e,t){if(\"object\"!==N(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,\"string\");if(\"object\"!==N(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(o.key),\"symbol\"===N(n)?n:String(n)),o)}var n}function V(e,t){return V=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},V(e,t)}function W(e){return W=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},W(e)}var z=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&V(e,t)}(u,e);var r,o,n,i,c=(n=u,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=W(n);if(i){var r=W(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&(\"object\"===N(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}(e)}(this,e)});function u(e){return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,u),c.call(this,e)}return r=u,(o=[{key:\"render\",value:function(){return t().createElement(m,this.props)}}])&&B(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),u}(t().Component);const $=M(z);function U(e){return U=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},U(e)}function q(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,(void 0,n=function(e,t){if(\"object\"!==U(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,\"string\");if(\"object\"!==U(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(o.key),\"symbol\"===U(n)?n:String(n)),o)}var n}function F(e,t){return F=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},F(e,t)}function H(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function Y(e){return Y=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Y(e)}var X=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&F(e,t)}(s,e);var r,o,n,i,c=(n=s,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=Y(n);if(i){var r=Y(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&(\"object\"===U(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return H(e)}(this,e)});function s(e){var t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,s),t=c.call(this,e);var r=e.afterLoad,o=e.beforeLoad,n=e.scrollPosition,i=e.visibleByDefault;return t.state={visible:i},i&&(o(),r()),t.onVisible=t.onVisible.bind(H(t)),t.isScrollTracked=Boolean(n&&Number.isFinite(n.x)&&n.x>=0&&Number.isFinite(n.y)&&n.y>=0),t}return r=s,(o=[{key:\"componentDidUpdate\",value:function(e,t){t.visible!==this.state.visible&&this.props.afterLoad()}},{key:\"onVisible\",value:function(){this.props.beforeLoad(),this.setState({visible:!0})}},{key:\"render\",value:function(){if(this.state.visible)return this.props.children;var e=this.props,r=e.className,o=e.delayMethod,n=e.delayTime,i=e.height,c=e.placeholder,s=e.scrollPosition,l=e.style,a=e.threshold,f=e.useIntersectionObserver,p=e.width;return this.isScrollTracked||f&&u()?t().createElement(m,{className:r,height:i,onVisible:this.onVisible,placeholder:c,scrollPosition:s,style:l,threshold:a,useIntersectionObserver:f,width:p}):t().createElement($,{className:r,delayMethod:o,delayTime:n,height:i,onVisible:this.onVisible,placeholder:c,style:l,threshold:a,width:p})}}])&&q(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),s}(t().Component);X.propTypes={afterLoad:n.PropTypes.func,beforeLoad:n.PropTypes.func,useIntersectionObserver:n.PropTypes.bool,visibleByDefault:n.PropTypes.bool},X.defaultProps={afterLoad:function(){return{}},beforeLoad:function(){return{}},useIntersectionObserver:!0,visibleByDefault:!1};const A=X;function G(e){return G=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},G(e)}var J=[\"afterLoad\",\"beforeLoad\",\"delayMethod\",\"delayTime\",\"effect\",\"placeholder\",\"placeholderSrc\",\"scrollPosition\",\"threshold\",\"useIntersectionObserver\",\"visibleByDefault\",\"wrapperClassName\",\"wrapperProps\"];function K(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function Q(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?K(Object(r),!0).forEach((function(t){Z(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):K(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Z(e,t,r){return(t=re(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ee(){return ee=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},ee.apply(this,arguments)}function te(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,re(o.key),o)}}function re(e){var t=function(e,t){if(\"object\"!==G(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,\"string\");if(\"object\"!==G(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(e);return\"symbol\"===G(t)?t:String(t)}function oe(e,t){return oe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},oe(e,t)}function ne(e){return ne=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ne(e)}var ie=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&oe(e,t)}(u,e);var r,o,n,i,c=(n=u,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=ne(n);if(i){var r=ne(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&(\"object\"===G(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}(e)}(this,e)});function u(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,u),(t=c.call(this,e)).state={loaded:!1},t}return r=u,(o=[{key:\"onImageLoad\",value:function(){var e=this;return this.state.loaded?null:function(t){e.props.onLoad(t),e.props.afterLoad(),e.setState({loaded:!0})}}},{key:\"getImg\",value:function(){var e=this.props,r=(e.afterLoad,e.beforeLoad,e.delayMethod,e.delayTime,e.effect,e.placeholder,e.placeholderSrc,e.scrollPosition,e.threshold,e.useIntersectionObserver,e.visibleByDefault,e.wrapperClassName,e.wrapperProps,function(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(e,J));return t().createElement(\"img\",ee({},r,{onLoad:this.onImageLoad()}))}},{key:\"getLazyLoadImage\",value:function(){var e=this.props,r=e.beforeLoad,o=e.className,n=e.delayMethod,i=e.delayTime,c=e.height,u=e.placeholder,s=e.scrollPosition,l=e.style,a=e.threshold,f=e.useIntersectionObserver,p=e.visibleByDefault,y=e.width;return t().createElement(A,{beforeLoad:r,className:o,delayMethod:n,delayTime:i,height:c,placeholder:u,scrollPosition:s,style:l,threshold:a,useIntersectionObserver:f,visibleByDefault:p,width:y},this.getImg())}},{key:\"getWrappedLazyLoadImage\",value:function(e){var r=this.props,o=r.effect,n=r.height,i=r.placeholderSrc,c=r.width,u=r.wrapperClassName,s=r.wrapperProps,l=this.state.loaded,a=l?\" lazy-load-image-loaded\":\"\",f=l||!i?{}:{backgroundImage:\"url(\".concat(i,\")\"),backgroundSize:\"100% 100%\"};return t().createElement(\"span\",ee({className:u+\" lazy-load-image-background \"+o+a,style:Q(Q({},f),{},{color:\"transparent\",display:\"inline-block\",height:n,width:c})},s),e)}},{key:\"render\",value:function(){var e=this.props,t=e.effect,r=e.placeholderSrc,o=e.visibleByDefault,n=e.wrapperClassName,i=e.wrapperProps,c=this.getLazyLoadImage();return(t||r)&&!o||n||i?this.getWrappedLazyLoadImage(c):c}}])&&te(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),u}(t().Component);ie.propTypes={onLoad:n.PropTypes.func,afterLoad:n.PropTypes.func,beforeLoad:n.PropTypes.func,delayMethod:n.PropTypes.string,delayTime:n.PropTypes.number,effect:n.PropTypes.string,placeholderSrc:n.PropTypes.string,threshold:n.PropTypes.number,useIntersectionObserver:n.PropTypes.bool,visibleByDefault:n.PropTypes.bool,wrapperClassName:n.PropTypes.string,wrapperProps:n.PropTypes.object},ie.defaultProps={onLoad:function(){},afterLoad:function(){return{}},beforeLoad:function(){return{}},delayMethod:\"throttle\",delayTime:300,effect:\"\",placeholderSrc:null,threshold:100,useIntersectionObserver:!0,visibleByDefault:!1,wrapperClassName:\"\"};const ce=ie})(),module.exports=o})();","function k(e, r, i = [], x = !1, d = []) {\n if (d.length && (r = r.filter((t) => d.indexOf(t) === -1)), !r || r.length === 0)\n return;\n if (r.length === 1)\n return r[0];\n if (!e)\n return r.indexOf(\"none\") !== -1 ? \"none\" : r[0];\n if (r.indexOf(e) !== -1)\n return e;\n const c = e.indexOf(\"-\") !== -1 ? e.slice(0, e.indexOf(\"-\")) : null;\n if (c && r.indexOf(c) !== -1)\n return c;\n for (const t of i)\n if (r.indexOf(t) !== -1)\n return t;\n if (!x && e) {\n const s = r.map((n) => n.indexOf(\"-\") !== -1 ? n.slice(0, n.indexOf(\"-\")) : null).indexOf(e);\n if (s !== -1)\n return r[s];\n for (const n of i) {\n const O = n.indexOf(\"-\") !== -1 ? n.slice(0, n.indexOf(\"-\")) : null, f = O ? r.indexOf(O) : -1;\n if (f !== -1)\n return r[f];\n }\n }\n return r.indexOf(\"none\") !== -1 ? \"none\" : r.indexOf(\"@none\") !== -1 ? \"@none\" : r[0];\n}\nfunction l(e, r, i = {}) {\n const {\n strictFallback: x = !1,\n defaultText: d = \"\",\n separator: c = `\n`,\n fallbackLanguages: t = [],\n closest: s,\n skipLanguages: n\n } = i, O = Object.keys(e || {}), f = s ? r : k(r, O, t, x, n);\n if (!e)\n return d;\n if (typeof e == \"string\")\n return e;\n const o = f ? e[f] : void 0;\n if (o && f) {\n if (typeof o == \"string\")\n return o;\n if (o.length === 1 && o[0] === \"\") {\n const v = i.skipLanguages || [];\n return l(e, r, {\n ...i,\n skipLanguages: [...v, f]\n });\n }\n return o.join(c);\n }\n return \"\";\n}\nfunction u(e, r = {}) {\n return l(\n e,\n r.language || (typeof navigator < \"u\" ? navigator.language : \"en\"),\n r\n );\n}\nexport {\n l as buildLocaleString,\n k as getClosestLanguage,\n u as getValue\n};\n//# sourceMappingURL=i18n.mjs.map\n","import { useThumbnail } from '../hooks/useThumbnail';\nimport { useCanvas } from '../hooks/useCanvas';\nimport { LazyLoadComponent as _LazyLoadComponent, LazyLoadImageProps } from 'react-lazy-load-image-component';\nimport { LocaleString } from '../utility/i18n-utils';\nimport { SizeParameter } from '@atlas-viewer/iiif-image-api';\nimport { CanvasContext } from '../context/CanvasContext';\nimport { getValue } from '@iiif/helpers/i18n';\nimport { FC, ReactNode } from 'react';\n\nconst LazyLoadComponent = _LazyLoadComponent as FC<LazyLoadImageProps & { children: ReactNode }>;\n\ninterface SingleCanvasThumbnailProps {\n canvasId?: string;\n size?: Partial<SizeParameter>;\n visible?: boolean;\n alt?: string;\n dereference?: boolean;\n\n // Style\n figure?: boolean;\n showLabel?: boolean;\n classes?: {\n figure?: string;\n img?: string;\n label?: string;\n imageWrapper?: string;\n };\n\n // Slots.\n placeholder?: React.ReactNode;\n fallback?: React.ReactNode;\n}\n\nexport function SingleCanvasThumbnail(props: SingleCanvasThumbnailProps) {\n const { size, visible, classes, canvasId, figure } = props;\n const width = size?.width || 128;\n const height = size?.height || size?.width || 128;\n\n const inner = <Inner {...props} />;\n\n const lazy = (\n <LazyLoadComponent threshold={300} style={{ height, width }} visibleByDefault={visible}>\n {canvasId ? <CanvasContext canvas={canvasId}>{inner}</CanvasContext> : inner}\n </LazyLoadComponent>\n );\n\n if (figure) {\n return <figure className={classes?.figure}>{lazy}</figure>;\n }\n\n return lazy;\n}\n\nfunction Inner({ fallback, size, classes, showLabel, alt, dereference = false }: SingleCanvasThumbnailProps) {\n const canvas = useCanvas();\n const width = size?.width || 128;\n const height = size?.height || size?.width || 128;\n const imageAlt = alt || getValue(canvas?.label) || '';\n\n const thumbnail = useThumbnail({ width, height }, dereference);\n\n if (!thumbnail || thumbnail.type !== 'fixed') {\n return <>{fallback}</>;\n }\n\n return (\n <>\n <div className={classes?.imageWrapper}>\n <img className={classes?.img} src={thumbnail.id} alt={imageAlt} />\n </div>\n {showLabel ? (\n <LocaleString as=\"figcaption\" className={classes?.label}>\n {canvas?.label}\n </LocaleString>\n ) : null}\n </>\n );\n}\n","import { useLayoutEffect, useRef } from 'react';\nimport { useSimpleViewer } from '../viewers/SimpleViewerContext';\nimport { useCanvasSequence } from '../viewers/SimpleViewerContext.hooks';\nimport { SingleCanvasThumbnail } from './SingleCanvasThumbnail';\n\ninterface SequenceThumbnailsProps {\n flat?: boolean;\n size?: { width: number; height?: number };\n classes?: {\n container?: string;\n row?: string;\n item?: string;\n\n // SingleCanvasThumbnail\n figure?: string;\n imageWrapper?: string;\n img?: string;\n label?: string;\n\n selected?: {\n row?: string;\n item?: string;\n figure?: string;\n img?: string;\n label?: string;\n imageWrapper?: string;\n };\n };\n\n figure?: boolean;\n showLabel?: boolean;\n // Slots\n fallback?: React.ReactNode;\n}\n\nexport function SequenceThumbnails({ flat, size, classes = {}, showLabel, figure, fallback }: SequenceThumbnailsProps) {\n const container = useRef<HTMLDivElement>(null);\n const { items, sequence, currentSequenceIndex, setSequenceIndex } = useSimpleViewer();\n const selected = {\n row: classes.selected?.row || classes.row,\n item: classes.selected?.item || classes.item,\n figure: classes.selected?.figure || classes.figure,\n img: classes.selected?.img || classes.img,\n label: classes.selected?.label || classes.label,\n imageWrapper: classes.selected?.imageWrapper || classes.imageWrapper,\n };\n\n useLayoutEffect(() => {\n if (!container.current) {\n return;\n }\n\n const selected = container.current.querySelector(`[data-selected=true]`);\n if (selected) {\n selected.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n }\n }, [currentSequenceIndex]);\n\n const components = [];\n for (const row of sequence) {\n const rowComponents = [];\n const isSelected = sequence[currentSequenceIndex] === row;\n for (const canvasIdx of row) {\n const canvas = items[canvasIdx];\n rowComponents.push(\n <div key={canvasIdx} className={isSelected ? selected.item : classes.item}>\n <SingleCanvasThumbnail\n classes={isSelected ? selected : classes}\n canvasId={canvas.id}\n size={size}\n showLabel={showLabel}\n figure={figure}\n placeholder={<div style={{ height: 128, width: 128 }} />}\n fallback={fallback}\n />\n </div>\n );\n }\n if (flat) {\n components.push(rowComponents);\n continue;\n }\n components.push(\n <div\n onClick={(e) => {\n setSequenceIndex(sequence.indexOf(row));\n }}\n data-selected={isSelected}\n className={isSelected ? selected.row : classes.row}\n >\n {rowComponents}\n </div>\n );\n }\n\n return (\n <div ref={container} className={classes.container}>\n {components}\n </div>\n );\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function AnnotationContext({ annotation, children }: { annotation: string; children: ReactNode }) {\n return <ResourceProvider value={{ annotation }}>{children}</ResourceProvider>;\n}\n","import React, { ReactNode } from 'react';\nimport { ResourceProvider } from './ResourceContext';\n\nexport function AnnotationPageContext({ annotationPage, children }: { annotationPage: string; children: ReactNode }) {\n return <ResourceProvider value={{ annotationPage }}>{children}</ResourceProvider>;\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function CollectionContext({ collection, children }: { collection: string; children: ReactNode }) {\n return <ResourceProvider value={{ collection }}>{children}</ResourceProvider>;\n}\n","// This works under a canvas context\n// The canvas must have a duration\n// When given a timestamp (ms) from the canvas clock will return a list of annotations\n// that need to be painted.\nimport { AnnotationNormalized } from '@iiif/presentation-3-normalized';\nimport { usePaintingAnnotations } from './usePaintingAnnotations';\n\nexport function useAnnotationsAtTime(time: number, options: { canvasId?: string } = {}): AnnotationNormalized[] {\n const allAnnotations = usePaintingAnnotations(options);\n\n // @todo filter.\n\n return allAnnotations;\n}\n","// This will be valid under a canvas.\n// It will be an interface for controlling a virtual clock.\n// It will take in some configuration, like frequency\n// and return some data, like current time\n// It will also provide some methods, like high performance syncing for media\n// And it will also have some basic hooks into the HTML audio/video elements to sync those.\n// Other methods for controlling the clock would be:\n// - set current time\n// - fast forward\n// - rewind\n// - set playback speed\n//\n// Other hooks might come out for priority updates. Like: useLowPriorityCanvasClock(), which will update at a preset\n// lower tick rate.\n\nexport function useCanvasClock(canvasId?: string, autoplay = false) {\n /*\n const canvas = useCanvas(canvasId ? { id: canvasId } : undefined);\n if (!canvas || typeof canvas.duration === 'undefined') {\n throw new Error('Unsupported or undefined canvas');\n }\n\n const update = useUpdate();\n const [lastCall, setLastCall] = useState(0);\n const [currentTime, setCurrentTime] = useState(0);\n\n const [loopStop, loopStart, isActive] = useRafLoop((time) => {\n const timeInSeconds = lastCall === 0 ? 0 : (time - lastCall) / 1000;\n if (currentTime + timeInSeconds < canvas.duration) {\n setCurrentTime((t) => t + timeInSeconds);\n } else {\n setCurrentTime(canvas.duration);\n loopStop();\n }\n setLastCall(time);\n }, autoplay);\n\n const play = useCallback(() => {\n if (currentTime === canvas.duration) {\n setCurrentTime(0);\n setLastCall(0);\n }\n loopStart();\n update();\n }, [currentTime, loopStart, update]);\n\n const pause = useCallback(() => {\n loopStop();\n update();\n }, [loopStop, update]);\n\n return {\n isPlaying: isActive(),\n currentTime,\n duration: canvas.duration,\n play,\n pause,\n seek: setCurrentTime,\n };\n\n */\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { Reference } from '@iiif/presentation-3';\nimport { useVaultSelector } from './useVaultSelector';\nimport { IIIFStore } from '@iiif/helpers/vault';\n\nexport function useCanvasSubset(idsOrRefs?: Array<string | Reference>): Reference<'Canvas'>[] {\n const ctx = useResourceContext();\n const manifestId = ctx.manifest;\n const refs = idsOrRefs ? idsOrRefs.map((item) => (typeof item === 'string' ? item : item?.id)) : [];\n return useVaultSelector(\n (s: IIIFStore) => {\n const manifest = manifestId ? s.iiif.entities.Manifest[manifestId] : undefined;\n const items = manifest?.items || [];\n\n if (typeof idsOrRefs === 'undefined') {\n return items;\n }\n\n const newItems = [];\n for (const item of manifest?.items || []) {\n if (refs.indexOf(item.id) !== -1) {\n newItems.push(item);\n }\n }\n\n return newItems;\n },\n [refs.join('/')]\n );\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { CollectionNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useCollection(options: { id: string }): CollectionNormalized | undefined;\nexport function useCollection<T>(\n options: { id: string; selector: (collection: CollectionNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useCollection<T = CollectionNormalized>(\n options: {\n id?: string;\n selector?: (collection: CollectionNormalized) => T;\n },\n deps: any[] = []\n): CollectionNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const collectionId = id ? id : ctx.collection;\n\n const collection = useVaultSelector(\n (s) => (collectionId ? s.iiif.entities.Collection[collectionId] : undefined),\n [collectionId]\n );\n\n return useMemo(() => {\n if (!collection) {\n return undefined;\n }\n if (selector) {\n return selector(collection);\n }\n return collection;\n }, [collection, selector, ...deps]);\n}\n","import { Reference } from '@iiif/presentation-3';\nimport { useVault } from './useVault';\nimport { useEffect, useMemo } from 'react';\nimport { createEventsHelper } from '@iiif/helpers/events';\n\ntype SupportedEvents = 'onClick';\n\nexport function useEventListener<T>(\n resource: Reference,\n name: SupportedEvents,\n listener: (e: any, resource: T) => void,\n scope?: string[],\n deps: any[] = []\n) {\n const vault = useVault();\n const helper = useMemo(() => createEventsHelper(vault), [vault]);\n\n useEffect(() => {\n const currentResource = resource;\n if (!currentResource) {\n return () => {\n //\n };\n }\n helper.addEventListener(currentResource, name, listener, scope);\n return () => {\n helper.removeEventListener(currentResource, name, listener);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [helper, resource, name, ...deps]);\n}\n","import { CollectionNormalized } from '@iiif/presentation-3-normalized';\nimport { ResourceRequestOptions, useExternalResource } from './useExternalResource';\n\nexport function useExternalCollection(\n idOrRef: string | { id: string; type: string },\n options?: ResourceRequestOptions\n): {\n id: string;\n requestId: string;\n isLoaded: boolean;\n cached?: boolean;\n error: any;\n manifest?: CollectionNormalized;\n} {\n const { id, isLoaded, error, resource, requestId, cached } = useExternalResource<CollectionNormalized>(\n idOrRef,\n options\n );\n\n return { id, isLoaded, error, manifest: resource, requestId, cached };\n}\n","import { usePaintingAnnotations } from './usePaintingAnnotations';\nimport { getImageServices } from '@atlas-viewer/iiif-image-api';\nimport { useCanvas } from './useCanvas';\nimport { useVault } from './useVault';\nimport { IIIFExternalWebResource, ImageService } from '@iiif/presentation-3';\nimport { useImageServiceLoader } from '../context/ImageServiceLoaderContext';\nimport { useEffect, useMemo, useState } from 'react';\n\nexport interface ImageServiceRequestOptions {\n cacheKey?: string;\n}\n\n/**\n * Returns the First image service on the current canvas.\n *\n * @note It is better to use the hook useRenderingStrategy for rendering.\n */\nexport function useImageService({ cacheKey }: ImageServiceRequestOptions = {}): {\n data: ImageService | undefined;\n isFetching: boolean;\n status: 'error' | 'success' | 'loading' | 'idle';\n} {\n const canvas = useCanvas();\n const annotations = usePaintingAnnotations();\n const vault = useVault();\n const imageService = useImageServiceLoader();\n const [_data, setData] = useState<ImageService | undefined>(undefined);\n const [isFetching, setIsFetching] = useState(false);\n const [status, setStatus] = useState<'error' | 'success' | 'loading' | 'idle'>('idle');\n const [error, setError] = useState<Error | undefined>(undefined);\n const key = canvas ? canvas.id : 'undefined';\n const initialData = useMemo(() => {\n try {\n if (canvas && annotations.length) {\n const annotation = annotations[0];\n const resource = vault.get(annotation.body[0]);\n const imageServices = getImageServices(resource as any);\n const firstImageService = imageServices[0];\n\n if (!firstImageService) {\n return undefined;\n }\n\n return (\n imageService.loadServiceSync({\n id: firstImageService.id || (firstImageService['@id'] as string),\n width: firstImageService.width || canvas.width,\n height: firstImageService.height || canvas.height,\n }) || undefined\n );\n }\n } catch (e) {\n console.error(e);\n // silent error.\n }\n\n return undefined;\n\n // This is specifically not exhaustive. We only want to try to loadSync initially or when the canvas changes.\n }, [key, cacheKey, canvas]);\n\n const data = status === 'success' && _data ? _data : initialData;\n\n useEffect(() => {\n (async () => {\n try {\n if (canvas && annotations.length) {\n const annotation = annotations[0];\n const resource = vault.get(annotation.body[0]);\n const imageServices = getImageServices(resource as any) as any[];\n const firstImageService = imageServices[0] as any;\n\n if (!firstImageService) {\n return;\n }\n\n setIsFetching(true);\n setStatus('loading');\n\n try {\n const loadedService =\n (await imageService.loadService({\n id: firstImageService.id || firstImageService['@id'],\n width: firstImageService.width || canvas.width,\n height: firstImageService.height || canvas.height,\n })) || undefined;\n\n setData(loadedService as any);\n setStatus('success');\n setIsFetching(false);\n } catch (err) {\n setStatus('error');\n setError(err as Error);\n }\n }\n } catch (err) {\n setStatus('error');\n setError(err as Error);\n }\n })();\n\n // It's important that this DOESN'T refresh every time there is a new canvas change.\n // In an editing situation, the cache key should be used.\n }, [key, cacheKey]);\n\n return useMemo(() => {\n return {\n data,\n isFetching,\n status,\n error,\n } as any;\n }, [data, isFetching, status, error]);\n}\n","import { useImageService } from './useImageService';\nimport { ImageService } from '@iiif/presentation-3';\n\nexport function useImageTile() {\n const imageService = useImageService();\n\n return {\n isLoading: imageService.isFetching,\n tile: imageService.data\n ? {\n id: imageService.data.id || imageService.data['@id'],\n width: imageService.data.width,\n height: imageService.data.height,\n imageService: imageService.data as ImageService,\n thumbnail: undefined,\n }\n : null,\n };\n}\n","// This works inside of a manifest context\n// Final API to be decided, but this hook will be for driving search querying itself\n// Another hook/context will handle actually getting the search results for a particular canvas\nimport { useManifest } from './useManifest';\nimport { SearchService } from '@iiif/presentation-3';\nimport { ServiceNormalized } from '@iiif/presentation-3-normalized';\n\nexport function useSearchService(): SearchService | undefined {\n const manifest = useManifest();\n return manifest\n ? (manifest.service.find(\n (service: ServiceNormalized) =>\n service.profile === 'SearchService1' || service.profile === 'http://iiif.io/api/search/1/search'\n ) as any)\n : undefined;\n}\n","import { useVault } from './useVault';\nimport { createStylesHelper } from '@iiif/helpers/styles';\nimport { useMemo } from 'react';\n\nexport function useStyleHelper() {\n const vault = useVault();\n return useMemo(() => createStylesHelper(vault), [vault]);\n}\n"],"names":["ErrorBoundaryContext","createContext","initialState","ErrorBoundary","Component","props","error","_this$props$onReset","_this$props","_len","args","_key","info","_this$props$onError","_this$props2","prevProps","prevState","didCatch","resetKeys","hasArrayChanged","_this$props$onReset2","_this$props3","children","fallbackRender","FallbackComponent","fallback","childToRender","createElement","isValidElement","a","b","item","index","defaultResourceContext","ResourceReactContext","React","useResourceContext","useContext","ResourceProvider","value","parentContext","newContext","useMemo","ReactVaultContext","vault","VaultProvider","vaultOptions","useGlobal","resources","vaultInstance","setVaultInstance","useState","globalVault","Vault","useExistingVault","oldContext","useExternalResource","idOrRef","noCache","id","realId","setRealId","setError","initialData","resource","setResource","useEffect","fetchedResource","_realId","err","useExternalManifest","options","isLoaded","requestId","cached","ManifestContext","manifest","CanvasContext","canvas","useVault","useVaultSelector","selector","deps","selectedState","setSelectedState","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","lastSequence","useRef","prevItem","nextItem","setCanvasIndex","useCallback","foundSequence","setCanvasId","foundIndex","next","previous","idx","noop","SimpleViewerReactContext","InnerViewerProvider","visibleItems","sequence","setSequenceIndex","hasNext","hasPrevious","jsx","SimpleViewerProvider","useSimpleViewer","useContextBridge","ContextBridge","E","t","n","R","o","c","A","T","e","M","D","O","S","I","U","f","C","N","d","u","J","useDispatch","store","action","isVaultActivated","obj","useVirtualAnnotationPage","sources","dispatch","virtualId","useLayoutEffect","page","entityActions","fullPage","addAnnotation","atIndex","display","full","annotation","removeAnnotation","VirtualAnnotationPageContext","useVirtualAnnotationPageContext","VirtualAnnotationProvider","DefaultCanvasFallback","width","style","height","resetErrorBoundary","jsxs","ViewerPresetContext","useViewerPreset","SetOverlaysReactContext","SetPortalReactContext","useOverlay","type","key","element","setOverlay","useCanvas","WorldSizeContext","useWorldSize","size","fn","Viewer","errorFallback","outerContainerProps","_worldScale","viewerPreset","setViewerPreset","bridge","ErrorFallback","overlays","setOverlays","overlayComponents","portals","setPortals","portalComponents","worldSizes","setWorldSizes","worldScale","runtimeOptions","updateWorldSize","sizes","rest","updateOverlay","prev","updatePortal","fallbackProps","AtlasAuto","Fragment","Element","preset","ModeContext","l","g","useResourceEvents","scope","helper","createEventsHelper","hooks","useStyles","createStylesHelper","styles","useAnnotation","annotationId","body","singleBody","newAnnotation","expandTarget","RenderAnnotation","defaultStyle","className","interactive","html","events","allStyles","mergeStyles","RegionHighlight","useAnnotationPage","annotationPageId","annotationPage","RenderAnnotationPage","_page","RenderImage","image","thumbnail","isStatic","x","y","onClick","enableSizes","crop","TileSet","parseSpecificResource","getParsedTargetSelector","target","imageTarget","source","defaultTarget","emptyActions","unknownResponse","unsupportedStrategy","reason","emptyStrategy","getMeta","resourceId","resourceMeta","useEnabledAnnotationPageIds","availablePageIds","pageIds","allAnnotationListIds","annotationListId","annotationListMeta","flattenAnnotationPageIds","all","canvases","foundIds","canvas_","useAnnotationPageManager","enabledPageIds","setPageDisabled","deselectId","existingResources","setPageEnabled","opt","toDeselect","useResources","ImageServiceLoaderContext","ImageServiceLoader","useImageServiceLoader","useLoadImageService","loader","imageServiceStatus","setImageServiceStatus","didUnmount","imageService","imageServiceId","syncLoaded","usePaintingAnnotations","annotationPages","flatAnnotations","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]}