react-iiif-vault 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","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, ...(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 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","C","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","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.js","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/3d-strategy.ts","../../../src/features/rendering-strategy/audio-strategy.ts","../../../src/features/rendering-strategy/image-strategy.ts","../../../src/features/rendering-strategy/textual-content-strategy.ts","../../../src/features/rendering-strategy/video-strategy.ts","../../../src/features/rendering-strategy/get-rendering-strategy.ts","../../../src/hooks/useRenderingStrategy.ts","../../../src/hooks/useVaultEffect.ts","../../../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 if (visibleItems.length === 0) {\n return null;\n }\n\n return (\n <SimpleViewerReactContext.Provider value={ctx}>\n <VisibleCanvasReactContext.Provider value={visibleItems}>\n <CanvasContext canvas={visibleItems[0]}>{props.children}</CanvasContext>\n </VisibleCanvasReactContext.Provider>\n </SimpleViewerReactContext.Provider>\n );\n}\n\nexport function SimpleViewerProvider(props: SimpleViewerProps) {\n const 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 { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { unsupportedStrategy } from './rendering-utils';\nimport { AnnotationPageDescription } from './resource-types';\nimport { ExternalWebResource } from '@iiif/presentation-3';\nimport { RenderingStrategy } from './strategies';\nimport { ChoiceDescription, Paintables } from '@iiif/helpers';\n\nexport type Single3DModelStrategy = {\n type: '3d-model';\n model: ExternalWebResource;\n choice?: ChoiceDescription; // future\n annotations?: AnnotationPageDescription; // future\n};\n\nconst supportedFormats = ['model/gltf-binary'];\n\nexport function get3dStrategy(canvas: CanvasNormalized, paintables: Paintables): RenderingStrategy {\n const first = paintables.items[0];\n const resource = first.resource as ExternalWebResource;\n\n if (!resource.format) {\n return unsupportedStrategy('Unknown format');\n }\n\n if (supportedFormats.indexOf(resource.format) === -1) {\n return unsupportedStrategy(`3D format: ${resource.format} is unsupported`);\n }\n\n return {\n type: '3d-model',\n model: resource as any,\n } as Single3DModelStrategy;\n}\n","import { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { unsupportedStrategy } from './rendering-utils';\nimport { MediaStrategy } from './strategies';\nimport { Paintables } from '@iiif/helpers';\n\nexport function getAudioStrategy(canvas: CanvasNormalized, paintables: Paintables) {\n if (!canvas.duration) {\n return unsupportedStrategy('No duration on canvas');\n }\n\n if (paintables.items.length > 1) {\n return unsupportedStrategy('Only one audio source supported');\n }\n\n const audioResource = paintables.items[0]?.resource as any; // @todo stronger type for what this might be.\n\n if (!audioResource) {\n return unsupportedStrategy('Unknown audio');\n }\n\n if (!audioResource.format) {\n return unsupportedStrategy('Audio does not have format');\n }\n\n return {\n type: 'media',\n media: {\n annotationId: paintables.items[0].annotationId,\n duration: canvas.duration,\n url: audioResource.id,\n type: 'Sound',\n target: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n format: audioResource.format,\n selector: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n },\n annotations: {\n pages: [],\n },\n } as MediaStrategy;\n}\n","import { IIIFExternalWebResource } from '@iiif/presentation-3';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { ImageServiceLoaderType } from '../../hooks/useLoadImageService';\nimport { AnnotationPageDescription, ImageWithOptionalService } from './resource-types';\nimport { getImageServices } from '@atlas-viewer/iiif-image-api';\nimport { getParsedTargetSelector, unsupportedStrategy } from './rendering-utils';\nimport { expandTarget } from '@iiif/helpers/annotation-targets';\nimport { BoxSelector, ChoiceDescription, Paintables } from '@iiif/helpers';\n\nexport type SingleImageStrategy = {\n type: 'images';\n image: ImageWithOptionalService;\n images: Array<ImageWithOptionalService>;\n choice?: ChoiceDescription;\n annotations?: AnnotationPageDescription;\n};\n\nexport function getImageStrategy(\n canvas: CanvasNormalized,\n paintables: Paintables,\n loadImageService: ImageServiceLoaderType\n) {\n const imageTypes: ImageWithOptionalService[] = [];\n for (const singleImage of paintables.items) {\n // SingleImageStrategy\n const resource: IIIFExternalWebResource =\n singleImage.resource && singleImage.resource.type === 'SpecificResource'\n ? singleImage.resource.source\n : singleImage.resource;\n\n // Validation.\n if (!resource.id) {\n // @todo we could skip this?\n return unsupportedStrategy('No resource Identifier');\n }\n\n let imageService = undefined;\n if (resource.service) {\n const imageServices = getImageServices(resource as any) as any[];\n if (imageServices[0]) {\n imageService = loadImageService(imageServices[0], canvas);\n }\n }\n\n // Target is where it should be painted.\n const defaultTarget: BoxSelector = {\n type: 'BoxSelector',\n spatial: {\n x: 0,\n y: 0,\n width: Number(canvas.width),\n height: Number(canvas.height),\n },\n };\n\n const [target, source] = getParsedTargetSelector(canvas, singleImage.target);\n if (source.id !== canvas.id) {\n // Skip invalid targets.\n continue;\n }\n\n // Support for cropping before painting an annotation.\n // @todo this isn't working.\n const defaultImageSelector =\n (singleImage.resource as any).width && (singleImage.resource as any).height\n ? ({\n type: 'BoxSelector',\n spatial: {\n x: 0,\n y: 0,\n width: (singleImage.resource as any).width,\n height: (singleImage.resource as any).height,\n },\n } as BoxSelector)\n : undefined;\n\n let imageSelector = singleImage.resource.type === 'SpecificResource' ? expandTarget(singleImage.resource) : null;\n\n if (singleImage.selector) {\n const found = expandTarget({\n type: 'SpecificResource',\n source: singleImage.resource,\n selector: singleImage.selector,\n });\n\n if (found) {\n imageSelector = found;\n }\n }\n\n const selector: undefined | BoxSelector =\n imageSelector &&\n imageSelector.selector &&\n (imageSelector.selector.type === 'BoxSelector' || imageSelector.selector.type === 'TemporalBoxSelector')\n ? {\n type: 'BoxSelector',\n spatial: {\n x: imageSelector.selector.spatial.x,\n y: imageSelector.selector.spatial.y,\n width: imageSelector.selector.spatial.width,\n height: imageSelector.selector.spatial.height,\n },\n }\n : undefined;\n\n if (imageService && !imageService.id) {\n (imageService as any).id = imageService['@id'];\n }\n\n const imageType: ImageWithOptionalService = {\n id: resource.id,\n type: 'Image',\n annotationId: (singleImage as any).annotationId,\n width: Number(target || selector ? resource.width : canvas.width),\n height: Number(target || selector ? resource.height : canvas.height),\n service: imageService,\n sizes:\n imageService && imageService.sizes\n ? imageService.sizes\n : resource.width && resource.height\n ? [{ width: resource.width, height: resource.height }]\n : [],\n target: target && target.type !== 'PointSelector' ? target : defaultTarget,\n selector: selector,\n };\n\n imageTypes.push(imageType);\n }\n\n return {\n type: 'images',\n image: imageTypes[0],\n images: imageTypes,\n choice: paintables.choice,\n } as SingleImageStrategy;\n}\n","import { InternationalString } from '@iiif/presentation-3';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { AnnotationPageDescription } from './resource-types';\nimport { getParsedTargetSelector } from './rendering-utils';\nimport { RenderingStrategy } from './strategies';\nimport { ChoiceDescription, Paintables, SupportedTarget } from '@iiif/helpers';\n\nexport type TextualContentStrategy = {\n type: 'textual-content';\n items: { annotationId: string; text: InternationalString; target: SupportedTarget | null }[];\n choice?: ChoiceDescription; // future\n annotations?: AnnotationPageDescription; // future\n};\n\nfunction parseType(item: any, languageMap: InternationalString = {}, lang?: string) {\n const language = item.language || lang || 'none';\n switch (item.type) {\n case 'TextualBody': {\n if (typeof item.value !== 'undefined') {\n languageMap[language] = item.value;\n }\n break;\n }\n case 'List':\n case 'Composite':\n case 'Choice': {\n if (item.items) {\n item.items.forEach((inner: any) => parseType(inner, languageMap, language));\n }\n }\n }\n return languageMap;\n}\n\nexport function getTextualContentStrategy(canvas: CanvasNormalized, paintables: Paintables): RenderingStrategy {\n const items: TextualContentStrategy['items'] = [];\n\n paintables.items.forEach((item) => {\n if (item.resource) {\n const [target] = getParsedTargetSelector(canvas, item.target);\n items.push({ annotationId: item.annotationId, text: parseType(item.resource), target: target as any });\n }\n });\n\n return {\n type: 'textual-content',\n items,\n } as TextualContentStrategy;\n}\n","import { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { unsupportedStrategy } from './rendering-utils';\nimport { MediaStrategy } from './strategies';\nimport { Paintables } from '@iiif/helpers';\n\n// https://stackoverflow.com/a/27728417\nconst ytRegex = /^.*(?:(?:youtu\\.be\\/|v\\/|vi\\/|u\\/\\w\\/|embed\\/|shorts\\/)|(?:(?:watch)?\\?vi?=|&vi?=))([^#&?]*).*/;\n\nexport function getVideoStrategy(canvas: CanvasNormalized, paintables: Paintables) {\n const videoPaintables = paintables.items.filter((t) => t.type === 'video');\n\n 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 { get3dStrategy } from './3d-strategy';\nimport { getAudioStrategy } from './audio-strategy';\nimport { getImageStrategy } from './image-strategy';\nimport { emptyStrategy, unknownResponse, unsupportedStrategy } from './rendering-utils';\nimport { getTextualContentStrategy } from './textual-content-strategy';\nimport { getVideoStrategy } from './video-strategy';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { Paintables } from '@iiif/helpers/painting-annotations';\nimport { ImageServiceLoaderType } from '../../hooks/useLoadImageService';\n\ninterface GetRenderStrategyOptions {\n canvas: CanvasNormalized | null | undefined;\n paintables: Paintables;\n supports: string[];\n loadImageService: ImageServiceLoaderType;\n}\n\nexport function getRenderingStrategy({ canvas, paintables, supports, loadImageService }: GetRenderStrategyOptions) {\n if (!canvas) {\n console.log('No canvas');\n return unknownResponse;\n }\n\n if (paintables.types.length === 0) {\n if (supports.indexOf('empty') !== -1) {\n return emptyStrategy(canvas.width, canvas.height);\n }\n console.log('No paintables');\n return unknownResponse;\n }\n\n if (paintables.types.length !== 1) {\n if (paintables.types.length === 2 && paintables.types.indexOf('text') !== -1) {\n paintables.types = paintables.types.filter((t) => t !== 'text');\n } else {\n if (supports.indexOf('complex-timeline') === -1) {\n return unsupportedStrategy('Complex timeline not supported');\n }\n return unsupportedStrategy('ComplexTimelineStrategy not yet supported');\n }\n }\n\n const mainType = paintables.types[0];\n\n // Image\n if (mainType === 'image') {\n if (supports.indexOf('images') === -1) {\n return unsupportedStrategy('Image not supported');\n }\n\n return getImageStrategy(canvas, paintables, loadImageService);\n }\n\n // 3D\n if (mainType === 'Model' || mainType === 'model') {\n if (supports.indexOf('3d-model') === -1) {\n return unsupportedStrategy('3D not supported');\n }\n\n return get3dStrategy(canvas, paintables);\n }\n\n if (mainType === 'textualbody') {\n if (supports.indexOf('textual-content') === -1) {\n return unsupportedStrategy('Textual content not supported');\n }\n\n return getTextualContentStrategy(canvas, paintables);\n }\n\n if (mainType === 'sound' || mainType === 'audio') {\n if (supports.indexOf('media') === -1) {\n return unsupportedStrategy('Media not supported');\n }\n\n // Media Strategy with audio or audio sequence.\n return getAudioStrategy(canvas, paintables);\n }\n\n if (mainType === 'video') {\n if (supports.indexOf('media') === -1) {\n return unsupportedStrategy('Media not supported');\n }\n\n // Media Strategy with video or video sequence.\n return getVideoStrategy(canvas, paintables);\n }\n\n // Unknown fallback.\n return unknownResponse;\n}\n","import { AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useCanvas } from './useCanvas';\nimport { useMemo } from 'react';\nimport { useVault } from './useVault';\nimport { RenderingStrategy } from '../features/rendering-strategy/strategies';\nimport {\n emptyActions,\n emptyStrategy,\n unknownResponse,\n unsupportedStrategy,\n} from '../features/rendering-strategy/rendering-utils';\nimport { useAnnotationPageManager } from './useAnnotationPageManager';\nimport { useManifest } from './useManifest';\nimport { useResources } from './useResources';\nimport { useLoadImageService } from './useLoadImageService';\nimport { usePaintables } from './usePaintables';\nimport { getRenderingStrategy } from '../features/rendering-strategy/get-rendering-strategy';\n\n// @todo we may not have any actions returned from the rendering strategy.\nexport type StrategyActions = {\n makeChoice: (id: string, options?: { deselectOthers?: boolean; deselect?: boolean }) => void;\n};\n\nexport type UseRenderingStrategy = [RenderingStrategy, StrategyActions];\n\nexport type UseRenderingStrategyOptions = {\n strategies?: Array<RenderingStrategy['type']>;\n annotationPageManagerId?: string;\n enableSingleAnnotation?: boolean;\n defaultChoices?: string[];\n};\n\nexport function useRenderingStrategy(options?: UseRenderingStrategyOptions): UseRenderingStrategy {\n const manifest = useManifest();\n const canvas = useCanvas();\n const vault = useVault();\n const [loadImageService, imageServiceStatus] = useLoadImageService();\n const { enabledPageIds } = useAnnotationPageManager(options?.annotationPageManagerId || manifest?.id || canvas?.id, {\n all: false,\n });\n const enabledPages = useResources<AnnotationPageNormalized>(enabledPageIds, 'AnnotationPage');\n\n const supports: RenderingStrategy['type'][] = options?.strategies || [\n 'empty',\n 'images',\n 'media',\n 'textual-content',\n 'complex-timeline',\n ];\n\n const [paintables, actions] = usePaintables(options, [imageServiceStatus]);\n\n const strategy = useMemo(() => {\n return getRenderingStrategy({ canvas, paintables, supports, loadImageService });\n }, [canvas, paintables, vault, actions.makeChoice]);\n\n return useMemo(() => {\n if (strategy.type === 'unknown') {\n return [strategy, emptyActions];\n }\n\n return [\n {\n ...strategy,\n annotations: { pages: enabledPages },\n },\n actions,\n ];\n }, [strategy, enabledPages]);\n}\n","import { Vault } from '@iiif/helpers/vault';\nimport { useVault } from './useVault';\nimport { useEffect } from 'react';\n\nexport const useVaultEffect = (callback: (vault: Vault) => void, deps: any[] = []): void => {\n const vault = useVault();\n\n useEffect(() => {\n callback(vault);\n }, [vault, ...deps]);\n};\n","import { 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","i","_","e","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","f","S","E","R","y","l","Ee","J","d","We","$e","Xe","B","D","Ke","Ze","A","h","m","C","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","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","t","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","supportedFormats","get3dStrategy","getAudioStrategy","audioResource","getImageStrategy","loadImageService","imageTypes","singleImage","imageServices","getImageServices","imageSelector","imageType","parseType","languageMap","lang","language","getTextualContentStrategy","ytRegex","getVideoStrategy","videoPaintables","isYouTube","service","media","getRenderingStrategy","supports","mainType","useRenderingStrategy","enabledPages","strategy","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,60]}