react-iiif-vault 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle/cjs/index.js +9 -9
- package/dist/bundle/cjs/index.js.map +1 -1
- package/dist/bundle/esm/index.mjs +886 -858
- package/dist/bundle/esm/index.mjs.map +1 -1
- package/dist/canvas-panel/cjs/canvas-panel.js +8 -8
- package/dist/canvas-panel/cjs/canvas-panel.js.map +1 -1
- package/dist/canvas-panel/esm/canvas-panel.mjs +713 -685
- package/dist/canvas-panel/esm/canvas-panel.mjs.map +1 -1
- package/dist/index.umd.js +51 -51
- package/dist/index.umd.js.map +1 -1
- package/dist/react17/cjs/index.js +9 -9
- package/dist/react17/cjs/index.js.map +1 -1
- package/dist/react17/esm/index.mjs +886 -858
- package/dist/react17/esm/index.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../../../src/context/ResourceContext.tsx","../../../node_modules/@iiif/helpers/dist/vault/esm/vault.mjs","../../../src/context/VaultContext.tsx","../../../src/hooks/useVault.ts","../../../src/hooks/useExternalResource.ts","../../../src/hooks/useExternalManifest.ts","../../../src/context/ManifestContext.tsx","../../../src/context/CanvasContext.tsx","../../../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","../../../node_modules/@iiif/helpers/dist/styles/esm/styles.mjs","../../../src/hooks/useStyles.ts","../../../node_modules/@iiif/helpers/dist/annotation-targets/esm/annotation-targets.mjs","../../../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","../../../node_modules/@iiif/helpers/dist/esm/index.mjs","../../../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/image-strategy.ts","../../../src/features/rendering-strategy/3d-strategy.ts","../../../src/features/rendering-strategy/audio-strategy.ts","../../../src/features/rendering-strategy/video-strategy.ts","../../../src/features/rendering-strategy/textual-content-strategy.ts","../../../src/hooks/useRenderingStrategy.ts","../../../src/hooks/useVaultEffect.ts","../../../node_modules/@iiif/helpers/dist/thumbnail/esm/thumbnail.mjs","../../../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/hooks/useExistingVault.ts","../../../src/canvas-panel/index.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":["export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport * as React from 'react';\n\nvar changedArray = function changedArray(a, b) {\n if (a === void 0) {\n a = [];\n }\n\n if (b === void 0) {\n b = [];\n }\n\n return a.length !== b.length || a.some(function (item, index) {\n return !Object.is(item, b[index]);\n });\n};\n\nvar initialState = {\n error: null\n};\n\nvar ErrorBoundary = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ErrorBoundary, _React$Component);\n\n function ErrorBoundary() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = initialState;\n\n _this.resetErrorBoundary = function () {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this.props.onReset == null ? void 0 : (_this$props = _this.props).onReset.apply(_this$props, args);\n\n _this.reset();\n };\n\n return _this;\n }\n\n ErrorBoundary.getDerivedStateFromError = function getDerivedStateFromError(error) {\n return {\n error: error\n };\n };\n\n var _proto = ErrorBoundary.prototype;\n\n _proto.reset = function reset() {\n this.setState(initialState);\n };\n\n _proto.componentDidCatch = function componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n\n (_this$props$onError = (_this$props2 = this.props).onError) == null ? void 0 : _this$props$onError.call(_this$props2, error, info);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n var error = this.state.error;\n var resetKeys = this.props.resetKeys; // There's an edge case where if the thing that triggered the error\n // happens to *also* be in the resetKeys array, we'd end up resetting\n // the error boundary immediately. This would likely trigger a second\n // error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call\n // of cDU after the error is set\n\n if (error !== null && prevState.error !== null && changedArray(prevProps.resetKeys, resetKeys)) {\n var _this$props$onResetKe, _this$props3;\n\n (_this$props$onResetKe = (_this$props3 = this.props).onResetKeysChange) == null ? void 0 : _this$props$onResetKe.call(_this$props3, prevProps.resetKeys, resetKeys);\n this.reset();\n }\n };\n\n _proto.render = function render() {\n var error = this.state.error;\n var _this$props4 = this.props,\n fallbackRender = _this$props4.fallbackRender,\n FallbackComponent = _this$props4.FallbackComponent,\n fallback = _this$props4.fallback;\n\n if (error !== null) {\n var _props = {\n error: error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n\n if ( /*#__PURE__*/React.isValidElement(fallback)) {\n return fallback;\n } else if (typeof fallbackRender === 'function') {\n return fallbackRender(_props);\n } else if (FallbackComponent) {\n return /*#__PURE__*/React.createElement(FallbackComponent, _props);\n } else {\n throw new Error('react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop');\n }\n }\n\n return this.props.children;\n };\n\n return ErrorBoundary;\n}(React.Component);\n\nfunction withErrorBoundary(Component, errorBoundaryProps) {\n var Wrapped = function Wrapped(props) {\n return /*#__PURE__*/React.createElement(ErrorBoundary, errorBoundaryProps, /*#__PURE__*/React.createElement(Component, props));\n }; // Format for display in DevTools\n\n\n var name = Component.displayName || Component.name || 'Unknown';\n Wrapped.displayName = \"withErrorBoundary(\" + name + \")\";\n return Wrapped;\n}\n\nfunction useErrorHandler(givenError) {\n var _React$useState = React.useState(null),\n error = _React$useState[0],\n setError = _React$useState[1];\n\n if (givenError != null) throw givenError;\n if (error != null) throw error;\n return setError;\n}\n/*\neslint\n @typescript-eslint/sort-type-union-intersection-members: \"off\",\n @typescript-eslint/no-throw-literal: \"off\",\n @typescript-eslint/prefer-nullish-coalescing: \"off\"\n*/\n\nexport { ErrorBoundary, useErrorHandler, 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","var Re = Object.defineProperty;\nvar me = (t, e, i) => e in t ? Re(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i;\nvar _ = (t, e, i) => (me(t, typeof e != \"symbol\" ? e + \"\" : e, i), i);\nimport { normalize as Ae, HAS_PART as I, PART_OF as M, frameResource as W, serialize as _e, serializeConfigPresentation2 as Te, serializeConfigPresentation3 as be, isSpecificResource as ve } from \"@iiif/parser\";\nconst p = function(e) {\n return function() {\n const i = { type: e, getType: () => e, toString: () => e };\n return (s, r) => ({\n ...i,\n ...s !== void 0 && { payload: s },\n ...r !== void 0 && { meta: r }\n });\n };\n}, $ = \"@iiif/IMPORT_ENTITIES\", X = \"@iiif/MODIFY_ENTITY_FIELD\", K = \"@iiif/REORDER_ENTITY_FIELD\", Z = \"@iiif/ADD_REFERENCE\", N = \"@iiif/UPDATE_REFERENCE\", ee = \"@iiif/REMOVE_REFERENCE\", te = \"@iiif/ADD_METADATA\", ie = \"@iiif/REMOVE_METADATA\", k = \"@iiif/UPDATE_METADATA\", re = \"@iiif/REORDER_METADATA\", se = p($)(), Oe = p(X)(), De = p(K)(), Ie = p(Z)(), Me = p(ee)(), Ce = p(N)(), we = p(te)(), Ue = p(k)(), Pe = p(ie)(), Fe = p(re)(), Ne = {\n importEntities: se,\n modifyEntityField: Oe,\n reorderEntityField: De,\n addReference: Ie,\n removeReference: Me,\n updateReference: Ce,\n addMetadata: we,\n removeMetadata: Pe,\n updateMetadata: Ue,\n reorderMetadata: Fe\n}, ne = \"@iiif/ADD_MAPPING\", oe = \"@iiif/ADD_MAPPINGS\", ke = p(ne)(), qe = p(oe)(), ce = \"@iiif/SET_META_VALUE\", ae = \"@iiif/SET_META_VALUE_DYNAMIC\", ue = \"@iiif/UNSET_META_VALUE\", xe = p(ce)(), Ve = p(ae)(), Le = p(ue)(), Q = {\n setMetaValue: xe,\n setMetaValueDynamic: Ve,\n unsetMetaValue: Le\n}, q = \"RESOURCE_ERROR\", de = \"RESOURCE_LOADING\", x = \"RESOURCE_READY\", fe = \"@iiif/REQUEST_RESOURCE\", le = \"@iiif/REQUEST_ERROR\", he = \"@iiif/REQUEST_MISMATCH\", pe = \"@iiif/REQUEST_COMPLETE\", Be = \"@iiif/REQUEST_OFFLINE_RESOURCE\", Qe = p(fe)(), ye = p(le)(), je = p(he)(), ze = p(pe)(), B = \"@iiif/BATCH\", Ye = \"@iiif/BATCH_IMPORT\", V = p(B)(), He = (t, e) => {\n const { entities: i, resource: s, mapping: r } = Ae(e);\n if (s.id === void 0)\n return [ye({ id: t, message: \"ID is not defined in resource.\" })];\n const n = [se({ entities: i }), qe({ mapping: r })];\n return s.id !== t && (n.push(ke({ id: t, type: s.type })), n.push(je({ requestId: t, actualId: s.id }))), n.push(ze({ id: t })), n;\n}, j = Number.isNaN || function(e) {\n return typeof e == \"number\" && e !== e;\n};\nfunction Je(t, e) {\n return !!(t === e || j(t) && j(e));\n}\nfunction z(t, e) {\n if (!Array.isArray(t) || !Array.isArray(e))\n return t === e;\n if (t.length !== e.length)\n return !1;\n for (let i = 0; i < t.length; i++)\n if (!Je(t[i], e[i]))\n return !1;\n return !0;\n}\nfunction w(t, e, i) {\n const s = t.iiif.requests[e], r = t.iiif.mapping[e];\n if (!r || !t.iiif.entities[r][s.resourceUri])\n return;\n const n = t.iiif.entities[r][s.resourceUri];\n if (n && n[I]) {\n const o = n[I].find((u) => i ? u[M] === i.id : u[M] === n.id);\n return W(n, o);\n }\n return n;\n}\nfunction Y(t, e, { waitTimeout: i = 30 } = {}) {\n return async (s, r) => {\n const n = t.getStore(), o = n.getState(), u = o.iiif.requests[s];\n if (u)\n switch (u.loadingState) {\n case q:\n break;\n case de: {\n let a, h = !1;\n try {\n const d = await Promise.race([\n new Promise((f, y) => {\n h || (a = n.subscribe(() => {\n const E = n.getState();\n if (E.iiif.requests[s].loadingState === q) {\n y();\n return;\n }\n if (E.iiif.requests[s].loadingState === x) {\n const A = w(E, s);\n A ? f(A) : y();\n }\n }));\n }),\n new Promise(\n (f, y) => setTimeout(() => {\n h = !0, y();\n }, i * 60 * 1e3)\n )\n ]);\n if (a && a(), d)\n return d;\n } catch {\n a && a();\n break;\n }\n break;\n }\n case x: {\n const a = w(o, s);\n if (a)\n return a;\n break;\n }\n }\n t.dispatch(Qe({ id: s }));\n try {\n const a = await e(s, r);\n !a.id && !a[\"@id\"] && (a[\"@type\"] && (a[\"@id\"] = s), a.id = s);\n const h = He(s, a);\n return t.dispatch(V({ actions: h })), w(n.getState(), s);\n } catch (a) {\n throw t.dispatch(ye({ id: s, message: a.toString() })), a;\n }\n };\n}\nfunction Ee() {\n return {\n Collection: {},\n Manifest: {},\n Canvas: {},\n AnnotationPage: {},\n AnnotationCollection: {},\n Annotation: {},\n ContentResource: {},\n Range: {},\n Service: {},\n Selector: {},\n Agent: {}\n };\n}\nconst H = (t) => {\n let e;\n const i = /* @__PURE__ */ new Set(), s = (a, h) => {\n const d = typeof a == \"function\" ? a(e) : a;\n if (!Object.is(d, e)) {\n const f = e;\n e = h ?? typeof d != \"object\" ? d : Object.assign({}, e, d), i.forEach((y) => y(e, f));\n }\n }, r = () => e, u = { setState: s, getState: r, subscribe: (a) => (i.add(a), () => i.delete(a)), destroy: () => {\n i.clear();\n } };\n return e = t(s, r, u), u;\n}, Ge = (t) => t ? H(t) : H, We = (t, e) => (i, s, r) => (r.dispatch = (n) => (i((o) => t(o, n), !1, n), n), r.dispatchFromDevtools = !0, { dispatch: (...n) => r.dispatch(...n), ...e }), $e = We, L = /* @__PURE__ */ new Map(), D = (t) => {\n const e = L.get(t);\n return e ? Object.fromEntries(\n Object.entries(e.stores).map(([i, s]) => [i, s.getState()])\n ) : {};\n}, Xe = (t, e, i) => {\n if (t === void 0)\n return {\n type: \"untracked\",\n connection: e.connect(i)\n };\n const s = L.get(i.name);\n if (s)\n return { type: \"tracked\", store: t, ...s };\n const r = {\n connection: e.connect(i),\n stores: {}\n };\n return L.set(i.name, r), { type: \"tracked\", store: t, ...r };\n}, Ke = (t, e = {}) => (i, s, r) => {\n const { enabled: n, anonymousActionType: o, store: u, ...a } = e;\n let h;\n try {\n h = (n ?? !1) && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch {\n }\n if (!h)\n return t(i, s, r);\n const { connection: d, ...f } = Xe(u, h, a);\n let y = !0;\n r.setState = (S, m, l) => {\n const R = i(S, m);\n if (!y)\n return R;\n const C = l === void 0 ? { type: o || \"anonymous\" } : typeof l == \"string\" ? { type: l } : l;\n return u === void 0 ? (d == null || d.send(C, s()), R) : (d == null || d.send(\n {\n ...C,\n type: `${u}/${C.type}`\n },\n {\n ...D(a.name),\n [u]: r.getState()\n }\n ), R);\n };\n const E = (...S) => {\n const m = y;\n y = !1, i(...S), y = m;\n }, A = t(r.setState, s, r);\n if (f.type === \"untracked\" ? d == null || d.init(A) : (f.stores[f.store] = r, d == null || d.init(\n Object.fromEntries(\n Object.entries(f.stores).map(([S, m]) => [\n S,\n S === f.store ? A : m.getState()\n ])\n )\n )), r.dispatchFromDevtools && typeof r.dispatch == \"function\") {\n let S = !1;\n const m = r.dispatch;\n r.dispatch = (...l) => {\n m(...l);\n };\n }\n return d.subscribe((S) => {\n var m;\n switch (S.type) {\n case \"ACTION\":\n if (typeof S.payload != \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return U(\n S.payload,\n (l) => {\n if (l.type === \"__setState\") {\n if (u === void 0) {\n E(l.state);\n return;\n }\n Object.keys(l.state).length !== 1 && console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format. \n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n const R = l.state[u];\n if (R == null)\n return;\n JSON.stringify(r.getState()) !== JSON.stringify(R) && E(R);\n return;\n }\n r.dispatchFromDevtools && typeof r.dispatch == \"function\" && r.dispatch(l);\n }\n );\n case \"DISPATCH\":\n switch (S.payload.type) {\n case \"RESET\":\n return E(A), u === void 0 ? d == null ? void 0 : d.init(r.getState()) : d == null ? void 0 : d.init(D(a.name));\n case \"COMMIT\":\n if (u === void 0) {\n d == null || d.init(r.getState());\n return;\n }\n return d == null ? void 0 : d.init(D(a.name));\n case \"ROLLBACK\":\n return U(S.state, (l) => {\n if (u === void 0) {\n E(l), d == null || d.init(r.getState());\n return;\n }\n E(l[u]), d == null || d.init(D(a.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return U(S.state, (l) => {\n if (u === void 0) {\n E(l);\n return;\n }\n JSON.stringify(r.getState()) !== JSON.stringify(l[u]) && E(l[u]);\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState: l } = S.payload, R = (m = l.computedStates.slice(-1)[0]) == null ? void 0 : m.state;\n if (!R)\n return;\n E(u === void 0 ? R : R[u]), d == null || d.send(\n null,\n // FIXME no-any\n l\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return y = !y;\n }\n return;\n }\n }), A;\n}, Ze = Ke, U = (t, e) => {\n let i;\n try {\n i = JSON.parse(t);\n } catch (s) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n s\n );\n }\n i !== void 0 && e(i);\n}, et = (t) => (e, i, s) => {\n const r = s.subscribe;\n return s.subscribe = (o, u, a) => {\n let h = o;\n if (u) {\n const d = (a == null ? void 0 : a.equalityFn) || Object.is;\n let f = o(s.getState());\n h = (y) => {\n const E = o(y);\n if (!d(f, E)) {\n const A = f;\n u(f = E, A);\n }\n }, a != null && a.fireImmediately && u(f, f);\n }\n return r(h);\n }, t(e, i, s);\n}, tt = et, it = (t = {}, e) => {\n switch (e.type) {\n case ne:\n return {\n ...t,\n [e.payload.id]: e.payload.type\n };\n case oe:\n return {\n ...t,\n ...e.payload.mapping\n };\n default:\n return t;\n }\n};\nfunction P(t, e, i, s) {\n return !(!t[i] || !t[i][e] || !t[i][e][s] || !Array.isArray(t[i][e][s]));\n}\nfunction rt(t, e) {\n const i = {}, s = [];\n for (const [r, n] of Object.entries(t || {})) {\n s.push(r);\n const o = (e || {})[r];\n if (!o || o.length === 0) {\n i[r] = n;\n continue;\n }\n i[r] = o;\n }\n for (const [r, n] of Object.entries(e || {}))\n s.indexOf(r) === -1 && (i[r] = n);\n return i;\n}\nfunction c(t) {\n return t.payload;\n}\nfunction F(t, e) {\n return typeof t > \"u\" ? e : t;\n}\nconst st = (t = Ee(), e) => {\n var s;\n const i = (r, n) => ({\n ...t,\n [c(e).type]: {\n ...t[c(e).type],\n [c(e).id]: {\n ...r,\n ...n\n }\n }\n });\n switch (e.type) {\n case X: {\n if (!t[c(e).type] || !t[c(e).type][c(e).id])\n return t;\n const r = t[c(e).type][c(e).id];\n return typeof r == \"string\" ? t : i(r, { [c(e).key]: c(e).value });\n }\n case K: {\n if (!P(t, c(e).id, c(e).type, c(e).key))\n return t;\n const r = t[c(e).type][c(e).id];\n if (typeof r == \"string\")\n return t;\n const n = Array.from(r[c(e).key]), [o] = n.splice(c(e).startIndex, 1);\n return n.splice(c(e).endIndex, 0, o), i(r, { [c(e).key]: n });\n }\n case $: {\n const r = Object.keys(c(e).entities), n = { ...t };\n for (const o of r) {\n const u = c(e).entities[o], a = { ...t[o] || {} };\n let h = !1;\n const d = Object.keys(u || {}) || [];\n if (u && d) {\n for (const f of d)\n h = !0, a[f] = t[o][f] ? rt(t[o][f], u[f]) : u[f];\n h && (n[o] = a);\n }\n }\n return n;\n }\n case Z: {\n if (!P(t, c(e).id, c(e).type, c(e).key))\n return t;\n const r = t[c(e).type][c(e).id], n = Array.from(r[c(e).key]);\n return n.splice(F(c(e).index, n.length + 1), 0, c(e).reference), i(r, { [c(e).key]: n });\n }\n case N:\n case ee: {\n if (!P(t, c(e).id, c(e).type, c(e).key))\n return t;\n const r = t[c(e).type][c(e).id], n = Array.from(r[c(e).key]), o = F(\n c(e).index,\n n.findIndex((u) => u && u.id === c(e).reference.id)\n );\n return o === -1 || ((s = n[o]) == null ? void 0 : s.id) !== c(e).reference.id ? t : (e.type === N ? n.splice(o, 1, c(e).reference) : n.splice(o, 1), i(r, { [c(e).key]: n }));\n }\n case te: {\n const r = t[c(e).type][c(e).id];\n if (!r)\n return t;\n const n = Array.from(r.metadata || []), o = c(e);\n return n.splice(F(e.payload.beforeIndex, n.length + 1), 0, {\n label: o.label,\n value: o.label\n }), i(r, { metadata: n });\n }\n case re: {\n const r = t[c(e).type][c(e).id];\n if (typeof r == \"string\" || !r)\n return t;\n const n = Array.from(r.metadata || []), [o] = n.splice(c(e).startIndex, 1);\n return n.splice(c(e).endIndex, 0, o), i(r, { metadata: n });\n }\n case k:\n case ie: {\n const r = t[c(e).type][c(e).id], n = Array.from(r.metadata || []), o = c(e).atIndex;\n return typeof o > \"u\" || o === -1 || !n[o] ? t : (e.type === k ? n.splice(o, 1, { label: c(e).label, value: c(e).value }) : n.splice(o, 1), i(r, { metadata: n }));\n }\n default:\n return t;\n }\n}, nt = (t = {}, e) => {\n switch (e.type) {\n case fe:\n case Be:\n return {\n ...t,\n [e.payload.id]: {\n requestUri: e.payload.id,\n loadingState: de,\n uriMismatch: !1,\n resourceUri: e.payload.id\n }\n };\n case he:\n return {\n ...t,\n [e.payload.requestId]: {\n ...t[e.payload.requestId] || {},\n uriMismatch: !0,\n resourceUri: e.payload.actualId\n },\n [e.payload.actualId]: {\n requestUri: e.payload.requestId,\n loadingState: t[e.payload.requestId].loadingState,\n uriMismatch: !0,\n resourceUri: e.payload.actualId\n }\n };\n case le:\n return {\n ...t,\n [e.payload.id]: {\n ...t[e.payload.id] || {},\n loadingState: q,\n error: e.payload.message\n }\n };\n case pe:\n return {\n ...t,\n [e.payload.id]: {\n ...t[e.payload.id] || {},\n loadingState: x,\n error: void 0\n }\n };\n }\n return t;\n}, ot = (t = {}, e) => {\n const { id: i, updateValue: s, value: r, meta: n, key: o } = e && e.payload || {};\n switch (e.type) {\n case ce:\n return {\n ...t,\n [i]: {\n ...t[i] || {},\n [n]: {\n ...t[i] ? t[i][n] || {} : {},\n [o]: r\n }\n }\n };\n case ae:\n return {\n ...t,\n [i]: {\n ...t[i] || {},\n [n]: {\n ...t[i] ? t[i][n] || {} : {},\n [o]: t[i] && t[i][n] ? s(t[i][n][o]) : s(void 0)\n }\n }\n };\n case ue:\n return t[i] && t[i][n] && t[i][n][o] ? {\n ...t,\n [i]: {\n ...t[i] || {},\n [n]: {\n ...t[i] ? t[i][n] || {} : {},\n [o]: void 0\n }\n }\n } : t;\n default:\n return t;\n }\n};\nfunction Se(t = {}) {\n const e = Object.keys(t);\n return function(s = {}, r) {\n let n = !1;\n const o = {};\n for (let u = 0; u < e.length; u++) {\n const a = e[u];\n o[a] = t[a](s[a], r), n = n || o[a] !== s[a];\n }\n return n ? o : s;\n };\n}\nfunction ct(t) {\n return (e, i) => i && i.type === B ? i.payload.actions.reduce(t, e) : i && i.type === Ye ? {\n ...e,\n iiif: {\n ...e.iiif,\n ...i.payload.state\n }\n } : t(e, i);\n}\nconst at = Se({\n mapping: it,\n entities: st,\n requests: nt,\n meta: ot\n});\nfunction ut() {\n return {\n iiif: {\n entities: Ee(),\n meta: {},\n mapping: {},\n requests: {}\n }\n };\n}\nfunction dt(t = {}) {\n const {\n enableDevtools: e = !1,\n iiifStoreName: i = \"iiif\",\n defaultState: s = ut(),\n customReducers: r = {}\n } = t, n = ct(Se({ [i]: at, ...r }));\n return Ge(tt(Ze($e(n, s), { enabled: e })));\n}\nfunction ft(t) {\n return { all: t = t || /* @__PURE__ */ new Map(), on: function(e, i) {\n var s = t.get(e);\n s ? s.push(i) : t.set(e, [i]);\n }, off: function(e, i) {\n var s = t.get(e);\n s && (i ? s.splice(s.indexOf(i) >>> 0, 1) : t.set(e, []));\n }, emit: function(e, i) {\n var s = t.get(e);\n s && s.slice().map(function(r) {\n r(i);\n }), (s = t.get(\"*\")) && s.slice().map(function(r) {\n r(e, i);\n });\n } };\n}\nfunction g(t, e, i, s = !0) {\n e[O] = e[O] || [], e[O].push(t);\n const r = /* @__PURE__ */ new Map();\n Object.defineProperty(e, t, {\n enumerable: s,\n get() {\n if (typeof e[b][t] > \"u\")\n return;\n const n = e[b][t];\n if (!n)\n return n;\n const o = i.get(e[b][t], {\n parent: this.id ? { id: this.id, type: this.type } : void 0\n });\n return r.has(o) || (r.clear(), r.set(o, v(o, i))), r.get(o);\n },\n set(n) {\n e[b][t] !== n && (this[T] ? i.modifyEntityField({ id: this.id, type: this.type }, t, ge(n)) : this[b][t] = n);\n }\n });\n}\nconst b = Symbol.for(\"_refs_\"), T = Symbol.for(\"_reactive_\"), O = Symbol.for(\"_defined_\"), J = Symbol.for(\"_parent_\");\nfunction lt(t, e = !1, i) {\n const s = {\n id: \"\",\n type: \"unknown\",\n [O]: [],\n [b]: {},\n [J]: i || null,\n [T]: null,\n is(r) {\n return typeof r == \"string\" ? this.id === r : r.id ? r.id === this.id : !1;\n },\n reactive() {\n if (!this[T])\n return this[T] = this.subscribe(() => this.refresh(), !0), () => {\n this.unreactive();\n };\n },\n refresh() {\n if (this.id) {\n const r = this.unwrap();\n for (const n of Object.keys(r || {}))\n this[O].includes(n) ? this[b][n] = r[n] : this[n] = r[n];\n }\n },\n unreactive() {\n this[T] && (this[T](), this[T] = null);\n },\n unwrap() {\n if (!this.id)\n throw new Error(\"Invalid object\");\n const r = this[J];\n return t.get(this.id, { parent: r ? { id: r, type: \"unknown\" } : void 0 });\n },\n toPresentation3() {\n return t.toPresentation3(this.unwrap());\n },\n toPresentation2() {\n return t.toPresentation2(this.unwrap());\n },\n valueOf() {\n return this.unwrap();\n },\n toJSON() {\n const r = this;\n return {\n ...r,\n items: r.items,\n annotations: r.annotations,\n structures: r.structures,\n seeAlso: r.seeAlso,\n service: r.service,\n services: r.services,\n rendering: r.rendering,\n partOf: r.partOf,\n start: r.start,\n supplementary: r.supplementary,\n homepage: r.homepage,\n thumbnail: r.thumbnail,\n placeholderCanvas: r.placeholderCanvas,\n accompanyingCanvas: r.accompanyingCanvas,\n provider: r.provider\n };\n },\n subscribe(r, n = !0) {\n return t.subscribe(\n () => this.id ? t.get(this.id) : null,\n r,\n n\n );\n }\n };\n return g(\"items\", s, t), g(\"annotations\", s, t), g(\"structures\", s, t), g(\"seeAlso\", s, t), g(\"rendering\", s, t), g(\"partOf\", s, t), g(\"start\", s, t, !1), g(\"supplementary\", s, t), g(\"homepage\", s, t), g(\"thumbnail\", s, t), g(\"placeholderCanvas\", s, t, !1), g(\"accompanyingCanvas\", s, t, !1), g(\"provider\", s, t), g(\"body\", s, t), g(\"logo\", s, t), s;\n}\nfunction ht(t) {\n return !!t[O];\n}\nfunction ge(t) {\n return Array.isArray(t) ? t.map((e) => ge(e)) : !t || !t.type ? t : { id: t.id, type: t.type };\n}\nfunction v(t, e, i = !1, s) {\n if (Array.isArray(t))\n return t.map((u) => v(u, e, i));\n if (!t || !t.type || !t.id)\n return t;\n const r = lt(e, i), n = Object.create(r), o = Object.assign(n, t);\n return i && o.reactive(), o;\n}\nfunction G(t) {\n switch (t) {\n case \"Image\":\n case \"Video\":\n case \"Sound\":\n case \"Dataset\":\n case \"Text\":\n case \"Composite\":\n case \"List\":\n case \"Independents\":\n case \"Audience\":\n return \"ContentResource\";\n case \"ImageService1\":\n case \"ImageService2\":\n case \"ImageService3\":\n return \"Service\";\n }\n return t;\n}\nclass pt {\n constructor(e, i) {\n _(this, \"options\");\n _(this, \"store\");\n _(this, \"emitter\");\n _(this, \"isBatching\", !1);\n _(this, \"batchQueue\", []);\n _(this, \"remoteFetcher\");\n _(this, \"staticFetcher\");\n _(this, \"defaultFetcher\", (e) => fetch(e).then((i) => i.json()));\n this.options = Object.assign(\n {\n reducers: {},\n customFetcher: this.defaultFetcher,\n enableDevtools: !0\n },\n e || {}\n ), this.store = i || dt({\n customReducers: this.options.reducers,\n defaultState: this.options.defaultState,\n enableDevtools: this.options.enableDevtools\n }), this.emitter = ft(), this.remoteFetcher = Y(this, this.options.customFetcher), this.staticFetcher = Y(this, (s, r) => r);\n }\n batch(e) {\n this.isBatching = !0;\n try {\n e(this), this.isBatching = !1, this.dispatch(V({ actions: this.batchQueue }));\n } catch (i) {\n throw this.batchQueue = [], this.isBatching = !1, i;\n }\n this.batchQueue = [];\n }\n async asyncBatch(e) {\n this.isBatching = !0;\n try {\n await e(this), this.isBatching = !1, this.dispatch(V({ actions: this.batchQueue }));\n } catch (i) {\n throw this.batchQueue = [], this.isBatching = !1, i;\n }\n this.batchQueue = [];\n }\n modifyEntityField(e, i, s) {\n this.dispatch(\n Ne.modifyEntityField({\n id: e.id,\n type: e.type,\n key: i,\n value: s\n })\n );\n }\n dispatch(e) {\n if (this.isBatching)\n this.batchQueue.push(e);\n else {\n if (e.type === B) {\n for (const r of e.payload.actions)\n this.emitter.emit(r.type, { action: r, state: this.store.getState() });\n this.store.dispatch(e);\n const s = this.getState();\n for (const r of e.payload.actions)\n this.emitter.emit(`after:${r.type}`, { action: r, state: s });\n return;\n }\n this.emitter.emit(e.type, { action: e, state: this.store.getState() }), this.store.dispatch(e);\n const i = this.store.getState();\n this.emitter.emit(`after:${e.type}`, { action: e, state: i });\n return;\n }\n }\n on(e, i) {\n return this.emitter.on(e, i), () => {\n this.emitter.off(e, i);\n };\n }\n serialize(e, i) {\n return _e(this.getState().iiif, e, i);\n }\n toPresentation2(e) {\n return this.serialize(e, Te);\n }\n toPresentation3(e) {\n return this.serialize(e, be);\n }\n hydrate(e, i, s = {}) {\n return this.get(e, i, { ...s, skipSelfReturn: !1 });\n }\n get(e, i, s = {}) {\n typeof i != \"string\" && (s = i || {}, i = void 0);\n const { skipSelfReturn: r = !0 } = s || {};\n let n = s.parent ? typeof s.parent == \"string\" ? s.parent : s.parent.id : void 0;\n if (Array.isArray(e))\n return e.map((f) => this.get(f, s));\n const o = this.getState();\n if (ve(e) && !s.preserveSpecificResources && (e = e.source), typeof e == \"string\") {\n const f = G(i || o.iiif.mapping[e]);\n if (!f)\n return r ? null : { id: e, type: \"unknown\" };\n e = { id: e, type: f };\n }\n if (e && e.partOf && !n && !s.skipPartOfCheck) {\n const f = Array.isArray(e.partOf) ? e.partOf[0] : e.partOf;\n f && (typeof f == \"string\" && (n = f), typeof f.id == \"string\" && (n = f.id));\n }\n const u = G(i || (e == null ? void 0 : e.type)), a = e == null ? void 0 : e.id, h = o.iiif.entities[u];\n if (!h) {\n const f = o.iiif.requests[a];\n return f && f.resourceUri !== a ? this.get(f.resourceUri, s) : r ? null : e;\n }\n const d = h[e.id];\n if (d && d[I]) {\n const f = d[I].find((y) => n ? y[M] === n : y[M] === d.id);\n return W(d, f);\n }\n return h[e.id] || (r ? null : e);\n }\n select(e) {\n return e(this.getState());\n }\n getStore() {\n return this.store;\n }\n getState() {\n return this.store.getState();\n }\n deep(e, i) {\n if (typeof e > \"u\")\n return this.get(i, { skipSelfReturn: !1 });\n if (typeof e == \"function\")\n try {\n const r = e(this.get(i, { skipSelfReturn: !1 })), n = (o) => this.deep(o, r);\n return n.size = Array.isArray(r) ? r.length : 1, n;\n } catch {\n const n = (o) => this.deep(o, void 0);\n return n.size = 0, n;\n }\n const s = (r) => this.deep(r, e);\n return s.size = Array.isArray(e) ? e.length : 1, s;\n }\n loadManifest(e, i) {\n const s = typeof e == \"string\" ? e : e.id;\n return this.load(s, i);\n }\n loadCollection(e, i) {\n const s = typeof e == \"string\" ? e : e.id;\n return this.load(s, i);\n }\n load(e, i) {\n const s = typeof e == \"string\" ? e : e.id;\n return i ? this.staticFetcher(s, i) : this.remoteFetcher(s);\n }\n areInputsEqual(e, i) {\n return z(e, i);\n }\n subscribe(e, i, s) {\n return typeof s > \"u\" && (typeof i > \"u\" || i === !1 || i === !0) && (s = i, i = e, e = (r) => r), this.store.subscribe(e, (r) => i(r, this), {\n equalityFn: z,\n fireImmediately: !s\n });\n }\n async ensureLoaded(e) {\n const i = typeof e == \"string\" ? e : e.id;\n this.requestStatus(i) || await this.load(i);\n }\n requestStatus(e) {\n return this.select((i) => i.iiif.requests[e]);\n }\n getResourceMeta(e, i) {\n const s = this.getState().iiif.meta[e];\n if (s)\n return i ? s[i] : s;\n }\n getObject(e, i, s = {}) {\n const { reactive: r, ...n } = s;\n return v(this.get(e, i, n), this, r);\n }\n async loadObject(e, i) {\n return v(await this.load(e, i), this);\n }\n async loadManifestObject(e, i) {\n return v(await this.loadManifest(e, i), this);\n }\n async loadCollectionObject(e, i) {\n return v(await this.loadCollection(e, i), this);\n }\n wrapObject(e) {\n return v(this.get(e, { skipSelfReturn: !1 }), this);\n }\n isWrapped(e) {\n return ht(e);\n }\n setMetaValue([e, i, s], r) {\n this.dispatch(\n typeof r == \"function\" ? Q.setMetaValueDynamic({\n id: e,\n meta: i,\n key: s,\n updateValue: r\n }) : Q.setMetaValue({\n id: e,\n meta: i,\n key: s,\n value: r\n })\n );\n }\n}\nfunction yt() {\n return typeof self < \"u\" ? self : typeof window < \"u\" ? window : typeof global < \"u\" ? global : {};\n}\nfunction gt(t) {\n const e = yt();\n try {\n const s = e.IIIF_VAULT;\n if (s)\n return s;\n } catch {\n }\n const i = new pt(t);\n try {\n e.IIIF_VAULT = i;\n } catch {\n }\n return i;\n}\nexport {\n pt as Vault,\n gt as globalVault\n};\n//# sourceMappingURL=vault.mjs.map\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 { 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 { 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 = useVault();\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 { useVault } from './useVault';\nimport { IIIFStore, Vault } from '@iiif/helpers/vault';\nimport { useEffect, useState } from 'react';\n\nexport function useVaultSelector<T>(selector: (state: IIIFStore, vault: Vault) => T, deps: any[] = []) {\n const vault = useVault();\n const [selectedState, setSelectedState] = useState<T>(() => selector(vault.getState(), vault));\n\n useEffect(() => {\n return vault.subscribe(\n (s) => selector(s, vault),\n (s) => {\n setSelectedState(s);\n },\n false\n );\n }, deps);\n\n return selectedState as T;\n}\n","import { useContext } from 'react';\nimport React from 'react';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { useVaultSelector } from '../hooks/useVaultSelector';\n\nexport const VisibleCanvasReactContext = React.createContext<string[]>([]);\n\nexport function useVisibleCanvases(): CanvasNormalized[] {\n const ids = useContext(VisibleCanvasReactContext);\n\n return useVaultSelector<CanvasNormalized[]>(\n (state) => {\n return ids.map((id) => state.iiif.entities.Canvas[id]).filter(Boolean);\n },\n [ids]\n );\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { ManifestNormalized } from '@iiif/presentation-3-normalized';\nimport { useVault } from './useVault';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useManifest(options?: { id: string }): ManifestNormalized | undefined;\nexport function useManifest<T>(\n options?: { id: string; selector: (manifest: ManifestNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useManifest<T = ManifestNormalized>(\n options: {\n id?: string;\n selector?: (manifest: ManifestNormalized) => T;\n } = {},\n deps: any[] = []\n): ManifestNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const vault = useVault();\n const manifestId = id ? id : ctx.manifest;\n\n const manifest = useVaultSelector(\n (s) => (manifestId ? s.iiif.entities.Manifest[manifestId] : undefined),\n [manifestId]\n );\n\n return useMemo(() => {\n if (!manifest) {\n return undefined;\n }\n if (selector) {\n return selector(manifest);\n }\n return manifest;\n }, [manifest, selector, ...deps]);\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function RangeContext({ range, children }: { range: string; children: ReactNode }) {\n return <ResourceProvider value={{ range }}>{children}</ResourceProvider>;\n}\n","import { Vault } from '@iiif/helpers/vault';\nimport { ManifestNormalized, RangeNormalized } from '@iiif/presentation-3-normalized';\nimport { Reference } from '@iiif/presentation-3';\n\nexport function findFirstCanvasFromRange(vault: Vault, range: RangeNormalized): null | Reference<'Canvas'> {\n for (const inner of range.items) {\n if ((inner as any).type === 'Canvas') {\n return inner as any as Reference<'Canvas'>;\n }\n if (inner.type === 'SpecificResource') {\n return inner.source as Reference<'Canvas'>;\n }\n if (inner.type === 'Range') {\n const found = findFirstCanvasFromRange(vault, vault.get(inner));\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n\nexport function findAllCanvasesInRange(vault: Vault, range: RangeNormalized): Array<Reference<'Canvas'>> {\n const found: Reference<'Canvas'>[] = [];\n for (const inner of range.items) {\n if (inner.type === 'SpecificResource' && inner.source?.type === 'Canvas') {\n if (inner.source.id.indexOf('#') !== -1) {\n found.push({ id: inner.source.id.split('#')[0], type: 'Canvas' });\n } else {\n found.push(inner.source as Reference<'Canvas'>);\n }\n }\n if (inner.type === 'Range') {\n found.push(...findAllCanvasesInRange(vault, vault.get(inner)));\n }\n if ((inner as any).type === 'SpecificResource') {\n const sourceId = typeof (inner as any).source === 'string' ? (inner as any).source : (inner as any).source.id;\n found.push({ id: sourceId, type: 'Canvas' });\n }\n }\n return found;\n}\n\nexport function findManifestSelectedRange(\n vault: Vault,\n manifest: ManifestNormalized,\n canvasId: string\n): null | RangeNormalized {\n for (const range of manifest.structures) {\n const found = findSelectedRange(vault, vault.get(range), canvasId);\n if (found) {\n return found;\n }\n }\n\n return null;\n}\n\nexport function findSelectedRange(vault: Vault, range: RangeNormalized, canvasId: string): null | RangeNormalized {\n for (const inner of range.items) {\n const parsedId = (inner as any)?.source?.id?.split('#')[0];\n if ((inner as any).type === 'SpecificResource' && (inner as any).source === canvasId) {\n return range;\n }\n if (inner.type === 'SpecificResource' && inner.source?.type === 'Canvas' && canvasId === parsedId) {\n return range;\n }\n if (inner.type === 'Range') {\n const found = findSelectedRange(vault, vault.get(inner), canvasId);\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n","import { CanvasNormalized, ManifestNormalized, RangeNormalized } from '@iiif/presentation-3-normalized';\nimport { Reference } from '@iiif/presentation-3';\nimport { Vault } from '@iiif/helpers/vault';\nimport { findAllCanvasesInRange } from './ranges';\n\n/**\n * Get visible canvases from canvas ID\n *\n * This function returns a list of canvas references that should all be displayed\n * when the passed canvasId is visible. This should work for individual items,\n * 2-up paged view and continuous (scrolls).\n *\n * The options are listed below (from IIIF docs)\n *\n * - `unordered` - Valid on Collections, Manifests and Ranges. The Canvases included in resources that have this behavior\n * have no inherent order, and user interfaces should avoid implying an order to the user. Disjoint with individuals,\n * continuous, and paged.\n *\n * - `individuals` - Valid on Collections, Manifests, and Ranges. For Collections that have this behavior, each of the\n * included Manifests are distinct objects in the given order. For Manifests and Ranges, the included Canvases are\n * distinct views, and should not be presented in a page-turning interface. This is the default layout behavior if\n * not specified. Disjoint with unordered, continuous, and paged.\n *\n * - `continuous` Valid on Collections, Manifests and Ranges, which include Canvases that have at least height and\n * width dimensions. Canvases included in resources that have this behavior are partial views and an appropriate\n * rendering might display all of the Canvases virtually stitched together, such as a long scroll split into\n * sections. This behavior has no implication for audio resources. The viewingDirection of the Manifest will\n * determine the appropriate arrangement of the Canvases. Disjoint with unordered, individuals and paged.\n *\n * - `paged` Valid on Collections, Manifests and Ranges, which include Canvases that have at least height and width\n * dimensions. Canvases included in resources that have this behavior represent views that should be presented in\n * a page-turning interface if one is available. The first canvas is a single view (the first recto) and thus the\n * second canvas likely represents the back of the object in the first canvas. If this is not the case, see the\n * behavior value non-paged. Disjoint with unordered, individuals, continuous, facing-pages and non-paged.\n *\n */\nexport function getVisibleCanvasesFromCanvasId(\n vault: Vault,\n manifestOrRange: ManifestNormalized | RangeNormalized,\n canvasId: string | null,\n preventPaged = false\n): Reference<'Canvas'>[] {\n const behavior = manifestOrRange.behavior;\n const fullCanvas = canvasId ? vault.get<CanvasNormalized>(canvasId) : null;\n if (!fullCanvas) {\n return [];\n }\n\n const canvasBehavior = fullCanvas.behavior;\n const isPaged = preventPaged ? false : behavior.includes('paged');\n const isContinuous = isPaged ? false : behavior.includes('continuous');\n const isIndividuals = isPaged || isContinuous ? false : behavior.includes('individuals');\n const isCanvasFacingPages = canvasBehavior.includes('facing-pages');\n const isCanvasNonPaged = canvasBehavior.includes('non-paged');\n\n // Individuals should just be the default.\n if (isCanvasFacingPages || isCanvasNonPaged || isIndividuals || preventPaged) {\n return [{ id: fullCanvas.id, type: 'Canvas' }];\n }\n\n const [manifestItems, ordering] = getManifestSequence(vault, manifestOrRange);\n\n // Continuous should just return all items together.\n if (isContinuous) {\n return manifestItems;\n }\n\n const canvasIndex = manifestItems.findIndex((r) => r.id === canvasId);\n if (canvasIndex === -1) {\n return [];\n }\n\n for (const indexes of ordering) {\n if (indexes.includes(canvasIndex)) {\n return indexes.map((index) => manifestItems[index]);\n }\n }\n\n return [{ id: fullCanvas.id, type: 'Canvas' }];\n}\n\nexport function getManifestSequence(\n vault: Vault,\n manifestOrRange: ManifestNormalized | RangeNormalized,\n { disablePaging, skipNonPaged }: { disablePaging?: boolean; skipNonPaged?: boolean } = {}\n): [Reference<'Canvas'>[], number[][]] {\n const behavior = manifestOrRange.behavior;\n const isPaged = behavior.includes('paged');\n const isContinuous = isPaged ? false : behavior.includes('continuous');\n const isIndividuals = isPaged || isContinuous ? false : behavior.includes('individuals');\n const manifestItems =\n manifestOrRange.type === 'Manifest' ? manifestOrRange.items : findAllCanvasesInRange(vault, manifestOrRange);\n\n // Continuous should just return all items together.\n if (isContinuous) {\n return [manifestItems, [manifestItems.map((_, index) => index)]];\n }\n\n // Individuals should just be the default.\n if (isIndividuals || !isPaged || disablePaging) {\n return [manifestItems, manifestItems.map((_, index) => [index])];\n }\n\n // This is the tricky case.\n const ordering: number[][] = [];\n let currentOrdering: number[] = [];\n\n const flush = () => {\n if (currentOrdering.length) {\n ordering.push([...currentOrdering]);\n currentOrdering = [];\n }\n };\n\n let offset = 0;\n let flushNextPaged = false;\n for (let i = 0; i < manifestItems.length; i++) {\n const canvas = vault.get<CanvasNormalized>(manifestItems[i]);\n if (canvas.behavior.includes('non-paged')) {\n if (i === offset) {\n offset++;\n }\n if (!skipNonPaged) {\n flush();\n ordering.push([i]);\n flush();\n }\n continue;\n }\n\n if (i === offset || canvas.behavior.includes('facing-pages')) {\n // Flush and push a single.\n if (currentOrdering.length) {\n flushNextPaged = true;\n }\n flush();\n ordering.push([i]);\n flush();\n continue;\n }\n\n currentOrdering.push(i);\n\n if (flushNextPaged) {\n flush();\n flushNextPaged = false;\n continue;\n }\n\n if (currentOrdering.length > 1) {\n flush();\n }\n }\n\n if (currentOrdering.length) {\n flush();\n }\n\n return [manifestItems, ordering];\n}\n","// This is valid under a range context.\nimport { useResourceContext } from '../context/ResourceContext';\nimport { RangeNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useRange(options?: { id: string }): RangeNormalized | undefined;\nexport function useRange<T>(\n options?: { id: string; selector: (range: RangeNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useRange<T = RangeNormalized>(\n options: {\n id?: string;\n selector?: (range: RangeNormalized) => T;\n } = {},\n deps: any[] = []\n): RangeNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const rangeId = id ? id : ctx.range;\n\n const range = useVaultSelector((s) => (rangeId ? s.iiif.entities.Range[rangeId] : undefined), [rangeId]);\n\n return useMemo(() => {\n if (!range) {\n return undefined;\n }\n if (selector) {\n return selector(range);\n }\n return range;\n }, [range, selector, ...deps]);\n}\n","import { getManifestSequence } from '../future-helpers/sequences';\nimport { useManifest } from '../hooks/useManifest';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useRange } from '../hooks/useRange';\nimport { useVault } from '../hooks/useVault';\n\nexport function useCanvasSequence({ startCanvas, disablePaging }: { startCanvas?: string; disablePaging?: boolean }) {\n const vault = useVault();\n const manifest = useManifest();\n const range = useRange();\n const [cursor, setCursor] = useState<number>(undefined as any);\n const rangeOrManifest = range ? range : manifest;\n\n if (!rangeOrManifest) {\n throw new Error('Nothing selected');\n }\n\n const [items, initialSequence] = useMemo(\n () => getManifestSequence(vault, rangeOrManifest, { disablePaging }),\n [vault, rangeOrManifest]\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) {\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 setSequenceIndex: setCursor,\n setCanvasIndex,\n setCanvasId,\n next,\n previous,\n };\n}\n","import React, { ReactNode, useCallback, useContext, useEffect } from 'react';\n/**\n * Simple viewer context\n * *****************************************************************************\n *\n * This will be the context to use to get a basic IIIF viewer up and running.\n * It will not focus on having compatibility with the full range of IIIF\n * resources, instead offering a viewer for a Manifest, cycling through canvases\n * while ignoring the paged/facing-pages/continuous behaviors.\n *\n * There will not be support for canvas-on-canvas annotations. Annotations will\n * be filtered, giving details of the canvas space and images to be annotated\n * onto that space. The demo implementation of this viewer will use\n * OpenSeadragon to display.\n *\n * Navigation functions will include the basics:\n * - nextCanvas()\n * - previousCanvas()\n * - goToCanvas(id)\n * - goToCanvasIndex(idx)\n * - goToFirstCanvas()\n * - goToLastCanvas()\n *\n * It will take in only a Manifest ID and will load that Manifest when the\n * context loads.\n *\n * There will be no support for external or embedded annotation lists, although\n * you can set up a nested context to support this.\n *\n * There will be no support for ranges in this view.\n *\n * To use this component, first you will need the provider:\n * import { SimpleViewerProvider } from '...';\n *\n * <SimpleViewerProvider id=\"http://example.org/manifest.json\">\n * <CustomComponent />\n * </SimpleViewerProvider>\n *\n * This is in addition to the core Vault context further up the tree.\n *\n * In components that you want to use parts of the state you can grab the hooks\n * from this file.\n *\n * import { useSimpleViewer } from '...';\n *\n * And use them in your components to get the actions.\n *\n * function NextButton() {\n * const { nextCanvas } = useSimpleViewer();\n *\n * return <button onClick={nextCanvas}>Next</button>;\n * }\n *\n * Since this is a single-context, there is only ever one manifest, canvas and\n * annotation list. You can access the current resource using the normal hooks.\n *\n * function CanvasMetadata() {\n * const metadata = useCanvas(metadataSelector);\n *\n * return <div> ... </div>\n * }\n *\n * So long as this is inside the provider, it will have the correct context.\n */\nimport { createContext, FC, useMemo, useState } from 'react';\nimport { useExternalManifest } from '../hooks/useExternalManifest';\nimport { ManifestContext } from '../context/ManifestContext';\nimport { CanvasContext } from '../context/CanvasContext';\nimport { VisibleCanvasReactContext } from '../context/VisibleCanvasContext';\nimport { useManifest } from '../hooks/useManifest';\nimport { SimpleViewerContext, SimpleViewerProps } from './SimpleViewerContext.types';\nimport { RangeContext } from '../context/RangeContext';\nimport { useCanvasSequence } from './SimpleViewerContext.hooks';\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});\n\nexport function InnerViewerProvider(props: SimpleViewerProps) {\n const manifest = useManifest();\n const { cursor, visibleItems, next, sequence, items, setCanvasIndex, setCanvasId, previous, setSequenceIndex } =\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 } 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 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 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 <ManifestContext manifest={manifest.id}>\n {props.rangeId ? <RangeContext range={props.rangeId}>{inner}</RangeContext> : inner}\n </ManifestContext>\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 };\n }, [worldScale]);\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","const r = {}, l = {\n get(e) {\n return e;\n },\n setMetaValue([e, t, n], o) {\n const s = l.getResourceMeta(e, t), c = s ? s[n] : void 0, u = typeof o == \"function\" ? o(c) : o;\n r[e] = {\n ...r[e] || {},\n [t]: {\n ...(r[e] || {})[t] || {},\n [n]: u\n }\n };\n },\n getResourceMeta: (e, t) => {\n const n = r[e];\n if (n)\n return t ? n[t] : n;\n }\n};\nfunction a(e = l) {\n return {\n applyStyles(t, n, o) {\n const s = typeof t == \"string\" ? t : t.id;\n return e.setMetaValue([s, \"styles\", n], o);\n },\n getAppliedStyles(t) {\n const n = typeof t == \"string\" ? t : t.id;\n return e.getResourceMeta(n, \"styles\");\n }\n };\n}\nexport {\n a as createStylesHelper\n};\n//# sourceMappingURL=styles.mjs.map\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","var tt = Object.defineProperty;\nvar et = (e, t, a) => t in e ? tt(e, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[t] = a;\nvar C = (e, t, a) => (et(e, typeof t != \"symbol\" ? t + \"\" : t, a), a);\nvar rt = function() {\n function e(t, a) {\n var r = [], s = !0, n = !1, o = void 0;\n try {\n for (var i = t[Symbol.iterator](), l; !(s = (l = i.next()).done) && (r.push(l.value), !(a && r.length === a)); s = !0)\n ;\n } catch (u) {\n n = !0, o = u;\n } finally {\n try {\n !s && i.return && i.return();\n } finally {\n if (n)\n throw o;\n }\n }\n return r;\n }\n return function(t, a) {\n if (Array.isArray(t))\n return t;\n if (Symbol.iterator in Object(t))\n return e(t, a);\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n };\n}(), L = Math.PI * 2, B = function(t, a, r, s, n, o, i) {\n var l = t.x, u = t.y;\n l *= a, u *= r;\n var h = s * l - n * u, p = n * l + s * u;\n return {\n x: h + o,\n y: p + i\n };\n}, at = function(t, a) {\n var r = a === 1.5707963267948966 ? 0.551915024494 : a === -1.5707963267948966 ? -0.551915024494 : 1.3333333333333333 * Math.tan(a / 4), s = Math.cos(t), n = Math.sin(t), o = Math.cos(t + a), i = Math.sin(t + a);\n return [{\n x: s - n * r,\n y: n + s * r\n }, {\n x: o + i * r,\n y: i - o * r\n }, {\n x: o,\n y: i\n }];\n}, N = function(t, a, r, s) {\n var n = t * s - a * r < 0 ? -1 : 1, o = t * r + a * s;\n return o > 1 && (o = 1), o < -1 && (o = -1), n * Math.acos(o);\n}, st = function(t, a, r, s, n, o, i, l, u, h, p, y) {\n var b = Math.pow(n, 2), c = Math.pow(o, 2), d = Math.pow(p, 2), v = Math.pow(y, 2), x = b * c - b * v - c * d;\n x < 0 && (x = 0), x /= b * v + c * d, x = Math.sqrt(x) * (i === l ? -1 : 1);\n var f = x * n / o * y, m = x * -o / n * p, g = h * f - u * m + (t + r) / 2, w = u * f + h * m + (a + s) / 2, A = (p - f) / n, k = (y - m) / o, F = (-p - f) / n, T = (-y - m) / o, q = N(1, 0, A, k), S = N(A, k, F, T);\n return l === 0 && S > 0 && (S -= L), l === 1 && S < 0 && (S += L), [g, w, q, S];\n}, nt = function(t) {\n var a = t.px, r = t.py, s = t.cx, n = t.cy, o = t.rx, i = t.ry, l = t.xAxisRotation, u = l === void 0 ? 0 : l, h = t.largeArcFlag, p = h === void 0 ? 0 : h, y = t.sweepFlag, b = y === void 0 ? 0 : y, c = [];\n if (o === 0 || i === 0)\n return [];\n var d = Math.sin(u * L / 360), v = Math.cos(u * L / 360), x = v * (a - s) / 2 + d * (r - n) / 2, f = -d * (a - s) / 2 + v * (r - n) / 2;\n if (x === 0 && f === 0)\n return [];\n o = Math.abs(o), i = Math.abs(i);\n var m = Math.pow(x, 2) / Math.pow(o, 2) + Math.pow(f, 2) / Math.pow(i, 2);\n m > 1 && (o *= Math.sqrt(m), i *= Math.sqrt(m));\n var g = st(a, r, s, n, o, i, p, b, d, v, x, f), w = rt(g, 4), A = w[0], k = w[1], F = w[2], T = w[3], q = Math.abs(T) / (L / 4);\n Math.abs(1 - q) < 1e-7 && (q = 1);\n var S = Math.max(Math.ceil(q), 1);\n T /= S;\n for (var V = 0; V < S; V++)\n c.push(at(F, T)), F += T;\n return c.map(function($) {\n var j = B($[0], o, i, v, d, A, k), Z = j.x, J = j.y, D = B($[1], o, i, v, d, A, k), K = D.x, H = D.y, X = B($[2], o, i, v, d, A, k), P = X.x, E = X.y;\n return { x1: Z, y1: J, x2: K, y2: H, x: P, y: E };\n });\n};\nfunction G(e) {\n return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, \"default\") ? e.default : e;\n}\nvar ot = ct, I = { a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0 }, it = /([astvzqmhlc])([^astvzqmhlc]*)/ig;\nfunction ct(e) {\n var t = [];\n return e.replace(it, function(a, r, s) {\n var n = r.toLowerCase();\n for (s = ut(s), n == \"m\" && s.length > 2 && (t.push([r].concat(s.splice(0, 2))), n = \"l\", r = r == \"m\" ? \"l\" : \"L\"); ; ) {\n if (s.length == I[n])\n return s.unshift(r), t.push(s);\n if (s.length < I[n])\n throw new Error(\"malformed path data\");\n t.push([r].concat(s.splice(0, I[n])));\n }\n }), t;\n}\nvar lt = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig;\nfunction ut(e) {\n var t = e.match(lt);\n return t ? t.map(Number) : [];\n}\nconst pt = /* @__PURE__ */ G(ot);\nvar ht = yt;\nfunction yt(e) {\n var t = 0, a = 0, r = 0, s = 0;\n return e.map(function(n) {\n n = n.slice();\n var o = n[0], i = o.toUpperCase();\n if (o != i)\n switch (n[0] = i, o) {\n case \"a\":\n n[6] += r, n[7] += s;\n break;\n case \"v\":\n n[1] += s;\n break;\n case \"h\":\n n[1] += r;\n break;\n default:\n for (var l = 1; l < n.length; )\n n[l++] += r, n[l++] += s;\n }\n switch (i) {\n case \"Z\":\n r = t, s = a;\n break;\n case \"H\":\n r = n[1];\n break;\n case \"V\":\n s = n[1];\n break;\n case \"M\":\n r = t = n[1], s = a = n[2];\n break;\n default:\n r = n[n.length - 2], s = n[n.length - 1];\n }\n return n;\n });\n}\nconst ft = /* @__PURE__ */ G(ht);\nfunction vt(e) {\n const t = pt(e), a = ft(t);\n let r, s = 0, n = 0, o = 0, i = 0, l, u, h = 0, p = 0;\n const y = [];\n for (let b = 0; b < a.length; b++) {\n let c = a[b];\n const d = c[0];\n switch (d) {\n case \"M\":\n s = c[1], n = c[2];\n break;\n case \"H\":\n c = [\"L\", c[1], n];\n break;\n case \"V\":\n c = [\"L\", s, c[1]];\n break;\n case \"S\":\n {\n let v = h, x = p;\n (r === \"C\" || r == \"S\") && (v += v - o, x += x - i), c = [\"C\", v, x, c[1], c[2], c[3], c[4]];\n }\n break;\n case \"T\":\n r === \"Q\" || r == \"T\" ? (l = h * 2 - l, u = p * 2 - u) : (l = h, u = p), c = [\"Q\", l, u, c[1], c[2]];\n break;\n case \"Q\":\n l = c[1], u = c[2];\n break;\n case \"A\":\n {\n const v = nt({\n px: h,\n py: p,\n cx: c[6],\n cy: c[7],\n rx: c[1],\n ry: c[2],\n xAxisRotation: c[3],\n largeArcFlag: c[4],\n sweepFlag: c[5]\n });\n if (!v.length)\n continue;\n for (const [x, f] of v.entries())\n c = [\"C\", f.x1, f.y1, f.x2, f.y2, f.x, f.y], x < v.length - 1 && y.push(c);\n c = c;\n }\n break;\n case \"Z\":\n c = [\"L\", s, n];\n break;\n }\n r = d, h = c[c.length - 2], p = c[c.length - 1], [\"C\", \"Q\", \"A\"].indexOf(d) > -1 ? (o = c[c.length - 4], i = c[c.length - 3]) : (o = h, i = p), y.push(c);\n }\n return y;\n}\n/** Code to \"flatten\" quadratic and cubic Bézier curves to polylines.\n *\n * All code in this module is based on JavaScript code by Raph Levien, published on his blog at\n * https://raphlinus.github.io/.\n * I merely changed the structure a bit, removed some unneeded parts and added some comments and type hints.\n *\n * Flattening of quadratic Bézier curves:\n * - Article: https://raphlinus.github.io/graphics/curves/2019/12/23/flatten-quadbez.html\n * - Code: https://github.com/raphlinus/raphlinus.github.io/blob/master/_posts/2019-12-23-flatten-quadbez.md?plain=1#L73-L212\n *\n * Flattening of cubic Bézier curves: https://levien.com/tmp/flatten.html\n *\n * Note that the code in this module has a different license than the rest of the package,\n * due to the inclusion of Apache-licensed third party code.\n *\n * @license\n * Copyright 2022 Johannes Baiter <johannes.baiter@gmail.com>\n * Copyright 2019, 2022 Raph Levien <raph.levien@gmail.com>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction xt(e, t, a, r = 1) {\n return new W(e, t, a).subdivide(r);\n}\nfunction bt(e, t, a, r, s = 1) {\n return new Q(\n new Float64Array([e.x, e.y, t.x, t.y, a.x, a.y, r.x, r.y])\n ).subdivide(s);\n}\nfunction dt(e) {\n return e.x * e.x + e.y * e.y;\n}\nfunction z(e) {\n return e / (1 - 0.67 + Math.pow(Math.pow(0.67, 4) + 0.25 * e * e, 0.25));\n}\nfunction O(e) {\n return e * (1 - 0.39 + Math.sqrt(0.39 * 0.39 + 0.25 * e * e));\n}\nclass W {\n constructor(t, a, r) {\n C(this, \"start\");\n C(this, \"control\");\n C(this, \"end\");\n this.start = t, this.control = a, this.end = r;\n }\n eval(t) {\n const a = 1 - t;\n return {\n x: this.start.x * a * a + 2 * this.control.x * a * t + this.end.x * t * t,\n y: this.start.y * a * a + 2 * this.control.y * a * t + this.end.y * t * t\n };\n }\n mapToBasic() {\n const { x: t, y: a } = this.start, { x: r, y: s } = this.control, { x: n, y: o } = this.end, i = 2 * r - t - n, l = 2 * s - a - o, u = (r - t) * i + (s - a) * l, h = (n - r) * i + (o - s) * l, p = (n - t) * l - (o - a) * i, y = u / p, b = h / p, c = Math.abs(p) / (Math.hypot(i, l) * Math.abs(b - y));\n return { x0: t, x2: n, scale: c, cross: p };\n }\n subdivide(t) {\n const a = this.mapToBasic(), r = z(a.x0), s = z(a.x2), n = 0.5 * Math.abs(s - r) * Math.sqrt(a.scale / t), o = Math.ceil(n), i = O(r), l = O(s), u = [0];\n for (let h = 1; h < o; h++) {\n const y = (O(r + (s - r) * h / o) - i) / (l - i);\n u.push(y);\n }\n return u.push(1), u.map((h) => this.eval(h));\n }\n}\nclass Q {\n /// Argument is array of coordinate values [x0, y0, x1, y1, x2, y2, x3, y3].\n constructor(t) {\n C(this, \"c\");\n this.c = t;\n }\n weightsum(t, a, r, s) {\n const n = t * this.c[0] + a * this.c[2] + r * this.c[4] + s * this.c[6], o = t * this.c[1] + a * this.c[3] + r * this.c[5] + s * this.c[7];\n return { x: n, y: o };\n }\n eval(t) {\n const a = 1 - t, r = a * a * a, s = 3 * a * a * t, n = 3 * a * t * t, o = t * t * t;\n return this.weightsum(r, s, n, o);\n }\n deriv(t) {\n const a = 1 - t, r = -3 * a * a, s = 3 * t * t, n = -6 * t * a - r, o = 6 * t * a - s;\n return this.weightsum(r, n, o, s);\n }\n // quadratic bezier with matching endpoints and minimum max vector error\n midpoint_quadbez() {\n const t = this.weightsum(-0.25, 0.75, 0.75, -0.25);\n return new W({ x: this.c[0], y: this.c[1] }, t, { x: this.c[6], y: this.c[7] });\n }\n subsegment(t, a) {\n const r = new Float64Array(8), s = this.eval(t), n = this.eval(a);\n r[0] = s.x, r[1] = s.y;\n const o = (a - t) / 3, i = this.deriv(t);\n r[2] = s.x + o * i.x, r[3] = s.y + o * i.y;\n const l = this.deriv(a);\n return r[4] = n.x - o * l.x, r[5] = n.y - o * l.y, r[6] = n.x, r[7] = n.y, new Q(r);\n }\n // Very fancy subdivision scheme\n subdivide(t) {\n const a = 0.1 * t, r = t - a, s = Math.sqrt(r), n = dt(this.weightsum(1, -3, 3, -1)), o = Math.ceil(Math.pow(n / (432 * a * a), 1 / 6)), i = [];\n let l = 0;\n for (let c = 0; c < o; c++) {\n const d = c / o, v = (c + 1) / o, x = this.subsegment(d, v).midpoint_quadbez(), f = x.mapToBasic(), m = z(f.x0), g = z(f.x2), w = Math.sqrt(f.scale);\n let A = Math.abs(g - m) * w;\n if (Math.sign(f.x0) != Math.sign(f.x2)) {\n const k = s / w, F = s * Math.abs(g - m) / z(k);\n A = Math.max(A, F);\n }\n i.push({\n quad: x,\n a0: m,\n a2: g,\n val: A\n }), l += A;\n }\n const u = 0.5 * l / s, h = Math.ceil(u), p = [{ x: this.c[0], y: this.c[1] }];\n let y = 0, b = 0;\n for (let c = 1; c < h; c++) {\n const d = l * c / h;\n for (; y + i[b].val < d; )\n y += i[b].val, b++;\n const v = i[b].a0, x = i[b].a2, f = O(v), m = O(x), g = v + (x - v) * (d - y) / i[b].val, A = (O(g) - f) / (m - f);\n p.push(i[b].quad.eval(A));\n }\n return p.push({ x: this.c[6], y: this.c[7] }), p;\n }\n}\nconst mt = /&?(xywh=)?(pixel:|percent:|pct:)?([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?)/, At = /&?(t=)(npt:)?([0-9]+(.[0-9]+)?)?(,([0-9]+(.[0-9]+)?))?/, U = /^rgba\\((\\d+),(\\d+),(\\d+),([0-9.]+)\\)$/;\nfunction _(e, {\n domParser: t,\n svgPreprocessor: a,\n iiifRenderingHints: r\n} = {}) {\n if (Array.isArray(e))\n return M(\n e.reduce(\n (s, n) => {\n const {\n selector: o,\n selectors: i,\n iiifRenderingHints: l\n } = _(n, { domParser: t, svgPreprocessor: a, iiifRenderingHints: r });\n return o && (s.selector || (s.selector = o), s.selectors.push(...i)), l && (s.iiifRenderingHints = s.iiifRenderingHints || { type: \"ImageApiSelector\" }, Object.assign(s.iiifRenderingHints, l)), s;\n },\n {\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n }\n )\n );\n if (!e)\n return M({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n if (typeof e == \"string\") {\n const [s, n] = e.split(\"#\");\n return n ? _(\n { type: \"FragmentSelector\", value: n },\n { svgPreprocessor: a, iiifRenderingHints: r, domParser: t }\n ) : M({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n }\n if (e.type && e.type === \"PointSelector\" && (e.t || e.t === 0)) {\n const s = {\n type: \"TemporalSelector\",\n temporal: {\n startTime: e.t\n }\n };\n return M({\n selector: s,\n selectors: [s],\n iiifRenderingHints: r\n });\n }\n if (kt(e)) {\n const s = [];\n if (e.region) {\n const n = _(\n { type: \"FragmentSelector\", value: \"xywh=\" + e.region },\n { domParser: t, svgPreprocessor: a, iiifRenderingHints: r }\n );\n s.push(...n.selectors);\n }\n return M({\n selector: s[0],\n selectors: s,\n iiifRenderingHints: r ? { ...r, ...e } : e\n });\n }\n if (e.type === \"FragmentSelector\") {\n const s = mt.exec(e.value);\n if (s) {\n const o = {\n type: \"BoxSelector\",\n spatial: {\n unit: s[2] === \"percent:\" || s[2] === \"pct:\" ? \"percent\" : \"pixel\",\n x: parseFloat(s[3]),\n y: parseFloat(s[4]),\n width: parseFloat(s[5]),\n height: parseFloat(s[6])\n }\n };\n return M({\n selector: o,\n selectors: [o],\n iiifRenderingHints: r\n });\n }\n const n = e.value.match(At);\n if (n) {\n const o = {\n type: \"TemporalSelector\",\n temporal: {\n startTime: n[4] ? parseFloat(n[4]) : 0,\n endTime: n[7] ? parseFloat(n[7]) : void 0\n }\n };\n return M({\n selector: o,\n selectors: [o],\n iiifRenderingHints: r\n });\n }\n return M({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n }\n if (e.type === \"SvgSelector\" && \"value\" in e) {\n t || (typeof window < \"u\" ? t = new window.DOMParser() : console.warn(\n \"No DOMParser available, cannot parse SVG selector, `points`, `spatial` and `style` will be unavailable and the SVG will not be normalized.\"\n ));\n let s = [], n, o, i = (a == null ? void 0 : a(e.value)) ?? e.value, l;\n if (t) {\n const h = t.parseFromString(e.value, \"image/svg+xml\").querySelector(\"svg\");\n if (!h)\n return console.warn(`Illegal SVG selector: ${e.value}`), M({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n const p = Y(h);\n p && (s = p.points, l = p.shapeType, n = [\n Math.min(...s.map((y) => y[0])),\n // llx\n Math.min(...s.map((y) => y[1])),\n // lly\n Math.max(...s.map((y) => y[0])),\n // urx\n Math.max(...s.map((y) => y[1]))\n // ury\n ], { style: o, svg: i } = gt(p.element) ?? { svg: i });\n }\n const u = {\n type: \"SvgSelector\",\n svg: i,\n svgShape: l,\n style: o,\n points: s.length ? s : void 0,\n spatial: n ? { unit: \"pixel\", x: n[0], y: n[1], width: n[2] - n[0], height: n[3] - n[1] } : void 0\n };\n return M({\n selector: u,\n selectors: [u],\n iiifRenderingHints: r\n });\n }\n return M({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n}\nfunction Mt(e) {\n const t = e.map((r) => r[0]).reduce(\n (r, s) => (r[s] += 1, r),\n { C: 0, Q: 0, L: 0, M: 0 }\n ), a = new Set(e.map((r) => r[0]));\n if (t.C > 0 || t.Q > 0)\n return \"path\";\n if (t.L > 0 && (a.size === 1 || a.size === 2 && a.has(\"M\"))) {\n if (t.L === 4)\n return \"rect\";\n const r = e.slice(-1)[0];\n return e[0][0] === \"M\" && r[0] === \"L\" && r[1] == e[0][1] && r[2] === e[0][2] || r[1] === 0 && r[2] === 0 ? \"polygon\" : \"polyline\";\n }\n return \"path\";\n}\nfunction Y(e) {\n var t;\n for (const a of Array.from(e.children))\n switch (a == null ? void 0 : a.tagName.toLowerCase()) {\n case \"g\":\n {\n const r = Y(a);\n if (r)\n return r;\n }\n continue;\n case \"path\": {\n const r = a.getAttribute(\"d\");\n if (!r)\n continue;\n const s = vt(r);\n return { element: a, points: wt(s), shapeType: Mt(s) };\n }\n case \"circle\": {\n const r = parseFloat(a.getAttribute(\"cx\") ?? \"0\"), s = parseFloat(a.getAttribute(\"cy\") ?? \"0\"), n = parseFloat(a.getAttribute(\"r\") ?? \"0\");\n if (!n)\n continue;\n const o = [];\n for (let i = 0; i <= 360; i += 12) {\n const l = i * Math.PI / 180;\n o.push([r + n * Math.cos(l), s + n * Math.sin(l)]);\n }\n return { element: a, points: o, shapeType: \"circle\" };\n }\n case \"ellipse\": {\n const r = parseFloat(a.getAttribute(\"cx\") ?? \"0\"), s = parseFloat(a.getAttribute(\"cy\") ?? \"0\"), n = parseFloat(a.getAttribute(\"rx\") ?? \"0\"), o = parseFloat(a.getAttribute(\"ry\") ?? \"0\");\n if (!n && !o)\n continue;\n const i = [];\n for (let l = 0; l <= 360; l += 12) {\n const u = Math.tan(l / 360 * Math.PI), h = n * (1 - u ** 2) / (1 + u ** 2), p = o * 2 * u / (1 + u ** 2);\n i.push([r + h, s + p]);\n }\n return { element: a, points: i, shapeType: \"ellipse\" };\n }\n case \"line\": {\n const r = parseFloat(a.getAttribute(\"x0\") ?? \"0\"), s = parseFloat(a.getAttribute(\"y0\") ?? \"0\"), n = parseFloat(a.getAttribute(\"x1\") ?? \"0\"), o = parseFloat(a.getAttribute(\"y1\") ?? \"0\");\n if (r === n && s === o)\n continue;\n return {\n element: a,\n points: [\n [r, s],\n [n, o]\n ],\n shapeType: \"polyline\"\n };\n }\n case \"polygon\":\n case \"polyline\": {\n const r = ((t = a.getAttribute(\"points\")) == null ? void 0 : t.split(\" \").map((n) => n.split(\",\").map(parseFloat))) ?? [];\n if (!r.length)\n continue;\n let s = \"polyline\";\n return a.tagName.toLowerCase() === \"polygon\" && (r.push(r[0]), s = \"polygon\"), { element: a, points: r, shapeType: s };\n }\n case \"rect\": {\n const r = parseFloat(a.getAttribute(\"x\") ?? \"0\"), s = parseFloat(a.getAttribute(\"y\") ?? \"0\"), n = parseFloat(a.getAttribute(\"width\") ?? \"0\"), o = parseFloat(a.getAttribute(\"height\") ?? \"0\");\n if (!n || !o)\n continue;\n return {\n element: a,\n points: [\n [r, s],\n [r + n, s],\n [r + n, s + o],\n [r, s + o],\n [r, s]\n ],\n shapeType: \"rect\"\n };\n }\n default:\n continue;\n }\n return null;\n}\nfunction wt(e) {\n const t = [];\n for (let a = 0; a < e.length; a++) {\n const r = t[t.length - 1] ?? [0, 0], s = e[a];\n switch (s[0]) {\n case \"M\":\n case \"L\":\n t.push([s[1], s[2]]);\n continue;\n case \"C\":\n t.push(\n ...bt(\n { x: r[0], y: r[1] },\n { x: s[1], y: s[2] },\n { x: s[3], y: s[4] },\n { x: s[5], y: s[6] }\n ).map((n) => [n.x, n.y]).slice(1)\n // skip first point, already part of output\n );\n continue;\n case \"Q\":\n t.push(\n ...xt(\n { x: r[0], y: r[1] },\n { x: s[1], y: s[2] },\n { x: s[3], y: s[4] }\n ).map((n) => [n.x, n.y]).slice(1)\n // skip first point, already part of output\n );\n continue;\n }\n }\n return t;\n}\nfunction gt(e) {\n const t = {};\n if (e.hasAttribute(\"fill\") ? (t.fill = e.getAttribute(\"fill\"), e.removeAttribute(\"fill\")) : e.style.fill && (t.fill = e.style.fill), t.fill) {\n const r = U.exec(t.fill);\n r && (t.fillOpacity = parseFloat(r[4]), t.fill = `rgb(${r[1]}, ${r[2]}, ${r[3]})`);\n }\n if (e.hasAttribute(\"fill-opacity\") ? (t.fillOpacity = parseFloat(e.getAttribute(\"fill-opacity\")), e.removeAttribute(\"fill-opacity\")) : e.style.fillOpacity && (t.fillOpacity = parseFloat(e.style.fillOpacity)), e.hasAttribute(\"stroke\") ? (t.stroke = e.getAttribute(\"stroke\"), e.removeAttribute(\"stroke\")) : e.style.stroke && (t.stroke = e.style.stroke), t.stroke) {\n const r = U.exec(t.stroke);\n r && (t.strokeOpacity = parseFloat(r[4]), t.stroke = `rgb(${r[1]}, ${r[2]}, ${r[3]})`);\n }\n e.hasAttribute(\"stroke-opacity\") ? (t.strokeOpacity = parseFloat(e.getAttribute(\"stroke-opacity\")), e.removeAttribute(\"stroke-opacity\")) : e.style.strokeOpacity && (t.strokeOpacity = parseFloat(e.style.strokeOpacity)), e.hasAttribute(\"stroke-width\") ? (t.strokeWidth = e.getAttribute(\"stroke-width\"), e.removeAttribute(\"stroke-width\")) : e.style.strokeWidth && (t.strokeWidth = e.style.strokeWidth), e.hasAttribute(\"stroke-dasharray\") ? (t.strokeDasharray = e.getAttribute(\"stroke-dasharray\"), e.removeAttribute(\"stroke-dasharray\")) : e.style.strokeDasharray && (t.strokeDasharray = e.style.strokeDasharray);\n let a = e;\n for (; a.tagName.toLowerCase() !== \"svg\"; )\n if (a = a.parentElement, a === null)\n throw new Error(\"Could not find root SVG element\");\n return { svg: a.outerHTML, style: Object.keys(t).length > 0 ? t : void 0 };\n}\nfunction kt(e) {\n return !!e && e.type === \"iiif:ImageApiSelector\" && e.type === \"iiif:ImageApiSelector\";\n}\nfunction M(e) {\n if (e.iiifRenderingHints) {\n const t = e.iiifRenderingHints;\n if (t.rotation) {\n const a = St(t.rotation);\n if (a)\n if (e.selectors.length)\n for (const r of e.selectors)\n r.rotation = a;\n else\n e.selectors.push({\n type: \"RotationSelector\",\n rotation: a\n });\n }\n } else\n delete e.iiifRenderingHints;\n return e;\n}\nfunction St(e) {\n let t = parseFloat(e);\n return t && e.startsWith(\"!\") && (t = 360 - t), t && (t = t % 360), t !== t ? 0 : t || 0;\n}\nfunction R(e, t = {}) {\n if (Array.isArray(e))\n return R(e[0]);\n if (typeof e == \"string\") {\n const [a, r] = e.split(\"#\");\n return r ? R({\n type: \"SpecificResource\",\n source: { id: a, type: \"Unknown\" },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n }) : {\n type: \"SpecificResource\",\n source: { id: a, type: t.typeMap && t.typeMap[a] || \"Unknown\" },\n selector: null,\n selectors: []\n };\n }\n if (e.type === \"Choice\" || e.type === \"List\" || e.type === \"Composite\" || e.type === \"Independents\")\n return R(e.items[0]);\n if (e.type === \"SpecificResource\") {\n e.source.type === \"Canvas\" && e.source.partOf && typeof e.source.partOf == \"string\" && (e.source.partOf = [\n {\n id: e.source.partOf,\n type: \"Manifest\"\n }\n ]);\n const { selector: a, selectors: r } = e.selector ? _(e.selector, t) : { selector: null, selectors: [] };\n return {\n type: \"SpecificResource\",\n source: e.source,\n selector: a,\n selectors: r\n };\n }\n if (e.id) {\n e.type === \"Canvas\" && e.partOf && typeof e.partOf == \"string\" && (e.partOf = [\n {\n id: e.partOf,\n type: \"Manifest\"\n }\n ]);\n const [a, r] = e.id.split(\"#\");\n return r ? R({\n type: \"SpecificResource\",\n source: {\n ...e,\n id: a\n },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n }) : {\n type: \"SpecificResource\",\n source: {\n ...e,\n id: a\n },\n selector: null,\n selectors: []\n };\n }\n return {\n type: \"SpecificResource\",\n source: e,\n selector: null,\n selectors: []\n };\n}\nexport {\n R as expandTarget,\n kt as isImageApiSelector,\n St as parseRotation,\n _ as parseSelector\n};\n//# sourceMappingURL=annotation-targets.mjs.map\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","var qr = Object.defineProperty;\nvar Ur = (t, e, i) => e in t ? qr(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i;\nvar D = (t, e, i) => (Ur(t, typeof e != \"symbol\" ? e + \"\" : e, i), i);\nconst Ue = {}, V = {\n get(t) {\n return t;\n },\n setMetaValue([t, e, i], r) {\n const n = V.getResourceMeta(t, e), s = n ? n[i] : void 0, a = typeof r == \"function\" ? r(s) : r;\n Ue[t] = {\n ...Ue[t] || {},\n [e]: {\n ...(Ue[t] || {})[e] || {},\n [i]: a\n }\n };\n },\n getResourceMeta: (t, e) => {\n const i = Ue[t];\n if (i)\n return e ? i[e] : i;\n }\n};\nfunction Oo(t = V) {\n return {\n addEventListener(e, i, r, n) {\n if (e)\n return t.setMetaValue(\n [e.id, \"eventManager\", i],\n (s) => {\n const a = s || [];\n for (const c of a)\n if (c.callback === r)\n return a;\n return [...a, { callback: r, scope: n }];\n }\n ), r;\n },\n removeEventListener(e, i, r) {\n e && t.setMetaValue(\n [e.id, \"eventManager\", i],\n (n) => (n || []).filter((s) => s.callback !== r)\n );\n },\n getListenersAsProps(e, i) {\n const r = typeof e == \"string\" ? { id: e } : e;\n if (!r || !r.id)\n return {};\n const n = t.getResourceMeta(r.id, \"eventManager\"), s = {};\n if (n && r)\n for (const a of Object.keys(n))\n s[a] = (c) => {\n const u = t.get(r);\n for (const { callback: p, scope: f } of n[a] || [])\n (!f || i && f.indexOf(i) !== -1) && p(c, u);\n };\n return s;\n }\n };\n}\nfunction To(t = V) {\n return {\n applyStyles(e, i, r) {\n const n = typeof e == \"string\" ? e : e.id;\n return t.setMetaValue([n, \"styles\", i], r);\n },\n getAppliedStyles(e) {\n const i = typeof e == \"string\" ? e : e.id;\n return t.getResourceMeta(i, \"styles\");\n }\n };\n}\nfunction ye(t) {\n return t.endsWith(\"info.json\") ? t : t.endsWith(\"/\") ? `${t}info.json` : `${t}/info.json`;\n}\nconst Wr = \"http://library.stanford.edu/iiif/image-api/compliance.html#level0\", ri = \"http://library.stanford.edu/iiif/image-api/compliance.html#level1\", ni = \"http://library.stanford.edu/iiif/image-api/compliance.html#level2\", zr = \"http://library.stanford.edu/iiif/image-api/conformance.html#level0\", si = \"http://library.stanford.edu/iiif/image-api/conformance.html#level1\", ai = \"http://library.stanford.edu/iiif/image-api/conformance.html#level2\", Vr = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0\", oi = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1\", ci = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\", Br = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0\", li = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1\", ui = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2\", Gr = \"http://iiif.io/api/image/1/level0.json\", Qr = \"http://iiif.io/api/image/1/profiles/level0.json\", fi = \"http://iiif.io/api/image/1/level1.json\", pi = \"http://iiif.io/api/image/1/profiles/level1.json\", hi = \"http://iiif.io/api/image/1/level2.json\", di = \"http://iiif.io/api/image/1/profiles/level2.json\", Hr = \"http://iiif.io/api/image/2/level0.json\", Yr = \"http://iiif.io/api/image/2/profiles/level0.json\", vi = \"http://iiif.io/api/image/2/level1.json\", yi = \"http://iiif.io/api/image/2/profiles/level1.json\", mi = \"http://iiif.io/api/image/2/level2.json\", gi = \"http://iiif.io/api/image/2/profiles/level2.json\", Jr = \"level0\", Ai = \"level1\", bi = \"level2\", Xr = \"http://iiif.io/api/image/2/level0\", Si = \"http://iiif.io/api/image/2/level1\", xi = \"http://iiif.io/api/image/2/level2\", wi = [xi, ni, ai, ci, ui, hi, di, mi, gi, bi], Ci = [...wi, Si, ri, si, oi, li, fi, pi, vi, yi, Ai], Kr = [Xr, Si, xi, Wr, ri, ni, zr, si, ai, Vr, oi, ci, Br, li, ui, Gr, Qr, fi, pi, hi, di, Hr, Yr, vi, yi, mi, gi, Jr, Ai, bi], Zr = { extraFormats: [\"jpg\"], extraQualities: [\"default\"], extraFeatures: [\"sizeByWhListed\"] }, en = { extraFormats: [\"jpg\"], extraQualities: [\"default\"], extraFeatures: [\"baseUriRedirect\", \"cors\", \"jsonldMediaType\", \"regionByPx\", \"regionSquare\", \"sizeByWhListed\", \"sizeByH\", \"sizeByW\", \"sizeByWh\"] }, tn = { extraFormats: [\"jpg\", \"png\"], extraQualities: [\"default\"], extraFeatures: [\"baseUriRedirect\", \"cors\", \"jsonldMediaType\", \"regionByPct\", \"regionByPx\", \"regionSquare\", \"rotationBy90s\", \"sizeByWhListed\", \"sizeByConfinedWh\", \"sizeByH\", \"sizeByPct\", \"sizeByW\", \"sizeByWh\"] };\nfunction rn(t) {\n return wi.indexOf(t) !== -1 ? tn : Ci.indexOf(t) !== -1 ? en : Zr;\n}\nfunction nn(t) {\n const e = t ? Array.isArray(t.profile) ? t.profile : [t.profile] : [], i = { extraQualities: [], extraFormats: [], extraFeatures: [] };\n for (let r of e)\n if (typeof r == \"string\" && (r = rn(r)), !!r) {\n if (r.formats)\n for (const n of r.formats)\n i.extraFormats.indexOf(n) === -1 && i.extraFormats.push(n);\n if (r.qualities)\n for (const n of r.qualities)\n i.extraQualities.indexOf(n) === -1 && i.extraQualities.push(n);\n if (r.supports)\n for (const n of r.supports)\n i.extraFeatures.indexOf(n) === -1 && i.extraFeatures.push(n);\n if (r.maxHeight && (i.maxHeight = r.maxHeight), r.maxWidth && (i.maxWidth = r.maxWidth), r.maxArea && (i.maxArea = r.maxArea), r.extraFormats)\n for (const n of r.extraFormats)\n i.extraFormats.indexOf(n) === -1 && i.extraFormats.push(n);\n if (r.extraQualities)\n for (const n of r.extraQualities)\n i.extraQualities.indexOf(n) === -1 && i.extraQualities.push(n);\n if (r.extraFeatures)\n for (const n of r.extraFeatures)\n i.extraFeatures.indexOf(n) === -1 && i.extraFeatures.push(n);\n r.maxHeight && (i.maxHeight = r.maxHeight), r.maxWidth && (i.maxWidth = r.maxWidth), r.maxArea && (i.maxArea = r.maxArea);\n }\n if (t.extraFormats)\n for (const r of t.extraFormats)\n i.extraFormats.indexOf(r) === -1 && i.extraFormats.push(r);\n if (t.extraFeatures)\n for (const r of t.extraFeatures)\n i.extraFeatures.indexOf(r) === -1 && i.extraFeatures.push(r);\n if (t.extraQualities)\n for (const r of t.extraQualities)\n i.extraQualities.indexOf(r) === -1 && i.extraQualities.push(r);\n return i;\n}\nfunction sn(t) {\n try {\n if (t === \"full\")\n return { full: !0 };\n if (t === \"square\")\n return { square: !0 };\n const e = t.startsWith(\"pct:\"), i = t.substr(e ? 4 : 0).split(\",\").map((r) => parseFloat(r));\n return { x: i[0], y: i[1], w: i[2], h: i[3], percent: e };\n } catch {\n throw new Error(\"Expected 'full', 'square' or 'x,y,w,h'. Found \" + t);\n }\n}\nfunction an(t) {\n const e = { upscaled: !1, max: !1, confined: !1 };\n if (t[0] === \"^\" && (e.upscaled = !0, t = t.slice(1)), t === \"max\" || t === \"full\")\n return e.max = !0, e.serialiseAsFull = t === \"full\", e;\n if (t[0] === \"!\" && (e.confined = !0, t = t.slice(1)), t[0] === \"p\")\n return e.percentScale = parseFloat(t.slice(4)), e;\n const i = t.split(\",\").map((r) => r.trim());\n return i.length && (i[0] !== \"\" && (e.width = parseInt(i[0], 10)), i[1] !== \"\" ? (e.height = parseInt(i[1], 10), e.version = 2) : e.version = 3), e;\n}\nfunction on(t) {\n const e = { angle: 0 };\n if (t[0] === \"!\" && (e.mirror = !0, t = t.substr(1)), e.angle = parseFloat(t) % 360, Number.isNaN(e.angle))\n throw new Error(`Invalid rotation ${t}`);\n return e;\n}\nfunction cn(t, e = \"\") {\n const i = t.match(/^(([a-zA-Z]+):\\/\\/([^/]+))?((.*)+)/);\n if (!i)\n throw new Error(`Invalid or unknown input ${t}`);\n const r = i[2], n = i[3];\n let s = i[4];\n if (s[0] === \"/\" && (s = s.substr(1)), e.length > 0) {\n if (e[0] === \"/\" && (e = e.substr(1)), e !== s.substr(0, e.length))\n throw new Error(`Path does not start with prefix (path: ${s}, prefix: ${e})`);\n s = s.substr(e.length);\n }\n return { scheme: r, server: n, path: s, prefix: e };\n}\nfunction ln(t, e = \"\") {\n const { path: i, scheme: r, server: n, prefix: s } = cn(t, e), a = i.split(\"/\").reverse(), [c, u, p, f, ...v] = a, y = v.reverse().filter(Boolean).join(\"/\");\n if (a.length === 1 || c === \"\")\n return { type: \"base\", scheme: r, server: n, prefix: s, identifier: y };\n if (c === \"info.json\") {\n const [, ...d] = a;\n return { type: \"info\", scheme: r, server: n, prefix: s, identifier: d.reverse().filter(Boolean).join(\"/\") };\n }\n const m = c.split(\".\");\n return { type: \"image\", scheme: r, server: n, prefix: s, identifier: y, originalPath: i, region: sn(f), size: an(p), rotation: on(u), quality: m[0], format: m[1] };\n}\nfunction un(t) {\n const e = ln(ye(t.id));\n if (e.type !== \"info\")\n throw new Error(\"Invalid service URL\");\n const i = nn(t);\n return { identifier: e.identifier, originalPath: \"\", server: e.server, prefix: e.prefix, scheme: e.scheme, type: \"image\", quality: i.extraQualities.indexOf(\"default\") === -1 ? i.extraQualities[0] : \"default\", region: { full: !0 }, size: { max: !0, upscaled: !1, confined: !1 }, format: \"jpg\", rotation: { angle: 0 } };\n}\nfunction fn(t, e, i) {\n const r = i.length, n = [];\n for (let s = 0; s < r; s++) {\n const a = i[s].width;\n n.push(t / a);\n }\n return n;\n}\nfunction pn(t, e, i) {\n const r = i.length, n = [];\n for (let s = 0; s < r; s++) {\n const a = i[s];\n n.push({ width: Math.floor(t / a), height: Math.floor(e / a) });\n }\n return n;\n}\nfunction O(t) {\n if (t[\"@id\"])\n return t[\"@id\"];\n if (t.id)\n return t.id;\n}\nfunction Ge(t) {\n if (!t || !t.profile || !O(t))\n return !1;\n const e = Array.isArray(t.profile) ? t.profile : [t.profile];\n for (const i of e)\n if (typeof i == \"string\" && Kr.indexOf(i) !== -1)\n return !0;\n return !1;\n}\nfunction hn(t) {\n if (!Ge(t))\n return !1;\n const e = Array.isArray(t.profile) ? t.profile : [t.profile];\n for (const i of e)\n if (typeof i == \"string\") {\n if (Ci.indexOf(i) !== -1)\n return !0;\n } else {\n const r = [...i.supports || [], ...i.extraFeatures || []];\n if (r.indexOf(\"regionByPx\") !== -1 && (r.indexOf(\"sizeByW\") !== -1 || r.indexOf(\"sizeByWh\") !== -1))\n return !0;\n }\n return !1;\n}\nfunction Ve(t, e) {\n if (e && e.profile) {\n const i = e.profile;\n if (i) {\n const r = Array.isArray(i) ? i : [i];\n return r.includes(`level${t}`) || r.includes(`http://iiif.io/api/image/2/level${t}.json`) || r.includes(`http://iiif.io/api/image/1/level${t}.json`) || r.includes(`http://iiif.io/api/image/1/profiles/level${t}.json`);\n }\n }\n return !1;\n}\nfunction ot(t) {\n return Ge(t) ? Ve(0, t) ? 0 : Ve(1, t) ? 1 : Ve(2, t) ? 2 : null : null;\n}\nfunction Ri(t) {\n return (t[\"@context\"] ? Array.isArray(t[\"@context\"]) ? t[\"@context\"] : [t[\"@context\"]] : []).indexOf(\"http://iiif.io/api/image/3/context.json\") !== -1;\n}\nfunction dn(t) {\n if (!hn(t))\n return [];\n const e = [], i = Array.isArray(t.profile) ? t.profile : [t.profile], r = i.length;\n for (let n = 0; n < r; n++) {\n const s = i[n];\n if (typeof s != \"string\" && (s.maxHeight || s.maxWidth))\n return [{ id: O(t), type: \"variable\", minWidth: 0, minHeight: 0, maxHeight: s.maxHeight || s.maxWidth, maxWidth: s.maxWidth || s.maxHeight, level: ot(t), version: t[\"@context\"] === \"http://iiif.io/api/image/3/context.json\" ? 3 : 2 }];\n }\n if (t.tiles) {\n const n = t.tiles.length;\n for (let s = 0; s < n; s++) {\n const a = t.tiles[s];\n (a.height || a.width) && e.push({ id: O(t), type: \"variable\", minHeight: 0, minWidth: 0, maxHeight: a.height || a.width, maxWidth: a.width, level: ot(t), version: Ri(t) ? 3 : 2 });\n }\n }\n return e;\n}\nfunction Lt(t) {\n const e = /^.*\\/(full)\\/(((\\d+),(\\d+)?)|max)\\/(\\d+)\\/default\\.(jpg|png|jpeg)$/, i = t.match(e);\n if (i) {\n const r = i[1], n = parseInt(i[4], 10), s = parseInt(i[5], 10), a = i[7];\n if ((r === \"max\" || r === \"full\") && n && s && a)\n return { type: \"fixed\", id: t, height: s, width: n };\n }\n return { type: \"unknown\", id: t };\n}\nfunction vn(t) {\n if (t[\"@type\"])\n return t[\"@type\"];\n if (t.type)\n return t.type;\n}\nfunction ct(t) {\n if (typeof t == \"string\")\n return Lt(t);\n const e = vn(t);\n if (e !== \"Image\" && e !== \"sc:Image\")\n return null;\n const i = t, r = O(i);\n return r ? r && i.width && i.height ? { id: r, type: \"fixed\", width: i.width, height: i.height, unsafe: !0 } : Lt(r) : null;\n}\nfunction yn(t) {\n return Ge(t) ? (t && t.sizes ? t.sizes : []).map((e) => ({ id: O(t), type: \"fixed-service\", height: e.height, width: e.width, level: ot(t), version: Ri(t) ? 3 : 2 })) : [];\n}\nfunction Pt(t) {\n const e = [], i = t.length;\n for (let r = 0; r < i; r++) {\n const n = yn(t[r]);\n n.length && e.push(...n);\n const s = dn(t[r]);\n s.length && e.push(...s);\n }\n return e;\n}\nfunction Ii(t) {\n const e = t.service ? Array.isArray(t.service) ? t.service : [t.service] : [], i = e.length, r = [];\n for (let n = 0; n < i; n++)\n Ge(e[n]) && r.push(e[n]);\n return r;\n}\nfunction mn(t, e = !0, i) {\n const r = [], n = ct(t);\n if (n === null)\n return r;\n const s = t;\n if (r.push(n), e && s.width && s.height) {\n const a = [], c = Ii(s);\n for (const u of c) {\n const p = { id: O(u), width: s.width, height: s.height };\n if (i.canLoadSync(p)) {\n const f = i.loadServiceSync(p);\n f && (f.height || (f.height = s.height), f.width || (f.width = s.width), a.push(...Pt([f])));\n }\n }\n if (a.length)\n return r.push(...a), r;\n }\n return s.service && r.push(...Pt(s.service)), r;\n}\nfunction gn({ x: t = 0, y: e = 0, w: i, h: r, full: n, square: s, percent: a }) {\n if (n)\n return \"full\";\n if (s)\n return \"square\";\n if (typeof i > \"u\" || typeof r > \"u\")\n throw new Error(\"RegionParameter: invalid region\");\n const c = `${t},${e},${i},${r}`;\n return a ? `pct:${c}` : c;\n}\nfunction An({ max: t, percentScale: e, upscaled: i, confined: r, width: n, height: s, serialiseAsFull: a, version: c }) {\n const u = [];\n return i && u.push(\"^\"), t ? (u.push(a ? \"full\" : \"max\"), u.join(\"\")) : (r && u.push(\"!\"), e && u.push(`pct:${e}`), n && u.push(`${n}`), u.push(\",\"), s && c === 3 && u.push(`${s}`), u.join(\"\"));\n}\nfunction bn(t) {\n return `${t.mirror ? \"!\" : \"\"}${(t.angle || 0) % 360}`;\n}\nvar Sn = Object.defineProperty, xn = Object.defineProperties, wn = Object.getOwnPropertyDescriptors, jt = Object.getOwnPropertySymbols, Cn = Object.prototype.hasOwnProperty, Rn = Object.prototype.propertyIsEnumerable, Dt = (t, e, i) => e in t ? Sn(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i, le = (t, e) => {\n for (var i in e || (e = {}))\n Cn.call(e, i) && Dt(t, i, e[i]);\n if (jt)\n for (var i of jt(e))\n Rn.call(e, i) && Dt(t, i, e[i]);\n return t;\n}, ue = (t, e) => xn(t, wn(e));\nfunction In(t, e) {\n const i = t.prefix.startsWith(\"/\") ? t.prefix.substr(1) : t.prefix, r = `${t.scheme}://${t.server}/${i ? `${i}/` : \"\"}${t.identifier}`;\n if (t.type === \"base\")\n return r;\n if (t.type === \"info\")\n return `${r}/info.json`;\n let { size: n } = t;\n const { region: s, rotation: a, format: c, quality: u } = t;\n if (e) {\n const p = e[\"@context\"] ? Array.isArray(e[\"@context\"]) ? e[\"@context\"] : [e[\"@context\"]] : [], f = p.indexOf(\"http://iiif.io/api/image/2/context.json\") !== -1, v = p.indexOf(\"http://iiif.io/api/image/3/context.json\") !== -1;\n if ((n.width === e.width && !n.height || n.height === e.height && !n.width || n.width === e.width && n.height === e.height) && (n = ue(le({}, n), { max: !0 })), f && (n.max && !n.serialiseAsFull && (n = ue(le({}, n), { serialiseAsFull: !0 })), !n.max && n.width && n.height && (n = ue(le({}, n), { height: void 0 })), n = ue(le({}, n), { version: 2 })), v) {\n if (n.max && n.serialiseAsFull && (n = ue(le({}, n), { serialiseAsFull: !1 })), n.width && !n.height && e.width && e.height) {\n const y = e.height / e.width;\n n = ue(le({}, n), { height: Math.ceil(n.width * y) });\n }\n n = ue(le({}, n), { version: 3 });\n }\n }\n return [r, gn(s), An(n), bn(a), `${u}.${c}`].filter(Boolean).join(\"/\");\n}\nfunction Ke(t, e, i) {\n const r = un({ \"@context\": t.version === 3 ? \"http://iiif.io/api/image/3/context.json\" : \"http://iiif.io/api/image/2/context.json\", id: ye(O(t)), profile: t.level === null || typeof t.level > \"u\" ? \"level0\" : `level${t.level}}`, type: t.version === 3 ? \"ImageService3\" : \"ImageService2\" });\n if (r.type !== \"image\")\n throw new Error(\"Invalid service\");\n return r.size.max = !1, r.size.width = e, r.size.height = i, { id: In(r), type: \"fixed\", width: e, height: i || t.height / (t.width || 1) * e, unsafe: t.width > e };\n}\nfunction Se(t) {\n const e = t.replace(/(https?:\\/\\/)?(www.)?/i, \"\");\n return e.indexOf(\"/\") !== -1 ? e.split(\"/\")[0] : e;\n}\nfunction En(t, e, i) {\n const r = t.width ? t.width : t.maxWidth;\n return i.height <= t.maxHeight && i.width <= t.maxWidth && i.height >= t.minHeight && i.width >= t.minWidth && (!e || Math.abs(i.width - r) < Math.abs(e.width - r));\n}\nfunction On(t, e) {\n const i = [], r = Object.assign({ unsafeImageService: !1, atAnyCost: !0, fallback: !0, minHeight: 64, minWidth: 64, maxHeight: 1 / 0, maxWidth: 1 / 0, returnAllOptions: !1, preferFixedSize: !1, allowUnsafe: !1, explain: !1, height: 0, width: 0 }, t), n = (f, v = 0) => r.explain ? i.push(new Array(v).fill(0).map((y) => \" \").join(\"\") + f().trim()) : void 0, s = [], a = [];\n let c = null;\n n(() => `Using configuration: ${JSON.stringify(r, null, 2)}`);\n const u = (f, v) => {\n if (n(() => \"Swapping choice\", 3), En(r, v, f)) {\n if (r.preferFixedSize && f.unsafe) {\n n(() => `We found an image that was marked as unsafe, but it was the best size. (${f.id})`, 4), a.push(f);\n return;\n }\n r.returnAllOptions && v && a.push(v), n(() => `We found a new image that was the best size. (${f.id})`, 4), c = f;\n } else\n r.returnAllOptions && a.push(f);\n };\n n(() => `The input shows we have ${e.length} list(s) of candidates to choose from.`);\n const p = e.length;\n for (let f = 0; f < p; f++) {\n const v = e[f]();\n n(() => `Candidate group ${f}: ${JSON.stringify(v, null, 2)}`, 1);\n const y = v.length;\n n(() => `Checking candidate list number ${f} and found ${y} potential ways of creating image(s)`, 1);\n for (let m = 0; m < y; m++) {\n const d = v[m];\n if (n(() => `-> Checking candidate ${m}`, 1), d.type === \"unknown\" && r.atAnyCost && (n(() => `We've found an unknown image type, adding this to the \"last resort\" list`, 2), s.push(d)), d.type === \"fixed\" && (d.unsafe ? (n(() => `We've found an unsafe fixed image type, adding this to the \"last resort\" list`, 2), s.push(d)) : (n(() => \"We've found a fixed size image, checking if it matches the request\", 2), u(d, c))), d.type === \"fixed-service\")\n if (r.unsafeImageService) {\n n(() => \"Checking for an image from the tile source, without calculating the right height and width (unsafeImageService)\", 2);\n const A = Ke(d, r.width, r.height);\n u(A, c);\n } else {\n n(() => \"Checking for an image from the tile source 3\", 2);\n const A = Ke(d, d.width, d.height);\n u(A, c);\n }\n if (d.type === \"variable\" && d.maxWidth) {\n const A = Ke({ id: d.id, type: \"fixed-service\", width: d.maxWidth, height: d.maxWidth, level: d.level, version: d.version }, d.maxWidth);\n u(A, c);\n }\n }\n if (c && !r.returnAllOptions) {\n if (c.unsafe || r.allowUnsafe)\n continue;\n n(() => `We found a match in choice list number ${f}, no searching any more`);\n break;\n }\n }\n return r.atAnyCost && a.length === 0 ? (n(() => c ? `We found an image! ${c.id} of type ${c.type}` : 'We found no images, but \"atAnyCost\" is set, so returning that'), { best: c || s[0], fallback: s.slice(1), log: i }) : r.returnAllOptions ? (n(() => \"Returning all options that we have found\"), { best: r.atAnyCost ? c || a[0] || s[0] : c || a[0], fallback: [...a, ...s], log: i }) : (n(() => \"Returning the best image that we found, and a fallback\"), { best: c || a[0] || null, fallback: c ? a : a.slice(1), log: i });\n}\nvar Tn = Object.defineProperty, _n = Object.defineProperties, Mn = Object.getOwnPropertyDescriptors, Nt = Object.getOwnPropertySymbols, kn = Object.prototype.hasOwnProperty, Fn = Object.prototype.propertyIsEnumerable, $t = (t, e, i) => e in t ? Tn(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i, Ln = (t, e) => {\n for (var i in e || (e = {}))\n kn.call(e, i) && $t(t, i, e[i]);\n if (Nt)\n for (var i of Nt(e))\n Fn.call(e, i) && $t(t, i, e[i]);\n return t;\n}, Pn = (t, e) => _n(t, Mn(e));\nfunction jn(t, e, i) {\n const r = t > e ? t : e, n = i.length, s = [];\n for (let a = 0; a < n; a++) {\n const c = i[a];\n let u = c.scaleFactors[0], p = r / u;\n const f = [u];\n for (; p >= c.width; )\n u = u * 2, f.push(u), p = p / 2;\n s.push(Pn(Ln({}, c), { scaleFactors: f }));\n }\n return s;\n}\nfunction Dn(t, e) {\n if (t.length !== e.length)\n return !1;\n if (t.length === 0 && e.length === 0)\n return !0;\n const i = t.length;\n let r = !0;\n for (let s = 0; s < i; s++) {\n const a = t[s], c = e[s];\n if (a.width !== c.width || a.height !== c.height) {\n r = !1;\n break;\n }\n }\n if (r)\n return !0;\n let n = 0;\n for (let s = 0; s < i; s++)\n for (let a = 0; a < i; a++)\n if (t[s].width === e[a].width && t[s].height === e[a].height) {\n n++;\n break;\n }\n return n === i;\n}\nfunction qt(t) {\n return Ve(0, t);\n}\nvar fe = (t, e, i) => new Promise((r, n) => {\n var s = (u) => {\n try {\n c(i.next(u));\n } catch (p) {\n n(p);\n }\n }, a = (u) => {\n try {\n c(i.throw(u));\n } catch (p) {\n n(p);\n }\n }, c = (u) => u.done ? r(u.value) : Promise.resolve(u.value).then(s, a);\n c((i = i.apply(t, e)).next());\n});\nclass Nn {\n constructor() {\n this.config = { verificationsRequired: 1, approximateServices: !0, enableFetching: !0, disableThrottling: !1 }, this.fetchingCount = 0, this.imageServices = {}, this.knownImageServers = {};\n }\n setConfig(e) {\n Object.assign(this.config, e);\n }\n sample(e, i, r = !0) {\n const n = Se(O(e)), s = ye(O(e)), a = this.knownImageServers[n];\n return this.imageServices[s] = Object.assign(e, { real: !0 }), !a && e.tiles && !qt(e) ? (this.knownImageServers[n] = { verifications: 0, malformed: !1, root: n, preLoaded: r, sampledId: O(e), verified: !1, server: null, result: { context: e[\"@context\"] || [], sampledProfile: e.profile, resourceServiceRatio: i && e.height ? i.height / e.height : 1, sampledSizes: e.sizes || [], sizeRatios: fn(e.width, e.height, e.sizes || []), sampledTiles: e.tiles || [] } }, !0) : this.verify(e);\n }\n preLoad(e, i = !0) {\n this.knownImageServers[e.root] = e, i && (this.knownImageServers[e.root].malformed = !1, this.knownImageServers[e.root].verifications = this.config.verificationsRequired);\n }\n predict(e, i = !1, r = !1) {\n const n = e == null ? void 0 : e.source, s = Se(O(e)), a = this.knownImageServers[s];\n if (!a || !a.result || !(n != null && n.height || e.height) || !(n != null && n.width || e.width) || !r && (a.malformed || a.verifications < this.config.verificationsRequired) || qt(e.source))\n return null;\n const c = ye(O(e));\n return this.imageServices[c] || (this.imageServices[c] = { \"@context\": a.result.context, \"@id\": O(e), id: O(e), protocol: \"http://iiif.io/api/image\", tiles: (n == null ? void 0 : n.tiles) || jn(e.width, e.height, a.result.sampledTiles), sizes: (n == null ? void 0 : n.sizes) || pn(Math.round(e.width / a.result.resourceServiceRatio), Math.round(e.height / a.result.resourceServiceRatio), a.result.sizeRatios), profile: (n == null ? void 0 : n.profile) || a.result.sampledProfile, height: (n == null ? void 0 : n.height) || e.height, width: (n == null ? void 0 : n.width) || e.width, real: !1 }), this.imageServices[c];\n }\n getThumbnailFromResource(e, i) {\n return fe(this, arguments, function* (r, n, s = !0, a = []) {\n const c = r ? yield this.getImageCandidates(r, s) : [];\n return On(n, [() => a, () => c]);\n });\n }\n getImageCandidates(e, i = !0) {\n return fe(this, null, function* () {\n const r = e;\n if (i && r.height && r.width) {\n const n = Ii(r);\n for (const s of n) {\n const a = { id: O(s), width: s.width ? s.width : r.width, height: s.height ? s.height : r.height, source: s };\n yield this.loadService(a);\n }\n }\n return mn(e, i, this);\n });\n }\n verify(e) {\n return fe(this, null, function* () {\n const i = this.predict(e, !1, !0), r = yield this.fetchService(O(e));\n if (!i)\n return !1;\n const n = i.height === r.height && i.width === r.width && i[\"@context\"] === r[\"@context\"] && Dn(i.sizes || [], r.sizes || []);\n if (n) {\n const s = Se(O(e));\n this.knownImageServers[s].verifications += 1, this.knownImageServers[s].verifications >= this.config.verificationsRequired && (this.knownImageServers[s].verified = !0);\n }\n return n;\n });\n }\n canLoadSync(e) {\n const i = typeof e == \"string\" ? e : O(e), r = ye(i);\n if (this.imageServices[r])\n return !0;\n const n = this.knownImageServers[Se(i)];\n return n && !n.malformed && n.verifications >= this.config.verificationsRequired;\n }\n markAsMalformed(e) {\n return fe(this, null, function* () {\n return this.knownImageServers[Se(O(e))].malformed = !0, this.loadService(e, !0);\n });\n }\n fetchService(e, i = !1) {\n return fe(this, null, function* () {\n const r = ye(e);\n if (this.imageServices[r] && (!i || this.imageServices[r].real))\n return this.imageServices[r];\n if (!this.config.enableFetching)\n throw new Error(\"Fetching is not enabled\");\n const n = yield this.fetch(r).then((s) => s.json());\n return !n.id && n[\"@id\"] && (n.id = n[\"@id\"]), n.id !== e && (n.id = e, n[\"@id\"] && (n[\"@id\"] = e)), this.imageServices[r] = Object.assign(n, { real: !0 }), this.imageServices[r];\n });\n }\n fetch(e, i) {\n return fe(this, null, function* () {\n return fetch(e, i);\n });\n }\n loadService(e, i = !1) {\n return fe(this, null, function* () {\n if (!this.config.disableThrottling) {\n let s = !0;\n for (; s; )\n if (this.fetchingCount >= this.config.verificationsRequired)\n yield new Promise((a) => setTimeout(a, 500));\n else {\n s = !1;\n break;\n }\n }\n const r = this.knownImageServers[Se(O(e))];\n if (r && !r.malformed && !i) {\n yield r.result;\n const s = this.loadServiceSync(e);\n if (s)\n return s;\n }\n this.fetchingCount++;\n const n = yield this.fetchService(O(e), i);\n return this.fetchingCount--, n.real && this.sample(n, e), n;\n });\n }\n loadServiceSync(e) {\n const i = ye(O(e));\n return this.imageServices[i] ? this.imageServices[i] : this.predict(e);\n }\n}\nconst $n = new Nn(), Ut = /* @__PURE__ */ new Map();\nfunction _o(t, {\n vault: e = V,\n dereference: i = !1,\n ...r\n} = {}) {\n let n = Ut.get(e);\n return n || (n = qn(e), Ut.set(e, n)), n.getBestThumbnailAtSize(t, r, i);\n}\nfunction qn(t = V, e = {}) {\n const i = e.imageServiceLoader || $n;\n async function r(n, s, a = !1, c = [], u) {\n const p = () => i.getThumbnailFromResource(void 0, s, a, c);\n if (!n)\n return await i.getThumbnailFromResource(void 0, s, a, c);\n if (typeof n == \"string\") {\n const y = ct(n);\n return y && c.push(y), await i.getThumbnailFromResource(void 0, s, a, c);\n }\n const f = t.get(n, { skipSelfReturn: !1 });\n if (typeof f == \"string\")\n return { best: ct(f), fallback: [], log: [] };\n if (!f)\n return await p();\n switch (await (async (y) => {\n if (y && y.thumbnail && y.thumbnail.length) {\n const m = t.get(y.thumbnail[0]), d = await i.getImageCandidates(m, a);\n d && d.length && c.push(...d);\n }\n })(f), f.type) {\n case \"Annotation\": {\n const y = Array.isArray(f.body) ? f.body : [f.body], m = t.get(y[0]);\n return u && !m.width && (m.width = u.width, m.height = u.height), await i.getThumbnailFromResource(m, s, a, c);\n }\n case \"Canvas\": {\n const y = f;\n return r(y.items[0], s, a, c, {\n width: y.width,\n height: y.height\n });\n }\n case \"AnnotationPage\":\n return r(f.items[0], s, a, c, u);\n case \"Choice\": {\n const y = f;\n return !y.items || y.items[0] ? await p() : r(y.items[0], s, a, c, u);\n }\n case \"Collection\": {\n const m = f.items[0];\n return m ? r(m, s, a, c, u) : await p();\n }\n case \"Manifest\": {\n const m = f.items[0];\n return m ? r(m, s, a, c, u) : await p();\n }\n case \"SpecificResource\":\n case \"Image\":\n case \"Dataset\":\n case \"Sound\":\n case \"Text\":\n case \"TextualBody\":\n case \"Video\":\n return u && !f.width && (f.width = u.width, f.height = u.height), i.getThumbnailFromResource(f, s, a, c);\n }\n return await p();\n }\n return {\n getBestThumbnailAtSize: r\n };\n}\nfunction Un(t, e, i = [], r = !1, n = []) {\n if (n.length && (e = e.filter((s) => n.indexOf(s) === -1)), !(!e || e.length === 0)) {\n if (e.length === 1)\n return e[0];\n if (!t && e.indexOf(\"none\") !== -1)\n return \"none\";\n {\n if (e.indexOf(t) !== -1)\n return t;\n const s = t.indexOf(\"-\") !== -1 ? t.slice(0, t.indexOf(\"-\")) : null;\n if (s && e.indexOf(s) !== -1)\n return s;\n }\n for (const s of i)\n if (e.indexOf(s) !== -1)\n return s;\n if (!r && t) {\n const a = e.map((c) => c.indexOf(\"-\") !== -1 ? c.slice(0, c.indexOf(\"-\")) : null).indexOf(t);\n if (a !== -1)\n return e[a];\n for (const c of i) {\n const u = c.indexOf(\"-\") !== -1 ? c.slice(0, c.indexOf(\"-\")) : null, p = u ? e.indexOf(u) : -1;\n if (p !== -1)\n return e[p];\n }\n }\n return e.indexOf(\"none\") !== -1 ? \"none\" : e.indexOf(\"@none\") !== -1 ? \"@none\" : e[0];\n }\n}\nfunction Ei(t, e, i = {}) {\n const {\n strictFallback: r = !1,\n defaultText: n = \"\",\n separator: s = `\n`,\n fallbackLanguages: a = [],\n closest: c,\n skipLanguages: u\n } = i, p = Object.keys(t || {}), f = c ? e : Un(e, p, a, r, u);\n if (!t)\n return n;\n if (typeof t == \"string\")\n return t;\n const v = f ? t[f] : void 0;\n if (v && f) {\n if (typeof v == \"string\")\n return v;\n if (v.length === 1 && v[0] === \"\") {\n const y = i.skipLanguages || [];\n return Ei(t, e, {\n ...i,\n skipLanguages: [...y, f]\n });\n }\n return v.join(s);\n }\n return \"\";\n}\nfunction Mo(t, e = {}) {\n return Ei(\n t,\n e.language || (typeof navigator < \"u\" ? navigator.language : \"en\"),\n e\n );\n}\nvar Wn = function() {\n function t(e, i) {\n var r = [], n = !0, s = !1, a = void 0;\n try {\n for (var c = e[Symbol.iterator](), u; !(n = (u = c.next()).done) && (r.push(u.value), !(i && r.length === i)); n = !0)\n ;\n } catch (p) {\n s = !0, a = p;\n } finally {\n try {\n !n && c.return && c.return();\n } finally {\n if (s)\n throw a;\n }\n }\n return r;\n }\n return function(e, i) {\n if (Array.isArray(e))\n return e;\n if (Symbol.iterator in Object(e))\n return t(e, i);\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n };\n}(), ke = Math.PI * 2, Ze = function(e, i, r, n, s, a, c) {\n var u = e.x, p = e.y;\n u *= i, p *= r;\n var f = n * u - s * p, v = s * u + n * p;\n return {\n x: f + a,\n y: v + c\n };\n}, zn = function(e, i) {\n var r = i === 1.5707963267948966 ? 0.551915024494 : i === -1.5707963267948966 ? -0.551915024494 : 1.3333333333333333 * Math.tan(i / 4), n = Math.cos(e), s = Math.sin(e), a = Math.cos(e + i), c = Math.sin(e + i);\n return [{\n x: n - s * r,\n y: s + n * r\n }, {\n x: a + c * r,\n y: c - a * r\n }, {\n x: a,\n y: c\n }];\n}, Wt = function(e, i, r, n) {\n var s = e * n - i * r < 0 ? -1 : 1, a = e * r + i * n;\n return a > 1 && (a = 1), a < -1 && (a = -1), s * Math.acos(a);\n}, Vn = function(e, i, r, n, s, a, c, u, p, f, v, y) {\n var m = Math.pow(s, 2), d = Math.pow(a, 2), A = Math.pow(v, 2), x = Math.pow(y, 2), S = m * d - m * x - d * A;\n S < 0 && (S = 0), S /= m * x + d * A, S = Math.sqrt(S) * (c === u ? -1 : 1);\n var C = S * s / a * y, E = S * -a / s * v, P = f * C - p * E + (e + r) / 2, j = p * C + f * E + (i + n) / 2, k = (v - C) / s, $ = (y - E) / a, B = (-v - C) / s, G = (-y - E) / a, oe = Wt(1, 0, k, $), W = Wt(k, $, B, G);\n return u === 0 && W > 0 && (W -= ke), u === 1 && W < 0 && (W += ke), [P, j, oe, W];\n}, Bn = function(e) {\n var i = e.px, r = e.py, n = e.cx, s = e.cy, a = e.rx, c = e.ry, u = e.xAxisRotation, p = u === void 0 ? 0 : u, f = e.largeArcFlag, v = f === void 0 ? 0 : f, y = e.sweepFlag, m = y === void 0 ? 0 : y, d = [];\n if (a === 0 || c === 0)\n return [];\n var A = Math.sin(p * ke / 360), x = Math.cos(p * ke / 360), S = x * (i - n) / 2 + A * (r - s) / 2, C = -A * (i - n) / 2 + x * (r - s) / 2;\n if (S === 0 && C === 0)\n return [];\n a = Math.abs(a), c = Math.abs(c);\n var E = Math.pow(S, 2) / Math.pow(a, 2) + Math.pow(C, 2) / Math.pow(c, 2);\n E > 1 && (a *= Math.sqrt(E), c *= Math.sqrt(E));\n var P = Vn(i, r, n, s, a, c, v, m, A, x, S, C), j = Wn(P, 4), k = j[0], $ = j[1], B = j[2], G = j[3], oe = Math.abs(G) / (ke / 4);\n Math.abs(1 - oe) < 1e-7 && (oe = 1);\n var W = Math.max(Math.ceil(oe), 1);\n G /= W;\n for (var Ee = 0; Ee < W; Ee++)\n d.push(zn(B, G)), B += G;\n return d.map(function(ce) {\n var N = Ze(ce[0], a, c, x, A, k, $), Qe = N.x, He = N.y, De = Ze(ce[1], a, c, x, A, k, $), Q = De.x, Ne = De.y, Oe = Ze(ce[2], a, c, x, A, k, $), Ye = Oe.x, Te = Oe.y;\n return { x1: Qe, y1: He, x2: Q, y2: Ne, x: Ye, y: Te };\n });\n}, Gn = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nfunction Oi(t) {\n return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, \"default\") ? t.default : t;\n}\nvar Qn = Yn, et = { a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0 }, Hn = /([astvzqmhlc])([^astvzqmhlc]*)/ig;\nfunction Yn(t) {\n var e = [];\n return t.replace(Hn, function(i, r, n) {\n var s = r.toLowerCase();\n for (n = Xn(n), s == \"m\" && n.length > 2 && (e.push([r].concat(n.splice(0, 2))), s = \"l\", r = r == \"m\" ? \"l\" : \"L\"); ; ) {\n if (n.length == et[s])\n return n.unshift(r), e.push(n);\n if (n.length < et[s])\n throw new Error(\"malformed path data\");\n e.push([r].concat(n.splice(0, et[s])));\n }\n }), e;\n}\nvar Jn = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig;\nfunction Xn(t) {\n var e = t.match(Jn);\n return e ? e.map(Number) : [];\n}\nconst Kn = /* @__PURE__ */ Oi(Qn);\nvar Zn = es;\nfunction es(t) {\n var e = 0, i = 0, r = 0, n = 0;\n return t.map(function(s) {\n s = s.slice();\n var a = s[0], c = a.toUpperCase();\n if (a != c)\n switch (s[0] = c, a) {\n case \"a\":\n s[6] += r, s[7] += n;\n break;\n case \"v\":\n s[1] += n;\n break;\n case \"h\":\n s[1] += r;\n break;\n default:\n for (var u = 1; u < s.length; )\n s[u++] += r, s[u++] += n;\n }\n switch (c) {\n case \"Z\":\n r = e, n = i;\n break;\n case \"H\":\n r = s[1];\n break;\n case \"V\":\n n = s[1];\n break;\n case \"M\":\n r = e = s[1], n = i = s[2];\n break;\n default:\n r = s[s.length - 2], n = s[s.length - 1];\n }\n return s;\n });\n}\nconst ts = /* @__PURE__ */ Oi(Zn);\nfunction is(t) {\n const e = Kn(t), i = ts(e);\n let r, n = 0, s = 0, a = 0, c = 0, u, p, f = 0, v = 0;\n const y = [];\n for (let m = 0; m < i.length; m++) {\n let d = i[m];\n const A = d[0];\n switch (A) {\n case \"M\":\n n = d[1], s = d[2];\n break;\n case \"H\":\n d = [\"L\", d[1], s];\n break;\n case \"V\":\n d = [\"L\", n, d[1]];\n break;\n case \"S\":\n {\n let x = f, S = v;\n (r === \"C\" || r == \"S\") && (x += x - a, S += S - c), d = [\"C\", x, S, d[1], d[2], d[3], d[4]];\n }\n break;\n case \"T\":\n r === \"Q\" || r == \"T\" ? (u = f * 2 - u, p = v * 2 - p) : (u = f, p = v), d = [\"Q\", u, p, d[1], d[2]];\n break;\n case \"Q\":\n u = d[1], p = d[2];\n break;\n case \"A\":\n {\n const x = Bn({\n px: f,\n py: v,\n cx: d[6],\n cy: d[7],\n rx: d[1],\n ry: d[2],\n xAxisRotation: d[3],\n largeArcFlag: d[4],\n sweepFlag: d[5]\n });\n if (!x.length)\n continue;\n for (const [S, C] of x.entries())\n d = [\"C\", C.x1, C.y1, C.x2, C.y2, C.x, C.y], S < x.length - 1 && y.push(d);\n d = d;\n }\n break;\n case \"Z\":\n d = [\"L\", n, s];\n break;\n }\n r = A, f = d[d.length - 2], v = d[d.length - 1], [\"C\", \"Q\", \"A\"].indexOf(A) > -1 ? (a = d[d.length - 4], c = d[d.length - 3]) : (a = f, c = v), y.push(d);\n }\n return y;\n}\n/** Code to \"flatten\" quadratic and cubic Bézier curves to polylines.\n *\n * All code in this module is based on JavaScript code by Raph Levien, published on his blog at\n * https://raphlinus.github.io/.\n * I merely changed the structure a bit, removed some unneeded parts and added some comments and type hints.\n *\n * Flattening of quadratic Bézier curves:\n * - Article: https://raphlinus.github.io/graphics/curves/2019/12/23/flatten-quadbez.html\n * - Code: https://github.com/raphlinus/raphlinus.github.io/blob/master/_posts/2019-12-23-flatten-quadbez.md?plain=1#L73-L212\n *\n * Flattening of cubic Bézier curves: https://levien.com/tmp/flatten.html\n *\n * Note that the code in this module has a different license than the rest of the package,\n * due to the inclusion of Apache-licensed third party code.\n *\n * @license\n * Copyright 2022 Johannes Baiter <johannes.baiter@gmail.com>\n * Copyright 2019, 2022 Raph Levien <raph.levien@gmail.com>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction rs(t, e, i, r = 1) {\n return new Ti(t, e, i).subdivide(r);\n}\nfunction ns(t, e, i, r, n = 1) {\n return new xt(\n new Float64Array([t.x, t.y, e.x, e.y, i.x, i.y, r.x, r.y])\n ).subdivide(n);\n}\nfunction ss(t) {\n return t.x * t.x + t.y * t.y;\n}\nfunction Fe(t) {\n return t / (1 - 0.67 + Math.pow(Math.pow(0.67, 4) + 0.25 * t * t, 0.25));\n}\nfunction Re(t) {\n return t * (1 - 0.39 + Math.sqrt(0.39 * 0.39 + 0.25 * t * t));\n}\nclass Ti {\n constructor(e, i, r) {\n D(this, \"start\");\n D(this, \"control\");\n D(this, \"end\");\n this.start = e, this.control = i, this.end = r;\n }\n eval(e) {\n const i = 1 - e;\n return {\n x: this.start.x * i * i + 2 * this.control.x * i * e + this.end.x * e * e,\n y: this.start.y * i * i + 2 * this.control.y * i * e + this.end.y * e * e\n };\n }\n mapToBasic() {\n const { x: e, y: i } = this.start, { x: r, y: n } = this.control, { x: s, y: a } = this.end, c = 2 * r - e - s, u = 2 * n - i - a, p = (r - e) * c + (n - i) * u, f = (s - r) * c + (a - n) * u, v = (s - e) * u - (a - i) * c, y = p / v, m = f / v, d = Math.abs(v) / (Math.hypot(c, u) * Math.abs(m - y));\n return { x0: e, x2: s, scale: d, cross: v };\n }\n subdivide(e) {\n const i = this.mapToBasic(), r = Fe(i.x0), n = Fe(i.x2), s = 0.5 * Math.abs(n - r) * Math.sqrt(i.scale / e), a = Math.ceil(s), c = Re(r), u = Re(n), p = [0];\n for (let f = 1; f < a; f++) {\n const y = (Re(r + (n - r) * f / a) - c) / (u - c);\n p.push(y);\n }\n return p.push(1), p.map((f) => this.eval(f));\n }\n}\nclass xt {\n /// Argument is array of coordinate values [x0, y0, x1, y1, x2, y2, x3, y3].\n constructor(e) {\n D(this, \"c\");\n this.c = e;\n }\n weightsum(e, i, r, n) {\n const s = e * this.c[0] + i * this.c[2] + r * this.c[4] + n * this.c[6], a = e * this.c[1] + i * this.c[3] + r * this.c[5] + n * this.c[7];\n return { x: s, y: a };\n }\n eval(e) {\n const i = 1 - e, r = i * i * i, n = 3 * i * i * e, s = 3 * i * e * e, a = e * e * e;\n return this.weightsum(r, n, s, a);\n }\n deriv(e) {\n const i = 1 - e, r = -3 * i * i, n = 3 * e * e, s = -6 * e * i - r, a = 6 * e * i - n;\n return this.weightsum(r, s, a, n);\n }\n // quadratic bezier with matching endpoints and minimum max vector error\n midpoint_quadbez() {\n const e = this.weightsum(-0.25, 0.75, 0.75, -0.25);\n return new Ti({ x: this.c[0], y: this.c[1] }, e, { x: this.c[6], y: this.c[7] });\n }\n subsegment(e, i) {\n const r = new Float64Array(8), n = this.eval(e), s = this.eval(i);\n r[0] = n.x, r[1] = n.y;\n const a = (i - e) / 3, c = this.deriv(e);\n r[2] = n.x + a * c.x, r[3] = n.y + a * c.y;\n const u = this.deriv(i);\n return r[4] = s.x - a * u.x, r[5] = s.y - a * u.y, r[6] = s.x, r[7] = s.y, new xt(r);\n }\n // Very fancy subdivision scheme\n subdivide(e) {\n const i = 0.1 * e, r = e - i, n = Math.sqrt(r), s = ss(this.weightsum(1, -3, 3, -1)), a = Math.ceil(Math.pow(s / (432 * i * i), 1 / 6)), c = [];\n let u = 0;\n for (let d = 0; d < a; d++) {\n const A = d / a, x = (d + 1) / a, S = this.subsegment(A, x).midpoint_quadbez(), C = S.mapToBasic(), E = Fe(C.x0), P = Fe(C.x2), j = Math.sqrt(C.scale);\n let k = Math.abs(P - E) * j;\n if (Math.sign(C.x0) != Math.sign(C.x2)) {\n const $ = n / j, B = n * Math.abs(P - E) / Fe($);\n k = Math.max(k, B);\n }\n c.push({\n quad: S,\n a0: E,\n a2: P,\n val: k\n }), u += k;\n }\n const p = 0.5 * u / n, f = Math.ceil(p), v = [{ x: this.c[0], y: this.c[1] }];\n let y = 0, m = 0;\n for (let d = 1; d < f; d++) {\n const A = u * d / f;\n for (; y + c[m].val < A; )\n y += c[m].val, m++;\n const x = c[m].a0, S = c[m].a2, C = Re(x), E = Re(S), P = x + (S - x) * (A - y) / c[m].val, k = (Re(P) - C) / (E - C);\n v.push(c[m].quad.eval(k));\n }\n return v.push({ x: this.c[6], y: this.c[7] }), v;\n }\n}\nconst as = /&?(xywh=)?(pixel:|percent:|pct:)?([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?)/, os = /&?(t=)(npt:)?([0-9]+(.[0-9]+)?)?(,([0-9]+(.[0-9]+)?))?/, zt = /^rgba\\((\\d+),(\\d+),(\\d+),([0-9.]+)\\)$/;\nfunction Be(t, {\n domParser: e,\n svgPreprocessor: i,\n iiifRenderingHints: r\n} = {}) {\n if (Array.isArray(t))\n return q(\n t.reduce(\n (n, s) => {\n const {\n selector: a,\n selectors: c,\n iiifRenderingHints: u\n } = Be(s, { domParser: e, svgPreprocessor: i, iiifRenderingHints: r });\n return a && (n.selector || (n.selector = a), n.selectors.push(...c)), u && (n.iiifRenderingHints = n.iiifRenderingHints || { type: \"ImageApiSelector\" }, Object.assign(n.iiifRenderingHints, u)), n;\n },\n {\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n }\n )\n );\n if (!t)\n return q({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n if (typeof t == \"string\") {\n const [n, s] = t.split(\"#\");\n return s ? Be(\n { type: \"FragmentSelector\", value: s },\n { svgPreprocessor: i, iiifRenderingHints: r, domParser: e }\n ) : q({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n }\n if (t.type && t.type === \"PointSelector\" && (t.t || t.t === 0)) {\n const n = {\n type: \"TemporalSelector\",\n temporal: {\n startTime: t.t\n }\n };\n return q({\n selector: n,\n selectors: [n],\n iiifRenderingHints: r\n });\n }\n if (fs(t)) {\n const n = [];\n if (t.region) {\n const s = Be(\n { type: \"FragmentSelector\", value: \"xywh=\" + t.region },\n { domParser: e, svgPreprocessor: i, iiifRenderingHints: r }\n );\n n.push(...s.selectors);\n }\n return q({\n selector: n[0],\n selectors: n,\n iiifRenderingHints: r ? { ...r, ...t } : t\n });\n }\n if (t.type === \"FragmentSelector\") {\n const n = as.exec(t.value);\n if (n) {\n const a = {\n type: \"BoxSelector\",\n spatial: {\n unit: n[2] === \"percent:\" || n[2] === \"pct:\" ? \"percent\" : \"pixel\",\n x: parseFloat(n[3]),\n y: parseFloat(n[4]),\n width: parseFloat(n[5]),\n height: parseFloat(n[6])\n }\n };\n return q({\n selector: a,\n selectors: [a],\n iiifRenderingHints: r\n });\n }\n const s = t.value.match(os);\n if (s) {\n const a = {\n type: \"TemporalSelector\",\n temporal: {\n startTime: s[4] ? parseFloat(s[4]) : 0,\n endTime: s[7] ? parseFloat(s[7]) : void 0\n }\n };\n return q({\n selector: a,\n selectors: [a],\n iiifRenderingHints: r\n });\n }\n return q({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n }\n if (t.type === \"SvgSelector\" && \"value\" in t) {\n e || (typeof window < \"u\" ? e = new window.DOMParser() : console.warn(\n \"No DOMParser available, cannot parse SVG selector, `points`, `spatial` and `style` will be unavailable and the SVG will not be normalized.\"\n ));\n let n = [], s, a, c = (i == null ? void 0 : i(t.value)) ?? t.value, u;\n if (e) {\n const f = e.parseFromString(t.value, \"image/svg+xml\").querySelector(\"svg\");\n if (!f)\n return console.warn(`Illegal SVG selector: ${t.value}`), q({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n const v = _i(f);\n v && (n = v.points, u = v.shapeType, s = [\n Math.min(...n.map((y) => y[0])),\n // llx\n Math.min(...n.map((y) => y[1])),\n // lly\n Math.max(...n.map((y) => y[0])),\n // urx\n Math.max(...n.map((y) => y[1]))\n // ury\n ], { style: a, svg: c } = us(v.element) ?? { svg: c });\n }\n const p = {\n type: \"SvgSelector\",\n svg: c,\n svgShape: u,\n style: a,\n points: n.length ? n : void 0,\n spatial: s ? { unit: \"pixel\", x: s[0], y: s[1], width: s[2] - s[0], height: s[3] - s[1] } : void 0\n };\n return q({\n selector: p,\n selectors: [p],\n iiifRenderingHints: r\n });\n }\n return q({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n}\nfunction cs(t) {\n const e = t.map((r) => r[0]).reduce(\n (r, n) => (r[n] += 1, r),\n { C: 0, Q: 0, L: 0, M: 0 }\n ), i = new Set(t.map((r) => r[0]));\n if (e.C > 0 || e.Q > 0)\n return \"path\";\n if (e.L > 0 && (i.size === 1 || i.size === 2 && i.has(\"M\"))) {\n if (e.L === 4)\n return \"rect\";\n const r = t.slice(-1)[0];\n return t[0][0] === \"M\" && r[0] === \"L\" && r[1] == t[0][1] && r[2] === t[0][2] || r[1] === 0 && r[2] === 0 ? \"polygon\" : \"polyline\";\n }\n return \"path\";\n}\nfunction _i(t) {\n var e;\n for (const i of Array.from(t.children))\n switch (i == null ? void 0 : i.tagName.toLowerCase()) {\n case \"g\":\n {\n const r = _i(i);\n if (r)\n return r;\n }\n continue;\n case \"path\": {\n const r = i.getAttribute(\"d\");\n if (!r)\n continue;\n const n = is(r);\n return { element: i, points: ls(n), shapeType: cs(n) };\n }\n case \"circle\": {\n const r = parseFloat(i.getAttribute(\"cx\") ?? \"0\"), n = parseFloat(i.getAttribute(\"cy\") ?? \"0\"), s = parseFloat(i.getAttribute(\"r\") ?? \"0\");\n if (!s)\n continue;\n const a = [];\n for (let c = 0; c <= 360; c += 12) {\n const u = c * Math.PI / 180;\n a.push([r + s * Math.cos(u), n + s * Math.sin(u)]);\n }\n return { element: i, points: a, shapeType: \"circle\" };\n }\n case \"ellipse\": {\n const r = parseFloat(i.getAttribute(\"cx\") ?? \"0\"), n = parseFloat(i.getAttribute(\"cy\") ?? \"0\"), s = parseFloat(i.getAttribute(\"rx\") ?? \"0\"), a = parseFloat(i.getAttribute(\"ry\") ?? \"0\");\n if (!s && !a)\n continue;\n const c = [];\n for (let u = 0; u <= 360; u += 12) {\n const p = Math.tan(u / 360 * Math.PI), f = s * (1 - p ** 2) / (1 + p ** 2), v = a * 2 * p / (1 + p ** 2);\n c.push([r + f, n + v]);\n }\n return { element: i, points: c, shapeType: \"ellipse\" };\n }\n case \"line\": {\n const r = parseFloat(i.getAttribute(\"x0\") ?? \"0\"), n = parseFloat(i.getAttribute(\"y0\") ?? \"0\"), s = parseFloat(i.getAttribute(\"x1\") ?? \"0\"), a = parseFloat(i.getAttribute(\"y1\") ?? \"0\");\n if (r === s && n === a)\n continue;\n return {\n element: i,\n points: [\n [r, n],\n [s, a]\n ],\n shapeType: \"polyline\"\n };\n }\n case \"polygon\":\n case \"polyline\": {\n const r = ((e = i.getAttribute(\"points\")) == null ? void 0 : e.split(\" \").map((s) => s.split(\",\").map(parseFloat))) ?? [];\n if (!r.length)\n continue;\n let n = \"polyline\";\n return i.tagName.toLowerCase() === \"polygon\" && (r.push(r[0]), n = \"polygon\"), { element: i, points: r, shapeType: n };\n }\n case \"rect\": {\n const r = parseFloat(i.getAttribute(\"x\") ?? \"0\"), n = parseFloat(i.getAttribute(\"y\") ?? \"0\"), s = parseFloat(i.getAttribute(\"width\") ?? \"0\"), a = parseFloat(i.getAttribute(\"height\") ?? \"0\");\n if (!s || !a)\n continue;\n return {\n element: i,\n points: [\n [r, n],\n [r + s, n],\n [r + s, n + a],\n [r, n + a],\n [r, n]\n ],\n shapeType: \"rect\"\n };\n }\n default:\n continue;\n }\n return null;\n}\nfunction ls(t) {\n const e = [];\n for (let i = 0; i < t.length; i++) {\n const r = e[e.length - 1] ?? [0, 0], n = t[i];\n switch (n[0]) {\n case \"M\":\n case \"L\":\n e.push([n[1], n[2]]);\n continue;\n case \"C\":\n e.push(\n ...ns(\n { x: r[0], y: r[1] },\n { x: n[1], y: n[2] },\n { x: n[3], y: n[4] },\n { x: n[5], y: n[6] }\n ).map((s) => [s.x, s.y]).slice(1)\n // skip first point, already part of output\n );\n continue;\n case \"Q\":\n e.push(\n ...rs(\n { x: r[0], y: r[1] },\n { x: n[1], y: n[2] },\n { x: n[3], y: n[4] }\n ).map((s) => [s.x, s.y]).slice(1)\n // skip first point, already part of output\n );\n continue;\n }\n }\n return e;\n}\nfunction us(t) {\n const e = {};\n if (t.hasAttribute(\"fill\") ? (e.fill = t.getAttribute(\"fill\"), t.removeAttribute(\"fill\")) : t.style.fill && (e.fill = t.style.fill), e.fill) {\n const r = zt.exec(e.fill);\n r && (e.fillOpacity = parseFloat(r[4]), e.fill = `rgb(${r[1]}, ${r[2]}, ${r[3]})`);\n }\n if (t.hasAttribute(\"fill-opacity\") ? (e.fillOpacity = parseFloat(t.getAttribute(\"fill-opacity\")), t.removeAttribute(\"fill-opacity\")) : t.style.fillOpacity && (e.fillOpacity = parseFloat(t.style.fillOpacity)), t.hasAttribute(\"stroke\") ? (e.stroke = t.getAttribute(\"stroke\"), t.removeAttribute(\"stroke\")) : t.style.stroke && (e.stroke = t.style.stroke), e.stroke) {\n const r = zt.exec(e.stroke);\n r && (e.strokeOpacity = parseFloat(r[4]), e.stroke = `rgb(${r[1]}, ${r[2]}, ${r[3]})`);\n }\n t.hasAttribute(\"stroke-opacity\") ? (e.strokeOpacity = parseFloat(t.getAttribute(\"stroke-opacity\")), t.removeAttribute(\"stroke-opacity\")) : t.style.strokeOpacity && (e.strokeOpacity = parseFloat(t.style.strokeOpacity)), t.hasAttribute(\"stroke-width\") ? (e.strokeWidth = t.getAttribute(\"stroke-width\"), t.removeAttribute(\"stroke-width\")) : t.style.strokeWidth && (e.strokeWidth = t.style.strokeWidth), t.hasAttribute(\"stroke-dasharray\") ? (e.strokeDasharray = t.getAttribute(\"stroke-dasharray\"), t.removeAttribute(\"stroke-dasharray\")) : t.style.strokeDasharray && (e.strokeDasharray = t.style.strokeDasharray);\n let i = t;\n for (; i.tagName.toLowerCase() !== \"svg\"; )\n if (i = i.parentElement, i === null)\n throw new Error(\"Could not find root SVG element\");\n return { svg: i.outerHTML, style: Object.keys(e).length > 0 ? e : void 0 };\n}\nfunction fs(t) {\n return !!t && t.type === \"iiif:ImageApiSelector\" && t.type === \"iiif:ImageApiSelector\";\n}\nfunction q(t) {\n if (t.iiifRenderingHints) {\n const e = t.iiifRenderingHints;\n if (e.rotation) {\n const i = ps(e.rotation);\n if (i)\n if (t.selectors.length)\n for (const r of t.selectors)\n r.rotation = i;\n else\n t.selectors.push({\n type: \"RotationSelector\",\n rotation: i\n });\n }\n } else\n delete t.iiifRenderingHints;\n return t;\n}\nfunction ps(t) {\n let e = parseFloat(t);\n return e && t.startsWith(\"!\") && (e = 360 - e), e && (e = e % 360), e !== e ? 0 : e || 0;\n}\nfunction Ae(t, e = {}) {\n if (Array.isArray(t))\n return Ae(t[0]);\n if (typeof t == \"string\") {\n const [i, r] = t.split(\"#\");\n return r ? Ae({\n type: \"SpecificResource\",\n source: { id: i, type: \"Unknown\" },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n }) : {\n type: \"SpecificResource\",\n source: { id: i, type: e.typeMap && e.typeMap[i] || \"Unknown\" },\n selector: null,\n selectors: []\n };\n }\n if (t.type === \"Choice\" || t.type === \"List\" || t.type === \"Composite\" || t.type === \"Independents\")\n return Ae(t.items[0]);\n if (t.type === \"SpecificResource\") {\n t.source.type === \"Canvas\" && t.source.partOf && typeof t.source.partOf == \"string\" && (t.source.partOf = [\n {\n id: t.source.partOf,\n type: \"Manifest\"\n }\n ]);\n const { selector: i, selectors: r } = t.selector ? Be(t.selector, e) : { selector: null, selectors: [] };\n return {\n type: \"SpecificResource\",\n source: t.source,\n selector: i,\n selectors: r\n };\n }\n if (t.id) {\n t.type === \"Canvas\" && t.partOf && typeof t.partOf == \"string\" && (t.partOf = [\n {\n id: t.partOf,\n type: \"Manifest\"\n }\n ]);\n const [i, r] = t.id.split(\"#\");\n return r ? Ae({\n type: \"SpecificResource\",\n source: {\n ...t,\n id: i\n },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n }) : {\n type: \"SpecificResource\",\n source: {\n ...t,\n id: i\n },\n selector: null,\n selectors: []\n };\n }\n return {\n type: \"SpecificResource\",\n source: t,\n selector: null,\n selectors: []\n };\n}\nfunction Vt(t, e = !1) {\n if (typeof t == \"string\") {\n if (t.startsWith(\"{\"))\n try {\n const i = JSON.parse(t);\n return Vt(i);\n } catch {\n return [!1, { reason: \"Invalid JSON\" }];\n }\n return [!0];\n }\n if (Array.isArray(t)) {\n for (const i of t) {\n const [r, n] = Vt(i);\n if (!r && n)\n return [r, n];\n }\n return [!0];\n }\n return t.type === \"Annotation\" ? [!0] : e && t.type === \"Canvas\" && !t.partOf ? [!1, { reason: \"Canvas without partOf cannot be loaded\" }] : [!0];\n}\nfunction ko(t) {\n return ds(typeof t == \"string\" ? t : JSON.stringify(t));\n}\nfunction hs(t, e) {\n if (t = t.trim(), t[0] === \"{\")\n return e ? Promise.resolve(JSON.parse(t)) : JSON.parse(t);\n if (t.startsWith(\"http\")) {\n if (!e)\n throw new Error(\"Cannot fetch remote fetch with async=false in parseContentState\");\n return fetch(t).then((i) => i.json());\n }\n return hs(vs(t), e);\n}\nfunction ds(t) {\n const e = encodeURIComponent(t);\n return (typeof btoa > \"u\" ? Buffer.from(e, \"utf-8\").toString(\"base64\") : btoa(e)).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nfunction vs(t) {\n const i = ys(t).replace(/-/g, \"+\").replace(/_/g, \"/\"), r = typeof atob > \"u\" ? Buffer.from(i, \"base64\").toString(\"utf-8\") : atob(i);\n return decodeURIComponent(r).trim();\n}\nfunction ys(t) {\n const e = t.length % 4;\n if (e === 1)\n throw new Error(\"InvalidLengthError: Input base64url string is the wrong length to determine padding\");\n return t + (e ? \"====\".slice(0, 4 - e) : \"\");\n}\nfunction Fo(t) {\n if (!t)\n throw new Error(\"Content state is empty\");\n Array.isArray(t) || (t = [t]);\n let e = \"vault://virtual-annotation/\" + (/* @__PURE__ */ new Date()).getTime();\n const i = [];\n for (const r of t) {\n if (typeof r == \"string\")\n throw new Error(\"Content state is a [String] type and cannot be inferred\");\n if (r.type === \"Annotation\") {\n if (e = r.id, Array.isArray(r.motivation))\n for (const s of r.motivation)\n ;\n if (Array.isArray(r.target))\n for (const s of r.target) {\n const a = Ae(s);\n i.push(a);\n }\n else {\n const s = Ae(r.target);\n i.push(s);\n }\n continue;\n }\n const n = Ae(r);\n i.push(n);\n }\n return {\n id: e,\n type: \"Annotation\",\n motivation: [\"contentState\", ...t.motivation || []],\n target: i,\n extensions: {}\n };\n}\nfunction ms(t) {\n return t.type === \"SpecificResource\" ? [t.source, { selector: t.selector }] : [t, { selector: null }];\n}\nfunction Lo(t = V) {\n function e(n) {\n const s = n ? typeof n == \"string\" ? t.get(n) : n : null;\n if (!s)\n return [];\n const a = t.get(s.items, { parent: s }), c = [];\n for (const u of a)\n c.push(...t.get(u.items, { parent: u }));\n return c;\n }\n function i(n, s = []) {\n const a = Array.isArray(n) ? n : e(n), c = [];\n let u = null;\n const p = [];\n for (const f of a) {\n if (f.type !== \"Annotation\")\n throw new Error(\"getPaintables() accept either a canvas or list of annotations\");\n const v = Array.from(Array.isArray(f.body) ? f.body : [f.body]);\n for (const y of v) {\n const [m, { selector: d }] = ms(y), A = t.get(m), x = (A.type || \"unknown\").toLowerCase();\n if (x === \"choice\") {\n const S = t.get(A.items, { parent: A.id }), C = s.length ? s.map((E) => S.find((P) => P.id === E)).filter(Boolean) : [S[0]];\n C.length === 0 && C.push(S[0]), u = {\n type: \"single-choice\",\n items: S.map((E) => ({\n id: E.id,\n label: E.label,\n selected: C.indexOf(E) !== -1\n })),\n label: m.label\n }, v.push(...C);\n continue;\n }\n c.indexOf(x) === -1 && c.push(x), p.push({\n type: x,\n annotationId: f.id,\n resource: A,\n target: f.target,\n selector: d\n });\n }\n }\n return {\n types: c,\n items: p,\n choice: u\n };\n }\n function r(n) {\n const { choice: s } = i(n);\n return s;\n }\n return {\n getAllPaintingAnnotations: e,\n getPaintables: i,\n extractChoices: r\n };\n}\nfunction Po(t = V) {\n return {\n findFirstCanvasFromRange: (e) => Mi(t, e),\n findAllCanvasesInRange: (e) => wt(t, e),\n findManifestSelectedRange: (e, i) => gs(t, e, i),\n findSelectedRange: (e, i) => Ct(t, e, i)\n };\n}\nfunction Mi(t, e) {\n var i;\n for (const r of e.items) {\n if (r.type === \"SpecificResource\" && ((i = r.source) == null ? void 0 : i.type) === \"Canvas\")\n return r.source;\n if (r.type === \"Range\") {\n const n = Mi(t, t.get(r));\n if (n)\n return n;\n }\n }\n return null;\n}\nfunction wt(t, e) {\n var r;\n const i = [];\n for (const n of e.items)\n n.type === \"SpecificResource\" && ((r = n.source) == null ? void 0 : r.type) === \"Canvas\" && (n.source.id.indexOf(\"#\") !== -1 ? i.push({ id: n.source.id.split(\"#\")[0], type: \"Canvas\" }) : i.push(n.source)), n.type === \"Range\" && i.push(...wt(t, t.get(n)));\n return i;\n}\nfunction gs(t, e, i) {\n for (const r of e.structures) {\n const n = Ct(t, t.get(r), i);\n if (n)\n return n;\n }\n return null;\n}\nfunction Ct(t, e, i) {\n for (const r of e.items) {\n if (r.type === \"SpecificResource\" && r.source === i)\n return e;\n if (r.type === \"Range\") {\n const n = Ct(t, t.get(r), i);\n if (n)\n return n;\n }\n }\n return null;\n}\nfunction jo(t = V) {\n return {\n getVisibleCanvasesFromCanvasId: (e, i, r = !1) => As(t, e, i, r),\n getManifestSequence: (e, i = {}) => ki(t, e, i)\n };\n}\nfunction As(t = V, e, i, r = !1) {\n const n = e.behavior || [], s = i ? t.get(i) : null;\n if (!s)\n return [];\n const a = s.behavior || [], c = r ? !1 : n.includes(\"paged\"), u = c ? !1 : n.includes(\"continuous\"), p = c || u ? !1 : n.includes(\"individuals\"), f = a.includes(\"facing-pages\"), v = a.includes(\"non-paged\");\n if (f || v || p || r)\n return [{ id: s.id, type: \"Canvas\" }];\n const [y, m] = ki(t, e);\n if (u)\n return y;\n const d = y.findIndex((A) => A.id === i);\n if (d === -1)\n return [];\n for (const A of m)\n if (A.includes(d))\n return A.map((x) => y[x]);\n return [{ id: s.id, type: \"Canvas\" }];\n}\nfunction ki(t = V, e, { disablePaging: i, skipNonPaged: r } = {}) {\n const n = e.behavior || [], s = n.includes(\"paged\"), a = s ? !1 : n.includes(\"continuous\"), c = s || a ? !1 : n.includes(\"individuals\"), u = e.type === \"Manifest\" ? e.items : wt(t, e);\n if (a)\n return [u, [u.map((d, A) => A)]];\n if (c || !s || i)\n return [u, u.map((d, A) => [A])];\n const p = [];\n let f = [];\n const v = () => {\n f.length && (p.push([...f]), f = []);\n };\n let y = 0, m = !1;\n for (let d = 0; d < u.length; d++) {\n const x = t.get(u[d]).behavior || [];\n if (x.includes(\"non-paged\")) {\n d === y && y++, r || (v(), p.push([d]), v());\n continue;\n }\n if (d === y || x.includes(\"facing-pages\")) {\n f.length && (m = !0), v(), p.push([d]), v();\n continue;\n }\n if (f.push(d), m) {\n v(), m = !1;\n continue;\n }\n f.length > 1 && v();\n }\n return f.length && v(), [u, p];\n}\nvar bs = Object.defineProperty, Ss = (t, e, i) => e in t ? bs(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i, re = (t, e, i) => (Ss(t, typeof e != \"symbol\" ? e + \"\" : e, i), i);\nfunction ne(t) {\n return typeof t == \"string\" ? !1 : !!t && t.type === \"SpecificResource\";\n}\nfunction Fi(t, e) {\n const i = e || \"unknown\";\n if (!t)\n return;\n if (typeof t == \"string\")\n return { id: t, type: i };\n if (ne(t))\n return Fi(t.source, e);\n let r = i && i !== \"unknown\" ? i : t.type || t[\"@type\"];\n const n = t.id || t[\"@id\"];\n if (r.indexOf(\":\") !== -1 && (r = r.split(\":\").pop()), n && r)\n return { id: n, type: r };\n}\nconst Le = {}, M = \"iiif-parser:hasPart\", z = \"iiif-parser:partOf\", Pe = \"iiif-parser:isExternal\", U = \"__$UNSET$__\", Li = \"__$UNWRAP$__\", b = [];\nObject.freeze(b);\nObject.freeze(Le);\nfunction xs(t) {\n if (t === Le || Object.keys(t).length === 0)\n return !0;\n for (const e in t)\n return !1;\n return !0;\n}\nfunction Rt(t, e) {\n if (e && e[\"@explicit\"]) {\n const i = {}, r = Object.keys(e);\n for (const n of r)\n n === z || n === \"@explicit\" || (xs(e[n]) ? i[n] = t[n] : i[n] = e[n]);\n return i;\n }\n return t;\n}\nfunction Pi(t, e, i) {\n const r = Fi(e);\n if (!r)\n return [void 0, void 0];\n const n = t.requests[r.id], s = r.type || t.mapping[r.id];\n if (!s || n && n.resourceUri && !t.entities[s][n.resourceUri])\n return [void 0, void 0];\n const a = t.entities[s][n ? n.resourceUri : r.id];\n if (r.type && !a)\n return Pi(t, { id: r.id }, i);\n if (a && a[M]) {\n const c = a[M].find((p) => i ? p[z] === i.id : p[z] === a.id);\n return [Rt(a, c), a];\n }\n return [a, a];\n}\nconst ws = {\n id: \"https://iiif-parser/annotation-page\",\n type: \"AnnotationPage\",\n behavior: b,\n label: null,\n thumbnail: b,\n summary: null,\n requiredStatement: null,\n metadata: b,\n rights: null,\n provider: b,\n items: b,\n seeAlso: b,\n homepage: b,\n rendering: b,\n service: b\n}, Cs = {\n id: \"https://iiif-parser/empty-canvas\",\n type: \"Canvas\",\n label: null,\n behavior: b,\n thumbnail: b,\n accompanyingCanvas: null,\n placeholderCanvas: null,\n summary: null,\n requiredStatement: null,\n metadata: b,\n rights: null,\n navDate: null,\n provider: b,\n items: b,\n annotations: b,\n seeAlso: b,\n homepage: b,\n partOf: b,\n rendering: b,\n service: b,\n duration: 0,\n height: 0,\n width: 0\n}, Rs = {\n id: \"https://iiif-parser/empty-collection\",\n type: \"Collection\",\n label: null,\n viewingDirection: \"left-to-right\",\n behavior: b,\n thumbnail: b,\n accompanyingCanvas: null,\n placeholderCanvas: null,\n summary: null,\n requiredStatement: null,\n metadata: b,\n rights: null,\n navDate: null,\n provider: b,\n items: b,\n annotations: b,\n seeAlso: b,\n homepage: b,\n partOf: b,\n rendering: b,\n service: b,\n services: b\n}, Is = {\n id: \"https://iiif-parser/empty-manifest\",\n type: \"Manifest\",\n annotations: b,\n behavior: b,\n homepage: b,\n items: b,\n label: null,\n metadata: b,\n navDate: null,\n provider: b,\n partOf: b,\n accompanyingCanvas: null,\n placeholderCanvas: null,\n rendering: b,\n requiredStatement: null,\n rights: null,\n seeAlso: b,\n service: b,\n services: b,\n start: null,\n structures: b,\n summary: null,\n thumbnail: b,\n viewingDirection: \"left-to-right\"\n}, Es = {\n id: \"https://iiif-parser/empty-canvas\",\n type: \"Range\",\n label: null,\n behavior: b,\n thumbnail: b,\n accompanyingCanvas: null,\n placeholderCanvas: null,\n summary: null,\n requiredStatement: null,\n metadata: b,\n rights: null,\n navDate: null,\n provider: b,\n items: b,\n annotations: b,\n seeAlso: b,\n homepage: b,\n partOf: b,\n rendering: b,\n service: b,\n start: null,\n supplementary: null,\n viewingDirection: \"left-to-right\"\n}, Os = {\n id: \"https://iiif-parser/empty-agent\",\n type: \"Agent\",\n label: {},\n logo: b,\n seeAlso: b,\n homepage: b\n}, Ts = {\n id: \"https://iiif-parser/empty-service\",\n type: \"UnknownService\"\n};\nfunction we(t) {\n return Array.isArray(t) ? t : t ? [t] : [];\n}\nfunction We(...t) {\n return (e) => t.reduce((i, r) => r(i), e);\n}\nconst Bt = [\n \"Collection\",\n \"Manifest\",\n \"Canvas\",\n \"AnnotationPage\",\n \"AnnotationCollection\",\n \"Annotation\",\n \"ContentResource\",\n \"Range\",\n \"Service\",\n \"Selector\",\n \"Agent\"\n];\nfunction _s(t, e) {\n if (typeof t > \"u\" || t === null)\n throw new Error(\"Null or undefined is not a valid entity.\");\n if (Array.isArray(t))\n throw new Error(\"Array is not a valid entity\");\n if (typeof t != \"object\") {\n if (e)\n return e;\n throw new Error(`${typeof t} is not a valid entity`);\n }\n if (typeof t.type == \"string\") {\n const i = Bt.indexOf(t.type);\n if (i !== -1)\n return Bt[i];\n }\n if (t.profile)\n return \"Service\";\n throw new Error(\"Resource type is not known\");\n}\nclass It {\n constructor(e, i = {}) {\n re(this, \"traversals\"), re(this, \"options\"), re(this, \"_traverseManifest\", We(\n this.traverseManifestItems.bind(this),\n this.traverseLinking.bind(this),\n this.traverseDescriptive.bind(this),\n this.traverseLinkedCanvases.bind(this),\n this.traverseManifestStructures.bind(this),\n this.traverseInlineAnnotationPages.bind(this)\n )), re(this, \"_traverseCanvas\", We(\n this.traverseCanvasItems.bind(this),\n this.traverseLinking.bind(this),\n this.traverseDescriptive.bind(this),\n this.traverseLinkedCanvases.bind(this),\n this.traverseInlineAnnotationPages.bind(this)\n )), re(this, \"_traverseAnnotationPage\", We(\n this.traverseAnnotationPageItems.bind(this),\n this.traverseLinking.bind(this),\n this.traverseDescriptive.bind(this)\n )), re(this, \"_traverseRange\", We(\n this.traverseRangeRanges.bind(this),\n this.traverseLinking.bind(this),\n this.traverseDescriptive.bind(this),\n this.traverseLinkedCanvases.bind(this)\n )), this.traversals = {\n collection: [],\n manifest: [],\n canvas: [],\n annotationCollection: [],\n annotationPage: [],\n annotation: [],\n contentResource: [],\n choice: [],\n range: [],\n service: [],\n agent: [],\n specificResource: [],\n geoJson: [],\n ...e\n }, this.options = {\n allowUndefinedReturn: !1,\n ...i\n };\n }\n static all(e) {\n return new It({\n collection: [e],\n manifest: [e],\n canvas: [e],\n annotationCollection: [e],\n annotationPage: [e],\n annotation: [e],\n contentResource: [e],\n choice: [e],\n range: [e],\n service: [e],\n geoJson: [e],\n specificResource: [e],\n agent: [e]\n });\n }\n traverseDescriptive(e) {\n return e.thumbnail && (e.thumbnail = we(e.thumbnail).map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e.provider && (e.provider = e.provider.map((i) => this.traverseAgent(i, e))), e;\n }\n traverseLinking(e) {\n return e.seeAlso && (e.seeAlso = e.seeAlso.map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e.service && (e.service = we(e.service).map((i) => this.traverseService(i))), e.services && (e.services = we(e.services).map((i) => this.traverseService(i, e))), e.logo && (e.logo = e.logo.map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e.homepage && (e.homepage = e.homepage.map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e.partOf && (e.partOf = e.partOf.map((i) => typeof i == \"string\" || !i.type ? this.traverseType(i, { parent: e }, this.traversals.contentResource) : i.type === \"Canvas\" ? this.traverseType(i, { parent: e }, this.traversals.canvas) : i.type === \"AnnotationCollection\" ? this.traverseType(\n i,\n { parent: e },\n this.traversals.annotationCollection\n ) : i.type === \"Collection\" ? this.traverseType(i, { parent: e }, this.traversals.collection) : this.traverseType(i, { parent: e }, this.traversals.contentResource))), e.start && (ne(e.start) ? e.start = this.traverseSpecificResource(e.start, \"Canvas\", e) : e.start = this.traverseType(e.start, { parent: e }, this.traversals.canvas)), e.rendering && (e.rendering = e.rendering.map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e.supplementary && (e.supplementary = e.supplementary.map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e;\n }\n traverseCollectionItems(e) {\n return e.items && e.items.map((i) => i.type === \"Collection\" ? this.traverseCollection(i) : this.traverseManifest(i)), e;\n }\n traverseCollection(e, i) {\n return this.traverseType(\n this.traverseDescriptive(\n this.traverseInlineAnnotationPages(\n this.traverseLinking(this.traverseLinkedCanvases(this.traverseCollectionItems(e)))\n )\n ),\n { parent: i },\n this.traversals.collection\n );\n }\n traverseGeoJson(e, i) {\n return this.traverseType(e, { parent: i }, this.traversals.geoJson);\n }\n traverseNavPlace(e) {\n return e.navPlace && (e.navPlace = this.traverseGeoJson(e.navPlace, e)), e;\n }\n traverseManifestItems(e) {\n return e.items && (e.items = e.items.map((i) => this.traverseCanvas(i))), e;\n }\n traverseManifestStructures(e) {\n return e.structures && (e.structures = e.structures.map((i) => this.traverseRange(i))), e;\n }\n traverseManifest(e, i) {\n return this.traverseType(this._traverseManifest(e), { parent: i }, this.traversals.manifest);\n }\n traverseCanvasItems(e) {\n return e.items = (e.items || []).map((i) => this.traverseAnnotationPage(i, e)), e;\n }\n traverseInlineAnnotationPages(e) {\n return typeof e == \"string\" || !e || e.annotations && (e.annotations = e.annotations.map((i) => this.traverseAnnotationPage(i, e))), e;\n }\n traverseCanvas(e, i) {\n return this.traverseType(this._traverseCanvas(e), { parent: i }, this.traversals.canvas);\n }\n traverseAnnotationPageItems(e) {\n return e.items && (e.items = e.items.map((i) => this.traverseAnnotation(i, e))), e;\n }\n traverseAnnotationPage(e, i) {\n return this.traverseType(\n this._traverseAnnotationPage(e),\n { parent: i },\n this.traversals.annotationPage\n );\n }\n traverseAnnotationBody(e) {\n return Array.isArray(e.body) ? e.body = e.body.map((i) => this.traverseContentResource(i, e)) : e.body && (e.body = this.traverseContentResource(e.body, e)), e;\n }\n traverseLinkedCanvases(e) {\n return e.placeholderCanvas && (e.placeholderCanvas = this.traverseCanvas(e.placeholderCanvas)), e.accompanyingCanvas && (e.accompanyingCanvas = this.traverseCanvas(e.accompanyingCanvas)), e;\n }\n traverseAnnotation(e, i) {\n return this.traverseType(\n this.traverseLinking(this.traverseAnnotationBody(this.traverseDescriptive(e))),\n { parent: i },\n this.traversals.annotation\n );\n }\n traverseContentResourceLinking(e) {\n return typeof e == \"string\" || !e || e && e.service && (e.service = we(\n e.service || []\n ).map((i) => this.traverseService(i, e))), e;\n }\n traverseContentResource(e, i) {\n return e.type === \"Choice\" && (e.items = e.items.map((r) => this.traverseContentResource(r, e))), ne(e) ? this.traverseSpecificResource(e, \"ContentResource\") : this.traverseType(\n this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)),\n { parent: i },\n this.traversals.contentResource\n );\n }\n traverseSpecificResource(e, i, r) {\n let n = e.source;\n return typeof e.source == \"string\" && (n = { id: e.source, type: i || \"unknown\" }), this.traverseType(\n {\n ...e,\n source: i === \"Canvas\" || n.type === \"Canvas\" ? this.traverseType(n, { parent: r }, this.traversals.canvas) : i === \"ContentResource\" ? this.traverseContentResource(n, { parent: r }) : this.traverseUnknown(n, { parent: r, typeHint: i })\n },\n { parent: r },\n this.traversals.specificResource\n );\n }\n traverseRangeRanges(e) {\n return e.items && (e.items = e.items.map((i) => typeof i == \"string\" ? this.traverseCanvas({ id: i, type: \"Canvas\" }, e) : ne(i) ? this.traverseSpecificResource(i, \"Canvas\", e) : i.type === \"Manifest\" ? this.traverseManifest(i, e) : this.traverseRange(i, e))), e;\n }\n traverseRange(e, i) {\n return this.traverseType(this._traverseRange(e), { parent: i }, this.traversals.range);\n }\n traverseAgent(e, i) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(e)),\n { parent: i },\n this.traversals.agent\n );\n }\n traverseType(e, i, r) {\n return r.reduce((n, s) => {\n const a = s(n, i);\n return typeof a > \"u\" && !this.options.allowUndefinedReturn ? n : a;\n }, e);\n }\n traverseService(e, i) {\n const r = Object.assign({}, e);\n return r && r.service && (r.service = we(r.service).map((n) => this.traverseService(n))), this.traverseType(r, { parent: i }, this.traversals.service);\n }\n traverseUnknown(e, { parent: i, typeHint: r } = {}) {\n const n = _s(e, r);\n switch (n) {\n case \"Collection\":\n return this.traverseCollection(e, i);\n case \"Manifest\":\n return this.traverseManifest(e, i);\n case \"Canvas\":\n return this.traverseCanvas(e, i);\n case \"AnnotationPage\":\n return this.traverseAnnotationPage(e, i);\n case \"Annotation\":\n return this.traverseAnnotation(e, i);\n case \"ContentResource\":\n return this.traverseContentResource(e, i);\n case \"Range\":\n return this.traverseRange(e, i);\n case \"Service\":\n return this.traverseService(e, i);\n case \"Agent\":\n return this.traverseAgent(e, i);\n default: {\n if (r)\n return r;\n throw new Error(`Unknown or unsupported resource type of ${n}`);\n }\n }\n }\n}\nconst Gt = [\n \"sc:Collection\",\n \"sc:Manifest\",\n \"sc:Canvas\",\n \"sc:AnnotationList\",\n \"oa:Annotation\",\n \"sc:Range\",\n \"sc:Layer\",\n \"sc:Sequence\",\n \"oa:Choice\",\n \"Service\",\n \"ContentResource\"\n];\nfunction Ms(t) {\n if (typeof t > \"u\" || t === null)\n throw new Error(\"Null or undefined is not a valid entity.\");\n if (Array.isArray(t))\n throw new Error(\"Array is not a valid entity\");\n if (typeof t != \"object\")\n throw new Error(`${typeof t} is not a valid entity`);\n if (typeof t[\"@type\"] == \"string\") {\n const e = Gt.indexOf(t[\"@type\"]);\n if (e !== -1)\n return Gt[e];\n }\n if (t.profile)\n return \"Service\";\n if (t.format || t[\"@type\"])\n return \"ContentResource\";\n throw new Error(\"Resource type is not known\");\n}\nclass Et {\n constructor(e, i = {}) {\n re(this, \"traversals\"), re(this, \"options\"), this.traversals = {\n collection: [],\n manifest: [],\n canvas: [],\n annotationList: [],\n sequence: [],\n annotation: [],\n contentResource: [],\n choice: [],\n range: [],\n service: [],\n layer: [],\n ...e\n }, this.options = {\n convertPropsToArray: !0,\n mergeMemberProperties: !0,\n allowUndefinedReturn: !1,\n ...i\n };\n }\n static all(e) {\n return new Et({\n collection: [e],\n manifest: [e],\n canvas: [e],\n annotationList: [e],\n sequence: [e],\n annotation: [e],\n contentResource: [e],\n choice: [e],\n range: [e],\n service: [e],\n layer: [e]\n });\n }\n traverseCollection(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(e))),\n this.traversals.collection\n );\n }\n traverseCollectionItems(e) {\n if (this.options.mergeMemberProperties) {\n const i = [\n ...(e.manifests || []).map((r) => typeof r == \"string\" ? { \"@id\": r, \"@type\": \"sc:Manifest\" } : r),\n ...(e.collections || []).map((r) => typeof r == \"string\" ? { \"@id\": r, \"@type\": \"sc:Collection\" } : r),\n ...e.members || []\n ];\n delete e.collections, delete e.manifests, e.members = i;\n }\n return e.manifests && (e.manifests = e.manifests.map(\n (i) => this.traverseManifest(\n typeof i == \"string\" ? { \"@id\": i, \"@type\": \"sc:Manifest\" } : i\n )\n )), e.collections && (e.collections = e.collections.map(\n (i) => this.traverseCollection(\n typeof i == \"string\" ? { \"@id\": i, \"@type\": \"sc:Collection\" } : i\n )\n )), e.members && (e.members = e.members.map((i) => typeof i == \"string\" ? i : this.traverseUnknown(i))), e;\n }\n traverseManifest(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e))),\n this.traversals.manifest\n );\n }\n traverseManifestItems(e) {\n return e.sequences && (e.sequences = e.sequences.map((i) => this.traverseSequence(i))), e.structures && (e.structures = e.structures.map((i) => this.traverseRange(i))), e;\n }\n traverseSequence(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(e))),\n this.traversals.sequence\n );\n }\n traverseSequenceItems(e) {\n return e.canvases && (e.canvases = e.canvases.map((i) => this.traverseCanvas(i))), e;\n }\n traverseCanvas(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))),\n this.traversals.canvas\n );\n }\n traverseCanvasItems(e) {\n return e.images && (e.images = e.images.map((i) => this.traverseAnnotation(i))), e.otherContent && (e.otherContent = e.otherContent.map((i) => this.traverseAnnotationList(i))), e;\n }\n traverseRange(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(e))),\n this.traversals.range\n );\n }\n traverseRangeItems(e) {\n if (this.options.mergeMemberProperties) {\n const i = [\n ...(e.ranges || []).map((r) => typeof r == \"string\" ? { \"@id\": r, \"@type\": \"sc:Range\" } : r),\n ...(e.canvases || []).map((r) => typeof r == \"string\" ? { \"@id\": r, \"@type\": \"sc:Canvas\" } : r),\n ...e.members || []\n ];\n delete e.ranges, delete e.canvases, e.members = i.length ? i.map((r) => this.traverseUnknown(r)) : void 0;\n }\n return e;\n }\n traverseAnnotationList(e) {\n const i = typeof e == \"string\" ? { \"@id\": e, \"@type\": \"sc:AnnotationList\" } : e;\n return this.traverseType(\n this.traverseDescriptive(this.traverseAnnotationListItems(i)),\n this.traversals.annotationList\n );\n }\n traverseAnnotationListItems(e) {\n return e.resources && (e.resources = e.resources.map((i) => this.traverseAnnotation(i))), e;\n }\n traverseAnnotation(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(e))),\n this.traversals.annotation\n );\n }\n traverseAnnotationItems(e) {\n return e.resource && (Array.isArray(e.resource) ? e.resource = e.resource.map(\n (i) => this.traverseContentResource(i)\n ) : e.resource = this.traverseContentResource(e.resource)), e.on, e;\n }\n traverseLayer(e) {\n return this.traverseType(this.traverseLinking(this.traverseLayerItems(e)), this.traversals.layer);\n }\n traverseLayerItems(e) {\n return e.otherContent && (e.otherContent = e.otherContent.map((i) => this.traverseAnnotationList(i))), e;\n }\n traverseChoice(e) {\n return this.traverseType(this.traverseChoiceItems(e), this.traversals.choice);\n }\n traverseChoiceItems(e) {\n return e.default && e.default !== \"rdf:nil\" && (e.default = this.traverseContentResource(e.default)), e.item && e.item !== \"rdf:nil\" && (e.item = e.item.map((i) => this.traverseContentResource(i))), e;\n }\n traverseService(e) {\n return this.traverseType(this.traverseLinking(e), this.traversals.service);\n }\n traverseContentResource(e) {\n return e[\"@type\"] === \"oa:Choice\" ? this.traverseChoice(e) : this.traverseType(\n this.traverseDescriptive(this.traverseLinking(e)),\n this.traversals.contentResource\n );\n }\n traverseUnknown(e) {\n if (!e[\"@type\"] || typeof e == \"string\")\n return e;\n switch (Ms(e)) {\n case \"sc:Collection\":\n return this.traverseCollection(e);\n case \"sc:Manifest\":\n return this.traverseManifest(e);\n case \"sc:Canvas\":\n return this.traverseCanvas(e);\n case \"sc:Sequence\":\n return this.traverseSequence(e);\n case \"sc:Range\":\n return this.traverseRange(e);\n case \"oa:Annotation\":\n return this.traverseAnnotation(e);\n case \"sc:AnnotationList\":\n return this.traverseAnnotationList(e);\n case \"sc:Layer\":\n return this.traverseLayer(e);\n case \"Service\":\n return this.traverseService(e);\n case \"oa:Choice\":\n return this.traverseChoice(e);\n case \"ContentResource\":\n return this.traverseContentResource(e);\n }\n return e.profile ? this.traverseService(e) : e;\n }\n traverseImageResource(e) {\n const i = Array.isArray(e), r = Array.isArray(e) ? e : [e], n = [];\n for (const s of r)\n typeof s == \"string\" ? n.push(\n this.traverseContentResource({\n \"@id\": s,\n \"@type\": \"dctypes:Image\"\n })\n ) : n.push(this.traverseContentResource(s));\n return !i && !this.options.convertPropsToArray ? n[0] : n;\n }\n traverseDescriptive(e) {\n return e.thumbnail && (e.thumbnail = this.traverseImageResource(e.thumbnail)), e.logo && (e.logo = this.traverseImageResource(e.logo)), e;\n }\n traverseOneOrMoreServices(e) {\n const i = Array.isArray(e), r = Array.isArray(e) ? e : [e], n = [];\n for (const s of r)\n n.push(this.traverseService(s));\n return !i && !this.options.convertPropsToArray ? n[0] : n;\n }\n traverseLinking(e) {\n return e.related && (e.related = this.traverseOneOrManyType(e.related, this.traversals.contentResource)), e.rendering && (e.rendering = this.traverseOneOrManyType(e.rendering, this.traversals.contentResource)), e.service && (e.service = this.traverseOneOrMoreServices(e.service)), e.seeAlso && (e.seeAlso = this.traverseOneOrManyType(e.seeAlso, this.traversals.contentResource)), e.within && (typeof e.within == \"string\" || (e.within = this.traverseOneOrManyType(\n e.within,\n this.traversals.contentResource\n ))), e.startCanvas && (typeof e.startCanvas == \"string\" ? e.startCanvas = this.traverseType(\n { \"@id\": e.startCanvas, \"@type\": \"sc:Canvas\" },\n this.traversals.canvas\n ) : e.startCanvas && this.traverseType(e.startCanvas, this.traversals.canvas)), e.contentLayer && (typeof e.contentLayer == \"string\" ? e.contentLayer = this.traverseLayer({\n \"@id\": e.contentLayer,\n \"@type\": \"sc:Layer\"\n }) : e.contentLayer = this.traverseLayer(e.contentLayer)), e;\n }\n traverseOneOrManyType(e, i) {\n if (!Array.isArray(e))\n if (this.options.convertPropsToArray)\n e = [e];\n else\n return this.traverseType(e, i);\n return e.map((r) => this.traverseType(r, i));\n }\n traverseType(e, i) {\n return i.reduce((r, n) => {\n const s = n(r);\n return typeof s > \"u\" && !this.options.allowUndefinedReturn ? r : s;\n }, e);\n }\n}\nconst ks = \"http://library.stanford.edu/iiif/image-api/compliance.html#level0\", ji = \"http://library.stanford.edu/iiif/image-api/compliance.html#level1\", Di = \"http://library.stanford.edu/iiif/image-api/compliance.html#level2\", Fs = \"http://library.stanford.edu/iiif/image-api/conformance.html#level0\", Ni = \"http://library.stanford.edu/iiif/image-api/conformance.html#level1\", $i = \"http://library.stanford.edu/iiif/image-api/conformance.html#level2\", Ls = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0\", qi = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1\", Ui = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\", Ps = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0\", Wi = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1\", zi = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2\", js = \"http://iiif.io/api/image/1/level0.json\", Ds = \"http://iiif.io/api/image/1/profiles/level0.json\", Vi = \"http://iiif.io/api/image/1/level1.json\", Bi = \"http://iiif.io/api/image/1/profiles/level1.json\", Gi = \"http://iiif.io/api/image/1/level2.json\", Qi = \"http://iiif.io/api/image/1/profiles/level2.json\", Ns = \"http://iiif.io/api/image/2/level0.json\", $s = \"http://iiif.io/api/image/2/profiles/level0.json\", Hi = \"http://iiif.io/api/image/2/level1.json\", Yi = \"http://iiif.io/api/image/2/profiles/level1.json\", Ji = \"http://iiif.io/api/image/2/level2.json\", Xi = \"http://iiif.io/api/image/2/profiles/level2.json\", qs = \"level0\", Ki = \"level1\", Zi = \"level2\", Us = \"http://iiif.io/api/image/2/level0\", er = \"http://iiif.io/api/image/2/level1\", tr = \"http://iiif.io/api/image/2/level2\", Ws = [\n er,\n tr,\n ji,\n Di,\n Ni,\n $i,\n qi,\n Ui,\n Wi,\n zi,\n Vi,\n Bi,\n Gi,\n Qi,\n Hi,\n Yi,\n Ji,\n Xi,\n Ki,\n Zi\n], zs = [\n Us,\n er,\n tr,\n ks,\n ji,\n Di,\n Fs,\n Ni,\n $i,\n Ls,\n qi,\n Ui,\n Ps,\n Wi,\n zi,\n js,\n Ds,\n Vi,\n Bi,\n Gi,\n Qi,\n Ns,\n $s,\n Hi,\n Yi,\n Ji,\n Xi,\n qs,\n Ki,\n Zi\n];\nfunction J(t) {\n for (const e in t)\n (typeof t[e] > \"u\" || t[e] === null) && delete t[e];\n return t;\n}\nconst lt = {\n attributionLabel: \"Attribution\",\n lang: \"none\",\n providerId: \"http://example.org/provider\",\n providerName: \"Unknown\"\n};\nfunction be(t, e = \"none\") {\n if (!t)\n return {};\n const i = Array.isArray(t) ? t : [t], r = {};\n for (const n of i) {\n if (typeof n == \"string\") {\n r[e] = r[e] ? r[e] : [], r[e].push(n || \"\");\n continue;\n }\n if (!n[\"@language\"]) {\n r[e] = r[e] ? r[e] : [], r[e].push(n[\"@value\"] || \"\");\n continue;\n }\n const s = n[\"@language\"];\n r[s] = r[s] ? r[s] : [], r[s].push(n[\"@value\"] || \"\");\n }\n return r;\n}\nfunction ir(t) {\n if (Array.isArray(t))\n return ir(t.find((e) => typeof e == \"string\"));\n if (zs.indexOf(t) !== -1)\n return \"level2\";\n if (Ws.indexOf(t) !== -1)\n return \"level1\";\n if (typeof t == \"string\")\n return t;\n}\nfunction Vs(t) {\n const e = Array.isArray(t) ? t : [t];\n for (const i of e)\n switch (i) {\n case \"http://iiif.io/api/image/2/context.json\":\n case \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\":\n return \"ImageService2\";\n case \"http://iiif.io/api/image/1/context.json\":\n case \"http://library.stanford.edu/iiif/image-api/1.1/context.json\":\n return \"ImageService1\";\n case \"http://iiif.io/api/annex/openannotation/context.json\":\n return \"ImageApiSelector\";\n }\n}\nfunction Bs(t) {\n switch (t) {\n case \"http://iiif.io/api/image/2/level0.json\":\n case \"http://iiif.io/api/image/2/level1.json\":\n case \"http://iiif.io/api/image/2/level2.json\":\n return \"ImageService2\";\n case \"http://iiif.io/api/auth/1/kiosk\":\n case \"http://iiif.io/api/auth/1/login\":\n case \"http://iiif.io/api/auth/1/clickthrough\":\n case \"http://iiif.io/api/auth/1/external\":\n case \"http://iiif.io/api/auth/0/kiosk\":\n case \"http://iiif.io/api/auth/0/login\":\n case \"http://iiif.io/api/auth/0/clickthrough\":\n case \"http://iiif.io/api/auth/0/external\":\n return \"AuthCookieService1\";\n case \"http://iiif.io/api/auth/1/token\":\n case \"http://iiif.io/api/auth/0/token\":\n return \"AuthTokenService1\";\n case \"http://iiif.io/api/auth/1/logout\":\n case \"http://iiif.io/api/auth/0/logout\":\n return \"AuthLogoutService1\";\n case \"http://iiif.io/api/search/1/search\":\n case \"http://iiif.io/api/search/0/search\":\n return \"SearchService1\";\n case \"http://iiif.io/api/search/1/autocomplete\":\n case \"http://iiif.io/api/search/0/autocomplete\":\n return \"AutoCompleteService1\";\n }\n}\nfunction Qt(t) {\n for (const e of [\"sc\", \"oa\", \"dcterms\", \"dctypes\", \"iiif\"])\n if (t.startsWith(`${e}:`))\n return t.slice(e.length + 1);\n return t;\n}\nconst Gs = [\"Collection\", \"Manifest\", \"Annotation\", \"AnnotationPage\", \"Range\", \"Service\"];\nfunction Ot(t) {\n const e = t[\"@id\"] || t.id;\n let i = t[\"@type\"] || t.type;\n const r = t.profile || void 0, n = t[\"@context\"] || void 0;\n if (r) {\n const s = Bs(r);\n if (s)\n return s;\n }\n if (n) {\n const s = Vs(n);\n if (s)\n return s;\n }\n if (i) {\n if (Array.isArray(i)) {\n if (i.indexOf(\"oa:CssStylesheet\") !== -1)\n return \"CssStylesheet\";\n if (i.indexOf(\"cnt:ContentAsText\") !== -1)\n return \"TextualBody\";\n i = i[0];\n }\n for (const s of [\"sc\", \"oa\", \"dcterms\", \"dctypes\", \"iiif\"])\n if (i.startsWith(`${s}:`)) {\n i = i.slice(s.length + 1);\n break;\n }\n switch (i) {\n case \"Layer\":\n return \"AnnotationCollection\";\n case \"AnnotationList\":\n return \"AnnotationPage\";\n case \"cnt:ContentAsText\":\n return \"TextualBody\";\n }\n }\n if (i && Gs.indexOf(i) !== -1)\n return i;\n if (t.format) {\n if (t.format.startsWith(\"image/\"))\n return \"Image\";\n if (t.format.startsWith(\"text/\") || t.format === \"application/pdf\")\n return \"Text\";\n if (t.format.startsWith(\"application/\"))\n return \"Dataset\";\n }\n return e && (e.endsWith(\".jpg\") || e.endsWith(\".png\") || e.endsWith(\".jpeg\")) ? \"Image\" : i || \"unknown\";\n}\nconst Qs = /http(s)?:\\/\\/(creativecommons.org|rightsstatements.org)[^\"'\\\\<\\n]+/gm;\nfunction Hs(t) {\n const e = t.match(Qs);\n return e ? e[0] : t;\n}\nfunction Ys(t, e = \"Rights/License\", i = \"none\") {\n let r = null;\n const n = [], s = Array.isArray(t) ? t : [t];\n for (const a of s) {\n const c = a ? Hs(a) : void 0;\n if (c && (c.indexOf(\"creativecommons.org\") !== -1 || c.indexOf(\"rightsstatements.org\") !== -1)) {\n c.startsWith(\"https://\") ? r = `http://${c.slice(8)}` : r = c;\n continue;\n }\n c && n.push({\n label: { [i]: [e] },\n value: { [i]: [c] }\n });\n }\n return [r, n];\n}\nconst Js = [\n \"http://iiif.io/api/presentation/2/context.json\",\n \"http://iiif.io/api/image/2/context.json\",\n \"http://iiif.io/api/image/1/context.json\",\n \"http://library.stanford.edu/iiif/image-api/1.1/context.json\",\n \"http://iiif.io/api/search/1/context.json\",\n \"http://iiif.io/api/search/0/context.json\",\n \"http://iiif.io/api/auth/1/context.json\",\n \"http://iiif.io/api/auth/0/context.json\",\n \"http://iiif.io/api/annex/openannotation/context.json\"\n];\nfunction Xs(t) {\n if (t) {\n const e = Array.isArray(t) ? t : [t], i = [];\n for (const r of e)\n r === \"http://iiif.io/api/presentation/2/context.json\" && i.push(\"http://iiif.io/api/presentation/3/context.json\"), Js.indexOf(r) === -1 && i.push(r);\n if (e.length)\n return i.length === 1 ? i[0] : i;\n }\n}\nfunction Ks(t) {\n return t ? t.map((e) => ({\n label: be(e.label),\n value: be(e.value)\n })) : [];\n}\nlet Ht = 0;\nfunction rr(t, e) {\n const i = encodeURI(t.id || t[\"@id\"] || \"\").trim();\n return i && e ? `${i}/${e}` : i || (Ht++, `http://example.org/${t[\"@type\"]}${e ? `/${e}` : \"\"}/${Ht}`);\n}\nfunction X(t) {\n const e = [...t.behavior || []];\n t.viewingHint && e.push(t.viewingHint);\n let i;\n return Array.isArray(t.motivation) ? i = t.motivation.map(Qt) : t.motivation && (i = Qt(t.motivation)), {\n \"@context\": t[\"@context\"] ? Xs(t[\"@context\"]) : void 0,\n id: (t[\"@id\"] || rr(t)).trim(),\n type: Ot(t),\n behavior: e.length ? e : void 0,\n height: t.height ? t.height : void 0,\n width: t.width ? t.width : void 0,\n motivation: i,\n viewingDirection: t.viewingDirection,\n profile: t.profile,\n format: t.format ? t.format : void 0,\n duration: void 0,\n timeMode: void 0\n };\n}\nfunction K(t) {\n const [e, i] = Ys(t.license), r = [...t.metadata ? Ks(t.metadata) : [], ...i];\n return {\n rights: e,\n metadata: r.length ? r : void 0,\n label: t.label ? be(t.label) : void 0,\n requiredStatement: t.attribution ? {\n label: be(lt.attributionLabel),\n value: be(t.attribution)\n } : void 0,\n navDate: t.navDate,\n summary: t.description ? be(t.description) : void 0,\n thumbnail: Zs(t.thumbnail)\n };\n}\nfunction Zs(t) {\n return t && (Array.isArray(t) ? t : [t]).map((i) => typeof i == \"string\" ? { id: i, type: \"Image\" } : (i.type === \"unknown\" && (i.type = \"Image\"), i));\n}\nfunction ea(t) {\n if (!t.within)\n return;\n const e = Array.isArray(t.within) ? t.within : [t.within], i = [];\n for (const r of e)\n if (typeof r == \"string\") {\n if (r)\n switch (t[\"@type\"]) {\n case \"sc:Manifest\":\n i.push({ id: r, type: \"Collection\" });\n break;\n }\n } else\n r[\"@id\"] && i.push({\n id: r[\"@id\"],\n type: Ot(r)\n });\n return i.length ? i : void 0;\n}\nfunction ae(t) {\n const e = t.related ? Array.isArray(t.related) ? t.related : [t.related] : [], i = t.contentLayer;\n return {\n provider: t.logo || e.length ? [\n {\n id: lt.providerId,\n type: \"Agent\",\n homepage: e.length ? [e[0]] : void 0,\n logo: t.logo ? Array.isArray(t.logo) ? t.logo : [t.logo] : void 0,\n label: be(lt.providerName)\n }\n ] : void 0,\n partOf: ea(t),\n rendering: t.rendering,\n seeAlso: t.seeAlso,\n start: t.startCanvas,\n service: t.service ? we(t.service) : void 0,\n supplementary: i ? [i] : void 0\n };\n}\nfunction ta(t) {\n return {\n chars: t.chars,\n format: t.format ? t.format : void 0,\n language: t.language\n };\n}\nfunction ia(t) {\n return J({\n ...X(t),\n ...K(t),\n ...ae(t),\n items: t.members\n });\n}\nfunction ra(t) {\n const e = [], i = [];\n let r;\n for (const s of t.sequences || [])\n s.canvases.length && e.push(...s.canvases), s.behavior && i.push(...s.behavior), s.startCanvas && (r = s.startCanvas);\n const n = X(t);\n return i.length && (n.behavior ? n.behavior.push(...i) : n.behavior = i), J({\n ...n,\n ...K(t),\n ...ae(t),\n start: r,\n items: e,\n structures: t.structures\n });\n}\nfunction na(t) {\n return J({\n ...X(t),\n ...K(t),\n ...ae(t),\n annotations: t.otherContent && t.otherContent.length ? t.otherContent : void 0,\n items: t.images && t.images.length ? [\n {\n id: rr(t, \"annotation-page\"),\n type: \"AnnotationPage\",\n items: t.images\n }\n ] : void 0\n });\n}\nfunction sa(t) {\n return J({\n ...X(t),\n ...K(t),\n ...ae(t),\n items: t.resources && t.resources.length ? t.resources : void 0\n });\n}\nfunction aa(t) {\n return !t.canvases || t.canvases.length === 0 ? {\n canvases: [],\n behavior: []\n } : {\n canvases: t.canvases,\n behavior: t.viewingHint ? [t.viewingHint] : [],\n startCanvas: t.startCanvas\n };\n}\nfunction oa(t) {\n function e(i) {\n if (Array.isArray(i)) {\n if (i.length > 1)\n return { type: \"List\", items: i.map(e) };\n i = i[0];\n }\n if (typeof i == \"string\")\n return encodeURI(i).trim();\n if (\"@type\" in i) {\n let r;\n if (typeof i.full == \"string\")\n r = i.full;\n else if (i.full[\"@type\"] === \"dctypes:Image\")\n r = { id: i.full[\"@id\"], type: \"Image\" };\n else if (i.full[\"@type\"] === \"sc:Canvas\")\n r = { id: i.full[\"@id\"], type: \"Canvas\" };\n else\n throw new Error(`Unsupported source type on annotation: ${i.full[\"@type\"]}`);\n return {\n type: \"SpecificResource\",\n source: r,\n selector: ft(i.selector)\n };\n } else\n return encodeURI(i[\"@id\"]).trim();\n }\n return J({\n ...X(t),\n ...K(t),\n ...ae(t),\n target: e(t.on),\n body: Array.isArray(t.resource) ? t.resource.map(ut) : ut(t.resource)\n });\n}\nfunction ut(t) {\n const e = t;\n return J({\n ...X(e),\n ...K(e),\n ...ae(e),\n ...ta(e)\n });\n}\nfunction ca(t) {\n const e = [];\n return t.default && t.default !== \"rdf:nil\" && e.push(t.default), t.item && t.item !== \"rdf:nil\" && e.push(...t.item), {\n ...X(t),\n ...K(t),\n items: e\n };\n}\nfunction la(t) {\n return J({\n ...X(t),\n ...K(t),\n ...ae(t),\n items: t.members\n });\n}\nfunction ua(t) {\n const { \"@id\": e, \"@type\": i, \"@context\": r, profile: n, ...s } = t, a = {};\n return e && (a[\"@id\"] = e), a[\"@type\"] = Ot(t), a[\"@type\"] === \"unknown\" && (r && r.length && (a[\"@context\"] = r), a[\"@type\"] = \"Service\"), n && (a.profile = ir(n)), J({\n ...a,\n ...s\n });\n}\nfunction fa(t) {\n return J({\n ...X(t),\n ...K(t),\n ...ae(t)\n });\n}\nconst pa = new Et({\n collection: [ia],\n manifest: [ra],\n canvas: [na],\n annotationList: [sa],\n sequence: [aa],\n annotation: [oa],\n contentResource: [ut],\n choice: [ca],\n range: [la],\n service: [ua],\n layer: [fa]\n});\nfunction ha(t) {\n return t && t[\"@context\"] && (t[\"@context\"] === \"http://iiif.io/api/presentation/2/context.json\" || t[\"@context\"].indexOf(\"http://iiif.io/api/presentation/2/context.json\") !== -1 || t[\"@context\"] === \"http://www.shared-canvas.org/ns/context.json\") || t[\"@context\"] === \"http://iiif.io/api/image/2/context.json\" ? pa.traverseUnknown(t) : t;\n}\nfunction ft(t) {\n if ((Array.isArray(t[\"@type\"]) && t[\"@type\"].includes(\"oa:SvgSelector\") || t[\"@type\"] == \"oa:SvgSelector\") && (\"chars\" in t || \"value\" in t))\n return {\n type: \"SvgSelector\",\n value: \"chars\" in t ? t.chars : t.value\n };\n if (t[\"@type\"] === \"oa:FragmentSelector\")\n return {\n type: \"FragmentSelector\",\n value: t.value\n };\n if (t[\"@type\"] === \"oa:Choice\")\n return [\n ft(t.default),\n ...(Array.isArray(t.item) ? t.item : [t.item]).map(\n ft\n )\n ];\n if (t[\"@type\"] == \"iiif:ImageApiSelector\")\n return {\n type: \"ImageApiSelector\",\n region: \"region\" in t ? t.region : void 0,\n rotation: \"rotation\" in t ? t.rotation : void 0\n };\n throw new Error(`Unsupported selector type: ${t[\"@type\"]}`);\n}\nfunction pt(t, e = {}) {\n if (Array.isArray(t))\n return pt(t[0]);\n if (typeof t == \"string\") {\n const [i, r] = t.split(\"#\");\n return r ? {\n type: \"SpecificResource\",\n source: { id: i, type: e.typeHint || \"Unknown\" },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n } : {\n type: \"SpecificResource\",\n source: { id: i, type: e.typeMap && e.typeMap[i] || e.typeHint || \"Unknown\" }\n };\n }\n if (t.type === \"Choice\" || t.type === \"List\" || t.type === \"Composite\" || t.type === \"Independents\")\n return pt(t.items[0]);\n if (t.type === \"SpecificResource\")\n return t.source.type === \"Canvas\" && t.source.partOf && typeof t.source.partOf == \"string\" && (t.source.partOf = [\n {\n id: t.source.partOf,\n type: \"Manifest\"\n }\n ]), t.selector ? {\n type: \"SpecificResource\",\n source: t.source,\n selector: t.selector\n } : {\n type: \"SpecificResource\",\n source: t.source\n };\n if (t.id) {\n t.type === \"Canvas\" && t.partOf && typeof t.partOf == \"string\" && (t.partOf = [\n {\n id: t.partOf,\n type: \"Manifest\"\n }\n ]);\n const [i, r] = t.id.split(\"#\");\n return r ? {\n type: \"SpecificResource\",\n source: {\n ...t,\n id: i\n },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n } : {\n type: \"SpecificResource\",\n source: {\n ...t,\n id: i\n }\n };\n }\n return {\n type: \"SpecificResource\",\n source: t\n };\n}\nfunction da() {\n return {\n Collection: {},\n Manifest: {},\n Canvas: {},\n AnnotationPage: {},\n AnnotationCollection: {},\n Annotation: {},\n ContentResource: {},\n Range: {},\n Service: {},\n Selector: {},\n Agent: {}\n };\n}\nfunction nr(t, e) {\n if (typeof t == \"string\")\n return { id: t, type: e };\n if (!t.id)\n throw new Error(`Invalid resource does not have an ID (${JSON.stringify(t)}, ${e})`);\n return t;\n}\nfunction va(t, e) {\n return (i, r) => {\n const n = t[i] ? t[i] : {};\n return (s, a) => {\n const c = nr(s, r || i);\n return c && c.id && i ? (n[c.id] = n[c.id] ? dt(n[c.id], c, {\n parent: a.parent,\n isTopLevel: e.id === c.id\n }) : dt({ id: c.id, type: c.type }, c, {\n parent: a.parent,\n isTopLevel: e.id === c.id\n }), {\n id: c.id,\n type: i === \"ContentResource\" ? i : c.type\n }) : c;\n };\n };\n}\nfunction ht(t, e, i) {\n if (!e)\n return t;\n if (Array.isArray(t)) {\n if (!Array.isArray(e))\n throw new Error(\"Cannot merge array with non-array\");\n const r = [...t];\n for (const n of e)\n if (n[\"@id\"] && !n.id && (n.id = n[\"@id\"]), n[\"@type\"] && !n.type && (n.type = n[\"@type\"]), n != null)\n if (Array.isArray(n))\n r.push(n);\n else if (typeof n == \"object\" && n.id && n.type) {\n const s = r.findIndex((a) => a.id === n.id && a.type === n.type);\n s >= 0 && (r[s] = ht(r[s], n));\n } else\n t.indexOf(n) === -1 && r.push(n);\n return r;\n } else if (typeof t == \"object\") {\n if (Array.isArray(e) || typeof e != \"object\")\n throw new Error(\"Cannot merge object with non-object\");\n const r = { ...t }, n = [], s = [], a = Object.keys(t).filter((p) => p !== M && p !== \"id\" && p !== \"type\"), c = {}, u = {};\n for (const [p, f] of Object.entries(e)) {\n if (p === M || p === \"id\" || p === \"type\")\n continue;\n const v = r[p];\n v === f ? s.push(p) : v === b || !v ? (n.push(p), r[p] = f) : (v && f && (c[p] = v, u[p] = f), r[p] = ht(v, f), r[p] === c[p] && (s.push(p), delete c[p]));\n }\n if (i && (i.parent && i.parent.id || i.isTopLevel)) {\n const p = [], f = {};\n if (i.parent ? f[z] = i.parent.id : i.isTopLevel && (f[z] = t.id), r[M] && r[M].length) {\n const v = !(r[M] || []).find((m) => m[\"@explicit\"]), y = n.length > 0 || s.length !== a.length;\n if (v && y)\n for (const m of r[M]) {\n const d = { ...m }, A = Object.keys(c);\n if (d) {\n d[\"@explicit\"] = !0;\n for (const x of a)\n x !== M && (d[x] = Le);\n for (const x of A)\n d[x] = c[x];\n }\n p.push(d);\n }\n else\n p.push(...r[M]);\n if (y) {\n const m = Object.keys(u);\n f[\"@explicit\"] = !0;\n for (const d of n)\n f[d] = Le;\n for (const d of s)\n f[d] = Le;\n for (const d of m)\n f[d] = u[d];\n }\n }\n f.id = r.id, f.type = r.type, p.push(f), r[M] = p;\n }\n return r;\n } else if (t)\n return t;\n return e;\n}\nfunction dt(t, e, i) {\n if (typeof t == \"string\")\n return t;\n if (e.id !== t.id || e.type !== t.type) {\n if (e.type === \"ImageService3\")\n return e;\n if (t.type === \"ImageService3\")\n return t;\n throw new Error(\n `Can only merge entities with identical identifiers and type! ${e.type}(${e.id}) => ${t.type}(${t.id})`\n );\n }\n return ht({ ...t }, e, i);\n}\nfunction ya(t) {\n return (e, i) => (r) => {\n const { id: n, type: s } = nr(r, i || e);\n if (typeof n > \"u\")\n throw new Error(\"Found invalid entity without an ID.\");\n return e === \"ContentResource\" || e === \"Service\" ? t[n] = e : t[n] = s, r;\n };\n}\nfunction ma(t) {\n const e = Object.assign({}, t);\n if (e[\"@id\"] && (e.id = e[\"@id\"]), e[\"@type\"] && (e.type = e[\"@type\"]), e.service) {\n const i = [];\n e.service = Array.isArray(e.service) ? e.service : [e.service];\n for (const r of e.service)\n i.push({\n id: r[\"@id\"] || r.id,\n type: r[\"@type\"] || r.type\n });\n e.service = i;\n }\n return Object.assign({}, Ts, e);\n}\nfunction ga(t) {\n return (e) => {\n t.Service = t.Service ? t.Service : {};\n const i = e.id || e[\"@id\"], r = ma(e);\n return r && r.id && (t.Service[r.id] ? t.Service[i] = dt(t.Service[i], r) : t.Service[i] = r), e;\n };\n}\nfunction Aa(t) {\n const e = JSON.stringify(t);\n let i = 5381, r = e.length;\n for (; r; )\n i = i * 33 ^ e.charCodeAt(--r);\n const s = (i >>> 0).toString(16);\n return s.length % 2 ? \"0\" + s : s;\n}\nfunction tt(t) {\n return (e) => typeof e == \"string\" ? { id: e, type: t } : e.id ? e.type ? e : { type: t, ...e } : { id: `vault://${Aa(e)}`, type: t, ...e };\n}\nfunction xe(t) {\n return (e) => ({\n ...t,\n ...e\n });\n}\nfunction _e(t) {\n return Array.isArray(t) ? t : [t];\n}\nfunction ba(t) {\n return t.body && (t.body = _e(t.body)), t.seeAlso && (t.seeAlso = _e(t.seeAlso)), t.audience && (t.audience = _e(t.audience)), t.accessibility && (t.accessibility = _e(t.accessibility)), t.motivation && (t.motivation = _e(t.motivation)), t;\n}\nfunction sr(t, { typeHint: e, partOfTypeHint: i } = {}) {\n if (typeof t == \"string\" && (t = { id: t, type: e || \"unknown\" }), ne(t))\n return typeof t.source == \"string\" && (t.source = { id: t.source, type: e || \"unknown\" }), t.source.type === \"Canvas\" && t.source.partOf && typeof t.source.partOf == \"string\" && (t.source.partOf = [\n {\n id: t.source.partOf,\n type: i || \"Manifest\"\n }\n ]), t;\n let r;\n if ((t.id || \"\").indexOf(\"#\") !== -1) {\n const [n, s] = (t.id || \"\").split(\"#\");\n t.id = n, s && (r = {\n type: \"FragmentSelector\",\n value: s\n });\n }\n return {\n type: \"SpecificResource\",\n source: t,\n selector: r\n };\n}\nfunction Sa(t) {\n const e = Object.assign({}, t);\n return t && t.items && (e.items = t.items.map((i) => typeof i == \"string\" || i.type === \"Canvas\" ? sr(i) : i)), e;\n}\nfunction xa(t) {\n const e = Object.assign({}, t);\n return e.start ? (e.start = sr(e.start, { typeHint: \"Canvas\" }), e) : t;\n}\nfunction wa(t) {\n const e = Object.assign({}, t);\n return e.target ? (e.target = pt(e.target, { typeHint: \"Canvas\" }), e) : t;\n}\nfunction Ca(t) {\n return t;\n}\nfunction it(t) {\n return typeof t.items > \"u\" && (t[Pe] = !0), t;\n}\nfunction Ra(t) {\n const e = ha(t), i = da(), r = {}, n = va(i, e), s = ya(r), c = new It({\n collection: [\n it,\n xe(Rs),\n s(\"Collection\"),\n n(\"Collection\")\n ],\n manifest: [\n it,\n xe(Is),\n xa,\n s(\"Manifest\"),\n n(\"Manifest\")\n ],\n canvas: [\n xe(Cs),\n s(\"Canvas\"),\n n(\"Canvas\")\n ],\n annotationPage: [\n it,\n tt(\"AnnotationPage\"),\n xe(ws),\n s(\"AnnotationPage\"),\n n(\"AnnotationPage\")\n ],\n annotation: [\n tt(\"Annotation\"),\n ba,\n wa,\n s(\"Annotation\"),\n n(\"Annotation\")\n ],\n contentResource: [\n tt(\"ContentResource\"),\n s(\"ContentResource\"),\n n(\"ContentResource\")\n ],\n range: [\n xe(Es),\n Sa,\n s(\"Range\", \"Canvas\"),\n n(\"Range\", \"Canvas\")\n ],\n agent: [\n xe(Os),\n s(\"Agent\"),\n n(\"Agent\")\n ],\n specificResource: [\n Ca\n ],\n service: [\n ga(i)\n ]\n }).traverseUnknown(e);\n return { entities: i, resource: c, mapping: r };\n}\nfunction Ia(t) {\n const e = {};\n for (const [i, r] of t) {\n if (i === Li && r !== U)\n return r;\n r !== U && typeof r < \"u\" && r !== null && (e[i] = r);\n }\n return e;\n}\nfunction Ea(t, e, i) {\n if (!e.type || !e.id)\n throw new Error(\"Unknown entity\");\n if (!i[e.type])\n throw new Error(`Serializer not found for ${e.type}`);\n function r(n, s, a = 0) {\n const c = i[n.type];\n if (!c)\n return U;\n if (a > 20)\n throw new Error(\"Circular reference: \" + n.id + \" \" + n.type);\n const [u, p] = Pi(t, n.type ? n : n.id, s) || (n.id && n.type ? n : null);\n if (!u)\n return U;\n const f = c(u, t, {\n parent: s,\n isTopLevel: e.id === n.id,\n fullResource: p\n });\n let v = f.next();\n for (; !v.done; ) {\n const y = v.value;\n let m = U;\n if (y)\n if (Array.isArray(y)) {\n const d = [];\n for (const A of y)\n d.push(r(A, n, a + 1));\n m = d;\n } else\n m = r(y, n, a + 1);\n v = f.next(m);\n }\n return v.value === U ? U : Ia(v.value);\n }\n return r(e);\n}\nfunction je(t, { allowSourceString: e = !0, allowString: i = !1, allowedStringType: r } = {}) {\n const n = (s) => {\n if (e && s && s.source && typeof s.source != \"string\") {\n const a = Object.keys(s.source);\n if (s.source.id && s.source.type && a.length === 2)\n return { ...s, source: s.source.id };\n }\n return s;\n };\n if (t) {\n if (t.source && t.source.partOf)\n return n(t);\n const s = Object.keys(t);\n if (s.length === 2 && t.type && t.source || s.length === 3 && t.type && t.source && s.indexOf(\"selector\") !== -1 && !t.selector)\n return i && (!r || r === t.source.type) ? t.source.id : t.source.type === \"ContentResource\" ? { type: \"SpecificResource\", source: t.source.id } : t.source;\n if (t.selector && !Array.isArray(t.selector) && typeof t.selector != \"string\" && t.selector.type === \"FragmentSelector\") {\n const a = `${t.source.id}#${t.selector.value}`;\n return i ? a : { id: a, type: t.source.type };\n }\n }\n return n(t);\n}\nfunction Ce(t) {\n if (!t)\n return;\n const e = Object.keys(t);\n if (e.length !== 0) {\n if (e.length === 1) {\n const i = e[0];\n if (!i)\n return \"\";\n const r = (t[i] || []).join(\"\");\n return i === \"@none\" || i === \"none\" || i === \"en\" ? r : {\n \"@language\": i,\n \"@value\": r\n };\n }\n return e.map((i) => ({\n \"@language\": i,\n \"@value\": (t[i] || []).join(\"\")\n }));\n }\n}\nfunction ar(t) {\n return Array.isArray(t) ? t.map((e) => ar(e)) : typeof t == \"string\" ? t : t.type && t.type === \"Canvas\" ? t.id : t;\n}\nfunction se(t, e = !1) {\n if (t)\n return t.length > 1 && !e ? t : t[0] || void 0;\n}\nfunction Oa(t) {\n if (t) {\n if (typeof t == \"string\")\n return {\n \"@id\": t\n };\n if (\"@id\" in t) {\n const e = { ...t };\n return delete e[\"@type\"], e;\n }\n return {\n \"@context\": \"http://iiif.io/api/image/2/context.json\",\n \"@id\": t.id,\n profile: `http://iiif.io/api/image/2/profiles/${t.profile}.json`\n };\n }\n}\nfunction pe(t, e) {\n return [\n [\"@id\", t.id],\n [\"@type\", e],\n [\"format\", t.format],\n [\"height\", t.height],\n [\"width\", t.width],\n [\"viewingDirection\", t.viewingDirection !== \"left-to-right\" ? t.viewingDirection : void 0],\n [\"license\", t.license ? t.license : void 0]\n ];\n}\nfunction* he(t) {\n const e = t.provider ? yield t.provider[0] : void 0;\n return [\n [\"label\", Ce(t.label)],\n [\n \"metadata\",\n t.metadata && t.metadata.length ? t.metadata.map((i) => ({\n label: Ce(i.label) || \"\",\n value: Ce(i.value) || \"\"\n })) : void 0\n ],\n [\"description\", Ce(t.summary)],\n [\"thumbnail\", se(yield t.thumbnail)],\n [\"navDate\", t.navDate],\n [\"logo\", e ? se(e.logo) : void 0],\n [\"homepage\", e ? e.homepage : void 0],\n [\"attribution\", t.requiredStatement ? Ce(t.requiredStatement.value) : void 0]\n ];\n}\nfunction* Me(t) {\n const e = t.start && t.start.type && t.start.type === \"SpecificResource\" ? je(t.start) : t.start;\n return [\n [\"seeAlso\", se(yield t.seeAlso)],\n [\"service\", se((t.service || []).map(Oa))],\n [\"rendering\", se(yield t.rendering)],\n [\"startCanvas\", e ? e.id : void 0]\n ];\n}\nfunction Ta(t) {\n return t.type === \"SpecificResource\";\n}\nfunction _a(t) {\n return t && t.type === \"FragmentSelector\";\n}\nfunction Ma(t) {\n if (t && Ta(t)) {\n let e = t.id;\n const i = t.selector ? Array.isArray(t.selector) ? t.selector[0] : t.selector : void 0;\n return _a(i) && (e += \"#\" + i.value), e;\n }\n return t == null ? void 0 : t.id;\n}\nconst ka = {\n Manifest: function* (t, e, { isTopLevel: i }) {\n return [\n ...i ? [[\"@context\", \"http://iiif.io/api/presentation/2/context.json\"]] : [],\n ...pe(t, \"sc:Manifest\"),\n ...yield* he(t),\n ...yield* Me(t),\n [\n \"sequences\",\n [\n {\n \"@id\": `${t.id}/sequence0`,\n \"@type\": \"sc:Sequence\",\n canvases: yield t.items\n }\n ]\n ],\n [\"structures\", yield t.structures]\n ];\n },\n Canvas: function* (t) {\n const i = (yield t.items)[0];\n return [\n ...pe(t, \"sc:Canvas\"),\n ...yield* he(t),\n ...yield* Me(t),\n [\"images\", i ? [i.resources] : void 0],\n [\n \"annotations\",\n t.annotations && t.annotations.length ? se(yield t.annotations) : void 0\n ]\n ];\n },\n AnnotationPage: function* (t) {\n return [\n ...pe(t, \"sc:AnnotationList\"),\n ...yield* he(t),\n [\"resources\", t.items && t.items.length ? se(yield t.items) : void 0]\n ];\n },\n Annotation: function* (t) {\n return [\n [\"@id\", t.id],\n [\"@type\", \"oa:Annotation\"],\n [\"motivation\", \"sc:painting\"],\n [\"on\", ar(t.target)],\n [\"resource\", se(yield t.body, !0)]\n ];\n },\n ContentResource: function* (t) {\n switch (t.type) {\n case \"Image\":\n return [\n ...pe(t, \"dctypes:Image\"),\n ...yield* he(t),\n ...yield* Me(t)\n ];\n case \"Text\":\n case \"Dataset\":\n default:\n return [...pe(t, void 0), ...yield* he(t)];\n }\n },\n AnnotationCollection: function* (t) {\n return [\n [\"@id\", t.id],\n [\"@type\", \"sc:Layer\"],\n [\"label\", Ce(t.label)]\n ];\n },\n Collection: function* (t) {\n return [\n ...pe(t, \"sc:Collection\"),\n ...yield* he(t),\n ...yield* Me(t),\n [\"members\", yield* t.items]\n ];\n },\n Range: function* (t) {\n const e = [], i = [];\n if (t.items)\n for (const r of t.items) {\n const n = r.type === \"SpecificResource\" ? r.source : r;\n if (n) {\n const s = yield n;\n e.push({\n \"@id\": Ma(r),\n \"@type\": n.type,\n label: s ? s.label : void 0,\n within: t.id\n }), n.type === \"Canvas\" && i.push(n.id);\n }\n }\n return [\n ...pe(t, \"sc:Range\"),\n ...yield* he(t),\n ...yield* Me(t),\n [\"canvases\", i.length === e.length ? i : void 0],\n [\"members\", i.length !== e.length ? e : void 0]\n ];\n }\n};\nfunction de(t) {\n var e;\n return [\n [\"id\", (e = t.id) != null && e.startsWith(\"vault://\") ? void 0 : t.id],\n [\"type\", t.type],\n [\"format\", t.format],\n [\"profile\", t.profile],\n [\"height\", t.height || void 0],\n [\"width\", t.width || void 0],\n [\"duration\", t.duration || void 0],\n [\"viewingDirection\", t.viewingDirection !== \"left-to-right\" ? t.viewingDirection : void 0],\n [\"behavior\", t.behavior && t.behavior.length ? t.behavior : void 0],\n [\"timeMode\", t.timeMode],\n [\"motivation\", Array.isArray(t.motivation) ? t.motivation[0] : t.motivation],\n [M, U]\n ];\n}\nfunction T(t) {\n if (t === U || !t || t.length === 0)\n return;\n const e = t.filter((i) => i !== U);\n if (e.length !== 0)\n return e;\n}\nfunction or(t) {\n if (t && t.type && t.type === \"ImageService2\") {\n const { id: e, type: i, profile: r, ...n } = t, s = typeof r == \"string\" ? r : Array.isArray(r) ? r.find((a) => typeof a == \"string\") : \"\";\n return {\n \"@id\": e,\n \"@type\": i,\n profile: s ? s.startsWith(\"http\") ? s : `http://iiif.io/api/image/2/${s}.json` : \"http://iiif.io/api/image/2/level0.json\",\n ...n\n };\n }\n return t;\n}\nfunction Yt(t) {\n if (Array.isArray(t) || (t = t ? [t] : []), !(!t || t.length === 0))\n return t.map(or);\n}\nfunction* te(t) {\n return [\n [\"label\", t.label],\n [\"metadata\", T(t.metadata)],\n [\"summary\", t.summary],\n [\"requiredStatement\", t.requiredStatement],\n [\"rights\", Array.isArray(t.rights) ? t.rights[0] || void 0 : t.rights || void 0],\n [\"navDate\", t.navDate],\n [\"language\", t.language],\n [\"thumbnail\", T(yield t.thumbnail)],\n [\"placeholderCanvas\", yield t.placeholderCanvas],\n [\"accompanyingCanvas\", yield t.accompanyingCanvas],\n [\"provider\", T(yield t.provider)]\n ];\n}\nfunction* ie(t) {\n return [\n [\"seeAlso\", T(yield t.seeAlso)],\n [\"service\", T(Yt(t.service))],\n [\"services\", T(Yt(t.services))],\n [\"rendering\", T(yield t.rendering)],\n [\"supplementary\", T(yield t.supplementary)],\n [\"homepage\", T(yield t.homepage)],\n [\"logo\", T(yield t.logo)],\n [\"partOf\", T(yield t.partOf)],\n [\n \"start\",\n t.start ? je(t.start) : t.start\n ]\n ];\n}\nconst Fa = {\n Manifest: function* (t, e, { isTopLevel: i }) {\n return i ? [\n [\n \"@context\",\n t[\"@context\"] ? t[\"@context\"] : \"http://iiif.io/api/presentation/3/context.json\"\n ],\n ...de(t),\n ...yield* te(t),\n ...yield* ie(t),\n [\"items\", yield t.items],\n [\"structures\", T(yield t.structures)],\n [\"annotations\", T(yield t.annotations)],\n [\"navPlace\", t.navPlace]\n ] : [\n ...de(t),\n ...yield* te(t)\n ];\n },\n Canvas: function* (t) {\n return [\n ...de(t),\n ...yield* te(t),\n ...yield* ie(t),\n [\"items\", yield t.items],\n [\"annotations\", T(yield t.annotations)],\n [\"navPlace\", t.navPlace]\n ];\n },\n Agent: function* (t) {\n return [\n [\"id\", t.id],\n [\"type\", \"Agent\"],\n [\"label\", t.label],\n ...yield* ie(t)\n ];\n },\n AnnotationPage: function* (t) {\n var e;\n const i = Object.entries(t).map(([n, s]) => [n, Array.isArray(s) ? T(s) : s]).filter(([n, s]) => n !== \"items\" && n !== \"id\" && n !== M && n !== z && n !== Pe), r = yield t.items;\n return [\n [\"id\", (e = t.id) != null && e.startsWith(\"vault://\") ? void 0 : t.id],\n ...i,\n ...yield* ie(t),\n [\"items\", r.length || t[Pe] === !1 ? r : U]\n ];\n },\n Service: function* (t) {\n return [[Li, or(t)]];\n },\n Annotation: function* (t) {\n const e = Object.entries(t).map(([r, n]) => r === \"motivation\" ? [r, Array.isArray(n) ? n[0] : n] : r === \"target\" ? [\n r,\n je(n, { allowString: !0, allowSourceString: !0, allowedStringType: \"Canvas\" })\n ] : [r, Array.isArray(n) ? T(n) : n]).filter(([r]) => r !== \"body\" && r !== M && r !== Pe);\n let i;\n if (Array.isArray(t.body)) {\n const r = [];\n for (const n of t.body)\n if (n && ne(n)) {\n const s = {\n ...n\n };\n s.source = yield n.source, r.push(je(s, { allowSourceString: !0 }));\n } else\n r.push(yield n);\n i = r;\n } else\n t.body && ne(t.body) ? (i = {\n ...t.body\n }, i.source = yield t.body.source) : i = yield t.body;\n return [\n ...e,\n ...yield* te(t),\n ...yield* ie(t),\n [\"body\", i.length === 1 ? i[0] : i]\n ];\n },\n ContentResource: function* (t) {\n return La(\n [\n ...de(t),\n ...yield* te(t),\n ...yield* ie(t),\n [\"annotations\", T(yield t.annotations)],\n [\"items\", T(yield t.items)]\n ],\n t\n );\n },\n AnnotationCollection: function* (t) {\n return [\n [\"id\", t.id],\n [\"type\", \"AnnotationCollection\"],\n [\"label\", t.label]\n ];\n },\n Collection: function* (t, e, { isTopLevel: i }) {\n return i ? [\n [\"@context\", \"http://iiif.io/api/presentation/3/context.json\"],\n ...de(t),\n ...yield* te(t),\n ...yield* ie(t),\n [\"items\", T(yield t.items)],\n [\"navPlace\", t.navPlace]\n ] : [...de(t), ...yield* te(t)];\n },\n Range: function* (t) {\n const e = [];\n for (const i of t.items)\n i.type === \"Range\" ? e.push(yield i) : i && i.type === \"SpecificResource\" ? e.push(je(i)) : e.push(i);\n return [\n ...de(t),\n ...yield* te(t),\n ...yield* ie(t),\n [\"items\", e],\n [\"annotations\", T(yield t.annotations)],\n [\"navPlace\", t.navPlace]\n ];\n }\n};\nfunction La(t, e) {\n const i = Object.keys(e), r = t.map(([n]) => n);\n for (const n of i)\n n === M || n === Pe || r.indexOf(n) === -1 && typeof e[n] < \"u\" && t.push([n, e[n]]);\n return t;\n}\nconst _ = function(e) {\n return function() {\n const i = { type: e, getType: () => e, toString: () => e };\n return (r, n) => ({\n ...i,\n ...r !== void 0 && { payload: r },\n ...n !== void 0 && { meta: n }\n });\n };\n}, cr = \"@iiif/IMPORT_ENTITIES\", lr = \"@iiif/MODIFY_ENTITY_FIELD\", ur = \"@iiif/REORDER_ENTITY_FIELD\", fr = \"@iiif/ADD_REFERENCE\", vt = \"@iiif/UPDATE_REFERENCE\", pr = \"@iiif/REMOVE_REFERENCE\", hr = \"@iiif/ADD_METADATA\", dr = \"@iiif/REMOVE_METADATA\", yt = \"@iiif/UPDATE_METADATA\", vr = \"@iiif/REORDER_METADATA\", yr = _(cr)(), Pa = _(lr)(), ja = _(ur)(), Da = _(fr)(), Na = _(pr)(), $a = _(vt)(), qa = _(hr)(), Ua = _(yt)(), Wa = _(dr)(), za = _(vr)(), Va = {\n importEntities: yr,\n modifyEntityField: Pa,\n reorderEntityField: ja,\n addReference: Da,\n removeReference: Na,\n updateReference: $a,\n addMetadata: qa,\n removeMetadata: Wa,\n updateMetadata: Ua,\n reorderMetadata: za\n}, mr = \"@iiif/ADD_MAPPING\", gr = \"@iiif/ADD_MAPPINGS\", Ba = _(mr)(), Ga = _(gr)(), Ar = \"@iiif/SET_META_VALUE\", br = \"@iiif/SET_META_VALUE_DYNAMIC\", Sr = \"@iiif/UNSET_META_VALUE\", Qa = _(Ar)(), Ha = _(br)(), Ya = _(Sr)(), Jt = {\n setMetaValue: Qa,\n setMetaValueDynamic: Ha,\n unsetMetaValue: Ya\n}, mt = \"RESOURCE_ERROR\", xr = \"RESOURCE_LOADING\", gt = \"RESOURCE_READY\", wr = \"@iiif/REQUEST_RESOURCE\", Cr = \"@iiif/REQUEST_ERROR\", Rr = \"@iiif/REQUEST_MISMATCH\", Ir = \"@iiif/REQUEST_COMPLETE\", Ja = \"@iiif/REQUEST_OFFLINE_RESOURCE\", Xa = _(wr)(), Er = _(Cr)(), Ka = _(Rr)(), Za = _(Ir)(), Tt = \"@iiif/BATCH\", eo = \"@iiif/BATCH_IMPORT\", At = _(Tt)(), to = (t, e) => {\n const { entities: i, resource: r, mapping: n } = Ra(e);\n if (r.id === void 0)\n return [Er({ id: t, message: \"ID is not defined in resource.\" })];\n const s = [yr({ entities: i }), Ga({ mapping: n })];\n return r.id !== t && (s.push(Ba({ id: t, type: r.type })), s.push(Ka({ requestId: t, actualId: r.id }))), s.push(Za({ id: t })), s;\n}, Xt = Number.isNaN || function(e) {\n return typeof e == \"number\" && e !== e;\n};\nfunction io(t, e) {\n return !!(t === e || Xt(t) && Xt(e));\n}\nfunction Kt(t, e) {\n if (!Array.isArray(t) || !Array.isArray(e))\n return t === e;\n if (t.length !== e.length)\n return !1;\n for (let i = 0; i < t.length; i++)\n if (!io(t[i], e[i]))\n return !1;\n return !0;\n}\nfunction rt(t, e, i) {\n const r = t.iiif.requests[e], n = t.iiif.mapping[e];\n if (!n || !t.iiif.entities[n][r.resourceUri])\n return;\n const s = t.iiif.entities[n][r.resourceUri];\n if (s && s[M]) {\n const a = s[M].find((c) => i ? c[z] === i.id : c[z] === s.id);\n return Rt(s, a);\n }\n return s;\n}\nfunction Zt(t, e, { waitTimeout: i = 30 } = {}) {\n return async (r, n) => {\n const s = t.getStore(), a = s.getState(), c = a.iiif.requests[r];\n if (c)\n switch (c.loadingState) {\n case mt:\n break;\n case xr: {\n let u, p = !1;\n try {\n const f = await Promise.race([\n new Promise((v, y) => {\n p || (u = s.subscribe(() => {\n const m = s.getState();\n if (m.iiif.requests[r].loadingState === mt) {\n y();\n return;\n }\n if (m.iiif.requests[r].loadingState === gt) {\n const d = rt(m, r);\n d ? v(d) : y();\n }\n }));\n }),\n new Promise(\n (v, y) => setTimeout(() => {\n p = !0, y();\n }, i * 60 * 1e3)\n )\n ]);\n if (u && u(), f)\n return f;\n } catch {\n u && u();\n break;\n }\n break;\n }\n case gt: {\n const u = rt(a, r);\n if (u)\n return u;\n break;\n }\n }\n t.dispatch(Xa({ id: r }));\n try {\n const u = await e(r, n);\n !u.id && !u[\"@id\"] && (u[\"@type\"] && (u[\"@id\"] = r), u.id = r);\n const p = to(r, u);\n return t.dispatch(At({ actions: p })), rt(s.getState(), r);\n } catch (u) {\n throw t.dispatch(Er({ id: r, message: u.toString() })), u;\n }\n };\n}\nfunction Or() {\n return {\n Collection: {},\n Manifest: {},\n Canvas: {},\n AnnotationPage: {},\n AnnotationCollection: {},\n Annotation: {},\n ContentResource: {},\n Range: {},\n Service: {},\n Selector: {},\n Agent: {}\n };\n}\nconst ei = (t) => {\n let e;\n const i = /* @__PURE__ */ new Set(), r = (u, p) => {\n const f = typeof u == \"function\" ? u(e) : u;\n if (!Object.is(f, e)) {\n const v = e;\n e = p ?? typeof f != \"object\" ? f : Object.assign({}, e, f), i.forEach((y) => y(e, v));\n }\n }, n = () => e, c = { setState: r, getState: n, subscribe: (u) => (i.add(u), () => i.delete(u)), destroy: () => {\n i.clear();\n } };\n return e = t(r, n, c), c;\n}, ro = (t) => t ? ei(t) : ei, no = (t, e) => (i, r, n) => (n.dispatch = (s) => (i((a) => t(a, s), !1, s), s), n.dispatchFromDevtools = !0, { dispatch: (...s) => n.dispatch(...s), ...e }), so = no, bt = /* @__PURE__ */ new Map(), ze = (t) => {\n const e = bt.get(t);\n return e ? Object.fromEntries(\n Object.entries(e.stores).map(([i, r]) => [i, r.getState()])\n ) : {};\n}, ao = (t, e, i) => {\n if (t === void 0)\n return {\n type: \"untracked\",\n connection: e.connect(i)\n };\n const r = bt.get(i.name);\n if (r)\n return { type: \"tracked\", store: t, ...r };\n const n = {\n connection: e.connect(i),\n stores: {}\n };\n return bt.set(i.name, n), { type: \"tracked\", store: t, ...n };\n}, oo = (t, e = {}) => (i, r, n) => {\n const { enabled: s, anonymousActionType: a, store: c, ...u } = e;\n let p;\n try {\n p = (s ?? !1) && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch {\n }\n if (!p)\n return t(i, r, n);\n const { connection: f, ...v } = ao(c, p, u);\n let y = !0;\n n.setState = (A, x, S) => {\n const C = i(A, x);\n if (!y)\n return C;\n const E = S === void 0 ? { type: a || \"anonymous\" } : typeof S == \"string\" ? { type: S } : S;\n return c === void 0 ? (f == null || f.send(E, r()), C) : (f == null || f.send(\n {\n ...E,\n type: `${c}/${E.type}`\n },\n {\n ...ze(u.name),\n [c]: n.getState()\n }\n ), C);\n };\n const m = (...A) => {\n const x = y;\n y = !1, i(...A), y = x;\n }, d = t(n.setState, r, n);\n if (v.type === \"untracked\" ? f == null || f.init(d) : (v.stores[v.store] = n, f == null || f.init(\n Object.fromEntries(\n Object.entries(v.stores).map(([A, x]) => [\n A,\n A === v.store ? d : x.getState()\n ])\n )\n )), n.dispatchFromDevtools && typeof n.dispatch == \"function\") {\n let A = !1;\n const x = n.dispatch;\n n.dispatch = (...S) => {\n x(...S);\n };\n }\n return f.subscribe((A) => {\n var x;\n switch (A.type) {\n case \"ACTION\":\n if (typeof A.payload != \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return nt(\n A.payload,\n (S) => {\n if (S.type === \"__setState\") {\n if (c === void 0) {\n m(S.state);\n return;\n }\n Object.keys(S.state).length !== 1 && console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format. \n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n const C = S.state[c];\n if (C == null)\n return;\n JSON.stringify(n.getState()) !== JSON.stringify(C) && m(C);\n return;\n }\n n.dispatchFromDevtools && typeof n.dispatch == \"function\" && n.dispatch(S);\n }\n );\n case \"DISPATCH\":\n switch (A.payload.type) {\n case \"RESET\":\n return m(d), c === void 0 ? f == null ? void 0 : f.init(n.getState()) : f == null ? void 0 : f.init(ze(u.name));\n case \"COMMIT\":\n if (c === void 0) {\n f == null || f.init(n.getState());\n return;\n }\n return f == null ? void 0 : f.init(ze(u.name));\n case \"ROLLBACK\":\n return nt(A.state, (S) => {\n if (c === void 0) {\n m(S), f == null || f.init(n.getState());\n return;\n }\n m(S[c]), f == null || f.init(ze(u.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return nt(A.state, (S) => {\n if (c === void 0) {\n m(S);\n return;\n }\n JSON.stringify(n.getState()) !== JSON.stringify(S[c]) && m(S[c]);\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState: S } = A.payload, C = (x = S.computedStates.slice(-1)[0]) == null ? void 0 : x.state;\n if (!C)\n return;\n m(c === void 0 ? C : C[c]), f == null || f.send(\n null,\n // FIXME no-any\n S\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return y = !y;\n }\n return;\n }\n }), d;\n}, co = oo, nt = (t, e) => {\n let i;\n try {\n i = JSON.parse(t);\n } catch (r) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n r\n );\n }\n i !== void 0 && e(i);\n}, lo = (t) => (e, i, r) => {\n const n = r.subscribe;\n return r.subscribe = (a, c, u) => {\n let p = a;\n if (c) {\n const f = (u == null ? void 0 : u.equalityFn) || Object.is;\n let v = a(r.getState());\n p = (y) => {\n const m = a(y);\n if (!f(v, m)) {\n const d = v;\n c(v = m, d);\n }\n }, u != null && u.fireImmediately && c(v, v);\n }\n return n(p);\n }, t(e, i, r);\n}, uo = lo, fo = (t = {}, e) => {\n switch (e.type) {\n case mr:\n return {\n ...t,\n [e.payload.id]: e.payload.type\n };\n case gr:\n return {\n ...t,\n ...e.payload.mapping\n };\n default:\n return t;\n }\n};\nfunction st(t, e, i, r) {\n return !(!t[i] || !t[i][e] || !t[i][e][r] || !Array.isArray(t[i][e][r]));\n}\nfunction po(t, e) {\n const i = {}, r = [];\n for (const [n, s] of Object.entries(t || {})) {\n r.push(n);\n const a = (e || {})[n];\n if (!a || a.length === 0) {\n i[n] = s;\n continue;\n }\n i[n] = a;\n }\n for (const [n, s] of Object.entries(e || {}))\n r.indexOf(n) === -1 && (i[n] = s);\n return i;\n}\nfunction w(t) {\n return t.payload;\n}\nfunction at(t, e) {\n return typeof t > \"u\" ? e : t;\n}\nconst ho = (t = Or(), e) => {\n var r;\n const i = (n, s) => ({\n ...t,\n [w(e).type]: {\n ...t[w(e).type],\n [w(e).id]: {\n ...n,\n ...s\n }\n }\n });\n switch (e.type) {\n case lr: {\n if (!t[w(e).type] || !t[w(e).type][w(e).id])\n return t;\n const n = t[w(e).type][w(e).id];\n return typeof n == \"string\" ? t : i(n, { [w(e).key]: w(e).value });\n }\n case ur: {\n if (!st(t, w(e).id, w(e).type, w(e).key))\n return t;\n const n = t[w(e).type][w(e).id];\n if (typeof n == \"string\")\n return t;\n const s = Array.from(n[w(e).key]), [a] = s.splice(w(e).startIndex, 1);\n return s.splice(w(e).endIndex, 0, a), i(n, { [w(e).key]: s });\n }\n case cr: {\n const n = Object.keys(w(e).entities), s = { ...t };\n for (const a of n) {\n const c = w(e).entities[a], u = { ...t[a] || {} };\n let p = !1;\n const f = Object.keys(c || {}) || [];\n if (c && f) {\n for (const v of f)\n p = !0, u[v] = t[a][v] ? po(t[a][v], c[v]) : c[v];\n p && (s[a] = u);\n }\n }\n return s;\n }\n case fr: {\n if (!st(t, w(e).id, w(e).type, w(e).key))\n return t;\n const n = t[w(e).type][w(e).id], s = Array.from(n[w(e).key]);\n return s.splice(at(w(e).index, s.length + 1), 0, w(e).reference), i(n, { [w(e).key]: s });\n }\n case vt:\n case pr: {\n if (!st(t, w(e).id, w(e).type, w(e).key))\n return t;\n const n = t[w(e).type][w(e).id], s = Array.from(n[w(e).key]), a = at(\n w(e).index,\n s.findIndex((c) => c && c.id === w(e).reference.id)\n );\n return a === -1 || ((r = s[a]) == null ? void 0 : r.id) !== w(e).reference.id ? t : (e.type === vt ? s.splice(a, 1, w(e).reference) : s.splice(a, 1), i(n, { [w(e).key]: s }));\n }\n case hr: {\n const n = t[w(e).type][w(e).id];\n if (!n)\n return t;\n const s = Array.from(n.metadata || []), a = w(e);\n return s.splice(at(e.payload.beforeIndex, s.length + 1), 0, {\n label: a.label,\n value: a.label\n }), i(n, { metadata: s });\n }\n case vr: {\n const n = t[w(e).type][w(e).id];\n if (typeof n == \"string\" || !n)\n return t;\n const s = Array.from(n.metadata || []), [a] = s.splice(w(e).startIndex, 1);\n return s.splice(w(e).endIndex, 0, a), i(n, { metadata: s });\n }\n case yt:\n case dr: {\n const n = t[w(e).type][w(e).id], s = Array.from(n.metadata || []), a = w(e).atIndex;\n return typeof a > \"u\" || a === -1 || !s[a] ? t : (e.type === yt ? s.splice(a, 1, { label: w(e).label, value: w(e).value }) : s.splice(a, 1), i(n, { metadata: s }));\n }\n default:\n return t;\n }\n}, vo = (t = {}, e) => {\n switch (e.type) {\n case wr:\n case Ja:\n return {\n ...t,\n [e.payload.id]: {\n requestUri: e.payload.id,\n loadingState: xr,\n uriMismatch: !1,\n resourceUri: e.payload.id\n }\n };\n case Rr:\n return {\n ...t,\n [e.payload.requestId]: {\n ...t[e.payload.requestId] || {},\n uriMismatch: !0,\n resourceUri: e.payload.actualId\n },\n [e.payload.actualId]: {\n requestUri: e.payload.requestId,\n loadingState: t[e.payload.requestId].loadingState,\n uriMismatch: !0,\n resourceUri: e.payload.actualId\n }\n };\n case Cr:\n return {\n ...t,\n [e.payload.id]: {\n ...t[e.payload.id] || {},\n loadingState: mt,\n error: e.payload.message\n }\n };\n case Ir:\n return {\n ...t,\n [e.payload.id]: {\n ...t[e.payload.id] || {},\n loadingState: gt,\n error: void 0\n }\n };\n }\n return t;\n}, yo = (t = {}, e) => {\n const { id: i, updateValue: r, value: n, meta: s, key: a } = e && e.payload || {};\n switch (e.type) {\n case Ar:\n return {\n ...t,\n [i]: {\n ...t[i] || {},\n [s]: {\n ...t[i] ? t[i][s] || {} : {},\n [a]: n\n }\n }\n };\n case br:\n return {\n ...t,\n [i]: {\n ...t[i] || {},\n [s]: {\n ...t[i] ? t[i][s] || {} : {},\n [a]: t[i] && t[i][s] ? r(t[i][s][a]) : r(void 0)\n }\n }\n };\n case Sr:\n return t[i] && t[i][s] && t[i][s][a] ? {\n ...t,\n [i]: {\n ...t[i] || {},\n [s]: {\n ...t[i] ? t[i][s] || {} : {},\n [a]: void 0\n }\n }\n } : t;\n default:\n return t;\n }\n};\nfunction Tr(t = {}) {\n const e = Object.keys(t);\n return function(r = {}, n) {\n let s = !1;\n const a = {};\n for (let c = 0; c < e.length; c++) {\n const u = e[c];\n a[u] = t[u](r[u], n), s = s || a[u] !== r[u];\n }\n return s ? a : r;\n };\n}\nfunction mo(t) {\n return (e, i) => i && i.type === Tt ? i.payload.actions.reduce(t, e) : i && i.type === eo ? {\n ...e,\n iiif: {\n ...e.iiif,\n ...i.payload.state\n }\n } : t(e, i);\n}\nconst go = Tr({\n mapping: fo,\n entities: ho,\n requests: vo,\n meta: yo\n});\nfunction Ao() {\n return {\n iiif: {\n entities: Or(),\n meta: {},\n mapping: {},\n requests: {}\n }\n };\n}\nfunction bo(t = {}) {\n const {\n enableDevtools: e = !1,\n iiifStoreName: i = \"iiif\",\n defaultState: r = Ao(),\n customReducers: n = {}\n } = t, s = mo(Tr({ [i]: go, ...n }));\n return ro(uo(co(so(s, r), { enabled: e })));\n}\nfunction So(t) {\n return { all: t = t || /* @__PURE__ */ new Map(), on: function(e, i) {\n var r = t.get(e);\n r ? r.push(i) : t.set(e, [i]);\n }, off: function(e, i) {\n var r = t.get(e);\n r && (i ? r.splice(r.indexOf(i) >>> 0, 1) : t.set(e, []));\n }, emit: function(e, i) {\n var r = t.get(e);\n r && r.slice().map(function(n) {\n n(i);\n }), (r = t.get(\"*\")) && r.slice().map(function(n) {\n n(e, i);\n });\n } };\n}\nfunction L(t, e, i, r = !0) {\n e[Ie] = e[Ie] || [], e[Ie].push(t);\n const n = /* @__PURE__ */ new Map();\n Object.defineProperty(e, t, {\n enumerable: r,\n get() {\n if (typeof e[me][t] > \"u\")\n return;\n const s = e[me][t];\n if (!s)\n return s;\n const a = i.get(e[me][t], {\n parent: this.id ? { id: this.id, type: this.type } : void 0\n });\n return n.has(a) || (n.clear(), n.set(a, ge(a, i))), n.get(a);\n },\n set(s) {\n e[me][t] !== s && (this[ve] ? i.modifyEntityField({ id: this.id, type: this.type }, t, _r(s)) : this[me][t] = s);\n }\n });\n}\nconst me = Symbol.for(\"_refs_\"), ve = Symbol.for(\"_reactive_\"), Ie = Symbol.for(\"_defined_\"), ti = Symbol.for(\"_parent_\");\nfunction xo(t, e = !1, i) {\n const r = {\n id: \"\",\n type: \"unknown\",\n [Ie]: [],\n [me]: {},\n [ti]: i || null,\n [ve]: null,\n is(n) {\n return typeof n == \"string\" ? this.id === n : n.id ? n.id === this.id : !1;\n },\n reactive() {\n if (!this[ve])\n return this[ve] = this.subscribe(() => this.refresh(), !0), () => {\n this.unreactive();\n };\n },\n refresh() {\n if (this.id) {\n const n = this.unwrap();\n for (const s of Object.keys(n || {}))\n this[Ie].includes(s) ? this[me][s] = n[s] : this[s] = n[s];\n }\n },\n unreactive() {\n this[ve] && (this[ve](), this[ve] = null);\n },\n unwrap() {\n if (!this.id)\n throw new Error(\"Invalid object\");\n const n = this[ti];\n return t.get(this.id, { parent: n ? { id: n, type: \"unknown\" } : void 0 });\n },\n toPresentation3() {\n return t.toPresentation3(this.unwrap());\n },\n toPresentation2() {\n return t.toPresentation2(this.unwrap());\n },\n valueOf() {\n return this.unwrap();\n },\n toJSON() {\n const n = this;\n return {\n ...n,\n items: n.items,\n annotations: n.annotations,\n structures: n.structures,\n seeAlso: n.seeAlso,\n service: n.service,\n services: n.services,\n rendering: n.rendering,\n partOf: n.partOf,\n start: n.start,\n supplementary: n.supplementary,\n homepage: n.homepage,\n thumbnail: n.thumbnail,\n placeholderCanvas: n.placeholderCanvas,\n accompanyingCanvas: n.accompanyingCanvas,\n provider: n.provider\n };\n },\n subscribe(n, s = !0) {\n return t.subscribe(\n () => this.id ? t.get(this.id) : null,\n n,\n s\n );\n }\n };\n return L(\"items\", r, t), L(\"annotations\", r, t), L(\"structures\", r, t), L(\"seeAlso\", r, t), L(\"rendering\", r, t), L(\"partOf\", r, t), L(\"start\", r, t, !1), L(\"supplementary\", r, t), L(\"homepage\", r, t), L(\"thumbnail\", r, t), L(\"placeholderCanvas\", r, t, !1), L(\"accompanyingCanvas\", r, t, !1), L(\"provider\", r, t), L(\"body\", r, t), L(\"logo\", r, t), r;\n}\nfunction wo(t) {\n return !!t[Ie];\n}\nfunction _r(t) {\n return Array.isArray(t) ? t.map((e) => _r(e)) : !t || !t.type ? t : { id: t.id, type: t.type };\n}\nfunction ge(t, e, i = !1, r) {\n if (Array.isArray(t))\n return t.map((c) => ge(c, e, i));\n if (!t || !t.type || !t.id)\n return t;\n const n = xo(e, i), s = Object.create(n), a = Object.assign(s, t);\n return i && a.reactive(), a;\n}\nfunction ii(t) {\n switch (t) {\n case \"Image\":\n case \"Video\":\n case \"Sound\":\n case \"Dataset\":\n case \"Text\":\n case \"Composite\":\n case \"List\":\n case \"Independents\":\n case \"Audience\":\n return \"ContentResource\";\n case \"ImageService1\":\n case \"ImageService2\":\n case \"ImageService3\":\n return \"Service\";\n }\n return t;\n}\nclass Co {\n constructor(e, i) {\n D(this, \"options\");\n D(this, \"store\");\n D(this, \"emitter\");\n D(this, \"isBatching\", !1);\n D(this, \"batchQueue\", []);\n D(this, \"remoteFetcher\");\n D(this, \"staticFetcher\");\n D(this, \"defaultFetcher\", (e) => fetch(e).then((i) => i.json()));\n this.options = Object.assign(\n {\n reducers: {},\n customFetcher: this.defaultFetcher,\n enableDevtools: !0\n },\n e || {}\n ), this.store = i || bo({\n customReducers: this.options.reducers,\n defaultState: this.options.defaultState,\n enableDevtools: this.options.enableDevtools\n }), this.emitter = So(), this.remoteFetcher = Zt(this, this.options.customFetcher), this.staticFetcher = Zt(this, (r, n) => n);\n }\n batch(e) {\n this.isBatching = !0;\n try {\n e(this), this.isBatching = !1, this.dispatch(At({ actions: this.batchQueue }));\n } catch (i) {\n throw this.batchQueue = [], this.isBatching = !1, i;\n }\n this.batchQueue = [];\n }\n async asyncBatch(e) {\n this.isBatching = !0;\n try {\n await e(this), this.isBatching = !1, this.dispatch(At({ actions: this.batchQueue }));\n } catch (i) {\n throw this.batchQueue = [], this.isBatching = !1, i;\n }\n this.batchQueue = [];\n }\n modifyEntityField(e, i, r) {\n this.dispatch(\n Va.modifyEntityField({\n id: e.id,\n type: e.type,\n key: i,\n value: r\n })\n );\n }\n dispatch(e) {\n if (this.isBatching)\n this.batchQueue.push(e);\n else {\n if (e.type === Tt) {\n for (const n of e.payload.actions)\n this.emitter.emit(n.type, { action: n, state: this.store.getState() });\n this.store.dispatch(e);\n const r = this.getState();\n for (const n of e.payload.actions)\n this.emitter.emit(`after:${n.type}`, { action: n, state: r });\n return;\n }\n this.emitter.emit(e.type, { action: e, state: this.store.getState() }), this.store.dispatch(e);\n const i = this.store.getState();\n this.emitter.emit(`after:${e.type}`, { action: e, state: i });\n return;\n }\n }\n on(e, i) {\n return this.emitter.on(e, i), () => {\n this.emitter.off(e, i);\n };\n }\n serialize(e, i) {\n return Ea(this.getState().iiif, e, i);\n }\n toPresentation2(e) {\n return this.serialize(e, ka);\n }\n toPresentation3(e) {\n return this.serialize(e, Fa);\n }\n hydrate(e, i, r = {}) {\n return this.get(e, i, { ...r, skipSelfReturn: !1 });\n }\n get(e, i, r = {}) {\n typeof i != \"string\" && (r = i || {}, i = void 0);\n const { skipSelfReturn: n = !0 } = r || {};\n let s = r.parent ? typeof r.parent == \"string\" ? r.parent : r.parent.id : void 0;\n if (Array.isArray(e))\n return e.map((v) => this.get(v, r));\n const a = this.getState();\n if (ne(e) && !r.preserveSpecificResources && (e = e.source), typeof e == \"string\") {\n const v = ii(i || a.iiif.mapping[e]);\n if (!v)\n return n ? null : { id: e, type: \"unknown\" };\n e = { id: e, type: v };\n }\n if (e && e.partOf && !s && !r.skipPartOfCheck) {\n const v = Array.isArray(e.partOf) ? e.partOf[0] : e.partOf;\n v && (typeof v == \"string\" && (s = v), typeof v.id == \"string\" && (s = v.id));\n }\n const c = ii(i || (e == null ? void 0 : e.type)), u = e == null ? void 0 : e.id, p = a.iiif.entities[c];\n if (!p) {\n const v = a.iiif.requests[u];\n return v && v.resourceUri !== u ? this.get(v.resourceUri, r) : n ? null : e;\n }\n const f = p[e.id];\n if (f && f[M]) {\n const v = f[M].find((y) => s ? y[z] === s : y[z] === f.id);\n return Rt(f, v);\n }\n return p[e.id] || (n ? null : e);\n }\n select(e) {\n return e(this.getState());\n }\n getStore() {\n return this.store;\n }\n getState() {\n return this.store.getState();\n }\n deep(e, i) {\n if (typeof e > \"u\")\n return this.get(i, { skipSelfReturn: !1 });\n if (typeof e == \"function\")\n try {\n const n = e(this.get(i, { skipSelfReturn: !1 })), s = (a) => this.deep(a, n);\n return s.size = Array.isArray(n) ? n.length : 1, s;\n } catch {\n const s = (a) => this.deep(a, void 0);\n return s.size = 0, s;\n }\n const r = (n) => this.deep(n, e);\n return r.size = Array.isArray(e) ? e.length : 1, r;\n }\n loadManifest(e, i) {\n const r = typeof e == \"string\" ? e : e.id;\n return this.load(r, i);\n }\n loadCollection(e, i) {\n const r = typeof e == \"string\" ? e : e.id;\n return this.load(r, i);\n }\n load(e, i) {\n const r = typeof e == \"string\" ? e : e.id;\n return i ? this.staticFetcher(r, i) : this.remoteFetcher(r);\n }\n areInputsEqual(e, i) {\n return Kt(e, i);\n }\n subscribe(e, i, r) {\n return typeof r > \"u\" && (typeof i > \"u\" || i === !1 || i === !0) && (r = i, i = e, e = (n) => n), this.store.subscribe(e, (n) => i(n, this), {\n equalityFn: Kt,\n fireImmediately: !r\n });\n }\n async ensureLoaded(e) {\n const i = typeof e == \"string\" ? e : e.id;\n this.requestStatus(i) || await this.load(i);\n }\n requestStatus(e) {\n return this.select((i) => i.iiif.requests[e]);\n }\n getResourceMeta(e, i) {\n const r = this.getState().iiif.meta[e];\n if (r)\n return i ? r[i] : r;\n }\n getObject(e, i, r = {}) {\n const { reactive: n, ...s } = r;\n return ge(this.get(e, i, s), this, n);\n }\n async loadObject(e, i) {\n return ge(await this.load(e, i), this);\n }\n async loadManifestObject(e, i) {\n return ge(await this.loadManifest(e, i), this);\n }\n async loadCollectionObject(e, i) {\n return ge(await this.loadCollection(e, i), this);\n }\n wrapObject(e) {\n return ge(this.get(e, { skipSelfReturn: !1 }), this);\n }\n isWrapped(e) {\n return wo(e);\n }\n setMetaValue([e, i, r], n) {\n this.dispatch(\n typeof n == \"function\" ? Jt.setMetaValueDynamic({\n id: e,\n meta: i,\n key: r,\n updateValue: n\n }) : Jt.setMetaValue({\n id: e,\n meta: i,\n key: r,\n value: n\n })\n );\n }\n}\nfunction Ro() {\n return typeof self < \"u\" ? self : typeof window < \"u\" ? window : typeof global < \"u\" ? global : {};\n}\nfunction Do(t) {\n const e = Ro();\n try {\n const r = e.IIIF_VAULT;\n if (r)\n return r;\n } catch {\n }\n const i = new Co(t);\n try {\n e.IIIF_VAULT = i;\n } catch {\n }\n return i;\n}\nvar St = { exports: {} };\n(function(t, e) {\n var i = Object.defineProperty, r = (s, a, c) => a in s ? i(s, a, { enumerable: !0, configurable: !0, writable: !0, value: c }) : s[a] = c, n = (s, a, c) => (r(s, typeof a != \"symbol\" ? a + \"\" : a, c), c);\n (function(s, a) {\n a(e);\n })(Gn, function(s) {\n const a = \"http://library.stanford.edu/iiif/image-api/compliance.html#level1\", c = \"http://library.stanford.edu/iiif/image-api/compliance.html#level2\", u = \"http://library.stanford.edu/iiif/image-api/conformance.html#level1\", p = \"http://library.stanford.edu/iiif/image-api/conformance.html#level2\", f = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1\", v = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\", y = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1\", m = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2\", d = \"http://iiif.io/api/image/1/level1.json\", A = \"http://iiif.io/api/image/1/profiles/level1.json\", x = \"http://iiif.io/api/image/1/level2.json\", S = \"http://iiif.io/api/image/1/profiles/level2.json\", C = \"http://iiif.io/api/image/2/level1.json\", E = \"http://iiif.io/api/image/2/profiles/level1.json\", P = \"http://iiif.io/api/image/2/level2.json\", j = \"http://iiif.io/api/image/2/profiles/level2.json\", k = \"level1\", $ = \"level2\", B = \"http://iiif.io/api/image/2/level1\", G = \"http://iiif.io/api/image/2/level2\", oe = [B, G, a, c, u, p, f, v, y, m, d, A, x, S, C, E, P, j, k, $], W = [\"http://iiif.io/api/image/2/level0\", B, G, \"http://library.stanford.edu/iiif/image-api/compliance.html#level0\", a, c, \"http://library.stanford.edu/iiif/image-api/conformance.html#level0\", u, p, \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0\", f, v, \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0\", y, m, \"http://iiif.io/api/image/1/level0.json\", \"http://iiif.io/api/image/1/profiles/level0.json\", d, A, x, S, \"http://iiif.io/api/image/2/level0.json\", \"http://iiif.io/api/image/2/profiles/level0.json\", C, E, P, j, \"level0\", k, $], Ee = [\"sc:Collection\", \"sc:Manifest\", \"sc:Canvas\", \"sc:AnnotationList\", \"oa:Annotation\", \"sc:Range\", \"sc:Layer\", \"sc:Sequence\", \"oa:Choice\", \"Service\", \"ContentResource\"];\n class ce {\n constructor(o, h = {}) {\n n(this, \"traversals\"), n(this, \"options\"), this.traversals = { collection: [], manifest: [], canvas: [], annotationList: [], sequence: [], annotation: [], contentResource: [], choice: [], range: [], service: [], layer: [], ...o }, this.options = { convertPropsToArray: !0, mergeMemberProperties: !0, allowUndefinedReturn: !1, ...h };\n }\n static all(o) {\n return new ce({ collection: [o], manifest: [o], canvas: [o], annotationList: [o], sequence: [o], annotation: [o], contentResource: [o], choice: [o], range: [o], service: [o], layer: [o] });\n }\n traverseCollection(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(o))), this.traversals.collection);\n }\n traverseCollectionItems(o) {\n if (this.options.mergeMemberProperties) {\n const h = [...(o.manifests || []).map((g) => typeof g == \"string\" ? { \"@id\": g, \"@type\": \"sc:Manifest\" } : g), ...(o.collections || []).map((g) => typeof g == \"string\" ? { \"@id\": g, \"@type\": \"sc:Collection\" } : g), ...o.members || []];\n delete o.collections, delete o.manifests, o.members = h;\n }\n return o.manifests && (o.manifests = o.manifests.map((h) => this.traverseManifest(typeof h == \"string\" ? { \"@id\": h, \"@type\": \"sc:Manifest\" } : h))), o.collections && (o.collections = o.collections.map((h) => this.traverseCollection(typeof h == \"string\" ? { \"@id\": h, \"@type\": \"sc:Collection\" } : h))), o.members && (o.members = o.members.map((h) => typeof h == \"string\" ? h : this.traverseUnknown(h))), o;\n }\n traverseManifest(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(o))), this.traversals.manifest);\n }\n traverseManifestItems(o) {\n return o.sequences && (o.sequences = o.sequences.map((h) => this.traverseSequence(h))), o.structures && (o.structures = o.structures.map((h) => this.traverseRange(h))), o;\n }\n traverseSequence(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(o))), this.traversals.sequence);\n }\n traverseSequenceItems(o) {\n return o.canvases && (o.canvases = o.canvases.map((h) => this.traverseCanvas(h))), o;\n }\n traverseCanvas(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(o))), this.traversals.canvas);\n }\n traverseCanvasItems(o) {\n return o.images && (o.images = o.images.map((h) => this.traverseAnnotation(h))), o.otherContent && (o.otherContent = o.otherContent.map((h) => this.traverseAnnotationList(h))), o;\n }\n traverseRange(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(o))), this.traversals.range);\n }\n traverseRangeItems(o) {\n if (this.options.mergeMemberProperties) {\n const h = [...(o.ranges || []).map((g) => typeof g == \"string\" ? { \"@id\": g, \"@type\": \"sc:Range\" } : g), ...(o.canvases || []).map((g) => typeof g == \"string\" ? { \"@id\": g, \"@type\": \"sc:Canvas\" } : g), ...o.members || []];\n delete o.ranges, delete o.canvases, o.members = h.length ? h.map((g) => this.traverseUnknown(g)) : void 0;\n }\n return o;\n }\n traverseAnnotationList(o) {\n const h = typeof o == \"string\" ? { \"@id\": o, \"@type\": \"sc:AnnotationList\" } : o;\n return this.traverseType(this.traverseDescriptive(this.traverseAnnotationListItems(h)), this.traversals.annotationList);\n }\n traverseAnnotationListItems(o) {\n return o.resources && (o.resources = o.resources.map((h) => this.traverseAnnotation(h))), o;\n }\n traverseAnnotation(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(o))), this.traversals.annotation);\n }\n traverseAnnotationItems(o) {\n return o.resource && (Array.isArray(o.resource) ? o.resource = o.resource.map((h) => this.traverseContentResource(h)) : o.resource = this.traverseContentResource(o.resource)), o.on, o;\n }\n traverseLayer(o) {\n return this.traverseType(this.traverseLinking(this.traverseLayerItems(o)), this.traversals.layer);\n }\n traverseLayerItems(o) {\n return o.otherContent && (o.otherContent = o.otherContent.map((h) => this.traverseAnnotationList(h))), o;\n }\n traverseChoice(o) {\n return this.traverseType(this.traverseChoiceItems(o), this.traversals.choice);\n }\n traverseChoiceItems(o) {\n return o.default && o.default !== \"rdf:nil\" && (o.default = this.traverseContentResource(o.default)), o.item && o.item !== \"rdf:nil\" && (o.item = o.item.map((h) => this.traverseContentResource(h))), o;\n }\n traverseService(o) {\n return this.traverseType(this.traverseLinking(o), this.traversals.service);\n }\n traverseContentResource(o) {\n return o[\"@type\"] === \"oa:Choice\" ? this.traverseChoice(o) : this.traverseType(this.traverseDescriptive(this.traverseLinking(o)), this.traversals.contentResource);\n }\n traverseUnknown(o) {\n if (!o[\"@type\"] || typeof o == \"string\")\n return o;\n switch (function(h) {\n if (h == null)\n throw new Error(\"Null or undefined is not a valid entity.\");\n if (Array.isArray(h))\n throw new Error(\"Array is not a valid entity\");\n if (typeof h != \"object\")\n throw new Error(typeof h + \" is not a valid entity\");\n if (typeof h[\"@type\"] == \"string\") {\n const g = Ee.indexOf(h[\"@type\"]);\n if (g !== -1)\n return Ee[g];\n }\n if (h.profile)\n return \"Service\";\n if (h.format || h[\"@type\"])\n return \"ContentResource\";\n throw new Error(\"Resource type is not known\");\n }(o)) {\n case \"sc:Collection\":\n return this.traverseCollection(o);\n case \"sc:Manifest\":\n return this.traverseManifest(o);\n case \"sc:Canvas\":\n return this.traverseCanvas(o);\n case \"sc:Sequence\":\n return this.traverseSequence(o);\n case \"sc:Range\":\n return this.traverseRange(o);\n case \"oa:Annotation\":\n return this.traverseAnnotation(o);\n case \"sc:AnnotationList\":\n return this.traverseAnnotationList(o);\n case \"sc:Layer\":\n return this.traverseLayer(o);\n case \"Service\":\n return this.traverseService(o);\n case \"oa:Choice\":\n return this.traverseChoice(o);\n case \"ContentResource\":\n return this.traverseContentResource(o);\n }\n return o.profile ? this.traverseService(o) : o;\n }\n traverseImageResource(o) {\n const h = Array.isArray(o), g = Array.isArray(o) ? o : [o], I = [];\n for (const R of g)\n typeof R == \"string\" ? I.push(this.traverseContentResource({ \"@id\": R, \"@type\": \"dctypes:Image\" })) : I.push(this.traverseContentResource(R));\n return h || this.options.convertPropsToArray ? I : I[0];\n }\n traverseDescriptive(o) {\n return o.thumbnail && (o.thumbnail = this.traverseImageResource(o.thumbnail)), o.logo && (o.logo = this.traverseImageResource(o.logo)), o;\n }\n traverseOneOrMoreServices(o) {\n const h = Array.isArray(o), g = Array.isArray(o) ? o : [o], I = [];\n for (const R of g)\n I.push(this.traverseService(R));\n return h || this.options.convertPropsToArray ? I : I[0];\n }\n traverseLinking(o) {\n return o.related && (o.related = this.traverseOneOrManyType(o.related, this.traversals.contentResource)), o.rendering && (o.rendering = this.traverseOneOrManyType(o.rendering, this.traversals.contentResource)), o.service && (o.service = this.traverseOneOrMoreServices(o.service)), o.seeAlso && (o.seeAlso = this.traverseOneOrManyType(o.seeAlso, this.traversals.contentResource)), o.within && (typeof o.within == \"string\" || (o.within = this.traverseOneOrManyType(o.within, this.traversals.contentResource))), o.startCanvas && (typeof o.startCanvas == \"string\" ? o.startCanvas = this.traverseType({ \"@id\": o.startCanvas, \"@type\": \"sc:Canvas\" }, this.traversals.canvas) : o.startCanvas && this.traverseType(o.startCanvas, this.traversals.canvas)), o.contentLayer && (typeof o.contentLayer == \"string\" ? o.contentLayer = this.traverseLayer({ \"@id\": o.contentLayer, \"@type\": \"sc:Layer\" }) : o.contentLayer = this.traverseLayer(o.contentLayer)), o;\n }\n traverseOneOrManyType(o, h) {\n if (!Array.isArray(o)) {\n if (!this.options.convertPropsToArray)\n return this.traverseType(o, h);\n o = [o];\n }\n return o.map((g) => this.traverseType(g, h));\n }\n traverseType(o, h) {\n return h.reduce((g, I) => {\n const R = I(g);\n return R !== void 0 || this.options.allowUndefinedReturn ? R : g;\n }, o);\n }\n }\n function N(l) {\n for (const o in l)\n l[o] !== void 0 && l[o] !== null || delete l[o];\n return l;\n }\n const Qe = \"Attribution\", He = \"http://example.org/provider\", De = \"Unknown\";\n function Q(l, o = \"none\") {\n if (!l)\n return {};\n const h = Array.isArray(l) ? l : [l], g = {};\n for (const I of h) {\n if (typeof I == \"string\") {\n g[o] = g[o] ? g[o] : [], g[o].push(I || \"\");\n continue;\n }\n if (!I[\"@language\"]) {\n g[o] = g[o] ? g[o] : [], g[o].push(I[\"@value\"] || \"\");\n continue;\n }\n const R = I[\"@language\"];\n g[R] = g[R] ? g[R] : [], g[R].push(I[\"@value\"] || \"\");\n }\n return g;\n }\n function Ne(l) {\n return Array.isArray(l) ? Ne(l.find((o) => typeof o == \"string\")) : W.indexOf(l) !== -1 ? \"level2\" : oe.indexOf(l) !== -1 ? \"level1\" : typeof l == \"string\" ? l : void 0;\n }\n function Oe(l) {\n for (const o of [\"sc\", \"oa\", \"dcterms\", \"dctypes\", \"iiif\"])\n if (l.startsWith(`${o}:`))\n return l.slice(o.length + 1);\n return l;\n }\n const Ye = [\"Collection\", \"Manifest\", \"Annotation\", \"AnnotationPage\", \"Range\", \"Service\"];\n function Te(l) {\n const o = l[\"@id\"] || l.id;\n let h = l[\"@type\"] || l.type;\n const g = l.profile || void 0, I = l[\"@context\"] || void 0;\n if (g) {\n const R = function(F) {\n switch (F) {\n case \"http://iiif.io/api/image/2/level0.json\":\n case \"http://iiif.io/api/image/2/level1.json\":\n case \"http://iiif.io/api/image/2/level2.json\":\n return \"ImageService2\";\n case \"http://iiif.io/api/auth/1/kiosk\":\n case \"http://iiif.io/api/auth/1/login\":\n case \"http://iiif.io/api/auth/1/clickthrough\":\n case \"http://iiif.io/api/auth/1/external\":\n case \"http://iiif.io/api/auth/0/kiosk\":\n case \"http://iiif.io/api/auth/0/login\":\n case \"http://iiif.io/api/auth/0/clickthrough\":\n case \"http://iiif.io/api/auth/0/external\":\n return \"AuthCookieService1\";\n case \"http://iiif.io/api/auth/1/token\":\n case \"http://iiif.io/api/auth/0/token\":\n return \"AuthTokenService1\";\n case \"http://iiif.io/api/auth/1/logout\":\n case \"http://iiif.io/api/auth/0/logout\":\n return \"AuthLogoutService1\";\n case \"http://iiif.io/api/search/1/search\":\n case \"http://iiif.io/api/search/0/search\":\n return \"SearchService1\";\n case \"http://iiif.io/api/search/1/autocomplete\":\n case \"http://iiif.io/api/search/0/autocomplete\":\n return \"AutoCompleteService1\";\n }\n }(g);\n if (R)\n return R;\n }\n if (I) {\n const R = function(F) {\n const $e = Array.isArray(F) ? F : [F];\n for (const qe of $e)\n switch (qe) {\n case \"http://iiif.io/api/image/2/context.json\":\n case \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\":\n return \"ImageService2\";\n case \"http://iiif.io/api/image/1/context.json\":\n case \"http://library.stanford.edu/iiif/image-api/1.1/context.json\":\n return \"ImageService1\";\n case \"http://iiif.io/api/annex/openannotation/context.json\":\n return \"ImageApiSelector\";\n }\n }(I);\n if (R)\n return R;\n }\n if (h) {\n if (Array.isArray(h)) {\n if (h.indexOf(\"oa:CssStylesheet\") !== -1)\n return \"CssStylesheet\";\n if (h.indexOf(\"cnt:ContentAsText\") !== -1)\n return \"TextualBody\";\n h = h[0];\n }\n for (const R of [\"sc\", \"oa\", \"dcterms\", \"dctypes\", \"iiif\"])\n if (h.startsWith(`${R}:`)) {\n h = h.slice(R.length + 1);\n break;\n }\n switch (h) {\n case \"Layer\":\n return \"AnnotationCollection\";\n case \"AnnotationList\":\n return \"AnnotationPage\";\n case \"cnt:ContentAsText\":\n return \"TextualBody\";\n }\n }\n if (h && Ye.indexOf(h) !== -1)\n return h;\n if (l.format) {\n if (l.format.startsWith(\"image/\"))\n return \"Image\";\n if (l.format.startsWith(\"text/\") || l.format === \"application/pdf\")\n return \"Text\";\n if (l.format.startsWith(\"application/\"))\n return \"Dataset\";\n }\n return o && (o.endsWith(\".jpg\") || o.endsWith(\".png\") || o.endsWith(\".jpeg\")) ? \"Image\" : h || \"unknown\";\n }\n const Mr = /http(s)?:\\/\\/(creativecommons.org|rightsstatements.org)[^\"'\\\\<\\n]+/gm;\n function kr(l) {\n const o = l.match(Mr);\n return o ? o[0] : l;\n }\n const Fr = [\"http://iiif.io/api/presentation/2/context.json\", \"http://iiif.io/api/image/2/context.json\", \"http://iiif.io/api/image/1/context.json\", \"http://library.stanford.edu/iiif/image-api/1.1/context.json\", \"http://iiif.io/api/search/1/context.json\", \"http://iiif.io/api/search/0/context.json\", \"http://iiif.io/api/auth/1/context.json\", \"http://iiif.io/api/auth/0/context.json\", \"http://iiif.io/api/annex/openannotation/context.json\"];\n function Lr(l) {\n if (l) {\n const o = Array.isArray(l) ? l : [l], h = [];\n for (const g of o)\n g === \"http://iiif.io/api/presentation/2/context.json\" && h.push(\"http://iiif.io/api/presentation/3/context.json\"), Fr.indexOf(g) === -1 && h.push(g);\n if (o.length)\n return h.length === 1 ? h[0] : h;\n }\n }\n let _t = 0;\n function Mt(l, o) {\n const h = encodeURI(l.id || l[\"@id\"] || \"\").trim();\n return h && o ? `${h}/${o}` : h || (_t++, `http://example.org/${l[\"@type\"]}${o ? `/${o}` : \"\"}/${_t}`);\n }\n function H(l) {\n const o = [...l.behavior || []];\n let h;\n return l.viewingHint && o.push(l.viewingHint), Array.isArray(l.motivation) ? h = l.motivation.map(Oe) : l.motivation && (h = Oe(l.motivation)), { \"@context\": l[\"@context\"] ? Lr(l[\"@context\"]) : void 0, id: (l[\"@id\"] || Mt(l)).trim(), type: Te(l), behavior: o.length ? o : void 0, height: l.height ? l.height : void 0, width: l.width ? l.width : void 0, motivation: h, viewingDirection: l.viewingDirection, profile: l.profile, format: l.format ? l.format : void 0, duration: void 0, timeMode: void 0 };\n }\n function Y(l) {\n const [o, h] = function(R, F = \"Rights/License\", $e = \"none\") {\n let qe = null;\n const kt = [], $r = Array.isArray(R) ? R : [R];\n for (const Ft of $r) {\n const ee = Ft ? kr(Ft) : void 0;\n !ee || ee.indexOf(\"creativecommons.org\") === -1 && ee.indexOf(\"rightsstatements.org\") === -1 ? ee && kt.push({ label: { [$e]: [F] }, value: { [$e]: [ee] } }) : qe = ee.startsWith(\"https://\") ? `http://${ee.slice(8)}` : ee;\n }\n return [qe, kt];\n }(l.license), g = [...l.metadata ? (I = l.metadata, I ? I.map((R) => ({ label: Q(R.label), value: Q(R.value) })) : []) : [], ...h];\n var I;\n return { rights: o, metadata: g.length ? g : void 0, label: l.label ? Q(l.label) : void 0, requiredStatement: l.attribution ? { label: Q(Qe), value: Q(l.attribution) } : void 0, navDate: l.navDate, summary: l.description ? Q(l.description) : void 0, thumbnail: Pr(l.thumbnail) };\n }\n function Pr(l) {\n return l && (Array.isArray(l) ? l : [l]).map((o) => typeof o == \"string\" ? { id: o, type: \"Image\" } : (o.type === \"unknown\" && (o.type = \"Image\"), o));\n }\n function jr(l) {\n if (!l.within)\n return;\n const o = Array.isArray(l.within) ? l.within : [l.within], h = [];\n for (const g of o)\n typeof g == \"string\" ? g && l[\"@type\"] === \"sc:Manifest\" && h.push({ id: g, type: \"Collection\" }) : g[\"@id\"] && h.push({ id: g[\"@id\"], type: Te(g) });\n return h.length ? h : void 0;\n }\n function Z(l) {\n const o = l.related ? Array.isArray(l.related) ? l.related : [l.related] : [], h = l.contentLayer;\n return { provider: l.logo || o.length ? [{ id: He, type: \"Agent\", homepage: o.length ? [o[0]] : void 0, logo: l.logo ? Array.isArray(l.logo) ? l.logo : [l.logo] : void 0, label: Q(De) }] : void 0, partOf: jr(l), rendering: l.rendering, seeAlso: l.seeAlso, start: l.startCanvas, service: l.service ? (g = l.service, Array.isArray(g) ? g : g ? [g] : []) : void 0, supplementary: h ? [h] : void 0 };\n var g;\n }\n function Je(l) {\n const o = l;\n return N({ ...H(o), ...Y(o), ...Z(o), ...(h = o, { chars: h.chars, format: h.format ? h.format : void 0, language: h.language }) });\n var h;\n }\n const Dr = new ce({ collection: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l), items: l.members });\n }], manifest: [function(l) {\n const o = [], h = [];\n let g;\n for (const R of l.sequences || [])\n R.canvases.length && o.push(...R.canvases), R.behavior && h.push(...R.behavior), R.startCanvas && (g = R.startCanvas);\n const I = H(l);\n return h.length && (I.behavior ? I.behavior.push(...h) : I.behavior = h), N({ ...I, ...Y(l), ...Z(l), start: g, items: o, structures: l.structures });\n }], canvas: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l), annotations: l.otherContent && l.otherContent.length ? l.otherContent : void 0, items: l.images && l.images.length ? [{ id: Mt(l, \"annotation-page\"), type: \"AnnotationPage\", items: l.images }] : void 0 });\n }], annotationList: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l), items: l.resources && l.resources.length ? l.resources : void 0 });\n }], sequence: [function(l) {\n return l.canvases && l.canvases.length !== 0 ? { canvases: l.canvases, behavior: l.viewingHint ? [l.viewingHint] : [], startCanvas: l.startCanvas } : { canvases: [], behavior: [] };\n }], annotation: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l), target: function o(h) {\n if (Array.isArray(h)) {\n if (h.length > 1)\n return { type: \"List\", items: h.map(o) };\n h = h[0];\n }\n if (typeof h == \"string\")\n return encodeURI(h).trim();\n if (\"@type\" in h) {\n let g;\n if (typeof h.full == \"string\")\n g = h.full;\n else if (h.full[\"@type\"] === \"dctypes:Image\")\n g = { id: h.full[\"@id\"], type: \"Image\" };\n else {\n if (h.full[\"@type\"] !== \"sc:Canvas\")\n throw new Error(`Unsupported source type on annotation: ${h.full[\"@type\"]}`);\n g = { id: h.full[\"@id\"], type: \"Canvas\" };\n }\n return { type: \"SpecificResource\", source: g, selector: Xe(h.selector) };\n }\n return encodeURI(h[\"@id\"]).trim();\n }(l.on), body: Array.isArray(l.resource) ? l.resource.map(Je) : Je(l.resource) });\n }], contentResource: [Je], choice: [function(l) {\n const o = [];\n return l.default && l.default !== \"rdf:nil\" && o.push(l.default), l.item && l.item !== \"rdf:nil\" && o.push(...l.item), { ...H(l), ...Y(l), items: o };\n }], range: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l), items: l.members });\n }], service: [function(l) {\n const { \"@id\": o, \"@type\": h, \"@context\": g, profile: I, ...R } = l, F = {};\n return o && (F[\"@id\"] = o), F[\"@type\"] = Te(l), F[\"@type\"] === \"unknown\" && (g && g.length && (F[\"@context\"] = g), F[\"@type\"] = \"Service\"), I && (F.profile = Ne(I)), N({ ...F, ...R });\n }], layer: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l) });\n }] });\n function Xe(l) {\n if ((Array.isArray(l[\"@type\"]) && l[\"@type\"].includes(\"oa:SvgSelector\") || l[\"@type\"] == \"oa:SvgSelector\") && (\"chars\" in l || \"value\" in l))\n return { type: \"SvgSelector\", value: \"chars\" in l ? l.chars : l.value };\n if (l[\"@type\"] === \"oa:FragmentSelector\")\n return { type: \"FragmentSelector\", value: l.value };\n if (l[\"@type\"] === \"oa:Choice\")\n return [Xe(l.default), ...(Array.isArray(l.item) ? l.item : [l.item]).map(Xe)];\n if (l[\"@type\"] == \"iiif:ImageApiSelector\")\n return { type: \"ImageApiSelector\", region: \"region\" in l ? l.region : void 0, rotation: \"rotation\" in l ? l.rotation : void 0 };\n throw new Error(`Unsupported selector type: ${l[\"@type\"]}`);\n }\n const Nr = function(l) {\n return l && l[\"@context\"] && (l[\"@context\"] === \"http://iiif.io/api/presentation/2/context.json\" || l[\"@context\"].indexOf(\"http://iiif.io/api/presentation/2/context.json\") !== -1 || l[\"@context\"] === \"http://www.shared-canvas.org/ns/context.json\") || l[\"@context\"] === \"http://iiif.io/api/image/2/context.json\" ? Dr.traverseUnknown(l) : l;\n };\n s.upgrade = Nr, Object.defineProperties(s, { __esModule: { value: !0 }, [Symbol.toStringTag]: { value: \"Module\" } });\n });\n})(St, St.exports);\nvar Io = St.exports;\nfunction No(t, e) {\n return fetch(t, e).then((i) => i.json()).then(Io.upgrade);\n}\nexport {\n Co as Vault,\n Ei as buildLocaleString,\n Oo as createEventsHelper,\n Lo as createPaintingAnnotationsHelper,\n Po as createRangeHelper,\n jo as createSequenceHelper,\n To as createStylesHelper,\n qn as createThumbnailHelper,\n vs as decodeContentState,\n ds as encodeContentState,\n Ae as expandTarget,\n No as fetch,\n wt as findAllCanvasesInRange,\n Mi as findFirstCanvasFromRange,\n gs as findManifestSelectedRange,\n Ct as findSelectedRange,\n Un as getClosestLanguage,\n ki as getManifestSequence,\n _o as getThumbnail,\n Mo as getValue,\n As as getVisibleCanvasesFromCanvasId,\n Do as globalVault,\n $n as imageServiceLoader,\n fs as isImageApiSelector,\n Fo as normaliseContentState,\n hs as parseContentState,\n ps as parseRotation,\n Be as parseSelector,\n ms as parseSpecificResource,\n ko as serialiseContentState,\n Vt as validateContentState\n};\n//# sourceMappingURL=index.mjs.map\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 { 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) {\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 { 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 { 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 if (!canvas.duration) {\n return unsupportedStrategy('No duration on canvas');\n }\n\n if (videoPaintables.length > 1) {\n return unsupportedStrategy('Only one video source supported');\n }\n\n const audioResource = videoPaintables[0]?.resource as any; // @todo stronger type for what this might be.\n const isYouTube = !!(audioResource.service || []).find((service: any) =>\n (service.profile || '').includes('youtube.com')\n );\n\n if (!audioResource) {\n return unsupportedStrategy('Unknown video');\n }\n\n if (!audioResource.format || audioResource.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: audioResource.id,\n type: 'Video',\n items: [],\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\n if (isYouTube) {\n media.type = 'VideoYouTube';\n const id = audioResource.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 { 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 { 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 { getImageStrategy } from '../features/rendering-strategy/image-strategy';\nimport { get3dStrategy } from '../features/rendering-strategy/3d-strategy';\nimport { getAudioStrategy } from '../features/rendering-strategy/audio-strategy';\nimport { getVideoStrategy } from '../features/rendering-strategy/video-strategy';\nimport { getTextualContentStrategy } from '../features/rendering-strategy/textual-content-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 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 console.log('No idea');\n // Unknown fallback.\n return unknownResponse;\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 { ImageServiceLoader as T, getFixedSizeFromImage as w } from \"@atlas-viewer/iiif-image-api\";\nconst m = {}, b = {\n get(i) {\n return i;\n },\n setMetaValue([i, n, o], r) {\n const c = b.getResourceMeta(i, n), s = c ? c[o] : void 0, e = typeof r == \"function\" ? r(s) : r;\n m[i] = {\n ...m[i] || {},\n [n]: {\n ...(m[i] || {})[n] || {},\n [o]: e\n }\n };\n },\n getResourceMeta: (i, n) => {\n const o = m[i];\n if (o)\n return n ? o[n] : o;\n }\n}, R = new T(), p = /* @__PURE__ */ new Map();\nfunction M(i, {\n vault: n = b,\n dereference: o = !1,\n ...r\n} = {}) {\n let c = p.get(n);\n return c || (c = y(n), p.set(n, c)), c.getBestThumbnailAtSize(i, r, o);\n}\nfunction y(i = b, n = {}) {\n const o = n.imageServiceLoader || R;\n async function r(c, s, e = !1, h = [], l) {\n const g = () => o.getThumbnailFromResource(void 0, s, e, h);\n if (!c)\n return await o.getThumbnailFromResource(void 0, s, e, h);\n if (typeof c == \"string\") {\n const t = w(c);\n return t && h.push(t), await o.getThumbnailFromResource(void 0, s, e, h);\n }\n const a = i.get(c, { skipSelfReturn: !1 });\n if (typeof a == \"string\")\n return { best: w(a), fallback: [], log: [] };\n if (!a)\n return await g();\n switch (await (async (t) => {\n if (t && t.thumbnail && t.thumbnail.length) {\n const u = i.get(t.thumbnail[0]), f = await o.getImageCandidates(u, e);\n f && f.length && h.push(...f);\n }\n })(a), a.type) {\n case \"Annotation\": {\n const t = Array.isArray(a.body) ? a.body : [a.body], u = i.get(t[0]);\n return l && !u.width && (u.width = l.width, u.height = l.height), await o.getThumbnailFromResource(u, s, e, h);\n }\n case \"Canvas\": {\n const t = a;\n return r(t.items[0], s, e, h, {\n width: t.width,\n height: t.height\n });\n }\n case \"AnnotationPage\":\n return r(a.items[0], s, e, h, l);\n case \"Choice\": {\n const t = a;\n return !t.items || t.items[0] ? await g() : r(t.items[0], s, e, h, l);\n }\n case \"Collection\": {\n const u = a.items[0];\n return u ? r(u, s, e, h, l) : await g();\n }\n case \"Manifest\": {\n const u = a.items[0];\n return u ? r(u, s, e, h, l) : await g();\n }\n case \"SpecificResource\":\n case \"Image\":\n case \"Dataset\":\n case \"Sound\":\n case \"Text\":\n case \"TextualBody\":\n case \"Video\":\n return l && !a.width && (a.width = l.width, a.height = l.height), o.getThumbnailFromResource(a, s, e, h);\n }\n return await g();\n }\n return {\n getBestThumbnailAtSize: r\n };\n}\nexport {\n y as createThumbnailHelper,\n M as getThumbnail,\n R as imageServiceLoader\n};\n//# sourceMappingURL=thumbnail.mjs.map\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(inputText: InternationalString | string | null | undefined, defaultText?: string) {\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('\\n');\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\nexport const LocaleString: React.FC<\n {\n as?: string | React.FC<any>;\n defaultText?: string;\n to?: string;\n enableDangerouslySetInnerHTML?: boolean;\n children: InternationalString | string | null | undefined;\n style?: React.CSSProperties;\n extraProps?: any;\n } & Record<string, any>\n> = ({ as: Component, defaultText, enableDangerouslySetInnerHTML, children, ...props }) => {\n const [text, language] = useLocaleString(children, defaultText);\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 { globalVault } from '@iiif/helpers/vault';\nimport { useContext } from 'react';\nimport { ReactVaultContext } from '../context/VaultContext';\n\nexport function useExistingVault() {\n const oldContext: any = useContext(ReactVaultContext);\n\n return oldContext && oldContext.vault ? (oldContext.vault as any) : globalVault();\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 { ViewerControls } from '../demo/viewer-controls';\nimport { MediaControls } from '../demo/media-controls';\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\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\nconst Inner = forwardRef(function Inner(\n props: {\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 ref\n) {\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(function CanvasPanel(\n { children, height, annotations, canvasProps, spacing, header, components, mode, ...props }: CanvasPanelProps,\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 >\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 { 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":["_setPrototypeOf","o","p","_inheritsLoose","subClass","superClass","setPrototypeOf","changedArray","a","b","item","index","initialState","ErrorBoundary","_React$Component","_this","_len","_args","_key","_this$props","_len2","args","_key2","error","_proto","info","_this$props$onError","_this$props2","prevProps","prevState","resetKeys","_this$props$onResetKe","_this$props3","_this$props4","fallbackRender","FallbackComponent","fallback","_props","React","defaultResourceContext","ResourceReactContext","useResourceContext","useContext","ResourceProvider","value","children","parentContext","newContext","useMemo","Re","me","t","e","i","_","s","r","$","X","K","Z","N","ee","te","ie","k","re","se","Oe","De","Ie","Me","Ce","we","Ue","Pe","Fe","Ne","ne","oe","ke","qe","ce","ae","ue","xe","Ve","Le","Q","q","de","x","fe","le","he","pe","Be","Qe","ye","je","ze","B","Ye","V","He","Ae","n","j","Je","z","w","I","u","M","W","Y","h","d","f","y","E","A","Ee","H","Ge","We","$e","L","D","Xe","Ke","S","m","l","R","U","Ze","et","tt","it","P","rt","c","F","st","nt","ot","Se","ct","at","ut","dt","ft","g","O","v","T","ge","J","lt","ht","G","pt$1","_e","Te","be","ve","yt","gt","pt","ReactVaultContext","vault","VaultProvider","vaultOptions","useGlobal","resources","vaultInstance","setVaultInstance","useState","globalVault","Vault","useVault","useExternalResource","idOrRef","noCache","id","realId","setRealId","setError","initialData","resource","setResource","useEffect","fetchedResource","_realId","err","useExternalManifest","options","isLoaded","requestId","cached","ManifestContext","manifest","CanvasContext","canvas","useVaultSelector","selector","deps","selectedState","setSelectedState","VisibleCanvasReactContext","useVisibleCanvases","ids","state","useManifest","ctx","manifestId","RangeContext","range","findFirstCanvasFromRange","inner","found","findAllCanvasesInRange","_a","sourceId","findManifestSelectedRange","canvasId","findSelectedRange","parsedId","_b","_c","getVisibleCanvasesFromCanvasId","manifestOrRange","preventPaged","behavior","fullCanvas","canvasBehavior","isPaged","isContinuous","isIndividuals","isCanvasFacingPages","isCanvasNonPaged","manifestItems","ordering","getManifestSequence","canvasIndex","indexes","disablePaging","skipNonPaged","currentOrdering","flush","offset","flushNextPaged","useRange","rangeId","useCanvasSequence","startCanvas","cursor","setCursor","rangeOrManifest","items","initialSequence","setCanvasIndex","useCallback","foundSequence","setCanvasId","foundIndex","next","previous","idx","noop","SimpleViewerReactContext","createContext","InnerViewerProvider","props","visibleItems","sequence","setSequenceIndex","jsx","SimpleViewerProvider","useSimpleViewer","useContextBridge","ContextBridge","C","useDispatch","store","action","isVaultActivated","obj","useVirtualAnnotationPage","sources","useRef","dispatch","virtualId","useLayoutEffect","page","entityActions","fullPage","addAnnotation","atIndex","display","full","annotation","removeAnnotation","VirtualAnnotationPageContext","useVirtualAnnotationPageContext","VirtualAnnotationProvider","DefaultCanvasFallback","width","style","height","resetErrorBoundary","jsxs","ViewerPresetContext","useViewerPreset","SetOverlaysReactContext","SetPortalReactContext","useOverlay","type","key","element","setOverlay","useCanvas","WorldSizeContext","useWorldSize","size","fn","Viewer","errorFallback","outerContainerProps","_worldScale","viewerPreset","setViewerPreset","bridge","ErrorFallback","overlays","setOverlays","overlayComponents","portals","setPortals","portalComponents","worldSizes","setWorldSizes","worldScale","runtimeOptions","updateWorldSize","sizes","rest","updateOverlay","prev","updatePortal","fallbackProps","AtlasAuto","Fragment","Element","preset","ModeContext","useResourceEvents","scope","helper","createEventsHelper","hooks","useStyles","createStylesHelper","styles","vt","xt","bt","mt","At","kt","Mt","wt","St","useAnnotation","annotationId","body","singleBody","newAnnotation","expandTarget","RenderAnnotation","defaultStyle","className","interactive","html","events","allStyles","mergeStyles","RegionHighlight","useAnnotationPage","annotationPageId","annotationPage","RenderAnnotationPage","_page","RenderImage","image","thumbnail","isStatic","onClick","enableSizes","crop","TileSet","qr","Ur","Wn","zn","Wt","Vn","Bn","Gn","Oi","Qn","Yn","Hn","Xn","Jn","Kn","Zn","es","ts","is","rs","Ti","ns","ss","as","os","zt","fs","_i","us","cs","ls","ps","bs","Ss","Gt","Ms","Et","ks","ji","Di","Fs","Ni","$i","Ls","qi","Ui","Ps","Wi","zi","js","Ds","Vi","Bi","Gi","Qi","Ns","$s","Hi","Yi","Ji","Xi","qs","Ki","Zi","Us","er","tr","Ws","zs","ir","Vs","Bs","Qt","Gs","Ot","Qs","Hs","Ys","Js","Xs","Ks","Ht","rr","Zs","ea","ta","ia","ra","na","sa","aa","oa","ca","la","ua","fa","Mr","kr","Fr","Lr","_t","$r","Ft","Pr","jr","Dr","Nr","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","usePaintables","createPaintingAnnotationsHelper","paintingAnnotations","enabledChoices","setEnabledChoices","paintables","actions","deselectOthers","deselect","prevChoices","without","defaultId","newChoices","getImageStrategy","loadImageService","imageTypes","singleImage","imageServices","getImageServices","imageSelector","imageType","supportedFormats","get3dStrategy","getAudioStrategy","audioResource","ytRegex","getVideoStrategy","videoPaintables","isYouTube","service","media","parseType","languageMap","lang","language","getTextualContentStrategy","useRenderingStrategy","enabledPages","supports","strategy","mainType","useVaultEffect","callback","useThumbnail","request","dereference","createThumbnailHelper","setThumbnail","subject","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","Component","viewingDirection","i18nLanguage","getClosestLanguage","languages","i18nLanguages","root","useClosestLanguage","getLanguages","useLocaleString","inputText","defaultText","candidateText","useCreateLocaleString","separator","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","useExistingVault","oldContext","Inner","forwardRef","ref","viewer","ViewerControls","MediaControls","useImperativeHandle","accumulator","CanvasPanel","margin","canvasProps","spacing","header","components","mode","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","data","loadedService","useImageTile","useSearchService","useStyleHelper"],"mappings":"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","x_google_ignoreList":[0,1,2,4,21,31,33,35,41,50,59]}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../../../src/context/ResourceContext.tsx","../../../node_modules/@iiif/helpers/dist/vault/esm/vault.mjs","../../../src/context/VaultContext.tsx","../../../src/hooks/useVault.ts","../../../src/hooks/useExternalResource.ts","../../../src/hooks/useExternalManifest.ts","../../../src/context/ManifestContext.tsx","../../../src/context/CanvasContext.tsx","../../../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","../../../node_modules/@iiif/helpers/dist/styles/esm/styles.mjs","../../../src/hooks/useStyles.ts","../../../node_modules/@iiif/helpers/dist/annotation-targets/esm/annotation-targets.mjs","../../../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","../../../node_modules/@iiif/helpers/dist/esm/index.mjs","../../../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/image-strategy.ts","../../../src/features/rendering-strategy/3d-strategy.ts","../../../src/features/rendering-strategy/audio-strategy.ts","../../../src/features/rendering-strategy/video-strategy.ts","../../../src/features/rendering-strategy/textual-content-strategy.ts","../../../src/hooks/useRenderingStrategy.ts","../../../src/hooks/useVaultEffect.ts","../../../node_modules/@iiif/helpers/dist/thumbnail/esm/thumbnail.mjs","../../../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/hooks/useExistingVault.ts","../../../src/canvas-panel/index.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":["export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport * as React from 'react';\n\nvar changedArray = function changedArray(a, b) {\n if (a === void 0) {\n a = [];\n }\n\n if (b === void 0) {\n b = [];\n }\n\n return a.length !== b.length || a.some(function (item, index) {\n return !Object.is(item, b[index]);\n });\n};\n\nvar initialState = {\n error: null\n};\n\nvar ErrorBoundary = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ErrorBoundary, _React$Component);\n\n function ErrorBoundary() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = initialState;\n\n _this.resetErrorBoundary = function () {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this.props.onReset == null ? void 0 : (_this$props = _this.props).onReset.apply(_this$props, args);\n\n _this.reset();\n };\n\n return _this;\n }\n\n ErrorBoundary.getDerivedStateFromError = function getDerivedStateFromError(error) {\n return {\n error: error\n };\n };\n\n var _proto = ErrorBoundary.prototype;\n\n _proto.reset = function reset() {\n this.setState(initialState);\n };\n\n _proto.componentDidCatch = function componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n\n (_this$props$onError = (_this$props2 = this.props).onError) == null ? void 0 : _this$props$onError.call(_this$props2, error, info);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n var error = this.state.error;\n var resetKeys = this.props.resetKeys; // There's an edge case where if the thing that triggered the error\n // happens to *also* be in the resetKeys array, we'd end up resetting\n // the error boundary immediately. This would likely trigger a second\n // error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call\n // of cDU after the error is set\n\n if (error !== null && prevState.error !== null && changedArray(prevProps.resetKeys, resetKeys)) {\n var _this$props$onResetKe, _this$props3;\n\n (_this$props$onResetKe = (_this$props3 = this.props).onResetKeysChange) == null ? void 0 : _this$props$onResetKe.call(_this$props3, prevProps.resetKeys, resetKeys);\n this.reset();\n }\n };\n\n _proto.render = function render() {\n var error = this.state.error;\n var _this$props4 = this.props,\n fallbackRender = _this$props4.fallbackRender,\n FallbackComponent = _this$props4.FallbackComponent,\n fallback = _this$props4.fallback;\n\n if (error !== null) {\n var _props = {\n error: error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n\n if ( /*#__PURE__*/React.isValidElement(fallback)) {\n return fallback;\n } else if (typeof fallbackRender === 'function') {\n return fallbackRender(_props);\n } else if (FallbackComponent) {\n return /*#__PURE__*/React.createElement(FallbackComponent, _props);\n } else {\n throw new Error('react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop');\n }\n }\n\n return this.props.children;\n };\n\n return ErrorBoundary;\n}(React.Component);\n\nfunction withErrorBoundary(Component, errorBoundaryProps) {\n var Wrapped = function Wrapped(props) {\n return /*#__PURE__*/React.createElement(ErrorBoundary, errorBoundaryProps, /*#__PURE__*/React.createElement(Component, props));\n }; // Format for display in DevTools\n\n\n var name = Component.displayName || Component.name || 'Unknown';\n Wrapped.displayName = \"withErrorBoundary(\" + name + \")\";\n return Wrapped;\n}\n\nfunction useErrorHandler(givenError) {\n var _React$useState = React.useState(null),\n error = _React$useState[0],\n setError = _React$useState[1];\n\n if (givenError != null) throw givenError;\n if (error != null) throw error;\n return setError;\n}\n/*\neslint\n @typescript-eslint/sort-type-union-intersection-members: \"off\",\n @typescript-eslint/no-throw-literal: \"off\",\n @typescript-eslint/prefer-nullish-coalescing: \"off\"\n*/\n\nexport { ErrorBoundary, useErrorHandler, 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","var me = Object.defineProperty;\nvar Re = (t, e, i) => e in t ? me(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i;\nvar _ = (t, e, i) => (Re(t, typeof e != \"symbol\" ? e + \"\" : e, i), i);\nimport { normalize as Ae, HAS_PART as I, PART_OF as M, frameResource as $, serialize as _e, serializeConfigPresentation2 as ve, serializeConfigPresentation3 as Te, isSpecificResource as be } from \"@iiif/parser\";\nconst p = function(e) {\n return function() {\n const i = { type: e, getType: () => e, toString: () => e };\n return (n, r) => ({\n ...i,\n ...n !== void 0 && { payload: n },\n ...r !== void 0 && { meta: r }\n });\n };\n}, X = \"@iiif/IMPORT_ENTITIES\", K = \"@iiif/MODIFY_ENTITY_FIELD\", Z = \"@iiif/REORDER_ENTITY_FIELD\", ee = \"@iiif/ADD_REFERENCE\", N = \"@iiif/UPDATE_REFERENCE\", te = \"@iiif/REMOVE_REFERENCE\", ie = \"@iiif/ADD_METADATA\", re = \"@iiif/REMOVE_METADATA\", k = \"@iiif/UPDATE_METADATA\", ne = \"@iiif/REORDER_METADATA\", se = p(X)(), Oe = p(K)(), De = p(Z)(), Ie = p(ee)(), Me = p(te)(), Ce = p(N)(), we = p(ie)(), Pe = p(k)(), Ue = p(re)(), Fe = p(ne)(), Ne = {\n importEntities: se,\n modifyEntityField: Oe,\n reorderEntityField: De,\n addReference: Ie,\n removeReference: Me,\n updateReference: Ce,\n addMetadata: we,\n removeMetadata: Ue,\n updateMetadata: Pe,\n reorderMetadata: Fe\n}, oe = \"@iiif/ADD_MAPPING\", ce = \"@iiif/ADD_MAPPINGS\", ke = p(oe)(), qe = p(ce)(), ae = \"@iiif/SET_META_VALUE\", ue = \"@iiif/SET_META_VALUE_DYNAMIC\", de = \"@iiif/UNSET_META_VALUE\", xe = p(ae)(), Ve = p(ue)(), Le = p(de)(), j = {\n setMetaValue: xe,\n setMetaValueDynamic: Ve,\n unsetMetaValue: Le\n}, q = \"RESOURCE_ERROR\", fe = \"RESOURCE_LOADING\", x = \"RESOURCE_READY\", le = \"@iiif/REQUEST_RESOURCE\", he = \"@iiif/REQUEST_ERROR\", pe = \"@iiif/REQUEST_MISMATCH\", ye = \"@iiif/REQUEST_COMPLETE\", Be = \"@iiif/REQUEST_OFFLINE_RESOURCE\", Qe = p(le)(), V = p(he)(), je = p(pe)(), ze = p(ye)(), Q = \"@iiif/BATCH\", Ye = \"@iiif/BATCH_IMPORT\", L = p(Q)(), He = (t, e) => {\n const { entities: i, resource: n, mapping: r } = Ae(e);\n if (n.id === void 0)\n return [V({ id: t, message: \"ID is not defined in resource.\" })];\n const s = [se({ entities: i }), qe({ mapping: r })];\n return n.id !== t && (s.push(ke({ id: t, type: n.type })), s.push(je({ requestId: t, actualId: n.id }))), s.push(ze({ id: t })), s;\n}, z = Number.isNaN || function(e) {\n return typeof e == \"number\" && e !== e;\n};\nfunction Je(t, e) {\n return !!(t === e || z(t) && z(e));\n}\nfunction Y(t, e) {\n if (!Array.isArray(t) || !Array.isArray(e))\n return t === e;\n if (t.length !== e.length)\n return !1;\n for (let i = 0; i < t.length; i++)\n if (!Je(t[i], e[i]))\n return !1;\n return !0;\n}\nfunction w(t, e, i) {\n const n = t.iiif.requests[e], r = t.iiif.mapping[e];\n if (!r || !t.iiif.entities[r][n.resourceUri])\n return;\n const s = t.iiif.entities[r][n.resourceUri];\n if (s && s[I]) {\n const o = s[I].find((u) => i ? u[M] === i.id : u[M] === s.id);\n return $(s, o);\n }\n return s;\n}\nfunction Ge(t) {\n return t && typeof t.then == \"function\";\n}\nfunction H(t, e, { waitTimeout: i = 30 } = {}) {\n return (n, r) => {\n const s = t.getStore(), o = s.getState(), u = o.iiif.requests[n];\n if (u) {\n if (u.loadingState === x) {\n const d = w(o, n);\n if (d)\n return d;\n }\n switch (u.loadingState) {\n case q:\n break;\n case fe:\n return (async () => {\n let d, a = !1;\n try {\n const f = await Promise.race([\n new Promise((S, E) => {\n a || (d = s.subscribe(() => {\n const R = s.getState();\n if (R.iiif.requests[n].loadingState === q) {\n E();\n return;\n }\n if (R.iiif.requests[n].loadingState === x) {\n const y = w(R, n);\n y ? S(y) : E();\n }\n }));\n }),\n new Promise(\n (S, E) => setTimeout(\n () => {\n a = !0, E();\n },\n i * 60 * 1e3\n )\n )\n ]);\n if (d && d(), f)\n return f;\n } catch {\n d && d();\n }\n })();\n }\n }\n t.dispatch(Qe({ id: n }));\n const l = (d) => {\n if (!d)\n return;\n !d.id && !d[\"@id\"] && (d[\"@type\"] && (d[\"@id\"] = n), d.id = n);\n const a = He(n, d);\n return t.dispatch(L({ actions: a })), w(s.getState(), n);\n };\n try {\n const d = e(n, r);\n return Ge(d) ? (async () => {\n try {\n return l(await d);\n } catch (a) {\n throw t.dispatch(V({ id: n, message: a.toString() })), a;\n }\n })() : l(d);\n } catch (d) {\n throw t.dispatch(V({ id: n, message: d.toString() })), d;\n }\n };\n}\nfunction Ee() {\n return {\n Collection: {},\n Manifest: {},\n Canvas: {},\n AnnotationPage: {},\n AnnotationCollection: {},\n Annotation: {},\n ContentResource: {},\n Range: {},\n Service: {},\n Selector: {},\n Agent: {}\n };\n}\nconst J = (t) => {\n let e;\n const i = /* @__PURE__ */ new Set(), n = (l, d) => {\n const a = typeof l == \"function\" ? l(e) : l;\n if (!Object.is(a, e)) {\n const f = e;\n e = d ?? typeof a != \"object\" ? a : Object.assign({}, e, a), i.forEach((S) => S(e, f));\n }\n }, r = () => e, u = { setState: n, getState: r, subscribe: (l) => (i.add(l), () => i.delete(l)), destroy: () => {\n i.clear();\n } };\n return e = t(n, r, u), u;\n}, We = (t) => t ? J(t) : J, $e = (t, e) => (i, n, r) => (r.dispatch = (s) => (i((o) => t(o, s), !1, s), s), r.dispatchFromDevtools = !0, { dispatch: (...s) => r.dispatch(...s), ...e }), Xe = $e, B = /* @__PURE__ */ new Map(), D = (t) => {\n const e = B.get(t);\n return e ? Object.fromEntries(\n Object.entries(e.stores).map(([i, n]) => [i, n.getState()])\n ) : {};\n}, Ke = (t, e, i) => {\n if (t === void 0)\n return {\n type: \"untracked\",\n connection: e.connect(i)\n };\n const n = B.get(i.name);\n if (n)\n return { type: \"tracked\", store: t, ...n };\n const r = {\n connection: e.connect(i),\n stores: {}\n };\n return B.set(i.name, r), { type: \"tracked\", store: t, ...r };\n}, Ze = (t, e = {}) => (i, n, r) => {\n const { enabled: s, anonymousActionType: o, store: u, ...l } = e;\n let d;\n try {\n d = (s ?? !1) && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch {\n }\n if (!d)\n return t(i, n, r);\n const { connection: a, ...f } = Ke(u, d, l);\n let S = !0;\n r.setState = (y, A, h) => {\n const m = i(y, A);\n if (!S)\n return m;\n const C = h === void 0 ? { type: o || \"anonymous\" } : typeof h == \"string\" ? { type: h } : h;\n return u === void 0 ? (a == null || a.send(C, n()), m) : (a == null || a.send(\n {\n ...C,\n type: `${u}/${C.type}`\n },\n {\n ...D(l.name),\n [u]: r.getState()\n }\n ), m);\n };\n const E = (...y) => {\n const A = S;\n S = !1, i(...y), S = A;\n }, R = t(r.setState, n, r);\n if (f.type === \"untracked\" ? a == null || a.init(R) : (f.stores[f.store] = r, a == null || a.init(\n Object.fromEntries(\n Object.entries(f.stores).map(([y, A]) => [\n y,\n y === f.store ? R : A.getState()\n ])\n )\n )), r.dispatchFromDevtools && typeof r.dispatch == \"function\") {\n let y = !1;\n const A = r.dispatch;\n r.dispatch = (...h) => {\n A(...h);\n };\n }\n return a.subscribe((y) => {\n var A;\n switch (y.type) {\n case \"ACTION\":\n if (typeof y.payload != \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return P(\n y.payload,\n (h) => {\n if (h.type === \"__setState\") {\n if (u === void 0) {\n E(h.state);\n return;\n }\n Object.keys(h.state).length !== 1 && console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format. \n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n const m = h.state[u];\n if (m == null)\n return;\n JSON.stringify(r.getState()) !== JSON.stringify(m) && E(m);\n return;\n }\n r.dispatchFromDevtools && typeof r.dispatch == \"function\" && r.dispatch(h);\n }\n );\n case \"DISPATCH\":\n switch (y.payload.type) {\n case \"RESET\":\n return E(R), u === void 0 ? a == null ? void 0 : a.init(r.getState()) : a == null ? void 0 : a.init(D(l.name));\n case \"COMMIT\":\n if (u === void 0) {\n a == null || a.init(r.getState());\n return;\n }\n return a == null ? void 0 : a.init(D(l.name));\n case \"ROLLBACK\":\n return P(y.state, (h) => {\n if (u === void 0) {\n E(h), a == null || a.init(r.getState());\n return;\n }\n E(h[u]), a == null || a.init(D(l.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return P(y.state, (h) => {\n if (u === void 0) {\n E(h);\n return;\n }\n JSON.stringify(r.getState()) !== JSON.stringify(h[u]) && E(h[u]);\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState: h } = y.payload, m = (A = h.computedStates.slice(-1)[0]) == null ? void 0 : A.state;\n if (!m)\n return;\n E(u === void 0 ? m : m[u]), a == null || a.send(\n null,\n // FIXME no-any\n h\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return S = !S;\n }\n return;\n }\n }), R;\n}, et = Ze, P = (t, e) => {\n let i;\n try {\n i = JSON.parse(t);\n } catch (n) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n n\n );\n }\n i !== void 0 && e(i);\n}, tt = (t) => (e, i, n) => {\n const r = n.subscribe;\n return n.subscribe = (o, u, l) => {\n let d = o;\n if (u) {\n const a = (l == null ? void 0 : l.equalityFn) || Object.is;\n let f = o(n.getState());\n d = (S) => {\n const E = o(S);\n if (!a(f, E)) {\n const R = f;\n u(f = E, R);\n }\n }, l != null && l.fireImmediately && u(f, f);\n }\n return r(d);\n }, t(e, i, n);\n}, it = tt, rt = (t = {}, e) => {\n switch (e.type) {\n case oe:\n return {\n ...t,\n [e.payload.id]: e.payload.type\n };\n case ce:\n return {\n ...t,\n ...e.payload.mapping\n };\n default:\n return t;\n }\n};\nfunction U(t, e, i, n) {\n return !(!t[i] || !t[i][e] || !t[i][e][n] || !Array.isArray(t[i][e][n]));\n}\nfunction nt(t, e) {\n const i = {}, n = [];\n for (const [r, s] of Object.entries(t || {})) {\n n.push(r);\n const o = (e || {})[r];\n if (!o || o.length === 0) {\n i[r] = s;\n continue;\n }\n i[r] = o;\n }\n for (const [r, s] of Object.entries(e || {}))\n n.indexOf(r) === -1 && (i[r] = s);\n return i;\n}\nfunction c(t) {\n return t.payload;\n}\nfunction F(t, e) {\n return typeof t > \"u\" ? e : t;\n}\nconst st = (t = Ee(), e) => {\n var n;\n const i = (r, s) => ({\n ...t,\n [c(e).type]: {\n ...t[c(e).type],\n [c(e).id]: {\n ...r,\n ...s\n }\n }\n });\n switch (e.type) {\n case K: {\n if (!t[c(e).type] || !t[c(e).type][c(e).id])\n return t;\n const r = t[c(e).type][c(e).id];\n return typeof r == \"string\" ? t : i(r, { [c(e).key]: c(e).value });\n }\n case Z: {\n if (!U(t, c(e).id, c(e).type, c(e).key))\n return t;\n const r = t[c(e).type][c(e).id];\n if (typeof r == \"string\")\n return t;\n const s = Array.from(r[c(e).key]), [o] = s.splice(c(e).startIndex, 1);\n return s.splice(c(e).endIndex, 0, o), i(r, { [c(e).key]: s });\n }\n case X: {\n const r = Object.keys(c(e).entities), s = { ...t };\n for (const o of r) {\n const u = c(e).entities[o], l = { ...t[o] || {} };\n let d = !1;\n const a = Object.keys(u || {}) || [];\n if (u && a) {\n for (const f of a)\n d = !0, l[f] = t[o][f] ? nt(t[o][f], u[f]) : u[f];\n d && (s[o] = l);\n }\n }\n return s;\n }\n case ee: {\n if (!U(t, c(e).id, c(e).type, c(e).key))\n return t;\n const r = t[c(e).type][c(e).id], s = Array.from(r[c(e).key]);\n return s.splice(F(c(e).index, s.length + 1), 0, c(e).reference), i(r, { [c(e).key]: s });\n }\n case N:\n case te: {\n if (!U(t, c(e).id, c(e).type, c(e).key))\n return t;\n const r = t[c(e).type][c(e).id], s = Array.from(r[c(e).key]), o = F(\n c(e).index,\n s.findIndex((u) => u && u.id === c(e).reference.id)\n );\n return o === -1 || ((n = s[o]) == null ? void 0 : n.id) !== c(e).reference.id ? t : (e.type === N ? s.splice(o, 1, c(e).reference) : s.splice(o, 1), i(r, { [c(e).key]: s }));\n }\n case ie: {\n const r = t[c(e).type][c(e).id];\n if (!r)\n return t;\n const s = Array.from(r.metadata || []), o = c(e);\n return s.splice(F(e.payload.beforeIndex, s.length + 1), 0, {\n label: o.label,\n value: o.label\n }), i(r, { metadata: s });\n }\n case ne: {\n const r = t[c(e).type][c(e).id];\n if (typeof r == \"string\" || !r)\n return t;\n const s = Array.from(r.metadata || []), [o] = s.splice(c(e).startIndex, 1);\n return s.splice(c(e).endIndex, 0, o), i(r, { metadata: s });\n }\n case k:\n case re: {\n const r = t[c(e).type][c(e).id], s = Array.from(r.metadata || []), o = c(e).atIndex;\n return typeof o > \"u\" || o === -1 || !s[o] ? t : (e.type === k ? s.splice(o, 1, { label: c(e).label, value: c(e).value }) : s.splice(o, 1), i(r, { metadata: s }));\n }\n default:\n return t;\n }\n}, ot = (t = {}, e) => {\n switch (e.type) {\n case le:\n case Be:\n return {\n ...t,\n [e.payload.id]: {\n requestUri: e.payload.id,\n loadingState: fe,\n uriMismatch: !1,\n resourceUri: e.payload.id\n }\n };\n case pe:\n return {\n ...t,\n [e.payload.requestId]: {\n ...t[e.payload.requestId] || {},\n uriMismatch: !0,\n resourceUri: e.payload.actualId\n },\n [e.payload.actualId]: {\n requestUri: e.payload.requestId,\n loadingState: t[e.payload.requestId].loadingState,\n uriMismatch: !0,\n resourceUri: e.payload.actualId\n }\n };\n case he:\n return {\n ...t,\n [e.payload.id]: {\n ...t[e.payload.id] || {},\n loadingState: q,\n error: e.payload.message\n }\n };\n case ye:\n return {\n ...t,\n [e.payload.id]: {\n ...t[e.payload.id] || {},\n loadingState: x,\n error: void 0\n }\n };\n }\n return t;\n}, ct = (t = {}, e) => {\n const { id: i, updateValue: n, value: r, meta: s, key: o } = e && e.payload || {};\n switch (e.type) {\n case ae:\n return {\n ...t,\n [i]: {\n ...t[i] || {},\n [s]: {\n ...t[i] ? t[i][s] || {} : {},\n [o]: r\n }\n }\n };\n case ue:\n return {\n ...t,\n [i]: {\n ...t[i] || {},\n [s]: {\n ...t[i] ? t[i][s] || {} : {},\n [o]: t[i] && t[i][s] ? n(t[i][s][o]) : n(void 0)\n }\n }\n };\n case de:\n return t[i] && t[i][s] && t[i][s][o] ? {\n ...t,\n [i]: {\n ...t[i] || {},\n [s]: {\n ...t[i] ? t[i][s] || {} : {},\n [o]: void 0\n }\n }\n } : t;\n default:\n return t;\n }\n};\nfunction Se(t = {}) {\n const e = Object.keys(t);\n return function(n = {}, r) {\n let s = !1;\n const o = {};\n for (let u = 0; u < e.length; u++) {\n const l = e[u];\n o[l] = t[l](n[l], r), s = s || o[l] !== n[l];\n }\n return s ? o : n;\n };\n}\nfunction at(t) {\n return (e, i) => i && i.type === Q ? i.payload.actions.reduce(t, e) : i && i.type === Ye ? {\n ...e,\n iiif: {\n ...e.iiif,\n ...i.payload.state\n }\n } : t(e, i);\n}\nconst ut = Se({\n mapping: rt,\n entities: st,\n requests: ot,\n meta: ct\n});\nfunction dt() {\n return {\n iiif: {\n entities: Ee(),\n meta: {},\n mapping: {},\n requests: {}\n }\n };\n}\nfunction ft(t = {}) {\n const {\n enableDevtools: e = !1,\n iiifStoreName: i = \"iiif\",\n defaultState: n = dt(),\n customReducers: r = {}\n } = t, s = at(Se({ [i]: ut, ...r }));\n return We(it(et(Xe(s, n), { enabled: e })));\n}\nfunction lt(t) {\n return { all: t = t || /* @__PURE__ */ new Map(), on: function(e, i) {\n var n = t.get(e);\n n ? n.push(i) : t.set(e, [i]);\n }, off: function(e, i) {\n var n = t.get(e);\n n && (i ? n.splice(n.indexOf(i) >>> 0, 1) : t.set(e, []));\n }, emit: function(e, i) {\n var n = t.get(e);\n n && n.slice().map(function(r) {\n r(i);\n }), (n = t.get(\"*\")) && n.slice().map(function(r) {\n r(e, i);\n });\n } };\n}\nfunction g(t, e, i, n = !0) {\n e[O] = e[O] || [], e[O].push(t);\n const r = /* @__PURE__ */ new Map();\n Object.defineProperty(e, t, {\n enumerable: n,\n get() {\n if (typeof e[T][t] > \"u\")\n return;\n const s = e[T][t];\n if (!s)\n return s;\n const o = i.get(e[T][t], {\n parent: this.id ? { id: this.id, type: this.type } : void 0\n });\n return r.has(o) || (r.clear(), r.set(o, b(o, i))), r.get(o);\n },\n set(s) {\n e[T][t] !== s && (this[v] ? i.modifyEntityField({ id: this.id, type: this.type }, t, ge(s)) : this[T][t] = s);\n }\n });\n}\nconst T = Symbol.for(\"_refs_\"), v = Symbol.for(\"_reactive_\"), O = Symbol.for(\"_defined_\"), G = Symbol.for(\"_parent_\");\nfunction ht(t, e = !1, i) {\n const n = {\n id: \"\",\n type: \"unknown\",\n [O]: [],\n [T]: {},\n [G]: i || null,\n [v]: null,\n is(r) {\n return typeof r == \"string\" ? this.id === r : r.id ? r.id === this.id : !1;\n },\n reactive() {\n if (!this[v])\n return this[v] = this.subscribe(() => this.refresh(), !0), () => {\n this.unreactive();\n };\n },\n refresh() {\n if (this.id) {\n const r = this.unwrap();\n for (const s of Object.keys(r || {}))\n this[O].includes(s) ? this[T][s] = r[s] : this[s] = r[s];\n }\n },\n unreactive() {\n this[v] && (this[v](), this[v] = null);\n },\n unwrap() {\n if (!this.id)\n throw new Error(\"Invalid object\");\n const r = this[G];\n return t.get(this.id, { parent: r ? { id: r, type: \"unknown\" } : void 0 });\n },\n toPresentation3() {\n return t.toPresentation3(this.unwrap());\n },\n toPresentation2() {\n return t.toPresentation2(this.unwrap());\n },\n valueOf() {\n return this.unwrap();\n },\n toJSON() {\n const r = this;\n return {\n ...r,\n items: r.items,\n annotations: r.annotations,\n structures: r.structures,\n seeAlso: r.seeAlso,\n service: r.service,\n services: r.services,\n rendering: r.rendering,\n partOf: r.partOf,\n start: r.start,\n supplementary: r.supplementary,\n homepage: r.homepage,\n thumbnail: r.thumbnail,\n placeholderCanvas: r.placeholderCanvas,\n accompanyingCanvas: r.accompanyingCanvas,\n provider: r.provider\n };\n },\n subscribe(r, s = !0) {\n return t.subscribe(\n () => this.id ? t.get(this.id) : null,\n r,\n s\n );\n }\n };\n return g(\"items\", n, t), g(\"annotations\", n, t), g(\"structures\", n, t), g(\"seeAlso\", n, t), g(\"rendering\", n, t), g(\"partOf\", n, t), g(\"start\", n, t, !1), g(\"supplementary\", n, t), g(\"homepage\", n, t), g(\"thumbnail\", n, t), g(\"placeholderCanvas\", n, t, !1), g(\"accompanyingCanvas\", n, t, !1), g(\"provider\", n, t), g(\"body\", n, t), g(\"logo\", n, t), n;\n}\nfunction pt(t) {\n return !!t[O];\n}\nfunction ge(t) {\n return Array.isArray(t) ? t.map((e) => ge(e)) : !t || !t.type ? t : { id: t.id, type: t.type };\n}\nfunction b(t, e, i = !1, n) {\n if (Array.isArray(t))\n return t.map((u) => b(u, e, i));\n if (!t || !t.type || !t.id)\n return t;\n const r = ht(e, i), s = Object.create(r), o = Object.assign(s, t);\n return i && o.reactive(), o;\n}\nfunction W(t) {\n switch (t) {\n case \"Image\":\n case \"Video\":\n case \"Sound\":\n case \"Dataset\":\n case \"Text\":\n case \"Composite\":\n case \"List\":\n case \"Independents\":\n case \"Audience\":\n return \"ContentResource\";\n case \"ImageService1\":\n case \"ImageService2\":\n case \"ImageService3\":\n return \"Service\";\n }\n return t;\n}\nclass yt {\n constructor(e, i) {\n _(this, \"options\");\n _(this, \"store\");\n _(this, \"emitter\");\n _(this, \"isBatching\", !1);\n _(this, \"batchQueue\", []);\n _(this, \"remoteFetcher\");\n _(this, \"staticFetcher\");\n _(this, \"defaultFetcher\", (e) => fetch(e).then((i) => i.json()));\n this.options = Object.assign(\n {\n reducers: {},\n customFetcher: this.defaultFetcher,\n enableDevtools: !0\n },\n e || {}\n ), this.store = i || ft({\n customReducers: this.options.reducers,\n defaultState: this.options.defaultState,\n enableDevtools: this.options.enableDevtools\n }), this.emitter = lt(), this.remoteFetcher = H(this, this.options.customFetcher), this.staticFetcher = H(this, (n, r) => r);\n }\n batch(e) {\n this.isBatching = !0;\n try {\n e(this), this.isBatching = !1, this.dispatch(L({ actions: this.batchQueue }));\n } catch (i) {\n throw this.batchQueue = [], this.isBatching = !1, i;\n }\n this.batchQueue = [];\n }\n async asyncBatch(e) {\n this.isBatching = !0;\n try {\n await e(this), this.isBatching = !1, this.dispatch(L({ actions: this.batchQueue }));\n } catch (i) {\n throw this.batchQueue = [], this.isBatching = !1, i;\n }\n this.batchQueue = [];\n }\n modifyEntityField(e, i, n) {\n this.dispatch(\n Ne.modifyEntityField({\n id: e.id,\n type: e.type,\n key: i,\n value: n\n })\n );\n }\n dispatch(e) {\n if (this.isBatching)\n this.batchQueue.push(e);\n else {\n if (e.type === Q) {\n for (const r of e.payload.actions)\n this.emitter.emit(r.type, { action: r, state: this.store.getState() });\n this.store.dispatch(e);\n const n = this.getState();\n for (const r of e.payload.actions)\n this.emitter.emit(`after:${r.type}`, { action: r, state: n });\n return;\n }\n this.emitter.emit(e.type, { action: e, state: this.store.getState() }), this.store.dispatch(e);\n const i = this.store.getState();\n this.emitter.emit(`after:${e.type}`, { action: e, state: i });\n return;\n }\n }\n on(e, i) {\n return this.emitter.on(e, i), () => {\n this.emitter.off(e, i);\n };\n }\n serialize(e, i) {\n return _e(this.getState().iiif, e, i);\n }\n toPresentation2(e) {\n return this.serialize(e, ve);\n }\n toPresentation3(e) {\n return this.serialize(e, Te);\n }\n hydrate(e, i, n = {}) {\n return this.get(e, i, { ...n, skipSelfReturn: !1 });\n }\n get(e, i, n = {}) {\n typeof i != \"string\" && (n = i || {}, i = void 0);\n const { skipSelfReturn: r = !0 } = n || {};\n let s = n.parent ? typeof n.parent == \"string\" ? n.parent : n.parent.id : void 0;\n if (Array.isArray(e))\n return e.map((f) => this.get(f, n));\n const o = this.getState();\n if (be(e) && !n.preserveSpecificResources && (e = e.source), typeof e == \"string\") {\n const f = W(i || o.iiif.mapping[e]);\n if (!f)\n return r ? null : { id: e, type: \"unknown\" };\n e = { id: e, type: f };\n }\n if (e && e.partOf && !s && !n.skipPartOfCheck) {\n const f = Array.isArray(e.partOf) ? e.partOf[0] : e.partOf;\n f && (typeof f == \"string\" && (s = f), typeof f.id == \"string\" && (s = f.id));\n }\n const u = W(i || (e == null ? void 0 : e.type)), l = e == null ? void 0 : e.id, d = o.iiif.entities[u];\n if (!d) {\n const f = o.iiif.requests[l];\n return f && f.resourceUri !== l ? this.get(f.resourceUri, n) : r ? null : e;\n }\n const a = d[e.id];\n if (a && a[I]) {\n const f = a[I].find((S) => s ? S[M] === s : S[M] === a.id);\n return $(a, f);\n }\n return d[e.id] || (r ? null : e);\n }\n select(e) {\n return e(this.getState());\n }\n getStore() {\n return this.store;\n }\n getState() {\n return this.store.getState();\n }\n deep(e, i) {\n if (typeof e > \"u\")\n return this.get(i, { skipSelfReturn: !1 });\n if (typeof e == \"function\")\n try {\n const r = e(this.get(i, { skipSelfReturn: !1 })), s = (o) => this.deep(o, r);\n return s.size = Array.isArray(r) ? r.length : 1, s;\n } catch {\n const s = (o) => this.deep(o, void 0);\n return s.size = 0, s;\n }\n const n = (r) => this.deep(r, e);\n return n.size = Array.isArray(e) ? e.length : 1, n;\n }\n loadManifest(e, i) {\n const n = typeof e == \"string\" ? e : e.id;\n return this.load(n, i);\n }\n loadCollection(e, i) {\n const n = typeof e == \"string\" ? e : e.id;\n return this.load(n, i);\n }\n load(e, i) {\n const n = typeof e == \"string\" ? e : e.id;\n return i ? Promise.resolve(this.staticFetcher(n, i)) : Promise.resolve(this.remoteFetcher(n));\n }\n loadSync(e, i) {\n const n = typeof e == \"string\" ? e : e.id;\n return this.staticFetcher(n, i);\n }\n loadManifestSync(e, i) {\n const n = typeof e == \"string\" ? e : e.id;\n return this.loadSync(n, i);\n }\n loadCollectionSync(e, i) {\n const n = typeof e == \"string\" ? e : e.id;\n return this.loadSync(n, i);\n }\n areInputsEqual(e, i) {\n return Y(e, i);\n }\n subscribe(e, i, n) {\n return typeof n > \"u\" && (typeof i > \"u\" || i === !1 || i === !0) && (n = i, i = e, e = (r) => r), this.store.subscribe(e, (r) => i(r, this), {\n equalityFn: Y,\n fireImmediately: !n\n });\n }\n async ensureLoaded(e) {\n const i = typeof e == \"string\" ? e : e.id;\n this.requestStatus(i) || await this.load(i);\n }\n requestStatus(e) {\n return this.select((i) => i.iiif.requests[e]);\n }\n getResourceMeta(e, i) {\n const n = this.getState().iiif.meta[e];\n if (n)\n return i ? n[i] : n;\n }\n getObject(e, i, n = {}) {\n const { reactive: r, ...s } = n;\n return b(this.get(e, i, s), this, r);\n }\n async loadObject(e, i) {\n return b(await this.load(e, i), this);\n }\n async loadManifestObject(e, i) {\n return b(await this.loadManifest(e, i), this);\n }\n async loadCollectionObject(e, i) {\n return b(await this.loadCollection(e, i), this);\n }\n wrapObject(e) {\n return b(this.get(e, { skipSelfReturn: !1 }), this);\n }\n isWrapped(e) {\n return pt(e);\n }\n setMetaValue([e, i, n], r) {\n this.dispatch(\n typeof r == \"function\" ? j.setMetaValueDynamic({\n id: e,\n meta: i,\n key: n,\n updateValue: r\n }) : j.setMetaValue({\n id: e,\n meta: i,\n key: n,\n value: r\n })\n );\n }\n}\nfunction Et() {\n return typeof self < \"u\" ? self : typeof window < \"u\" ? window : typeof global < \"u\" ? global : {};\n}\nfunction mt(t) {\n const e = Et();\n try {\n const n = e.IIIF_VAULT;\n if (n)\n return n;\n } catch {\n }\n const i = new yt(t);\n try {\n e.IIIF_VAULT = i;\n } catch {\n }\n return i;\n}\nexport {\n yt as Vault,\n mt as globalVault\n};\n//# sourceMappingURL=vault.mjs.map\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 { 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 { 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 = useVault();\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 { useVault } from './useVault';\nimport { IIIFStore, Vault } from '@iiif/helpers/vault';\nimport { useEffect, useState } from 'react';\n\nexport function useVaultSelector<T>(selector: (state: IIIFStore, vault: Vault) => T, deps: any[] = []) {\n const vault = useVault();\n const [selectedState, setSelectedState] = useState<T>(() => selector(vault.getState(), vault));\n\n useEffect(() => {\n return vault.subscribe(\n (s) => selector(s, vault),\n (s) => {\n setSelectedState(s);\n },\n false\n );\n }, deps);\n\n return selectedState as T;\n}\n","import { useContext } from 'react';\nimport React from 'react';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { useVaultSelector } from '../hooks/useVaultSelector';\n\nexport const VisibleCanvasReactContext = React.createContext<string[]>([]);\n\nexport function useVisibleCanvases(): CanvasNormalized[] {\n const ids = useContext(VisibleCanvasReactContext);\n\n return useVaultSelector<CanvasNormalized[]>(\n (state) => {\n return ids.map((id) => state.iiif.entities.Canvas[id]).filter(Boolean);\n },\n [ids]\n );\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { ManifestNormalized } from '@iiif/presentation-3-normalized';\nimport { useVault } from './useVault';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useManifest(options?: { id: string }): ManifestNormalized | undefined;\nexport function useManifest<T>(\n options?: { id: string; selector: (manifest: ManifestNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useManifest<T = ManifestNormalized>(\n options: {\n id?: string;\n selector?: (manifest: ManifestNormalized) => T;\n } = {},\n deps: any[] = []\n): ManifestNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const vault = useVault();\n const manifestId = id ? id : ctx.manifest;\n\n const manifest = useVaultSelector(\n (s) => (manifestId ? s.iiif.entities.Manifest[manifestId] : undefined),\n [manifestId]\n );\n\n return useMemo(() => {\n if (!manifest) {\n return undefined;\n }\n if (selector) {\n return selector(manifest);\n }\n return manifest;\n }, [manifest, selector, ...deps]);\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function RangeContext({ range, children }: { range: string; children: ReactNode }) {\n return <ResourceProvider value={{ range }}>{children}</ResourceProvider>;\n}\n","import { Vault } from '@iiif/helpers/vault';\nimport { ManifestNormalized, RangeNormalized } from '@iiif/presentation-3-normalized';\nimport { Reference } from '@iiif/presentation-3';\n\nexport function findFirstCanvasFromRange(vault: Vault, range: RangeNormalized): null | Reference<'Canvas'> {\n for (const inner of range.items) {\n if ((inner as any).type === 'Canvas') {\n return inner as any as Reference<'Canvas'>;\n }\n if (inner.type === 'SpecificResource') {\n return inner.source as Reference<'Canvas'>;\n }\n if (inner.type === 'Range') {\n const found = findFirstCanvasFromRange(vault, vault.get(inner));\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n\nexport function findAllCanvasesInRange(vault: Vault, range: RangeNormalized): Array<Reference<'Canvas'>> {\n const found: Reference<'Canvas'>[] = [];\n for (const inner of range.items) {\n if (inner.type === 'SpecificResource' && inner.source?.type === 'Canvas') {\n if (inner.source.id.indexOf('#') !== -1) {\n found.push({ id: inner.source.id.split('#')[0], type: 'Canvas' });\n } else {\n found.push(inner.source as Reference<'Canvas'>);\n }\n }\n if (inner.type === 'Range') {\n found.push(...findAllCanvasesInRange(vault, vault.get(inner)));\n }\n if ((inner as any).type === 'SpecificResource') {\n const sourceId = typeof (inner as any).source === 'string' ? (inner as any).source : (inner as any).source.id;\n found.push({ id: sourceId, type: 'Canvas' });\n }\n }\n return found;\n}\n\nexport function findManifestSelectedRange(\n vault: Vault,\n manifest: ManifestNormalized,\n canvasId: string\n): null | RangeNormalized {\n for (const range of manifest.structures) {\n const found = findSelectedRange(vault, vault.get(range), canvasId);\n if (found) {\n return found;\n }\n }\n\n return null;\n}\n\nexport function findSelectedRange(vault: Vault, range: RangeNormalized, canvasId: string): null | RangeNormalized {\n for (const inner of range.items) {\n const parsedId = (inner as any)?.source?.id?.split('#')[0];\n if ((inner as any).type === 'SpecificResource' && (inner as any).source === canvasId) {\n return range;\n }\n if (inner.type === 'SpecificResource' && inner.source?.type === 'Canvas' && canvasId === parsedId) {\n return range;\n }\n if (inner.type === 'Range') {\n const found = findSelectedRange(vault, vault.get(inner), canvasId);\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n","import { CanvasNormalized, ManifestNormalized, RangeNormalized } from '@iiif/presentation-3-normalized';\nimport { Reference } from '@iiif/presentation-3';\nimport { Vault } from '@iiif/helpers/vault';\nimport { findAllCanvasesInRange } from './ranges';\n\n/**\n * Get visible canvases from canvas ID\n *\n * This function returns a list of canvas references that should all be displayed\n * when the passed canvasId is visible. This should work for individual items,\n * 2-up paged view and continuous (scrolls).\n *\n * The options are listed below (from IIIF docs)\n *\n * - `unordered` - Valid on Collections, Manifests and Ranges. The Canvases included in resources that have this behavior\n * have no inherent order, and user interfaces should avoid implying an order to the user. Disjoint with individuals,\n * continuous, and paged.\n *\n * - `individuals` - Valid on Collections, Manifests, and Ranges. For Collections that have this behavior, each of the\n * included Manifests are distinct objects in the given order. For Manifests and Ranges, the included Canvases are\n * distinct views, and should not be presented in a page-turning interface. This is the default layout behavior if\n * not specified. Disjoint with unordered, continuous, and paged.\n *\n * - `continuous` Valid on Collections, Manifests and Ranges, which include Canvases that have at least height and\n * width dimensions. Canvases included in resources that have this behavior are partial views and an appropriate\n * rendering might display all of the Canvases virtually stitched together, such as a long scroll split into\n * sections. This behavior has no implication for audio resources. The viewingDirection of the Manifest will\n * determine the appropriate arrangement of the Canvases. Disjoint with unordered, individuals and paged.\n *\n * - `paged` Valid on Collections, Manifests and Ranges, which include Canvases that have at least height and width\n * dimensions. Canvases included in resources that have this behavior represent views that should be presented in\n * a page-turning interface if one is available. The first canvas is a single view (the first recto) and thus the\n * second canvas likely represents the back of the object in the first canvas. If this is not the case, see the\n * behavior value non-paged. Disjoint with unordered, individuals, continuous, facing-pages and non-paged.\n *\n */\nexport function getVisibleCanvasesFromCanvasId(\n vault: Vault,\n manifestOrRange: ManifestNormalized | RangeNormalized,\n canvasId: string | null,\n preventPaged = false\n): Reference<'Canvas'>[] {\n const behavior = manifestOrRange.behavior;\n const fullCanvas = canvasId ? vault.get<CanvasNormalized>(canvasId) : null;\n if (!fullCanvas) {\n return [];\n }\n\n const canvasBehavior = fullCanvas.behavior;\n const isPaged = preventPaged ? false : behavior.includes('paged');\n const isContinuous = isPaged ? false : behavior.includes('continuous');\n const isIndividuals = isPaged || isContinuous ? false : behavior.includes('individuals');\n const isCanvasFacingPages = canvasBehavior.includes('facing-pages');\n const isCanvasNonPaged = canvasBehavior.includes('non-paged');\n\n // Individuals should just be the default.\n if (isCanvasFacingPages || isCanvasNonPaged || isIndividuals || preventPaged) {\n return [{ id: fullCanvas.id, type: 'Canvas' }];\n }\n\n const [manifestItems, ordering] = getManifestSequence(vault, manifestOrRange);\n\n // Continuous should just return all items together.\n if (isContinuous) {\n return manifestItems;\n }\n\n const canvasIndex = manifestItems.findIndex((r) => r.id === canvasId);\n if (canvasIndex === -1) {\n return [];\n }\n\n for (const indexes of ordering) {\n if (indexes.includes(canvasIndex)) {\n return indexes.map((index) => manifestItems[index]);\n }\n }\n\n return [{ id: fullCanvas.id, type: 'Canvas' }];\n}\n\nexport function getManifestSequence(\n vault: Vault,\n manifestOrRange: ManifestNormalized | RangeNormalized,\n { disablePaging, skipNonPaged }: { disablePaging?: boolean; skipNonPaged?: boolean } = {}\n): [Reference<'Canvas'>[], number[][]] {\n const behavior = manifestOrRange.behavior;\n const isPaged = behavior.includes('paged');\n const isContinuous = isPaged ? false : behavior.includes('continuous');\n const isIndividuals = isPaged || isContinuous ? false : behavior.includes('individuals');\n const manifestItems =\n manifestOrRange.type === 'Manifest' ? manifestOrRange.items : findAllCanvasesInRange(vault, manifestOrRange);\n\n // Continuous should just return all items together.\n if (isContinuous) {\n return [manifestItems, [manifestItems.map((_, index) => index)]];\n }\n\n // Individuals should just be the default.\n if (isIndividuals || !isPaged || disablePaging) {\n return [manifestItems, manifestItems.map((_, index) => [index])];\n }\n\n // This is the tricky case.\n const ordering: number[][] = [];\n let currentOrdering: number[] = [];\n\n const flush = () => {\n if (currentOrdering.length) {\n ordering.push([...currentOrdering]);\n currentOrdering = [];\n }\n };\n\n let offset = 0;\n let flushNextPaged = false;\n for (let i = 0; i < manifestItems.length; i++) {\n const canvas = vault.get<CanvasNormalized>(manifestItems[i]);\n if (canvas.behavior.includes('non-paged')) {\n if (i === offset) {\n offset++;\n }\n if (!skipNonPaged) {\n flush();\n ordering.push([i]);\n flush();\n }\n continue;\n }\n\n if (i === offset || canvas.behavior.includes('facing-pages')) {\n // Flush and push a single.\n if (currentOrdering.length) {\n flushNextPaged = true;\n }\n flush();\n ordering.push([i]);\n flush();\n continue;\n }\n\n currentOrdering.push(i);\n\n if (flushNextPaged) {\n flush();\n flushNextPaged = false;\n continue;\n }\n\n if (currentOrdering.length > 1) {\n flush();\n }\n }\n\n if (currentOrdering.length) {\n flush();\n }\n\n return [manifestItems, ordering];\n}\n","// This is valid under a range context.\nimport { useResourceContext } from '../context/ResourceContext';\nimport { RangeNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useRange(options?: { id: string }): RangeNormalized | undefined;\nexport function useRange<T>(\n options?: { id: string; selector: (range: RangeNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useRange<T = RangeNormalized>(\n options: {\n id?: string;\n selector?: (range: RangeNormalized) => T;\n } = {},\n deps: any[] = []\n): RangeNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const rangeId = id ? id : ctx.range;\n\n const range = useVaultSelector((s) => (rangeId ? s.iiif.entities.Range[rangeId] : undefined), [rangeId]);\n\n return useMemo(() => {\n if (!range) {\n return undefined;\n }\n if (selector) {\n return selector(range);\n }\n return range;\n }, [range, selector, ...deps]);\n}\n","import { getManifestSequence } from '../future-helpers/sequences';\nimport { useManifest } from '../hooks/useManifest';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useRange } from '../hooks/useRange';\nimport { useVault } from '../hooks/useVault';\n\nexport function useCanvasSequence({ startCanvas, disablePaging }: { startCanvas?: string; disablePaging?: boolean }) {\n const vault = useVault();\n const manifest = useManifest();\n const range = useRange();\n const [cursor, setCursor] = useState<number>(undefined as any);\n const rangeOrManifest = range ? range : manifest;\n\n if (!rangeOrManifest) {\n throw new Error('Nothing selected');\n }\n\n const [items, initialSequence] = useMemo(\n () => getManifestSequence(vault, rangeOrManifest, { disablePaging }),\n [vault, rangeOrManifest]\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) {\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 setSequenceIndex: setCursor,\n setCanvasIndex,\n setCanvasId,\n next,\n previous,\n };\n}\n","import React, { ReactNode, useCallback, useContext, useEffect } from 'react';\n/**\n * Simple viewer context\n * *****************************************************************************\n *\n * This will be the context to use to get a basic IIIF viewer up and running.\n * It will not focus on having compatibility with the full range of IIIF\n * resources, instead offering a viewer for a Manifest, cycling through canvases\n * while ignoring the paged/facing-pages/continuous behaviors.\n *\n * There will not be support for canvas-on-canvas annotations. Annotations will\n * be filtered, giving details of the canvas space and images to be annotated\n * onto that space. The demo implementation of this viewer will use\n * OpenSeadragon to display.\n *\n * Navigation functions will include the basics:\n * - nextCanvas()\n * - previousCanvas()\n * - goToCanvas(id)\n * - goToCanvasIndex(idx)\n * - goToFirstCanvas()\n * - goToLastCanvas()\n *\n * It will take in only a Manifest ID and will load that Manifest when the\n * context loads.\n *\n * There will be no support for external or embedded annotation lists, although\n * you can set up a nested context to support this.\n *\n * There will be no support for ranges in this view.\n *\n * To use this component, first you will need the provider:\n * import { SimpleViewerProvider } from '...';\n *\n * <SimpleViewerProvider id=\"http://example.org/manifest.json\">\n * <CustomComponent />\n * </SimpleViewerProvider>\n *\n * This is in addition to the core Vault context further up the tree.\n *\n * In components that you want to use parts of the state you can grab the hooks\n * from this file.\n *\n * import { useSimpleViewer } from '...';\n *\n * And use them in your components to get the actions.\n *\n * function NextButton() {\n * const { nextCanvas } = useSimpleViewer();\n *\n * return <button onClick={nextCanvas}>Next</button>;\n * }\n *\n * Since this is a single-context, there is only ever one manifest, canvas and\n * annotation list. You can access the current resource using the normal hooks.\n *\n * function CanvasMetadata() {\n * const metadata = useCanvas(metadataSelector);\n *\n * return <div> ... </div>\n * }\n *\n * So long as this is inside the provider, it will have the correct context.\n */\nimport { createContext, FC, useMemo, useState } from 'react';\nimport { useExternalManifest } from '../hooks/useExternalManifest';\nimport { ManifestContext } from '../context/ManifestContext';\nimport { CanvasContext } from '../context/CanvasContext';\nimport { VisibleCanvasReactContext } from '../context/VisibleCanvasContext';\nimport { useManifest } from '../hooks/useManifest';\nimport { SimpleViewerContext, SimpleViewerProps } from './SimpleViewerContext.types';\nimport { RangeContext } from '../context/RangeContext';\nimport { useCanvasSequence } from './SimpleViewerContext.hooks';\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});\n\nexport function InnerViewerProvider(props: SimpleViewerProps) {\n const manifest = useManifest();\n const { cursor, visibleItems, next, sequence, items, setCanvasIndex, setCanvasId, previous, setSequenceIndex } =\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 } 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 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 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 <ManifestContext manifest={manifest.id}>\n {props.rangeId ? <RangeContext range={props.rangeId}>{inner}</RangeContext> : inner}\n </ManifestContext>\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","const r = {}, l = {\n get(e) {\n return e;\n },\n setMetaValue([e, t, n], o) {\n const s = l.getResourceMeta(e, t), c = s ? s[n] : void 0, u = typeof o == \"function\" ? o(c) : o;\n r[e] = {\n ...r[e] || {},\n [t]: {\n ...(r[e] || {})[t] || {},\n [n]: u\n }\n };\n },\n getResourceMeta: (e, t) => {\n const n = r[e];\n if (n)\n return t ? n[t] : n;\n }\n};\nfunction a(e = l) {\n return {\n applyStyles(t, n, o) {\n const s = typeof t == \"string\" ? t : t.id;\n return e.setMetaValue([s, \"styles\", n], o);\n },\n getAppliedStyles(t) {\n const n = typeof t == \"string\" ? t : t.id;\n return e.getResourceMeta(n, \"styles\");\n }\n };\n}\nexport {\n a as createStylesHelper\n};\n//# sourceMappingURL=styles.mjs.map\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","var tt = Object.defineProperty;\nvar et = (e, t, a) => t in e ? tt(e, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[t] = a;\nvar C = (e, t, a) => (et(e, typeof t != \"symbol\" ? t + \"\" : t, a), a);\nvar rt = function() {\n function e(t, a) {\n var r = [], s = !0, n = !1, o = void 0;\n try {\n for (var i = t[Symbol.iterator](), l; !(s = (l = i.next()).done) && (r.push(l.value), !(a && r.length === a)); s = !0)\n ;\n } catch (u) {\n n = !0, o = u;\n } finally {\n try {\n !s && i.return && i.return();\n } finally {\n if (n)\n throw o;\n }\n }\n return r;\n }\n return function(t, a) {\n if (Array.isArray(t))\n return t;\n if (Symbol.iterator in Object(t))\n return e(t, a);\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n };\n}(), L = Math.PI * 2, B = function(t, a, r, s, n, o, i) {\n var l = t.x, u = t.y;\n l *= a, u *= r;\n var h = s * l - n * u, p = n * l + s * u;\n return {\n x: h + o,\n y: p + i\n };\n}, at = function(t, a) {\n var r = a === 1.5707963267948966 ? 0.551915024494 : a === -1.5707963267948966 ? -0.551915024494 : 1.3333333333333333 * Math.tan(a / 4), s = Math.cos(t), n = Math.sin(t), o = Math.cos(t + a), i = Math.sin(t + a);\n return [{\n x: s - n * r,\n y: n + s * r\n }, {\n x: o + i * r,\n y: i - o * r\n }, {\n x: o,\n y: i\n }];\n}, N = function(t, a, r, s) {\n var n = t * s - a * r < 0 ? -1 : 1, o = t * r + a * s;\n return o > 1 && (o = 1), o < -1 && (o = -1), n * Math.acos(o);\n}, st = function(t, a, r, s, n, o, i, l, u, h, p, y) {\n var b = Math.pow(n, 2), c = Math.pow(o, 2), d = Math.pow(p, 2), v = Math.pow(y, 2), x = b * c - b * v - c * d;\n x < 0 && (x = 0), x /= b * v + c * d, x = Math.sqrt(x) * (i === l ? -1 : 1);\n var f = x * n / o * y, m = x * -o / n * p, g = h * f - u * m + (t + r) / 2, w = u * f + h * m + (a + s) / 2, A = (p - f) / n, k = (y - m) / o, F = (-p - f) / n, T = (-y - m) / o, q = N(1, 0, A, k), S = N(A, k, F, T);\n return l === 0 && S > 0 && (S -= L), l === 1 && S < 0 && (S += L), [g, w, q, S];\n}, nt = function(t) {\n var a = t.px, r = t.py, s = t.cx, n = t.cy, o = t.rx, i = t.ry, l = t.xAxisRotation, u = l === void 0 ? 0 : l, h = t.largeArcFlag, p = h === void 0 ? 0 : h, y = t.sweepFlag, b = y === void 0 ? 0 : y, c = [];\n if (o === 0 || i === 0)\n return [];\n var d = Math.sin(u * L / 360), v = Math.cos(u * L / 360), x = v * (a - s) / 2 + d * (r - n) / 2, f = -d * (a - s) / 2 + v * (r - n) / 2;\n if (x === 0 && f === 0)\n return [];\n o = Math.abs(o), i = Math.abs(i);\n var m = Math.pow(x, 2) / Math.pow(o, 2) + Math.pow(f, 2) / Math.pow(i, 2);\n m > 1 && (o *= Math.sqrt(m), i *= Math.sqrt(m));\n var g = st(a, r, s, n, o, i, p, b, d, v, x, f), w = rt(g, 4), A = w[0], k = w[1], F = w[2], T = w[3], q = Math.abs(T) / (L / 4);\n Math.abs(1 - q) < 1e-7 && (q = 1);\n var S = Math.max(Math.ceil(q), 1);\n T /= S;\n for (var V = 0; V < S; V++)\n c.push(at(F, T)), F += T;\n return c.map(function($) {\n var j = B($[0], o, i, v, d, A, k), Z = j.x, J = j.y, D = B($[1], o, i, v, d, A, k), K = D.x, H = D.y, X = B($[2], o, i, v, d, A, k), P = X.x, E = X.y;\n return { x1: Z, y1: J, x2: K, y2: H, x: P, y: E };\n });\n};\nfunction G(e) {\n return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, \"default\") ? e.default : e;\n}\nvar ot = ct, I = { a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0 }, it = /([astvzqmhlc])([^astvzqmhlc]*)/ig;\nfunction ct(e) {\n var t = [];\n return e.replace(it, function(a, r, s) {\n var n = r.toLowerCase();\n for (s = ut(s), n == \"m\" && s.length > 2 && (t.push([r].concat(s.splice(0, 2))), n = \"l\", r = r == \"m\" ? \"l\" : \"L\"); ; ) {\n if (s.length == I[n])\n return s.unshift(r), t.push(s);\n if (s.length < I[n])\n throw new Error(\"malformed path data\");\n t.push([r].concat(s.splice(0, I[n])));\n }\n }), t;\n}\nvar lt = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig;\nfunction ut(e) {\n var t = e.match(lt);\n return t ? t.map(Number) : [];\n}\nconst pt = /* @__PURE__ */ G(ot);\nvar ht = yt;\nfunction yt(e) {\n var t = 0, a = 0, r = 0, s = 0;\n return e.map(function(n) {\n n = n.slice();\n var o = n[0], i = o.toUpperCase();\n if (o != i)\n switch (n[0] = i, o) {\n case \"a\":\n n[6] += r, n[7] += s;\n break;\n case \"v\":\n n[1] += s;\n break;\n case \"h\":\n n[1] += r;\n break;\n default:\n for (var l = 1; l < n.length; )\n n[l++] += r, n[l++] += s;\n }\n switch (i) {\n case \"Z\":\n r = t, s = a;\n break;\n case \"H\":\n r = n[1];\n break;\n case \"V\":\n s = n[1];\n break;\n case \"M\":\n r = t = n[1], s = a = n[2];\n break;\n default:\n r = n[n.length - 2], s = n[n.length - 1];\n }\n return n;\n });\n}\nconst ft = /* @__PURE__ */ G(ht);\nfunction vt(e) {\n const t = pt(e), a = ft(t);\n let r, s = 0, n = 0, o = 0, i = 0, l, u, h = 0, p = 0;\n const y = [];\n for (let b = 0; b < a.length; b++) {\n let c = a[b];\n const d = c[0];\n switch (d) {\n case \"M\":\n s = c[1], n = c[2];\n break;\n case \"H\":\n c = [\"L\", c[1], n];\n break;\n case \"V\":\n c = [\"L\", s, c[1]];\n break;\n case \"S\":\n {\n let v = h, x = p;\n (r === \"C\" || r == \"S\") && (v += v - o, x += x - i), c = [\"C\", v, x, c[1], c[2], c[3], c[4]];\n }\n break;\n case \"T\":\n r === \"Q\" || r == \"T\" ? (l = h * 2 - l, u = p * 2 - u) : (l = h, u = p), c = [\"Q\", l, u, c[1], c[2]];\n break;\n case \"Q\":\n l = c[1], u = c[2];\n break;\n case \"A\":\n {\n const v = nt({\n px: h,\n py: p,\n cx: c[6],\n cy: c[7],\n rx: c[1],\n ry: c[2],\n xAxisRotation: c[3],\n largeArcFlag: c[4],\n sweepFlag: c[5]\n });\n if (!v.length)\n continue;\n for (const [x, f] of v.entries())\n c = [\"C\", f.x1, f.y1, f.x2, f.y2, f.x, f.y], x < v.length - 1 && y.push(c);\n c = c;\n }\n break;\n case \"Z\":\n c = [\"L\", s, n];\n break;\n }\n r = d, h = c[c.length - 2], p = c[c.length - 1], [\"C\", \"Q\", \"A\"].indexOf(d) > -1 ? (o = c[c.length - 4], i = c[c.length - 3]) : (o = h, i = p), y.push(c);\n }\n return y;\n}\n/** Code to \"flatten\" quadratic and cubic Bézier curves to polylines.\n *\n * All code in this module is based on JavaScript code by Raph Levien, published on his blog at\n * https://raphlinus.github.io/.\n * I merely changed the structure a bit, removed some unneeded parts and added some comments and type hints.\n *\n * Flattening of quadratic Bézier curves:\n * - Article: https://raphlinus.github.io/graphics/curves/2019/12/23/flatten-quadbez.html\n * - Code: https://github.com/raphlinus/raphlinus.github.io/blob/master/_posts/2019-12-23-flatten-quadbez.md?plain=1#L73-L212\n *\n * Flattening of cubic Bézier curves: https://levien.com/tmp/flatten.html\n *\n * Note that the code in this module has a different license than the rest of the package,\n * due to the inclusion of Apache-licensed third party code.\n *\n * @license\n * Copyright 2022 Johannes Baiter <johannes.baiter@gmail.com>\n * Copyright 2019, 2022 Raph Levien <raph.levien@gmail.com>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction xt(e, t, a, r = 1) {\n return new W(e, t, a).subdivide(r);\n}\nfunction bt(e, t, a, r, s = 1) {\n return new Q(\n new Float64Array([e.x, e.y, t.x, t.y, a.x, a.y, r.x, r.y])\n ).subdivide(s);\n}\nfunction dt(e) {\n return e.x * e.x + e.y * e.y;\n}\nfunction z(e) {\n return e / (1 - 0.67 + Math.pow(Math.pow(0.67, 4) + 0.25 * e * e, 0.25));\n}\nfunction O(e) {\n return e * (1 - 0.39 + Math.sqrt(0.39 * 0.39 + 0.25 * e * e));\n}\nclass W {\n constructor(t, a, r) {\n C(this, \"start\");\n C(this, \"control\");\n C(this, \"end\");\n this.start = t, this.control = a, this.end = r;\n }\n eval(t) {\n const a = 1 - t;\n return {\n x: this.start.x * a * a + 2 * this.control.x * a * t + this.end.x * t * t,\n y: this.start.y * a * a + 2 * this.control.y * a * t + this.end.y * t * t\n };\n }\n mapToBasic() {\n const { x: t, y: a } = this.start, { x: r, y: s } = this.control, { x: n, y: o } = this.end, i = 2 * r - t - n, l = 2 * s - a - o, u = (r - t) * i + (s - a) * l, h = (n - r) * i + (o - s) * l, p = (n - t) * l - (o - a) * i, y = u / p, b = h / p, c = Math.abs(p) / (Math.hypot(i, l) * Math.abs(b - y));\n return { x0: t, x2: n, scale: c, cross: p };\n }\n subdivide(t) {\n const a = this.mapToBasic(), r = z(a.x0), s = z(a.x2), n = 0.5 * Math.abs(s - r) * Math.sqrt(a.scale / t), o = Math.ceil(n), i = O(r), l = O(s), u = [0];\n for (let h = 1; h < o; h++) {\n const y = (O(r + (s - r) * h / o) - i) / (l - i);\n u.push(y);\n }\n return u.push(1), u.map((h) => this.eval(h));\n }\n}\nclass Q {\n /// Argument is array of coordinate values [x0, y0, x1, y1, x2, y2, x3, y3].\n constructor(t) {\n C(this, \"c\");\n this.c = t;\n }\n weightsum(t, a, r, s) {\n const n = t * this.c[0] + a * this.c[2] + r * this.c[4] + s * this.c[6], o = t * this.c[1] + a * this.c[3] + r * this.c[5] + s * this.c[7];\n return { x: n, y: o };\n }\n eval(t) {\n const a = 1 - t, r = a * a * a, s = 3 * a * a * t, n = 3 * a * t * t, o = t * t * t;\n return this.weightsum(r, s, n, o);\n }\n deriv(t) {\n const a = 1 - t, r = -3 * a * a, s = 3 * t * t, n = -6 * t * a - r, o = 6 * t * a - s;\n return this.weightsum(r, n, o, s);\n }\n // quadratic bezier with matching endpoints and minimum max vector error\n midpoint_quadbez() {\n const t = this.weightsum(-0.25, 0.75, 0.75, -0.25);\n return new W({ x: this.c[0], y: this.c[1] }, t, { x: this.c[6], y: this.c[7] });\n }\n subsegment(t, a) {\n const r = new Float64Array(8), s = this.eval(t), n = this.eval(a);\n r[0] = s.x, r[1] = s.y;\n const o = (a - t) / 3, i = this.deriv(t);\n r[2] = s.x + o * i.x, r[3] = s.y + o * i.y;\n const l = this.deriv(a);\n return r[4] = n.x - o * l.x, r[5] = n.y - o * l.y, r[6] = n.x, r[7] = n.y, new Q(r);\n }\n // Very fancy subdivision scheme\n subdivide(t) {\n const a = 0.1 * t, r = t - a, s = Math.sqrt(r), n = dt(this.weightsum(1, -3, 3, -1)), o = Math.ceil(Math.pow(n / (432 * a * a), 1 / 6)), i = [];\n let l = 0;\n for (let c = 0; c < o; c++) {\n const d = c / o, v = (c + 1) / o, x = this.subsegment(d, v).midpoint_quadbez(), f = x.mapToBasic(), m = z(f.x0), g = z(f.x2), w = Math.sqrt(f.scale);\n let A = Math.abs(g - m) * w;\n if (Math.sign(f.x0) != Math.sign(f.x2)) {\n const k = s / w, F = s * Math.abs(g - m) / z(k);\n A = Math.max(A, F);\n }\n i.push({\n quad: x,\n a0: m,\n a2: g,\n val: A\n }), l += A;\n }\n const u = 0.5 * l / s, h = Math.ceil(u), p = [{ x: this.c[0], y: this.c[1] }];\n let y = 0, b = 0;\n for (let c = 1; c < h; c++) {\n const d = l * c / h;\n for (; y + i[b].val < d; )\n y += i[b].val, b++;\n const v = i[b].a0, x = i[b].a2, f = O(v), m = O(x), g = v + (x - v) * (d - y) / i[b].val, A = (O(g) - f) / (m - f);\n p.push(i[b].quad.eval(A));\n }\n return p.push({ x: this.c[6], y: this.c[7] }), p;\n }\n}\nconst mt = /&?(xywh=)?(pixel:|percent:|pct:)?([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?)/, At = /&?(t=)(npt:)?([0-9]+(.[0-9]+)?)?(,([0-9]+(.[0-9]+)?))?/, U = /^rgba\\((\\d+),(\\d+),(\\d+),([0-9.]+)\\)$/;\nfunction _(e, {\n domParser: t,\n svgPreprocessor: a,\n iiifRenderingHints: r\n} = {}) {\n if (Array.isArray(e))\n return M(\n e.reduce(\n (s, n) => {\n const {\n selector: o,\n selectors: i,\n iiifRenderingHints: l\n } = _(n, { domParser: t, svgPreprocessor: a, iiifRenderingHints: r });\n return o && (s.selector || (s.selector = o), s.selectors.push(...i)), l && (s.iiifRenderingHints = s.iiifRenderingHints || { type: \"ImageApiSelector\" }, Object.assign(s.iiifRenderingHints, l)), s;\n },\n {\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n }\n )\n );\n if (!e)\n return M({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n if (typeof e == \"string\") {\n const [s, n] = e.split(\"#\");\n return n ? _(\n { type: \"FragmentSelector\", value: n },\n { svgPreprocessor: a, iiifRenderingHints: r, domParser: t }\n ) : M({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n }\n if (e.type && e.type === \"PointSelector\" && (e.t || e.t === 0)) {\n const s = {\n type: \"TemporalSelector\",\n temporal: {\n startTime: e.t\n }\n };\n return M({\n selector: s,\n selectors: [s],\n iiifRenderingHints: r\n });\n }\n if (kt(e)) {\n const s = [];\n if (e.region) {\n const n = _(\n { type: \"FragmentSelector\", value: \"xywh=\" + e.region },\n { domParser: t, svgPreprocessor: a, iiifRenderingHints: r }\n );\n s.push(...n.selectors);\n }\n return M({\n selector: s[0],\n selectors: s,\n iiifRenderingHints: r ? { ...r, ...e } : e\n });\n }\n if (e.type === \"FragmentSelector\") {\n const s = mt.exec(e.value);\n if (s) {\n const o = {\n type: \"BoxSelector\",\n spatial: {\n unit: s[2] === \"percent:\" || s[2] === \"pct:\" ? \"percent\" : \"pixel\",\n x: parseFloat(s[3]),\n y: parseFloat(s[4]),\n width: parseFloat(s[5]),\n height: parseFloat(s[6])\n }\n };\n return M({\n selector: o,\n selectors: [o],\n iiifRenderingHints: r\n });\n }\n const n = e.value.match(At);\n if (n) {\n const o = {\n type: \"TemporalSelector\",\n temporal: {\n startTime: n[4] ? parseFloat(n[4]) : 0,\n endTime: n[7] ? parseFloat(n[7]) : void 0\n }\n };\n return M({\n selector: o,\n selectors: [o],\n iiifRenderingHints: r\n });\n }\n return M({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n }\n if (e.type === \"SvgSelector\" && \"value\" in e) {\n t || (typeof window < \"u\" ? t = new window.DOMParser() : console.warn(\n \"No DOMParser available, cannot parse SVG selector, `points`, `spatial` and `style` will be unavailable and the SVG will not be normalized.\"\n ));\n let s = [], n, o, i = (a == null ? void 0 : a(e.value)) ?? e.value, l;\n if (t) {\n const h = t.parseFromString(e.value, \"image/svg+xml\").querySelector(\"svg\");\n if (!h)\n return console.warn(`Illegal SVG selector: ${e.value}`), M({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n const p = Y(h);\n p && (s = p.points, l = p.shapeType, n = [\n Math.min(...s.map((y) => y[0])),\n // llx\n Math.min(...s.map((y) => y[1])),\n // lly\n Math.max(...s.map((y) => y[0])),\n // urx\n Math.max(...s.map((y) => y[1]))\n // ury\n ], { style: o, svg: i } = gt(p.element) ?? { svg: i });\n }\n const u = {\n type: \"SvgSelector\",\n svg: i,\n svgShape: l,\n style: o,\n points: s.length ? s : void 0,\n spatial: n ? { unit: \"pixel\", x: n[0], y: n[1], width: n[2] - n[0], height: n[3] - n[1] } : void 0\n };\n return M({\n selector: u,\n selectors: [u],\n iiifRenderingHints: r\n });\n }\n return M({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n}\nfunction Mt(e) {\n const t = e.map((r) => r[0]).reduce(\n (r, s) => (r[s] += 1, r),\n { C: 0, Q: 0, L: 0, M: 0 }\n ), a = new Set(e.map((r) => r[0]));\n if (t.C > 0 || t.Q > 0)\n return \"path\";\n if (t.L > 0 && (a.size === 1 || a.size === 2 && a.has(\"M\"))) {\n if (t.L === 4)\n return \"rect\";\n const r = e.slice(-1)[0];\n return e[0][0] === \"M\" && r[0] === \"L\" && r[1] == e[0][1] && r[2] === e[0][2] || r[1] === 0 && r[2] === 0 ? \"polygon\" : \"polyline\";\n }\n return \"path\";\n}\nfunction Y(e) {\n var t;\n for (const a of Array.from(e.children))\n switch (a == null ? void 0 : a.tagName.toLowerCase()) {\n case \"g\":\n {\n const r = Y(a);\n if (r)\n return r;\n }\n continue;\n case \"path\": {\n const r = a.getAttribute(\"d\");\n if (!r)\n continue;\n const s = vt(r);\n return { element: a, points: wt(s), shapeType: Mt(s) };\n }\n case \"circle\": {\n const r = parseFloat(a.getAttribute(\"cx\") ?? \"0\"), s = parseFloat(a.getAttribute(\"cy\") ?? \"0\"), n = parseFloat(a.getAttribute(\"r\") ?? \"0\");\n if (!n)\n continue;\n const o = [];\n for (let i = 0; i <= 360; i += 12) {\n const l = i * Math.PI / 180;\n o.push([r + n * Math.cos(l), s + n * Math.sin(l)]);\n }\n return { element: a, points: o, shapeType: \"circle\" };\n }\n case \"ellipse\": {\n const r = parseFloat(a.getAttribute(\"cx\") ?? \"0\"), s = parseFloat(a.getAttribute(\"cy\") ?? \"0\"), n = parseFloat(a.getAttribute(\"rx\") ?? \"0\"), o = parseFloat(a.getAttribute(\"ry\") ?? \"0\");\n if (!n && !o)\n continue;\n const i = [];\n for (let l = 0; l <= 360; l += 12) {\n const u = Math.tan(l / 360 * Math.PI), h = n * (1 - u ** 2) / (1 + u ** 2), p = o * 2 * u / (1 + u ** 2);\n i.push([r + h, s + p]);\n }\n return { element: a, points: i, shapeType: \"ellipse\" };\n }\n case \"line\": {\n const r = parseFloat(a.getAttribute(\"x0\") ?? \"0\"), s = parseFloat(a.getAttribute(\"y0\") ?? \"0\"), n = parseFloat(a.getAttribute(\"x1\") ?? \"0\"), o = parseFloat(a.getAttribute(\"y1\") ?? \"0\");\n if (r === n && s === o)\n continue;\n return {\n element: a,\n points: [\n [r, s],\n [n, o]\n ],\n shapeType: \"polyline\"\n };\n }\n case \"polygon\":\n case \"polyline\": {\n const r = ((t = a.getAttribute(\"points\")) == null ? void 0 : t.split(\" \").map((n) => n.split(\",\").map(parseFloat))) ?? [];\n if (!r.length)\n continue;\n let s = \"polyline\";\n return a.tagName.toLowerCase() === \"polygon\" && (r.push(r[0]), s = \"polygon\"), { element: a, points: r, shapeType: s };\n }\n case \"rect\": {\n const r = parseFloat(a.getAttribute(\"x\") ?? \"0\"), s = parseFloat(a.getAttribute(\"y\") ?? \"0\"), n = parseFloat(a.getAttribute(\"width\") ?? \"0\"), o = parseFloat(a.getAttribute(\"height\") ?? \"0\");\n if (!n || !o)\n continue;\n return {\n element: a,\n points: [\n [r, s],\n [r + n, s],\n [r + n, s + o],\n [r, s + o],\n [r, s]\n ],\n shapeType: \"rect\"\n };\n }\n default:\n continue;\n }\n return null;\n}\nfunction wt(e) {\n const t = [];\n for (let a = 0; a < e.length; a++) {\n const r = t[t.length - 1] ?? [0, 0], s = e[a];\n switch (s[0]) {\n case \"M\":\n case \"L\":\n t.push([s[1], s[2]]);\n continue;\n case \"C\":\n t.push(\n ...bt(\n { x: r[0], y: r[1] },\n { x: s[1], y: s[2] },\n { x: s[3], y: s[4] },\n { x: s[5], y: s[6] }\n ).map((n) => [n.x, n.y]).slice(1)\n // skip first point, already part of output\n );\n continue;\n case \"Q\":\n t.push(\n ...xt(\n { x: r[0], y: r[1] },\n { x: s[1], y: s[2] },\n { x: s[3], y: s[4] }\n ).map((n) => [n.x, n.y]).slice(1)\n // skip first point, already part of output\n );\n continue;\n }\n }\n return t;\n}\nfunction gt(e) {\n const t = {};\n if (e.hasAttribute(\"fill\") ? (t.fill = e.getAttribute(\"fill\"), e.removeAttribute(\"fill\")) : e.style.fill && (t.fill = e.style.fill), t.fill) {\n const r = U.exec(t.fill);\n r && (t.fillOpacity = parseFloat(r[4]), t.fill = `rgb(${r[1]}, ${r[2]}, ${r[3]})`);\n }\n if (e.hasAttribute(\"fill-opacity\") ? (t.fillOpacity = parseFloat(e.getAttribute(\"fill-opacity\")), e.removeAttribute(\"fill-opacity\")) : e.style.fillOpacity && (t.fillOpacity = parseFloat(e.style.fillOpacity)), e.hasAttribute(\"stroke\") ? (t.stroke = e.getAttribute(\"stroke\"), e.removeAttribute(\"stroke\")) : e.style.stroke && (t.stroke = e.style.stroke), t.stroke) {\n const r = U.exec(t.stroke);\n r && (t.strokeOpacity = parseFloat(r[4]), t.stroke = `rgb(${r[1]}, ${r[2]}, ${r[3]})`);\n }\n e.hasAttribute(\"stroke-opacity\") ? (t.strokeOpacity = parseFloat(e.getAttribute(\"stroke-opacity\")), e.removeAttribute(\"stroke-opacity\")) : e.style.strokeOpacity && (t.strokeOpacity = parseFloat(e.style.strokeOpacity)), e.hasAttribute(\"stroke-width\") ? (t.strokeWidth = e.getAttribute(\"stroke-width\"), e.removeAttribute(\"stroke-width\")) : e.style.strokeWidth && (t.strokeWidth = e.style.strokeWidth), e.hasAttribute(\"stroke-dasharray\") ? (t.strokeDasharray = e.getAttribute(\"stroke-dasharray\"), e.removeAttribute(\"stroke-dasharray\")) : e.style.strokeDasharray && (t.strokeDasharray = e.style.strokeDasharray);\n let a = e;\n for (; a.tagName.toLowerCase() !== \"svg\"; )\n if (a = a.parentElement, a === null)\n throw new Error(\"Could not find root SVG element\");\n return { svg: a.outerHTML, style: Object.keys(t).length > 0 ? t : void 0 };\n}\nfunction kt(e) {\n return !!e && e.type === \"iiif:ImageApiSelector\" && e.type === \"iiif:ImageApiSelector\";\n}\nfunction M(e) {\n if (e.iiifRenderingHints) {\n const t = e.iiifRenderingHints;\n if (t.rotation) {\n const a = St(t.rotation);\n if (a)\n if (e.selectors.length)\n for (const r of e.selectors)\n r.rotation = a;\n else\n e.selectors.push({\n type: \"RotationSelector\",\n rotation: a\n });\n }\n } else\n delete e.iiifRenderingHints;\n return e;\n}\nfunction St(e) {\n let t = parseFloat(e);\n return t && e.startsWith(\"!\") && (t = 360 - t), t && (t = t % 360), t !== t ? 0 : t || 0;\n}\nfunction R(e, t = {}) {\n if (Array.isArray(e))\n return R(e[0]);\n if (typeof e == \"string\") {\n const [a, r] = e.split(\"#\");\n return r ? R({\n type: \"SpecificResource\",\n source: { id: a, type: \"Unknown\" },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n }) : {\n type: \"SpecificResource\",\n source: { id: a, type: t.typeMap && t.typeMap[a] || \"Unknown\" },\n selector: null,\n selectors: []\n };\n }\n if (e.type === \"Choice\" || e.type === \"List\" || e.type === \"Composite\" || e.type === \"Independents\")\n return R(e.items[0]);\n if (e.type === \"SpecificResource\") {\n e.source.type === \"Canvas\" && e.source.partOf && typeof e.source.partOf == \"string\" && (e.source.partOf = [\n {\n id: e.source.partOf,\n type: \"Manifest\"\n }\n ]);\n const { selector: a, selectors: r } = e.selector ? _(e.selector, t) : { selector: null, selectors: [] };\n return {\n type: \"SpecificResource\",\n source: e.source,\n selector: a,\n selectors: r\n };\n }\n if (e.id) {\n e.type === \"Canvas\" && e.partOf && typeof e.partOf == \"string\" && (e.partOf = [\n {\n id: e.partOf,\n type: \"Manifest\"\n }\n ]);\n const [a, r] = e.id.split(\"#\");\n return r ? R({\n type: \"SpecificResource\",\n source: {\n ...e,\n id: a\n },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n }) : {\n type: \"SpecificResource\",\n source: {\n ...e,\n id: a\n },\n selector: null,\n selectors: []\n };\n }\n return {\n type: \"SpecificResource\",\n source: e,\n selector: null,\n selectors: []\n };\n}\nexport {\n R as expandTarget,\n kt as isImageApiSelector,\n St as parseRotation,\n _ as parseSelector\n};\n//# sourceMappingURL=annotation-targets.mjs.map\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","var qr = Object.defineProperty;\nvar Ur = (t, e, i) => e in t ? qr(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i;\nvar D = (t, e, i) => (Ur(t, typeof e != \"symbol\" ? e + \"\" : e, i), i);\nconst Ue = {}, V = {\n get(t) {\n return t;\n },\n setMetaValue([t, e, i], r) {\n const n = V.getResourceMeta(t, e), s = n ? n[i] : void 0, a = typeof r == \"function\" ? r(s) : r;\n Ue[t] = {\n ...Ue[t] || {},\n [e]: {\n ...(Ue[t] || {})[e] || {},\n [i]: a\n }\n };\n },\n getResourceMeta: (t, e) => {\n const i = Ue[t];\n if (i)\n return e ? i[e] : i;\n }\n};\nfunction _o(t = V) {\n return {\n addEventListener(e, i, r, n) {\n if (e)\n return t.setMetaValue(\n [e.id, \"eventManager\", i],\n (s) => {\n const a = s || [];\n for (const c of a)\n if (c.callback === r)\n return a;\n return [...a, { callback: r, scope: n }];\n }\n ), r;\n },\n removeEventListener(e, i, r) {\n e && t.setMetaValue(\n [e.id, \"eventManager\", i],\n (n) => (n || []).filter((s) => s.callback !== r)\n );\n },\n getListenersAsProps(e, i) {\n const r = typeof e == \"string\" ? { id: e } : e;\n if (!r || !r.id)\n return {};\n const n = t.getResourceMeta(r.id, \"eventManager\"), s = {};\n if (n && r)\n for (const a of Object.keys(n))\n s[a] = (c) => {\n const u = t.get(r);\n for (const { callback: p, scope: f } of n[a] || [])\n (!f || i && f.indexOf(i) !== -1) && p(c, u);\n };\n return s;\n }\n };\n}\nfunction To(t = V) {\n return {\n applyStyles(e, i, r) {\n const n = typeof e == \"string\" ? e : e.id;\n return t.setMetaValue([n, \"styles\", i], r);\n },\n getAppliedStyles(e) {\n const i = typeof e == \"string\" ? e : e.id;\n return t.getResourceMeta(i, \"styles\");\n }\n };\n}\nfunction ye(t) {\n return t.endsWith(\"info.json\") ? t : t.endsWith(\"/\") ? `${t}info.json` : `${t}/info.json`;\n}\nconst Wr = \"http://library.stanford.edu/iiif/image-api/compliance.html#level0\", ni = \"http://library.stanford.edu/iiif/image-api/compliance.html#level1\", si = \"http://library.stanford.edu/iiif/image-api/compliance.html#level2\", zr = \"http://library.stanford.edu/iiif/image-api/conformance.html#level0\", ai = \"http://library.stanford.edu/iiif/image-api/conformance.html#level1\", oi = \"http://library.stanford.edu/iiif/image-api/conformance.html#level2\", Vr = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0\", ci = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1\", li = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\", Br = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0\", fi = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1\", ui = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2\", Gr = \"http://iiif.io/api/image/1/level0.json\", Qr = \"http://iiif.io/api/image/1/profiles/level0.json\", pi = \"http://iiif.io/api/image/1/level1.json\", hi = \"http://iiif.io/api/image/1/profiles/level1.json\", di = \"http://iiif.io/api/image/1/level2.json\", vi = \"http://iiif.io/api/image/1/profiles/level2.json\", Hr = \"http://iiif.io/api/image/2/level0.json\", Yr = \"http://iiif.io/api/image/2/profiles/level0.json\", yi = \"http://iiif.io/api/image/2/level1.json\", mi = \"http://iiif.io/api/image/2/profiles/level1.json\", gi = \"http://iiif.io/api/image/2/level2.json\", Ai = \"http://iiif.io/api/image/2/profiles/level2.json\", Jr = \"level0\", bi = \"level1\", Si = \"level2\", Xr = \"http://iiif.io/api/image/2/level0\", xi = \"http://iiif.io/api/image/2/level1\", wi = \"http://iiif.io/api/image/2/level2\", Ci = [wi, si, oi, li, ui, di, vi, gi, Ai, Si], Ri = [...Ci, xi, ni, ai, ci, fi, pi, hi, yi, mi, bi], Kr = [Xr, xi, wi, Wr, ni, si, zr, ai, oi, Vr, ci, li, Br, fi, ui, Gr, Qr, pi, hi, di, vi, Hr, Yr, yi, mi, gi, Ai, Jr, bi, Si], Zr = { extraFormats: [\"jpg\"], extraQualities: [\"default\"], extraFeatures: [\"sizeByWhListed\"] }, en = { extraFormats: [\"jpg\"], extraQualities: [\"default\"], extraFeatures: [\"baseUriRedirect\", \"cors\", \"jsonldMediaType\", \"regionByPx\", \"regionSquare\", \"sizeByWhListed\", \"sizeByH\", \"sizeByW\", \"sizeByWh\"] }, tn = { extraFormats: [\"jpg\", \"png\"], extraQualities: [\"default\"], extraFeatures: [\"baseUriRedirect\", \"cors\", \"jsonldMediaType\", \"regionByPct\", \"regionByPx\", \"regionSquare\", \"rotationBy90s\", \"sizeByWhListed\", \"sizeByConfinedWh\", \"sizeByH\", \"sizeByPct\", \"sizeByW\", \"sizeByWh\"] };\nfunction rn(t) {\n return Ci.indexOf(t) !== -1 ? tn : Ri.indexOf(t) !== -1 ? en : Zr;\n}\nfunction nn(t) {\n const e = t ? Array.isArray(t.profile) ? t.profile : [t.profile] : [], i = { extraQualities: [], extraFormats: [], extraFeatures: [] };\n for (let r of e)\n if (typeof r == \"string\" && (r = rn(r)), !!r) {\n if (r.formats)\n for (const n of r.formats)\n i.extraFormats.indexOf(n) === -1 && i.extraFormats.push(n);\n if (r.qualities)\n for (const n of r.qualities)\n i.extraQualities.indexOf(n) === -1 && i.extraQualities.push(n);\n if (r.supports)\n for (const n of r.supports)\n i.extraFeatures.indexOf(n) === -1 && i.extraFeatures.push(n);\n if (r.maxHeight && (i.maxHeight = r.maxHeight), r.maxWidth && (i.maxWidth = r.maxWidth), r.maxArea && (i.maxArea = r.maxArea), r.extraFormats)\n for (const n of r.extraFormats)\n i.extraFormats.indexOf(n) === -1 && i.extraFormats.push(n);\n if (r.extraQualities)\n for (const n of r.extraQualities)\n i.extraQualities.indexOf(n) === -1 && i.extraQualities.push(n);\n if (r.extraFeatures)\n for (const n of r.extraFeatures)\n i.extraFeatures.indexOf(n) === -1 && i.extraFeatures.push(n);\n r.maxHeight && (i.maxHeight = r.maxHeight), r.maxWidth && (i.maxWidth = r.maxWidth), r.maxArea && (i.maxArea = r.maxArea);\n }\n if (t.extraFormats)\n for (const r of t.extraFormats)\n i.extraFormats.indexOf(r) === -1 && i.extraFormats.push(r);\n if (t.extraFeatures)\n for (const r of t.extraFeatures)\n i.extraFeatures.indexOf(r) === -1 && i.extraFeatures.push(r);\n if (t.extraQualities)\n for (const r of t.extraQualities)\n i.extraQualities.indexOf(r) === -1 && i.extraQualities.push(r);\n return i;\n}\nfunction sn(t) {\n try {\n if (t === \"full\")\n return { full: !0 };\n if (t === \"square\")\n return { square: !0 };\n const e = t.startsWith(\"pct:\"), i = t.substr(e ? 4 : 0).split(\",\").map((r) => parseFloat(r));\n return { x: i[0], y: i[1], w: i[2], h: i[3], percent: e };\n } catch {\n throw new Error(\"Expected 'full', 'square' or 'x,y,w,h'. Found \" + t);\n }\n}\nfunction an(t) {\n const e = { upscaled: !1, max: !1, confined: !1 };\n if (t[0] === \"^\" && (e.upscaled = !0, t = t.slice(1)), t === \"max\" || t === \"full\")\n return e.max = !0, e.serialiseAsFull = t === \"full\", e;\n if (t[0] === \"!\" && (e.confined = !0, t = t.slice(1)), t[0] === \"p\")\n return e.percentScale = parseFloat(t.slice(4)), e;\n const i = t.split(\",\").map((r) => r.trim());\n return i.length && (i[0] !== \"\" && (e.width = parseInt(i[0], 10)), i[1] !== \"\" ? (e.height = parseInt(i[1], 10), e.version = 2) : e.version = 3), e;\n}\nfunction on(t) {\n const e = { angle: 0 };\n if (t[0] === \"!\" && (e.mirror = !0, t = t.substr(1)), e.angle = parseFloat(t) % 360, Number.isNaN(e.angle))\n throw new Error(`Invalid rotation ${t}`);\n return e;\n}\nfunction cn(t, e = \"\") {\n const i = t.match(/^(([a-zA-Z]+):\\/\\/([^/]+))?((.*)+)/);\n if (!i)\n throw new Error(`Invalid or unknown input ${t}`);\n const r = i[2], n = i[3];\n let s = i[4];\n if (s[0] === \"/\" && (s = s.substr(1)), e.length > 0) {\n if (e[0] === \"/\" && (e = e.substr(1)), e !== s.substr(0, e.length))\n throw new Error(`Path does not start with prefix (path: ${s}, prefix: ${e})`);\n s = s.substr(e.length);\n }\n return { scheme: r, server: n, path: s, prefix: e };\n}\nfunction ln(t, e = \"\") {\n const { path: i, scheme: r, server: n, prefix: s } = cn(t, e), a = i.split(\"/\").reverse(), [c, u, p, f, ...v] = a, y = v.reverse().filter(Boolean).join(\"/\");\n if (a.length === 1 || c === \"\")\n return { type: \"base\", scheme: r, server: n, prefix: s, identifier: y };\n if (c === \"info.json\") {\n const [, ...h] = a;\n return { type: \"info\", scheme: r, server: n, prefix: s, identifier: h.reverse().filter(Boolean).join(\"/\") };\n }\n const m = c.split(\".\");\n return { type: \"image\", scheme: r, server: n, prefix: s, identifier: y, originalPath: i, region: sn(f), size: an(p), rotation: on(u), quality: m[0], format: m[1] };\n}\nfunction fn(t) {\n const e = ln(ye(t.id));\n if (e.type !== \"info\")\n throw new Error(\"Invalid service URL\");\n const i = nn(t);\n return { identifier: e.identifier, originalPath: \"\", server: e.server, prefix: e.prefix, scheme: e.scheme, type: \"image\", quality: i.extraQualities.indexOf(\"default\") === -1 ? i.extraQualities[0] : \"default\", region: { full: !0 }, size: { max: !0, upscaled: !1, confined: !1 }, format: \"jpg\", rotation: { angle: 0 } };\n}\nfunction un(t, e, i) {\n const r = i.length, n = [];\n for (let s = 0; s < r; s++) {\n const a = i[s].width;\n n.push(t / a);\n }\n return n;\n}\nfunction pn(t, e, i) {\n const r = i.length, n = [];\n for (let s = 0; s < r; s++) {\n const a = i[s];\n n.push({ width: Math.floor(t / a), height: Math.floor(e / a) });\n }\n return n;\n}\nfunction O(t) {\n if (t[\"@id\"])\n return t[\"@id\"];\n if (t.id)\n return t.id;\n}\nfunction Ge(t) {\n if (!t || !t.profile || !O(t))\n return !1;\n const e = Array.isArray(t.profile) ? t.profile : [t.profile];\n for (const i of e)\n if (typeof i == \"string\" && Kr.indexOf(i) !== -1)\n return !0;\n return !1;\n}\nfunction hn(t) {\n if (!Ge(t))\n return !1;\n const e = Array.isArray(t.profile) ? t.profile : [t.profile];\n for (const i of e)\n if (typeof i == \"string\") {\n if (Ri.indexOf(i) !== -1)\n return !0;\n } else {\n const r = [...i.supports || [], ...i.extraFeatures || []];\n if (r.indexOf(\"regionByPx\") !== -1 && (r.indexOf(\"sizeByW\") !== -1 || r.indexOf(\"sizeByWh\") !== -1))\n return !0;\n }\n return !1;\n}\nfunction Ve(t, e) {\n if (e && e.profile) {\n const i = e.profile;\n if (i) {\n const r = Array.isArray(i) ? i : [i];\n return r.includes(`level${t}`) || r.includes(`http://iiif.io/api/image/2/level${t}.json`) || r.includes(`http://iiif.io/api/image/1/level${t}.json`) || r.includes(`http://iiif.io/api/image/1/profiles/level${t}.json`);\n }\n }\n return !1;\n}\nfunction ot(t) {\n return Ge(t) ? Ve(0, t) ? 0 : Ve(1, t) ? 1 : Ve(2, t) ? 2 : null : null;\n}\nfunction Ii(t) {\n return (t[\"@context\"] ? Array.isArray(t[\"@context\"]) ? t[\"@context\"] : [t[\"@context\"]] : []).indexOf(\"http://iiif.io/api/image/3/context.json\") !== -1;\n}\nfunction dn(t) {\n if (!hn(t))\n return [];\n const e = [], i = Array.isArray(t.profile) ? t.profile : [t.profile], r = i.length;\n for (let n = 0; n < r; n++) {\n const s = i[n];\n if (typeof s != \"string\" && (s.maxHeight || s.maxWidth))\n return [{ id: O(t), type: \"variable\", minWidth: 0, minHeight: 0, maxHeight: s.maxHeight || s.maxWidth, maxWidth: s.maxWidth || s.maxHeight, level: ot(t), version: t[\"@context\"] === \"http://iiif.io/api/image/3/context.json\" ? 3 : 2 }];\n }\n if (t.tiles) {\n const n = t.tiles.length;\n for (let s = 0; s < n; s++) {\n const a = t.tiles[s];\n (a.height || a.width) && e.push({ id: O(t), type: \"variable\", minHeight: 0, minWidth: 0, maxHeight: a.height || a.width, maxWidth: a.width, level: ot(t), version: Ii(t) ? 3 : 2 });\n }\n }\n return e;\n}\nfunction Pt(t) {\n const e = /^.*\\/(full)\\/(((\\d+),(\\d+)?)|max)\\/(\\d+)\\/default\\.(jpg|png|jpeg)$/, i = t.match(e);\n if (i) {\n const r = i[1], n = parseInt(i[4], 10), s = parseInt(i[5], 10), a = i[7];\n if ((r === \"max\" || r === \"full\") && n && s && a)\n return { type: \"fixed\", id: t, height: s, width: n };\n }\n return { type: \"unknown\", id: t };\n}\nfunction vn(t) {\n if (t[\"@type\"])\n return t[\"@type\"];\n if (t.type)\n return t.type;\n}\nfunction ct(t) {\n if (typeof t == \"string\")\n return Pt(t);\n const e = vn(t);\n if (e !== \"Image\" && e !== \"sc:Image\")\n return null;\n const i = t, r = O(i);\n return r ? r && i.width && i.height ? { id: r, type: \"fixed\", width: i.width, height: i.height, unsafe: !0 } : Pt(r) : null;\n}\nfunction yn(t) {\n return Ge(t) ? (t && t.sizes ? t.sizes : []).map((e) => ({ id: O(t), type: \"fixed-service\", height: e.height, width: e.width, level: ot(t), version: Ii(t) ? 3 : 2 })) : [];\n}\nfunction jt(t) {\n const e = [], i = t.length;\n for (let r = 0; r < i; r++) {\n const n = yn(t[r]);\n n.length && e.push(...n);\n const s = dn(t[r]);\n s.length && e.push(...s);\n }\n return e;\n}\nfunction Ei(t) {\n const e = t.service ? Array.isArray(t.service) ? t.service : [t.service] : [], i = e.length, r = [];\n for (let n = 0; n < i; n++)\n Ge(e[n]) && r.push(e[n]);\n return r;\n}\nfunction mn(t, e = !0, i) {\n const r = [], n = ct(t);\n if (n === null)\n return r;\n const s = t;\n if (r.push(n), e && s.width && s.height) {\n const a = [], c = Ei(s);\n for (const u of c) {\n const p = { id: O(u), width: s.width, height: s.height };\n if (i.canLoadSync(p)) {\n const f = i.loadServiceSync(p);\n f && (f.height || (f.height = s.height), f.width || (f.width = s.width), a.push(...jt([f])));\n }\n }\n if (a.length)\n return r.push(...a), r;\n }\n return s.service && r.push(...jt(s.service)), r;\n}\nfunction gn({ x: t = 0, y: e = 0, w: i, h: r, full: n, square: s, percent: a }) {\n if (n)\n return \"full\";\n if (s)\n return \"square\";\n if (typeof i > \"u\" || typeof r > \"u\")\n throw new Error(\"RegionParameter: invalid region\");\n const c = `${t},${e},${i},${r}`;\n return a ? `pct:${c}` : c;\n}\nfunction An({ max: t, percentScale: e, upscaled: i, confined: r, width: n, height: s, serialiseAsFull: a, version: c }) {\n const u = [];\n return i && u.push(\"^\"), t ? (u.push(a ? \"full\" : \"max\"), u.join(\"\")) : (r && u.push(\"!\"), e && u.push(`pct:${e}`), n && u.push(`${n}`), u.push(\",\"), s && c === 3 && u.push(`${s}`), u.join(\"\"));\n}\nfunction bn(t) {\n return `${t.mirror ? \"!\" : \"\"}${(t.angle || 0) % 360}`;\n}\nvar Sn = Object.defineProperty, xn = Object.defineProperties, wn = Object.getOwnPropertyDescriptors, Dt = Object.getOwnPropertySymbols, Cn = Object.prototype.hasOwnProperty, Rn = Object.prototype.propertyIsEnumerable, Nt = (t, e, i) => e in t ? Sn(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i, le = (t, e) => {\n for (var i in e || (e = {}))\n Cn.call(e, i) && Nt(t, i, e[i]);\n if (Dt)\n for (var i of Dt(e))\n Rn.call(e, i) && Nt(t, i, e[i]);\n return t;\n}, fe = (t, e) => xn(t, wn(e));\nfunction In(t, e) {\n const i = t.prefix.startsWith(\"/\") ? t.prefix.substr(1) : t.prefix, r = `${t.scheme}://${t.server}/${i ? `${i}/` : \"\"}${t.identifier}`;\n if (t.type === \"base\")\n return r;\n if (t.type === \"info\")\n return `${r}/info.json`;\n let { size: n } = t;\n const { region: s, rotation: a, format: c, quality: u } = t;\n if (e) {\n const p = e[\"@context\"] ? Array.isArray(e[\"@context\"]) ? e[\"@context\"] : [e[\"@context\"]] : [], f = p.indexOf(\"http://iiif.io/api/image/2/context.json\") !== -1, v = p.indexOf(\"http://iiif.io/api/image/3/context.json\") !== -1;\n if ((n.width === e.width && !n.height || n.height === e.height && !n.width || n.width === e.width && n.height === e.height) && (n = fe(le({}, n), { max: !0 })), f && (n.max && !n.serialiseAsFull && (n = fe(le({}, n), { serialiseAsFull: !0 })), !n.max && n.width && n.height && (n = fe(le({}, n), { height: void 0 })), n = fe(le({}, n), { version: 2 })), v) {\n if (n.max && n.serialiseAsFull && (n = fe(le({}, n), { serialiseAsFull: !1 })), n.width && !n.height && e.width && e.height) {\n const y = e.height / e.width;\n n = fe(le({}, n), { height: Math.ceil(n.width * y) });\n }\n n = fe(le({}, n), { version: 3 });\n }\n }\n return [r, gn(s), An(n), bn(a), `${u}.${c}`].filter(Boolean).join(\"/\");\n}\nfunction Ke(t, e, i) {\n const r = fn({ \"@context\": t.version === 3 ? \"http://iiif.io/api/image/3/context.json\" : \"http://iiif.io/api/image/2/context.json\", id: ye(O(t)), profile: t.level === null || typeof t.level > \"u\" ? \"level0\" : `level${t.level}}`, type: t.version === 3 ? \"ImageService3\" : \"ImageService2\" });\n if (r.type !== \"image\")\n throw new Error(\"Invalid service\");\n return r.size.max = !1, r.size.width = e, r.size.height = i, { id: In(r), type: \"fixed\", width: e, height: i || t.height / (t.width || 1) * e, unsafe: t.width > e };\n}\nfunction Se(t) {\n const e = t.replace(/(https?:\\/\\/)?(www.)?/i, \"\");\n return e.indexOf(\"/\") !== -1 ? e.split(\"/\")[0] : e;\n}\nfunction En(t, e, i) {\n const r = t.width ? t.width : t.maxWidth;\n return i.height <= t.maxHeight && i.width <= t.maxWidth && i.height >= t.minHeight && i.width >= t.minWidth && (!e || Math.abs(i.width - r) < Math.abs(e.width - r));\n}\nfunction On(t, e) {\n const i = [], r = Object.assign({ unsafeImageService: !1, atAnyCost: !0, fallback: !0, minHeight: 64, minWidth: 64, maxHeight: 1 / 0, maxWidth: 1 / 0, returnAllOptions: !1, preferFixedSize: !1, allowUnsafe: !1, explain: !1, height: 0, width: 0 }, t), n = (f, v = 0) => r.explain ? i.push(new Array(v).fill(0).map((y) => \" \").join(\"\") + f().trim()) : void 0, s = [], a = [];\n let c = null;\n n(() => `Using configuration: ${JSON.stringify(r, null, 2)}`);\n const u = (f, v) => {\n if (n(() => \"Swapping choice\", 3), En(r, v, f)) {\n if (r.preferFixedSize && f.unsafe) {\n n(() => `We found an image that was marked as unsafe, but it was the best size. (${f.id})`, 4), a.push(f);\n return;\n }\n r.returnAllOptions && v && a.push(v), n(() => `We found a new image that was the best size. (${f.id})`, 4), c = f;\n } else\n r.returnAllOptions && a.push(f);\n };\n n(() => `The input shows we have ${e.length} list(s) of candidates to choose from.`);\n const p = e.length;\n for (let f = 0; f < p; f++) {\n const v = e[f]();\n n(() => `Candidate group ${f}: ${JSON.stringify(v, null, 2)}`, 1);\n const y = v.length;\n n(() => `Checking candidate list number ${f} and found ${y} potential ways of creating image(s)`, 1);\n for (let m = 0; m < y; m++) {\n const h = v[m];\n if (n(() => `-> Checking candidate ${m}`, 1), h.type === \"unknown\" && r.atAnyCost && (n(() => `We've found an unknown image type, adding this to the \"last resort\" list`, 2), s.push(h)), h.type === \"fixed\" && (h.unsafe ? (n(() => `We've found an unsafe fixed image type, adding this to the \"last resort\" list`, 2), s.push(h)) : (n(() => \"We've found a fixed size image, checking if it matches the request\", 2), u(h, c))), h.type === \"fixed-service\")\n if (r.unsafeImageService) {\n n(() => \"Checking for an image from the tile source, without calculating the right height and width (unsafeImageService)\", 2);\n const A = Ke(h, r.width, r.height);\n u(A, c);\n } else {\n n(() => \"Checking for an image from the tile source 3\", 2);\n const A = Ke(h, h.width, h.height);\n u(A, c);\n }\n if (h.type === \"variable\" && h.maxWidth) {\n const A = Ke({ id: h.id, type: \"fixed-service\", width: h.maxWidth, height: h.maxWidth, level: h.level, version: h.version }, h.maxWidth);\n u(A, c);\n }\n }\n if (c && !r.returnAllOptions) {\n if (c.unsafe || r.allowUnsafe)\n continue;\n n(() => `We found a match in choice list number ${f}, no searching any more`);\n break;\n }\n }\n return r.atAnyCost && a.length === 0 ? (n(() => c ? `We found an image! ${c.id} of type ${c.type}` : 'We found no images, but \"atAnyCost\" is set, so returning that'), { best: c || s[0], fallback: s.slice(1), log: i }) : r.returnAllOptions ? (n(() => \"Returning all options that we have found\"), { best: r.atAnyCost ? c || a[0] || s[0] : c || a[0], fallback: [...a, ...s], log: i }) : (n(() => \"Returning the best image that we found, and a fallback\"), { best: c || a[0] || null, fallback: c ? a : a.slice(1), log: i });\n}\nvar _n = Object.defineProperty, Tn = Object.defineProperties, Mn = Object.getOwnPropertyDescriptors, $t = Object.getOwnPropertySymbols, kn = Object.prototype.hasOwnProperty, Fn = Object.prototype.propertyIsEnumerable, qt = (t, e, i) => e in t ? _n(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i, Ln = (t, e) => {\n for (var i in e || (e = {}))\n kn.call(e, i) && qt(t, i, e[i]);\n if ($t)\n for (var i of $t(e))\n Fn.call(e, i) && qt(t, i, e[i]);\n return t;\n}, Pn = (t, e) => Tn(t, Mn(e));\nfunction jn(t, e, i) {\n const r = t > e ? t : e, n = i.length, s = [];\n for (let a = 0; a < n; a++) {\n const c = i[a];\n let u = c.scaleFactors[0], p = r / u;\n const f = [u];\n for (; p >= c.width; )\n u = u * 2, f.push(u), p = p / 2;\n s.push(Pn(Ln({}, c), { scaleFactors: f }));\n }\n return s;\n}\nfunction Dn(t, e) {\n if (t.length !== e.length)\n return !1;\n if (t.length === 0 && e.length === 0)\n return !0;\n const i = t.length;\n let r = !0;\n for (let s = 0; s < i; s++) {\n const a = t[s], c = e[s];\n if (a.width !== c.width || a.height !== c.height) {\n r = !1;\n break;\n }\n }\n if (r)\n return !0;\n let n = 0;\n for (let s = 0; s < i; s++)\n for (let a = 0; a < i; a++)\n if (t[s].width === e[a].width && t[s].height === e[a].height) {\n n++;\n break;\n }\n return n === i;\n}\nfunction Ut(t) {\n return Ve(0, t);\n}\nvar ue = (t, e, i) => new Promise((r, n) => {\n var s = (u) => {\n try {\n c(i.next(u));\n } catch (p) {\n n(p);\n }\n }, a = (u) => {\n try {\n c(i.throw(u));\n } catch (p) {\n n(p);\n }\n }, c = (u) => u.done ? r(u.value) : Promise.resolve(u.value).then(s, a);\n c((i = i.apply(t, e)).next());\n});\nclass Nn {\n constructor() {\n this.config = { verificationsRequired: 1, approximateServices: !0, enableFetching: !0, disableThrottling: !1 }, this.fetchingCount = 0, this.imageServices = {}, this.knownImageServers = {};\n }\n setConfig(e) {\n Object.assign(this.config, e);\n }\n sample(e, i, r = !0) {\n const n = Se(O(e)), s = ye(O(e)), a = this.knownImageServers[n];\n return this.imageServices[s] = Object.assign(e, { real: !0 }), !a && e.tiles && !Ut(e) ? (this.knownImageServers[n] = { verifications: 0, malformed: !1, root: n, preLoaded: r, sampledId: O(e), verified: !1, server: null, result: { context: e[\"@context\"] || [], sampledProfile: e.profile, resourceServiceRatio: i && e.height ? i.height / e.height : 1, sampledSizes: e.sizes || [], sizeRatios: un(e.width, e.height, e.sizes || []), sampledTiles: e.tiles || [] } }, !0) : this.verify(e);\n }\n preLoad(e, i = !0) {\n this.knownImageServers[e.root] = e, i && (this.knownImageServers[e.root].malformed = !1, this.knownImageServers[e.root].verifications = this.config.verificationsRequired);\n }\n predict(e, i = !1, r = !1) {\n const n = e == null ? void 0 : e.source, s = Se(O(e)), a = this.knownImageServers[s];\n if (!a || !a.result || !(n != null && n.height || e.height) || !(n != null && n.width || e.width) || !r && (a.malformed || a.verifications < this.config.verificationsRequired) || Ut(e.source))\n return null;\n const c = ye(O(e));\n return this.imageServices[c] || (this.imageServices[c] = { \"@context\": a.result.context, \"@id\": O(e), id: O(e), protocol: \"http://iiif.io/api/image\", tiles: (n == null ? void 0 : n.tiles) || jn(e.width, e.height, a.result.sampledTiles), sizes: (n == null ? void 0 : n.sizes) || pn(Math.round(e.width / a.result.resourceServiceRatio), Math.round(e.height / a.result.resourceServiceRatio), a.result.sizeRatios), profile: (n == null ? void 0 : n.profile) || a.result.sampledProfile, height: (n == null ? void 0 : n.height) || e.height, width: (n == null ? void 0 : n.width) || e.width, real: !1 }), this.imageServices[c];\n }\n getThumbnailFromResource(e, i) {\n return ue(this, arguments, function* (r, n, s = !0, a = []) {\n const c = r ? yield this.getImageCandidates(r, s) : [];\n return On(n, [() => a, () => c]);\n });\n }\n getImageCandidates(e, i = !0) {\n return ue(this, null, function* () {\n const r = e;\n if (i && r.height && r.width) {\n const n = Ei(r);\n for (const s of n) {\n const a = { id: O(s), width: s.width ? s.width : r.width, height: s.height ? s.height : r.height, source: s };\n yield this.loadService(a);\n }\n }\n return mn(e, i, this);\n });\n }\n verify(e) {\n return ue(this, null, function* () {\n const i = this.predict(e, !1, !0), r = yield this.fetchService(O(e));\n if (!i)\n return !1;\n const n = i.height === r.height && i.width === r.width && i[\"@context\"] === r[\"@context\"] && Dn(i.sizes || [], r.sizes || []);\n if (n) {\n const s = Se(O(e));\n this.knownImageServers[s].verifications += 1, this.knownImageServers[s].verifications >= this.config.verificationsRequired && (this.knownImageServers[s].verified = !0);\n }\n return n;\n });\n }\n canLoadSync(e) {\n const i = typeof e == \"string\" ? e : O(e), r = ye(i);\n if (this.imageServices[r])\n return !0;\n const n = this.knownImageServers[Se(i)];\n return n && !n.malformed && n.verifications >= this.config.verificationsRequired;\n }\n markAsMalformed(e) {\n return ue(this, null, function* () {\n return this.knownImageServers[Se(O(e))].malformed = !0, this.loadService(e, !0);\n });\n }\n fetchService(e, i = !1) {\n return ue(this, null, function* () {\n const r = ye(e);\n if (this.imageServices[r] && (!i || this.imageServices[r].real))\n return this.imageServices[r];\n if (!this.config.enableFetching)\n throw new Error(\"Fetching is not enabled\");\n const n = yield this.fetch(r).then((s) => s.json());\n return !n.id && n[\"@id\"] && (n.id = n[\"@id\"]), n.id !== e && (n.id = e, n[\"@id\"] && (n[\"@id\"] = e)), this.imageServices[r] = Object.assign(n, { real: !0 }), this.imageServices[r];\n });\n }\n fetch(e, i) {\n return ue(this, null, function* () {\n return fetch(e, i);\n });\n }\n loadService(e, i = !1) {\n return ue(this, null, function* () {\n if (!this.config.disableThrottling) {\n let s = !0;\n for (; s; )\n if (this.fetchingCount >= this.config.verificationsRequired)\n yield new Promise((a) => setTimeout(a, 500));\n else {\n s = !1;\n break;\n }\n }\n const r = this.knownImageServers[Se(O(e))];\n if (r && !r.malformed && !i) {\n yield r.result;\n const s = this.loadServiceSync(e);\n if (s)\n return s;\n }\n this.fetchingCount++;\n const n = yield this.fetchService(O(e), i);\n return this.fetchingCount--, n.real && this.sample(n, e), n;\n });\n }\n loadServiceSync(e) {\n const i = ye(O(e));\n return this.imageServices[i] ? this.imageServices[i] : this.predict(e);\n }\n}\nconst $n = new Nn(), Wt = /* @__PURE__ */ new Map();\nfunction Mo(t, {\n vault: e = V,\n dereference: i = !1,\n ...r\n} = {}) {\n let n = Wt.get(e);\n return n || (n = qn(e), Wt.set(e, n)), n.getBestThumbnailAtSize(t, r, i);\n}\nfunction qn(t = V, e = {}) {\n const i = e.imageServiceLoader || $n;\n async function r(n, s, a = !1, c = [], u) {\n const p = () => i.getThumbnailFromResource(void 0, s, a, c);\n if (!n)\n return await i.getThumbnailFromResource(void 0, s, a, c);\n if (typeof n == \"string\") {\n const y = ct(n);\n return y && c.push(y), await i.getThumbnailFromResource(void 0, s, a, c);\n }\n const f = t.get(n, { skipSelfReturn: !1 });\n if (typeof f == \"string\")\n return { best: ct(f), fallback: [], log: [] };\n if (!f)\n return await p();\n switch (await (async (y) => {\n if (y && y.thumbnail && y.thumbnail.length) {\n const m = t.get(y.thumbnail[0]), h = await i.getImageCandidates(m, a);\n h && h.length && c.push(...h);\n }\n })(f), f.type) {\n case \"Annotation\": {\n const y = Array.isArray(f.body) ? f.body : [f.body], m = t.get(y[0]);\n return u && !m.width && (m.width = u.width, m.height = u.height), await i.getThumbnailFromResource(m, s, a, c);\n }\n case \"Canvas\": {\n const y = f;\n return r(y.items[0], s, a, c, {\n width: y.width,\n height: y.height\n });\n }\n case \"AnnotationPage\":\n return r(f.items[0], s, a, c, u);\n case \"Choice\": {\n const y = f;\n return !y.items || y.items[0] ? await p() : r(y.items[0], s, a, c, u);\n }\n case \"Collection\": {\n const m = f.items[0];\n return m ? r(m, s, a, c, u) : await p();\n }\n case \"Manifest\": {\n const m = f.items[0];\n return m ? r(m, s, a, c, u) : await p();\n }\n case \"SpecificResource\":\n case \"Image\":\n case \"Dataset\":\n case \"Sound\":\n case \"Text\":\n case \"TextualBody\":\n case \"Video\":\n return u && !f.width && (f.width = u.width, f.height = u.height), i.getThumbnailFromResource(f, s, a, c);\n }\n return await p();\n }\n return {\n getBestThumbnailAtSize: r\n };\n}\nfunction Un(t, e, i = [], r = !1, n = []) {\n if (n.length && (e = e.filter((s) => n.indexOf(s) === -1)), !(!e || e.length === 0)) {\n if (e.length === 1)\n return e[0];\n if (!t && e.indexOf(\"none\") !== -1)\n return \"none\";\n {\n if (e.indexOf(t) !== -1)\n return t;\n const s = t.indexOf(\"-\") !== -1 ? t.slice(0, t.indexOf(\"-\")) : null;\n if (s && e.indexOf(s) !== -1)\n return s;\n }\n for (const s of i)\n if (e.indexOf(s) !== -1)\n return s;\n if (!r && t) {\n const a = e.map((c) => c.indexOf(\"-\") !== -1 ? c.slice(0, c.indexOf(\"-\")) : null).indexOf(t);\n if (a !== -1)\n return e[a];\n for (const c of i) {\n const u = c.indexOf(\"-\") !== -1 ? c.slice(0, c.indexOf(\"-\")) : null, p = u ? e.indexOf(u) : -1;\n if (p !== -1)\n return e[p];\n }\n }\n return e.indexOf(\"none\") !== -1 ? \"none\" : e.indexOf(\"@none\") !== -1 ? \"@none\" : e[0];\n }\n}\nfunction Oi(t, e, i = {}) {\n const {\n strictFallback: r = !1,\n defaultText: n = \"\",\n separator: s = `\n`,\n fallbackLanguages: a = [],\n closest: c,\n skipLanguages: u\n } = i, p = Object.keys(t || {}), f = c ? e : Un(e, p, a, r, u);\n if (!t)\n return n;\n if (typeof t == \"string\")\n return t;\n const v = f ? t[f] : void 0;\n if (v && f) {\n if (typeof v == \"string\")\n return v;\n if (v.length === 1 && v[0] === \"\") {\n const y = i.skipLanguages || [];\n return Oi(t, e, {\n ...i,\n skipLanguages: [...y, f]\n });\n }\n return v.join(s);\n }\n return \"\";\n}\nfunction ko(t, e = {}) {\n return Oi(\n t,\n e.language || (typeof navigator < \"u\" ? navigator.language : \"en\"),\n e\n );\n}\nvar Wn = function() {\n function t(e, i) {\n var r = [], n = !0, s = !1, a = void 0;\n try {\n for (var c = e[Symbol.iterator](), u; !(n = (u = c.next()).done) && (r.push(u.value), !(i && r.length === i)); n = !0)\n ;\n } catch (p) {\n s = !0, a = p;\n } finally {\n try {\n !n && c.return && c.return();\n } finally {\n if (s)\n throw a;\n }\n }\n return r;\n }\n return function(e, i) {\n if (Array.isArray(e))\n return e;\n if (Symbol.iterator in Object(e))\n return t(e, i);\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n };\n}(), ke = Math.PI * 2, Ze = function(e, i, r, n, s, a, c) {\n var u = e.x, p = e.y;\n u *= i, p *= r;\n var f = n * u - s * p, v = s * u + n * p;\n return {\n x: f + a,\n y: v + c\n };\n}, zn = function(e, i) {\n var r = i === 1.5707963267948966 ? 0.551915024494 : i === -1.5707963267948966 ? -0.551915024494 : 1.3333333333333333 * Math.tan(i / 4), n = Math.cos(e), s = Math.sin(e), a = Math.cos(e + i), c = Math.sin(e + i);\n return [{\n x: n - s * r,\n y: s + n * r\n }, {\n x: a + c * r,\n y: c - a * r\n }, {\n x: a,\n y: c\n }];\n}, zt = function(e, i, r, n) {\n var s = e * n - i * r < 0 ? -1 : 1, a = e * r + i * n;\n return a > 1 && (a = 1), a < -1 && (a = -1), s * Math.acos(a);\n}, Vn = function(e, i, r, n, s, a, c, u, p, f, v, y) {\n var m = Math.pow(s, 2), h = Math.pow(a, 2), A = Math.pow(v, 2), x = Math.pow(y, 2), S = m * h - m * x - h * A;\n S < 0 && (S = 0), S /= m * x + h * A, S = Math.sqrt(S) * (c === u ? -1 : 1);\n var C = S * s / a * y, E = S * -a / s * v, P = f * C - p * E + (e + r) / 2, j = p * C + f * E + (i + n) / 2, k = (v - C) / s, $ = (y - E) / a, B = (-v - C) / s, G = (-y - E) / a, oe = zt(1, 0, k, $), W = zt(k, $, B, G);\n return u === 0 && W > 0 && (W -= ke), u === 1 && W < 0 && (W += ke), [P, j, oe, W];\n}, Bn = function(e) {\n var i = e.px, r = e.py, n = e.cx, s = e.cy, a = e.rx, c = e.ry, u = e.xAxisRotation, p = u === void 0 ? 0 : u, f = e.largeArcFlag, v = f === void 0 ? 0 : f, y = e.sweepFlag, m = y === void 0 ? 0 : y, h = [];\n if (a === 0 || c === 0)\n return [];\n var A = Math.sin(p * ke / 360), x = Math.cos(p * ke / 360), S = x * (i - n) / 2 + A * (r - s) / 2, C = -A * (i - n) / 2 + x * (r - s) / 2;\n if (S === 0 && C === 0)\n return [];\n a = Math.abs(a), c = Math.abs(c);\n var E = Math.pow(S, 2) / Math.pow(a, 2) + Math.pow(C, 2) / Math.pow(c, 2);\n E > 1 && (a *= Math.sqrt(E), c *= Math.sqrt(E));\n var P = Vn(i, r, n, s, a, c, v, m, A, x, S, C), j = Wn(P, 4), k = j[0], $ = j[1], B = j[2], G = j[3], oe = Math.abs(G) / (ke / 4);\n Math.abs(1 - oe) < 1e-7 && (oe = 1);\n var W = Math.max(Math.ceil(oe), 1);\n G /= W;\n for (var Ee = 0; Ee < W; Ee++)\n h.push(zn(B, G)), B += G;\n return h.map(function(ce) {\n var N = Ze(ce[0], a, c, x, A, k, $), Qe = N.x, He = N.y, De = Ze(ce[1], a, c, x, A, k, $), Q = De.x, Ne = De.y, Oe = Ze(ce[2], a, c, x, A, k, $), Ye = Oe.x, _e = Oe.y;\n return { x1: Qe, y1: He, x2: Q, y2: Ne, x: Ye, y: _e };\n });\n}, Gn = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nfunction _i(t) {\n return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, \"default\") ? t.default : t;\n}\nvar Qn = Yn, et = { a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0 }, Hn = /([astvzqmhlc])([^astvzqmhlc]*)/ig;\nfunction Yn(t) {\n var e = [];\n return t.replace(Hn, function(i, r, n) {\n var s = r.toLowerCase();\n for (n = Xn(n), s == \"m\" && n.length > 2 && (e.push([r].concat(n.splice(0, 2))), s = \"l\", r = r == \"m\" ? \"l\" : \"L\"); ; ) {\n if (n.length == et[s])\n return n.unshift(r), e.push(n);\n if (n.length < et[s])\n throw new Error(\"malformed path data\");\n e.push([r].concat(n.splice(0, et[s])));\n }\n }), e;\n}\nvar Jn = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig;\nfunction Xn(t) {\n var e = t.match(Jn);\n return e ? e.map(Number) : [];\n}\nconst Kn = /* @__PURE__ */ _i(Qn);\nvar Zn = es;\nfunction es(t) {\n var e = 0, i = 0, r = 0, n = 0;\n return t.map(function(s) {\n s = s.slice();\n var a = s[0], c = a.toUpperCase();\n if (a != c)\n switch (s[0] = c, a) {\n case \"a\":\n s[6] += r, s[7] += n;\n break;\n case \"v\":\n s[1] += n;\n break;\n case \"h\":\n s[1] += r;\n break;\n default:\n for (var u = 1; u < s.length; )\n s[u++] += r, s[u++] += n;\n }\n switch (c) {\n case \"Z\":\n r = e, n = i;\n break;\n case \"H\":\n r = s[1];\n break;\n case \"V\":\n n = s[1];\n break;\n case \"M\":\n r = e = s[1], n = i = s[2];\n break;\n default:\n r = s[s.length - 2], n = s[s.length - 1];\n }\n return s;\n });\n}\nconst ts = /* @__PURE__ */ _i(Zn);\nfunction is(t) {\n const e = Kn(t), i = ts(e);\n let r, n = 0, s = 0, a = 0, c = 0, u, p, f = 0, v = 0;\n const y = [];\n for (let m = 0; m < i.length; m++) {\n let h = i[m];\n const A = h[0];\n switch (A) {\n case \"M\":\n n = h[1], s = h[2];\n break;\n case \"H\":\n h = [\"L\", h[1], s];\n break;\n case \"V\":\n h = [\"L\", n, h[1]];\n break;\n case \"S\":\n {\n let x = f, S = v;\n (r === \"C\" || r == \"S\") && (x += x - a, S += S - c), h = [\"C\", x, S, h[1], h[2], h[3], h[4]];\n }\n break;\n case \"T\":\n r === \"Q\" || r == \"T\" ? (u = f * 2 - u, p = v * 2 - p) : (u = f, p = v), h = [\"Q\", u, p, h[1], h[2]];\n break;\n case \"Q\":\n u = h[1], p = h[2];\n break;\n case \"A\":\n {\n const x = Bn({\n px: f,\n py: v,\n cx: h[6],\n cy: h[7],\n rx: h[1],\n ry: h[2],\n xAxisRotation: h[3],\n largeArcFlag: h[4],\n sweepFlag: h[5]\n });\n if (!x.length)\n continue;\n for (const [S, C] of x.entries())\n h = [\"C\", C.x1, C.y1, C.x2, C.y2, C.x, C.y], S < x.length - 1 && y.push(h);\n h = h;\n }\n break;\n case \"Z\":\n h = [\"L\", n, s];\n break;\n }\n r = A, f = h[h.length - 2], v = h[h.length - 1], [\"C\", \"Q\", \"A\"].indexOf(A) > -1 ? (a = h[h.length - 4], c = h[h.length - 3]) : (a = f, c = v), y.push(h);\n }\n return y;\n}\n/** Code to \"flatten\" quadratic and cubic Bézier curves to polylines.\n *\n * All code in this module is based on JavaScript code by Raph Levien, published on his blog at\n * https://raphlinus.github.io/.\n * I merely changed the structure a bit, removed some unneeded parts and added some comments and type hints.\n *\n * Flattening of quadratic Bézier curves:\n * - Article: https://raphlinus.github.io/graphics/curves/2019/12/23/flatten-quadbez.html\n * - Code: https://github.com/raphlinus/raphlinus.github.io/blob/master/_posts/2019-12-23-flatten-quadbez.md?plain=1#L73-L212\n *\n * Flattening of cubic Bézier curves: https://levien.com/tmp/flatten.html\n *\n * Note that the code in this module has a different license than the rest of the package,\n * due to the inclusion of Apache-licensed third party code.\n *\n * @license\n * Copyright 2022 Johannes Baiter <johannes.baiter@gmail.com>\n * Copyright 2019, 2022 Raph Levien <raph.levien@gmail.com>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction rs(t, e, i, r = 1) {\n return new Ti(t, e, i).subdivide(r);\n}\nfunction ns(t, e, i, r, n = 1) {\n return new wt(\n new Float64Array([t.x, t.y, e.x, e.y, i.x, i.y, r.x, r.y])\n ).subdivide(n);\n}\nfunction ss(t) {\n return t.x * t.x + t.y * t.y;\n}\nfunction Fe(t) {\n return t / (1 - 0.67 + Math.pow(Math.pow(0.67, 4) + 0.25 * t * t, 0.25));\n}\nfunction Re(t) {\n return t * (1 - 0.39 + Math.sqrt(0.39 * 0.39 + 0.25 * t * t));\n}\nclass Ti {\n constructor(e, i, r) {\n D(this, \"start\");\n D(this, \"control\");\n D(this, \"end\");\n this.start = e, this.control = i, this.end = r;\n }\n eval(e) {\n const i = 1 - e;\n return {\n x: this.start.x * i * i + 2 * this.control.x * i * e + this.end.x * e * e,\n y: this.start.y * i * i + 2 * this.control.y * i * e + this.end.y * e * e\n };\n }\n mapToBasic() {\n const { x: e, y: i } = this.start, { x: r, y: n } = this.control, { x: s, y: a } = this.end, c = 2 * r - e - s, u = 2 * n - i - a, p = (r - e) * c + (n - i) * u, f = (s - r) * c + (a - n) * u, v = (s - e) * u - (a - i) * c, y = p / v, m = f / v, h = Math.abs(v) / (Math.hypot(c, u) * Math.abs(m - y));\n return { x0: e, x2: s, scale: h, cross: v };\n }\n subdivide(e) {\n const i = this.mapToBasic(), r = Fe(i.x0), n = Fe(i.x2), s = 0.5 * Math.abs(n - r) * Math.sqrt(i.scale / e), a = Math.ceil(s), c = Re(r), u = Re(n), p = [0];\n for (let f = 1; f < a; f++) {\n const y = (Re(r + (n - r) * f / a) - c) / (u - c);\n p.push(y);\n }\n return p.push(1), p.map((f) => this.eval(f));\n }\n}\nclass wt {\n /// Argument is array of coordinate values [x0, y0, x1, y1, x2, y2, x3, y3].\n constructor(e) {\n D(this, \"c\");\n this.c = e;\n }\n weightsum(e, i, r, n) {\n const s = e * this.c[0] + i * this.c[2] + r * this.c[4] + n * this.c[6], a = e * this.c[1] + i * this.c[3] + r * this.c[5] + n * this.c[7];\n return { x: s, y: a };\n }\n eval(e) {\n const i = 1 - e, r = i * i * i, n = 3 * i * i * e, s = 3 * i * e * e, a = e * e * e;\n return this.weightsum(r, n, s, a);\n }\n deriv(e) {\n const i = 1 - e, r = -3 * i * i, n = 3 * e * e, s = -6 * e * i - r, a = 6 * e * i - n;\n return this.weightsum(r, s, a, n);\n }\n // quadratic bezier with matching endpoints and minimum max vector error\n midpoint_quadbez() {\n const e = this.weightsum(-0.25, 0.75, 0.75, -0.25);\n return new Ti({ x: this.c[0], y: this.c[1] }, e, { x: this.c[6], y: this.c[7] });\n }\n subsegment(e, i) {\n const r = new Float64Array(8), n = this.eval(e), s = this.eval(i);\n r[0] = n.x, r[1] = n.y;\n const a = (i - e) / 3, c = this.deriv(e);\n r[2] = n.x + a * c.x, r[3] = n.y + a * c.y;\n const u = this.deriv(i);\n return r[4] = s.x - a * u.x, r[5] = s.y - a * u.y, r[6] = s.x, r[7] = s.y, new wt(r);\n }\n // Very fancy subdivision scheme\n subdivide(e) {\n const i = 0.1 * e, r = e - i, n = Math.sqrt(r), s = ss(this.weightsum(1, -3, 3, -1)), a = Math.ceil(Math.pow(s / (432 * i * i), 1 / 6)), c = [];\n let u = 0;\n for (let h = 0; h < a; h++) {\n const A = h / a, x = (h + 1) / a, S = this.subsegment(A, x).midpoint_quadbez(), C = S.mapToBasic(), E = Fe(C.x0), P = Fe(C.x2), j = Math.sqrt(C.scale);\n let k = Math.abs(P - E) * j;\n if (Math.sign(C.x0) != Math.sign(C.x2)) {\n const $ = n / j, B = n * Math.abs(P - E) / Fe($);\n k = Math.max(k, B);\n }\n c.push({\n quad: S,\n a0: E,\n a2: P,\n val: k\n }), u += k;\n }\n const p = 0.5 * u / n, f = Math.ceil(p), v = [{ x: this.c[0], y: this.c[1] }];\n let y = 0, m = 0;\n for (let h = 1; h < f; h++) {\n const A = u * h / f;\n for (; y + c[m].val < A; )\n y += c[m].val, m++;\n const x = c[m].a0, S = c[m].a2, C = Re(x), E = Re(S), P = x + (S - x) * (A - y) / c[m].val, k = (Re(P) - C) / (E - C);\n v.push(c[m].quad.eval(k));\n }\n return v.push({ x: this.c[6], y: this.c[7] }), v;\n }\n}\nconst as = /&?(xywh=)?(pixel:|percent:|pct:)?([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?)/, os = /&?(t=)(npt:)?([0-9]+(.[0-9]+)?)?(,([0-9]+(.[0-9]+)?))?/, Vt = /^rgba\\((\\d+),(\\d+),(\\d+),([0-9.]+)\\)$/;\nfunction Be(t, {\n domParser: e,\n svgPreprocessor: i,\n iiifRenderingHints: r\n} = {}) {\n if (Array.isArray(t))\n return q(\n t.reduce(\n (n, s) => {\n const {\n selector: a,\n selectors: c,\n iiifRenderingHints: u\n } = Be(s, { domParser: e, svgPreprocessor: i, iiifRenderingHints: r });\n return a && (n.selector || (n.selector = a), n.selectors.push(...c)), u && (n.iiifRenderingHints = n.iiifRenderingHints || { type: \"ImageApiSelector\" }, Object.assign(n.iiifRenderingHints, u)), n;\n },\n {\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n }\n )\n );\n if (!t)\n return q({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n if (typeof t == \"string\") {\n const [n, s] = t.split(\"#\");\n return s ? Be(\n { type: \"FragmentSelector\", value: s },\n { svgPreprocessor: i, iiifRenderingHints: r, domParser: e }\n ) : q({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n }\n if (t.type && t.type === \"PointSelector\" && (t.t || t.t === 0)) {\n const n = {\n type: \"TemporalSelector\",\n temporal: {\n startTime: t.t\n }\n };\n return q({\n selector: n,\n selectors: [n],\n iiifRenderingHints: r\n });\n }\n if (us(t)) {\n const n = [];\n if (t.region) {\n const s = Be(\n { type: \"FragmentSelector\", value: \"xywh=\" + t.region },\n { domParser: e, svgPreprocessor: i, iiifRenderingHints: r }\n );\n n.push(...s.selectors);\n }\n return q({\n selector: n[0],\n selectors: n,\n iiifRenderingHints: r ? { ...r, ...t } : t\n });\n }\n if (t.type === \"FragmentSelector\") {\n const n = as.exec(t.value);\n if (n) {\n const a = {\n type: \"BoxSelector\",\n spatial: {\n unit: n[2] === \"percent:\" || n[2] === \"pct:\" ? \"percent\" : \"pixel\",\n x: parseFloat(n[3]),\n y: parseFloat(n[4]),\n width: parseFloat(n[5]),\n height: parseFloat(n[6])\n }\n };\n return q({\n selector: a,\n selectors: [a],\n iiifRenderingHints: r\n });\n }\n const s = t.value.match(os);\n if (s) {\n const a = {\n type: \"TemporalSelector\",\n temporal: {\n startTime: s[4] ? parseFloat(s[4]) : 0,\n endTime: s[7] ? parseFloat(s[7]) : void 0\n }\n };\n return q({\n selector: a,\n selectors: [a],\n iiifRenderingHints: r\n });\n }\n return q({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n }\n if (t.type === \"SvgSelector\" && \"value\" in t) {\n e || (typeof window < \"u\" ? e = new window.DOMParser() : console.warn(\n \"No DOMParser available, cannot parse SVG selector, `points`, `spatial` and `style` will be unavailable and the SVG will not be normalized.\"\n ));\n let n = [], s, a, c = (i == null ? void 0 : i(t.value)) ?? t.value, u;\n if (e) {\n const f = e.parseFromString(t.value, \"image/svg+xml\").querySelector(\"svg\");\n if (!f)\n return console.warn(`Illegal SVG selector: ${t.value}`), q({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n const v = Mi(f);\n v && (n = v.points, u = v.shapeType, s = [\n Math.min(...n.map((y) => y[0])),\n // llx\n Math.min(...n.map((y) => y[1])),\n // lly\n Math.max(...n.map((y) => y[0])),\n // urx\n Math.max(...n.map((y) => y[1]))\n // ury\n ], { style: a, svg: c } = fs(v.element) ?? { svg: c });\n }\n const p = {\n type: \"SvgSelector\",\n svg: c,\n svgShape: u,\n style: a,\n points: n.length ? n : void 0,\n spatial: s ? { unit: \"pixel\", x: s[0], y: s[1], width: s[2] - s[0], height: s[3] - s[1] } : void 0\n };\n return q({\n selector: p,\n selectors: [p],\n iiifRenderingHints: r\n });\n }\n return q({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n}\nfunction cs(t) {\n const e = t.map((r) => r[0]).reduce(\n (r, n) => (r[n] += 1, r),\n { C: 0, Q: 0, L: 0, M: 0 }\n ), i = new Set(t.map((r) => r[0]));\n if (e.C > 0 || e.Q > 0)\n return \"path\";\n if (e.L > 0 && (i.size === 1 || i.size === 2 && i.has(\"M\"))) {\n if (e.L === 4)\n return \"rect\";\n const r = t.slice(-1)[0];\n return t[0][0] === \"M\" && r[0] === \"L\" && r[1] == t[0][1] && r[2] === t[0][2] || r[1] === 0 && r[2] === 0 ? \"polygon\" : \"polyline\";\n }\n return \"path\";\n}\nfunction Mi(t) {\n var e;\n for (const i of Array.from(t.children))\n switch (i == null ? void 0 : i.tagName.toLowerCase()) {\n case \"g\":\n {\n const r = Mi(i);\n if (r)\n return r;\n }\n continue;\n case \"path\": {\n const r = i.getAttribute(\"d\");\n if (!r)\n continue;\n const n = is(r);\n return { element: i, points: ls(n), shapeType: cs(n) };\n }\n case \"circle\": {\n const r = parseFloat(i.getAttribute(\"cx\") ?? \"0\"), n = parseFloat(i.getAttribute(\"cy\") ?? \"0\"), s = parseFloat(i.getAttribute(\"r\") ?? \"0\");\n if (!s)\n continue;\n const a = [];\n for (let c = 0; c <= 360; c += 12) {\n const u = c * Math.PI / 180;\n a.push([r + s * Math.cos(u), n + s * Math.sin(u)]);\n }\n return { element: i, points: a, shapeType: \"circle\" };\n }\n case \"ellipse\": {\n const r = parseFloat(i.getAttribute(\"cx\") ?? \"0\"), n = parseFloat(i.getAttribute(\"cy\") ?? \"0\"), s = parseFloat(i.getAttribute(\"rx\") ?? \"0\"), a = parseFloat(i.getAttribute(\"ry\") ?? \"0\");\n if (!s && !a)\n continue;\n const c = [];\n for (let u = 0; u <= 360; u += 12) {\n const p = Math.tan(u / 360 * Math.PI), f = s * (1 - p ** 2) / (1 + p ** 2), v = a * 2 * p / (1 + p ** 2);\n c.push([r + f, n + v]);\n }\n return { element: i, points: c, shapeType: \"ellipse\" };\n }\n case \"line\": {\n const r = parseFloat(i.getAttribute(\"x0\") ?? \"0\"), n = parseFloat(i.getAttribute(\"y0\") ?? \"0\"), s = parseFloat(i.getAttribute(\"x1\") ?? \"0\"), a = parseFloat(i.getAttribute(\"y1\") ?? \"0\");\n if (r === s && n === a)\n continue;\n return {\n element: i,\n points: [\n [r, n],\n [s, a]\n ],\n shapeType: \"polyline\"\n };\n }\n case \"polygon\":\n case \"polyline\": {\n const r = ((e = i.getAttribute(\"points\")) == null ? void 0 : e.split(\" \").map((s) => s.split(\",\").map(parseFloat))) ?? [];\n if (!r.length)\n continue;\n let n = \"polyline\";\n return i.tagName.toLowerCase() === \"polygon\" && (r.push(r[0]), n = \"polygon\"), { element: i, points: r, shapeType: n };\n }\n case \"rect\": {\n const r = parseFloat(i.getAttribute(\"x\") ?? \"0\"), n = parseFloat(i.getAttribute(\"y\") ?? \"0\"), s = parseFloat(i.getAttribute(\"width\") ?? \"0\"), a = parseFloat(i.getAttribute(\"height\") ?? \"0\");\n if (!s || !a)\n continue;\n return {\n element: i,\n points: [\n [r, n],\n [r + s, n],\n [r + s, n + a],\n [r, n + a],\n [r, n]\n ],\n shapeType: \"rect\"\n };\n }\n default:\n continue;\n }\n return null;\n}\nfunction ls(t) {\n const e = [];\n for (let i = 0; i < t.length; i++) {\n const r = e[e.length - 1] ?? [0, 0], n = t[i];\n switch (n[0]) {\n case \"M\":\n case \"L\":\n e.push([n[1], n[2]]);\n continue;\n case \"C\":\n e.push(\n ...ns(\n { x: r[0], y: r[1] },\n { x: n[1], y: n[2] },\n { x: n[3], y: n[4] },\n { x: n[5], y: n[6] }\n ).map((s) => [s.x, s.y]).slice(1)\n // skip first point, already part of output\n );\n continue;\n case \"Q\":\n e.push(\n ...rs(\n { x: r[0], y: r[1] },\n { x: n[1], y: n[2] },\n { x: n[3], y: n[4] }\n ).map((s) => [s.x, s.y]).slice(1)\n // skip first point, already part of output\n );\n continue;\n }\n }\n return e;\n}\nfunction fs(t) {\n const e = {};\n if (t.hasAttribute(\"fill\") ? (e.fill = t.getAttribute(\"fill\"), t.removeAttribute(\"fill\")) : t.style.fill && (e.fill = t.style.fill), e.fill) {\n const r = Vt.exec(e.fill);\n r && (e.fillOpacity = parseFloat(r[4]), e.fill = `rgb(${r[1]}, ${r[2]}, ${r[3]})`);\n }\n if (t.hasAttribute(\"fill-opacity\") ? (e.fillOpacity = parseFloat(t.getAttribute(\"fill-opacity\")), t.removeAttribute(\"fill-opacity\")) : t.style.fillOpacity && (e.fillOpacity = parseFloat(t.style.fillOpacity)), t.hasAttribute(\"stroke\") ? (e.stroke = t.getAttribute(\"stroke\"), t.removeAttribute(\"stroke\")) : t.style.stroke && (e.stroke = t.style.stroke), e.stroke) {\n const r = Vt.exec(e.stroke);\n r && (e.strokeOpacity = parseFloat(r[4]), e.stroke = `rgb(${r[1]}, ${r[2]}, ${r[3]})`);\n }\n t.hasAttribute(\"stroke-opacity\") ? (e.strokeOpacity = parseFloat(t.getAttribute(\"stroke-opacity\")), t.removeAttribute(\"stroke-opacity\")) : t.style.strokeOpacity && (e.strokeOpacity = parseFloat(t.style.strokeOpacity)), t.hasAttribute(\"stroke-width\") ? (e.strokeWidth = t.getAttribute(\"stroke-width\"), t.removeAttribute(\"stroke-width\")) : t.style.strokeWidth && (e.strokeWidth = t.style.strokeWidth), t.hasAttribute(\"stroke-dasharray\") ? (e.strokeDasharray = t.getAttribute(\"stroke-dasharray\"), t.removeAttribute(\"stroke-dasharray\")) : t.style.strokeDasharray && (e.strokeDasharray = t.style.strokeDasharray);\n let i = t;\n for (; i.tagName.toLowerCase() !== \"svg\"; )\n if (i = i.parentElement, i === null)\n throw new Error(\"Could not find root SVG element\");\n return { svg: i.outerHTML, style: Object.keys(e).length > 0 ? e : void 0 };\n}\nfunction us(t) {\n return !!t && t.type === \"iiif:ImageApiSelector\" && t.type === \"iiif:ImageApiSelector\";\n}\nfunction q(t) {\n if (t.iiifRenderingHints) {\n const e = t.iiifRenderingHints;\n if (e.rotation) {\n const i = ps(e.rotation);\n if (i)\n if (t.selectors.length)\n for (const r of t.selectors)\n r.rotation = i;\n else\n t.selectors.push({\n type: \"RotationSelector\",\n rotation: i\n });\n }\n } else\n delete t.iiifRenderingHints;\n return t;\n}\nfunction ps(t) {\n let e = parseFloat(t);\n return e && t.startsWith(\"!\") && (e = 360 - e), e && (e = e % 360), e !== e ? 0 : e || 0;\n}\nfunction Ae(t, e = {}) {\n if (Array.isArray(t))\n return Ae(t[0]);\n if (typeof t == \"string\") {\n const [i, r] = t.split(\"#\");\n return r ? Ae({\n type: \"SpecificResource\",\n source: { id: i, type: \"Unknown\" },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n }) : {\n type: \"SpecificResource\",\n source: { id: i, type: e.typeMap && e.typeMap[i] || \"Unknown\" },\n selector: null,\n selectors: []\n };\n }\n if (t.type === \"Choice\" || t.type === \"List\" || t.type === \"Composite\" || t.type === \"Independents\")\n return Ae(t.items[0]);\n if (t.type === \"SpecificResource\") {\n t.source.type === \"Canvas\" && t.source.partOf && typeof t.source.partOf == \"string\" && (t.source.partOf = [\n {\n id: t.source.partOf,\n type: \"Manifest\"\n }\n ]);\n const { selector: i, selectors: r } = t.selector ? Be(t.selector, e) : { selector: null, selectors: [] };\n return {\n type: \"SpecificResource\",\n source: t.source,\n selector: i,\n selectors: r\n };\n }\n if (t.id) {\n t.type === \"Canvas\" && t.partOf && typeof t.partOf == \"string\" && (t.partOf = [\n {\n id: t.partOf,\n type: \"Manifest\"\n }\n ]);\n const [i, r] = t.id.split(\"#\");\n return r ? Ae({\n type: \"SpecificResource\",\n source: {\n ...t,\n id: i\n },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n }) : {\n type: \"SpecificResource\",\n source: {\n ...t,\n id: i\n },\n selector: null,\n selectors: []\n };\n }\n return {\n type: \"SpecificResource\",\n source: t,\n selector: null,\n selectors: []\n };\n}\nfunction Bt(t, e = !1) {\n if (typeof t == \"string\") {\n if (t.startsWith(\"{\"))\n try {\n const i = JSON.parse(t);\n return Bt(i);\n } catch {\n return [!1, { reason: \"Invalid JSON\" }];\n }\n return [!0];\n }\n if (Array.isArray(t)) {\n for (const i of t) {\n const [r, n] = Bt(i);\n if (!r && n)\n return [r, n];\n }\n return [!0];\n }\n return t.type === \"Annotation\" ? [!0] : e && t.type === \"Canvas\" && !t.partOf ? [!1, { reason: \"Canvas without partOf cannot be loaded\" }] : [!0];\n}\nfunction Fo(t) {\n return ds(typeof t == \"string\" ? t : JSON.stringify(t));\n}\nfunction hs(t, e) {\n if (t = t.trim(), t[0] === \"{\")\n return e ? Promise.resolve(JSON.parse(t)) : JSON.parse(t);\n if (t.startsWith(\"http\")) {\n if (!e)\n throw new Error(\"Cannot fetch remote fetch with async=false in parseContentState\");\n return fetch(t).then((i) => i.json());\n }\n return hs(vs(t), e);\n}\nfunction ds(t) {\n const e = encodeURIComponent(t);\n return (typeof btoa > \"u\" ? Buffer.from(e, \"utf-8\").toString(\"base64\") : btoa(e)).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nfunction vs(t) {\n const i = ys(t).replace(/-/g, \"+\").replace(/_/g, \"/\"), r = typeof atob > \"u\" ? Buffer.from(i, \"base64\").toString(\"utf-8\") : atob(i);\n return decodeURIComponent(r).trim();\n}\nfunction ys(t) {\n const e = t.length % 4;\n if (e === 1)\n throw new Error(\"InvalidLengthError: Input base64url string is the wrong length to determine padding\");\n return t + (e ? \"====\".slice(0, 4 - e) : \"\");\n}\nfunction Lo(t) {\n if (!t)\n throw new Error(\"Content state is empty\");\n Array.isArray(t) || (t = [t]);\n let e = \"vault://virtual-annotation/\" + (/* @__PURE__ */ new Date()).getTime();\n const i = [];\n for (const r of t) {\n if (typeof r == \"string\")\n throw new Error(\"Content state is a [String] type and cannot be inferred\");\n if (r.type === \"Annotation\") {\n if (e = r.id, Array.isArray(r.motivation))\n for (const s of r.motivation)\n ;\n if (Array.isArray(r.target))\n for (const s of r.target) {\n const a = Ae(s);\n i.push(a);\n }\n else {\n const s = Ae(r.target);\n i.push(s);\n }\n continue;\n }\n const n = Ae(r);\n i.push(n);\n }\n return {\n id: e,\n type: \"Annotation\",\n motivation: [\"contentState\", ...t.motivation || []],\n target: i,\n extensions: {}\n };\n}\nfunction ms(t) {\n return t.type === \"SpecificResource\" ? [t.source, { selector: t.selector }] : [t, { selector: null }];\n}\nfunction Po(t = V) {\n function e(n) {\n const s = n ? typeof n == \"string\" ? t.get(n) : n : null;\n if (!s)\n return [];\n const a = t.get(s.items, { parent: s }), c = [];\n for (const u of a)\n c.push(...t.get(u.items, { parent: u }));\n return c;\n }\n function i(n, s = []) {\n const a = Array.isArray(n) ? n : e(n), c = [];\n let u = null;\n const p = [];\n for (const f of a) {\n if (f.type !== \"Annotation\")\n throw new Error(\"getPaintables() accept either a canvas or list of annotations\");\n const v = Array.from(Array.isArray(f.body) ? f.body : [f.body]);\n for (const y of v) {\n const [m, { selector: h }] = ms(y), A = t.get(m), x = (A.type || \"unknown\").toLowerCase();\n if (x === \"choice\") {\n const S = t.get(A.items, { parent: A.id }), C = s.length ? s.map((E) => S.find((P) => P.id === E)).filter(Boolean) : [S[0]];\n C.length === 0 && C.push(S[0]), u = {\n type: \"single-choice\",\n items: S.map((E) => ({\n id: E.id,\n label: E.label,\n selected: C.indexOf(E) !== -1\n })),\n label: m.label\n }, v.push(...C);\n continue;\n }\n c.indexOf(x) === -1 && c.push(x), p.push({\n type: x,\n annotationId: f.id,\n resource: A,\n target: f.target,\n selector: h\n });\n }\n }\n return {\n types: c,\n items: p,\n choice: u\n };\n }\n function r(n) {\n const { choice: s } = i(n);\n return s;\n }\n return {\n getAllPaintingAnnotations: e,\n getPaintables: i,\n extractChoices: r\n };\n}\nfunction jo(t = V) {\n return {\n findFirstCanvasFromRange: (e) => ki(t, e),\n findAllCanvasesInRange: (e) => Ct(t, e),\n findManifestSelectedRange: (e, i) => gs(t, e, i),\n findSelectedRange: (e, i) => Rt(t, e, i)\n };\n}\nfunction ki(t, e) {\n var i;\n for (const r of e.items) {\n if (r.type === \"SpecificResource\" && ((i = r.source) == null ? void 0 : i.type) === \"Canvas\")\n return r.source;\n if (r.type === \"Range\") {\n const n = ki(t, t.get(r));\n if (n)\n return n;\n }\n }\n return null;\n}\nfunction Ct(t, e) {\n var r;\n const i = [];\n for (const n of e.items)\n n.type === \"SpecificResource\" && ((r = n.source) == null ? void 0 : r.type) === \"Canvas\" && (n.source.id.indexOf(\"#\") !== -1 ? i.push({ id: n.source.id.split(\"#\")[0], type: \"Canvas\" }) : i.push(n.source)), n.type === \"Range\" && i.push(...Ct(t, t.get(n)));\n return i;\n}\nfunction gs(t, e, i) {\n for (const r of e.structures) {\n const n = Rt(t, t.get(r), i);\n if (n)\n return n;\n }\n return null;\n}\nfunction Rt(t, e, i) {\n for (const r of e.items) {\n if (r.type === \"SpecificResource\" && r.source === i)\n return e;\n if (r.type === \"Range\") {\n const n = Rt(t, t.get(r), i);\n if (n)\n return n;\n }\n }\n return null;\n}\nfunction Do(t = V) {\n return {\n getVisibleCanvasesFromCanvasId: (e, i, r = !1) => As(t, e, i, r),\n getManifestSequence: (e, i = {}) => Fi(t, e, i)\n };\n}\nfunction As(t = V, e, i, r = !1) {\n const n = e.behavior || [], s = i ? t.get(i) : null;\n if (!s)\n return [];\n const a = s.behavior || [], c = r ? !1 : n.includes(\"paged\"), u = c ? !1 : n.includes(\"continuous\"), p = c || u ? !1 : n.includes(\"individuals\"), f = a.includes(\"facing-pages\"), v = a.includes(\"non-paged\");\n if (f || v || p || r)\n return [{ id: s.id, type: \"Canvas\" }];\n const [y, m] = Fi(t, e);\n if (u)\n return y;\n const h = y.findIndex((A) => A.id === i);\n if (h === -1)\n return [];\n for (const A of m)\n if (A.includes(h))\n return A.map((x) => y[x]);\n return [{ id: s.id, type: \"Canvas\" }];\n}\nfunction Fi(t = V, e, { disablePaging: i, skipNonPaged: r } = {}) {\n const n = e.behavior || [], s = n.includes(\"paged\"), a = s ? !1 : n.includes(\"continuous\"), c = s || a ? !1 : n.includes(\"individuals\"), u = e.type === \"Manifest\" ? e.items : Ct(t, e);\n if (a)\n return [u, [u.map((h, A) => A)]];\n if (c || !s || i)\n return [u, u.map((h, A) => [A])];\n const p = [];\n let f = [];\n const v = () => {\n f.length && (p.push([...f]), f = []);\n };\n let y = 0, m = !1;\n for (let h = 0; h < u.length; h++) {\n const x = t.get(u[h]).behavior || [];\n if (x.includes(\"non-paged\")) {\n h === y && y++, r || (v(), p.push([h]), v());\n continue;\n }\n if (h === y || x.includes(\"facing-pages\")) {\n f.length && (m = !0), v(), p.push([h]), v();\n continue;\n }\n if (f.push(h), m) {\n v(), m = !1;\n continue;\n }\n f.length > 1 && v();\n }\n return f.length && v(), [u, p];\n}\nvar bs = Object.defineProperty, Ss = (t, e, i) => e in t ? bs(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i, re = (t, e, i) => (Ss(t, typeof e != \"symbol\" ? e + \"\" : e, i), i);\nfunction ne(t) {\n return typeof t == \"string\" ? !1 : !!t && t.type === \"SpecificResource\";\n}\nfunction Li(t, e) {\n const i = e || \"unknown\";\n if (!t)\n return;\n if (typeof t == \"string\")\n return { id: t, type: i };\n if (ne(t))\n return Li(t.source, e);\n let r = i && i !== \"unknown\" ? i : t.type || t[\"@type\"];\n const n = t.id || t[\"@id\"];\n if (r.indexOf(\":\") !== -1 && (r = r.split(\":\").pop()), n && r)\n return { id: n, type: r };\n}\nconst Le = {}, M = \"iiif-parser:hasPart\", z = \"iiif-parser:partOf\", Pe = \"iiif-parser:isExternal\", U = \"__$UNSET$__\", Pi = \"__$UNWRAP$__\", b = [];\nObject.freeze(b);\nObject.freeze(Le);\nfunction xs(t) {\n if (t === Le || Object.keys(t).length === 0)\n return !0;\n for (const e in t)\n return !1;\n return !0;\n}\nfunction It(t, e) {\n if (e && e[\"@explicit\"]) {\n const i = {}, r = Object.keys(e);\n for (const n of r)\n n === z || n === \"@explicit\" || (xs(e[n]) ? i[n] = t[n] : i[n] = e[n]);\n return i;\n }\n return t;\n}\nfunction ji(t, e, i) {\n const r = Li(e);\n if (!r)\n return [void 0, void 0];\n const n = t.requests[r.id], s = r.type || t.mapping[r.id];\n if (!s || n && n.resourceUri && !t.entities[s][n.resourceUri])\n return [void 0, void 0];\n const a = t.entities[s][n ? n.resourceUri : r.id];\n if (r.type && !a)\n return ji(t, { id: r.id }, i);\n if (a && a[M]) {\n const c = a[M].find((p) => i ? p[z] === i.id : p[z] === a.id);\n return [It(a, c), a];\n }\n return [a, a];\n}\nconst ws = {\n id: \"https://iiif-parser/annotation-page\",\n type: \"AnnotationPage\",\n behavior: b,\n label: null,\n thumbnail: b,\n summary: null,\n requiredStatement: null,\n metadata: b,\n rights: null,\n provider: b,\n items: b,\n seeAlso: b,\n homepage: b,\n rendering: b,\n service: b\n}, Cs = {\n id: \"https://iiif-parser/empty-canvas\",\n type: \"Canvas\",\n label: null,\n behavior: b,\n thumbnail: b,\n accompanyingCanvas: null,\n placeholderCanvas: null,\n summary: null,\n requiredStatement: null,\n metadata: b,\n rights: null,\n navDate: null,\n provider: b,\n items: b,\n annotations: b,\n seeAlso: b,\n homepage: b,\n partOf: b,\n rendering: b,\n service: b,\n duration: 0,\n height: 0,\n width: 0\n}, Rs = {\n id: \"https://iiif-parser/empty-collection\",\n type: \"Collection\",\n label: null,\n viewingDirection: \"left-to-right\",\n behavior: b,\n thumbnail: b,\n accompanyingCanvas: null,\n placeholderCanvas: null,\n summary: null,\n requiredStatement: null,\n metadata: b,\n rights: null,\n navDate: null,\n provider: b,\n items: b,\n annotations: b,\n seeAlso: b,\n homepage: b,\n partOf: b,\n rendering: b,\n service: b,\n services: b\n}, Is = {\n id: \"https://iiif-parser/empty-manifest\",\n type: \"Manifest\",\n annotations: b,\n behavior: b,\n homepage: b,\n items: b,\n label: null,\n metadata: b,\n navDate: null,\n provider: b,\n partOf: b,\n accompanyingCanvas: null,\n placeholderCanvas: null,\n rendering: b,\n requiredStatement: null,\n rights: null,\n seeAlso: b,\n service: b,\n services: b,\n start: null,\n structures: b,\n summary: null,\n thumbnail: b,\n viewingDirection: \"left-to-right\"\n}, Es = {\n id: \"https://iiif-parser/empty-canvas\",\n type: \"Range\",\n label: null,\n behavior: b,\n thumbnail: b,\n accompanyingCanvas: null,\n placeholderCanvas: null,\n summary: null,\n requiredStatement: null,\n metadata: b,\n rights: null,\n navDate: null,\n provider: b,\n items: b,\n annotations: b,\n seeAlso: b,\n homepage: b,\n partOf: b,\n rendering: b,\n service: b,\n start: null,\n supplementary: null,\n viewingDirection: \"left-to-right\"\n}, Os = {\n id: \"https://iiif-parser/empty-agent\",\n type: \"Agent\",\n label: {},\n logo: b,\n seeAlso: b,\n homepage: b\n}, _s = {\n id: \"https://iiif-parser/empty-service\",\n type: \"UnknownService\"\n};\nfunction we(t) {\n return Array.isArray(t) ? t : t ? [t] : [];\n}\nfunction We(...t) {\n return (e) => t.reduce((i, r) => r(i), e);\n}\nconst Gt = [\n \"Collection\",\n \"Manifest\",\n \"Canvas\",\n \"AnnotationPage\",\n \"AnnotationCollection\",\n \"Annotation\",\n \"ContentResource\",\n \"Range\",\n \"Service\",\n \"Selector\",\n \"Agent\"\n];\nfunction Ts(t, e) {\n if (typeof t > \"u\" || t === null)\n throw new Error(\"Null or undefined is not a valid entity.\");\n if (Array.isArray(t))\n throw new Error(\"Array is not a valid entity\");\n if (typeof t != \"object\") {\n if (e)\n return e;\n throw new Error(`${typeof t} is not a valid entity`);\n }\n if (typeof t.type == \"string\") {\n const i = Gt.indexOf(t.type);\n if (i !== -1)\n return Gt[i];\n }\n if (t.profile)\n return \"Service\";\n throw new Error(\"Resource type is not known\");\n}\nclass Et {\n constructor(e, i = {}) {\n re(this, \"traversals\"), re(this, \"options\"), re(this, \"_traverseManifest\", We(\n this.traverseManifestItems.bind(this),\n this.traverseLinking.bind(this),\n this.traverseDescriptive.bind(this),\n this.traverseLinkedCanvases.bind(this),\n this.traverseManifestStructures.bind(this),\n this.traverseInlineAnnotationPages.bind(this)\n )), re(this, \"_traverseCanvas\", We(\n this.traverseCanvasItems.bind(this),\n this.traverseLinking.bind(this),\n this.traverseDescriptive.bind(this),\n this.traverseLinkedCanvases.bind(this),\n this.traverseInlineAnnotationPages.bind(this)\n )), re(this, \"_traverseAnnotationPage\", We(\n this.traverseAnnotationPageItems.bind(this),\n this.traverseLinking.bind(this),\n this.traverseDescriptive.bind(this)\n )), re(this, \"_traverseRange\", We(\n this.traverseRangeRanges.bind(this),\n this.traverseLinking.bind(this),\n this.traverseDescriptive.bind(this),\n this.traverseLinkedCanvases.bind(this)\n )), this.traversals = {\n collection: [],\n manifest: [],\n canvas: [],\n annotationCollection: [],\n annotationPage: [],\n annotation: [],\n contentResource: [],\n choice: [],\n range: [],\n service: [],\n agent: [],\n specificResource: [],\n geoJson: [],\n ...e\n }, this.options = {\n allowUndefinedReturn: !1,\n ...i\n };\n }\n static all(e) {\n return new Et({\n collection: [e],\n manifest: [e],\n canvas: [e],\n annotationCollection: [e],\n annotationPage: [e],\n annotation: [e],\n contentResource: [e],\n choice: [e],\n range: [e],\n service: [e],\n geoJson: [e],\n specificResource: [e],\n agent: [e]\n });\n }\n traverseDescriptive(e) {\n return e.thumbnail && (e.thumbnail = we(e.thumbnail).map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e.provider && (e.provider = e.provider.map((i) => this.traverseAgent(i, e))), e;\n }\n traverseLinking(e) {\n return e.seeAlso && (e.seeAlso = e.seeAlso.map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e.service && (e.service = we(e.service).map((i) => this.traverseService(i))), e.services && (e.services = we(e.services).map((i) => this.traverseService(i, e))), e.logo && (e.logo = e.logo.map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e.homepage && (e.homepage = e.homepage.map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e.partOf && (e.partOf = e.partOf.map((i) => typeof i == \"string\" || !i.type ? this.traverseType(i, { parent: e }, this.traversals.contentResource) : i.type === \"Canvas\" ? this.traverseType(i, { parent: e }, this.traversals.canvas) : i.type === \"AnnotationCollection\" ? this.traverseType(\n i,\n { parent: e },\n this.traversals.annotationCollection\n ) : i.type === \"Collection\" ? this.traverseType(i, { parent: e }, this.traversals.collection) : this.traverseType(i, { parent: e }, this.traversals.contentResource))), e.start && (ne(e.start) ? e.start = this.traverseSpecificResource(e.start, \"Canvas\", e) : e.start = this.traverseType(e.start, { parent: e }, this.traversals.canvas)), e.rendering && (e.rendering = e.rendering.map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e.supplementary && (e.supplementary = e.supplementary.map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e;\n }\n traverseCollectionItems(e) {\n return e.items && e.items.map((i) => i.type === \"Collection\" ? this.traverseCollection(i) : this.traverseManifest(i)), e;\n }\n traverseCollection(e, i) {\n return this.traverseType(\n this.traverseDescriptive(\n this.traverseInlineAnnotationPages(\n this.traverseLinking(this.traverseLinkedCanvases(this.traverseCollectionItems(e)))\n )\n ),\n { parent: i },\n this.traversals.collection\n );\n }\n traverseGeoJson(e, i) {\n return this.traverseType(e, { parent: i }, this.traversals.geoJson);\n }\n traverseNavPlace(e) {\n return e.navPlace && (e.navPlace = this.traverseGeoJson(e.navPlace, e)), e;\n }\n traverseManifestItems(e) {\n return e.items && (e.items = e.items.map((i) => this.traverseCanvas(i))), e;\n }\n traverseManifestStructures(e) {\n return e.structures && (e.structures = e.structures.map((i) => this.traverseRange(i))), e;\n }\n traverseManifest(e, i) {\n return this.traverseType(this._traverseManifest(e), { parent: i }, this.traversals.manifest);\n }\n traverseCanvasItems(e) {\n return e.items = (e.items || []).map((i) => this.traverseAnnotationPage(i, e)), e;\n }\n traverseInlineAnnotationPages(e) {\n return typeof e == \"string\" || !e || e.annotations && (e.annotations = e.annotations.map((i) => this.traverseAnnotationPage(i, e))), e;\n }\n traverseCanvas(e, i) {\n return this.traverseType(this._traverseCanvas(e), { parent: i }, this.traversals.canvas);\n }\n traverseAnnotationPageItems(e) {\n return e.items && (e.items = e.items.map((i) => this.traverseAnnotation(i, e))), e;\n }\n traverseAnnotationPage(e, i) {\n return this.traverseType(\n this._traverseAnnotationPage(e),\n { parent: i },\n this.traversals.annotationPage\n );\n }\n traverseAnnotationBody(e) {\n return Array.isArray(e.body) ? e.body = e.body.map((i) => this.traverseContentResource(i, e)) : e.body && (e.body = this.traverseContentResource(e.body, e)), e;\n }\n traverseLinkedCanvases(e) {\n return e.placeholderCanvas && (e.placeholderCanvas = this.traverseCanvas(e.placeholderCanvas)), e.accompanyingCanvas && (e.accompanyingCanvas = this.traverseCanvas(e.accompanyingCanvas)), e;\n }\n traverseAnnotation(e, i) {\n return this.traverseType(\n this.traverseLinking(this.traverseAnnotationBody(this.traverseDescriptive(e))),\n { parent: i },\n this.traversals.annotation\n );\n }\n traverseContentResourceLinking(e) {\n return typeof e == \"string\" || !e || e && e.service && (e.service = we(\n e.service || []\n ).map((i) => this.traverseService(i, e))), e;\n }\n traverseContentResource(e, i) {\n return e.type === \"Choice\" && (e.items = e.items.map((r) => this.traverseContentResource(r, e))), ne(e) ? this.traverseSpecificResource(e, \"ContentResource\") : this.traverseType(\n this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)),\n { parent: i },\n this.traversals.contentResource\n );\n }\n traverseSpecificResource(e, i, r) {\n let n = e.source;\n return typeof e.source == \"string\" && (n = { id: e.source, type: i || \"unknown\" }), this.traverseType(\n {\n ...e,\n source: i === \"Canvas\" || n.type === \"Canvas\" ? this.traverseType(n, { parent: r }, this.traversals.canvas) : i === \"ContentResource\" ? this.traverseContentResource(n, { parent: r }) : this.traverseUnknown(n, { parent: r, typeHint: i })\n },\n { parent: r },\n this.traversals.specificResource\n );\n }\n traverseRangeRanges(e) {\n return e.items && (e.items = e.items.map((i) => typeof i == \"string\" ? this.traverseCanvas({ id: i, type: \"Canvas\" }, e) : ne(i) ? this.traverseSpecificResource(i, \"Canvas\", e) : i.type === \"Manifest\" ? this.traverseManifest(i, e) : this.traverseRange(i, e))), e;\n }\n traverseRange(e, i) {\n return this.traverseType(this._traverseRange(e), { parent: i }, this.traversals.range);\n }\n traverseAgent(e, i) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(e)),\n { parent: i },\n this.traversals.agent\n );\n }\n traverseType(e, i, r) {\n return r.reduce((n, s) => {\n const a = s(n, i);\n return typeof a > \"u\" && !this.options.allowUndefinedReturn ? n : a;\n }, e);\n }\n traverseService(e, i) {\n const r = Object.assign({}, e);\n return r && r.service && (r.service = we(r.service).map((n) => this.traverseService(n))), this.traverseType(r, { parent: i }, this.traversals.service);\n }\n traverseUnknown(e, { parent: i, typeHint: r } = {}) {\n const n = Ts(e, r);\n switch (n) {\n case \"Collection\":\n return this.traverseCollection(e, i);\n case \"Manifest\":\n return this.traverseManifest(e, i);\n case \"Canvas\":\n return this.traverseCanvas(e, i);\n case \"AnnotationPage\":\n return this.traverseAnnotationPage(e, i);\n case \"Annotation\":\n return this.traverseAnnotation(e, i);\n case \"ContentResource\":\n return this.traverseContentResource(e, i);\n case \"Range\":\n return this.traverseRange(e, i);\n case \"Service\":\n return this.traverseService(e, i);\n case \"Agent\":\n return this.traverseAgent(e, i);\n default: {\n if (r)\n return r;\n throw new Error(`Unknown or unsupported resource type of ${n}`);\n }\n }\n }\n}\nconst Qt = [\n \"sc:Collection\",\n \"sc:Manifest\",\n \"sc:Canvas\",\n \"sc:AnnotationList\",\n \"oa:Annotation\",\n \"sc:Range\",\n \"sc:Layer\",\n \"sc:Sequence\",\n \"oa:Choice\",\n \"Service\",\n \"ContentResource\"\n];\nfunction Ms(t) {\n if (typeof t > \"u\" || t === null)\n throw new Error(\"Null or undefined is not a valid entity.\");\n if (Array.isArray(t))\n throw new Error(\"Array is not a valid entity\");\n if (typeof t != \"object\")\n throw new Error(`${typeof t} is not a valid entity`);\n if (typeof t[\"@type\"] == \"string\") {\n const e = Qt.indexOf(t[\"@type\"]);\n if (e !== -1)\n return Qt[e];\n }\n if (t.profile)\n return \"Service\";\n if (t.format || t[\"@type\"])\n return \"ContentResource\";\n throw new Error(\"Resource type is not known\");\n}\nclass Ot {\n constructor(e, i = {}) {\n re(this, \"traversals\"), re(this, \"options\"), this.traversals = {\n collection: [],\n manifest: [],\n canvas: [],\n annotationList: [],\n sequence: [],\n annotation: [],\n contentResource: [],\n choice: [],\n range: [],\n service: [],\n layer: [],\n ...e\n }, this.options = {\n convertPropsToArray: !0,\n mergeMemberProperties: !0,\n allowUndefinedReturn: !1,\n ...i\n };\n }\n static all(e) {\n return new Ot({\n collection: [e],\n manifest: [e],\n canvas: [e],\n annotationList: [e],\n sequence: [e],\n annotation: [e],\n contentResource: [e],\n choice: [e],\n range: [e],\n service: [e],\n layer: [e]\n });\n }\n traverseCollection(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(e))),\n this.traversals.collection\n );\n }\n traverseCollectionItems(e) {\n if (this.options.mergeMemberProperties) {\n const i = [\n ...(e.manifests || []).map((r) => typeof r == \"string\" ? { \"@id\": r, \"@type\": \"sc:Manifest\" } : r),\n ...(e.collections || []).map((r) => typeof r == \"string\" ? { \"@id\": r, \"@type\": \"sc:Collection\" } : r),\n ...e.members || []\n ];\n delete e.collections, delete e.manifests, e.members = i;\n }\n return e.manifests && (e.manifests = e.manifests.map(\n (i) => this.traverseManifest(\n typeof i == \"string\" ? { \"@id\": i, \"@type\": \"sc:Manifest\" } : i\n )\n )), e.collections && (e.collections = e.collections.map(\n (i) => this.traverseCollection(\n typeof i == \"string\" ? { \"@id\": i, \"@type\": \"sc:Collection\" } : i\n )\n )), e.members && (e.members = e.members.map((i) => typeof i == \"string\" ? i : this.traverseUnknown(i))), e;\n }\n traverseManifest(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e))),\n this.traversals.manifest\n );\n }\n traverseManifestItems(e) {\n return e.sequences && (e.sequences = e.sequences.map((i) => this.traverseSequence(i))), e.structures && (e.structures = e.structures.map((i) => this.traverseRange(i))), e;\n }\n traverseSequence(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(e))),\n this.traversals.sequence\n );\n }\n traverseSequenceItems(e) {\n return e.canvases && (e.canvases = e.canvases.map((i) => this.traverseCanvas(i))), e;\n }\n traverseCanvas(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))),\n this.traversals.canvas\n );\n }\n traverseCanvasItems(e) {\n return e.images && (e.images = e.images.map((i) => this.traverseAnnotation(i))), e.otherContent && (e.otherContent = e.otherContent.map((i) => this.traverseAnnotationList(i))), e;\n }\n traverseRange(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(e))),\n this.traversals.range\n );\n }\n traverseRangeItems(e) {\n if (this.options.mergeMemberProperties) {\n const i = [\n ...(e.ranges || []).map((r) => typeof r == \"string\" ? { \"@id\": r, \"@type\": \"sc:Range\" } : r),\n ...(e.canvases || []).map((r) => typeof r == \"string\" ? { \"@id\": r, \"@type\": \"sc:Canvas\" } : r),\n ...e.members || []\n ];\n delete e.ranges, delete e.canvases, e.members = i.length ? i.map((r) => this.traverseUnknown(r)) : void 0;\n }\n return e;\n }\n traverseAnnotationList(e) {\n const i = typeof e == \"string\" ? { \"@id\": e, \"@type\": \"sc:AnnotationList\" } : e;\n return this.traverseType(\n this.traverseDescriptive(this.traverseAnnotationListItems(i)),\n this.traversals.annotationList\n );\n }\n traverseAnnotationListItems(e) {\n return e.resources && (e.resources = e.resources.map((i) => this.traverseAnnotation(i))), e;\n }\n traverseAnnotation(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(e))),\n this.traversals.annotation\n );\n }\n traverseAnnotationItems(e) {\n return e.resource && (Array.isArray(e.resource) ? e.resource = e.resource.map(\n (i) => this.traverseContentResource(i)\n ) : e.resource = this.traverseContentResource(e.resource)), e.on, e;\n }\n traverseLayer(e) {\n return this.traverseType(this.traverseLinking(this.traverseLayerItems(e)), this.traversals.layer);\n }\n traverseLayerItems(e) {\n return e.otherContent && (e.otherContent = e.otherContent.map((i) => this.traverseAnnotationList(i))), e;\n }\n traverseChoice(e) {\n return this.traverseType(this.traverseChoiceItems(e), this.traversals.choice);\n }\n traverseChoiceItems(e) {\n return e.default && e.default !== \"rdf:nil\" && (e.default = this.traverseContentResource(e.default)), e.item && e.item !== \"rdf:nil\" && (e.item = e.item.map((i) => this.traverseContentResource(i))), e;\n }\n traverseService(e) {\n return this.traverseType(this.traverseLinking(e), this.traversals.service);\n }\n traverseContentResource(e) {\n return e[\"@type\"] === \"oa:Choice\" ? this.traverseChoice(e) : this.traverseType(\n this.traverseDescriptive(this.traverseLinking(e)),\n this.traversals.contentResource\n );\n }\n traverseUnknown(e) {\n if (!e[\"@type\"] || typeof e == \"string\")\n return e;\n switch (Ms(e)) {\n case \"sc:Collection\":\n return this.traverseCollection(e);\n case \"sc:Manifest\":\n return this.traverseManifest(e);\n case \"sc:Canvas\":\n return this.traverseCanvas(e);\n case \"sc:Sequence\":\n return this.traverseSequence(e);\n case \"sc:Range\":\n return this.traverseRange(e);\n case \"oa:Annotation\":\n return this.traverseAnnotation(e);\n case \"sc:AnnotationList\":\n return this.traverseAnnotationList(e);\n case \"sc:Layer\":\n return this.traverseLayer(e);\n case \"Service\":\n return this.traverseService(e);\n case \"oa:Choice\":\n return this.traverseChoice(e);\n case \"ContentResource\":\n return this.traverseContentResource(e);\n }\n return e.profile ? this.traverseService(e) : e;\n }\n traverseImageResource(e) {\n const i = Array.isArray(e), r = Array.isArray(e) ? e : [e], n = [];\n for (const s of r)\n typeof s == \"string\" ? n.push(\n this.traverseContentResource({\n \"@id\": s,\n \"@type\": \"dctypes:Image\"\n })\n ) : n.push(this.traverseContentResource(s));\n return !i && !this.options.convertPropsToArray ? n[0] : n;\n }\n traverseDescriptive(e) {\n return e.thumbnail && (e.thumbnail = this.traverseImageResource(e.thumbnail)), e.logo && (e.logo = this.traverseImageResource(e.logo)), e;\n }\n traverseOneOrMoreServices(e) {\n const i = Array.isArray(e), r = Array.isArray(e) ? e : [e], n = [];\n for (const s of r)\n n.push(this.traverseService(s));\n return !i && !this.options.convertPropsToArray ? n[0] : n;\n }\n traverseLinking(e) {\n return e.related && (e.related = this.traverseOneOrManyType(e.related, this.traversals.contentResource)), e.rendering && (e.rendering = this.traverseOneOrManyType(e.rendering, this.traversals.contentResource)), e.service && (e.service = this.traverseOneOrMoreServices(e.service)), e.seeAlso && (e.seeAlso = this.traverseOneOrManyType(e.seeAlso, this.traversals.contentResource)), e.within && (typeof e.within == \"string\" || (e.within = this.traverseOneOrManyType(\n e.within,\n this.traversals.contentResource\n ))), e.startCanvas && (typeof e.startCanvas == \"string\" ? e.startCanvas = this.traverseType(\n { \"@id\": e.startCanvas, \"@type\": \"sc:Canvas\" },\n this.traversals.canvas\n ) : e.startCanvas && this.traverseType(e.startCanvas, this.traversals.canvas)), e.contentLayer && (typeof e.contentLayer == \"string\" ? e.contentLayer = this.traverseLayer({\n \"@id\": e.contentLayer,\n \"@type\": \"sc:Layer\"\n }) : e.contentLayer = this.traverseLayer(e.contentLayer)), e;\n }\n traverseOneOrManyType(e, i) {\n if (!Array.isArray(e))\n if (this.options.convertPropsToArray)\n e = [e];\n else\n return this.traverseType(e, i);\n return e.map((r) => this.traverseType(r, i));\n }\n traverseType(e, i) {\n return i.reduce((r, n) => {\n const s = n(r);\n return typeof s > \"u\" && !this.options.allowUndefinedReturn ? r : s;\n }, e);\n }\n}\nconst ks = \"http://library.stanford.edu/iiif/image-api/compliance.html#level0\", Di = \"http://library.stanford.edu/iiif/image-api/compliance.html#level1\", Ni = \"http://library.stanford.edu/iiif/image-api/compliance.html#level2\", Fs = \"http://library.stanford.edu/iiif/image-api/conformance.html#level0\", $i = \"http://library.stanford.edu/iiif/image-api/conformance.html#level1\", qi = \"http://library.stanford.edu/iiif/image-api/conformance.html#level2\", Ls = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0\", Ui = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1\", Wi = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\", Ps = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0\", zi = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1\", Vi = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2\", js = \"http://iiif.io/api/image/1/level0.json\", Ds = \"http://iiif.io/api/image/1/profiles/level0.json\", Bi = \"http://iiif.io/api/image/1/level1.json\", Gi = \"http://iiif.io/api/image/1/profiles/level1.json\", Qi = \"http://iiif.io/api/image/1/level2.json\", Hi = \"http://iiif.io/api/image/1/profiles/level2.json\", Ns = \"http://iiif.io/api/image/2/level0.json\", $s = \"http://iiif.io/api/image/2/profiles/level0.json\", Yi = \"http://iiif.io/api/image/2/level1.json\", Ji = \"http://iiif.io/api/image/2/profiles/level1.json\", Xi = \"http://iiif.io/api/image/2/level2.json\", Ki = \"http://iiif.io/api/image/2/profiles/level2.json\", qs = \"level0\", Zi = \"level1\", er = \"level2\", Us = \"http://iiif.io/api/image/2/level0\", tr = \"http://iiif.io/api/image/2/level1\", ir = \"http://iiif.io/api/image/2/level2\", Ws = [\n tr,\n ir,\n Di,\n Ni,\n $i,\n qi,\n Ui,\n Wi,\n zi,\n Vi,\n Bi,\n Gi,\n Qi,\n Hi,\n Yi,\n Ji,\n Xi,\n Ki,\n Zi,\n er\n], zs = [\n Us,\n tr,\n ir,\n ks,\n Di,\n Ni,\n Fs,\n $i,\n qi,\n Ls,\n Ui,\n Wi,\n Ps,\n zi,\n Vi,\n js,\n Ds,\n Bi,\n Gi,\n Qi,\n Hi,\n Ns,\n $s,\n Yi,\n Ji,\n Xi,\n Ki,\n qs,\n Zi,\n er\n];\nfunction J(t) {\n for (const e in t)\n (typeof t[e] > \"u\" || t[e] === null) && delete t[e];\n return t;\n}\nconst lt = {\n attributionLabel: \"Attribution\",\n lang: \"none\",\n providerId: \"http://example.org/provider\",\n providerName: \"Unknown\"\n};\nfunction be(t, e = \"none\") {\n if (!t)\n return {};\n const i = Array.isArray(t) ? t : [t], r = {};\n for (const n of i) {\n if (typeof n == \"string\") {\n r[e] = r[e] ? r[e] : [], r[e].push(n || \"\");\n continue;\n }\n if (!n[\"@language\"]) {\n r[e] = r[e] ? r[e] : [], r[e].push(n[\"@value\"] || \"\");\n continue;\n }\n const s = n[\"@language\"];\n r[s] = r[s] ? r[s] : [], r[s].push(n[\"@value\"] || \"\");\n }\n return r;\n}\nfunction rr(t) {\n if (Array.isArray(t))\n return rr(t.find((e) => typeof e == \"string\"));\n if (zs.indexOf(t) !== -1)\n return \"level2\";\n if (Ws.indexOf(t) !== -1)\n return \"level1\";\n if (typeof t == \"string\")\n return t;\n}\nfunction Vs(t) {\n const e = Array.isArray(t) ? t : [t];\n for (const i of e)\n switch (i) {\n case \"http://iiif.io/api/image/2/context.json\":\n case \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\":\n return \"ImageService2\";\n case \"http://iiif.io/api/image/1/context.json\":\n case \"http://library.stanford.edu/iiif/image-api/1.1/context.json\":\n return \"ImageService1\";\n case \"http://iiif.io/api/annex/openannotation/context.json\":\n return \"ImageApiSelector\";\n }\n}\nfunction Bs(t) {\n switch (t) {\n case \"http://iiif.io/api/image/2/level0.json\":\n case \"http://iiif.io/api/image/2/level1.json\":\n case \"http://iiif.io/api/image/2/level2.json\":\n return \"ImageService2\";\n case \"http://iiif.io/api/auth/1/kiosk\":\n case \"http://iiif.io/api/auth/1/login\":\n case \"http://iiif.io/api/auth/1/clickthrough\":\n case \"http://iiif.io/api/auth/1/external\":\n case \"http://iiif.io/api/auth/0/kiosk\":\n case \"http://iiif.io/api/auth/0/login\":\n case \"http://iiif.io/api/auth/0/clickthrough\":\n case \"http://iiif.io/api/auth/0/external\":\n return \"AuthCookieService1\";\n case \"http://iiif.io/api/auth/1/token\":\n case \"http://iiif.io/api/auth/0/token\":\n return \"AuthTokenService1\";\n case \"http://iiif.io/api/auth/1/logout\":\n case \"http://iiif.io/api/auth/0/logout\":\n return \"AuthLogoutService1\";\n case \"http://iiif.io/api/search/1/search\":\n case \"http://iiif.io/api/search/0/search\":\n return \"SearchService1\";\n case \"http://iiif.io/api/search/1/autocomplete\":\n case \"http://iiif.io/api/search/0/autocomplete\":\n return \"AutoCompleteService1\";\n }\n}\nfunction Ht(t) {\n for (const e of [\"sc\", \"oa\", \"dcterms\", \"dctypes\", \"iiif\"])\n if (t.startsWith(`${e}:`))\n return t.slice(e.length + 1);\n return t;\n}\nconst Gs = [\"Collection\", \"Manifest\", \"Annotation\", \"AnnotationPage\", \"Range\", \"Service\"];\nfunction _t(t) {\n const e = t[\"@id\"] || t.id;\n let i = t[\"@type\"] || t.type;\n const r = t.profile || void 0, n = t[\"@context\"] || void 0;\n if (r) {\n const s = Bs(r);\n if (s)\n return s;\n }\n if (n) {\n const s = Vs(n);\n if (s)\n return s;\n }\n if (i) {\n if (Array.isArray(i)) {\n if (i.indexOf(\"oa:CssStylesheet\") !== -1)\n return \"CssStylesheet\";\n if (i.indexOf(\"cnt:ContentAsText\") !== -1)\n return \"TextualBody\";\n i = i[0];\n }\n for (const s of [\"sc\", \"oa\", \"dcterms\", \"dctypes\", \"iiif\"])\n if (i.startsWith(`${s}:`)) {\n i = i.slice(s.length + 1);\n break;\n }\n switch (i) {\n case \"Layer\":\n return \"AnnotationCollection\";\n case \"AnnotationList\":\n return \"AnnotationPage\";\n case \"cnt:ContentAsText\":\n return \"TextualBody\";\n }\n }\n if (i && Gs.indexOf(i) !== -1)\n return i;\n if (t.format) {\n if (t.format.startsWith(\"image/\"))\n return \"Image\";\n if (t.format.startsWith(\"text/\") || t.format === \"application/pdf\")\n return \"Text\";\n if (t.format.startsWith(\"application/\"))\n return \"Dataset\";\n }\n return e && (e.endsWith(\".jpg\") || e.endsWith(\".png\") || e.endsWith(\".jpeg\")) ? \"Image\" : i || \"unknown\";\n}\nconst Qs = /http(s)?:\\/\\/(creativecommons.org|rightsstatements.org)[^\"'\\\\<\\n]+/gm;\nfunction Hs(t) {\n const e = t.match(Qs);\n return e ? e[0] : t;\n}\nfunction Ys(t, e = \"Rights/License\", i = \"none\") {\n let r = null;\n const n = [], s = Array.isArray(t) ? t : [t];\n for (const a of s) {\n const c = a ? Hs(a) : void 0;\n if (c && (c.indexOf(\"creativecommons.org\") !== -1 || c.indexOf(\"rightsstatements.org\") !== -1)) {\n c.startsWith(\"https://\") ? r = `http://${c.slice(8)}` : r = c;\n continue;\n }\n c && n.push({\n label: { [i]: [e] },\n value: { [i]: [c] }\n });\n }\n return [r, n];\n}\nconst Js = [\n \"http://iiif.io/api/presentation/2/context.json\",\n \"http://iiif.io/api/image/2/context.json\",\n \"http://iiif.io/api/image/1/context.json\",\n \"http://library.stanford.edu/iiif/image-api/1.1/context.json\",\n \"http://iiif.io/api/search/1/context.json\",\n \"http://iiif.io/api/search/0/context.json\",\n \"http://iiif.io/api/auth/1/context.json\",\n \"http://iiif.io/api/auth/0/context.json\",\n \"http://iiif.io/api/annex/openannotation/context.json\"\n];\nfunction Xs(t) {\n if (t) {\n const e = Array.isArray(t) ? t : [t], i = [];\n for (const r of e)\n r === \"http://iiif.io/api/presentation/2/context.json\" && i.push(\"http://iiif.io/api/presentation/3/context.json\"), Js.indexOf(r) === -1 && i.push(r);\n if (e.length)\n return i.length === 1 ? i[0] : i;\n }\n}\nfunction Ks(t) {\n return t ? t.map((e) => ({\n label: be(e.label),\n value: be(e.value)\n })) : [];\n}\nlet Yt = 0;\nfunction nr(t, e) {\n const i = encodeURI(t.id || t[\"@id\"] || \"\").trim();\n return i && e ? `${i}/${e}` : i || (Yt++, `http://example.org/${t[\"@type\"]}${e ? `/${e}` : \"\"}/${Yt}`);\n}\nfunction X(t) {\n const e = [...t.behavior || []];\n t.viewingHint && e.push(t.viewingHint);\n let i;\n return Array.isArray(t.motivation) ? i = t.motivation.map(Ht) : t.motivation && (i = Ht(t.motivation)), {\n \"@context\": t[\"@context\"] ? Xs(t[\"@context\"]) : void 0,\n id: (t[\"@id\"] || nr(t)).trim(),\n type: _t(t),\n behavior: e.length ? e : void 0,\n height: t.height ? t.height : void 0,\n width: t.width ? t.width : void 0,\n motivation: i,\n viewingDirection: t.viewingDirection,\n profile: t.profile,\n format: t.format ? t.format : void 0,\n duration: void 0,\n timeMode: void 0\n };\n}\nfunction K(t) {\n const [e, i] = Ys(t.license), r = [...t.metadata ? Ks(t.metadata) : [], ...i];\n return {\n rights: e,\n metadata: r.length ? r : void 0,\n label: t.label ? be(t.label) : void 0,\n requiredStatement: t.attribution ? {\n label: be(lt.attributionLabel),\n value: be(t.attribution)\n } : void 0,\n navDate: t.navDate,\n summary: t.description ? be(t.description) : void 0,\n thumbnail: Zs(t.thumbnail)\n };\n}\nfunction Zs(t) {\n return t && (Array.isArray(t) ? t : [t]).map((i) => typeof i == \"string\" ? { id: i, type: \"Image\" } : (i.type === \"unknown\" && (i.type = \"Image\"), i));\n}\nfunction ea(t) {\n if (!t.within)\n return;\n const e = Array.isArray(t.within) ? t.within : [t.within], i = [];\n for (const r of e)\n if (typeof r == \"string\") {\n if (r)\n switch (t[\"@type\"]) {\n case \"sc:Manifest\":\n i.push({ id: r, type: \"Collection\" });\n break;\n }\n } else\n r[\"@id\"] && i.push({\n id: r[\"@id\"],\n type: _t(r)\n });\n return i.length ? i : void 0;\n}\nfunction ae(t) {\n const e = t.related ? Array.isArray(t.related) ? t.related : [t.related] : [], i = t.contentLayer;\n return {\n provider: t.logo || e.length ? [\n {\n id: lt.providerId,\n type: \"Agent\",\n homepage: e.length ? [e[0]] : void 0,\n logo: t.logo ? Array.isArray(t.logo) ? t.logo : [t.logo] : void 0,\n label: be(lt.providerName)\n }\n ] : void 0,\n partOf: ea(t),\n rendering: t.rendering,\n seeAlso: t.seeAlso,\n start: t.startCanvas,\n service: t.service ? we(t.service) : void 0,\n supplementary: i ? [i] : void 0\n };\n}\nfunction ta(t) {\n return {\n chars: t.chars,\n format: t.format ? t.format : void 0,\n language: t.language\n };\n}\nfunction ia(t) {\n return J({\n ...X(t),\n ...K(t),\n ...ae(t),\n items: t.members\n });\n}\nfunction ra(t) {\n const e = [], i = [];\n let r;\n for (const s of t.sequences || [])\n s.canvases.length && e.push(...s.canvases), s.behavior && i.push(...s.behavior), s.startCanvas && (r = s.startCanvas);\n const n = X(t);\n return i.length && (n.behavior ? n.behavior.push(...i) : n.behavior = i), J({\n ...n,\n ...K(t),\n ...ae(t),\n start: r,\n items: e,\n structures: t.structures\n });\n}\nfunction na(t) {\n return J({\n ...X(t),\n ...K(t),\n ...ae(t),\n annotations: t.otherContent && t.otherContent.length ? t.otherContent : void 0,\n items: t.images && t.images.length ? [\n {\n id: nr(t, \"annotation-page\"),\n type: \"AnnotationPage\",\n items: t.images\n }\n ] : void 0\n });\n}\nfunction sa(t) {\n return J({\n ...X(t),\n ...K(t),\n ...ae(t),\n items: t.resources && t.resources.length ? t.resources : void 0\n });\n}\nfunction aa(t) {\n return !t.canvases || t.canvases.length === 0 ? {\n canvases: [],\n behavior: []\n } : {\n canvases: t.canvases,\n behavior: t.viewingHint ? [t.viewingHint] : [],\n startCanvas: t.startCanvas\n };\n}\nfunction oa(t) {\n function e(i) {\n if (Array.isArray(i)) {\n if (i.length > 1)\n return { type: \"List\", items: i.map(e) };\n i = i[0];\n }\n if (typeof i == \"string\")\n return encodeURI(i).trim();\n if (\"@type\" in i) {\n let r;\n if (typeof i.full == \"string\")\n r = i.full;\n else if (i.full[\"@type\"] === \"dctypes:Image\")\n r = { id: i.full[\"@id\"], type: \"Image\" };\n else if (i.full[\"@type\"] === \"sc:Canvas\")\n r = { id: i.full[\"@id\"], type: \"Canvas\" };\n else\n throw new Error(`Unsupported source type on annotation: ${i.full[\"@type\"]}`);\n return {\n type: \"SpecificResource\",\n source: r,\n selector: ut(i.selector)\n };\n } else\n return encodeURI(i[\"@id\"]).trim();\n }\n return J({\n ...X(t),\n ...K(t),\n ...ae(t),\n target: e(t.on),\n body: Array.isArray(t.resource) ? t.resource.map(ft) : ft(t.resource)\n });\n}\nfunction ft(t) {\n const e = t;\n return J({\n ...X(e),\n ...K(e),\n ...ae(e),\n ...ta(e)\n });\n}\nfunction ca(t) {\n const e = [];\n return t.default && t.default !== \"rdf:nil\" && e.push(t.default), t.item && t.item !== \"rdf:nil\" && e.push(...t.item), {\n ...X(t),\n ...K(t),\n items: e\n };\n}\nfunction la(t) {\n return J({\n ...X(t),\n ...K(t),\n ...ae(t),\n items: t.members\n });\n}\nfunction fa(t) {\n const { \"@id\": e, \"@type\": i, \"@context\": r, profile: n, ...s } = t, a = {};\n return e && (a[\"@id\"] = e), a[\"@type\"] = _t(t), a[\"@type\"] === \"unknown\" && (r && r.length && (a[\"@context\"] = r), a[\"@type\"] = \"Service\"), n && (a.profile = rr(n)), J({\n ...a,\n ...s\n });\n}\nfunction ua(t) {\n return J({\n ...X(t),\n ...K(t),\n ...ae(t)\n });\n}\nconst pa = new Ot({\n collection: [ia],\n manifest: [ra],\n canvas: [na],\n annotationList: [sa],\n sequence: [aa],\n annotation: [oa],\n contentResource: [ft],\n choice: [ca],\n range: [la],\n service: [fa],\n layer: [ua]\n});\nfunction ha(t) {\n return t && t[\"@context\"] && (t[\"@context\"] === \"http://iiif.io/api/presentation/2/context.json\" || t[\"@context\"].indexOf(\"http://iiif.io/api/presentation/2/context.json\") !== -1 || t[\"@context\"] === \"http://www.shared-canvas.org/ns/context.json\") || t[\"@context\"] === \"http://iiif.io/api/image/2/context.json\" ? pa.traverseUnknown(t) : t;\n}\nfunction ut(t) {\n if ((Array.isArray(t[\"@type\"]) && t[\"@type\"].includes(\"oa:SvgSelector\") || t[\"@type\"] == \"oa:SvgSelector\") && (\"chars\" in t || \"value\" in t))\n return {\n type: \"SvgSelector\",\n value: \"chars\" in t ? t.chars : t.value\n };\n if (t[\"@type\"] === \"oa:FragmentSelector\")\n return {\n type: \"FragmentSelector\",\n value: t.value\n };\n if (t[\"@type\"] === \"oa:Choice\")\n return [\n ut(t.default),\n ...(Array.isArray(t.item) ? t.item : [t.item]).map(\n ut\n )\n ];\n if (t[\"@type\"] == \"iiif:ImageApiSelector\")\n return {\n type: \"ImageApiSelector\",\n region: \"region\" in t ? t.region : void 0,\n rotation: \"rotation\" in t ? t.rotation : void 0\n };\n throw new Error(`Unsupported selector type: ${t[\"@type\"]}`);\n}\nfunction pt(t, e = {}) {\n if (Array.isArray(t))\n return pt(t[0]);\n if (typeof t == \"string\") {\n const [i, r] = t.split(\"#\");\n return r ? {\n type: \"SpecificResource\",\n source: { id: i, type: e.typeHint || \"Unknown\" },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n } : {\n type: \"SpecificResource\",\n source: { id: i, type: e.typeMap && e.typeMap[i] || e.typeHint || \"Unknown\" }\n };\n }\n if (t.type === \"Choice\" || t.type === \"List\" || t.type === \"Composite\" || t.type === \"Independents\")\n return pt(t.items[0]);\n if (t.type === \"SpecificResource\")\n return t.source.type === \"Canvas\" && t.source.partOf && typeof t.source.partOf == \"string\" && (t.source.partOf = [\n {\n id: t.source.partOf,\n type: \"Manifest\"\n }\n ]), t.selector ? {\n type: \"SpecificResource\",\n source: t.source,\n selector: t.selector\n } : {\n type: \"SpecificResource\",\n source: t.source\n };\n if (t.id) {\n t.type === \"Canvas\" && t.partOf && typeof t.partOf == \"string\" && (t.partOf = [\n {\n id: t.partOf,\n type: \"Manifest\"\n }\n ]);\n const [i, r] = t.id.split(\"#\");\n return r ? {\n type: \"SpecificResource\",\n source: {\n ...t,\n id: i\n },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n } : {\n type: \"SpecificResource\",\n source: {\n ...t,\n id: i\n }\n };\n }\n return {\n type: \"SpecificResource\",\n source: t\n };\n}\nfunction da() {\n return {\n Collection: {},\n Manifest: {},\n Canvas: {},\n AnnotationPage: {},\n AnnotationCollection: {},\n Annotation: {},\n ContentResource: {},\n Range: {},\n Service: {},\n Selector: {},\n Agent: {}\n };\n}\nfunction sr(t, e) {\n if (typeof t == \"string\")\n return { id: t, type: e };\n if (!t.id)\n throw new Error(`Invalid resource does not have an ID (${JSON.stringify(t)}, ${e})`);\n return t;\n}\nfunction va(t, e) {\n return (i, r) => {\n const n = t[i] ? t[i] : {};\n return (s, a) => {\n const c = sr(s, r || i);\n return c && c.id && i ? (n[c.id] = n[c.id] ? dt(n[c.id], c, {\n parent: a.parent,\n isTopLevel: e.id === c.id\n }) : dt({ id: c.id, type: c.type }, c, {\n parent: a.parent,\n isTopLevel: e.id === c.id\n }), {\n id: c.id,\n type: i === \"ContentResource\" ? i : c.type\n }) : c;\n };\n };\n}\nfunction ht(t, e, i) {\n if (!e)\n return t;\n if (Array.isArray(t)) {\n if (!Array.isArray(e))\n throw new Error(\"Cannot merge array with non-array\");\n const r = [...t];\n for (const n of e)\n if (n[\"@id\"] && !n.id && (n.id = n[\"@id\"]), n[\"@type\"] && !n.type && (n.type = n[\"@type\"]), n != null)\n if (Array.isArray(n))\n r.push(n);\n else if (typeof n == \"object\" && n.id && n.type) {\n const s = r.findIndex((a) => a.id === n.id && a.type === n.type);\n s >= 0 && (r[s] = ht(r[s], n));\n } else\n t.indexOf(n) === -1 && r.push(n);\n return r;\n } else if (typeof t == \"object\") {\n if (Array.isArray(e) || typeof e != \"object\")\n throw new Error(\"Cannot merge object with non-object\");\n const r = { ...t }, n = [], s = [], a = Object.keys(t).filter((p) => p !== M && p !== \"id\" && p !== \"type\"), c = {}, u = {};\n for (const [p, f] of Object.entries(e)) {\n if (p === M || p === \"id\" || p === \"type\")\n continue;\n const v = r[p];\n v === f ? s.push(p) : v === b || !v ? (n.push(p), r[p] = f) : (v && f && (c[p] = v, u[p] = f), r[p] = ht(v, f), r[p] === c[p] && (s.push(p), delete c[p]));\n }\n if (i && (i.parent && i.parent.id || i.isTopLevel)) {\n const p = [], f = {};\n if (i.parent ? f[z] = i.parent.id : i.isTopLevel && (f[z] = t.id), r[M] && r[M].length) {\n const v = !(r[M] || []).find((m) => m[\"@explicit\"]), y = n.length > 0 || s.length !== a.length;\n if (v && y)\n for (const m of r[M]) {\n const h = { ...m }, A = Object.keys(c);\n if (h) {\n h[\"@explicit\"] = !0;\n for (const x of a)\n x !== M && (h[x] = Le);\n for (const x of A)\n h[x] = c[x];\n }\n p.push(h);\n }\n else\n p.push(...r[M]);\n if (y) {\n const m = Object.keys(u);\n f[\"@explicit\"] = !0;\n for (const h of n)\n f[h] = Le;\n for (const h of s)\n f[h] = Le;\n for (const h of m)\n f[h] = u[h];\n }\n }\n f.id = r.id, f.type = r.type, p.push(f), r[M] = p;\n }\n return r;\n } else if (t)\n return t;\n return e;\n}\nfunction dt(t, e, i) {\n if (typeof t == \"string\")\n return t;\n if (e.id !== t.id || e.type !== t.type) {\n if (e.type === \"ImageService3\")\n return e;\n if (t.type === \"ImageService3\")\n return t;\n throw new Error(\n `Can only merge entities with identical identifiers and type! ${e.type}(${e.id}) => ${t.type}(${t.id})`\n );\n }\n return ht({ ...t }, e, i);\n}\nfunction ya(t) {\n return (e, i) => (r) => {\n const { id: n, type: s } = sr(r, i || e);\n if (typeof n > \"u\")\n throw new Error(\"Found invalid entity without an ID.\");\n return e === \"ContentResource\" || e === \"Service\" ? t[n] = e : t[n] = s, r;\n };\n}\nfunction ma(t) {\n const e = Object.assign({}, t);\n if (e[\"@id\"] && (e.id = e[\"@id\"]), e[\"@type\"] && (e.type = e[\"@type\"]), e.service) {\n const i = [];\n e.service = Array.isArray(e.service) ? e.service : [e.service];\n for (const r of e.service)\n i.push({\n id: r[\"@id\"] || r.id,\n type: r[\"@type\"] || r.type\n });\n e.service = i;\n }\n return Object.assign({}, _s, e);\n}\nfunction ga(t) {\n return (e) => {\n t.Service = t.Service ? t.Service : {};\n const i = e.id || e[\"@id\"], r = ma(e);\n return r && r.id && (t.Service[r.id] ? t.Service[i] = dt(t.Service[i], r) : t.Service[i] = r), e;\n };\n}\nfunction Aa(t) {\n const e = JSON.stringify(t);\n let i = 5381, r = e.length;\n for (; r; )\n i = i * 33 ^ e.charCodeAt(--r);\n const s = (i >>> 0).toString(16);\n return s.length % 2 ? \"0\" + s : s;\n}\nfunction tt(t) {\n return (e) => typeof e == \"string\" ? { id: e, type: t } : e.id ? e.type ? e : { type: t, ...e } : { id: `vault://${Aa(e)}`, type: t, ...e };\n}\nfunction xe(t) {\n return (e) => ({\n ...t,\n ...e\n });\n}\nfunction Te(t) {\n return Array.isArray(t) ? t : [t];\n}\nfunction ba(t) {\n return t.body && (t.body = Te(t.body)), t.seeAlso && (t.seeAlso = Te(t.seeAlso)), t.audience && (t.audience = Te(t.audience)), t.accessibility && (t.accessibility = Te(t.accessibility)), t.motivation && (t.motivation = Te(t.motivation)), t;\n}\nfunction ar(t, { typeHint: e, partOfTypeHint: i } = {}) {\n if (typeof t == \"string\" && (t = { id: t, type: e || \"unknown\" }), ne(t))\n return typeof t.source == \"string\" && (t.source = { id: t.source, type: e || \"unknown\" }), t.source.type === \"Canvas\" && t.source.partOf && typeof t.source.partOf == \"string\" && (t.source.partOf = [\n {\n id: t.source.partOf,\n type: i || \"Manifest\"\n }\n ]), t;\n let r;\n if ((t.id || \"\").indexOf(\"#\") !== -1) {\n const [n, s] = (t.id || \"\").split(\"#\");\n t.id = n, s && (r = {\n type: \"FragmentSelector\",\n value: s\n });\n }\n return {\n type: \"SpecificResource\",\n source: t,\n selector: r\n };\n}\nfunction Sa(t) {\n const e = Object.assign({}, t);\n return t && t.items && (e.items = t.items.map((i) => typeof i == \"string\" || i.type === \"Canvas\" ? ar(i) : i)), e;\n}\nfunction xa(t) {\n const e = Object.assign({}, t);\n return e.start ? (e.start = ar(e.start, { typeHint: \"Canvas\" }), e) : t;\n}\nfunction wa(t) {\n const e = Object.assign({}, t);\n return e.target ? (e.target = pt(e.target, { typeHint: \"Canvas\" }), e) : t;\n}\nfunction Ca(t) {\n return t;\n}\nfunction it(t) {\n return typeof t.items > \"u\" && (t[Pe] = !0), t;\n}\nfunction Ra(t) {\n const e = ha(t), i = da(), r = {}, n = va(i, e), s = ya(r), c = new Et({\n collection: [\n it,\n xe(Rs),\n s(\"Collection\"),\n n(\"Collection\")\n ],\n manifest: [\n it,\n xe(Is),\n xa,\n s(\"Manifest\"),\n n(\"Manifest\")\n ],\n canvas: [\n xe(Cs),\n s(\"Canvas\"),\n n(\"Canvas\")\n ],\n annotationPage: [\n it,\n tt(\"AnnotationPage\"),\n xe(ws),\n s(\"AnnotationPage\"),\n n(\"AnnotationPage\")\n ],\n annotation: [\n tt(\"Annotation\"),\n ba,\n wa,\n s(\"Annotation\"),\n n(\"Annotation\")\n ],\n contentResource: [\n tt(\"ContentResource\"),\n s(\"ContentResource\"),\n n(\"ContentResource\")\n ],\n range: [\n xe(Es),\n Sa,\n s(\"Range\", \"Canvas\"),\n n(\"Range\", \"Canvas\")\n ],\n agent: [\n xe(Os),\n s(\"Agent\"),\n n(\"Agent\")\n ],\n specificResource: [\n Ca\n ],\n service: [\n ga(i)\n ]\n }).traverseUnknown(e);\n return { entities: i, resource: c, mapping: r };\n}\nfunction Ia(t) {\n const e = {};\n for (const [i, r] of t) {\n if (i === Pi && r !== U)\n return r;\n r !== U && typeof r < \"u\" && r !== null && (e[i] = r);\n }\n return e;\n}\nfunction Ea(t, e, i) {\n if (!e.type || !e.id)\n throw new Error(\"Unknown entity\");\n if (!i[e.type])\n throw new Error(`Serializer not found for ${e.type}`);\n function r(n, s, a = 0) {\n const c = i[n.type];\n if (!c)\n return U;\n if (a > 20)\n throw new Error(\"Circular reference: \" + n.id + \" \" + n.type);\n const [u, p] = ji(t, n.type ? n : n.id, s) || (n.id && n.type ? n : null);\n if (!u)\n return U;\n const f = c(u, t, {\n parent: s,\n isTopLevel: e.id === n.id,\n fullResource: p\n });\n let v = f.next();\n for (; !v.done; ) {\n const y = v.value;\n let m = U;\n if (y)\n if (Array.isArray(y)) {\n const h = [];\n for (const A of y)\n h.push(r(A, n, a + 1));\n m = h;\n } else\n m = r(y, n, a + 1);\n v = f.next(m);\n }\n return v.value === U ? U : Ia(v.value);\n }\n return r(e);\n}\nfunction je(t, { allowSourceString: e = !0, allowString: i = !1, allowedStringType: r } = {}) {\n const n = (s) => {\n if (e && s && s.source && typeof s.source != \"string\") {\n const a = Object.keys(s.source);\n if (s.source.id && s.source.type && a.length === 2)\n return { ...s, source: s.source.id };\n }\n return s;\n };\n if (t) {\n if (t.source && t.source.partOf)\n return n(t);\n const s = Object.keys(t);\n if (s.length === 2 && t.type && t.source || s.length === 3 && t.type && t.source && s.indexOf(\"selector\") !== -1 && !t.selector)\n return i && (!r || r === t.source.type) ? t.source.id : t.source.type === \"ContentResource\" ? { type: \"SpecificResource\", source: t.source.id } : t.source;\n if (t.selector && !Array.isArray(t.selector) && typeof t.selector != \"string\" && t.selector.type === \"FragmentSelector\") {\n const a = `${t.source.id}#${t.selector.value}`;\n return i ? a : { id: a, type: t.source.type };\n }\n }\n return n(t);\n}\nfunction Ce(t) {\n if (!t)\n return;\n const e = Object.keys(t);\n if (e.length !== 0) {\n if (e.length === 1) {\n const i = e[0];\n if (!i)\n return \"\";\n const r = (t[i] || []).join(\"\");\n return i === \"@none\" || i === \"none\" || i === \"en\" ? r : {\n \"@language\": i,\n \"@value\": r\n };\n }\n return e.map((i) => ({\n \"@language\": i,\n \"@value\": (t[i] || []).join(\"\")\n }));\n }\n}\nfunction or(t) {\n return Array.isArray(t) ? t.map((e) => or(e)) : typeof t == \"string\" ? t : t.type && t.type === \"Canvas\" ? t.id : t;\n}\nfunction se(t, e = !1) {\n if (t)\n return t.length > 1 && !e ? t : t[0] || void 0;\n}\nfunction Oa(t) {\n if (t) {\n if (typeof t == \"string\")\n return {\n \"@id\": t\n };\n if (\"@id\" in t) {\n const e = { ...t };\n return delete e[\"@type\"], e;\n }\n return {\n \"@context\": \"http://iiif.io/api/image/2/context.json\",\n \"@id\": t.id,\n profile: `http://iiif.io/api/image/2/profiles/${t.profile}.json`\n };\n }\n}\nfunction pe(t, e) {\n return [\n [\"@id\", t.id],\n [\"@type\", e],\n [\"format\", t.format],\n [\"height\", t.height],\n [\"width\", t.width],\n [\"viewingDirection\", t.viewingDirection !== \"left-to-right\" ? t.viewingDirection : void 0],\n [\"license\", t.license ? t.license : void 0]\n ];\n}\nfunction* he(t) {\n const e = t.provider ? yield t.provider[0] : void 0;\n return [\n [\"label\", Ce(t.label)],\n [\n \"metadata\",\n t.metadata && t.metadata.length ? t.metadata.map((i) => ({\n label: Ce(i.label) || \"\",\n value: Ce(i.value) || \"\"\n })) : void 0\n ],\n [\"description\", Ce(t.summary)],\n [\"thumbnail\", se(yield t.thumbnail)],\n [\"navDate\", t.navDate],\n [\"logo\", e ? se(e.logo) : void 0],\n [\"homepage\", e ? e.homepage : void 0],\n [\"attribution\", t.requiredStatement ? Ce(t.requiredStatement.value) : void 0]\n ];\n}\nfunction* Me(t) {\n const e = t.start && t.start.type && t.start.type === \"SpecificResource\" ? je(t.start) : t.start;\n return [\n [\"seeAlso\", se(yield t.seeAlso)],\n [\"service\", se((t.service || []).map(Oa))],\n [\"rendering\", se(yield t.rendering)],\n [\"startCanvas\", e ? e.id : void 0]\n ];\n}\nfunction _a(t) {\n return t.type === \"SpecificResource\";\n}\nfunction Ta(t) {\n return t && t.type === \"FragmentSelector\";\n}\nfunction Ma(t) {\n if (t && _a(t)) {\n let e = t.id;\n const i = t.selector ? Array.isArray(t.selector) ? t.selector[0] : t.selector : void 0;\n return Ta(i) && (e += \"#\" + i.value), e;\n }\n return t == null ? void 0 : t.id;\n}\nconst ka = {\n Manifest: function* (t, e, { isTopLevel: i }) {\n return [\n ...i ? [[\"@context\", \"http://iiif.io/api/presentation/2/context.json\"]] : [],\n ...pe(t, \"sc:Manifest\"),\n ...yield* he(t),\n ...yield* Me(t),\n [\n \"sequences\",\n [\n {\n \"@id\": `${t.id}/sequence0`,\n \"@type\": \"sc:Sequence\",\n canvases: yield t.items\n }\n ]\n ],\n [\"structures\", yield t.structures]\n ];\n },\n Canvas: function* (t) {\n const i = (yield t.items)[0];\n return [\n ...pe(t, \"sc:Canvas\"),\n ...yield* he(t),\n ...yield* Me(t),\n [\"images\", i ? [i.resources] : void 0],\n [\n \"annotations\",\n t.annotations && t.annotations.length ? se(yield t.annotations) : void 0\n ]\n ];\n },\n AnnotationPage: function* (t) {\n return [\n ...pe(t, \"sc:AnnotationList\"),\n ...yield* he(t),\n [\"resources\", t.items && t.items.length ? se(yield t.items) : void 0]\n ];\n },\n Annotation: function* (t) {\n return [\n [\"@id\", t.id],\n [\"@type\", \"oa:Annotation\"],\n [\"motivation\", \"sc:painting\"],\n [\"on\", or(t.target)],\n [\"resource\", se(yield t.body, !0)]\n ];\n },\n ContentResource: function* (t) {\n switch (t.type) {\n case \"Image\":\n return [\n ...pe(t, \"dctypes:Image\"),\n ...yield* he(t),\n ...yield* Me(t)\n ];\n case \"Text\":\n case \"Dataset\":\n default:\n return [...pe(t, void 0), ...yield* he(t)];\n }\n },\n AnnotationCollection: function* (t) {\n return [\n [\"@id\", t.id],\n [\"@type\", \"sc:Layer\"],\n [\"label\", Ce(t.label)]\n ];\n },\n Collection: function* (t) {\n return [\n ...pe(t, \"sc:Collection\"),\n ...yield* he(t),\n ...yield* Me(t),\n [\"members\", yield* t.items]\n ];\n },\n Range: function* (t) {\n const e = [], i = [];\n if (t.items)\n for (const r of t.items) {\n const n = r.type === \"SpecificResource\" ? r.source : r;\n if (n) {\n const s = yield n;\n e.push({\n \"@id\": Ma(r),\n \"@type\": n.type,\n label: s ? s.label : void 0,\n within: t.id\n }), n.type === \"Canvas\" && i.push(n.id);\n }\n }\n return [\n ...pe(t, \"sc:Range\"),\n ...yield* he(t),\n ...yield* Me(t),\n [\"canvases\", i.length === e.length ? i : void 0],\n [\"members\", i.length !== e.length ? e : void 0]\n ];\n }\n};\nfunction de(t) {\n var e;\n return [\n [\"id\", (e = t.id) != null && e.startsWith(\"vault://\") ? void 0 : t.id],\n [\"type\", t.type],\n [\"format\", t.format],\n [\"profile\", t.profile],\n [\"height\", t.height || void 0],\n [\"width\", t.width || void 0],\n [\"duration\", t.duration || void 0],\n [\"viewingDirection\", t.viewingDirection !== \"left-to-right\" ? t.viewingDirection : void 0],\n [\"behavior\", t.behavior && t.behavior.length ? t.behavior : void 0],\n [\"timeMode\", t.timeMode],\n [\"motivation\", Array.isArray(t.motivation) ? t.motivation[0] : t.motivation],\n [M, U]\n ];\n}\nfunction _(t) {\n if (t === U || !t || t.length === 0)\n return;\n const e = t.filter((i) => i !== U);\n if (e.length !== 0)\n return e;\n}\nfunction cr(t) {\n if (t && t.type && t.type === \"ImageService2\") {\n const { id: e, type: i, profile: r, ...n } = t, s = typeof r == \"string\" ? r : Array.isArray(r) ? r.find((a) => typeof a == \"string\") : \"\";\n return {\n \"@id\": e,\n \"@type\": i,\n profile: s ? s.startsWith(\"http\") ? s : `http://iiif.io/api/image/2/${s}.json` : \"http://iiif.io/api/image/2/level0.json\",\n ...n\n };\n }\n return t;\n}\nfunction Jt(t) {\n if (Array.isArray(t) || (t = t ? [t] : []), !(!t || t.length === 0))\n return t.map(cr);\n}\nfunction* te(t) {\n return [\n [\"label\", t.label],\n [\"metadata\", _(t.metadata)],\n [\"summary\", t.summary],\n [\"requiredStatement\", t.requiredStatement],\n [\"rights\", Array.isArray(t.rights) ? t.rights[0] || void 0 : t.rights || void 0],\n [\"navDate\", t.navDate],\n [\"language\", t.language],\n [\"thumbnail\", _(yield t.thumbnail)],\n [\"placeholderCanvas\", yield t.placeholderCanvas],\n [\"accompanyingCanvas\", yield t.accompanyingCanvas],\n [\"provider\", _(yield t.provider)]\n ];\n}\nfunction* ie(t) {\n return [\n [\"seeAlso\", _(yield t.seeAlso)],\n [\"service\", _(Jt(t.service))],\n [\"services\", _(Jt(t.services))],\n [\"rendering\", _(yield t.rendering)],\n [\"supplementary\", _(yield t.supplementary)],\n [\"homepage\", _(yield t.homepage)],\n [\"logo\", _(yield t.logo)],\n [\"partOf\", _(yield t.partOf)],\n [\n \"start\",\n t.start ? je(t.start) : t.start\n ]\n ];\n}\nconst Fa = {\n Manifest: function* (t, e, { isTopLevel: i }) {\n return i ? [\n [\n \"@context\",\n t[\"@context\"] ? t[\"@context\"] : \"http://iiif.io/api/presentation/3/context.json\"\n ],\n ...de(t),\n ...yield* te(t),\n ...yield* ie(t),\n [\"items\", yield t.items],\n [\"structures\", _(yield t.structures)],\n [\"annotations\", _(yield t.annotations)],\n [\"navPlace\", t.navPlace]\n ] : [\n ...de(t),\n ...yield* te(t)\n ];\n },\n Canvas: function* (t) {\n return [\n ...de(t),\n ...yield* te(t),\n ...yield* ie(t),\n [\"items\", yield t.items],\n [\"annotations\", _(yield t.annotations)],\n [\"navPlace\", t.navPlace]\n ];\n },\n Agent: function* (t) {\n return [\n [\"id\", t.id],\n [\"type\", \"Agent\"],\n [\"label\", t.label],\n ...yield* ie(t)\n ];\n },\n AnnotationPage: function* (t) {\n var e;\n const i = Object.entries(t).map(([n, s]) => [n, Array.isArray(s) ? _(s) : s]).filter(([n, s]) => n !== \"items\" && n !== \"id\" && n !== M && n !== z && n !== Pe), r = yield t.items;\n return [\n [\"id\", (e = t.id) != null && e.startsWith(\"vault://\") ? void 0 : t.id],\n ...i,\n ...yield* ie(t),\n [\"items\", r.length || t[Pe] === !1 ? r : U]\n ];\n },\n Service: function* (t) {\n return [[Pi, cr(t)]];\n },\n Annotation: function* (t) {\n const e = Object.entries(t).map(([r, n]) => r === \"motivation\" ? [r, Array.isArray(n) ? n[0] : n] : r === \"target\" ? [\n r,\n je(n, { allowString: !0, allowSourceString: !0, allowedStringType: \"Canvas\" })\n ] : [r, Array.isArray(n) ? _(n) : n]).filter(([r]) => r !== \"body\" && r !== M && r !== Pe);\n let i;\n if (Array.isArray(t.body)) {\n const r = [];\n for (const n of t.body)\n if (n && ne(n)) {\n const s = {\n ...n\n };\n s.source = yield n.source, r.push(je(s, { allowSourceString: !0 }));\n } else\n r.push(yield n);\n i = r;\n } else\n t.body && ne(t.body) ? (i = {\n ...t.body\n }, i.source = yield t.body.source) : i = yield t.body;\n return [\n ...e,\n ...yield* te(t),\n ...yield* ie(t),\n [\"body\", i.length === 1 ? i[0] : i]\n ];\n },\n ContentResource: function* (t) {\n return La(\n [\n ...de(t),\n ...yield* te(t),\n ...yield* ie(t),\n [\"annotations\", _(yield t.annotations)],\n [\"items\", _(yield t.items)]\n ],\n t\n );\n },\n AnnotationCollection: function* (t) {\n return [\n [\"id\", t.id],\n [\"type\", \"AnnotationCollection\"],\n [\"label\", t.label]\n ];\n },\n Collection: function* (t, e, { isTopLevel: i }) {\n return i ? [\n [\"@context\", \"http://iiif.io/api/presentation/3/context.json\"],\n ...de(t),\n ...yield* te(t),\n ...yield* ie(t),\n [\"items\", _(yield t.items)],\n [\"navPlace\", t.navPlace]\n ] : [...de(t), ...yield* te(t)];\n },\n Range: function* (t) {\n const e = [];\n for (const i of t.items)\n i.type === \"Range\" ? e.push(yield i) : i && i.type === \"SpecificResource\" ? e.push(je(i)) : e.push(i);\n return [\n ...de(t),\n ...yield* te(t),\n ...yield* ie(t),\n [\"items\", e],\n [\"annotations\", _(yield t.annotations)],\n [\"navPlace\", t.navPlace]\n ];\n }\n};\nfunction La(t, e) {\n const i = Object.keys(e), r = t.map(([n]) => n);\n for (const n of i)\n n === M || n === Pe || r.indexOf(n) === -1 && typeof e[n] < \"u\" && t.push([n, e[n]]);\n return t;\n}\nconst T = function(e) {\n return function() {\n const i = { type: e, getType: () => e, toString: () => e };\n return (r, n) => ({\n ...i,\n ...r !== void 0 && { payload: r },\n ...n !== void 0 && { meta: n }\n });\n };\n}, lr = \"@iiif/IMPORT_ENTITIES\", fr = \"@iiif/MODIFY_ENTITY_FIELD\", ur = \"@iiif/REORDER_ENTITY_FIELD\", pr = \"@iiif/ADD_REFERENCE\", vt = \"@iiif/UPDATE_REFERENCE\", hr = \"@iiif/REMOVE_REFERENCE\", dr = \"@iiif/ADD_METADATA\", vr = \"@iiif/REMOVE_METADATA\", yt = \"@iiif/UPDATE_METADATA\", yr = \"@iiif/REORDER_METADATA\", mr = T(lr)(), Pa = T(fr)(), ja = T(ur)(), Da = T(pr)(), Na = T(hr)(), $a = T(vt)(), qa = T(dr)(), Ua = T(yt)(), Wa = T(vr)(), za = T(yr)(), Va = {\n importEntities: mr,\n modifyEntityField: Pa,\n reorderEntityField: ja,\n addReference: Da,\n removeReference: Na,\n updateReference: $a,\n addMetadata: qa,\n removeMetadata: Wa,\n updateMetadata: Ua,\n reorderMetadata: za\n}, gr = \"@iiif/ADD_MAPPING\", Ar = \"@iiif/ADD_MAPPINGS\", Ba = T(gr)(), Ga = T(Ar)(), br = \"@iiif/SET_META_VALUE\", Sr = \"@iiif/SET_META_VALUE_DYNAMIC\", xr = \"@iiif/UNSET_META_VALUE\", Qa = T(br)(), Ha = T(Sr)(), Ya = T(xr)(), Xt = {\n setMetaValue: Qa,\n setMetaValueDynamic: Ha,\n unsetMetaValue: Ya\n}, mt = \"RESOURCE_ERROR\", wr = \"RESOURCE_LOADING\", gt = \"RESOURCE_READY\", Cr = \"@iiif/REQUEST_RESOURCE\", Rr = \"@iiif/REQUEST_ERROR\", Ir = \"@iiif/REQUEST_MISMATCH\", Er = \"@iiif/REQUEST_COMPLETE\", Ja = \"@iiif/REQUEST_OFFLINE_RESOURCE\", Xa = T(Cr)(), At = T(Rr)(), Ka = T(Ir)(), Za = T(Er)(), Tt = \"@iiif/BATCH\", eo = \"@iiif/BATCH_IMPORT\", bt = T(Tt)(), to = (t, e) => {\n const { entities: i, resource: r, mapping: n } = Ra(e);\n if (r.id === void 0)\n return [At({ id: t, message: \"ID is not defined in resource.\" })];\n const s = [mr({ entities: i }), Ga({ mapping: n })];\n return r.id !== t && (s.push(Ba({ id: t, type: r.type })), s.push(Ka({ requestId: t, actualId: r.id }))), s.push(Za({ id: t })), s;\n}, Kt = Number.isNaN || function(e) {\n return typeof e == \"number\" && e !== e;\n};\nfunction io(t, e) {\n return !!(t === e || Kt(t) && Kt(e));\n}\nfunction Zt(t, e) {\n if (!Array.isArray(t) || !Array.isArray(e))\n return t === e;\n if (t.length !== e.length)\n return !1;\n for (let i = 0; i < t.length; i++)\n if (!io(t[i], e[i]))\n return !1;\n return !0;\n}\nfunction rt(t, e, i) {\n const r = t.iiif.requests[e], n = t.iiif.mapping[e];\n if (!n || !t.iiif.entities[n][r.resourceUri])\n return;\n const s = t.iiif.entities[n][r.resourceUri];\n if (s && s[M]) {\n const a = s[M].find((c) => i ? c[z] === i.id : c[z] === s.id);\n return It(s, a);\n }\n return s;\n}\nfunction ro(t) {\n return t && typeof t.then == \"function\";\n}\nfunction ei(t, e, { waitTimeout: i = 30 } = {}) {\n return (r, n) => {\n const s = t.getStore(), a = s.getState(), c = a.iiif.requests[r];\n if (c) {\n if (c.loadingState === gt) {\n const p = rt(a, r);\n if (p)\n return p;\n }\n switch (c.loadingState) {\n case mt:\n break;\n case wr:\n return (async () => {\n let p, f = !1;\n try {\n const v = await Promise.race([\n new Promise((y, m) => {\n f || (p = s.subscribe(() => {\n const h = s.getState();\n if (h.iiif.requests[r].loadingState === mt) {\n m();\n return;\n }\n if (h.iiif.requests[r].loadingState === gt) {\n const A = rt(h, r);\n A ? y(A) : m();\n }\n }));\n }),\n new Promise(\n (y, m) => setTimeout(\n () => {\n f = !0, m();\n },\n i * 60 * 1e3\n )\n )\n ]);\n if (p && p(), v)\n return v;\n } catch {\n p && p();\n }\n })();\n }\n }\n t.dispatch(Xa({ id: r }));\n const u = (p) => {\n if (!p)\n return;\n !p.id && !p[\"@id\"] && (p[\"@type\"] && (p[\"@id\"] = r), p.id = r);\n const f = to(r, p);\n return t.dispatch(bt({ actions: f })), rt(s.getState(), r);\n };\n try {\n const p = e(r, n);\n return ro(p) ? (async () => {\n try {\n return u(await p);\n } catch (f) {\n throw t.dispatch(At({ id: r, message: f.toString() })), f;\n }\n })() : u(p);\n } catch (p) {\n throw t.dispatch(At({ id: r, message: p.toString() })), p;\n }\n };\n}\nfunction Or() {\n return {\n Collection: {},\n Manifest: {},\n Canvas: {},\n AnnotationPage: {},\n AnnotationCollection: {},\n Annotation: {},\n ContentResource: {},\n Range: {},\n Service: {},\n Selector: {},\n Agent: {}\n };\n}\nconst ti = (t) => {\n let e;\n const i = /* @__PURE__ */ new Set(), r = (u, p) => {\n const f = typeof u == \"function\" ? u(e) : u;\n if (!Object.is(f, e)) {\n const v = e;\n e = p ?? typeof f != \"object\" ? f : Object.assign({}, e, f), i.forEach((y) => y(e, v));\n }\n }, n = () => e, c = { setState: r, getState: n, subscribe: (u) => (i.add(u), () => i.delete(u)), destroy: () => {\n i.clear();\n } };\n return e = t(r, n, c), c;\n}, no = (t) => t ? ti(t) : ti, so = (t, e) => (i, r, n) => (n.dispatch = (s) => (i((a) => t(a, s), !1, s), s), n.dispatchFromDevtools = !0, { dispatch: (...s) => n.dispatch(...s), ...e }), ao = so, St = /* @__PURE__ */ new Map(), ze = (t) => {\n const e = St.get(t);\n return e ? Object.fromEntries(\n Object.entries(e.stores).map(([i, r]) => [i, r.getState()])\n ) : {};\n}, oo = (t, e, i) => {\n if (t === void 0)\n return {\n type: \"untracked\",\n connection: e.connect(i)\n };\n const r = St.get(i.name);\n if (r)\n return { type: \"tracked\", store: t, ...r };\n const n = {\n connection: e.connect(i),\n stores: {}\n };\n return St.set(i.name, n), { type: \"tracked\", store: t, ...n };\n}, co = (t, e = {}) => (i, r, n) => {\n const { enabled: s, anonymousActionType: a, store: c, ...u } = e;\n let p;\n try {\n p = (s ?? !1) && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch {\n }\n if (!p)\n return t(i, r, n);\n const { connection: f, ...v } = oo(c, p, u);\n let y = !0;\n n.setState = (A, x, S) => {\n const C = i(A, x);\n if (!y)\n return C;\n const E = S === void 0 ? { type: a || \"anonymous\" } : typeof S == \"string\" ? { type: S } : S;\n return c === void 0 ? (f == null || f.send(E, r()), C) : (f == null || f.send(\n {\n ...E,\n type: `${c}/${E.type}`\n },\n {\n ...ze(u.name),\n [c]: n.getState()\n }\n ), C);\n };\n const m = (...A) => {\n const x = y;\n y = !1, i(...A), y = x;\n }, h = t(n.setState, r, n);\n if (v.type === \"untracked\" ? f == null || f.init(h) : (v.stores[v.store] = n, f == null || f.init(\n Object.fromEntries(\n Object.entries(v.stores).map(([A, x]) => [\n A,\n A === v.store ? h : x.getState()\n ])\n )\n )), n.dispatchFromDevtools && typeof n.dispatch == \"function\") {\n let A = !1;\n const x = n.dispatch;\n n.dispatch = (...S) => {\n x(...S);\n };\n }\n return f.subscribe((A) => {\n var x;\n switch (A.type) {\n case \"ACTION\":\n if (typeof A.payload != \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return nt(\n A.payload,\n (S) => {\n if (S.type === \"__setState\") {\n if (c === void 0) {\n m(S.state);\n return;\n }\n Object.keys(S.state).length !== 1 && console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format. \n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n const C = S.state[c];\n if (C == null)\n return;\n JSON.stringify(n.getState()) !== JSON.stringify(C) && m(C);\n return;\n }\n n.dispatchFromDevtools && typeof n.dispatch == \"function\" && n.dispatch(S);\n }\n );\n case \"DISPATCH\":\n switch (A.payload.type) {\n case \"RESET\":\n return m(h), c === void 0 ? f == null ? void 0 : f.init(n.getState()) : f == null ? void 0 : f.init(ze(u.name));\n case \"COMMIT\":\n if (c === void 0) {\n f == null || f.init(n.getState());\n return;\n }\n return f == null ? void 0 : f.init(ze(u.name));\n case \"ROLLBACK\":\n return nt(A.state, (S) => {\n if (c === void 0) {\n m(S), f == null || f.init(n.getState());\n return;\n }\n m(S[c]), f == null || f.init(ze(u.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return nt(A.state, (S) => {\n if (c === void 0) {\n m(S);\n return;\n }\n JSON.stringify(n.getState()) !== JSON.stringify(S[c]) && m(S[c]);\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState: S } = A.payload, C = (x = S.computedStates.slice(-1)[0]) == null ? void 0 : x.state;\n if (!C)\n return;\n m(c === void 0 ? C : C[c]), f == null || f.send(\n null,\n // FIXME no-any\n S\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return y = !y;\n }\n return;\n }\n }), h;\n}, lo = co, nt = (t, e) => {\n let i;\n try {\n i = JSON.parse(t);\n } catch (r) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n r\n );\n }\n i !== void 0 && e(i);\n}, fo = (t) => (e, i, r) => {\n const n = r.subscribe;\n return r.subscribe = (a, c, u) => {\n let p = a;\n if (c) {\n const f = (u == null ? void 0 : u.equalityFn) || Object.is;\n let v = a(r.getState());\n p = (y) => {\n const m = a(y);\n if (!f(v, m)) {\n const h = v;\n c(v = m, h);\n }\n }, u != null && u.fireImmediately && c(v, v);\n }\n return n(p);\n }, t(e, i, r);\n}, uo = fo, po = (t = {}, e) => {\n switch (e.type) {\n case gr:\n return {\n ...t,\n [e.payload.id]: e.payload.type\n };\n case Ar:\n return {\n ...t,\n ...e.payload.mapping\n };\n default:\n return t;\n }\n};\nfunction st(t, e, i, r) {\n return !(!t[i] || !t[i][e] || !t[i][e][r] || !Array.isArray(t[i][e][r]));\n}\nfunction ho(t, e) {\n const i = {}, r = [];\n for (const [n, s] of Object.entries(t || {})) {\n r.push(n);\n const a = (e || {})[n];\n if (!a || a.length === 0) {\n i[n] = s;\n continue;\n }\n i[n] = a;\n }\n for (const [n, s] of Object.entries(e || {}))\n r.indexOf(n) === -1 && (i[n] = s);\n return i;\n}\nfunction w(t) {\n return t.payload;\n}\nfunction at(t, e) {\n return typeof t > \"u\" ? e : t;\n}\nconst vo = (t = Or(), e) => {\n var r;\n const i = (n, s) => ({\n ...t,\n [w(e).type]: {\n ...t[w(e).type],\n [w(e).id]: {\n ...n,\n ...s\n }\n }\n });\n switch (e.type) {\n case fr: {\n if (!t[w(e).type] || !t[w(e).type][w(e).id])\n return t;\n const n = t[w(e).type][w(e).id];\n return typeof n == \"string\" ? t : i(n, { [w(e).key]: w(e).value });\n }\n case ur: {\n if (!st(t, w(e).id, w(e).type, w(e).key))\n return t;\n const n = t[w(e).type][w(e).id];\n if (typeof n == \"string\")\n return t;\n const s = Array.from(n[w(e).key]), [a] = s.splice(w(e).startIndex, 1);\n return s.splice(w(e).endIndex, 0, a), i(n, { [w(e).key]: s });\n }\n case lr: {\n const n = Object.keys(w(e).entities), s = { ...t };\n for (const a of n) {\n const c = w(e).entities[a], u = { ...t[a] || {} };\n let p = !1;\n const f = Object.keys(c || {}) || [];\n if (c && f) {\n for (const v of f)\n p = !0, u[v] = t[a][v] ? ho(t[a][v], c[v]) : c[v];\n p && (s[a] = u);\n }\n }\n return s;\n }\n case pr: {\n if (!st(t, w(e).id, w(e).type, w(e).key))\n return t;\n const n = t[w(e).type][w(e).id], s = Array.from(n[w(e).key]);\n return s.splice(at(w(e).index, s.length + 1), 0, w(e).reference), i(n, { [w(e).key]: s });\n }\n case vt:\n case hr: {\n if (!st(t, w(e).id, w(e).type, w(e).key))\n return t;\n const n = t[w(e).type][w(e).id], s = Array.from(n[w(e).key]), a = at(\n w(e).index,\n s.findIndex((c) => c && c.id === w(e).reference.id)\n );\n return a === -1 || ((r = s[a]) == null ? void 0 : r.id) !== w(e).reference.id ? t : (e.type === vt ? s.splice(a, 1, w(e).reference) : s.splice(a, 1), i(n, { [w(e).key]: s }));\n }\n case dr: {\n const n = t[w(e).type][w(e).id];\n if (!n)\n return t;\n const s = Array.from(n.metadata || []), a = w(e);\n return s.splice(at(e.payload.beforeIndex, s.length + 1), 0, {\n label: a.label,\n value: a.label\n }), i(n, { metadata: s });\n }\n case yr: {\n const n = t[w(e).type][w(e).id];\n if (typeof n == \"string\" || !n)\n return t;\n const s = Array.from(n.metadata || []), [a] = s.splice(w(e).startIndex, 1);\n return s.splice(w(e).endIndex, 0, a), i(n, { metadata: s });\n }\n case yt:\n case vr: {\n const n = t[w(e).type][w(e).id], s = Array.from(n.metadata || []), a = w(e).atIndex;\n return typeof a > \"u\" || a === -1 || !s[a] ? t : (e.type === yt ? s.splice(a, 1, { label: w(e).label, value: w(e).value }) : s.splice(a, 1), i(n, { metadata: s }));\n }\n default:\n return t;\n }\n}, yo = (t = {}, e) => {\n switch (e.type) {\n case Cr:\n case Ja:\n return {\n ...t,\n [e.payload.id]: {\n requestUri: e.payload.id,\n loadingState: wr,\n uriMismatch: !1,\n resourceUri: e.payload.id\n }\n };\n case Ir:\n return {\n ...t,\n [e.payload.requestId]: {\n ...t[e.payload.requestId] || {},\n uriMismatch: !0,\n resourceUri: e.payload.actualId\n },\n [e.payload.actualId]: {\n requestUri: e.payload.requestId,\n loadingState: t[e.payload.requestId].loadingState,\n uriMismatch: !0,\n resourceUri: e.payload.actualId\n }\n };\n case Rr:\n return {\n ...t,\n [e.payload.id]: {\n ...t[e.payload.id] || {},\n loadingState: mt,\n error: e.payload.message\n }\n };\n case Er:\n return {\n ...t,\n [e.payload.id]: {\n ...t[e.payload.id] || {},\n loadingState: gt,\n error: void 0\n }\n };\n }\n return t;\n}, mo = (t = {}, e) => {\n const { id: i, updateValue: r, value: n, meta: s, key: a } = e && e.payload || {};\n switch (e.type) {\n case br:\n return {\n ...t,\n [i]: {\n ...t[i] || {},\n [s]: {\n ...t[i] ? t[i][s] || {} : {},\n [a]: n\n }\n }\n };\n case Sr:\n return {\n ...t,\n [i]: {\n ...t[i] || {},\n [s]: {\n ...t[i] ? t[i][s] || {} : {},\n [a]: t[i] && t[i][s] ? r(t[i][s][a]) : r(void 0)\n }\n }\n };\n case xr:\n return t[i] && t[i][s] && t[i][s][a] ? {\n ...t,\n [i]: {\n ...t[i] || {},\n [s]: {\n ...t[i] ? t[i][s] || {} : {},\n [a]: void 0\n }\n }\n } : t;\n default:\n return t;\n }\n};\nfunction _r(t = {}) {\n const e = Object.keys(t);\n return function(r = {}, n) {\n let s = !1;\n const a = {};\n for (let c = 0; c < e.length; c++) {\n const u = e[c];\n a[u] = t[u](r[u], n), s = s || a[u] !== r[u];\n }\n return s ? a : r;\n };\n}\nfunction go(t) {\n return (e, i) => i && i.type === Tt ? i.payload.actions.reduce(t, e) : i && i.type === eo ? {\n ...e,\n iiif: {\n ...e.iiif,\n ...i.payload.state\n }\n } : t(e, i);\n}\nconst Ao = _r({\n mapping: po,\n entities: vo,\n requests: yo,\n meta: mo\n});\nfunction bo() {\n return {\n iiif: {\n entities: Or(),\n meta: {},\n mapping: {},\n requests: {}\n }\n };\n}\nfunction So(t = {}) {\n const {\n enableDevtools: e = !1,\n iiifStoreName: i = \"iiif\",\n defaultState: r = bo(),\n customReducers: n = {}\n } = t, s = go(_r({ [i]: Ao, ...n }));\n return no(uo(lo(ao(s, r), { enabled: e })));\n}\nfunction xo(t) {\n return { all: t = t || /* @__PURE__ */ new Map(), on: function(e, i) {\n var r = t.get(e);\n r ? r.push(i) : t.set(e, [i]);\n }, off: function(e, i) {\n var r = t.get(e);\n r && (i ? r.splice(r.indexOf(i) >>> 0, 1) : t.set(e, []));\n }, emit: function(e, i) {\n var r = t.get(e);\n r && r.slice().map(function(n) {\n n(i);\n }), (r = t.get(\"*\")) && r.slice().map(function(n) {\n n(e, i);\n });\n } };\n}\nfunction L(t, e, i, r = !0) {\n e[Ie] = e[Ie] || [], e[Ie].push(t);\n const n = /* @__PURE__ */ new Map();\n Object.defineProperty(e, t, {\n enumerable: r,\n get() {\n if (typeof e[me][t] > \"u\")\n return;\n const s = e[me][t];\n if (!s)\n return s;\n const a = i.get(e[me][t], {\n parent: this.id ? { id: this.id, type: this.type } : void 0\n });\n return n.has(a) || (n.clear(), n.set(a, ge(a, i))), n.get(a);\n },\n set(s) {\n e[me][t] !== s && (this[ve] ? i.modifyEntityField({ id: this.id, type: this.type }, t, Tr(s)) : this[me][t] = s);\n }\n });\n}\nconst me = Symbol.for(\"_refs_\"), ve = Symbol.for(\"_reactive_\"), Ie = Symbol.for(\"_defined_\"), ii = Symbol.for(\"_parent_\");\nfunction wo(t, e = !1, i) {\n const r = {\n id: \"\",\n type: \"unknown\",\n [Ie]: [],\n [me]: {},\n [ii]: i || null,\n [ve]: null,\n is(n) {\n return typeof n == \"string\" ? this.id === n : n.id ? n.id === this.id : !1;\n },\n reactive() {\n if (!this[ve])\n return this[ve] = this.subscribe(() => this.refresh(), !0), () => {\n this.unreactive();\n };\n },\n refresh() {\n if (this.id) {\n const n = this.unwrap();\n for (const s of Object.keys(n || {}))\n this[Ie].includes(s) ? this[me][s] = n[s] : this[s] = n[s];\n }\n },\n unreactive() {\n this[ve] && (this[ve](), this[ve] = null);\n },\n unwrap() {\n if (!this.id)\n throw new Error(\"Invalid object\");\n const n = this[ii];\n return t.get(this.id, { parent: n ? { id: n, type: \"unknown\" } : void 0 });\n },\n toPresentation3() {\n return t.toPresentation3(this.unwrap());\n },\n toPresentation2() {\n return t.toPresentation2(this.unwrap());\n },\n valueOf() {\n return this.unwrap();\n },\n toJSON() {\n const n = this;\n return {\n ...n,\n items: n.items,\n annotations: n.annotations,\n structures: n.structures,\n seeAlso: n.seeAlso,\n service: n.service,\n services: n.services,\n rendering: n.rendering,\n partOf: n.partOf,\n start: n.start,\n supplementary: n.supplementary,\n homepage: n.homepage,\n thumbnail: n.thumbnail,\n placeholderCanvas: n.placeholderCanvas,\n accompanyingCanvas: n.accompanyingCanvas,\n provider: n.provider\n };\n },\n subscribe(n, s = !0) {\n return t.subscribe(\n () => this.id ? t.get(this.id) : null,\n n,\n s\n );\n }\n };\n return L(\"items\", r, t), L(\"annotations\", r, t), L(\"structures\", r, t), L(\"seeAlso\", r, t), L(\"rendering\", r, t), L(\"partOf\", r, t), L(\"start\", r, t, !1), L(\"supplementary\", r, t), L(\"homepage\", r, t), L(\"thumbnail\", r, t), L(\"placeholderCanvas\", r, t, !1), L(\"accompanyingCanvas\", r, t, !1), L(\"provider\", r, t), L(\"body\", r, t), L(\"logo\", r, t), r;\n}\nfunction Co(t) {\n return !!t[Ie];\n}\nfunction Tr(t) {\n return Array.isArray(t) ? t.map((e) => Tr(e)) : !t || !t.type ? t : { id: t.id, type: t.type };\n}\nfunction ge(t, e, i = !1, r) {\n if (Array.isArray(t))\n return t.map((c) => ge(c, e, i));\n if (!t || !t.type || !t.id)\n return t;\n const n = wo(e, i), s = Object.create(n), a = Object.assign(s, t);\n return i && a.reactive(), a;\n}\nfunction ri(t) {\n switch (t) {\n case \"Image\":\n case \"Video\":\n case \"Sound\":\n case \"Dataset\":\n case \"Text\":\n case \"Composite\":\n case \"List\":\n case \"Independents\":\n case \"Audience\":\n return \"ContentResource\";\n case \"ImageService1\":\n case \"ImageService2\":\n case \"ImageService3\":\n return \"Service\";\n }\n return t;\n}\nclass Ro {\n constructor(e, i) {\n D(this, \"options\");\n D(this, \"store\");\n D(this, \"emitter\");\n D(this, \"isBatching\", !1);\n D(this, \"batchQueue\", []);\n D(this, \"remoteFetcher\");\n D(this, \"staticFetcher\");\n D(this, \"defaultFetcher\", (e) => fetch(e).then((i) => i.json()));\n this.options = Object.assign(\n {\n reducers: {},\n customFetcher: this.defaultFetcher,\n enableDevtools: !0\n },\n e || {}\n ), this.store = i || So({\n customReducers: this.options.reducers,\n defaultState: this.options.defaultState,\n enableDevtools: this.options.enableDevtools\n }), this.emitter = xo(), this.remoteFetcher = ei(this, this.options.customFetcher), this.staticFetcher = ei(this, (r, n) => n);\n }\n batch(e) {\n this.isBatching = !0;\n try {\n e(this), this.isBatching = !1, this.dispatch(bt({ actions: this.batchQueue }));\n } catch (i) {\n throw this.batchQueue = [], this.isBatching = !1, i;\n }\n this.batchQueue = [];\n }\n async asyncBatch(e) {\n this.isBatching = !0;\n try {\n await e(this), this.isBatching = !1, this.dispatch(bt({ actions: this.batchQueue }));\n } catch (i) {\n throw this.batchQueue = [], this.isBatching = !1, i;\n }\n this.batchQueue = [];\n }\n modifyEntityField(e, i, r) {\n this.dispatch(\n Va.modifyEntityField({\n id: e.id,\n type: e.type,\n key: i,\n value: r\n })\n );\n }\n dispatch(e) {\n if (this.isBatching)\n this.batchQueue.push(e);\n else {\n if (e.type === Tt) {\n for (const n of e.payload.actions)\n this.emitter.emit(n.type, { action: n, state: this.store.getState() });\n this.store.dispatch(e);\n const r = this.getState();\n for (const n of e.payload.actions)\n this.emitter.emit(`after:${n.type}`, { action: n, state: r });\n return;\n }\n this.emitter.emit(e.type, { action: e, state: this.store.getState() }), this.store.dispatch(e);\n const i = this.store.getState();\n this.emitter.emit(`after:${e.type}`, { action: e, state: i });\n return;\n }\n }\n on(e, i) {\n return this.emitter.on(e, i), () => {\n this.emitter.off(e, i);\n };\n }\n serialize(e, i) {\n return Ea(this.getState().iiif, e, i);\n }\n toPresentation2(e) {\n return this.serialize(e, ka);\n }\n toPresentation3(e) {\n return this.serialize(e, Fa);\n }\n hydrate(e, i, r = {}) {\n return this.get(e, i, { ...r, skipSelfReturn: !1 });\n }\n get(e, i, r = {}) {\n typeof i != \"string\" && (r = i || {}, i = void 0);\n const { skipSelfReturn: n = !0 } = r || {};\n let s = r.parent ? typeof r.parent == \"string\" ? r.parent : r.parent.id : void 0;\n if (Array.isArray(e))\n return e.map((v) => this.get(v, r));\n const a = this.getState();\n if (ne(e) && !r.preserveSpecificResources && (e = e.source), typeof e == \"string\") {\n const v = ri(i || a.iiif.mapping[e]);\n if (!v)\n return n ? null : { id: e, type: \"unknown\" };\n e = { id: e, type: v };\n }\n if (e && e.partOf && !s && !r.skipPartOfCheck) {\n const v = Array.isArray(e.partOf) ? e.partOf[0] : e.partOf;\n v && (typeof v == \"string\" && (s = v), typeof v.id == \"string\" && (s = v.id));\n }\n const c = ri(i || (e == null ? void 0 : e.type)), u = e == null ? void 0 : e.id, p = a.iiif.entities[c];\n if (!p) {\n const v = a.iiif.requests[u];\n return v && v.resourceUri !== u ? this.get(v.resourceUri, r) : n ? null : e;\n }\n const f = p[e.id];\n if (f && f[M]) {\n const v = f[M].find((y) => s ? y[z] === s : y[z] === f.id);\n return It(f, v);\n }\n return p[e.id] || (n ? null : e);\n }\n select(e) {\n return e(this.getState());\n }\n getStore() {\n return this.store;\n }\n getState() {\n return this.store.getState();\n }\n deep(e, i) {\n if (typeof e > \"u\")\n return this.get(i, { skipSelfReturn: !1 });\n if (typeof e == \"function\")\n try {\n const n = e(this.get(i, { skipSelfReturn: !1 })), s = (a) => this.deep(a, n);\n return s.size = Array.isArray(n) ? n.length : 1, s;\n } catch {\n const s = (a) => this.deep(a, void 0);\n return s.size = 0, s;\n }\n const r = (n) => this.deep(n, e);\n return r.size = Array.isArray(e) ? e.length : 1, r;\n }\n loadManifest(e, i) {\n const r = typeof e == \"string\" ? e : e.id;\n return this.load(r, i);\n }\n loadCollection(e, i) {\n const r = typeof e == \"string\" ? e : e.id;\n return this.load(r, i);\n }\n load(e, i) {\n const r = typeof e == \"string\" ? e : e.id;\n return i ? Promise.resolve(this.staticFetcher(r, i)) : Promise.resolve(this.remoteFetcher(r));\n }\n loadSync(e, i) {\n const r = typeof e == \"string\" ? e : e.id;\n return this.staticFetcher(r, i);\n }\n loadManifestSync(e, i) {\n const r = typeof e == \"string\" ? e : e.id;\n return this.loadSync(r, i);\n }\n loadCollectionSync(e, i) {\n const r = typeof e == \"string\" ? e : e.id;\n return this.loadSync(r, i);\n }\n areInputsEqual(e, i) {\n return Zt(e, i);\n }\n subscribe(e, i, r) {\n return typeof r > \"u\" && (typeof i > \"u\" || i === !1 || i === !0) && (r = i, i = e, e = (n) => n), this.store.subscribe(e, (n) => i(n, this), {\n equalityFn: Zt,\n fireImmediately: !r\n });\n }\n async ensureLoaded(e) {\n const i = typeof e == \"string\" ? e : e.id;\n this.requestStatus(i) || await this.load(i);\n }\n requestStatus(e) {\n return this.select((i) => i.iiif.requests[e]);\n }\n getResourceMeta(e, i) {\n const r = this.getState().iiif.meta[e];\n if (r)\n return i ? r[i] : r;\n }\n getObject(e, i, r = {}) {\n const { reactive: n, ...s } = r;\n return ge(this.get(e, i, s), this, n);\n }\n async loadObject(e, i) {\n return ge(await this.load(e, i), this);\n }\n async loadManifestObject(e, i) {\n return ge(await this.loadManifest(e, i), this);\n }\n async loadCollectionObject(e, i) {\n return ge(await this.loadCollection(e, i), this);\n }\n wrapObject(e) {\n return ge(this.get(e, { skipSelfReturn: !1 }), this);\n }\n isWrapped(e) {\n return Co(e);\n }\n setMetaValue([e, i, r], n) {\n this.dispatch(\n typeof n == \"function\" ? Xt.setMetaValueDynamic({\n id: e,\n meta: i,\n key: r,\n updateValue: n\n }) : Xt.setMetaValue({\n id: e,\n meta: i,\n key: r,\n value: n\n })\n );\n }\n}\nfunction Io() {\n return typeof self < \"u\" ? self : typeof window < \"u\" ? window : typeof global < \"u\" ? global : {};\n}\nfunction No(t) {\n const e = Io();\n try {\n const r = e.IIIF_VAULT;\n if (r)\n return r;\n } catch {\n }\n const i = new Ro(t);\n try {\n e.IIIF_VAULT = i;\n } catch {\n }\n return i;\n}\nvar xt = { exports: {} };\n(function(t, e) {\n var i = Object.defineProperty, r = (s, a, c) => a in s ? i(s, a, { enumerable: !0, configurable: !0, writable: !0, value: c }) : s[a] = c, n = (s, a, c) => (r(s, typeof a != \"symbol\" ? a + \"\" : a, c), c);\n (function(s, a) {\n a(e);\n })(Gn, function(s) {\n const a = \"http://library.stanford.edu/iiif/image-api/compliance.html#level1\", c = \"http://library.stanford.edu/iiif/image-api/compliance.html#level2\", u = \"http://library.stanford.edu/iiif/image-api/conformance.html#level1\", p = \"http://library.stanford.edu/iiif/image-api/conformance.html#level2\", f = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1\", v = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\", y = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1\", m = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2\", h = \"http://iiif.io/api/image/1/level1.json\", A = \"http://iiif.io/api/image/1/profiles/level1.json\", x = \"http://iiif.io/api/image/1/level2.json\", S = \"http://iiif.io/api/image/1/profiles/level2.json\", C = \"http://iiif.io/api/image/2/level1.json\", E = \"http://iiif.io/api/image/2/profiles/level1.json\", P = \"http://iiif.io/api/image/2/level2.json\", j = \"http://iiif.io/api/image/2/profiles/level2.json\", k = \"level1\", $ = \"level2\", B = \"http://iiif.io/api/image/2/level1\", G = \"http://iiif.io/api/image/2/level2\", oe = [B, G, a, c, u, p, f, v, y, m, h, A, x, S, C, E, P, j, k, $], W = [\"http://iiif.io/api/image/2/level0\", B, G, \"http://library.stanford.edu/iiif/image-api/compliance.html#level0\", a, c, \"http://library.stanford.edu/iiif/image-api/conformance.html#level0\", u, p, \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0\", f, v, \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0\", y, m, \"http://iiif.io/api/image/1/level0.json\", \"http://iiif.io/api/image/1/profiles/level0.json\", h, A, x, S, \"http://iiif.io/api/image/2/level0.json\", \"http://iiif.io/api/image/2/profiles/level0.json\", C, E, P, j, \"level0\", k, $], Ee = [\"sc:Collection\", \"sc:Manifest\", \"sc:Canvas\", \"sc:AnnotationList\", \"oa:Annotation\", \"sc:Range\", \"sc:Layer\", \"sc:Sequence\", \"oa:Choice\", \"Service\", \"ContentResource\"];\n class ce {\n constructor(o, d = {}) {\n n(this, \"traversals\"), n(this, \"options\"), this.traversals = { collection: [], manifest: [], canvas: [], annotationList: [], sequence: [], annotation: [], contentResource: [], choice: [], range: [], service: [], layer: [], ...o }, this.options = { convertPropsToArray: !0, mergeMemberProperties: !0, allowUndefinedReturn: !1, ...d };\n }\n static all(o) {\n return new ce({ collection: [o], manifest: [o], canvas: [o], annotationList: [o], sequence: [o], annotation: [o], contentResource: [o], choice: [o], range: [o], service: [o], layer: [o] });\n }\n traverseCollection(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(o))), this.traversals.collection);\n }\n traverseCollectionItems(o) {\n if (this.options.mergeMemberProperties) {\n const d = [...(o.manifests || []).map((g) => typeof g == \"string\" ? { \"@id\": g, \"@type\": \"sc:Manifest\" } : g), ...(o.collections || []).map((g) => typeof g == \"string\" ? { \"@id\": g, \"@type\": \"sc:Collection\" } : g), ...o.members || []];\n delete o.collections, delete o.manifests, o.members = d;\n }\n return o.manifests && (o.manifests = o.manifests.map((d) => this.traverseManifest(typeof d == \"string\" ? { \"@id\": d, \"@type\": \"sc:Manifest\" } : d))), o.collections && (o.collections = o.collections.map((d) => this.traverseCollection(typeof d == \"string\" ? { \"@id\": d, \"@type\": \"sc:Collection\" } : d))), o.members && (o.members = o.members.map((d) => typeof d == \"string\" ? d : this.traverseUnknown(d))), o;\n }\n traverseManifest(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(o))), this.traversals.manifest);\n }\n traverseManifestItems(o) {\n return o.sequences && (o.sequences = o.sequences.map((d) => this.traverseSequence(d))), o.structures && (o.structures = o.structures.map((d) => this.traverseRange(d))), o;\n }\n traverseSequence(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(o))), this.traversals.sequence);\n }\n traverseSequenceItems(o) {\n return o.canvases && (o.canvases = o.canvases.map((d) => this.traverseCanvas(d))), o;\n }\n traverseCanvas(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(o))), this.traversals.canvas);\n }\n traverseCanvasItems(o) {\n return o.images && (o.images = o.images.map((d) => this.traverseAnnotation(d))), o.otherContent && (o.otherContent = o.otherContent.map((d) => this.traverseAnnotationList(d))), o;\n }\n traverseRange(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(o))), this.traversals.range);\n }\n traverseRangeItems(o) {\n if (this.options.mergeMemberProperties) {\n const d = [...(o.ranges || []).map((g) => typeof g == \"string\" ? { \"@id\": g, \"@type\": \"sc:Range\" } : g), ...(o.canvases || []).map((g) => typeof g == \"string\" ? { \"@id\": g, \"@type\": \"sc:Canvas\" } : g), ...o.members || []];\n delete o.ranges, delete o.canvases, o.members = d.length ? d.map((g) => this.traverseUnknown(g)) : void 0;\n }\n return o;\n }\n traverseAnnotationList(o) {\n const d = typeof o == \"string\" ? { \"@id\": o, \"@type\": \"sc:AnnotationList\" } : o;\n return this.traverseType(this.traverseDescriptive(this.traverseAnnotationListItems(d)), this.traversals.annotationList);\n }\n traverseAnnotationListItems(o) {\n return o.resources && (o.resources = o.resources.map((d) => this.traverseAnnotation(d))), o;\n }\n traverseAnnotation(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(o))), this.traversals.annotation);\n }\n traverseAnnotationItems(o) {\n return o.resource && (Array.isArray(o.resource) ? o.resource = o.resource.map((d) => this.traverseContentResource(d)) : o.resource = this.traverseContentResource(o.resource)), o.on, o;\n }\n traverseLayer(o) {\n return this.traverseType(this.traverseLinking(this.traverseLayerItems(o)), this.traversals.layer);\n }\n traverseLayerItems(o) {\n return o.otherContent && (o.otherContent = o.otherContent.map((d) => this.traverseAnnotationList(d))), o;\n }\n traverseChoice(o) {\n return this.traverseType(this.traverseChoiceItems(o), this.traversals.choice);\n }\n traverseChoiceItems(o) {\n return o.default && o.default !== \"rdf:nil\" && (o.default = this.traverseContentResource(o.default)), o.item && o.item !== \"rdf:nil\" && (o.item = o.item.map((d) => this.traverseContentResource(d))), o;\n }\n traverseService(o) {\n return this.traverseType(this.traverseLinking(o), this.traversals.service);\n }\n traverseContentResource(o) {\n return o[\"@type\"] === \"oa:Choice\" ? this.traverseChoice(o) : this.traverseType(this.traverseDescriptive(this.traverseLinking(o)), this.traversals.contentResource);\n }\n traverseUnknown(o) {\n if (!o[\"@type\"] || typeof o == \"string\")\n return o;\n switch (function(d) {\n if (d == null)\n throw new Error(\"Null or undefined is not a valid entity.\");\n if (Array.isArray(d))\n throw new Error(\"Array is not a valid entity\");\n if (typeof d != \"object\")\n throw new Error(typeof d + \" is not a valid entity\");\n if (typeof d[\"@type\"] == \"string\") {\n const g = Ee.indexOf(d[\"@type\"]);\n if (g !== -1)\n return Ee[g];\n }\n if (d.profile)\n return \"Service\";\n if (d.format || d[\"@type\"])\n return \"ContentResource\";\n throw new Error(\"Resource type is not known\");\n }(o)) {\n case \"sc:Collection\":\n return this.traverseCollection(o);\n case \"sc:Manifest\":\n return this.traverseManifest(o);\n case \"sc:Canvas\":\n return this.traverseCanvas(o);\n case \"sc:Sequence\":\n return this.traverseSequence(o);\n case \"sc:Range\":\n return this.traverseRange(o);\n case \"oa:Annotation\":\n return this.traverseAnnotation(o);\n case \"sc:AnnotationList\":\n return this.traverseAnnotationList(o);\n case \"sc:Layer\":\n return this.traverseLayer(o);\n case \"Service\":\n return this.traverseService(o);\n case \"oa:Choice\":\n return this.traverseChoice(o);\n case \"ContentResource\":\n return this.traverseContentResource(o);\n }\n return o.profile ? this.traverseService(o) : o;\n }\n traverseImageResource(o) {\n const d = Array.isArray(o), g = Array.isArray(o) ? o : [o], I = [];\n for (const R of g)\n typeof R == \"string\" ? I.push(this.traverseContentResource({ \"@id\": R, \"@type\": \"dctypes:Image\" })) : I.push(this.traverseContentResource(R));\n return d || this.options.convertPropsToArray ? I : I[0];\n }\n traverseDescriptive(o) {\n return o.thumbnail && (o.thumbnail = this.traverseImageResource(o.thumbnail)), o.logo && (o.logo = this.traverseImageResource(o.logo)), o;\n }\n traverseOneOrMoreServices(o) {\n const d = Array.isArray(o), g = Array.isArray(o) ? o : [o], I = [];\n for (const R of g)\n I.push(this.traverseService(R));\n return d || this.options.convertPropsToArray ? I : I[0];\n }\n traverseLinking(o) {\n return o.related && (o.related = this.traverseOneOrManyType(o.related, this.traversals.contentResource)), o.rendering && (o.rendering = this.traverseOneOrManyType(o.rendering, this.traversals.contentResource)), o.service && (o.service = this.traverseOneOrMoreServices(o.service)), o.seeAlso && (o.seeAlso = this.traverseOneOrManyType(o.seeAlso, this.traversals.contentResource)), o.within && (typeof o.within == \"string\" || (o.within = this.traverseOneOrManyType(o.within, this.traversals.contentResource))), o.startCanvas && (typeof o.startCanvas == \"string\" ? o.startCanvas = this.traverseType({ \"@id\": o.startCanvas, \"@type\": \"sc:Canvas\" }, this.traversals.canvas) : o.startCanvas && this.traverseType(o.startCanvas, this.traversals.canvas)), o.contentLayer && (typeof o.contentLayer == \"string\" ? o.contentLayer = this.traverseLayer({ \"@id\": o.contentLayer, \"@type\": \"sc:Layer\" }) : o.contentLayer = this.traverseLayer(o.contentLayer)), o;\n }\n traverseOneOrManyType(o, d) {\n if (!Array.isArray(o)) {\n if (!this.options.convertPropsToArray)\n return this.traverseType(o, d);\n o = [o];\n }\n return o.map((g) => this.traverseType(g, d));\n }\n traverseType(o, d) {\n return d.reduce((g, I) => {\n const R = I(g);\n return R !== void 0 || this.options.allowUndefinedReturn ? R : g;\n }, o);\n }\n }\n function N(l) {\n for (const o in l)\n l[o] !== void 0 && l[o] !== null || delete l[o];\n return l;\n }\n const Qe = \"Attribution\", He = \"http://example.org/provider\", De = \"Unknown\";\n function Q(l, o = \"none\") {\n if (!l)\n return {};\n const d = Array.isArray(l) ? l : [l], g = {};\n for (const I of d) {\n if (typeof I == \"string\") {\n g[o] = g[o] ? g[o] : [], g[o].push(I || \"\");\n continue;\n }\n if (!I[\"@language\"]) {\n g[o] = g[o] ? g[o] : [], g[o].push(I[\"@value\"] || \"\");\n continue;\n }\n const R = I[\"@language\"];\n g[R] = g[R] ? g[R] : [], g[R].push(I[\"@value\"] || \"\");\n }\n return g;\n }\n function Ne(l) {\n return Array.isArray(l) ? Ne(l.find((o) => typeof o == \"string\")) : W.indexOf(l) !== -1 ? \"level2\" : oe.indexOf(l) !== -1 ? \"level1\" : typeof l == \"string\" ? l : void 0;\n }\n function Oe(l) {\n for (const o of [\"sc\", \"oa\", \"dcterms\", \"dctypes\", \"iiif\"])\n if (l.startsWith(`${o}:`))\n return l.slice(o.length + 1);\n return l;\n }\n const Ye = [\"Collection\", \"Manifest\", \"Annotation\", \"AnnotationPage\", \"Range\", \"Service\"];\n function _e(l) {\n const o = l[\"@id\"] || l.id;\n let d = l[\"@type\"] || l.type;\n const g = l.profile || void 0, I = l[\"@context\"] || void 0;\n if (g) {\n const R = function(F) {\n switch (F) {\n case \"http://iiif.io/api/image/2/level0.json\":\n case \"http://iiif.io/api/image/2/level1.json\":\n case \"http://iiif.io/api/image/2/level2.json\":\n return \"ImageService2\";\n case \"http://iiif.io/api/auth/1/kiosk\":\n case \"http://iiif.io/api/auth/1/login\":\n case \"http://iiif.io/api/auth/1/clickthrough\":\n case \"http://iiif.io/api/auth/1/external\":\n case \"http://iiif.io/api/auth/0/kiosk\":\n case \"http://iiif.io/api/auth/0/login\":\n case \"http://iiif.io/api/auth/0/clickthrough\":\n case \"http://iiif.io/api/auth/0/external\":\n return \"AuthCookieService1\";\n case \"http://iiif.io/api/auth/1/token\":\n case \"http://iiif.io/api/auth/0/token\":\n return \"AuthTokenService1\";\n case \"http://iiif.io/api/auth/1/logout\":\n case \"http://iiif.io/api/auth/0/logout\":\n return \"AuthLogoutService1\";\n case \"http://iiif.io/api/search/1/search\":\n case \"http://iiif.io/api/search/0/search\":\n return \"SearchService1\";\n case \"http://iiif.io/api/search/1/autocomplete\":\n case \"http://iiif.io/api/search/0/autocomplete\":\n return \"AutoCompleteService1\";\n }\n }(g);\n if (R)\n return R;\n }\n if (I) {\n const R = function(F) {\n const $e = Array.isArray(F) ? F : [F];\n for (const qe of $e)\n switch (qe) {\n case \"http://iiif.io/api/image/2/context.json\":\n case \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\":\n return \"ImageService2\";\n case \"http://iiif.io/api/image/1/context.json\":\n case \"http://library.stanford.edu/iiif/image-api/1.1/context.json\":\n return \"ImageService1\";\n case \"http://iiif.io/api/annex/openannotation/context.json\":\n return \"ImageApiSelector\";\n }\n }(I);\n if (R)\n return R;\n }\n if (d) {\n if (Array.isArray(d)) {\n if (d.indexOf(\"oa:CssStylesheet\") !== -1)\n return \"CssStylesheet\";\n if (d.indexOf(\"cnt:ContentAsText\") !== -1)\n return \"TextualBody\";\n d = d[0];\n }\n for (const R of [\"sc\", \"oa\", \"dcterms\", \"dctypes\", \"iiif\"])\n if (d.startsWith(`${R}:`)) {\n d = d.slice(R.length + 1);\n break;\n }\n switch (d) {\n case \"Layer\":\n return \"AnnotationCollection\";\n case \"AnnotationList\":\n return \"AnnotationPage\";\n case \"cnt:ContentAsText\":\n return \"TextualBody\";\n }\n }\n if (d && Ye.indexOf(d) !== -1)\n return d;\n if (l.format) {\n if (l.format.startsWith(\"image/\"))\n return \"Image\";\n if (l.format.startsWith(\"text/\") || l.format === \"application/pdf\")\n return \"Text\";\n if (l.format.startsWith(\"application/\"))\n return \"Dataset\";\n }\n return o && (o.endsWith(\".jpg\") || o.endsWith(\".png\") || o.endsWith(\".jpeg\")) ? \"Image\" : d || \"unknown\";\n }\n const Mr = /http(s)?:\\/\\/(creativecommons.org|rightsstatements.org)[^\"'\\\\<\\n]+/gm;\n function kr(l) {\n const o = l.match(Mr);\n return o ? o[0] : l;\n }\n const Fr = [\"http://iiif.io/api/presentation/2/context.json\", \"http://iiif.io/api/image/2/context.json\", \"http://iiif.io/api/image/1/context.json\", \"http://library.stanford.edu/iiif/image-api/1.1/context.json\", \"http://iiif.io/api/search/1/context.json\", \"http://iiif.io/api/search/0/context.json\", \"http://iiif.io/api/auth/1/context.json\", \"http://iiif.io/api/auth/0/context.json\", \"http://iiif.io/api/annex/openannotation/context.json\"];\n function Lr(l) {\n if (l) {\n const o = Array.isArray(l) ? l : [l], d = [];\n for (const g of o)\n g === \"http://iiif.io/api/presentation/2/context.json\" && d.push(\"http://iiif.io/api/presentation/3/context.json\"), Fr.indexOf(g) === -1 && d.push(g);\n if (o.length)\n return d.length === 1 ? d[0] : d;\n }\n }\n let Mt = 0;\n function kt(l, o) {\n const d = encodeURI(l.id || l[\"@id\"] || \"\").trim();\n return d && o ? `${d}/${o}` : d || (Mt++, `http://example.org/${l[\"@type\"]}${o ? `/${o}` : \"\"}/${Mt}`);\n }\n function H(l) {\n const o = [...l.behavior || []];\n let d;\n return l.viewingHint && o.push(l.viewingHint), Array.isArray(l.motivation) ? d = l.motivation.map(Oe) : l.motivation && (d = Oe(l.motivation)), { \"@context\": l[\"@context\"] ? Lr(l[\"@context\"]) : void 0, id: (l[\"@id\"] || kt(l)).trim(), type: _e(l), behavior: o.length ? o : void 0, height: l.height ? l.height : void 0, width: l.width ? l.width : void 0, motivation: d, viewingDirection: l.viewingDirection, profile: l.profile, format: l.format ? l.format : void 0, duration: void 0, timeMode: void 0 };\n }\n function Y(l) {\n const [o, d] = function(R, F = \"Rights/License\", $e = \"none\") {\n let qe = null;\n const Ft = [], $r = Array.isArray(R) ? R : [R];\n for (const Lt of $r) {\n const ee = Lt ? kr(Lt) : void 0;\n !ee || ee.indexOf(\"creativecommons.org\") === -1 && ee.indexOf(\"rightsstatements.org\") === -1 ? ee && Ft.push({ label: { [$e]: [F] }, value: { [$e]: [ee] } }) : qe = ee.startsWith(\"https://\") ? `http://${ee.slice(8)}` : ee;\n }\n return [qe, Ft];\n }(l.license), g = [...l.metadata ? (I = l.metadata, I ? I.map((R) => ({ label: Q(R.label), value: Q(R.value) })) : []) : [], ...d];\n var I;\n return { rights: o, metadata: g.length ? g : void 0, label: l.label ? Q(l.label) : void 0, requiredStatement: l.attribution ? { label: Q(Qe), value: Q(l.attribution) } : void 0, navDate: l.navDate, summary: l.description ? Q(l.description) : void 0, thumbnail: Pr(l.thumbnail) };\n }\n function Pr(l) {\n return l && (Array.isArray(l) ? l : [l]).map((o) => typeof o == \"string\" ? { id: o, type: \"Image\" } : (o.type === \"unknown\" && (o.type = \"Image\"), o));\n }\n function jr(l) {\n if (!l.within)\n return;\n const o = Array.isArray(l.within) ? l.within : [l.within], d = [];\n for (const g of o)\n typeof g == \"string\" ? g && l[\"@type\"] === \"sc:Manifest\" && d.push({ id: g, type: \"Collection\" }) : g[\"@id\"] && d.push({ id: g[\"@id\"], type: _e(g) });\n return d.length ? d : void 0;\n }\n function Z(l) {\n const o = l.related ? Array.isArray(l.related) ? l.related : [l.related] : [], d = l.contentLayer;\n return { provider: l.logo || o.length ? [{ id: He, type: \"Agent\", homepage: o.length ? [o[0]] : void 0, logo: l.logo ? Array.isArray(l.logo) ? l.logo : [l.logo] : void 0, label: Q(De) }] : void 0, partOf: jr(l), rendering: l.rendering, seeAlso: l.seeAlso, start: l.startCanvas, service: l.service ? (g = l.service, Array.isArray(g) ? g : g ? [g] : []) : void 0, supplementary: d ? [d] : void 0 };\n var g;\n }\n function Je(l) {\n const o = l;\n return N({ ...H(o), ...Y(o), ...Z(o), ...(d = o, { chars: d.chars, format: d.format ? d.format : void 0, language: d.language }) });\n var d;\n }\n const Dr = new ce({ collection: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l), items: l.members });\n }], manifest: [function(l) {\n const o = [], d = [];\n let g;\n for (const R of l.sequences || [])\n R.canvases.length && o.push(...R.canvases), R.behavior && d.push(...R.behavior), R.startCanvas && (g = R.startCanvas);\n const I = H(l);\n return d.length && (I.behavior ? I.behavior.push(...d) : I.behavior = d), N({ ...I, ...Y(l), ...Z(l), start: g, items: o, structures: l.structures });\n }], canvas: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l), annotations: l.otherContent && l.otherContent.length ? l.otherContent : void 0, items: l.images && l.images.length ? [{ id: kt(l, \"annotation-page\"), type: \"AnnotationPage\", items: l.images }] : void 0 });\n }], annotationList: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l), items: l.resources && l.resources.length ? l.resources : void 0 });\n }], sequence: [function(l) {\n return l.canvases && l.canvases.length !== 0 ? { canvases: l.canvases, behavior: l.viewingHint ? [l.viewingHint] : [], startCanvas: l.startCanvas } : { canvases: [], behavior: [] };\n }], annotation: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l), target: function o(d) {\n if (Array.isArray(d)) {\n if (d.length > 1)\n return { type: \"List\", items: d.map(o) };\n d = d[0];\n }\n if (typeof d == \"string\")\n return encodeURI(d).trim();\n if (\"@type\" in d) {\n let g;\n if (typeof d.full == \"string\")\n g = d.full;\n else if (d.full[\"@type\"] === \"dctypes:Image\")\n g = { id: d.full[\"@id\"], type: \"Image\" };\n else {\n if (d.full[\"@type\"] !== \"sc:Canvas\")\n throw new Error(`Unsupported source type on annotation: ${d.full[\"@type\"]}`);\n g = { id: d.full[\"@id\"], type: \"Canvas\" };\n }\n return { type: \"SpecificResource\", source: g, selector: Xe(d.selector) };\n }\n return encodeURI(d[\"@id\"]).trim();\n }(l.on), body: Array.isArray(l.resource) ? l.resource.map(Je) : Je(l.resource) });\n }], contentResource: [Je], choice: [function(l) {\n const o = [];\n return l.default && l.default !== \"rdf:nil\" && o.push(l.default), l.item && l.item !== \"rdf:nil\" && o.push(...l.item), { ...H(l), ...Y(l), items: o };\n }], range: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l), items: l.members });\n }], service: [function(l) {\n const { \"@id\": o, \"@type\": d, \"@context\": g, profile: I, ...R } = l, F = {};\n return o && (F[\"@id\"] = o), F[\"@type\"] = _e(l), F[\"@type\"] === \"unknown\" && (g && g.length && (F[\"@context\"] = g), F[\"@type\"] = \"Service\"), I && (F.profile = Ne(I)), N({ ...F, ...R });\n }], layer: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l) });\n }] });\n function Xe(l) {\n if ((Array.isArray(l[\"@type\"]) && l[\"@type\"].includes(\"oa:SvgSelector\") || l[\"@type\"] == \"oa:SvgSelector\") && (\"chars\" in l || \"value\" in l))\n return { type: \"SvgSelector\", value: \"chars\" in l ? l.chars : l.value };\n if (l[\"@type\"] === \"oa:FragmentSelector\")\n return { type: \"FragmentSelector\", value: l.value };\n if (l[\"@type\"] === \"oa:Choice\")\n return [Xe(l.default), ...(Array.isArray(l.item) ? l.item : [l.item]).map(Xe)];\n if (l[\"@type\"] == \"iiif:ImageApiSelector\")\n return { type: \"ImageApiSelector\", region: \"region\" in l ? l.region : void 0, rotation: \"rotation\" in l ? l.rotation : void 0 };\n throw new Error(`Unsupported selector type: ${l[\"@type\"]}`);\n }\n const Nr = function(l) {\n return l && l[\"@context\"] && (l[\"@context\"] === \"http://iiif.io/api/presentation/2/context.json\" || l[\"@context\"].indexOf(\"http://iiif.io/api/presentation/2/context.json\") !== -1 || l[\"@context\"] === \"http://www.shared-canvas.org/ns/context.json\") || l[\"@context\"] === \"http://iiif.io/api/image/2/context.json\" ? Dr.traverseUnknown(l) : l;\n };\n s.upgrade = Nr, Object.defineProperties(s, { __esModule: { value: !0 }, [Symbol.toStringTag]: { value: \"Module\" } });\n });\n})(xt, xt.exports);\nvar Eo = xt.exports;\nfunction $o(t, e) {\n return fetch(t, e).then((i) => i.json()).then(Eo.upgrade);\n}\nexport {\n Ro as Vault,\n Oi as buildLocaleString,\n _o as createEventsHelper,\n Po as createPaintingAnnotationsHelper,\n jo as createRangeHelper,\n Do as createSequenceHelper,\n To as createStylesHelper,\n qn as createThumbnailHelper,\n vs as decodeContentState,\n ds as encodeContentState,\n Ae as expandTarget,\n $o as fetch,\n Ct as findAllCanvasesInRange,\n ki as findFirstCanvasFromRange,\n gs as findManifestSelectedRange,\n Rt as findSelectedRange,\n Un as getClosestLanguage,\n Fi as getManifestSequence,\n Mo as getThumbnail,\n ko as getValue,\n As as getVisibleCanvasesFromCanvasId,\n No as globalVault,\n $n as imageServiceLoader,\n us as isImageApiSelector,\n Lo as normaliseContentState,\n hs as parseContentState,\n ps as parseRotation,\n Be as parseSelector,\n ms as parseSpecificResource,\n Fo as serialiseContentState,\n Bt as validateContentState\n};\n//# sourceMappingURL=index.mjs.map\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 { 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) {\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 { 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 { 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 if (!canvas.duration) {\n return unsupportedStrategy('No duration on canvas');\n }\n\n if (videoPaintables.length > 1) {\n return unsupportedStrategy('Only one video source supported');\n }\n\n const audioResource = videoPaintables[0]?.resource as any; // @todo stronger type for what this might be.\n const isYouTube = !!(audioResource.service || []).find((service: any) =>\n (service.profile || '').includes('youtube.com')\n );\n\n if (!audioResource) {\n return unsupportedStrategy('Unknown video');\n }\n\n if (!audioResource.format || audioResource.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: audioResource.id,\n type: 'Video',\n items: [],\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\n if (isYouTube) {\n media.type = 'VideoYouTube';\n const id = audioResource.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 { 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 { 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 { getImageStrategy } from '../features/rendering-strategy/image-strategy';\nimport { get3dStrategy } from '../features/rendering-strategy/3d-strategy';\nimport { getAudioStrategy } from '../features/rendering-strategy/audio-strategy';\nimport { getVideoStrategy } from '../features/rendering-strategy/video-strategy';\nimport { getTextualContentStrategy } from '../features/rendering-strategy/textual-content-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 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 console.log('No idea');\n // Unknown fallback.\n return unknownResponse;\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 { ImageServiceLoader as T, getFixedSizeFromImage as w } from \"@atlas-viewer/iiif-image-api\";\nconst m = {}, b = {\n get(i) {\n return i;\n },\n setMetaValue([i, n, o], r) {\n const c = b.getResourceMeta(i, n), s = c ? c[o] : void 0, e = typeof r == \"function\" ? r(s) : r;\n m[i] = {\n ...m[i] || {},\n [n]: {\n ...(m[i] || {})[n] || {},\n [o]: e\n }\n };\n },\n getResourceMeta: (i, n) => {\n const o = m[i];\n if (o)\n return n ? o[n] : o;\n }\n}, R = new T(), p = /* @__PURE__ */ new Map();\nfunction M(i, {\n vault: n = b,\n dereference: o = !1,\n ...r\n} = {}) {\n let c = p.get(n);\n return c || (c = y(n), p.set(n, c)), c.getBestThumbnailAtSize(i, r, o);\n}\nfunction y(i = b, n = {}) {\n const o = n.imageServiceLoader || R;\n async function r(c, s, e = !1, h = [], l) {\n const g = () => o.getThumbnailFromResource(void 0, s, e, h);\n if (!c)\n return await o.getThumbnailFromResource(void 0, s, e, h);\n if (typeof c == \"string\") {\n const t = w(c);\n return t && h.push(t), await o.getThumbnailFromResource(void 0, s, e, h);\n }\n const a = i.get(c, { skipSelfReturn: !1 });\n if (typeof a == \"string\")\n return { best: w(a), fallback: [], log: [] };\n if (!a)\n return await g();\n switch (await (async (t) => {\n if (t && t.thumbnail && t.thumbnail.length) {\n const u = i.get(t.thumbnail[0]), f = await o.getImageCandidates(u, e);\n f && f.length && h.push(...f);\n }\n })(a), a.type) {\n case \"Annotation\": {\n const t = Array.isArray(a.body) ? a.body : [a.body], u = i.get(t[0]);\n return l && !u.width && (u.width = l.width, u.height = l.height), await o.getThumbnailFromResource(u, s, e, h);\n }\n case \"Canvas\": {\n const t = a;\n return r(t.items[0], s, e, h, {\n width: t.width,\n height: t.height\n });\n }\n case \"AnnotationPage\":\n return r(a.items[0], s, e, h, l);\n case \"Choice\": {\n const t = a;\n return !t.items || t.items[0] ? await g() : r(t.items[0], s, e, h, l);\n }\n case \"Collection\": {\n const u = a.items[0];\n return u ? r(u, s, e, h, l) : await g();\n }\n case \"Manifest\": {\n const u = a.items[0];\n return u ? r(u, s, e, h, l) : await g();\n }\n case \"SpecificResource\":\n case \"Image\":\n case \"Dataset\":\n case \"Sound\":\n case \"Text\":\n case \"TextualBody\":\n case \"Video\":\n return l && !a.width && (a.width = l.width, a.height = l.height), o.getThumbnailFromResource(a, s, e, h);\n }\n return await g();\n }\n return {\n getBestThumbnailAtSize: r\n };\n}\nexport {\n y as createThumbnailHelper,\n M as getThumbnail,\n R as imageServiceLoader\n};\n//# sourceMappingURL=thumbnail.mjs.map\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(inputText: InternationalString | string | null | undefined, defaultText?: string) {\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('\\n');\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\nexport const LocaleString: React.FC<\n {\n as?: string | React.FC<any>;\n defaultText?: string;\n to?: string;\n enableDangerouslySetInnerHTML?: boolean;\n children: InternationalString | string | null | undefined;\n style?: React.CSSProperties;\n extraProps?: any;\n } & Record<string, any>\n> = ({ as: Component, defaultText, enableDangerouslySetInnerHTML, children, ...props }) => {\n const [text, language] = useLocaleString(children, defaultText);\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 { globalVault } from '@iiif/helpers/vault';\nimport { useContext } from 'react';\nimport { ReactVaultContext } from '../context/VaultContext';\n\nexport function useExistingVault() {\n const oldContext: any = useContext(ReactVaultContext);\n\n return oldContext && oldContext.vault ? (oldContext.vault as any) : globalVault();\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 { ViewerControls } from '../demo/viewer-controls';\nimport { MediaControls } from '../demo/media-controls';\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\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\nconst Inner = forwardRef(function Inner(\n props: {\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 ref\n) {\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(function CanvasPanel(\n { children, height, annotations, canvasProps, spacing, header, components, mode, ...props }: CanvasPanelProps,\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 >\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 { 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":["_setPrototypeOf","o","p","_inheritsLoose","subClass","superClass","setPrototypeOf","changedArray","a","b","item","index","initialState","ErrorBoundary","_React$Component","_this","_len","_args","_key","_this$props","_len2","args","_key2","error","_proto","info","_this$props$onError","_this$props2","prevProps","prevState","resetKeys","_this$props$onResetKe","_this$props3","_this$props4","fallbackRender","FallbackComponent","fallback","_props","React","defaultResourceContext","ResourceReactContext","useResourceContext","useContext","ResourceProvider","value","children","parentContext","newContext","useMemo","me","Re","t","e","i","_","n","r","X","K","Z","ee","N","te","ie","re","k","ne","se","Oe","De","Ie","Me","Ce","we","Pe","Ue","Fe","Ne","oe","ce","ke","qe","ae","ue","de","xe","Ve","Le","j","q","fe","x","le","he","pe","ye","Be","Qe","V","je","ze","Q","Ye","L","He","Ae","z","Je","Y","w","I","u","M","$","Ge","H","d","f","S","E","R","y","l","Ee","J","We","$e","Xe","B","D","Ke","Ze","A","h","m","P","et","tt","it","rt","U","nt","c","F","st","ot","ct","Se","s","at","ut","dt","ft","lt","g","O","T","v","ge","G","ht","pt","W","yt$1","_e","ve","Te","be","Et","mt","yt","ReactVaultContext","vault","VaultProvider","vaultOptions","useGlobal","resources","vaultInstance","setVaultInstance","useState","globalVault","Vault","useVault","useExternalResource","idOrRef","noCache","id","realId","setRealId","setError","initialData","resource","setResource","useEffect","fetchedResource","_realId","err","useExternalManifest","options","isLoaded","requestId","cached","ManifestContext","manifest","CanvasContext","canvas","useVaultSelector","selector","deps","selectedState","setSelectedState","VisibleCanvasReactContext","useVisibleCanvases","ids","state","useManifest","ctx","manifestId","RangeContext","range","findFirstCanvasFromRange","inner","found","findAllCanvasesInRange","_a","sourceId","findManifestSelectedRange","canvasId","findSelectedRange","parsedId","_b","_c","getVisibleCanvasesFromCanvasId","manifestOrRange","preventPaged","behavior","fullCanvas","canvasBehavior","isPaged","isContinuous","isIndividuals","isCanvasFacingPages","isCanvasNonPaged","manifestItems","ordering","getManifestSequence","canvasIndex","indexes","disablePaging","skipNonPaged","currentOrdering","flush","offset","flushNextPaged","useRange","rangeId","useCanvasSequence","startCanvas","cursor","setCursor","rangeOrManifest","items","initialSequence","setCanvasIndex","useCallback","foundSequence","setCanvasId","foundIndex","next","previous","idx","noop","SimpleViewerReactContext","createContext","InnerViewerProvider","props","visibleItems","sequence","setSequenceIndex","jsx","SimpleViewerProvider","useSimpleViewer","useContextBridge","ContextBridge","C","useDispatch","store","action","isVaultActivated","obj","useVirtualAnnotationPage","sources","useRef","dispatch","virtualId","useLayoutEffect","page","entityActions","fullPage","addAnnotation","atIndex","display","full","annotation","removeAnnotation","VirtualAnnotationPageContext","useVirtualAnnotationPageContext","VirtualAnnotationProvider","DefaultCanvasFallback","width","style","height","resetErrorBoundary","jsxs","ViewerPresetContext","useViewerPreset","SetOverlaysReactContext","SetPortalReactContext","useOverlay","type","key","element","setOverlay","useCanvas","WorldSizeContext","useWorldSize","size","fn","Viewer","errorFallback","outerContainerProps","_worldScale","viewerPreset","setViewerPreset","bridge","ErrorFallback","overlays","setOverlays","overlayComponents","portals","setPortals","portalComponents","worldSizes","setWorldSizes","worldScale","runtimeOptions","updateWorldSize","sizes","rest","updateOverlay","prev","updatePortal","fallbackProps","AtlasAuto","Fragment","Element","preset","ModeContext","useResourceEvents","scope","helper","createEventsHelper","hooks","useStyles","createStylesHelper","styles","vt","xt","bt","At","kt","gt","Mt","wt","St","useAnnotation","annotationId","body","singleBody","newAnnotation","expandTarget","RenderAnnotation","defaultStyle","className","interactive","html","events","allStyles","mergeStyles","RegionHighlight","useAnnotationPage","annotationPageId","annotationPage","RenderAnnotationPage","_page","RenderImage","image","thumbnail","isStatic","onClick","enableSizes","crop","TileSet","qr","Ur","Wn","zn","zt","Vn","Bn","Gn","_i","Qn","Yn","Hn","Xn","Jn","Kn","Zn","es","ts","is","rs","Ti","ns","ss","as","os","Vt","us","Mi","fs","cs","ls","ps","bs","Ss","Qt","Ms","Ot","ks","Di","Ni","Fs","$i","qi","Ls","Ui","Wi","Ps","zi","Vi","js","Ds","Bi","Gi","Qi","Hi","Ns","$s","Yi","Ji","Xi","Ki","qs","Zi","er","Us","tr","ir","Ws","zs","rr","Vs","Bs","Ht","Gs","_t","Qs","Hs","Ys","Js","Xs","Ks","Yt","nr","Zs","ea","ta","ia","ra","na","sa","aa","oa","ca","la","fa","ua","Mr","kr","Fr","Lr","Ft","$r","Lt","Pr","jr","Dr","Nr","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","usePaintables","createPaintingAnnotationsHelper","paintingAnnotations","enabledChoices","setEnabledChoices","paintables","actions","deselectOthers","deselect","prevChoices","without","defaultId","newChoices","getImageStrategy","loadImageService","imageTypes","singleImage","imageServices","getImageServices","imageSelector","imageType","supportedFormats","get3dStrategy","getAudioStrategy","audioResource","ytRegex","getVideoStrategy","videoPaintables","isYouTube","service","media","parseType","languageMap","lang","language","getTextualContentStrategy","useRenderingStrategy","enabledPages","supports","strategy","mainType","useVaultEffect","callback","useThumbnail","request","dereference","createThumbnailHelper","setThumbnail","subject","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","Component","viewingDirection","i18nLanguage","getClosestLanguage","languages","i18nLanguages","root","useClosestLanguage","getLanguages","useLocaleString","inputText","defaultText","candidateText","useCreateLocaleString","separator","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","useExistingVault","oldContext","Inner","forwardRef","ref","viewer","ViewerControls","MediaControls","useImperativeHandle","accumulator","CanvasPanel","margin","canvasProps","spacing","header","components","mode","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","data","loadedService","useImageTile","useSearchService","useStyleHelper"],"mappings":"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","x_google_ignoreList":[0,1,2,4,21,31,33,35,41,50,59]}
|