react-iiif-vault 1.0.3 → 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":"canvas-panel.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"],"sourcesContent":["export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport * as React from 'react';\n\nvar changedArray = function changedArray(a, b) {\n if (a === void 0) {\n a = [];\n }\n\n if (b === void 0) {\n b = [];\n }\n\n return a.length !== b.length || a.some(function (item, index) {\n return !Object.is(item, b[index]);\n });\n};\n\nvar initialState = {\n error: null\n};\n\nvar ErrorBoundary = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ErrorBoundary, _React$Component);\n\n function ErrorBoundary() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = initialState;\n\n _this.resetErrorBoundary = function () {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this.props.onReset == null ? void 0 : (_this$props = _this.props).onReset.apply(_this$props, args);\n\n _this.reset();\n };\n\n return _this;\n }\n\n ErrorBoundary.getDerivedStateFromError = function getDerivedStateFromError(error) {\n return {\n error: error\n };\n };\n\n var _proto = ErrorBoundary.prototype;\n\n _proto.reset = function reset() {\n this.setState(initialState);\n };\n\n _proto.componentDidCatch = function componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n\n (_this$props$onError = (_this$props2 = this.props).onError) == null ? void 0 : _this$props$onError.call(_this$props2, error, info);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n var error = this.state.error;\n var resetKeys = this.props.resetKeys; // There's an edge case where if the thing that triggered the error\n // happens to *also* be in the resetKeys array, we'd end up resetting\n // the error boundary immediately. This would likely trigger a second\n // error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call\n // of cDU after the error is set\n\n if (error !== null && prevState.error !== null && changedArray(prevProps.resetKeys, resetKeys)) {\n var _this$props$onResetKe, _this$props3;\n\n (_this$props$onResetKe = (_this$props3 = this.props).onResetKeysChange) == null ? void 0 : _this$props$onResetKe.call(_this$props3, prevProps.resetKeys, resetKeys);\n this.reset();\n }\n };\n\n _proto.render = function render() {\n var error = this.state.error;\n var _this$props4 = this.props,\n fallbackRender = _this$props4.fallbackRender,\n FallbackComponent = _this$props4.FallbackComponent,\n fallback = _this$props4.fallback;\n\n if (error !== null) {\n var _props = {\n error: error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n\n if ( /*#__PURE__*/React.isValidElement(fallback)) {\n return fallback;\n } else if (typeof fallbackRender === 'function') {\n return fallbackRender(_props);\n } else if (FallbackComponent) {\n return /*#__PURE__*/React.createElement(FallbackComponent, _props);\n } else {\n throw new Error('react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop');\n }\n }\n\n return this.props.children;\n };\n\n return ErrorBoundary;\n}(React.Component);\n\nfunction withErrorBoundary(Component, errorBoundaryProps) {\n var Wrapped = function Wrapped(props) {\n return /*#__PURE__*/React.createElement(ErrorBoundary, errorBoundaryProps, /*#__PURE__*/React.createElement(Component, props));\n }; // Format for display in DevTools\n\n\n var name = Component.displayName || Component.name || 'Unknown';\n Wrapped.displayName = \"withErrorBoundary(\" + name + \")\";\n return Wrapped;\n}\n\nfunction useErrorHandler(givenError) {\n var _React$useState = React.useState(null),\n error = _React$useState[0],\n setError = _React$useState[1];\n\n if (givenError != null) throw givenError;\n if (error != null) throw error;\n return setError;\n}\n/*\neslint\n @typescript-eslint/sort-type-union-intersection-members: \"off\",\n @typescript-eslint/no-throw-literal: \"off\",\n @typescript-eslint/prefer-nullish-coalescing: \"off\"\n*/\n\nexport { ErrorBoundary, useErrorHandler, withErrorBoundary };\n","import React, { ReactNode, useContext, useMemo } from 'react';\n\nconst defaultResourceContext = {\n collection: undefined,\n manifest: undefined,\n range: undefined,\n canvas: undefined,\n annotation: undefined,\n annotationPage: undefined,\n};\n\nexport type ResourceContextType = {\n collection?: string;\n manifest?: string;\n range?: string;\n canvas?: string;\n annotation?: string;\n annotationPage?: string;\n};\n\nexport const ResourceReactContext = React.createContext<ResourceContextType>(defaultResourceContext);\n\nexport const useResourceContext = () => {\n return useContext(ResourceReactContext);\n};\n\nexport function ResourceProvider({ value, children }: { value: ResourceContextType; children: ReactNode }) {\n const parentContext = useResourceContext();\n const newContext = useMemo(() => {\n return {\n ...parentContext,\n ...value,\n };\n }, [value, parentContext]);\n\n return <ResourceReactContext.Provider value={newContext}>{children}</ResourceReactContext.Provider>;\n}\n","var me = Object.defineProperty;\nvar Re = (t, e, i) => e in t ? me(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i;\nvar _ = (t, e, i) => (Re(t, typeof e != \"symbol\" ? e + \"\" : e, i), i);\nimport { normalize as Ae, HAS_PART as I, PART_OF as M, frameResource as $, serialize as _e, serializeConfigPresentation2 as ve, serializeConfigPresentation3 as Te, isSpecificResource as be } from \"@iiif/parser\";\nconst p = function(e) {\n return function() {\n const i = { type: e, getType: () => e, toString: () => e };\n return (n, r) => ({\n ...i,\n ...n !== void 0 && { payload: n },\n ...r !== void 0 && { meta: r }\n });\n };\n}, X = \"@iiif/IMPORT_ENTITIES\", K = \"@iiif/MODIFY_ENTITY_FIELD\", Z = \"@iiif/REORDER_ENTITY_FIELD\", ee = \"@iiif/ADD_REFERENCE\", N = \"@iiif/UPDATE_REFERENCE\", te = \"@iiif/REMOVE_REFERENCE\", ie = \"@iiif/ADD_METADATA\", re = \"@iiif/REMOVE_METADATA\", k = \"@iiif/UPDATE_METADATA\", ne = \"@iiif/REORDER_METADATA\", se = p(X)(), Oe = p(K)(), De = p(Z)(), Ie = p(ee)(), Me = p(te)(), Ce = p(N)(), we = p(ie)(), Pe = p(k)(), Ue = p(re)(), Fe = p(ne)(), Ne = {\n importEntities: se,\n modifyEntityField: Oe,\n reorderEntityField: De,\n addReference: Ie,\n removeReference: Me,\n updateReference: Ce,\n addMetadata: we,\n removeMetadata: Ue,\n updateMetadata: Pe,\n reorderMetadata: Fe\n}, oe = \"@iiif/ADD_MAPPING\", ce = \"@iiif/ADD_MAPPINGS\", ke = p(oe)(), qe = p(ce)(), ae = \"@iiif/SET_META_VALUE\", ue = \"@iiif/SET_META_VALUE_DYNAMIC\", de = \"@iiif/UNSET_META_VALUE\", xe = p(ae)(), Ve = p(ue)(), Le = p(de)(), j = {\n setMetaValue: xe,\n setMetaValueDynamic: Ve,\n unsetMetaValue: Le\n}, q = \"RESOURCE_ERROR\", fe = \"RESOURCE_LOADING\", x = \"RESOURCE_READY\", le = \"@iiif/REQUEST_RESOURCE\", he = \"@iiif/REQUEST_ERROR\", pe = \"@iiif/REQUEST_MISMATCH\", ye = \"@iiif/REQUEST_COMPLETE\", Be = \"@iiif/REQUEST_OFFLINE_RESOURCE\", Qe = p(le)(), V = p(he)(), je = p(pe)(), ze = p(ye)(), Q = \"@iiif/BATCH\", Ye = \"@iiif/BATCH_IMPORT\", L = p(Q)(), He = (t, e) => {\n const { entities: i, resource: n, mapping: r } = Ae(e);\n if (n.id === void 0)\n return [V({ id: t, message: \"ID is not defined in resource.\" })];\n const s = [se({ entities: i }), qe({ mapping: r })];\n return n.id !== t && (s.push(ke({ id: t, type: n.type })), s.push(je({ requestId: t, actualId: n.id }))), s.push(ze({ id: t })), s;\n}, z = Number.isNaN || function(e) {\n return typeof e == \"number\" && e !== e;\n};\nfunction Je(t, e) {\n return !!(t === e || z(t) && z(e));\n}\nfunction Y(t, e) {\n if (!Array.isArray(t) || !Array.isArray(e))\n return t === e;\n if (t.length !== e.length)\n return !1;\n for (let i = 0; i < t.length; i++)\n if (!Je(t[i], e[i]))\n return !1;\n return !0;\n}\nfunction w(t, e, i) {\n const n = t.iiif.requests[e], r = t.iiif.mapping[e];\n if (!r || !t.iiif.entities[r][n.resourceUri])\n return;\n const s = t.iiif.entities[r][n.resourceUri];\n if (s && s[I]) {\n const o = s[I].find((u) => i ? u[M] === i.id : u[M] === s.id);\n return $(s, o);\n }\n return s;\n}\nfunction Ge(t) {\n return t && typeof t.then == \"function\";\n}\nfunction H(t, e, { waitTimeout: i = 30 } = {}) {\n return (n, r) => {\n const s = t.getStore(), o = s.getState(), u = o.iiif.requests[n];\n if (u) {\n if (u.loadingState === x) {\n const d = w(o, n);\n if (d)\n return d;\n }\n switch (u.loadingState) {\n case q:\n break;\n case fe:\n return (async () => {\n let d, a = !1;\n try {\n const f = await Promise.race([\n new Promise((S, E) => {\n a || (d = s.subscribe(() => {\n const R = s.getState();\n if (R.iiif.requests[n].loadingState === q) {\n E();\n return;\n }\n if (R.iiif.requests[n].loadingState === x) {\n const y = w(R, n);\n y ? S(y) : E();\n }\n }));\n }),\n new Promise(\n (S, E) => setTimeout(\n () => {\n a = !0, E();\n },\n i * 60 * 1e3\n )\n )\n ]);\n if (d && d(), f)\n return f;\n } catch {\n d && d();\n }\n })();\n }\n }\n t.dispatch(Qe({ id: n }));\n const l = (d) => {\n if (!d)\n return;\n !d.id && !d[\"@id\"] && (d[\"@type\"] && (d[\"@id\"] = n), d.id = n);\n const a = He(n, d);\n return t.dispatch(L({ actions: a })), w(s.getState(), n);\n };\n try {\n const d = e(n, r);\n return Ge(d) ? (async () => {\n try {\n return l(await d);\n } catch (a) {\n throw t.dispatch(V({ id: n, message: a.toString() })), a;\n }\n })() : l(d);\n } catch (d) {\n throw t.dispatch(V({ id: n, message: d.toString() })), d;\n }\n };\n}\nfunction Ee() {\n return {\n Collection: {},\n Manifest: {},\n Canvas: {},\n AnnotationPage: {},\n AnnotationCollection: {},\n Annotation: {},\n ContentResource: {},\n Range: {},\n Service: {},\n Selector: {},\n Agent: {}\n };\n}\nconst J = (t) => {\n let e;\n const i = /* @__PURE__ */ new Set(), n = (l, d) => {\n const a = typeof l == \"function\" ? l(e) : l;\n if (!Object.is(a, e)) {\n const f = e;\n e = d ?? typeof a != \"object\" ? a : Object.assign({}, e, a), i.forEach((S) => S(e, f));\n }\n }, r = () => e, u = { setState: n, getState: r, subscribe: (l) => (i.add(l), () => i.delete(l)), destroy: () => {\n i.clear();\n } };\n return e = t(n, r, u), u;\n}, We = (t) => t ? J(t) : J, $e = (t, e) => (i, n, r) => (r.dispatch = (s) => (i((o) => t(o, s), !1, s), s), r.dispatchFromDevtools = !0, { dispatch: (...s) => r.dispatch(...s), ...e }), Xe = $e, B = /* @__PURE__ */ new Map(), D = (t) => {\n const e = B.get(t);\n return e ? Object.fromEntries(\n Object.entries(e.stores).map(([i, n]) => [i, n.getState()])\n ) : {};\n}, Ke = (t, e, i) => {\n if (t === void 0)\n return {\n type: \"untracked\",\n connection: e.connect(i)\n };\n const n = B.get(i.name);\n if (n)\n return { type: \"tracked\", store: t, ...n };\n const r = {\n connection: e.connect(i),\n stores: {}\n };\n return B.set(i.name, r), { type: \"tracked\", store: t, ...r };\n}, Ze = (t, e = {}) => (i, n, r) => {\n const { enabled: s, anonymousActionType: o, store: u, ...l } = e;\n let d;\n try {\n d = (s ?? !1) && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch {\n }\n if (!d)\n return t(i, n, r);\n const { connection: a, ...f } = Ke(u, d, l);\n let S = !0;\n r.setState = (y, A, h) => {\n const m = i(y, A);\n if (!S)\n return m;\n const C = h === void 0 ? { type: o || \"anonymous\" } : typeof h == \"string\" ? { type: h } : h;\n return u === void 0 ? (a == null || a.send(C, n()), m) : (a == null || a.send(\n {\n ...C,\n type: `${u}/${C.type}`\n },\n {\n ...D(l.name),\n [u]: r.getState()\n }\n ), m);\n };\n const E = (...y) => {\n const A = S;\n S = !1, i(...y), S = A;\n }, R = t(r.setState, n, r);\n if (f.type === \"untracked\" ? a == null || a.init(R) : (f.stores[f.store] = r, a == null || a.init(\n Object.fromEntries(\n Object.entries(f.stores).map(([y, A]) => [\n y,\n y === f.store ? R : A.getState()\n ])\n )\n )), r.dispatchFromDevtools && typeof r.dispatch == \"function\") {\n let y = !1;\n const A = r.dispatch;\n r.dispatch = (...h) => {\n A(...h);\n };\n }\n return a.subscribe((y) => {\n var A;\n switch (y.type) {\n case \"ACTION\":\n if (typeof y.payload != \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return P(\n y.payload,\n (h) => {\n if (h.type === \"__setState\") {\n if (u === void 0) {\n E(h.state);\n return;\n }\n Object.keys(h.state).length !== 1 && console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format. \n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n const m = h.state[u];\n if (m == null)\n return;\n JSON.stringify(r.getState()) !== JSON.stringify(m) && E(m);\n return;\n }\n r.dispatchFromDevtools && typeof r.dispatch == \"function\" && r.dispatch(h);\n }\n );\n case \"DISPATCH\":\n switch (y.payload.type) {\n case \"RESET\":\n return E(R), u === void 0 ? a == null ? void 0 : a.init(r.getState()) : a == null ? void 0 : a.init(D(l.name));\n case \"COMMIT\":\n if (u === void 0) {\n a == null || a.init(r.getState());\n return;\n }\n return a == null ? void 0 : a.init(D(l.name));\n case \"ROLLBACK\":\n return P(y.state, (h) => {\n if (u === void 0) {\n E(h), a == null || a.init(r.getState());\n return;\n }\n E(h[u]), a == null || a.init(D(l.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return P(y.state, (h) => {\n if (u === void 0) {\n E(h);\n return;\n }\n JSON.stringify(r.getState()) !== JSON.stringify(h[u]) && E(h[u]);\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState: h } = y.payload, m = (A = h.computedStates.slice(-1)[0]) == null ? void 0 : A.state;\n if (!m)\n return;\n E(u === void 0 ? m : m[u]), a == null || a.send(\n null,\n // FIXME no-any\n h\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return S = !S;\n }\n return;\n }\n }), R;\n}, et = Ze, P = (t, e) => {\n let i;\n try {\n i = JSON.parse(t);\n } catch (n) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n n\n );\n }\n i !== void 0 && e(i);\n}, tt = (t) => (e, i, n) => {\n const r = n.subscribe;\n return n.subscribe = (o, u, l) => {\n let d = o;\n if (u) {\n const a = (l == null ? void 0 : l.equalityFn) || Object.is;\n let f = o(n.getState());\n d = (S) => {\n const E = o(S);\n if (!a(f, E)) {\n const R = f;\n u(f = E, R);\n }\n }, l != null && l.fireImmediately && u(f, f);\n }\n return r(d);\n }, t(e, i, n);\n}, it = tt, rt = (t = {}, e) => {\n switch (e.type) {\n case oe:\n return {\n ...t,\n [e.payload.id]: e.payload.type\n };\n case ce:\n return {\n ...t,\n ...e.payload.mapping\n };\n default:\n return t;\n }\n};\nfunction U(t, e, i, n) {\n return !(!t[i] || !t[i][e] || !t[i][e][n] || !Array.isArray(t[i][e][n]));\n}\nfunction nt(t, e) {\n const i = {}, n = [];\n for (const [r, s] of Object.entries(t || {})) {\n n.push(r);\n const o = (e || {})[r];\n if (!o || o.length === 0) {\n i[r] = s;\n continue;\n }\n i[r] = o;\n }\n for (const [r, s] of Object.entries(e || {}))\n n.indexOf(r) === -1 && (i[r] = s);\n return i;\n}\nfunction c(t) {\n return t.payload;\n}\nfunction F(t, e) {\n return typeof t > \"u\" ? e : t;\n}\nconst st = (t = Ee(), e) => {\n var n;\n const i = (r, s) => ({\n ...t,\n [c(e).type]: {\n ...t[c(e).type],\n [c(e).id]: {\n ...r,\n ...s\n }\n }\n });\n switch (e.type) {\n case K: {\n if (!t[c(e).type] || !t[c(e).type][c(e).id])\n return t;\n const r = t[c(e).type][c(e).id];\n return typeof r == \"string\" ? t : i(r, { [c(e).key]: c(e).value });\n }\n case Z: {\n if (!U(t, c(e).id, c(e).type, c(e).key))\n return t;\n const r = t[c(e).type][c(e).id];\n if (typeof r == \"string\")\n return t;\n const s = Array.from(r[c(e).key]), [o] = s.splice(c(e).startIndex, 1);\n return s.splice(c(e).endIndex, 0, o), i(r, { [c(e).key]: s });\n }\n case X: {\n const r = Object.keys(c(e).entities), s = { ...t };\n for (const o of r) {\n const u = c(e).entities[o], l = { ...t[o] || {} };\n let d = !1;\n const a = Object.keys(u || {}) || [];\n if (u && a) {\n for (const f of a)\n d = !0, l[f] = t[o][f] ? nt(t[o][f], u[f]) : u[f];\n d && (s[o] = l);\n }\n }\n return s;\n }\n case ee: {\n if (!U(t, c(e).id, c(e).type, c(e).key))\n return t;\n const r = t[c(e).type][c(e).id], s = Array.from(r[c(e).key]);\n return s.splice(F(c(e).index, s.length + 1), 0, c(e).reference), i(r, { [c(e).key]: s });\n }\n case N:\n case te: {\n if (!U(t, c(e).id, c(e).type, c(e).key))\n return t;\n const r = t[c(e).type][c(e).id], s = Array.from(r[c(e).key]), o = F(\n c(e).index,\n s.findIndex((u) => u && u.id === c(e).reference.id)\n );\n return o === -1 || ((n = s[o]) == null ? void 0 : n.id) !== c(e).reference.id ? t : (e.type === N ? s.splice(o, 1, c(e).reference) : s.splice(o, 1), i(r, { [c(e).key]: s }));\n }\n case ie: {\n const r = t[c(e).type][c(e).id];\n if (!r)\n return t;\n const s = Array.from(r.metadata || []), o = c(e);\n return s.splice(F(e.payload.beforeIndex, s.length + 1), 0, {\n label: o.label,\n value: o.label\n }), i(r, { metadata: s });\n }\n case ne: {\n const r = t[c(e).type][c(e).id];\n if (typeof r == \"string\" || !r)\n return t;\n const s = Array.from(r.metadata || []), [o] = s.splice(c(e).startIndex, 1);\n return s.splice(c(e).endIndex, 0, o), i(r, { metadata: s });\n }\n case k:\n case re: {\n const r = t[c(e).type][c(e).id], s = Array.from(r.metadata || []), o = c(e).atIndex;\n return typeof o > \"u\" || o === -1 || !s[o] ? t : (e.type === k ? s.splice(o, 1, { label: c(e).label, value: c(e).value }) : s.splice(o, 1), i(r, { metadata: s }));\n }\n default:\n return t;\n }\n}, ot = (t = {}, e) => {\n switch (e.type) {\n case le:\n case Be:\n return {\n ...t,\n [e.payload.id]: {\n requestUri: e.payload.id,\n loadingState: fe,\n uriMismatch: !1,\n resourceUri: e.payload.id\n }\n };\n case pe:\n return {\n ...t,\n [e.payload.requestId]: {\n ...t[e.payload.requestId] || {},\n uriMismatch: !0,\n resourceUri: e.payload.actualId\n },\n [e.payload.actualId]: {\n requestUri: e.payload.requestId,\n loadingState: t[e.payload.requestId].loadingState,\n uriMismatch: !0,\n resourceUri: e.payload.actualId\n }\n };\n case he:\n return {\n ...t,\n [e.payload.id]: {\n ...t[e.payload.id] || {},\n loadingState: q,\n error: e.payload.message\n }\n };\n case ye:\n return {\n ...t,\n [e.payload.id]: {\n ...t[e.payload.id] || {},\n loadingState: x,\n error: void 0\n }\n };\n }\n return t;\n}, ct = (t = {}, e) => {\n const { id: i, updateValue: n, value: r, meta: s, key: o } = e && e.payload || {};\n switch (e.type) {\n case ae:\n return {\n ...t,\n [i]: {\n ...t[i] || {},\n [s]: {\n ...t[i] ? t[i][s] || {} : {},\n [o]: r\n }\n }\n };\n case ue:\n return {\n ...t,\n [i]: {\n ...t[i] || {},\n [s]: {\n ...t[i] ? t[i][s] || {} : {},\n [o]: t[i] && t[i][s] ? n(t[i][s][o]) : n(void 0)\n }\n }\n };\n case de:\n return t[i] && t[i][s] && t[i][s][o] ? {\n ...t,\n [i]: {\n ...t[i] || {},\n [s]: {\n ...t[i] ? t[i][s] || {} : {},\n [o]: void 0\n }\n }\n } : t;\n default:\n return t;\n }\n};\nfunction Se(t = {}) {\n const e = Object.keys(t);\n return function(n = {}, r) {\n let s = !1;\n const o = {};\n for (let u = 0; u < e.length; u++) {\n const l = e[u];\n o[l] = t[l](n[l], r), s = s || o[l] !== n[l];\n }\n return s ? o : n;\n };\n}\nfunction at(t) {\n return (e, i) => i && i.type === Q ? i.payload.actions.reduce(t, e) : i && i.type === Ye ? {\n ...e,\n iiif: {\n ...e.iiif,\n ...i.payload.state\n }\n } : t(e, i);\n}\nconst ut = Se({\n mapping: rt,\n entities: st,\n requests: ot,\n meta: ct\n});\nfunction dt() {\n return {\n iiif: {\n entities: Ee(),\n meta: {},\n mapping: {},\n requests: {}\n }\n };\n}\nfunction ft(t = {}) {\n const {\n enableDevtools: e = !1,\n iiifStoreName: i = \"iiif\",\n defaultState: n = dt(),\n customReducers: r = {}\n } = t, s = at(Se({ [i]: ut, ...r }));\n return We(it(et(Xe(s, n), { enabled: e })));\n}\nfunction lt(t) {\n return { all: t = t || /* @__PURE__ */ new Map(), on: function(e, i) {\n var n = t.get(e);\n n ? n.push(i) : t.set(e, [i]);\n }, off: function(e, i) {\n var n = t.get(e);\n n && (i ? n.splice(n.indexOf(i) >>> 0, 1) : t.set(e, []));\n }, emit: function(e, i) {\n var n = t.get(e);\n n && n.slice().map(function(r) {\n r(i);\n }), (n = t.get(\"*\")) && n.slice().map(function(r) {\n r(e, i);\n });\n } };\n}\nfunction g(t, e, i, n = !0) {\n e[O] = e[O] || [], e[O].push(t);\n const r = /* @__PURE__ */ new Map();\n Object.defineProperty(e, t, {\n enumerable: n,\n get() {\n if (typeof e[T][t] > \"u\")\n return;\n const s = e[T][t];\n if (!s)\n return s;\n const o = i.get(e[T][t], {\n parent: this.id ? { id: this.id, type: this.type } : void 0\n });\n return r.has(o) || (r.clear(), r.set(o, b(o, i))), r.get(o);\n },\n set(s) {\n e[T][t] !== s && (this[v] ? i.modifyEntityField({ id: this.id, type: this.type }, t, ge(s)) : this[T][t] = s);\n }\n });\n}\nconst T = Symbol.for(\"_refs_\"), v = Symbol.for(\"_reactive_\"), O = Symbol.for(\"_defined_\"), G = Symbol.for(\"_parent_\");\nfunction ht(t, e = !1, i) {\n const n = {\n id: \"\",\n type: \"unknown\",\n [O]: [],\n [T]: {},\n [G]: i || null,\n [v]: null,\n is(r) {\n return typeof r == \"string\" ? this.id === r : r.id ? r.id === this.id : !1;\n },\n reactive() {\n if (!this[v])\n return this[v] = this.subscribe(() => this.refresh(), !0), () => {\n this.unreactive();\n };\n },\n refresh() {\n if (this.id) {\n const r = this.unwrap();\n for (const s of Object.keys(r || {}))\n this[O].includes(s) ? this[T][s] = r[s] : this[s] = r[s];\n }\n },\n unreactive() {\n this[v] && (this[v](), this[v] = null);\n },\n unwrap() {\n if (!this.id)\n throw new Error(\"Invalid object\");\n const r = this[G];\n return t.get(this.id, { parent: r ? { id: r, type: \"unknown\" } : void 0 });\n },\n toPresentation3() {\n return t.toPresentation3(this.unwrap());\n },\n toPresentation2() {\n return t.toPresentation2(this.unwrap());\n },\n valueOf() {\n return this.unwrap();\n },\n toJSON() {\n const r = this;\n return {\n ...r,\n items: r.items,\n annotations: r.annotations,\n structures: r.structures,\n seeAlso: r.seeAlso,\n service: r.service,\n services: r.services,\n rendering: r.rendering,\n partOf: r.partOf,\n start: r.start,\n supplementary: r.supplementary,\n homepage: r.homepage,\n thumbnail: r.thumbnail,\n placeholderCanvas: r.placeholderCanvas,\n accompanyingCanvas: r.accompanyingCanvas,\n provider: r.provider\n };\n },\n subscribe(r, s = !0) {\n return t.subscribe(\n () => this.id ? t.get(this.id) : null,\n r,\n s\n );\n }\n };\n return g(\"items\", n, t), g(\"annotations\", n, t), g(\"structures\", n, t), g(\"seeAlso\", n, t), g(\"rendering\", n, t), g(\"partOf\", n, t), g(\"start\", n, t, !1), g(\"supplementary\", n, t), g(\"homepage\", n, t), g(\"thumbnail\", n, t), g(\"placeholderCanvas\", n, t, !1), g(\"accompanyingCanvas\", n, t, !1), g(\"provider\", n, t), g(\"body\", n, t), g(\"logo\", n, t), n;\n}\nfunction pt(t) {\n return !!t[O];\n}\nfunction ge(t) {\n return Array.isArray(t) ? t.map((e) => ge(e)) : !t || !t.type ? t : { id: t.id, type: t.type };\n}\nfunction b(t, e, i = !1, n) {\n if (Array.isArray(t))\n return t.map((u) => b(u, e, i));\n if (!t || !t.type || !t.id)\n return t;\n const r = ht(e, i), s = Object.create(r), o = Object.assign(s, t);\n return i && o.reactive(), o;\n}\nfunction W(t) {\n switch (t) {\n case \"Image\":\n case \"Video\":\n case \"Sound\":\n case \"Dataset\":\n case \"Text\":\n case \"Composite\":\n case \"List\":\n case \"Independents\":\n case \"Audience\":\n return \"ContentResource\";\n case \"ImageService1\":\n case \"ImageService2\":\n case \"ImageService3\":\n return \"Service\";\n }\n return t;\n}\nclass yt {\n constructor(e, i) {\n _(this, \"options\");\n _(this, \"store\");\n _(this, \"emitter\");\n _(this, \"isBatching\", !1);\n _(this, \"batchQueue\", []);\n _(this, \"remoteFetcher\");\n _(this, \"staticFetcher\");\n _(this, \"defaultFetcher\", (e) => fetch(e).then((i) => i.json()));\n this.options = Object.assign(\n {\n reducers: {},\n customFetcher: this.defaultFetcher,\n enableDevtools: !0\n },\n e || {}\n ), this.store = i || ft({\n customReducers: this.options.reducers,\n defaultState: this.options.defaultState,\n enableDevtools: this.options.enableDevtools\n }), this.emitter = lt(), this.remoteFetcher = H(this, this.options.customFetcher), this.staticFetcher = H(this, (n, r) => r);\n }\n batch(e) {\n this.isBatching = !0;\n try {\n e(this), this.isBatching = !1, this.dispatch(L({ actions: this.batchQueue }));\n } catch (i) {\n throw this.batchQueue = [], this.isBatching = !1, i;\n }\n this.batchQueue = [];\n }\n async asyncBatch(e) {\n this.isBatching = !0;\n try {\n await e(this), this.isBatching = !1, this.dispatch(L({ actions: this.batchQueue }));\n } catch (i) {\n throw this.batchQueue = [], this.isBatching = !1, i;\n }\n this.batchQueue = [];\n }\n modifyEntityField(e, i, n) {\n this.dispatch(\n Ne.modifyEntityField({\n id: e.id,\n type: e.type,\n key: i,\n value: n\n })\n );\n }\n dispatch(e) {\n if (this.isBatching)\n this.batchQueue.push(e);\n else {\n if (e.type === Q) {\n for (const r of e.payload.actions)\n this.emitter.emit(r.type, { action: r, state: this.store.getState() });\n this.store.dispatch(e);\n const n = this.getState();\n for (const r of e.payload.actions)\n this.emitter.emit(`after:${r.type}`, { action: r, state: n });\n return;\n }\n this.emitter.emit(e.type, { action: e, state: this.store.getState() }), this.store.dispatch(e);\n const i = this.store.getState();\n this.emitter.emit(`after:${e.type}`, { action: e, state: i });\n return;\n }\n }\n on(e, i) {\n return this.emitter.on(e, i), () => {\n this.emitter.off(e, i);\n };\n }\n serialize(e, i) {\n return _e(this.getState().iiif, e, i);\n }\n toPresentation2(e) {\n return this.serialize(e, ve);\n }\n toPresentation3(e) {\n return this.serialize(e, Te);\n }\n hydrate(e, i, n = {}) {\n return this.get(e, i, { ...n, skipSelfReturn: !1 });\n }\n get(e, i, n = {}) {\n typeof i != \"string\" && (n = i || {}, i = void 0);\n const { skipSelfReturn: r = !0 } = n || {};\n let s = n.parent ? typeof n.parent == \"string\" ? n.parent : n.parent.id : void 0;\n if (Array.isArray(e))\n return e.map((f) => this.get(f, n));\n const o = this.getState();\n if (be(e) && !n.preserveSpecificResources && (e = e.source), typeof e == \"string\") {\n const f = W(i || o.iiif.mapping[e]);\n if (!f)\n return r ? null : { id: e, type: \"unknown\" };\n e = { id: e, type: f };\n }\n if (e && e.partOf && !s && !n.skipPartOfCheck) {\n const f = Array.isArray(e.partOf) ? e.partOf[0] : e.partOf;\n f && (typeof f == \"string\" && (s = f), typeof f.id == \"string\" && (s = f.id));\n }\n const u = W(i || (e == null ? void 0 : e.type)), l = e == null ? void 0 : e.id, d = o.iiif.entities[u];\n if (!d) {\n const f = o.iiif.requests[l];\n return f && f.resourceUri !== l ? this.get(f.resourceUri, n) : r ? null : e;\n }\n const a = d[e.id];\n if (a && a[I]) {\n const f = a[I].find((S) => s ? S[M] === s : S[M] === a.id);\n return $(a, f);\n }\n return d[e.id] || (r ? null : e);\n }\n select(e) {\n return e(this.getState());\n }\n getStore() {\n return this.store;\n }\n getState() {\n return this.store.getState();\n }\n deep(e, i) {\n if (typeof e > \"u\")\n return this.get(i, { skipSelfReturn: !1 });\n if (typeof e == \"function\")\n try {\n const r = e(this.get(i, { skipSelfReturn: !1 })), s = (o) => this.deep(o, r);\n return s.size = Array.isArray(r) ? r.length : 1, s;\n } catch {\n const s = (o) => this.deep(o, void 0);\n return s.size = 0, s;\n }\n const n = (r) => this.deep(r, e);\n return n.size = Array.isArray(e) ? e.length : 1, n;\n }\n loadManifest(e, i) {\n const n = typeof e == \"string\" ? e : e.id;\n return this.load(n, i);\n }\n loadCollection(e, i) {\n const n = typeof e == \"string\" ? e : e.id;\n return this.load(n, i);\n }\n load(e, i) {\n const n = typeof e == \"string\" ? e : e.id;\n return i ? Promise.resolve(this.staticFetcher(n, i)) : Promise.resolve(this.remoteFetcher(n));\n }\n loadSync(e, i) {\n const n = typeof e == \"string\" ? e : e.id;\n return this.staticFetcher(n, i);\n }\n loadManifestSync(e, i) {\n const n = typeof e == \"string\" ? e : e.id;\n return this.loadSync(n, i);\n }\n loadCollectionSync(e, i) {\n const n = typeof e == \"string\" ? e : e.id;\n return this.loadSync(n, i);\n }\n areInputsEqual(e, i) {\n return Y(e, i);\n }\n subscribe(e, i, n) {\n return typeof n > \"u\" && (typeof i > \"u\" || i === !1 || i === !0) && (n = i, i = e, e = (r) => r), this.store.subscribe(e, (r) => i(r, this), {\n equalityFn: Y,\n fireImmediately: !n\n });\n }\n async ensureLoaded(e) {\n const i = typeof e == \"string\" ? e : e.id;\n this.requestStatus(i) || await this.load(i);\n }\n requestStatus(e) {\n return this.select((i) => i.iiif.requests[e]);\n }\n getResourceMeta(e, i) {\n const n = this.getState().iiif.meta[e];\n if (n)\n return i ? n[i] : n;\n }\n getObject(e, i, n = {}) {\n const { reactive: r, ...s } = n;\n return b(this.get(e, i, s), this, r);\n }\n async loadObject(e, i) {\n return b(await this.load(e, i), this);\n }\n async loadManifestObject(e, i) {\n return b(await this.loadManifest(e, i), this);\n }\n async loadCollectionObject(e, i) {\n return b(await this.loadCollection(e, i), this);\n }\n wrapObject(e) {\n return b(this.get(e, { skipSelfReturn: !1 }), this);\n }\n isWrapped(e) {\n return pt(e);\n }\n setMetaValue([e, i, n], r) {\n this.dispatch(\n typeof r == \"function\" ? j.setMetaValueDynamic({\n id: e,\n meta: i,\n key: n,\n updateValue: r\n }) : j.setMetaValue({\n id: e,\n meta: i,\n key: n,\n value: r\n })\n );\n }\n}\nfunction Et() {\n return typeof self < \"u\" ? self : typeof window < \"u\" ? window : typeof global < \"u\" ? global : {};\n}\nfunction mt(t) {\n const e = Et();\n try {\n const n = e.IIIF_VAULT;\n if (n)\n return n;\n } catch {\n }\n const i = new yt(t);\n try {\n e.IIIF_VAULT = i;\n } catch {\n }\n return i;\n}\nexport {\n yt as Vault,\n mt as globalVault\n};\n//# sourceMappingURL=vault.mjs.map\n","import React, { ReactElement, ReactNode, useState } from 'react';\nimport { Vault, VaultOptions, globalVault } from '@iiif/helpers/vault';\nimport { ResourceContextType, ResourceProvider } from './ResourceContext';\n\nexport const ReactVaultContext = React.createContext<{\n vault: Vault | null;\n setVaultInstance: (vault: Vault) => void;\n}>({\n vault: null,\n setVaultInstance: (vault: Vault) => {\n // Do nothing.\n },\n});\n\nexport function VaultProvider({\n vault,\n vaultOptions,\n useGlobal,\n resources,\n children,\n}: {\n vault?: Vault;\n useGlobal?: boolean;\n vaultOptions?: VaultOptions;\n resources?: ResourceContextType;\n children: ReactNode;\n}) {\n const [vaultInstance, setVaultInstance] = useState<Vault>(() => {\n if (vault) {\n return vault;\n }\n if (useGlobal) {\n return globalVault(vaultOptions);\n }\n if (vaultOptions) {\n return new Vault(vaultOptions);\n }\n return new Vault();\n });\n\n return (\n <ReactVaultContext.Provider value={{ vault: vaultInstance, setVaultInstance }}>\n <ResourceProvider value={resources || {}}>{children}</ResourceProvider>\n </ReactVaultContext.Provider>\n );\n}\n","import { ReactVaultContext } from '../context/VaultContext';\nimport { useContext } from 'react';\nimport { Vault } from '@iiif/helpers/vault';\n\nexport const useVault = (): Vault => {\n const { vault } = useContext(ReactVaultContext);\n\n if (vault === null) {\n throw new Error('Vault not found. Ensure you have your provider set up correctly.');\n }\n\n return vault as Vault;\n};\n","import { useVault } from './useVault';\nimport { useEffect, useMemo, useState } from 'react';\n\nexport type ResourceRequestOptions = {\n noCache?: boolean;\n};\n\nexport function useExternalResource<T extends { id: string }>(\n idOrRef: string | { id: string; type: string },\n { noCache = false }: ResourceRequestOptions = {}\n): {\n id: string;\n requestId: string;\n isLoaded: boolean;\n error: any;\n cached: boolean;\n resource?: T;\n} {\n const id = typeof idOrRef === 'string' ? idOrRef : idOrRef.id;\n const vault = useVault();\n const [realId, setRealId] = useState(id);\n const [error, setError] = useState<Error | undefined>(undefined);\n const initialData = useMemo(() => {\n return vault.get(id, { skipSelfReturn: true }) || undefined;\n }, [id, vault]);\n const [resource, setResource] = useState<T | undefined>(initialData);\n\n useEffect(() => {\n (async () => {\n try {\n const fetchedResource = initialData && !noCache ? initialData : await vault.load<T>(id);\n const _realId = fetchedResource ? fetchedResource.id || (fetchedResource as any)['@id'] : null;\n if (fetchedResource && realId !== _realId) {\n setRealId(_realId);\n }\n\n setResource(fetchedResource);\n } catch (err) {\n setError(err as Error);\n }\n })();\n }, [id, noCache]);\n\n return {\n isLoaded: !!resource,\n id: realId,\n requestId: id,\n error,\n resource,\n cached: !!(resource && resource === initialData),\n };\n}\n","import { ManifestNormalized } from '@iiif/presentation-3-normalized';\nimport { ResourceRequestOptions, useExternalResource } from './useExternalResource';\n\nexport function useExternalManifest(\n idOrRef: string | { id: string; type: string },\n options?: ResourceRequestOptions\n): {\n id: string;\n requestId: string;\n isLoaded: boolean;\n cached?: boolean;\n error: any;\n manifest?: ManifestNormalized;\n} {\n const { id, isLoaded, error, resource, requestId, cached } = useExternalResource<ManifestNormalized>(\n idOrRef,\n options\n );\n\n return { id, isLoaded, error, manifest: resource, requestId, cached };\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function ManifestContext({ manifest, children }: { manifest: string; children: ReactNode }) {\n return <ResourceProvider value={{ manifest }}>{children}</ResourceProvider>;\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function CanvasContext({ canvas, children }: { canvas: string; children: ReactNode }) {\n return <ResourceProvider value={{ canvas }}>{children}</ResourceProvider>;\n}\n","import { useVault } from './useVault';\nimport { IIIFStore, Vault } from '@iiif/helpers/vault';\nimport { useEffect, useState } from 'react';\n\nexport function useVaultSelector<T>(selector: (state: IIIFStore, vault: Vault) => T, deps: any[] = []) {\n const vault = useVault();\n const [selectedState, setSelectedState] = useState<T>(() => selector(vault.getState(), vault));\n\n useEffect(() => {\n return vault.subscribe(\n (s) => selector(s, vault),\n (s) => {\n setSelectedState(s);\n },\n false\n );\n }, deps);\n\n return selectedState as T;\n}\n","import { useContext } from 'react';\nimport React from 'react';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { useVaultSelector } from '../hooks/useVaultSelector';\n\nexport const VisibleCanvasReactContext = React.createContext<string[]>([]);\n\nexport function useVisibleCanvases(): CanvasNormalized[] {\n const ids = useContext(VisibleCanvasReactContext);\n\n return useVaultSelector<CanvasNormalized[]>(\n (state) => {\n return ids.map((id) => state.iiif.entities.Canvas[id]).filter(Boolean);\n },\n [ids]\n );\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { ManifestNormalized } from '@iiif/presentation-3-normalized';\nimport { useVault } from './useVault';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useManifest(options?: { id: string }): ManifestNormalized | undefined;\nexport function useManifest<T>(\n options?: { id: string; selector: (manifest: ManifestNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useManifest<T = ManifestNormalized>(\n options: {\n id?: string;\n selector?: (manifest: ManifestNormalized) => T;\n } = {},\n deps: any[] = []\n): ManifestNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const vault = useVault();\n const manifestId = id ? id : ctx.manifest;\n\n const manifest = useVaultSelector(\n (s) => (manifestId ? s.iiif.entities.Manifest[manifestId] : undefined),\n [manifestId]\n );\n\n return useMemo(() => {\n if (!manifest) {\n return undefined;\n }\n if (selector) {\n return selector(manifest);\n }\n return manifest;\n }, [manifest, selector, ...deps]);\n}\n","import { ResourceProvider } from './ResourceContext';\nimport React, { ReactNode } from 'react';\n\nexport function RangeContext({ range, children }: { range: string; children: ReactNode }) {\n return <ResourceProvider value={{ range }}>{children}</ResourceProvider>;\n}\n","import { Vault } from '@iiif/helpers/vault';\nimport { ManifestNormalized, RangeNormalized } from '@iiif/presentation-3-normalized';\nimport { Reference } from '@iiif/presentation-3';\n\nexport function findFirstCanvasFromRange(vault: Vault, range: RangeNormalized): null | Reference<'Canvas'> {\n for (const inner of range.items) {\n if ((inner as any).type === 'Canvas') {\n return inner as any as Reference<'Canvas'>;\n }\n if (inner.type === 'SpecificResource') {\n return inner.source as Reference<'Canvas'>;\n }\n if (inner.type === 'Range') {\n const found = findFirstCanvasFromRange(vault, vault.get(inner));\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n\nexport function findAllCanvasesInRange(vault: Vault, range: RangeNormalized): Array<Reference<'Canvas'>> {\n const found: Reference<'Canvas'>[] = [];\n for (const inner of range.items) {\n if (inner.type === 'SpecificResource' && inner.source?.type === 'Canvas') {\n if (inner.source.id.indexOf('#') !== -1) {\n found.push({ id: inner.source.id.split('#')[0], type: 'Canvas' });\n } else {\n found.push(inner.source as Reference<'Canvas'>);\n }\n }\n if (inner.type === 'Range') {\n found.push(...findAllCanvasesInRange(vault, vault.get(inner)));\n }\n if ((inner as any).type === 'SpecificResource') {\n const sourceId = typeof (inner as any).source === 'string' ? (inner as any).source : (inner as any).source.id;\n found.push({ id: sourceId, type: 'Canvas' });\n }\n }\n return found;\n}\n\nexport function findManifestSelectedRange(\n vault: Vault,\n manifest: ManifestNormalized,\n canvasId: string\n): null | RangeNormalized {\n for (const range of manifest.structures) {\n const found = findSelectedRange(vault, vault.get(range), canvasId);\n if (found) {\n return found;\n }\n }\n\n return null;\n}\n\nexport function findSelectedRange(vault: Vault, range: RangeNormalized, canvasId: string): null | RangeNormalized {\n for (const inner of range.items) {\n const parsedId = (inner as any)?.source?.id?.split('#')[0];\n if ((inner as any).type === 'SpecificResource' && (inner as any).source === canvasId) {\n return range;\n }\n if (inner.type === 'SpecificResource' && inner.source?.type === 'Canvas' && canvasId === parsedId) {\n return range;\n }\n if (inner.type === 'Range') {\n const found = findSelectedRange(vault, vault.get(inner), canvasId);\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n","import { CanvasNormalized, ManifestNormalized, RangeNormalized } from '@iiif/presentation-3-normalized';\nimport { Reference } from '@iiif/presentation-3';\nimport { Vault } from '@iiif/helpers/vault';\nimport { findAllCanvasesInRange } from './ranges';\n\n/**\n * Get visible canvases from canvas ID\n *\n * This function returns a list of canvas references that should all be displayed\n * when the passed canvasId is visible. This should work for individual items,\n * 2-up paged view and continuous (scrolls).\n *\n * The options are listed below (from IIIF docs)\n *\n * - `unordered` - Valid on Collections, Manifests and Ranges. The Canvases included in resources that have this behavior\n * have no inherent order, and user interfaces should avoid implying an order to the user. Disjoint with individuals,\n * continuous, and paged.\n *\n * - `individuals` - Valid on Collections, Manifests, and Ranges. For Collections that have this behavior, each of the\n * included Manifests are distinct objects in the given order. For Manifests and Ranges, the included Canvases are\n * distinct views, and should not be presented in a page-turning interface. This is the default layout behavior if\n * not specified. Disjoint with unordered, continuous, and paged.\n *\n * - `continuous` Valid on Collections, Manifests and Ranges, which include Canvases that have at least height and\n * width dimensions. Canvases included in resources that have this behavior are partial views and an appropriate\n * rendering might display all of the Canvases virtually stitched together, such as a long scroll split into\n * sections. This behavior has no implication for audio resources. The viewingDirection of the Manifest will\n * determine the appropriate arrangement of the Canvases. Disjoint with unordered, individuals and paged.\n *\n * - `paged` Valid on Collections, Manifests and Ranges, which include Canvases that have at least height and width\n * dimensions. Canvases included in resources that have this behavior represent views that should be presented in\n * a page-turning interface if one is available. The first canvas is a single view (the first recto) and thus the\n * second canvas likely represents the back of the object in the first canvas. If this is not the case, see the\n * behavior value non-paged. Disjoint with unordered, individuals, continuous, facing-pages and non-paged.\n *\n */\nexport function getVisibleCanvasesFromCanvasId(\n vault: Vault,\n manifestOrRange: ManifestNormalized | RangeNormalized,\n canvasId: string | null,\n preventPaged = false\n): Reference<'Canvas'>[] {\n const behavior = manifestOrRange.behavior;\n const fullCanvas = canvasId ? vault.get<CanvasNormalized>(canvasId) : null;\n if (!fullCanvas) {\n return [];\n }\n\n const canvasBehavior = fullCanvas.behavior;\n const isPaged = preventPaged ? false : behavior.includes('paged');\n const isContinuous = isPaged ? false : behavior.includes('continuous');\n const isIndividuals = isPaged || isContinuous ? false : behavior.includes('individuals');\n const isCanvasFacingPages = canvasBehavior.includes('facing-pages');\n const isCanvasNonPaged = canvasBehavior.includes('non-paged');\n\n // Individuals should just be the default.\n if (isCanvasFacingPages || isCanvasNonPaged || isIndividuals || preventPaged) {\n return [{ id: fullCanvas.id, type: 'Canvas' }];\n }\n\n const [manifestItems, ordering] = getManifestSequence(vault, manifestOrRange);\n\n // Continuous should just return all items together.\n if (isContinuous) {\n return manifestItems;\n }\n\n const canvasIndex = manifestItems.findIndex((r) => r.id === canvasId);\n if (canvasIndex === -1) {\n return [];\n }\n\n for (const indexes of ordering) {\n if (indexes.includes(canvasIndex)) {\n return indexes.map((index) => manifestItems[index]);\n }\n }\n\n return [{ id: fullCanvas.id, type: 'Canvas' }];\n}\n\nexport function getManifestSequence(\n vault: Vault,\n manifestOrRange: ManifestNormalized | RangeNormalized,\n { disablePaging, skipNonPaged }: { disablePaging?: boolean; skipNonPaged?: boolean } = {}\n): [Reference<'Canvas'>[], number[][]] {\n const behavior = manifestOrRange.behavior;\n const isPaged = behavior.includes('paged');\n const isContinuous = isPaged ? false : behavior.includes('continuous');\n const isIndividuals = isPaged || isContinuous ? false : behavior.includes('individuals');\n const manifestItems =\n manifestOrRange.type === 'Manifest' ? manifestOrRange.items : findAllCanvasesInRange(vault, manifestOrRange);\n\n // Continuous should just return all items together.\n if (isContinuous) {\n return [manifestItems, [manifestItems.map((_, index) => index)]];\n }\n\n // Individuals should just be the default.\n if (isIndividuals || !isPaged || disablePaging) {\n return [manifestItems, manifestItems.map((_, index) => [index])];\n }\n\n // This is the tricky case.\n const ordering: number[][] = [];\n let currentOrdering: number[] = [];\n\n const flush = () => {\n if (currentOrdering.length) {\n ordering.push([...currentOrdering]);\n currentOrdering = [];\n }\n };\n\n let offset = 0;\n let flushNextPaged = false;\n for (let i = 0; i < manifestItems.length; i++) {\n const canvas = vault.get<CanvasNormalized>(manifestItems[i]);\n if (canvas.behavior.includes('non-paged')) {\n if (i === offset) {\n offset++;\n }\n if (!skipNonPaged) {\n flush();\n ordering.push([i]);\n flush();\n }\n continue;\n }\n\n if (i === offset || canvas.behavior.includes('facing-pages')) {\n // Flush and push a single.\n if (currentOrdering.length) {\n flushNextPaged = true;\n }\n flush();\n ordering.push([i]);\n flush();\n continue;\n }\n\n currentOrdering.push(i);\n\n if (flushNextPaged) {\n flush();\n flushNextPaged = false;\n continue;\n }\n\n if (currentOrdering.length > 1) {\n flush();\n }\n }\n\n if (currentOrdering.length) {\n flush();\n }\n\n return [manifestItems, ordering];\n}\n","// This is valid under a range context.\nimport { useResourceContext } from '../context/ResourceContext';\nimport { RangeNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useRange(options?: { id: string }): RangeNormalized | undefined;\nexport function useRange<T>(\n options?: { id: string; selector: (range: RangeNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useRange<T = RangeNormalized>(\n options: {\n id?: string;\n selector?: (range: RangeNormalized) => T;\n } = {},\n deps: any[] = []\n): RangeNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const rangeId = id ? id : ctx.range;\n\n const range = useVaultSelector((s) => (rangeId ? s.iiif.entities.Range[rangeId] : undefined), [rangeId]);\n\n return useMemo(() => {\n if (!range) {\n return undefined;\n }\n if (selector) {\n return selector(range);\n }\n return range;\n }, [range, selector, ...deps]);\n}\n","import { getManifestSequence } from '../future-helpers/sequences';\nimport { useManifest } from '../hooks/useManifest';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useRange } from '../hooks/useRange';\nimport { useVault } from '../hooks/useVault';\n\nexport function useCanvasSequence({ startCanvas, disablePaging }: { startCanvas?: string; disablePaging?: boolean }) {\n const vault = useVault();\n const manifest = useManifest();\n const range = useRange();\n const [cursor, setCursor] = useState<number>(undefined as any);\n const rangeOrManifest = range ? range : manifest;\n\n if (!rangeOrManifest) {\n throw new Error('Nothing selected');\n }\n\n const [items, initialSequence] = useMemo(\n () => getManifestSequence(vault, rangeOrManifest, { disablePaging }),\n [vault, rangeOrManifest]\n );\n\n const setCanvasIndex = useCallback(\n (index: number) => {\n const foundSequence = initialSequence.findIndex((i) => i.includes(index));\n setCursor(foundSequence === -1 ? 0 : foundSequence);\n },\n [items, initialSequence]\n );\n\n const setCanvasId = useCallback(\n (id: string) => {\n const foundIndex = items.findIndex((i) => i.id === id);\n if (foundIndex !== -1) {\n setCanvasIndex(foundIndex);\n } else {\n setCursor(0);\n }\n },\n [items, initialSequence]\n );\n\n const next = useCallback(() => {\n setCursor((i) => {\n if (i >= initialSequence.length) {\n return i;\n }\n return i + 1;\n });\n }, [initialSequence]);\n\n const previous = useCallback(() => {\n setCursor((i) => {\n if (i <= 0) {\n return 0;\n }\n return i - 1;\n });\n }, [initialSequence]);\n\n // Need to set an initial cursor from the canvasId (if it's valid)\n if (typeof cursor === 'undefined') {\n if (startCanvas) {\n setCanvasId(startCanvas);\n } else {\n setCursor(0);\n }\n }\n\n return {\n visibleItems: initialSequence[cursor]?.map((idx) => items[idx].id) || [],\n cursor,\n items,\n sequence: initialSequence,\n setSequenceIndex: setCursor,\n setCanvasIndex,\n setCanvasId,\n next,\n previous,\n };\n}\n","import React, { ReactNode, useCallback, useContext, useEffect } from 'react';\n/**\n * Simple viewer context\n * *****************************************************************************\n *\n * This will be the context to use to get a basic IIIF viewer up and running.\n * It will not focus on having compatibility with the full range of IIIF\n * resources, instead offering a viewer for a Manifest, cycling through canvases\n * while ignoring the paged/facing-pages/continuous behaviors.\n *\n * There will not be support for canvas-on-canvas annotations. Annotations will\n * be filtered, giving details of the canvas space and images to be annotated\n * onto that space. The demo implementation of this viewer will use\n * OpenSeadragon to display.\n *\n * Navigation functions will include the basics:\n * - nextCanvas()\n * - previousCanvas()\n * - goToCanvas(id)\n * - goToCanvasIndex(idx)\n * - goToFirstCanvas()\n * - goToLastCanvas()\n *\n * It will take in only a Manifest ID and will load that Manifest when the\n * context loads.\n *\n * There will be no support for external or embedded annotation lists, although\n * you can set up a nested context to support this.\n *\n * There will be no support for ranges in this view.\n *\n * To use this component, first you will need the provider:\n * import { SimpleViewerProvider } from '...';\n *\n * <SimpleViewerProvider id=\"http://example.org/manifest.json\">\n * <CustomComponent />\n * </SimpleViewerProvider>\n *\n * This is in addition to the core Vault context further up the tree.\n *\n * In components that you want to use parts of the state you can grab the hooks\n * from this file.\n *\n * import { useSimpleViewer } from '...';\n *\n * And use them in your components to get the actions.\n *\n * function NextButton() {\n * const { nextCanvas } = useSimpleViewer();\n *\n * return <button onClick={nextCanvas}>Next</button>;\n * }\n *\n * Since this is a single-context, there is only ever one manifest, canvas and\n * annotation list. You can access the current resource using the normal hooks.\n *\n * function CanvasMetadata() {\n * const metadata = useCanvas(metadataSelector);\n *\n * return <div> ... </div>\n * }\n *\n * So long as this is inside the provider, it will have the correct context.\n */\nimport { createContext, FC, useMemo, useState } from 'react';\nimport { useExternalManifest } from '../hooks/useExternalManifest';\nimport { ManifestContext } from '../context/ManifestContext';\nimport { CanvasContext } from '../context/CanvasContext';\nimport { VisibleCanvasReactContext } from '../context/VisibleCanvasContext';\nimport { useManifest } from '../hooks/useManifest';\nimport { SimpleViewerContext, SimpleViewerProps } from './SimpleViewerContext.types';\nimport { RangeContext } from '../context/RangeContext';\nimport { useCanvasSequence } from './SimpleViewerContext.hooks';\n\nconst noop = () => {\n //\n};\n\nexport const SimpleViewerReactContext = createContext<SimpleViewerContext>({\n setCurrentCanvasId: noop,\n setCurrentCanvasIndex: noop,\n nextCanvas: noop,\n previousCanvas: noop,\n items: [],\n sequence: [],\n setSequenceIndex: noop,\n currentSequenceIndex: 0,\n});\n\nexport function InnerViewerProvider(props: SimpleViewerProps) {\n const manifest = useManifest();\n const { cursor, visibleItems, next, sequence, items, setCanvasIndex, setCanvasId, previous, setSequenceIndex } =\n useCanvasSequence({\n startCanvas: props.startCanvas,\n disablePaging: props.pagingEnabled === false,\n });\n\n const ctx = useMemo(\n () =>\n ({\n sequence,\n items,\n // Extra functions.\n setCurrentCanvasId: setCanvasId,\n nextCanvas: next,\n previousCanvas: previous,\n totalCanvases: items.length,\n setCurrentCanvasIndex: setCanvasIndex,\n setSequenceIndex: setSequenceIndex,\n currentSequenceIndex: cursor,\n } as SimpleViewerContext),\n [sequence, items, setCanvasId, next, previous, items, setCanvasIndex, setSequenceIndex, cursor]\n );\n\n if (!manifest) {\n console.warn('The manifest passed to the provider is not a valid IIIF manifest.');\n return <div>Sorry, something went wrong.</div>;\n }\n\n return (\n <SimpleViewerReactContext.Provider value={ctx}>\n <VisibleCanvasReactContext.Provider value={visibleItems}>\n <CanvasContext canvas={visibleItems[0]}>{props.children}</CanvasContext>\n </VisibleCanvasReactContext.Provider>\n </SimpleViewerReactContext.Provider>\n );\n}\n\nexport function SimpleViewerProvider(props: SimpleViewerProps) {\n const manifest = useExternalManifest(props.manifest);\n\n if (!manifest) {\n console.warn('The manifest passed to the provider is not a valid IIIF manifest.');\n return <div>Sorry, something went wrong.</div>;\n }\n\n if (manifest.error) {\n return <div>{manifest.error.toString()}</div>;\n }\n\n if (!manifest.isLoaded) {\n return <div>Loading...</div>;\n }\n\n const inner = <InnerViewerProvider {...props}>{props.children}</InnerViewerProvider>;\n\n return (\n <ManifestContext manifest={manifest.id}>\n {props.rangeId ? <RangeContext range={props.rangeId}>{inner}</RangeContext> : inner}\n </ManifestContext>\n );\n}\n\nexport function useSimpleViewer() {\n return useContext(SimpleViewerReactContext);\n}\n","import React, { ReactNode, useContext } from 'react';\nimport { ResourceReactContext } from './ResourceContext';\nimport { ReactVaultContext, VaultProvider } from './VaultContext';\nimport { SimpleViewerReactContext } from '../viewers/SimpleViewerContext';\nimport { VisibleCanvasReactContext } from './VisibleCanvasContext';\n\nexport function useContextBridge() {\n return {\n VaultContext: useContext(ReactVaultContext),\n ResourceContext: useContext(ResourceReactContext),\n SimpleViewerReactContext: useContext(SimpleViewerReactContext),\n VisibleCanvasReactContext: useContext(VisibleCanvasReactContext),\n };\n}\n\nexport function ContextBridge(props: { bridge: ReturnType<typeof useContextBridge>; children: ReactNode }) {\n return (\n <VaultProvider vault={props.bridge.VaultContext.vault || undefined} resources={props.bridge.ResourceContext}>\n <VisibleCanvasReactContext.Provider value={props.bridge.VisibleCanvasReactContext}>\n <SimpleViewerReactContext.Provider value={props.bridge.SimpleViewerReactContext}>\n {props.children}\n </SimpleViewerReactContext.Provider>\n </VisibleCanvasReactContext.Provider>\n </VaultProvider>\n );\n}\n","const E = function(t) {\n return function() {\n const n = { type: t, getType: () => t, toString: () => t };\n return (i, R) => ({\n ...n,\n ...i !== void 0 && { payload: i },\n ...R !== void 0 && { meta: R }\n });\n };\n}, o = \"@iiif/IMPORT_ENTITIES\", c = \"@iiif/MODIFY_ENTITY_FIELD\", s = \"@iiif/REORDER_ENTITY_FIELD\", A = \"@iiif/ADD_REFERENCE\", T = \"@iiif/UPDATE_REFERENCE\", e = \"@iiif/REMOVE_REFERENCE\", _ = \"@iiif/ADD_METADATA\", M = \"@iiif/REMOVE_METADATA\", D = \"@iiif/UPDATE_METADATA\", O = \"@iiif/REORDER_METADATA\", S = E(o)(), a = E(c)(), r = E(s)(), I = E(A)(), U = E(e)(), f = E(T)(), C = E(_)(), N = E(D)(), d = E(M)(), u = E(O)(), J = {\n importEntities: S,\n modifyEntityField: a,\n reorderEntityField: r,\n addReference: I,\n removeReference: U,\n updateReference: f,\n addMetadata: C,\n removeMetadata: d,\n updateMetadata: N,\n reorderMetadata: u\n}, F = \"@iiif/ADD_MAPPING\", P = \"@iiif/ADD_MAPPINGS\", L = E(F)(), V = E(P)(), K = { addMapping: L, addMappings: V }, p = \"@iiif/SET_META_VALUE\", Q = \"@iiif/SET_META_VALUE_DYNAMIC\", Y = \"@iiif/UNSET_META_VALUE\", m = E(p)(), l = E(Q)(), q = E(Y)(), W = {\n setMetaValue: m,\n setMetaValueDynamic: l,\n unsetMetaValue: q\n}, X = \"RESOURCE_ERROR\", Z = \"RESOURCE_LOADING\", $ = \"RESOURCE_READY\", G = \"@iiif/REQUEST_RESOURCE\", H = \"@iiif/REQUEST_ERROR\", g = \"@iiif/REQUEST_MISMATCH\", v = \"@iiif/REQUEST_COMPLETE\", B = \"@iiif/REQUEST_OFFLINE_RESOURCE\", b = E(G)(), h = E(H)(), y = E(g)(), x = E(v)(), j = E(B)(), EE = {\n requestResource: b,\n requestError: h,\n requestMismatch: y,\n requestComplete: x,\n requestOfflineResource: j\n}, k = \"@iiif/BATCH\", w = \"@iiif/BATCH_IMPORT\", tE = E(k)(), iE = E(w)();\nexport {\n F as ADD_MAPPING,\n P as ADD_MAPPINGS,\n _ as ADD_METADATA,\n A as ADD_REFERENCE,\n k as BATCH_ACTIONS,\n w as BATCH_IMPORT,\n o as IMPORT_ENTITIES,\n c as MODIFY_ENTITY_FIELD,\n M as REMOVE_METADATA,\n e as REMOVE_REFERENCE,\n s as REORDER_ENTITY_FIELD,\n O as REORDER_METADATA,\n v as REQUEST_COMPLETE,\n H as REQUEST_ERROR,\n g as REQUEST_MISMATCH,\n B as REQUEST_OFFLINE_RESOURCE,\n G as REQUEST_RESOURCE,\n X as RESOURCE_ERROR,\n Z as RESOURCE_LOADING,\n $ as RESOURCE_READY,\n p as SET_META_VALUE,\n Q as SET_META_VALUE_DYNAMIC,\n Y as UNSET_META_VALUE,\n D as UPDATE_METADATA,\n T as UPDATE_REFERENCE,\n L as addMapping,\n V as addMappings,\n C as addMetadata,\n I as addReference,\n tE as batchActions,\n iE as batchImport,\n J as entityActions,\n S as importEntities,\n K as mappingActions,\n W as metaActions,\n a as modifyEntityField,\n d as removeMetadata,\n U as removeReference,\n r as reorderEntityField,\n u as reorderMetadata,\n EE as requestActions,\n x as requestComplete,\n h as requestError,\n y as requestMismatch,\n j as requestOfflineResource,\n b as requestResource,\n N as updateMetadata,\n f as updateReference\n};\n//# sourceMappingURL=vault-actions.mjs.map\n","import { useVault } from './useVault';\nimport { useMemo } from 'react';\nimport { VaultZustandStore } from '@iiif/helpers/vault/store';\n\nexport function useDispatch(): VaultZustandStore['dispatch'] {\n const vault = useVault();\n const store = vault.getStore();\n\n return useMemo(() => {\n return (action: any) => store.dispatch(action);\n }, [store]);\n}\n","import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';\nimport { Annotation } from '@iiif/presentation-3';\nimport { AnnotationNormalized, AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useVault } from './useVault';\nimport { useVaultSelector } from './useVaultSelector';\nimport { entityActions } from '@iiif/helpers/vault/actions';\nimport { useDispatch } from './useDispatch';\nimport { Vault } from '@iiif/helpers/vault';\n\nexport interface VaultActivatedAnnotation {\n __vault?: Vault;\n bindToVault(vault: Vault): void;\n source: string | { id: string };\n}\n\nfunction isVaultActivated(obj: any): obj is VaultActivatedAnnotation {\n return typeof obj !== 'string' && obj && obj.bindToVault;\n}\n\nexport function useVirtualAnnotationPage() {\n const vault = useVault();\n const sources = useRef<Record<any, any>>([]);\n const dispatch = useDispatch();\n const virtualId = useMemo(() => {\n return `vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random() * 1000000000).toString(16)}`;\n }, []);\n\n useLayoutEffect(() => {\n const page: AnnotationPageNormalized = {\n id: virtualId,\n type: 'AnnotationPage',\n behavior: [],\n label: null,\n thumbnail: [],\n summary: null,\n requiredStatement: null,\n metadata: [],\n rights: null,\n provider: [],\n items: [],\n seeAlso: [],\n homepage: [],\n rendering: [],\n service: [],\n };\n\n dispatch(\n entityActions.importEntities({\n entities: {\n AnnotationPage: {\n [page.id]: page,\n },\n },\n })\n );\n }, [virtualId]);\n\n const fullPage: AnnotationPageNormalized | null = useVaultSelector(\n (state) => (virtualId ? state.iiif.entities.AnnotationPage[virtualId] : null),\n [virtualId]\n );\n\n const addAnnotation = useCallback(\n (id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized, atIndex?: number) => {\n if (virtualId) {\n if (isVaultActivated(id)) {\n const display = id;\n if (!display.__vault) {\n // First bind to vault.\n display.bindToVault(vault);\n }\n id = typeof display.source === 'string' ? display.source : display.source.id;\n sources.current[id] = display;\n } else if (typeof id !== 'string') {\n id = id.id;\n }\n\n const full: AnnotationPageNormalized = vault.get({ id: virtualId, type: 'AnnotationPage' });\n const annotation: AnnotationNormalized = vault.get({ id, type: 'Annotation' });\n if (full && annotation) {\n if (!full.items.find((r: any) => r.id === annotation.id)) {\n dispatch(\n entityActions.addReference({\n id: virtualId,\n type: 'AnnotationPage',\n key: 'items',\n reference: {\n id,\n type: 'Annotation',\n },\n index: atIndex,\n })\n );\n }\n }\n }\n },\n [virtualId]\n );\n const removeAnnotation = useCallback(\n (id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized) => {\n if (virtualId) {\n if (isVaultActivated(id)) {\n id = typeof id.source === 'string' ? id.source : id.source.id;\n } else if (typeof id !== 'string') {\n id = id.id;\n }\n\n if (sources.current[id]) {\n sources.current[id].beforeRemove();\n }\n\n const full: AnnotationPageNormalized = vault.get({ id: virtualId, type: 'AnnotationPage' });\n if (full) {\n dispatch(\n entityActions.removeReference({\n id: virtualId,\n type: 'AnnotationPage',\n key: 'items',\n reference: {\n id,\n type: 'Annotation',\n },\n })\n );\n }\n }\n },\n [virtualId]\n );\n\n return [\n fullPage,\n {\n addAnnotation,\n removeAnnotation,\n },\n ] as const;\n}\n","import { Annotation } from '@iiif/presentation-3';\nimport { AnnotationNormalized, AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport React, { createContext, useContext, useMemo } from 'react';\nimport { useVirtualAnnotationPage, VaultActivatedAnnotation } from './useVirtualAnnotationPage';\n\nconst VirtualAnnotationPageContext = createContext<{\n fullPage: AnnotationPageNormalized | null;\n addAnnotation: (\n id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized,\n atIndex?: number | undefined\n ) => void;\n removeAnnotation: (id: string | Annotation | VaultActivatedAnnotation | AnnotationNormalized) => void;\n} | null>(null);\n\nexport function useVirtualAnnotationPageContext() {\n const ctx = useContext(VirtualAnnotationPageContext);\n\n return [\n ctx!.fullPage,\n {\n addAnnotation: ctx!.addAnnotation,\n removeAnnotation: ctx!.removeAnnotation,\n },\n ] as const;\n}\n\nexport function VirtualAnnotationProvider({ children }: { children: any }) {\n const [fullPage, { addAnnotation, removeAnnotation }] = useVirtualAnnotationPage();\n\n return (\n <VirtualAnnotationPageContext.Provider\n value={useMemo(() => ({ fullPage, addAnnotation, removeAnnotation }), [fullPage])}\n >\n {children}\n </VirtualAnnotationPageContext.Provider>\n );\n}\n","import React from 'react';\nimport { FallbackProps } from 'react-error-boundary';\n\nexport function DefaultCanvasFallback({\n width,\n style,\n height,\n error,\n resetErrorBoundary,\n}: { width?: number; height?: number; style?: any } & FallbackProps) {\n return (\n <div style={{ width, height, minHeight: 500, ...(style || {}), background: '#f9f9f9' }}>\n <h3>Error occurred</h3>\n <p>{error.message}</p>\n <button onClick={resetErrorBoundary}>Reset</button>\n </div>\n );\n}\n","import { createContext, useContext } from 'react';\nimport { Preset } from '@atlas-viewer/atlas';\n\nexport const ViewerPresetContext = createContext<Preset | null | undefined>(null);\n\nexport function useViewerPreset() {\n return useContext(ViewerPresetContext);\n}\n","import { createContext, useContext, useEffect } from 'react';\n\nexport const SetOverlaysReactContext = createContext<(key: string, element: any | null, props?: any) => void>(\n () => void 0\n);\nexport const SetPortalReactContext = createContext<(key: string, element: any | null, props?: any) => void>(\n () => void 0\n);\n\nexport function useOverlay(\n type: 'portal' | 'overlay' | 'none',\n key: string,\n element: any,\n props: any,\n deps: any[] = []\n) {\n const setOverlay = useContext(type === 'portal' ? SetPortalReactContext : SetOverlaysReactContext);\n\n useEffect(() => {\n if (type !== 'none') {\n setOverlay(key, element, props);\n }\n return () => {\n setOverlay(key, null);\n };\n }, [key, type, setOverlay, ...deps]);\n}\n","import { useResourceContext } from '../context/ResourceContext';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useCanvas(options?: { id: string }): CanvasNormalized | undefined;\nexport function useCanvas<T>(\n options?: { id: string; selector: (canvas: CanvasNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useCanvas<T = CanvasNormalized>(\n options: {\n id?: string;\n selector?: (canvas: CanvasNormalized) => T;\n } = {},\n deps: any[] = []\n): CanvasNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const canvasId = id ? id : ctx.canvas;\n\n const canvas = useVaultSelector((s) => (canvasId ? s.iiif.entities.Canvas[canvasId] : undefined), [canvasId]);\n\n return useMemo(() => {\n if (!canvas) {\n return undefined;\n }\n if (selector) {\n return selector(canvas);\n }\n return canvas;\n }, [canvas, selector, ...deps]);\n}\n","import { createContext, useContext, useEffect } from 'react';\nimport { useCanvas } from '../../hooks/useCanvas';\n\nexport const WorldSizeContext = createContext<(canvasId: string, size: number) => void>(() => void 0);\n\nexport function useWorldSize(size: number) {\n const canvas = useCanvas();\n const fn = useContext(WorldSizeContext);\n\n useEffect(() => {\n if (canvas && canvas.id) {\n fn(canvas.id, size);\n\n return () => fn(canvas.id, -1);\n }\n\n return () => void 0;\n }, [canvas, size]);\n}\n","import React, { ReactNode, useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { AtlasAuto, Preset, AtlasProps, ModeContext } from '@atlas-viewer/atlas';\nimport { ErrorBoundary } from 'react-error-boundary';\nimport { ContextBridge, useContextBridge } from '../context/ContextBridge';\nimport { VirtualAnnotationProvider } from '../hooks/useVirtualAnnotationPageContext';\nimport { DefaultCanvasFallback } from './render/DefaultCanvasFallback';\nimport { ViewerPresetContext } from '../context/ViewerPresetContext';\nimport { SetOverlaysReactContext, SetPortalReactContext } from './context/overlays';\nimport { WorldSizeContext } from './context/world-size';\nimport { useCanvas } from '../hooks/useCanvas';\n\nexport function Viewer({\n children,\n errorFallback,\n outerContainerProps = {},\n worldScale: _worldScale,\n ...props\n}: AtlasProps & {\n height?: number | string;\n width?: number | string;\n resizeHash?: number;\n containerProps?: any;\n outerContainerProps?: any;\n aspectRatio?: number;\n errorFallback?: any;\n worldScale?: number;\n} & { children: ReactNode }) {\n const [viewerPreset, setViewerPreset] = useState<Preset | null>();\n const bridge = useContextBridge();\n const ErrorFallback: any = errorFallback || DefaultCanvasFallback;\n const [overlays, setOverlays] = useState<Record<string, any>>({});\n const overlayComponents = Object.entries(overlays);\n const [portals, setPortals] = useState<Record<string, any>>({});\n const portalComponents = Object.entries(portals);\n const [worldSizes, setWorldSizes] = useState<Record<string, number>>({});\n const worldScale = useMemo(() => {\n return _worldScale || Math.max(...Object.values(worldSizes));\n }, [worldSizes]);\n const runtimeOptions = useMemo(() => {\n return { maxOverZoom: worldScale || 1, ...(props.runtimeOptions || {}) };\n }, [worldScale, props.runtimeOptions]);\n\n const updateWorldSize = useCallback((canvasId: string, size: number) => {\n setWorldSizes((sizes) => {\n if (size === -1) {\n const { [canvasId]: _, ...rest } = sizes;\n return rest;\n }\n return { ...sizes, [canvasId]: size };\n });\n }, []);\n\n const updateOverlay = useCallback((key: string, element: ReactNode, props: any) => {\n setOverlays(({ [key]: _, ...prev }) => {\n if (!element) {\n return prev;\n }\n\n return {\n ...prev,\n [key]: { element, props },\n };\n });\n }, []);\n\n const updatePortal = useCallback((key: string, element: ReactNode, props: any) => {\n setPortals(({ [key]: _, ...prev }) => {\n if (!element) {\n return prev;\n }\n\n return {\n ...prev,\n [key]: { element, props },\n };\n });\n }, []);\n\n return (\n <ErrorBoundary resetKeys={[]} fallbackRender={(fallbackProps) => <ErrorFallback {...props} {...fallbackProps} />}>\n <AtlasAuto\n {...props}\n containerProps={{ style: { position: 'relative' }, ...(props.containerProps || {}) }}\n htmlChildren={\n <>\n {overlayComponents.map(([key, { element: Element, props }]) => (\n <React.Fragment key={key}>\n <Element {...(props || {})} />\n </React.Fragment>\n ))}\n </>\n }\n onCreated={(preset: any) => {\n setViewerPreset(preset);\n if (props.onCreated) {\n props.onCreated(preset);\n }\n }}\n runtimeOptions={runtimeOptions}\n >\n <ViewerPresetContext.Provider value={viewerPreset}>\n <WorldSizeContext.Provider value={updateWorldSize}>\n <SetOverlaysReactContext.Provider value={updateOverlay}>\n <SetPortalReactContext.Provider value={updatePortal}>\n <ContextBridge bridge={bridge}>\n <ModeContext.Provider value={props.mode || 'explore'}>\n <VirtualAnnotationProvider>{children}</VirtualAnnotationProvider>\n </ModeContext.Provider>\n </ContextBridge>\n </SetPortalReactContext.Provider>\n </SetOverlaysReactContext.Provider>\n </WorldSizeContext.Provider>\n </ViewerPresetContext.Provider>\n </AtlasAuto>\n <div>\n {portalComponents.map(([key, { element: Element, props }]) => (\n <React.Fragment key={key}>\n <Element {...(props || {})} />\n </React.Fragment>\n ))}\n </div>\n </ErrorBoundary>\n );\n}\n","const a = {}, i = {\n get(n) {\n return n;\n },\n setMetaValue([n, e, r], t) {\n const o = i.getResourceMeta(n, e), c = o ? o[r] : void 0, s = typeof t == \"function\" ? t(c) : t;\n a[n] = {\n ...a[n] || {},\n [e]: {\n ...(a[n] || {})[e] || {},\n [r]: s\n }\n };\n },\n getResourceMeta: (n, e) => {\n const r = a[n];\n if (r)\n return e ? r[e] : r;\n }\n};\nfunction M(n = i) {\n return {\n addEventListener(e, r, t, o) {\n if (e)\n return n.setMetaValue(\n [e.id, \"eventManager\", r],\n (c) => {\n const s = c || [];\n for (const f of s)\n if (f.callback === t)\n return s;\n return [...s, { callback: t, scope: o }];\n }\n ), t;\n },\n removeEventListener(e, r, t) {\n e && n.setMetaValue(\n [e.id, \"eventManager\", r],\n (o) => (o || []).filter((c) => c.callback !== t)\n );\n },\n getListenersAsProps(e, r) {\n const t = typeof e == \"string\" ? { id: e } : e;\n if (!t || !t.id)\n return {};\n const o = n.getResourceMeta(t.id, \"eventManager\"), c = {};\n if (o && t)\n for (const s of Object.keys(o))\n c[s] = (f) => {\n const l = n.get(t);\n for (const { callback: g, scope: u } of o[s] || [])\n (!u || r && u.indexOf(r) !== -1) && g(f, l);\n };\n return c;\n }\n };\n}\nexport {\n M as createEventsHelper\n};\n//# sourceMappingURL=events.mjs.map\n","import { useVault } from './useVault';\nimport { useVaultSelector } from './useVaultSelector';\nimport { useMemo } from 'react';\nimport { NormalizedEntity } from '@iiif/helpers/vault';\nimport { Reference } from '@iiif/presentation-3';\nimport { createEventsHelper } from '@iiif/helpers/events';\n\nexport function useResourceEvents<T extends NormalizedEntity>(resource?: Reference, scope?: string[]) {\n const vault = useVault();\n const helper = useMemo(() => createEventsHelper(vault), [vault]);\n\n const hooks = useVaultSelector(() => {\n if (resource && resource.id) {\n return vault.getResourceMeta(resource.id, 'eventManager');\n }\n return null;\n }, [resource]);\n\n return useMemo(() => {\n return resource ? helper.getListenersAsProps(resource, scope) : {};\n }, [hooks, resource, vault, scope]);\n}\n","const r = {}, l = {\n get(e) {\n return e;\n },\n setMetaValue([e, t, n], o) {\n const s = l.getResourceMeta(e, t), c = s ? s[n] : void 0, u = typeof o == \"function\" ? o(c) : o;\n r[e] = {\n ...r[e] || {},\n [t]: {\n ...(r[e] || {})[t] || {},\n [n]: u\n }\n };\n },\n getResourceMeta: (e, t) => {\n const n = r[e];\n if (n)\n return t ? n[t] : n;\n }\n};\nfunction a(e = l) {\n return {\n applyStyles(t, n, o) {\n const s = typeof t == \"string\" ? t : t.id;\n return e.setMetaValue([s, \"styles\", n], o);\n },\n getAppliedStyles(t) {\n const n = typeof t == \"string\" ? t : t.id;\n return e.getResourceMeta(n, \"styles\");\n }\n };\n}\nexport {\n a as createStylesHelper\n};\n//# sourceMappingURL=styles.mjs.map\n","import { useVault } from './useVault';\nimport { useMemo } from 'react';\nimport { Reference } from '@iiif/presentation-3';\nimport { createStylesHelper } from '@iiif/helpers/styles';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useStyles<Style extends Record<string, Record<string, any>>>(\n resource: undefined | Reference<any>\n): Style;\nexport function useStyles<Style extends Record<string, any>>(\n resource: undefined | Reference<any>,\n scope: string\n): Style;\nexport function useStyles<Style>(resource?: Reference, scope?: string): Style {\n const vault = useVault();\n const helper = useMemo(() => createStylesHelper(vault), [vault]);\n\n return useVaultSelector(() => {\n if (!resource) {\n return null;\n }\n\n const styles = helper.getAppliedStyles(resource.id);\n return styles ? (scope ? styles[scope] : styles) : undefined;\n }, [resource, scope]) as Style;\n}\n","var tt = Object.defineProperty;\nvar et = (e, t, a) => t in e ? tt(e, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[t] = a;\nvar C = (e, t, a) => (et(e, typeof t != \"symbol\" ? t + \"\" : t, a), a);\nvar rt = function() {\n function e(t, a) {\n var r = [], s = !0, n = !1, o = void 0;\n try {\n for (var i = t[Symbol.iterator](), l; !(s = (l = i.next()).done) && (r.push(l.value), !(a && r.length === a)); s = !0)\n ;\n } catch (u) {\n n = !0, o = u;\n } finally {\n try {\n !s && i.return && i.return();\n } finally {\n if (n)\n throw o;\n }\n }\n return r;\n }\n return function(t, a) {\n if (Array.isArray(t))\n return t;\n if (Symbol.iterator in Object(t))\n return e(t, a);\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n };\n}(), L = Math.PI * 2, B = function(t, a, r, s, n, o, i) {\n var l = t.x, u = t.y;\n l *= a, u *= r;\n var h = s * l - n * u, p = n * l + s * u;\n return {\n x: h + o,\n y: p + i\n };\n}, at = function(t, a) {\n var r = a === 1.5707963267948966 ? 0.551915024494 : a === -1.5707963267948966 ? -0.551915024494 : 1.3333333333333333 * Math.tan(a / 4), s = Math.cos(t), n = Math.sin(t), o = Math.cos(t + a), i = Math.sin(t + a);\n return [{\n x: s - n * r,\n y: n + s * r\n }, {\n x: o + i * r,\n y: i - o * r\n }, {\n x: o,\n y: i\n }];\n}, N = function(t, a, r, s) {\n var n = t * s - a * r < 0 ? -1 : 1, o = t * r + a * s;\n return o > 1 && (o = 1), o < -1 && (o = -1), n * Math.acos(o);\n}, st = function(t, a, r, s, n, o, i, l, u, h, p, y) {\n var b = Math.pow(n, 2), c = Math.pow(o, 2), d = Math.pow(p, 2), v = Math.pow(y, 2), x = b * c - b * v - c * d;\n x < 0 && (x = 0), x /= b * v + c * d, x = Math.sqrt(x) * (i === l ? -1 : 1);\n var f = x * n / o * y, m = x * -o / n * p, g = h * f - u * m + (t + r) / 2, w = u * f + h * m + (a + s) / 2, A = (p - f) / n, k = (y - m) / o, F = (-p - f) / n, T = (-y - m) / o, q = N(1, 0, A, k), S = N(A, k, F, T);\n return l === 0 && S > 0 && (S -= L), l === 1 && S < 0 && (S += L), [g, w, q, S];\n}, nt = function(t) {\n var a = t.px, r = t.py, s = t.cx, n = t.cy, o = t.rx, i = t.ry, l = t.xAxisRotation, u = l === void 0 ? 0 : l, h = t.largeArcFlag, p = h === void 0 ? 0 : h, y = t.sweepFlag, b = y === void 0 ? 0 : y, c = [];\n if (o === 0 || i === 0)\n return [];\n var d = Math.sin(u * L / 360), v = Math.cos(u * L / 360), x = v * (a - s) / 2 + d * (r - n) / 2, f = -d * (a - s) / 2 + v * (r - n) / 2;\n if (x === 0 && f === 0)\n return [];\n o = Math.abs(o), i = Math.abs(i);\n var m = Math.pow(x, 2) / Math.pow(o, 2) + Math.pow(f, 2) / Math.pow(i, 2);\n m > 1 && (o *= Math.sqrt(m), i *= Math.sqrt(m));\n var g = st(a, r, s, n, o, i, p, b, d, v, x, f), w = rt(g, 4), A = w[0], k = w[1], F = w[2], T = w[3], q = Math.abs(T) / (L / 4);\n Math.abs(1 - q) < 1e-7 && (q = 1);\n var S = Math.max(Math.ceil(q), 1);\n T /= S;\n for (var V = 0; V < S; V++)\n c.push(at(F, T)), F += T;\n return c.map(function($) {\n var j = B($[0], o, i, v, d, A, k), Z = j.x, J = j.y, D = B($[1], o, i, v, d, A, k), K = D.x, H = D.y, X = B($[2], o, i, v, d, A, k), P = X.x, E = X.y;\n return { x1: Z, y1: J, x2: K, y2: H, x: P, y: E };\n });\n};\nfunction G(e) {\n return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, \"default\") ? e.default : e;\n}\nvar ot = ct, I = { a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0 }, it = /([astvzqmhlc])([^astvzqmhlc]*)/ig;\nfunction ct(e) {\n var t = [];\n return e.replace(it, function(a, r, s) {\n var n = r.toLowerCase();\n for (s = ut(s), n == \"m\" && s.length > 2 && (t.push([r].concat(s.splice(0, 2))), n = \"l\", r = r == \"m\" ? \"l\" : \"L\"); ; ) {\n if (s.length == I[n])\n return s.unshift(r), t.push(s);\n if (s.length < I[n])\n throw new Error(\"malformed path data\");\n t.push([r].concat(s.splice(0, I[n])));\n }\n }), t;\n}\nvar lt = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig;\nfunction ut(e) {\n var t = e.match(lt);\n return t ? t.map(Number) : [];\n}\nconst pt = /* @__PURE__ */ G(ot);\nvar ht = yt;\nfunction yt(e) {\n var t = 0, a = 0, r = 0, s = 0;\n return e.map(function(n) {\n n = n.slice();\n var o = n[0], i = o.toUpperCase();\n if (o != i)\n switch (n[0] = i, o) {\n case \"a\":\n n[6] += r, n[7] += s;\n break;\n case \"v\":\n n[1] += s;\n break;\n case \"h\":\n n[1] += r;\n break;\n default:\n for (var l = 1; l < n.length; )\n n[l++] += r, n[l++] += s;\n }\n switch (i) {\n case \"Z\":\n r = t, s = a;\n break;\n case \"H\":\n r = n[1];\n break;\n case \"V\":\n s = n[1];\n break;\n case \"M\":\n r = t = n[1], s = a = n[2];\n break;\n default:\n r = n[n.length - 2], s = n[n.length - 1];\n }\n return n;\n });\n}\nconst ft = /* @__PURE__ */ G(ht);\nfunction vt(e) {\n const t = pt(e), a = ft(t);\n let r, s = 0, n = 0, o = 0, i = 0, l, u, h = 0, p = 0;\n const y = [];\n for (let b = 0; b < a.length; b++) {\n let c = a[b];\n const d = c[0];\n switch (d) {\n case \"M\":\n s = c[1], n = c[2];\n break;\n case \"H\":\n c = [\"L\", c[1], n];\n break;\n case \"V\":\n c = [\"L\", s, c[1]];\n break;\n case \"S\":\n {\n let v = h, x = p;\n (r === \"C\" || r == \"S\") && (v += v - o, x += x - i), c = [\"C\", v, x, c[1], c[2], c[3], c[4]];\n }\n break;\n case \"T\":\n r === \"Q\" || r == \"T\" ? (l = h * 2 - l, u = p * 2 - u) : (l = h, u = p), c = [\"Q\", l, u, c[1], c[2]];\n break;\n case \"Q\":\n l = c[1], u = c[2];\n break;\n case \"A\":\n {\n const v = nt({\n px: h,\n py: p,\n cx: c[6],\n cy: c[7],\n rx: c[1],\n ry: c[2],\n xAxisRotation: c[3],\n largeArcFlag: c[4],\n sweepFlag: c[5]\n });\n if (!v.length)\n continue;\n for (const [x, f] of v.entries())\n c = [\"C\", f.x1, f.y1, f.x2, f.y2, f.x, f.y], x < v.length - 1 && y.push(c);\n c = c;\n }\n break;\n case \"Z\":\n c = [\"L\", s, n];\n break;\n }\n r = d, h = c[c.length - 2], p = c[c.length - 1], [\"C\", \"Q\", \"A\"].indexOf(d) > -1 ? (o = c[c.length - 4], i = c[c.length - 3]) : (o = h, i = p), y.push(c);\n }\n return y;\n}\n/** Code to \"flatten\" quadratic and cubic Bézier curves to polylines.\n *\n * All code in this module is based on JavaScript code by Raph Levien, published on his blog at\n * https://raphlinus.github.io/.\n * I merely changed the structure a bit, removed some unneeded parts and added some comments and type hints.\n *\n * Flattening of quadratic Bézier curves:\n * - Article: https://raphlinus.github.io/graphics/curves/2019/12/23/flatten-quadbez.html\n * - Code: https://github.com/raphlinus/raphlinus.github.io/blob/master/_posts/2019-12-23-flatten-quadbez.md?plain=1#L73-L212\n *\n * Flattening of cubic Bézier curves: https://levien.com/tmp/flatten.html\n *\n * Note that the code in this module has a different license than the rest of the package,\n * due to the inclusion of Apache-licensed third party code.\n *\n * @license\n * Copyright 2022 Johannes Baiter <johannes.baiter@gmail.com>\n * Copyright 2019, 2022 Raph Levien <raph.levien@gmail.com>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction xt(e, t, a, r = 1) {\n return new W(e, t, a).subdivide(r);\n}\nfunction bt(e, t, a, r, s = 1) {\n return new Q(\n new Float64Array([e.x, e.y, t.x, t.y, a.x, a.y, r.x, r.y])\n ).subdivide(s);\n}\nfunction dt(e) {\n return e.x * e.x + e.y * e.y;\n}\nfunction z(e) {\n return e / (1 - 0.67 + Math.pow(Math.pow(0.67, 4) + 0.25 * e * e, 0.25));\n}\nfunction O(e) {\n return e * (1 - 0.39 + Math.sqrt(0.39 * 0.39 + 0.25 * e * e));\n}\nclass W {\n constructor(t, a, r) {\n C(this, \"start\");\n C(this, \"control\");\n C(this, \"end\");\n this.start = t, this.control = a, this.end = r;\n }\n eval(t) {\n const a = 1 - t;\n return {\n x: this.start.x * a * a + 2 * this.control.x * a * t + this.end.x * t * t,\n y: this.start.y * a * a + 2 * this.control.y * a * t + this.end.y * t * t\n };\n }\n mapToBasic() {\n const { x: t, y: a } = this.start, { x: r, y: s } = this.control, { x: n, y: o } = this.end, i = 2 * r - t - n, l = 2 * s - a - o, u = (r - t) * i + (s - a) * l, h = (n - r) * i + (o - s) * l, p = (n - t) * l - (o - a) * i, y = u / p, b = h / p, c = Math.abs(p) / (Math.hypot(i, l) * Math.abs(b - y));\n return { x0: t, x2: n, scale: c, cross: p };\n }\n subdivide(t) {\n const a = this.mapToBasic(), r = z(a.x0), s = z(a.x2), n = 0.5 * Math.abs(s - r) * Math.sqrt(a.scale / t), o = Math.ceil(n), i = O(r), l = O(s), u = [0];\n for (let h = 1; h < o; h++) {\n const y = (O(r + (s - r) * h / o) - i) / (l - i);\n u.push(y);\n }\n return u.push(1), u.map((h) => this.eval(h));\n }\n}\nclass Q {\n /// Argument is array of coordinate values [x0, y0, x1, y1, x2, y2, x3, y3].\n constructor(t) {\n C(this, \"c\");\n this.c = t;\n }\n weightsum(t, a, r, s) {\n const n = t * this.c[0] + a * this.c[2] + r * this.c[4] + s * this.c[6], o = t * this.c[1] + a * this.c[3] + r * this.c[5] + s * this.c[7];\n return { x: n, y: o };\n }\n eval(t) {\n const a = 1 - t, r = a * a * a, s = 3 * a * a * t, n = 3 * a * t * t, o = t * t * t;\n return this.weightsum(r, s, n, o);\n }\n deriv(t) {\n const a = 1 - t, r = -3 * a * a, s = 3 * t * t, n = -6 * t * a - r, o = 6 * t * a - s;\n return this.weightsum(r, n, o, s);\n }\n // quadratic bezier with matching endpoints and minimum max vector error\n midpoint_quadbez() {\n const t = this.weightsum(-0.25, 0.75, 0.75, -0.25);\n return new W({ x: this.c[0], y: this.c[1] }, t, { x: this.c[6], y: this.c[7] });\n }\n subsegment(t, a) {\n const r = new Float64Array(8), s = this.eval(t), n = this.eval(a);\n r[0] = s.x, r[1] = s.y;\n const o = (a - t) / 3, i = this.deriv(t);\n r[2] = s.x + o * i.x, r[3] = s.y + o * i.y;\n const l = this.deriv(a);\n return r[4] = n.x - o * l.x, r[5] = n.y - o * l.y, r[6] = n.x, r[7] = n.y, new Q(r);\n }\n // Very fancy subdivision scheme\n subdivide(t) {\n const a = 0.1 * t, r = t - a, s = Math.sqrt(r), n = dt(this.weightsum(1, -3, 3, -1)), o = Math.ceil(Math.pow(n / (432 * a * a), 1 / 6)), i = [];\n let l = 0;\n for (let c = 0; c < o; c++) {\n const d = c / o, v = (c + 1) / o, x = this.subsegment(d, v).midpoint_quadbez(), f = x.mapToBasic(), m = z(f.x0), g = z(f.x2), w = Math.sqrt(f.scale);\n let A = Math.abs(g - m) * w;\n if (Math.sign(f.x0) != Math.sign(f.x2)) {\n const k = s / w, F = s * Math.abs(g - m) / z(k);\n A = Math.max(A, F);\n }\n i.push({\n quad: x,\n a0: m,\n a2: g,\n val: A\n }), l += A;\n }\n const u = 0.5 * l / s, h = Math.ceil(u), p = [{ x: this.c[0], y: this.c[1] }];\n let y = 0, b = 0;\n for (let c = 1; c < h; c++) {\n const d = l * c / h;\n for (; y + i[b].val < d; )\n y += i[b].val, b++;\n const v = i[b].a0, x = i[b].a2, f = O(v), m = O(x), g = v + (x - v) * (d - y) / i[b].val, A = (O(g) - f) / (m - f);\n p.push(i[b].quad.eval(A));\n }\n return p.push({ x: this.c[6], y: this.c[7] }), p;\n }\n}\nconst mt = /&?(xywh=)?(pixel:|percent:|pct:)?([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?)/, At = /&?(t=)(npt:)?([0-9]+(.[0-9]+)?)?(,([0-9]+(.[0-9]+)?))?/, U = /^rgba\\((\\d+),(\\d+),(\\d+),([0-9.]+)\\)$/;\nfunction _(e, {\n domParser: t,\n svgPreprocessor: a,\n iiifRenderingHints: r\n} = {}) {\n if (Array.isArray(e))\n return M(\n e.reduce(\n (s, n) => {\n const {\n selector: o,\n selectors: i,\n iiifRenderingHints: l\n } = _(n, { domParser: t, svgPreprocessor: a, iiifRenderingHints: r });\n return o && (s.selector || (s.selector = o), s.selectors.push(...i)), l && (s.iiifRenderingHints = s.iiifRenderingHints || { type: \"ImageApiSelector\" }, Object.assign(s.iiifRenderingHints, l)), s;\n },\n {\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n }\n )\n );\n if (!e)\n return M({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n if (typeof e == \"string\") {\n const [s, n] = e.split(\"#\");\n return n ? _(\n { type: \"FragmentSelector\", value: n },\n { svgPreprocessor: a, iiifRenderingHints: r, domParser: t }\n ) : M({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n }\n if (e.type && e.type === \"PointSelector\" && (e.t || e.t === 0)) {\n const s = {\n type: \"TemporalSelector\",\n temporal: {\n startTime: e.t\n }\n };\n return M({\n selector: s,\n selectors: [s],\n iiifRenderingHints: r\n });\n }\n if (kt(e)) {\n const s = [];\n if (e.region) {\n const n = _(\n { type: \"FragmentSelector\", value: \"xywh=\" + e.region },\n { domParser: t, svgPreprocessor: a, iiifRenderingHints: r }\n );\n s.push(...n.selectors);\n }\n return M({\n selector: s[0],\n selectors: s,\n iiifRenderingHints: r ? { ...r, ...e } : e\n });\n }\n if (e.type === \"FragmentSelector\") {\n const s = mt.exec(e.value);\n if (s) {\n const o = {\n type: \"BoxSelector\",\n spatial: {\n unit: s[2] === \"percent:\" || s[2] === \"pct:\" ? \"percent\" : \"pixel\",\n x: parseFloat(s[3]),\n y: parseFloat(s[4]),\n width: parseFloat(s[5]),\n height: parseFloat(s[6])\n }\n };\n return M({\n selector: o,\n selectors: [o],\n iiifRenderingHints: r\n });\n }\n const n = e.value.match(At);\n if (n) {\n const o = {\n type: \"TemporalSelector\",\n temporal: {\n startTime: n[4] ? parseFloat(n[4]) : 0,\n endTime: n[7] ? parseFloat(n[7]) : void 0\n }\n };\n return M({\n selector: o,\n selectors: [o],\n iiifRenderingHints: r\n });\n }\n return M({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n }\n if (e.type === \"SvgSelector\" && \"value\" in e) {\n t || (typeof window < \"u\" ? t = new window.DOMParser() : console.warn(\n \"No DOMParser available, cannot parse SVG selector, `points`, `spatial` and `style` will be unavailable and the SVG will not be normalized.\"\n ));\n let s = [], n, o, i = (a == null ? void 0 : a(e.value)) ?? e.value, l;\n if (t) {\n const h = t.parseFromString(e.value, \"image/svg+xml\").querySelector(\"svg\");\n if (!h)\n return console.warn(`Illegal SVG selector: ${e.value}`), M({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n const p = Y(h);\n p && (s = p.points, l = p.shapeType, n = [\n Math.min(...s.map((y) => y[0])),\n // llx\n Math.min(...s.map((y) => y[1])),\n // lly\n Math.max(...s.map((y) => y[0])),\n // urx\n Math.max(...s.map((y) => y[1]))\n // ury\n ], { style: o, svg: i } = gt(p.element) ?? { svg: i });\n }\n const u = {\n type: \"SvgSelector\",\n svg: i,\n svgShape: l,\n style: o,\n points: s.length ? s : void 0,\n spatial: n ? { unit: \"pixel\", x: n[0], y: n[1], width: n[2] - n[0], height: n[3] - n[1] } : void 0\n };\n return M({\n selector: u,\n selectors: [u],\n iiifRenderingHints: r\n });\n }\n return M({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n}\nfunction Mt(e) {\n const t = e.map((r) => r[0]).reduce(\n (r, s) => (r[s] += 1, r),\n { C: 0, Q: 0, L: 0, M: 0 }\n ), a = new Set(e.map((r) => r[0]));\n if (t.C > 0 || t.Q > 0)\n return \"path\";\n if (t.L > 0 && (a.size === 1 || a.size === 2 && a.has(\"M\"))) {\n if (t.L === 4)\n return \"rect\";\n const r = e.slice(-1)[0];\n return e[0][0] === \"M\" && r[0] === \"L\" && r[1] == e[0][1] && r[2] === e[0][2] || r[1] === 0 && r[2] === 0 ? \"polygon\" : \"polyline\";\n }\n return \"path\";\n}\nfunction Y(e) {\n var t;\n for (const a of Array.from(e.children))\n switch (a == null ? void 0 : a.tagName.toLowerCase()) {\n case \"g\":\n {\n const r = Y(a);\n if (r)\n return r;\n }\n continue;\n case \"path\": {\n const r = a.getAttribute(\"d\");\n if (!r)\n continue;\n const s = vt(r);\n return { element: a, points: wt(s), shapeType: Mt(s) };\n }\n case \"circle\": {\n const r = parseFloat(a.getAttribute(\"cx\") ?? \"0\"), s = parseFloat(a.getAttribute(\"cy\") ?? \"0\"), n = parseFloat(a.getAttribute(\"r\") ?? \"0\");\n if (!n)\n continue;\n const o = [];\n for (let i = 0; i <= 360; i += 12) {\n const l = i * Math.PI / 180;\n o.push([r + n * Math.cos(l), s + n * Math.sin(l)]);\n }\n return { element: a, points: o, shapeType: \"circle\" };\n }\n case \"ellipse\": {\n const r = parseFloat(a.getAttribute(\"cx\") ?? \"0\"), s = parseFloat(a.getAttribute(\"cy\") ?? \"0\"), n = parseFloat(a.getAttribute(\"rx\") ?? \"0\"), o = parseFloat(a.getAttribute(\"ry\") ?? \"0\");\n if (!n && !o)\n continue;\n const i = [];\n for (let l = 0; l <= 360; l += 12) {\n const u = Math.tan(l / 360 * Math.PI), h = n * (1 - u ** 2) / (1 + u ** 2), p = o * 2 * u / (1 + u ** 2);\n i.push([r + h, s + p]);\n }\n return { element: a, points: i, shapeType: \"ellipse\" };\n }\n case \"line\": {\n const r = parseFloat(a.getAttribute(\"x0\") ?? \"0\"), s = parseFloat(a.getAttribute(\"y0\") ?? \"0\"), n = parseFloat(a.getAttribute(\"x1\") ?? \"0\"), o = parseFloat(a.getAttribute(\"y1\") ?? \"0\");\n if (r === n && s === o)\n continue;\n return {\n element: a,\n points: [\n [r, s],\n [n, o]\n ],\n shapeType: \"polyline\"\n };\n }\n case \"polygon\":\n case \"polyline\": {\n const r = ((t = a.getAttribute(\"points\")) == null ? void 0 : t.split(\" \").map((n) => n.split(\",\").map(parseFloat))) ?? [];\n if (!r.length)\n continue;\n let s = \"polyline\";\n return a.tagName.toLowerCase() === \"polygon\" && (r.push(r[0]), s = \"polygon\"), { element: a, points: r, shapeType: s };\n }\n case \"rect\": {\n const r = parseFloat(a.getAttribute(\"x\") ?? \"0\"), s = parseFloat(a.getAttribute(\"y\") ?? \"0\"), n = parseFloat(a.getAttribute(\"width\") ?? \"0\"), o = parseFloat(a.getAttribute(\"height\") ?? \"0\");\n if (!n || !o)\n continue;\n return {\n element: a,\n points: [\n [r, s],\n [r + n, s],\n [r + n, s + o],\n [r, s + o],\n [r, s]\n ],\n shapeType: \"rect\"\n };\n }\n default:\n continue;\n }\n return null;\n}\nfunction wt(e) {\n const t = [];\n for (let a = 0; a < e.length; a++) {\n const r = t[t.length - 1] ?? [0, 0], s = e[a];\n switch (s[0]) {\n case \"M\":\n case \"L\":\n t.push([s[1], s[2]]);\n continue;\n case \"C\":\n t.push(\n ...bt(\n { x: r[0], y: r[1] },\n { x: s[1], y: s[2] },\n { x: s[3], y: s[4] },\n { x: s[5], y: s[6] }\n ).map((n) => [n.x, n.y]).slice(1)\n // skip first point, already part of output\n );\n continue;\n case \"Q\":\n t.push(\n ...xt(\n { x: r[0], y: r[1] },\n { x: s[1], y: s[2] },\n { x: s[3], y: s[4] }\n ).map((n) => [n.x, n.y]).slice(1)\n // skip first point, already part of output\n );\n continue;\n }\n }\n return t;\n}\nfunction gt(e) {\n const t = {};\n if (e.hasAttribute(\"fill\") ? (t.fill = e.getAttribute(\"fill\"), e.removeAttribute(\"fill\")) : e.style.fill && (t.fill = e.style.fill), t.fill) {\n const r = U.exec(t.fill);\n r && (t.fillOpacity = parseFloat(r[4]), t.fill = `rgb(${r[1]}, ${r[2]}, ${r[3]})`);\n }\n if (e.hasAttribute(\"fill-opacity\") ? (t.fillOpacity = parseFloat(e.getAttribute(\"fill-opacity\")), e.removeAttribute(\"fill-opacity\")) : e.style.fillOpacity && (t.fillOpacity = parseFloat(e.style.fillOpacity)), e.hasAttribute(\"stroke\") ? (t.stroke = e.getAttribute(\"stroke\"), e.removeAttribute(\"stroke\")) : e.style.stroke && (t.stroke = e.style.stroke), t.stroke) {\n const r = U.exec(t.stroke);\n r && (t.strokeOpacity = parseFloat(r[4]), t.stroke = `rgb(${r[1]}, ${r[2]}, ${r[3]})`);\n }\n e.hasAttribute(\"stroke-opacity\") ? (t.strokeOpacity = parseFloat(e.getAttribute(\"stroke-opacity\")), e.removeAttribute(\"stroke-opacity\")) : e.style.strokeOpacity && (t.strokeOpacity = parseFloat(e.style.strokeOpacity)), e.hasAttribute(\"stroke-width\") ? (t.strokeWidth = e.getAttribute(\"stroke-width\"), e.removeAttribute(\"stroke-width\")) : e.style.strokeWidth && (t.strokeWidth = e.style.strokeWidth), e.hasAttribute(\"stroke-dasharray\") ? (t.strokeDasharray = e.getAttribute(\"stroke-dasharray\"), e.removeAttribute(\"stroke-dasharray\")) : e.style.strokeDasharray && (t.strokeDasharray = e.style.strokeDasharray);\n let a = e;\n for (; a.tagName.toLowerCase() !== \"svg\"; )\n if (a = a.parentElement, a === null)\n throw new Error(\"Could not find root SVG element\");\n return { svg: a.outerHTML, style: Object.keys(t).length > 0 ? t : void 0 };\n}\nfunction kt(e) {\n return !!e && e.type === \"iiif:ImageApiSelector\" && e.type === \"iiif:ImageApiSelector\";\n}\nfunction M(e) {\n if (e.iiifRenderingHints) {\n const t = e.iiifRenderingHints;\n if (t.rotation) {\n const a = St(t.rotation);\n if (a)\n if (e.selectors.length)\n for (const r of e.selectors)\n r.rotation = a;\n else\n e.selectors.push({\n type: \"RotationSelector\",\n rotation: a\n });\n }\n } else\n delete e.iiifRenderingHints;\n return e;\n}\nfunction St(e) {\n let t = parseFloat(e);\n return t && e.startsWith(\"!\") && (t = 360 - t), t && (t = t % 360), t !== t ? 0 : t || 0;\n}\nfunction R(e, t = {}) {\n if (Array.isArray(e))\n return R(e[0]);\n if (typeof e == \"string\") {\n const [a, r] = e.split(\"#\");\n return r ? R({\n type: \"SpecificResource\",\n source: { id: a, type: \"Unknown\" },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n }) : {\n type: \"SpecificResource\",\n source: { id: a, type: t.typeMap && t.typeMap[a] || \"Unknown\" },\n selector: null,\n selectors: []\n };\n }\n if (e.type === \"Choice\" || e.type === \"List\" || e.type === \"Composite\" || e.type === \"Independents\")\n return R(e.items[0]);\n if (e.type === \"SpecificResource\") {\n e.source.type === \"Canvas\" && e.source.partOf && typeof e.source.partOf == \"string\" && (e.source.partOf = [\n {\n id: e.source.partOf,\n type: \"Manifest\"\n }\n ]);\n const { selector: a, selectors: r } = e.selector ? _(e.selector, t) : { selector: null, selectors: [] };\n return {\n type: \"SpecificResource\",\n source: e.source,\n selector: a,\n selectors: r\n };\n }\n if (e.id) {\n e.type === \"Canvas\" && e.partOf && typeof e.partOf == \"string\" && (e.partOf = [\n {\n id: e.partOf,\n type: \"Manifest\"\n }\n ]);\n const [a, r] = e.id.split(\"#\");\n return r ? R({\n type: \"SpecificResource\",\n source: {\n ...e,\n id: a\n },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n }) : {\n type: \"SpecificResource\",\n source: {\n ...e,\n id: a\n },\n selector: null,\n selectors: []\n };\n }\n return {\n type: \"SpecificResource\",\n source: e,\n selector: null,\n selectors: []\n };\n}\nexport {\n R as expandTarget,\n kt as isImageApiSelector,\n St as parseRotation,\n _ as parseSelector\n};\n//# sourceMappingURL=annotation-targets.mjs.map\n","import { useResourceContext } from '../context/ResourceContext';\nimport { AnnotationNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\nimport { expandTarget } from '@iiif/helpers/annotation-targets';\nimport { useVault } from './useVault';\n\nexport function useAnnotation(options?: { id: string }): AnnotationNormalized | undefined;\nexport function useAnnotation<T>(\n options?: { id: string; selector: (annotation: AnnotationNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useAnnotation<T = AnnotationNormalized>(\n options: {\n id?: string;\n selector?: (annotation: AnnotationNormalized) => T;\n } = {},\n deps: any[] = []\n): AnnotationNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const vault = useVault();\n const annotationId = id ? id : ctx.annotation;\n\n const annotation = useVaultSelector(\n (s) => (annotationId ? s.iiif.entities.Annotation[annotationId] : undefined),\n [annotationId]\n );\n\n const body = useVaultSelector(\n (s) =>\n annotation && annotation.body\n ? annotation.body\n .map((singleBody) => {\n if (!singleBody) {\n return null;\n }\n\n if ((singleBody as any).type === 'SpecificResource') {\n return {\n ...singleBody,\n source: vault.get(singleBody),\n };\n }\n\n return singleBody ? s.iiif.entities[singleBody.type][singleBody.id] : null;\n })\n .filter(Boolean)\n : [],\n [annotation]\n );\n\n return useMemo(() => {\n if (!annotation) {\n return undefined;\n }\n\n const newAnnotation: any = {\n ...annotation,\n body,\n target: expandTarget(annotation.target as any, { typeMap: vault.getState().iiif.mapping }),\n };\n\n if (selector) {\n return selector(newAnnotation);\n }\n return newAnnotation;\n }, [annotation, selector, body, ...deps]);\n}\n","import { BoxStyle, HTMLPortal, mergeStyles, RegionHighlight } from '@atlas-viewer/atlas';\nimport { useResourceEvents } from '../../hooks/useResourceEvents';\nimport { useStyles } from '../../hooks/useStyles';\nimport React, { FC, useMemo } from 'react';\nimport { useAnnotation } from '../../hooks/useAnnotation';\nimport { useCanvas } from '../../hooks/useCanvas';\n\nexport const RenderAnnotation: FC<{ id: string; className?: string; style?: BoxStyle; interactive?: boolean }> = ({\n id,\n style: defaultStyle,\n className,\n interactive,\n}) => {\n const annotation = useAnnotation({ id });\n const style = useStyles<BoxStyle>(annotation, 'atlas');\n const html = useStyles<{ className?: string; href?: string; title?: string; target?: string }>(annotation, 'html');\n const events = useResourceEvents(annotation as any, ['atlas']);\n const canvas = useCanvas();\n\n const allStyles = useMemo(() => {\n return mergeStyles(defaultStyle, style);\n }, [defaultStyle, style]);\n\n const isValid =\n canvas &&\n annotation &&\n annotation.target &&\n (annotation.target as any).selector &&\n (annotation.target as any).selector.type === 'BoxSelector' &&\n (annotation.target as any).source &&\n ((annotation.target as any).source.id === canvas.id || (annotation.target as any).source === canvas.id);\n\n if (!isValid) {\n return null;\n }\n\n return (\n <RegionHighlight\n id={annotation.id}\n isEditing={true}\n region={(annotation.target as any).selector.spatial}\n style={allStyles}\n className={html?.className || className}\n interactive={!!(html?.href || interactive)}\n href={html?.href || null}\n title={html?.title || null}\n hrefTarget={html?.target || null}\n onClick={() => void 0}\n {...events}\n />\n );\n};\n","import { useResourceContext } from '../context/ResourceContext';\nimport { AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useMemo } from 'react';\nimport { useVaultSelector } from './useVaultSelector';\n\nexport function useAnnotationPage(options?: { id: string }): AnnotationPageNormalized | undefined;\nexport function useAnnotationPage<T>(\n options?: { id: string; selector: (annotation: AnnotationPageNormalized) => T },\n deps?: any[]\n): T | undefined;\nexport function useAnnotationPage<T = AnnotationPageNormalized>(\n options: {\n id?: string;\n selector?: (annotation: AnnotationPageNormalized) => T;\n } = {},\n deps: any[] = []\n): AnnotationPageNormalized | T | undefined {\n const { id, selector } = options;\n const ctx = useResourceContext();\n const annotationPageId = id ? id : ctx.annotationPage;\n\n const annotationPage = useVaultSelector(\n (s) => (annotationPageId ? s.iiif.entities.AnnotationPage[annotationPageId] : undefined),\n [annotationPageId]\n );\n\n return useMemo(() => {\n if (!annotationPage) {\n return undefined;\n }\n\n if (selector) {\n return selector(annotationPage);\n }\n return annotationPage;\n }, [annotationPage, ...deps]);\n}\n","import { AnnotationPage } from '@iiif/presentation-3';\nimport { AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { RenderAnnotation } from './Annotation';\nimport { BoxStyle } from '@atlas-viewer/atlas';\nimport { useStyles } from '../../hooks/useStyles';\nimport { useVaultSelector } from '../../hooks/useVaultSelector';\nimport React, { FC, Fragment } from 'react';\nimport { useAnnotationPage } from '../../hooks/useAnnotationPage';\n\nexport const RenderAnnotationPage: FC<{ page: AnnotationPage | AnnotationPageNormalized; className?: string }> = ({\n className,\n page: _page,\n}) => {\n const page = useAnnotationPage({ id: _page.id }) || _page;\n const style = useStyles<BoxStyle>(page, 'atlas');\n const html = useStyles<{ className?: string }>(page, 'html');\n\n useVaultSelector((state) => (page.id ? state.iiif.entities.AnnotationPage[page.id] : null), []);\n\n return (\n <Fragment>\n {page.items?.map((annotation) => {\n return (\n <RenderAnnotation\n key={annotation.id}\n id={annotation.id}\n style={style}\n className={html?.className || className}\n />\n );\n })}\n </Fragment>\n );\n};\n","import { ImageCandidate } from '@atlas-viewer/iiif-image-api';\nimport React, { Fragment, ReactNode, useMemo } from 'react';\nimport { TileSet } from '@atlas-viewer/atlas';\nimport { ImageWithOptionalService } from '../../features/rendering-strategy/resource-types';\nimport { BoxSelector } from '@iiif/helpers';\n\nexport function RenderImage({\n id,\n image,\n thumbnail,\n isStatic,\n x = 0,\n y = 0,\n children,\n selector,\n onClick,\n enableSizes,\n}: {\n id: string;\n image: ImageWithOptionalService;\n thumbnail?: ImageCandidate;\n isStatic?: boolean;\n enableSizes?: boolean;\n selector?: BoxSelector;\n x?: number;\n y?: number;\n children?: ReactNode;\n onClick?: (e: any) => void;\n}) {\n const crop = useMemo(() => {\n // @todo crops only work if x is not zero due to bug in selector parsing\n // setting the spatial width to canvas - which isn't correct.\n if (!selector || (selector.spatial.x === 0 && selector.spatial.y === 0)) {\n return undefined;\n }\n return selector.spatial;\n }, [selector]);\n\n return (\n <world-object\n key={id + (image.service ? 'server' : 'no-service')}\n x={x + image.target.spatial.x}\n y={y + image.target.spatial.y}\n width={image.target.spatial.width}\n height={image.target.spatial.height}\n onClick={onClick}\n >\n {!image.service ? (\n <Fragment key=\"no-service\">\n <world-image\n onClick={onClick}\n uri={image.id}\n target={{ x: 0, y: 0, width: image.target.spatial.width, height: image.target.spatial.height }}\n display={\n image.width && image.height\n ? {\n width: image.width,\n height: image.height,\n }\n : undefined\n }\n crop={crop}\n />\n {children}\n </Fragment>\n ) : (\n <Fragment key=\"service\">\n <TileSet\n tiles={{\n id: image.service.id || image.service['@id'] || 'unknown',\n height: image.height as number,\n width: image.width as number,\n imageService: image.service as any,\n thumbnail: thumbnail && thumbnail.type === 'fixed' ? thumbnail : undefined,\n }}\n enableSizes={enableSizes}\n x={0}\n y={0}\n width={image.target?.spatial.width}\n height={image.target?.spatial.height}\n crop={crop}\n />\n {children}\n </Fragment>\n )}\n </world-object>\n );\n}\n","var qr = Object.defineProperty;\nvar Ur = (t, e, i) => e in t ? qr(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i;\nvar D = (t, e, i) => (Ur(t, typeof e != \"symbol\" ? e + \"\" : e, i), i);\nconst Ue = {}, V = {\n get(t) {\n return t;\n },\n setMetaValue([t, e, i], r) {\n const n = V.getResourceMeta(t, e), s = n ? n[i] : void 0, a = typeof r == \"function\" ? r(s) : r;\n Ue[t] = {\n ...Ue[t] || {},\n [e]: {\n ...(Ue[t] || {})[e] || {},\n [i]: a\n }\n };\n },\n getResourceMeta: (t, e) => {\n const i = Ue[t];\n if (i)\n return e ? i[e] : i;\n }\n};\nfunction _o(t = V) {\n return {\n addEventListener(e, i, r, n) {\n if (e)\n return t.setMetaValue(\n [e.id, \"eventManager\", i],\n (s) => {\n const a = s || [];\n for (const c of a)\n if (c.callback === r)\n return a;\n return [...a, { callback: r, scope: n }];\n }\n ), r;\n },\n removeEventListener(e, i, r) {\n e && t.setMetaValue(\n [e.id, \"eventManager\", i],\n (n) => (n || []).filter((s) => s.callback !== r)\n );\n },\n getListenersAsProps(e, i) {\n const r = typeof e == \"string\" ? { id: e } : e;\n if (!r || !r.id)\n return {};\n const n = t.getResourceMeta(r.id, \"eventManager\"), s = {};\n if (n && r)\n for (const a of Object.keys(n))\n s[a] = (c) => {\n const u = t.get(r);\n for (const { callback: p, scope: f } of n[a] || [])\n (!f || i && f.indexOf(i) !== -1) && p(c, u);\n };\n return s;\n }\n };\n}\nfunction To(t = V) {\n return {\n applyStyles(e, i, r) {\n const n = typeof e == \"string\" ? e : e.id;\n return t.setMetaValue([n, \"styles\", i], r);\n },\n getAppliedStyles(e) {\n const i = typeof e == \"string\" ? e : e.id;\n return t.getResourceMeta(i, \"styles\");\n }\n };\n}\nfunction ye(t) {\n return t.endsWith(\"info.json\") ? t : t.endsWith(\"/\") ? `${t}info.json` : `${t}/info.json`;\n}\nconst Wr = \"http://library.stanford.edu/iiif/image-api/compliance.html#level0\", ni = \"http://library.stanford.edu/iiif/image-api/compliance.html#level1\", si = \"http://library.stanford.edu/iiif/image-api/compliance.html#level2\", zr = \"http://library.stanford.edu/iiif/image-api/conformance.html#level0\", ai = \"http://library.stanford.edu/iiif/image-api/conformance.html#level1\", oi = \"http://library.stanford.edu/iiif/image-api/conformance.html#level2\", Vr = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0\", ci = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1\", li = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\", Br = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0\", fi = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1\", ui = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2\", Gr = \"http://iiif.io/api/image/1/level0.json\", Qr = \"http://iiif.io/api/image/1/profiles/level0.json\", pi = \"http://iiif.io/api/image/1/level1.json\", hi = \"http://iiif.io/api/image/1/profiles/level1.json\", di = \"http://iiif.io/api/image/1/level2.json\", vi = \"http://iiif.io/api/image/1/profiles/level2.json\", Hr = \"http://iiif.io/api/image/2/level0.json\", Yr = \"http://iiif.io/api/image/2/profiles/level0.json\", yi = \"http://iiif.io/api/image/2/level1.json\", mi = \"http://iiif.io/api/image/2/profiles/level1.json\", gi = \"http://iiif.io/api/image/2/level2.json\", Ai = \"http://iiif.io/api/image/2/profiles/level2.json\", Jr = \"level0\", bi = \"level1\", Si = \"level2\", Xr = \"http://iiif.io/api/image/2/level0\", xi = \"http://iiif.io/api/image/2/level1\", wi = \"http://iiif.io/api/image/2/level2\", Ci = [wi, si, oi, li, ui, di, vi, gi, Ai, Si], Ri = [...Ci, xi, ni, ai, ci, fi, pi, hi, yi, mi, bi], Kr = [Xr, xi, wi, Wr, ni, si, zr, ai, oi, Vr, ci, li, Br, fi, ui, Gr, Qr, pi, hi, di, vi, Hr, Yr, yi, mi, gi, Ai, Jr, bi, Si], Zr = { extraFormats: [\"jpg\"], extraQualities: [\"default\"], extraFeatures: [\"sizeByWhListed\"] }, en = { extraFormats: [\"jpg\"], extraQualities: [\"default\"], extraFeatures: [\"baseUriRedirect\", \"cors\", \"jsonldMediaType\", \"regionByPx\", \"regionSquare\", \"sizeByWhListed\", \"sizeByH\", \"sizeByW\", \"sizeByWh\"] }, tn = { extraFormats: [\"jpg\", \"png\"], extraQualities: [\"default\"], extraFeatures: [\"baseUriRedirect\", \"cors\", \"jsonldMediaType\", \"regionByPct\", \"regionByPx\", \"regionSquare\", \"rotationBy90s\", \"sizeByWhListed\", \"sizeByConfinedWh\", \"sizeByH\", \"sizeByPct\", \"sizeByW\", \"sizeByWh\"] };\nfunction rn(t) {\n return Ci.indexOf(t) !== -1 ? tn : Ri.indexOf(t) !== -1 ? en : Zr;\n}\nfunction nn(t) {\n const e = t ? Array.isArray(t.profile) ? t.profile : [t.profile] : [], i = { extraQualities: [], extraFormats: [], extraFeatures: [] };\n for (let r of e)\n if (typeof r == \"string\" && (r = rn(r)), !!r) {\n if (r.formats)\n for (const n of r.formats)\n i.extraFormats.indexOf(n) === -1 && i.extraFormats.push(n);\n if (r.qualities)\n for (const n of r.qualities)\n i.extraQualities.indexOf(n) === -1 && i.extraQualities.push(n);\n if (r.supports)\n for (const n of r.supports)\n i.extraFeatures.indexOf(n) === -1 && i.extraFeatures.push(n);\n if (r.maxHeight && (i.maxHeight = r.maxHeight), r.maxWidth && (i.maxWidth = r.maxWidth), r.maxArea && (i.maxArea = r.maxArea), r.extraFormats)\n for (const n of r.extraFormats)\n i.extraFormats.indexOf(n) === -1 && i.extraFormats.push(n);\n if (r.extraQualities)\n for (const n of r.extraQualities)\n i.extraQualities.indexOf(n) === -1 && i.extraQualities.push(n);\n if (r.extraFeatures)\n for (const n of r.extraFeatures)\n i.extraFeatures.indexOf(n) === -1 && i.extraFeatures.push(n);\n r.maxHeight && (i.maxHeight = r.maxHeight), r.maxWidth && (i.maxWidth = r.maxWidth), r.maxArea && (i.maxArea = r.maxArea);\n }\n if (t.extraFormats)\n for (const r of t.extraFormats)\n i.extraFormats.indexOf(r) === -1 && i.extraFormats.push(r);\n if (t.extraFeatures)\n for (const r of t.extraFeatures)\n i.extraFeatures.indexOf(r) === -1 && i.extraFeatures.push(r);\n if (t.extraQualities)\n for (const r of t.extraQualities)\n i.extraQualities.indexOf(r) === -1 && i.extraQualities.push(r);\n return i;\n}\nfunction sn(t) {\n try {\n if (t === \"full\")\n return { full: !0 };\n if (t === \"square\")\n return { square: !0 };\n const e = t.startsWith(\"pct:\"), i = t.substr(e ? 4 : 0).split(\",\").map((r) => parseFloat(r));\n return { x: i[0], y: i[1], w: i[2], h: i[3], percent: e };\n } catch {\n throw new Error(\"Expected 'full', 'square' or 'x,y,w,h'. Found \" + t);\n }\n}\nfunction an(t) {\n const e = { upscaled: !1, max: !1, confined: !1 };\n if (t[0] === \"^\" && (e.upscaled = !0, t = t.slice(1)), t === \"max\" || t === \"full\")\n return e.max = !0, e.serialiseAsFull = t === \"full\", e;\n if (t[0] === \"!\" && (e.confined = !0, t = t.slice(1)), t[0] === \"p\")\n return e.percentScale = parseFloat(t.slice(4)), e;\n const i = t.split(\",\").map((r) => r.trim());\n return i.length && (i[0] !== \"\" && (e.width = parseInt(i[0], 10)), i[1] !== \"\" ? (e.height = parseInt(i[1], 10), e.version = 2) : e.version = 3), e;\n}\nfunction on(t) {\n const e = { angle: 0 };\n if (t[0] === \"!\" && (e.mirror = !0, t = t.substr(1)), e.angle = parseFloat(t) % 360, Number.isNaN(e.angle))\n throw new Error(`Invalid rotation ${t}`);\n return e;\n}\nfunction cn(t, e = \"\") {\n const i = t.match(/^(([a-zA-Z]+):\\/\\/([^/]+))?((.*)+)/);\n if (!i)\n throw new Error(`Invalid or unknown input ${t}`);\n const r = i[2], n = i[3];\n let s = i[4];\n if (s[0] === \"/\" && (s = s.substr(1)), e.length > 0) {\n if (e[0] === \"/\" && (e = e.substr(1)), e !== s.substr(0, e.length))\n throw new Error(`Path does not start with prefix (path: ${s}, prefix: ${e})`);\n s = s.substr(e.length);\n }\n return { scheme: r, server: n, path: s, prefix: e };\n}\nfunction ln(t, e = \"\") {\n const { path: i, scheme: r, server: n, prefix: s } = cn(t, e), a = i.split(\"/\").reverse(), [c, u, p, f, ...v] = a, y = v.reverse().filter(Boolean).join(\"/\");\n if (a.length === 1 || c === \"\")\n return { type: \"base\", scheme: r, server: n, prefix: s, identifier: y };\n if (c === \"info.json\") {\n const [, ...h] = a;\n return { type: \"info\", scheme: r, server: n, prefix: s, identifier: h.reverse().filter(Boolean).join(\"/\") };\n }\n const m = c.split(\".\");\n return { type: \"image\", scheme: r, server: n, prefix: s, identifier: y, originalPath: i, region: sn(f), size: an(p), rotation: on(u), quality: m[0], format: m[1] };\n}\nfunction fn(t) {\n const e = ln(ye(t.id));\n if (e.type !== \"info\")\n throw new Error(\"Invalid service URL\");\n const i = nn(t);\n return { identifier: e.identifier, originalPath: \"\", server: e.server, prefix: e.prefix, scheme: e.scheme, type: \"image\", quality: i.extraQualities.indexOf(\"default\") === -1 ? i.extraQualities[0] : \"default\", region: { full: !0 }, size: { max: !0, upscaled: !1, confined: !1 }, format: \"jpg\", rotation: { angle: 0 } };\n}\nfunction un(t, e, i) {\n const r = i.length, n = [];\n for (let s = 0; s < r; s++) {\n const a = i[s].width;\n n.push(t / a);\n }\n return n;\n}\nfunction pn(t, e, i) {\n const r = i.length, n = [];\n for (let s = 0; s < r; s++) {\n const a = i[s];\n n.push({ width: Math.floor(t / a), height: Math.floor(e / a) });\n }\n return n;\n}\nfunction O(t) {\n if (t[\"@id\"])\n return t[\"@id\"];\n if (t.id)\n return t.id;\n}\nfunction Ge(t) {\n if (!t || !t.profile || !O(t))\n return !1;\n const e = Array.isArray(t.profile) ? t.profile : [t.profile];\n for (const i of e)\n if (typeof i == \"string\" && Kr.indexOf(i) !== -1)\n return !0;\n return !1;\n}\nfunction hn(t) {\n if (!Ge(t))\n return !1;\n const e = Array.isArray(t.profile) ? t.profile : [t.profile];\n for (const i of e)\n if (typeof i == \"string\") {\n if (Ri.indexOf(i) !== -1)\n return !0;\n } else {\n const r = [...i.supports || [], ...i.extraFeatures || []];\n if (r.indexOf(\"regionByPx\") !== -1 && (r.indexOf(\"sizeByW\") !== -1 || r.indexOf(\"sizeByWh\") !== -1))\n return !0;\n }\n return !1;\n}\nfunction Ve(t, e) {\n if (e && e.profile) {\n const i = e.profile;\n if (i) {\n const r = Array.isArray(i) ? i : [i];\n return r.includes(`level${t}`) || r.includes(`http://iiif.io/api/image/2/level${t}.json`) || r.includes(`http://iiif.io/api/image/1/level${t}.json`) || r.includes(`http://iiif.io/api/image/1/profiles/level${t}.json`);\n }\n }\n return !1;\n}\nfunction ot(t) {\n return Ge(t) ? Ve(0, t) ? 0 : Ve(1, t) ? 1 : Ve(2, t) ? 2 : null : null;\n}\nfunction Ii(t) {\n return (t[\"@context\"] ? Array.isArray(t[\"@context\"]) ? t[\"@context\"] : [t[\"@context\"]] : []).indexOf(\"http://iiif.io/api/image/3/context.json\") !== -1;\n}\nfunction dn(t) {\n if (!hn(t))\n return [];\n const e = [], i = Array.isArray(t.profile) ? t.profile : [t.profile], r = i.length;\n for (let n = 0; n < r; n++) {\n const s = i[n];\n if (typeof s != \"string\" && (s.maxHeight || s.maxWidth))\n return [{ id: O(t), type: \"variable\", minWidth: 0, minHeight: 0, maxHeight: s.maxHeight || s.maxWidth, maxWidth: s.maxWidth || s.maxHeight, level: ot(t), version: t[\"@context\"] === \"http://iiif.io/api/image/3/context.json\" ? 3 : 2 }];\n }\n if (t.tiles) {\n const n = t.tiles.length;\n for (let s = 0; s < n; s++) {\n const a = t.tiles[s];\n (a.height || a.width) && e.push({ id: O(t), type: \"variable\", minHeight: 0, minWidth: 0, maxHeight: a.height || a.width, maxWidth: a.width, level: ot(t), version: Ii(t) ? 3 : 2 });\n }\n }\n return e;\n}\nfunction Pt(t) {\n const e = /^.*\\/(full)\\/(((\\d+),(\\d+)?)|max)\\/(\\d+)\\/default\\.(jpg|png|jpeg)$/, i = t.match(e);\n if (i) {\n const r = i[1], n = parseInt(i[4], 10), s = parseInt(i[5], 10), a = i[7];\n if ((r === \"max\" || r === \"full\") && n && s && a)\n return { type: \"fixed\", id: t, height: s, width: n };\n }\n return { type: \"unknown\", id: t };\n}\nfunction vn(t) {\n if (t[\"@type\"])\n return t[\"@type\"];\n if (t.type)\n return t.type;\n}\nfunction ct(t) {\n if (typeof t == \"string\")\n return Pt(t);\n const e = vn(t);\n if (e !== \"Image\" && e !== \"sc:Image\")\n return null;\n const i = t, r = O(i);\n return r ? r && i.width && i.height ? { id: r, type: \"fixed\", width: i.width, height: i.height, unsafe: !0 } : Pt(r) : null;\n}\nfunction yn(t) {\n return Ge(t) ? (t && t.sizes ? t.sizes : []).map((e) => ({ id: O(t), type: \"fixed-service\", height: e.height, width: e.width, level: ot(t), version: Ii(t) ? 3 : 2 })) : [];\n}\nfunction jt(t) {\n const e = [], i = t.length;\n for (let r = 0; r < i; r++) {\n const n = yn(t[r]);\n n.length && e.push(...n);\n const s = dn(t[r]);\n s.length && e.push(...s);\n }\n return e;\n}\nfunction Ei(t) {\n const e = t.service ? Array.isArray(t.service) ? t.service : [t.service] : [], i = e.length, r = [];\n for (let n = 0; n < i; n++)\n Ge(e[n]) && r.push(e[n]);\n return r;\n}\nfunction mn(t, e = !0, i) {\n const r = [], n = ct(t);\n if (n === null)\n return r;\n const s = t;\n if (r.push(n), e && s.width && s.height) {\n const a = [], c = Ei(s);\n for (const u of c) {\n const p = { id: O(u), width: s.width, height: s.height };\n if (i.canLoadSync(p)) {\n const f = i.loadServiceSync(p);\n f && (f.height || (f.height = s.height), f.width || (f.width = s.width), a.push(...jt([f])));\n }\n }\n if (a.length)\n return r.push(...a), r;\n }\n return s.service && r.push(...jt(s.service)), r;\n}\nfunction gn({ x: t = 0, y: e = 0, w: i, h: r, full: n, square: s, percent: a }) {\n if (n)\n return \"full\";\n if (s)\n return \"square\";\n if (typeof i > \"u\" || typeof r > \"u\")\n throw new Error(\"RegionParameter: invalid region\");\n const c = `${t},${e},${i},${r}`;\n return a ? `pct:${c}` : c;\n}\nfunction An({ max: t, percentScale: e, upscaled: i, confined: r, width: n, height: s, serialiseAsFull: a, version: c }) {\n const u = [];\n return i && u.push(\"^\"), t ? (u.push(a ? \"full\" : \"max\"), u.join(\"\")) : (r && u.push(\"!\"), e && u.push(`pct:${e}`), n && u.push(`${n}`), u.push(\",\"), s && c === 3 && u.push(`${s}`), u.join(\"\"));\n}\nfunction bn(t) {\n return `${t.mirror ? \"!\" : \"\"}${(t.angle || 0) % 360}`;\n}\nvar Sn = Object.defineProperty, xn = Object.defineProperties, wn = Object.getOwnPropertyDescriptors, Dt = Object.getOwnPropertySymbols, Cn = Object.prototype.hasOwnProperty, Rn = Object.prototype.propertyIsEnumerable, Nt = (t, e, i) => e in t ? Sn(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i, le = (t, e) => {\n for (var i in e || (e = {}))\n Cn.call(e, i) && Nt(t, i, e[i]);\n if (Dt)\n for (var i of Dt(e))\n Rn.call(e, i) && Nt(t, i, e[i]);\n return t;\n}, fe = (t, e) => xn(t, wn(e));\nfunction In(t, e) {\n const i = t.prefix.startsWith(\"/\") ? t.prefix.substr(1) : t.prefix, r = `${t.scheme}://${t.server}/${i ? `${i}/` : \"\"}${t.identifier}`;\n if (t.type === \"base\")\n return r;\n if (t.type === \"info\")\n return `${r}/info.json`;\n let { size: n } = t;\n const { region: s, rotation: a, format: c, quality: u } = t;\n if (e) {\n const p = e[\"@context\"] ? Array.isArray(e[\"@context\"]) ? e[\"@context\"] : [e[\"@context\"]] : [], f = p.indexOf(\"http://iiif.io/api/image/2/context.json\") !== -1, v = p.indexOf(\"http://iiif.io/api/image/3/context.json\") !== -1;\n if ((n.width === e.width && !n.height || n.height === e.height && !n.width || n.width === e.width && n.height === e.height) && (n = fe(le({}, n), { max: !0 })), f && (n.max && !n.serialiseAsFull && (n = fe(le({}, n), { serialiseAsFull: !0 })), !n.max && n.width && n.height && (n = fe(le({}, n), { height: void 0 })), n = fe(le({}, n), { version: 2 })), v) {\n if (n.max && n.serialiseAsFull && (n = fe(le({}, n), { serialiseAsFull: !1 })), n.width && !n.height && e.width && e.height) {\n const y = e.height / e.width;\n n = fe(le({}, n), { height: Math.ceil(n.width * y) });\n }\n n = fe(le({}, n), { version: 3 });\n }\n }\n return [r, gn(s), An(n), bn(a), `${u}.${c}`].filter(Boolean).join(\"/\");\n}\nfunction Ke(t, e, i) {\n const r = fn({ \"@context\": t.version === 3 ? \"http://iiif.io/api/image/3/context.json\" : \"http://iiif.io/api/image/2/context.json\", id: ye(O(t)), profile: t.level === null || typeof t.level > \"u\" ? \"level0\" : `level${t.level}}`, type: t.version === 3 ? \"ImageService3\" : \"ImageService2\" });\n if (r.type !== \"image\")\n throw new Error(\"Invalid service\");\n return r.size.max = !1, r.size.width = e, r.size.height = i, { id: In(r), type: \"fixed\", width: e, height: i || t.height / (t.width || 1) * e, unsafe: t.width > e };\n}\nfunction Se(t) {\n const e = t.replace(/(https?:\\/\\/)?(www.)?/i, \"\");\n return e.indexOf(\"/\") !== -1 ? e.split(\"/\")[0] : e;\n}\nfunction En(t, e, i) {\n const r = t.width ? t.width : t.maxWidth;\n return i.height <= t.maxHeight && i.width <= t.maxWidth && i.height >= t.minHeight && i.width >= t.minWidth && (!e || Math.abs(i.width - r) < Math.abs(e.width - r));\n}\nfunction On(t, e) {\n const i = [], r = Object.assign({ unsafeImageService: !1, atAnyCost: !0, fallback: !0, minHeight: 64, minWidth: 64, maxHeight: 1 / 0, maxWidth: 1 / 0, returnAllOptions: !1, preferFixedSize: !1, allowUnsafe: !1, explain: !1, height: 0, width: 0 }, t), n = (f, v = 0) => r.explain ? i.push(new Array(v).fill(0).map((y) => \" \").join(\"\") + f().trim()) : void 0, s = [], a = [];\n let c = null;\n n(() => `Using configuration: ${JSON.stringify(r, null, 2)}`);\n const u = (f, v) => {\n if (n(() => \"Swapping choice\", 3), En(r, v, f)) {\n if (r.preferFixedSize && f.unsafe) {\n n(() => `We found an image that was marked as unsafe, but it was the best size. (${f.id})`, 4), a.push(f);\n return;\n }\n r.returnAllOptions && v && a.push(v), n(() => `We found a new image that was the best size. (${f.id})`, 4), c = f;\n } else\n r.returnAllOptions && a.push(f);\n };\n n(() => `The input shows we have ${e.length} list(s) of candidates to choose from.`);\n const p = e.length;\n for (let f = 0; f < p; f++) {\n const v = e[f]();\n n(() => `Candidate group ${f}: ${JSON.stringify(v, null, 2)}`, 1);\n const y = v.length;\n n(() => `Checking candidate list number ${f} and found ${y} potential ways of creating image(s)`, 1);\n for (let m = 0; m < y; m++) {\n const h = v[m];\n if (n(() => `-> Checking candidate ${m}`, 1), h.type === \"unknown\" && r.atAnyCost && (n(() => `We've found an unknown image type, adding this to the \"last resort\" list`, 2), s.push(h)), h.type === \"fixed\" && (h.unsafe ? (n(() => `We've found an unsafe fixed image type, adding this to the \"last resort\" list`, 2), s.push(h)) : (n(() => \"We've found a fixed size image, checking if it matches the request\", 2), u(h, c))), h.type === \"fixed-service\")\n if (r.unsafeImageService) {\n n(() => \"Checking for an image from the tile source, without calculating the right height and width (unsafeImageService)\", 2);\n const A = Ke(h, r.width, r.height);\n u(A, c);\n } else {\n n(() => \"Checking for an image from the tile source 3\", 2);\n const A = Ke(h, h.width, h.height);\n u(A, c);\n }\n if (h.type === \"variable\" && h.maxWidth) {\n const A = Ke({ id: h.id, type: \"fixed-service\", width: h.maxWidth, height: h.maxWidth, level: h.level, version: h.version }, h.maxWidth);\n u(A, c);\n }\n }\n if (c && !r.returnAllOptions) {\n if (c.unsafe || r.allowUnsafe)\n continue;\n n(() => `We found a match in choice list number ${f}, no searching any more`);\n break;\n }\n }\n return r.atAnyCost && a.length === 0 ? (n(() => c ? `We found an image! ${c.id} of type ${c.type}` : 'We found no images, but \"atAnyCost\" is set, so returning that'), { best: c || s[0], fallback: s.slice(1), log: i }) : r.returnAllOptions ? (n(() => \"Returning all options that we have found\"), { best: r.atAnyCost ? c || a[0] || s[0] : c || a[0], fallback: [...a, ...s], log: i }) : (n(() => \"Returning the best image that we found, and a fallback\"), { best: c || a[0] || null, fallback: c ? a : a.slice(1), log: i });\n}\nvar _n = Object.defineProperty, Tn = Object.defineProperties, Mn = Object.getOwnPropertyDescriptors, $t = Object.getOwnPropertySymbols, kn = Object.prototype.hasOwnProperty, Fn = Object.prototype.propertyIsEnumerable, qt = (t, e, i) => e in t ? _n(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i, Ln = (t, e) => {\n for (var i in e || (e = {}))\n kn.call(e, i) && qt(t, i, e[i]);\n if ($t)\n for (var i of $t(e))\n Fn.call(e, i) && qt(t, i, e[i]);\n return t;\n}, Pn = (t, e) => Tn(t, Mn(e));\nfunction jn(t, e, i) {\n const r = t > e ? t : e, n = i.length, s = [];\n for (let a = 0; a < n; a++) {\n const c = i[a];\n let u = c.scaleFactors[0], p = r / u;\n const f = [u];\n for (; p >= c.width; )\n u = u * 2, f.push(u), p = p / 2;\n s.push(Pn(Ln({}, c), { scaleFactors: f }));\n }\n return s;\n}\nfunction Dn(t, e) {\n if (t.length !== e.length)\n return !1;\n if (t.length === 0 && e.length === 0)\n return !0;\n const i = t.length;\n let r = !0;\n for (let s = 0; s < i; s++) {\n const a = t[s], c = e[s];\n if (a.width !== c.width || a.height !== c.height) {\n r = !1;\n break;\n }\n }\n if (r)\n return !0;\n let n = 0;\n for (let s = 0; s < i; s++)\n for (let a = 0; a < i; a++)\n if (t[s].width === e[a].width && t[s].height === e[a].height) {\n n++;\n break;\n }\n return n === i;\n}\nfunction Ut(t) {\n return Ve(0, t);\n}\nvar ue = (t, e, i) => new Promise((r, n) => {\n var s = (u) => {\n try {\n c(i.next(u));\n } catch (p) {\n n(p);\n }\n }, a = (u) => {\n try {\n c(i.throw(u));\n } catch (p) {\n n(p);\n }\n }, c = (u) => u.done ? r(u.value) : Promise.resolve(u.value).then(s, a);\n c((i = i.apply(t, e)).next());\n});\nclass Nn {\n constructor() {\n this.config = { verificationsRequired: 1, approximateServices: !0, enableFetching: !0, disableThrottling: !1 }, this.fetchingCount = 0, this.imageServices = {}, this.knownImageServers = {};\n }\n setConfig(e) {\n Object.assign(this.config, e);\n }\n sample(e, i, r = !0) {\n const n = Se(O(e)), s = ye(O(e)), a = this.knownImageServers[n];\n return this.imageServices[s] = Object.assign(e, { real: !0 }), !a && e.tiles && !Ut(e) ? (this.knownImageServers[n] = { verifications: 0, malformed: !1, root: n, preLoaded: r, sampledId: O(e), verified: !1, server: null, result: { context: e[\"@context\"] || [], sampledProfile: e.profile, resourceServiceRatio: i && e.height ? i.height / e.height : 1, sampledSizes: e.sizes || [], sizeRatios: un(e.width, e.height, e.sizes || []), sampledTiles: e.tiles || [] } }, !0) : this.verify(e);\n }\n preLoad(e, i = !0) {\n this.knownImageServers[e.root] = e, i && (this.knownImageServers[e.root].malformed = !1, this.knownImageServers[e.root].verifications = this.config.verificationsRequired);\n }\n predict(e, i = !1, r = !1) {\n const n = e == null ? void 0 : e.source, s = Se(O(e)), a = this.knownImageServers[s];\n if (!a || !a.result || !(n != null && n.height || e.height) || !(n != null && n.width || e.width) || !r && (a.malformed || a.verifications < this.config.verificationsRequired) || Ut(e.source))\n return null;\n const c = ye(O(e));\n return this.imageServices[c] || (this.imageServices[c] = { \"@context\": a.result.context, \"@id\": O(e), id: O(e), protocol: \"http://iiif.io/api/image\", tiles: (n == null ? void 0 : n.tiles) || jn(e.width, e.height, a.result.sampledTiles), sizes: (n == null ? void 0 : n.sizes) || pn(Math.round(e.width / a.result.resourceServiceRatio), Math.round(e.height / a.result.resourceServiceRatio), a.result.sizeRatios), profile: (n == null ? void 0 : n.profile) || a.result.sampledProfile, height: (n == null ? void 0 : n.height) || e.height, width: (n == null ? void 0 : n.width) || e.width, real: !1 }), this.imageServices[c];\n }\n getThumbnailFromResource(e, i) {\n return ue(this, arguments, function* (r, n, s = !0, a = []) {\n const c = r ? yield this.getImageCandidates(r, s) : [];\n return On(n, [() => a, () => c]);\n });\n }\n getImageCandidates(e, i = !0) {\n return ue(this, null, function* () {\n const r = e;\n if (i && r.height && r.width) {\n const n = Ei(r);\n for (const s of n) {\n const a = { id: O(s), width: s.width ? s.width : r.width, height: s.height ? s.height : r.height, source: s };\n yield this.loadService(a);\n }\n }\n return mn(e, i, this);\n });\n }\n verify(e) {\n return ue(this, null, function* () {\n const i = this.predict(e, !1, !0), r = yield this.fetchService(O(e));\n if (!i)\n return !1;\n const n = i.height === r.height && i.width === r.width && i[\"@context\"] === r[\"@context\"] && Dn(i.sizes || [], r.sizes || []);\n if (n) {\n const s = Se(O(e));\n this.knownImageServers[s].verifications += 1, this.knownImageServers[s].verifications >= this.config.verificationsRequired && (this.knownImageServers[s].verified = !0);\n }\n return n;\n });\n }\n canLoadSync(e) {\n const i = typeof e == \"string\" ? e : O(e), r = ye(i);\n if (this.imageServices[r])\n return !0;\n const n = this.knownImageServers[Se(i)];\n return n && !n.malformed && n.verifications >= this.config.verificationsRequired;\n }\n markAsMalformed(e) {\n return ue(this, null, function* () {\n return this.knownImageServers[Se(O(e))].malformed = !0, this.loadService(e, !0);\n });\n }\n fetchService(e, i = !1) {\n return ue(this, null, function* () {\n const r = ye(e);\n if (this.imageServices[r] && (!i || this.imageServices[r].real))\n return this.imageServices[r];\n if (!this.config.enableFetching)\n throw new Error(\"Fetching is not enabled\");\n const n = yield this.fetch(r).then((s) => s.json());\n return !n.id && n[\"@id\"] && (n.id = n[\"@id\"]), n.id !== e && (n.id = e, n[\"@id\"] && (n[\"@id\"] = e)), this.imageServices[r] = Object.assign(n, { real: !0 }), this.imageServices[r];\n });\n }\n fetch(e, i) {\n return ue(this, null, function* () {\n return fetch(e, i);\n });\n }\n loadService(e, i = !1) {\n return ue(this, null, function* () {\n if (!this.config.disableThrottling) {\n let s = !0;\n for (; s; )\n if (this.fetchingCount >= this.config.verificationsRequired)\n yield new Promise((a) => setTimeout(a, 500));\n else {\n s = !1;\n break;\n }\n }\n const r = this.knownImageServers[Se(O(e))];\n if (r && !r.malformed && !i) {\n yield r.result;\n const s = this.loadServiceSync(e);\n if (s)\n return s;\n }\n this.fetchingCount++;\n const n = yield this.fetchService(O(e), i);\n return this.fetchingCount--, n.real && this.sample(n, e), n;\n });\n }\n loadServiceSync(e) {\n const i = ye(O(e));\n return this.imageServices[i] ? this.imageServices[i] : this.predict(e);\n }\n}\nconst $n = new Nn(), Wt = /* @__PURE__ */ new Map();\nfunction Mo(t, {\n vault: e = V,\n dereference: i = !1,\n ...r\n} = {}) {\n let n = Wt.get(e);\n return n || (n = qn(e), Wt.set(e, n)), n.getBestThumbnailAtSize(t, r, i);\n}\nfunction qn(t = V, e = {}) {\n const i = e.imageServiceLoader || $n;\n async function r(n, s, a = !1, c = [], u) {\n const p = () => i.getThumbnailFromResource(void 0, s, a, c);\n if (!n)\n return await i.getThumbnailFromResource(void 0, s, a, c);\n if (typeof n == \"string\") {\n const y = ct(n);\n return y && c.push(y), await i.getThumbnailFromResource(void 0, s, a, c);\n }\n const f = t.get(n, { skipSelfReturn: !1 });\n if (typeof f == \"string\")\n return { best: ct(f), fallback: [], log: [] };\n if (!f)\n return await p();\n switch (await (async (y) => {\n if (y && y.thumbnail && y.thumbnail.length) {\n const m = t.get(y.thumbnail[0]), h = await i.getImageCandidates(m, a);\n h && h.length && c.push(...h);\n }\n })(f), f.type) {\n case \"Annotation\": {\n const y = Array.isArray(f.body) ? f.body : [f.body], m = t.get(y[0]);\n return u && !m.width && (m.width = u.width, m.height = u.height), await i.getThumbnailFromResource(m, s, a, c);\n }\n case \"Canvas\": {\n const y = f;\n return r(y.items[0], s, a, c, {\n width: y.width,\n height: y.height\n });\n }\n case \"AnnotationPage\":\n return r(f.items[0], s, a, c, u);\n case \"Choice\": {\n const y = f;\n return !y.items || y.items[0] ? await p() : r(y.items[0], s, a, c, u);\n }\n case \"Collection\": {\n const m = f.items[0];\n return m ? r(m, s, a, c, u) : await p();\n }\n case \"Manifest\": {\n const m = f.items[0];\n return m ? r(m, s, a, c, u) : await p();\n }\n case \"SpecificResource\":\n case \"Image\":\n case \"Dataset\":\n case \"Sound\":\n case \"Text\":\n case \"TextualBody\":\n case \"Video\":\n return u && !f.width && (f.width = u.width, f.height = u.height), i.getThumbnailFromResource(f, s, a, c);\n }\n return await p();\n }\n return {\n getBestThumbnailAtSize: r\n };\n}\nfunction Un(t, e, i = [], r = !1, n = []) {\n if (n.length && (e = e.filter((s) => n.indexOf(s) === -1)), !(!e || e.length === 0)) {\n if (e.length === 1)\n return e[0];\n if (!t && e.indexOf(\"none\") !== -1)\n return \"none\";\n {\n if (e.indexOf(t) !== -1)\n return t;\n const s = t.indexOf(\"-\") !== -1 ? t.slice(0, t.indexOf(\"-\")) : null;\n if (s && e.indexOf(s) !== -1)\n return s;\n }\n for (const s of i)\n if (e.indexOf(s) !== -1)\n return s;\n if (!r && t) {\n const a = e.map((c) => c.indexOf(\"-\") !== -1 ? c.slice(0, c.indexOf(\"-\")) : null).indexOf(t);\n if (a !== -1)\n return e[a];\n for (const c of i) {\n const u = c.indexOf(\"-\") !== -1 ? c.slice(0, c.indexOf(\"-\")) : null, p = u ? e.indexOf(u) : -1;\n if (p !== -1)\n return e[p];\n }\n }\n return e.indexOf(\"none\") !== -1 ? \"none\" : e.indexOf(\"@none\") !== -1 ? \"@none\" : e[0];\n }\n}\nfunction Oi(t, e, i = {}) {\n const {\n strictFallback: r = !1,\n defaultText: n = \"\",\n separator: s = `\n`,\n fallbackLanguages: a = [],\n closest: c,\n skipLanguages: u\n } = i, p = Object.keys(t || {}), f = c ? e : Un(e, p, a, r, u);\n if (!t)\n return n;\n if (typeof t == \"string\")\n return t;\n const v = f ? t[f] : void 0;\n if (v && f) {\n if (typeof v == \"string\")\n return v;\n if (v.length === 1 && v[0] === \"\") {\n const y = i.skipLanguages || [];\n return Oi(t, e, {\n ...i,\n skipLanguages: [...y, f]\n });\n }\n return v.join(s);\n }\n return \"\";\n}\nfunction ko(t, e = {}) {\n return Oi(\n t,\n e.language || (typeof navigator < \"u\" ? navigator.language : \"en\"),\n e\n );\n}\nvar Wn = function() {\n function t(e, i) {\n var r = [], n = !0, s = !1, a = void 0;\n try {\n for (var c = e[Symbol.iterator](), u; !(n = (u = c.next()).done) && (r.push(u.value), !(i && r.length === i)); n = !0)\n ;\n } catch (p) {\n s = !0, a = p;\n } finally {\n try {\n !n && c.return && c.return();\n } finally {\n if (s)\n throw a;\n }\n }\n return r;\n }\n return function(e, i) {\n if (Array.isArray(e))\n return e;\n if (Symbol.iterator in Object(e))\n return t(e, i);\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n };\n}(), ke = Math.PI * 2, Ze = function(e, i, r, n, s, a, c) {\n var u = e.x, p = e.y;\n u *= i, p *= r;\n var f = n * u - s * p, v = s * u + n * p;\n return {\n x: f + a,\n y: v + c\n };\n}, zn = function(e, i) {\n var r = i === 1.5707963267948966 ? 0.551915024494 : i === -1.5707963267948966 ? -0.551915024494 : 1.3333333333333333 * Math.tan(i / 4), n = Math.cos(e), s = Math.sin(e), a = Math.cos(e + i), c = Math.sin(e + i);\n return [{\n x: n - s * r,\n y: s + n * r\n }, {\n x: a + c * r,\n y: c - a * r\n }, {\n x: a,\n y: c\n }];\n}, zt = function(e, i, r, n) {\n var s = e * n - i * r < 0 ? -1 : 1, a = e * r + i * n;\n return a > 1 && (a = 1), a < -1 && (a = -1), s * Math.acos(a);\n}, Vn = function(e, i, r, n, s, a, c, u, p, f, v, y) {\n var m = Math.pow(s, 2), h = Math.pow(a, 2), A = Math.pow(v, 2), x = Math.pow(y, 2), S = m * h - m * x - h * A;\n S < 0 && (S = 0), S /= m * x + h * A, S = Math.sqrt(S) * (c === u ? -1 : 1);\n var C = S * s / a * y, E = S * -a / s * v, P = f * C - p * E + (e + r) / 2, j = p * C + f * E + (i + n) / 2, k = (v - C) / s, $ = (y - E) / a, B = (-v - C) / s, G = (-y - E) / a, oe = zt(1, 0, k, $), W = zt(k, $, B, G);\n return u === 0 && W > 0 && (W -= ke), u === 1 && W < 0 && (W += ke), [P, j, oe, W];\n}, Bn = function(e) {\n var i = e.px, r = e.py, n = e.cx, s = e.cy, a = e.rx, c = e.ry, u = e.xAxisRotation, p = u === void 0 ? 0 : u, f = e.largeArcFlag, v = f === void 0 ? 0 : f, y = e.sweepFlag, m = y === void 0 ? 0 : y, h = [];\n if (a === 0 || c === 0)\n return [];\n var A = Math.sin(p * ke / 360), x = Math.cos(p * ke / 360), S = x * (i - n) / 2 + A * (r - s) / 2, C = -A * (i - n) / 2 + x * (r - s) / 2;\n if (S === 0 && C === 0)\n return [];\n a = Math.abs(a), c = Math.abs(c);\n var E = Math.pow(S, 2) / Math.pow(a, 2) + Math.pow(C, 2) / Math.pow(c, 2);\n E > 1 && (a *= Math.sqrt(E), c *= Math.sqrt(E));\n var P = Vn(i, r, n, s, a, c, v, m, A, x, S, C), j = Wn(P, 4), k = j[0], $ = j[1], B = j[2], G = j[3], oe = Math.abs(G) / (ke / 4);\n Math.abs(1 - oe) < 1e-7 && (oe = 1);\n var W = Math.max(Math.ceil(oe), 1);\n G /= W;\n for (var Ee = 0; Ee < W; Ee++)\n h.push(zn(B, G)), B += G;\n return h.map(function(ce) {\n var N = Ze(ce[0], a, c, x, A, k, $), Qe = N.x, He = N.y, De = Ze(ce[1], a, c, x, A, k, $), Q = De.x, Ne = De.y, Oe = Ze(ce[2], a, c, x, A, k, $), Ye = Oe.x, _e = Oe.y;\n return { x1: Qe, y1: He, x2: Q, y2: Ne, x: Ye, y: _e };\n });\n}, Gn = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nfunction _i(t) {\n return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, \"default\") ? t.default : t;\n}\nvar Qn = Yn, et = { a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0 }, Hn = /([astvzqmhlc])([^astvzqmhlc]*)/ig;\nfunction Yn(t) {\n var e = [];\n return t.replace(Hn, function(i, r, n) {\n var s = r.toLowerCase();\n for (n = Xn(n), s == \"m\" && n.length > 2 && (e.push([r].concat(n.splice(0, 2))), s = \"l\", r = r == \"m\" ? \"l\" : \"L\"); ; ) {\n if (n.length == et[s])\n return n.unshift(r), e.push(n);\n if (n.length < et[s])\n throw new Error(\"malformed path data\");\n e.push([r].concat(n.splice(0, et[s])));\n }\n }), e;\n}\nvar Jn = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig;\nfunction Xn(t) {\n var e = t.match(Jn);\n return e ? e.map(Number) : [];\n}\nconst Kn = /* @__PURE__ */ _i(Qn);\nvar Zn = es;\nfunction es(t) {\n var e = 0, i = 0, r = 0, n = 0;\n return t.map(function(s) {\n s = s.slice();\n var a = s[0], c = a.toUpperCase();\n if (a != c)\n switch (s[0] = c, a) {\n case \"a\":\n s[6] += r, s[7] += n;\n break;\n case \"v\":\n s[1] += n;\n break;\n case \"h\":\n s[1] += r;\n break;\n default:\n for (var u = 1; u < s.length; )\n s[u++] += r, s[u++] += n;\n }\n switch (c) {\n case \"Z\":\n r = e, n = i;\n break;\n case \"H\":\n r = s[1];\n break;\n case \"V\":\n n = s[1];\n break;\n case \"M\":\n r = e = s[1], n = i = s[2];\n break;\n default:\n r = s[s.length - 2], n = s[s.length - 1];\n }\n return s;\n });\n}\nconst ts = /* @__PURE__ */ _i(Zn);\nfunction is(t) {\n const e = Kn(t), i = ts(e);\n let r, n = 0, s = 0, a = 0, c = 0, u, p, f = 0, v = 0;\n const y = [];\n for (let m = 0; m < i.length; m++) {\n let h = i[m];\n const A = h[0];\n switch (A) {\n case \"M\":\n n = h[1], s = h[2];\n break;\n case \"H\":\n h = [\"L\", h[1], s];\n break;\n case \"V\":\n h = [\"L\", n, h[1]];\n break;\n case \"S\":\n {\n let x = f, S = v;\n (r === \"C\" || r == \"S\") && (x += x - a, S += S - c), h = [\"C\", x, S, h[1], h[2], h[3], h[4]];\n }\n break;\n case \"T\":\n r === \"Q\" || r == \"T\" ? (u = f * 2 - u, p = v * 2 - p) : (u = f, p = v), h = [\"Q\", u, p, h[1], h[2]];\n break;\n case \"Q\":\n u = h[1], p = h[2];\n break;\n case \"A\":\n {\n const x = Bn({\n px: f,\n py: v,\n cx: h[6],\n cy: h[7],\n rx: h[1],\n ry: h[2],\n xAxisRotation: h[3],\n largeArcFlag: h[4],\n sweepFlag: h[5]\n });\n if (!x.length)\n continue;\n for (const [S, C] of x.entries())\n h = [\"C\", C.x1, C.y1, C.x2, C.y2, C.x, C.y], S < x.length - 1 && y.push(h);\n h = h;\n }\n break;\n case \"Z\":\n h = [\"L\", n, s];\n break;\n }\n r = A, f = h[h.length - 2], v = h[h.length - 1], [\"C\", \"Q\", \"A\"].indexOf(A) > -1 ? (a = h[h.length - 4], c = h[h.length - 3]) : (a = f, c = v), y.push(h);\n }\n return y;\n}\n/** Code to \"flatten\" quadratic and cubic Bézier curves to polylines.\n *\n * All code in this module is based on JavaScript code by Raph Levien, published on his blog at\n * https://raphlinus.github.io/.\n * I merely changed the structure a bit, removed some unneeded parts and added some comments and type hints.\n *\n * Flattening of quadratic Bézier curves:\n * - Article: https://raphlinus.github.io/graphics/curves/2019/12/23/flatten-quadbez.html\n * - Code: https://github.com/raphlinus/raphlinus.github.io/blob/master/_posts/2019-12-23-flatten-quadbez.md?plain=1#L73-L212\n *\n * Flattening of cubic Bézier curves: https://levien.com/tmp/flatten.html\n *\n * Note that the code in this module has a different license than the rest of the package,\n * due to the inclusion of Apache-licensed third party code.\n *\n * @license\n * Copyright 2022 Johannes Baiter <johannes.baiter@gmail.com>\n * Copyright 2019, 2022 Raph Levien <raph.levien@gmail.com>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction rs(t, e, i, r = 1) {\n return new Ti(t, e, i).subdivide(r);\n}\nfunction ns(t, e, i, r, n = 1) {\n return new wt(\n new Float64Array([t.x, t.y, e.x, e.y, i.x, i.y, r.x, r.y])\n ).subdivide(n);\n}\nfunction ss(t) {\n return t.x * t.x + t.y * t.y;\n}\nfunction Fe(t) {\n return t / (1 - 0.67 + Math.pow(Math.pow(0.67, 4) + 0.25 * t * t, 0.25));\n}\nfunction Re(t) {\n return t * (1 - 0.39 + Math.sqrt(0.39 * 0.39 + 0.25 * t * t));\n}\nclass Ti {\n constructor(e, i, r) {\n D(this, \"start\");\n D(this, \"control\");\n D(this, \"end\");\n this.start = e, this.control = i, this.end = r;\n }\n eval(e) {\n const i = 1 - e;\n return {\n x: this.start.x * i * i + 2 * this.control.x * i * e + this.end.x * e * e,\n y: this.start.y * i * i + 2 * this.control.y * i * e + this.end.y * e * e\n };\n }\n mapToBasic() {\n const { x: e, y: i } = this.start, { x: r, y: n } = this.control, { x: s, y: a } = this.end, c = 2 * r - e - s, u = 2 * n - i - a, p = (r - e) * c + (n - i) * u, f = (s - r) * c + (a - n) * u, v = (s - e) * u - (a - i) * c, y = p / v, m = f / v, h = Math.abs(v) / (Math.hypot(c, u) * Math.abs(m - y));\n return { x0: e, x2: s, scale: h, cross: v };\n }\n subdivide(e) {\n const i = this.mapToBasic(), r = Fe(i.x0), n = Fe(i.x2), s = 0.5 * Math.abs(n - r) * Math.sqrt(i.scale / e), a = Math.ceil(s), c = Re(r), u = Re(n), p = [0];\n for (let f = 1; f < a; f++) {\n const y = (Re(r + (n - r) * f / a) - c) / (u - c);\n p.push(y);\n }\n return p.push(1), p.map((f) => this.eval(f));\n }\n}\nclass wt {\n /// Argument is array of coordinate values [x0, y0, x1, y1, x2, y2, x3, y3].\n constructor(e) {\n D(this, \"c\");\n this.c = e;\n }\n weightsum(e, i, r, n) {\n const s = e * this.c[0] + i * this.c[2] + r * this.c[4] + n * this.c[6], a = e * this.c[1] + i * this.c[3] + r * this.c[5] + n * this.c[7];\n return { x: s, y: a };\n }\n eval(e) {\n const i = 1 - e, r = i * i * i, n = 3 * i * i * e, s = 3 * i * e * e, a = e * e * e;\n return this.weightsum(r, n, s, a);\n }\n deriv(e) {\n const i = 1 - e, r = -3 * i * i, n = 3 * e * e, s = -6 * e * i - r, a = 6 * e * i - n;\n return this.weightsum(r, s, a, n);\n }\n // quadratic bezier with matching endpoints and minimum max vector error\n midpoint_quadbez() {\n const e = this.weightsum(-0.25, 0.75, 0.75, -0.25);\n return new Ti({ x: this.c[0], y: this.c[1] }, e, { x: this.c[6], y: this.c[7] });\n }\n subsegment(e, i) {\n const r = new Float64Array(8), n = this.eval(e), s = this.eval(i);\n r[0] = n.x, r[1] = n.y;\n const a = (i - e) / 3, c = this.deriv(e);\n r[2] = n.x + a * c.x, r[3] = n.y + a * c.y;\n const u = this.deriv(i);\n return r[4] = s.x - a * u.x, r[5] = s.y - a * u.y, r[6] = s.x, r[7] = s.y, new wt(r);\n }\n // Very fancy subdivision scheme\n subdivide(e) {\n const i = 0.1 * e, r = e - i, n = Math.sqrt(r), s = ss(this.weightsum(1, -3, 3, -1)), a = Math.ceil(Math.pow(s / (432 * i * i), 1 / 6)), c = [];\n let u = 0;\n for (let h = 0; h < a; h++) {\n const A = h / a, x = (h + 1) / a, S = this.subsegment(A, x).midpoint_quadbez(), C = S.mapToBasic(), E = Fe(C.x0), P = Fe(C.x2), j = Math.sqrt(C.scale);\n let k = Math.abs(P - E) * j;\n if (Math.sign(C.x0) != Math.sign(C.x2)) {\n const $ = n / j, B = n * Math.abs(P - E) / Fe($);\n k = Math.max(k, B);\n }\n c.push({\n quad: S,\n a0: E,\n a2: P,\n val: k\n }), u += k;\n }\n const p = 0.5 * u / n, f = Math.ceil(p), v = [{ x: this.c[0], y: this.c[1] }];\n let y = 0, m = 0;\n for (let h = 1; h < f; h++) {\n const A = u * h / f;\n for (; y + c[m].val < A; )\n y += c[m].val, m++;\n const x = c[m].a0, S = c[m].a2, C = Re(x), E = Re(S), P = x + (S - x) * (A - y) / c[m].val, k = (Re(P) - C) / (E - C);\n v.push(c[m].quad.eval(k));\n }\n return v.push({ x: this.c[6], y: this.c[7] }), v;\n }\n}\nconst as = /&?(xywh=)?(pixel:|percent:|pct:)?([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?)/, os = /&?(t=)(npt:)?([0-9]+(.[0-9]+)?)?(,([0-9]+(.[0-9]+)?))?/, Vt = /^rgba\\((\\d+),(\\d+),(\\d+),([0-9.]+)\\)$/;\nfunction Be(t, {\n domParser: e,\n svgPreprocessor: i,\n iiifRenderingHints: r\n} = {}) {\n if (Array.isArray(t))\n return q(\n t.reduce(\n (n, s) => {\n const {\n selector: a,\n selectors: c,\n iiifRenderingHints: u\n } = Be(s, { domParser: e, svgPreprocessor: i, iiifRenderingHints: r });\n return a && (n.selector || (n.selector = a), n.selectors.push(...c)), u && (n.iiifRenderingHints = n.iiifRenderingHints || { type: \"ImageApiSelector\" }, Object.assign(n.iiifRenderingHints, u)), n;\n },\n {\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n }\n )\n );\n if (!t)\n return q({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n if (typeof t == \"string\") {\n const [n, s] = t.split(\"#\");\n return s ? Be(\n { type: \"FragmentSelector\", value: s },\n { svgPreprocessor: i, iiifRenderingHints: r, domParser: e }\n ) : q({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n }\n if (t.type && t.type === \"PointSelector\" && (t.t || t.t === 0)) {\n const n = {\n type: \"TemporalSelector\",\n temporal: {\n startTime: t.t\n }\n };\n return q({\n selector: n,\n selectors: [n],\n iiifRenderingHints: r\n });\n }\n if (us(t)) {\n const n = [];\n if (t.region) {\n const s = Be(\n { type: \"FragmentSelector\", value: \"xywh=\" + t.region },\n { domParser: e, svgPreprocessor: i, iiifRenderingHints: r }\n );\n n.push(...s.selectors);\n }\n return q({\n selector: n[0],\n selectors: n,\n iiifRenderingHints: r ? { ...r, ...t } : t\n });\n }\n if (t.type === \"FragmentSelector\") {\n const n = as.exec(t.value);\n if (n) {\n const a = {\n type: \"BoxSelector\",\n spatial: {\n unit: n[2] === \"percent:\" || n[2] === \"pct:\" ? \"percent\" : \"pixel\",\n x: parseFloat(n[3]),\n y: parseFloat(n[4]),\n width: parseFloat(n[5]),\n height: parseFloat(n[6])\n }\n };\n return q({\n selector: a,\n selectors: [a],\n iiifRenderingHints: r\n });\n }\n const s = t.value.match(os);\n if (s) {\n const a = {\n type: \"TemporalSelector\",\n temporal: {\n startTime: s[4] ? parseFloat(s[4]) : 0,\n endTime: s[7] ? parseFloat(s[7]) : void 0\n }\n };\n return q({\n selector: a,\n selectors: [a],\n iiifRenderingHints: r\n });\n }\n return q({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n }\n if (t.type === \"SvgSelector\" && \"value\" in t) {\n e || (typeof window < \"u\" ? e = new window.DOMParser() : console.warn(\n \"No DOMParser available, cannot parse SVG selector, `points`, `spatial` and `style` will be unavailable and the SVG will not be normalized.\"\n ));\n let n = [], s, a, c = (i == null ? void 0 : i(t.value)) ?? t.value, u;\n if (e) {\n const f = e.parseFromString(t.value, \"image/svg+xml\").querySelector(\"svg\");\n if (!f)\n return console.warn(`Illegal SVG selector: ${t.value}`), q({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n const v = Mi(f);\n v && (n = v.points, u = v.shapeType, s = [\n Math.min(...n.map((y) => y[0])),\n // llx\n Math.min(...n.map((y) => y[1])),\n // lly\n Math.max(...n.map((y) => y[0])),\n // urx\n Math.max(...n.map((y) => y[1]))\n // ury\n ], { style: a, svg: c } = fs(v.element) ?? { svg: c });\n }\n const p = {\n type: \"SvgSelector\",\n svg: c,\n svgShape: u,\n style: a,\n points: n.length ? n : void 0,\n spatial: s ? { unit: \"pixel\", x: s[0], y: s[1], width: s[2] - s[0], height: s[3] - s[1] } : void 0\n };\n return q({\n selector: p,\n selectors: [p],\n iiifRenderingHints: r\n });\n }\n return q({\n selector: null,\n selectors: [],\n iiifRenderingHints: r\n });\n}\nfunction cs(t) {\n const e = t.map((r) => r[0]).reduce(\n (r, n) => (r[n] += 1, r),\n { C: 0, Q: 0, L: 0, M: 0 }\n ), i = new Set(t.map((r) => r[0]));\n if (e.C > 0 || e.Q > 0)\n return \"path\";\n if (e.L > 0 && (i.size === 1 || i.size === 2 && i.has(\"M\"))) {\n if (e.L === 4)\n return \"rect\";\n const r = t.slice(-1)[0];\n return t[0][0] === \"M\" && r[0] === \"L\" && r[1] == t[0][1] && r[2] === t[0][2] || r[1] === 0 && r[2] === 0 ? \"polygon\" : \"polyline\";\n }\n return \"path\";\n}\nfunction Mi(t) {\n var e;\n for (const i of Array.from(t.children))\n switch (i == null ? void 0 : i.tagName.toLowerCase()) {\n case \"g\":\n {\n const r = Mi(i);\n if (r)\n return r;\n }\n continue;\n case \"path\": {\n const r = i.getAttribute(\"d\");\n if (!r)\n continue;\n const n = is(r);\n return { element: i, points: ls(n), shapeType: cs(n) };\n }\n case \"circle\": {\n const r = parseFloat(i.getAttribute(\"cx\") ?? \"0\"), n = parseFloat(i.getAttribute(\"cy\") ?? \"0\"), s = parseFloat(i.getAttribute(\"r\") ?? \"0\");\n if (!s)\n continue;\n const a = [];\n for (let c = 0; c <= 360; c += 12) {\n const u = c * Math.PI / 180;\n a.push([r + s * Math.cos(u), n + s * Math.sin(u)]);\n }\n return { element: i, points: a, shapeType: \"circle\" };\n }\n case \"ellipse\": {\n const r = parseFloat(i.getAttribute(\"cx\") ?? \"0\"), n = parseFloat(i.getAttribute(\"cy\") ?? \"0\"), s = parseFloat(i.getAttribute(\"rx\") ?? \"0\"), a = parseFloat(i.getAttribute(\"ry\") ?? \"0\");\n if (!s && !a)\n continue;\n const c = [];\n for (let u = 0; u <= 360; u += 12) {\n const p = Math.tan(u / 360 * Math.PI), f = s * (1 - p ** 2) / (1 + p ** 2), v = a * 2 * p / (1 + p ** 2);\n c.push([r + f, n + v]);\n }\n return { element: i, points: c, shapeType: \"ellipse\" };\n }\n case \"line\": {\n const r = parseFloat(i.getAttribute(\"x0\") ?? \"0\"), n = parseFloat(i.getAttribute(\"y0\") ?? \"0\"), s = parseFloat(i.getAttribute(\"x1\") ?? \"0\"), a = parseFloat(i.getAttribute(\"y1\") ?? \"0\");\n if (r === s && n === a)\n continue;\n return {\n element: i,\n points: [\n [r, n],\n [s, a]\n ],\n shapeType: \"polyline\"\n };\n }\n case \"polygon\":\n case \"polyline\": {\n const r = ((e = i.getAttribute(\"points\")) == null ? void 0 : e.split(\" \").map((s) => s.split(\",\").map(parseFloat))) ?? [];\n if (!r.length)\n continue;\n let n = \"polyline\";\n return i.tagName.toLowerCase() === \"polygon\" && (r.push(r[0]), n = \"polygon\"), { element: i, points: r, shapeType: n };\n }\n case \"rect\": {\n const r = parseFloat(i.getAttribute(\"x\") ?? \"0\"), n = parseFloat(i.getAttribute(\"y\") ?? \"0\"), s = parseFloat(i.getAttribute(\"width\") ?? \"0\"), a = parseFloat(i.getAttribute(\"height\") ?? \"0\");\n if (!s || !a)\n continue;\n return {\n element: i,\n points: [\n [r, n],\n [r + s, n],\n [r + s, n + a],\n [r, n + a],\n [r, n]\n ],\n shapeType: \"rect\"\n };\n }\n default:\n continue;\n }\n return null;\n}\nfunction ls(t) {\n const e = [];\n for (let i = 0; i < t.length; i++) {\n const r = e[e.length - 1] ?? [0, 0], n = t[i];\n switch (n[0]) {\n case \"M\":\n case \"L\":\n e.push([n[1], n[2]]);\n continue;\n case \"C\":\n e.push(\n ...ns(\n { x: r[0], y: r[1] },\n { x: n[1], y: n[2] },\n { x: n[3], y: n[4] },\n { x: n[5], y: n[6] }\n ).map((s) => [s.x, s.y]).slice(1)\n // skip first point, already part of output\n );\n continue;\n case \"Q\":\n e.push(\n ...rs(\n { x: r[0], y: r[1] },\n { x: n[1], y: n[2] },\n { x: n[3], y: n[4] }\n ).map((s) => [s.x, s.y]).slice(1)\n // skip first point, already part of output\n );\n continue;\n }\n }\n return e;\n}\nfunction fs(t) {\n const e = {};\n if (t.hasAttribute(\"fill\") ? (e.fill = t.getAttribute(\"fill\"), t.removeAttribute(\"fill\")) : t.style.fill && (e.fill = t.style.fill), e.fill) {\n const r = Vt.exec(e.fill);\n r && (e.fillOpacity = parseFloat(r[4]), e.fill = `rgb(${r[1]}, ${r[2]}, ${r[3]})`);\n }\n if (t.hasAttribute(\"fill-opacity\") ? (e.fillOpacity = parseFloat(t.getAttribute(\"fill-opacity\")), t.removeAttribute(\"fill-opacity\")) : t.style.fillOpacity && (e.fillOpacity = parseFloat(t.style.fillOpacity)), t.hasAttribute(\"stroke\") ? (e.stroke = t.getAttribute(\"stroke\"), t.removeAttribute(\"stroke\")) : t.style.stroke && (e.stroke = t.style.stroke), e.stroke) {\n const r = Vt.exec(e.stroke);\n r && (e.strokeOpacity = parseFloat(r[4]), e.stroke = `rgb(${r[1]}, ${r[2]}, ${r[3]})`);\n }\n t.hasAttribute(\"stroke-opacity\") ? (e.strokeOpacity = parseFloat(t.getAttribute(\"stroke-opacity\")), t.removeAttribute(\"stroke-opacity\")) : t.style.strokeOpacity && (e.strokeOpacity = parseFloat(t.style.strokeOpacity)), t.hasAttribute(\"stroke-width\") ? (e.strokeWidth = t.getAttribute(\"stroke-width\"), t.removeAttribute(\"stroke-width\")) : t.style.strokeWidth && (e.strokeWidth = t.style.strokeWidth), t.hasAttribute(\"stroke-dasharray\") ? (e.strokeDasharray = t.getAttribute(\"stroke-dasharray\"), t.removeAttribute(\"stroke-dasharray\")) : t.style.strokeDasharray && (e.strokeDasharray = t.style.strokeDasharray);\n let i = t;\n for (; i.tagName.toLowerCase() !== \"svg\"; )\n if (i = i.parentElement, i === null)\n throw new Error(\"Could not find root SVG element\");\n return { svg: i.outerHTML, style: Object.keys(e).length > 0 ? e : void 0 };\n}\nfunction us(t) {\n return !!t && t.type === \"iiif:ImageApiSelector\" && t.type === \"iiif:ImageApiSelector\";\n}\nfunction q(t) {\n if (t.iiifRenderingHints) {\n const e = t.iiifRenderingHints;\n if (e.rotation) {\n const i = ps(e.rotation);\n if (i)\n if (t.selectors.length)\n for (const r of t.selectors)\n r.rotation = i;\n else\n t.selectors.push({\n type: \"RotationSelector\",\n rotation: i\n });\n }\n } else\n delete t.iiifRenderingHints;\n return t;\n}\nfunction ps(t) {\n let e = parseFloat(t);\n return e && t.startsWith(\"!\") && (e = 360 - e), e && (e = e % 360), e !== e ? 0 : e || 0;\n}\nfunction Ae(t, e = {}) {\n if (Array.isArray(t))\n return Ae(t[0]);\n if (typeof t == \"string\") {\n const [i, r] = t.split(\"#\");\n return r ? Ae({\n type: \"SpecificResource\",\n source: { id: i, type: \"Unknown\" },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n }) : {\n type: \"SpecificResource\",\n source: { id: i, type: e.typeMap && e.typeMap[i] || \"Unknown\" },\n selector: null,\n selectors: []\n };\n }\n if (t.type === \"Choice\" || t.type === \"List\" || t.type === \"Composite\" || t.type === \"Independents\")\n return Ae(t.items[0]);\n if (t.type === \"SpecificResource\") {\n t.source.type === \"Canvas\" && t.source.partOf && typeof t.source.partOf == \"string\" && (t.source.partOf = [\n {\n id: t.source.partOf,\n type: \"Manifest\"\n }\n ]);\n const { selector: i, selectors: r } = t.selector ? Be(t.selector, e) : { selector: null, selectors: [] };\n return {\n type: \"SpecificResource\",\n source: t.source,\n selector: i,\n selectors: r\n };\n }\n if (t.id) {\n t.type === \"Canvas\" && t.partOf && typeof t.partOf == \"string\" && (t.partOf = [\n {\n id: t.partOf,\n type: \"Manifest\"\n }\n ]);\n const [i, r] = t.id.split(\"#\");\n return r ? Ae({\n type: \"SpecificResource\",\n source: {\n ...t,\n id: i\n },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n }) : {\n type: \"SpecificResource\",\n source: {\n ...t,\n id: i\n },\n selector: null,\n selectors: []\n };\n }\n return {\n type: \"SpecificResource\",\n source: t,\n selector: null,\n selectors: []\n };\n}\nfunction Bt(t, e = !1) {\n if (typeof t == \"string\") {\n if (t.startsWith(\"{\"))\n try {\n const i = JSON.parse(t);\n return Bt(i);\n } catch {\n return [!1, { reason: \"Invalid JSON\" }];\n }\n return [!0];\n }\n if (Array.isArray(t)) {\n for (const i of t) {\n const [r, n] = Bt(i);\n if (!r && n)\n return [r, n];\n }\n return [!0];\n }\n return t.type === \"Annotation\" ? [!0] : e && t.type === \"Canvas\" && !t.partOf ? [!1, { reason: \"Canvas without partOf cannot be loaded\" }] : [!0];\n}\nfunction Fo(t) {\n return ds(typeof t == \"string\" ? t : JSON.stringify(t));\n}\nfunction hs(t, e) {\n if (t = t.trim(), t[0] === \"{\")\n return e ? Promise.resolve(JSON.parse(t)) : JSON.parse(t);\n if (t.startsWith(\"http\")) {\n if (!e)\n throw new Error(\"Cannot fetch remote fetch with async=false in parseContentState\");\n return fetch(t).then((i) => i.json());\n }\n return hs(vs(t), e);\n}\nfunction ds(t) {\n const e = encodeURIComponent(t);\n return (typeof btoa > \"u\" ? Buffer.from(e, \"utf-8\").toString(\"base64\") : btoa(e)).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nfunction vs(t) {\n const i = ys(t).replace(/-/g, \"+\").replace(/_/g, \"/\"), r = typeof atob > \"u\" ? Buffer.from(i, \"base64\").toString(\"utf-8\") : atob(i);\n return decodeURIComponent(r).trim();\n}\nfunction ys(t) {\n const e = t.length % 4;\n if (e === 1)\n throw new Error(\"InvalidLengthError: Input base64url string is the wrong length to determine padding\");\n return t + (e ? \"====\".slice(0, 4 - e) : \"\");\n}\nfunction Lo(t) {\n if (!t)\n throw new Error(\"Content state is empty\");\n Array.isArray(t) || (t = [t]);\n let e = \"vault://virtual-annotation/\" + (/* @__PURE__ */ new Date()).getTime();\n const i = [];\n for (const r of t) {\n if (typeof r == \"string\")\n throw new Error(\"Content state is a [String] type and cannot be inferred\");\n if (r.type === \"Annotation\") {\n if (e = r.id, Array.isArray(r.motivation))\n for (const s of r.motivation)\n ;\n if (Array.isArray(r.target))\n for (const s of r.target) {\n const a = Ae(s);\n i.push(a);\n }\n else {\n const s = Ae(r.target);\n i.push(s);\n }\n continue;\n }\n const n = Ae(r);\n i.push(n);\n }\n return {\n id: e,\n type: \"Annotation\",\n motivation: [\"contentState\", ...t.motivation || []],\n target: i,\n extensions: {}\n };\n}\nfunction ms(t) {\n return t.type === \"SpecificResource\" ? [t.source, { selector: t.selector }] : [t, { selector: null }];\n}\nfunction Po(t = V) {\n function e(n) {\n const s = n ? typeof n == \"string\" ? t.get(n) : n : null;\n if (!s)\n return [];\n const a = t.get(s.items, { parent: s }), c = [];\n for (const u of a)\n c.push(...t.get(u.items, { parent: u }));\n return c;\n }\n function i(n, s = []) {\n const a = Array.isArray(n) ? n : e(n), c = [];\n let u = null;\n const p = [];\n for (const f of a) {\n if (f.type !== \"Annotation\")\n throw new Error(\"getPaintables() accept either a canvas or list of annotations\");\n const v = Array.from(Array.isArray(f.body) ? f.body : [f.body]);\n for (const y of v) {\n const [m, { selector: h }] = ms(y), A = t.get(m), x = (A.type || \"unknown\").toLowerCase();\n if (x === \"choice\") {\n const S = t.get(A.items, { parent: A.id }), C = s.length ? s.map((E) => S.find((P) => P.id === E)).filter(Boolean) : [S[0]];\n C.length === 0 && C.push(S[0]), u = {\n type: \"single-choice\",\n items: S.map((E) => ({\n id: E.id,\n label: E.label,\n selected: C.indexOf(E) !== -1\n })),\n label: m.label\n }, v.push(...C);\n continue;\n }\n c.indexOf(x) === -1 && c.push(x), p.push({\n type: x,\n annotationId: f.id,\n resource: A,\n target: f.target,\n selector: h\n });\n }\n }\n return {\n types: c,\n items: p,\n choice: u\n };\n }\n function r(n) {\n const { choice: s } = i(n);\n return s;\n }\n return {\n getAllPaintingAnnotations: e,\n getPaintables: i,\n extractChoices: r\n };\n}\nfunction jo(t = V) {\n return {\n findFirstCanvasFromRange: (e) => ki(t, e),\n findAllCanvasesInRange: (e) => Ct(t, e),\n findManifestSelectedRange: (e, i) => gs(t, e, i),\n findSelectedRange: (e, i) => Rt(t, e, i)\n };\n}\nfunction ki(t, e) {\n var i;\n for (const r of e.items) {\n if (r.type === \"SpecificResource\" && ((i = r.source) == null ? void 0 : i.type) === \"Canvas\")\n return r.source;\n if (r.type === \"Range\") {\n const n = ki(t, t.get(r));\n if (n)\n return n;\n }\n }\n return null;\n}\nfunction Ct(t, e) {\n var r;\n const i = [];\n for (const n of e.items)\n n.type === \"SpecificResource\" && ((r = n.source) == null ? void 0 : r.type) === \"Canvas\" && (n.source.id.indexOf(\"#\") !== -1 ? i.push({ id: n.source.id.split(\"#\")[0], type: \"Canvas\" }) : i.push(n.source)), n.type === \"Range\" && i.push(...Ct(t, t.get(n)));\n return i;\n}\nfunction gs(t, e, i) {\n for (const r of e.structures) {\n const n = Rt(t, t.get(r), i);\n if (n)\n return n;\n }\n return null;\n}\nfunction Rt(t, e, i) {\n for (const r of e.items) {\n if (r.type === \"SpecificResource\" && r.source === i)\n return e;\n if (r.type === \"Range\") {\n const n = Rt(t, t.get(r), i);\n if (n)\n return n;\n }\n }\n return null;\n}\nfunction Do(t = V) {\n return {\n getVisibleCanvasesFromCanvasId: (e, i, r = !1) => As(t, e, i, r),\n getManifestSequence: (e, i = {}) => Fi(t, e, i)\n };\n}\nfunction As(t = V, e, i, r = !1) {\n const n = e.behavior || [], s = i ? t.get(i) : null;\n if (!s)\n return [];\n const a = s.behavior || [], c = r ? !1 : n.includes(\"paged\"), u = c ? !1 : n.includes(\"continuous\"), p = c || u ? !1 : n.includes(\"individuals\"), f = a.includes(\"facing-pages\"), v = a.includes(\"non-paged\");\n if (f || v || p || r)\n return [{ id: s.id, type: \"Canvas\" }];\n const [y, m] = Fi(t, e);\n if (u)\n return y;\n const h = y.findIndex((A) => A.id === i);\n if (h === -1)\n return [];\n for (const A of m)\n if (A.includes(h))\n return A.map((x) => y[x]);\n return [{ id: s.id, type: \"Canvas\" }];\n}\nfunction Fi(t = V, e, { disablePaging: i, skipNonPaged: r } = {}) {\n const n = e.behavior || [], s = n.includes(\"paged\"), a = s ? !1 : n.includes(\"continuous\"), c = s || a ? !1 : n.includes(\"individuals\"), u = e.type === \"Manifest\" ? e.items : Ct(t, e);\n if (a)\n return [u, [u.map((h, A) => A)]];\n if (c || !s || i)\n return [u, u.map((h, A) => [A])];\n const p = [];\n let f = [];\n const v = () => {\n f.length && (p.push([...f]), f = []);\n };\n let y = 0, m = !1;\n for (let h = 0; h < u.length; h++) {\n const x = t.get(u[h]).behavior || [];\n if (x.includes(\"non-paged\")) {\n h === y && y++, r || (v(), p.push([h]), v());\n continue;\n }\n if (h === y || x.includes(\"facing-pages\")) {\n f.length && (m = !0), v(), p.push([h]), v();\n continue;\n }\n if (f.push(h), m) {\n v(), m = !1;\n continue;\n }\n f.length > 1 && v();\n }\n return f.length && v(), [u, p];\n}\nvar bs = Object.defineProperty, Ss = (t, e, i) => e in t ? bs(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i, re = (t, e, i) => (Ss(t, typeof e != \"symbol\" ? e + \"\" : e, i), i);\nfunction ne(t) {\n return typeof t == \"string\" ? !1 : !!t && t.type === \"SpecificResource\";\n}\nfunction Li(t, e) {\n const i = e || \"unknown\";\n if (!t)\n return;\n if (typeof t == \"string\")\n return { id: t, type: i };\n if (ne(t))\n return Li(t.source, e);\n let r = i && i !== \"unknown\" ? i : t.type || t[\"@type\"];\n const n = t.id || t[\"@id\"];\n if (r.indexOf(\":\") !== -1 && (r = r.split(\":\").pop()), n && r)\n return { id: n, type: r };\n}\nconst Le = {}, M = \"iiif-parser:hasPart\", z = \"iiif-parser:partOf\", Pe = \"iiif-parser:isExternal\", U = \"__$UNSET$__\", Pi = \"__$UNWRAP$__\", b = [];\nObject.freeze(b);\nObject.freeze(Le);\nfunction xs(t) {\n if (t === Le || Object.keys(t).length === 0)\n return !0;\n for (const e in t)\n return !1;\n return !0;\n}\nfunction It(t, e) {\n if (e && e[\"@explicit\"]) {\n const i = {}, r = Object.keys(e);\n for (const n of r)\n n === z || n === \"@explicit\" || (xs(e[n]) ? i[n] = t[n] : i[n] = e[n]);\n return i;\n }\n return t;\n}\nfunction ji(t, e, i) {\n const r = Li(e);\n if (!r)\n return [void 0, void 0];\n const n = t.requests[r.id], s = r.type || t.mapping[r.id];\n if (!s || n && n.resourceUri && !t.entities[s][n.resourceUri])\n return [void 0, void 0];\n const a = t.entities[s][n ? n.resourceUri : r.id];\n if (r.type && !a)\n return ji(t, { id: r.id }, i);\n if (a && a[M]) {\n const c = a[M].find((p) => i ? p[z] === i.id : p[z] === a.id);\n return [It(a, c), a];\n }\n return [a, a];\n}\nconst ws = {\n id: \"https://iiif-parser/annotation-page\",\n type: \"AnnotationPage\",\n behavior: b,\n label: null,\n thumbnail: b,\n summary: null,\n requiredStatement: null,\n metadata: b,\n rights: null,\n provider: b,\n items: b,\n seeAlso: b,\n homepage: b,\n rendering: b,\n service: b\n}, Cs = {\n id: \"https://iiif-parser/empty-canvas\",\n type: \"Canvas\",\n label: null,\n behavior: b,\n thumbnail: b,\n accompanyingCanvas: null,\n placeholderCanvas: null,\n summary: null,\n requiredStatement: null,\n metadata: b,\n rights: null,\n navDate: null,\n provider: b,\n items: b,\n annotations: b,\n seeAlso: b,\n homepage: b,\n partOf: b,\n rendering: b,\n service: b,\n duration: 0,\n height: 0,\n width: 0\n}, Rs = {\n id: \"https://iiif-parser/empty-collection\",\n type: \"Collection\",\n label: null,\n viewingDirection: \"left-to-right\",\n behavior: b,\n thumbnail: b,\n accompanyingCanvas: null,\n placeholderCanvas: null,\n summary: null,\n requiredStatement: null,\n metadata: b,\n rights: null,\n navDate: null,\n provider: b,\n items: b,\n annotations: b,\n seeAlso: b,\n homepage: b,\n partOf: b,\n rendering: b,\n service: b,\n services: b\n}, Is = {\n id: \"https://iiif-parser/empty-manifest\",\n type: \"Manifest\",\n annotations: b,\n behavior: b,\n homepage: b,\n items: b,\n label: null,\n metadata: b,\n navDate: null,\n provider: b,\n partOf: b,\n accompanyingCanvas: null,\n placeholderCanvas: null,\n rendering: b,\n requiredStatement: null,\n rights: null,\n seeAlso: b,\n service: b,\n services: b,\n start: null,\n structures: b,\n summary: null,\n thumbnail: b,\n viewingDirection: \"left-to-right\"\n}, Es = {\n id: \"https://iiif-parser/empty-canvas\",\n type: \"Range\",\n label: null,\n behavior: b,\n thumbnail: b,\n accompanyingCanvas: null,\n placeholderCanvas: null,\n summary: null,\n requiredStatement: null,\n metadata: b,\n rights: null,\n navDate: null,\n provider: b,\n items: b,\n annotations: b,\n seeAlso: b,\n homepage: b,\n partOf: b,\n rendering: b,\n service: b,\n start: null,\n supplementary: null,\n viewingDirection: \"left-to-right\"\n}, Os = {\n id: \"https://iiif-parser/empty-agent\",\n type: \"Agent\",\n label: {},\n logo: b,\n seeAlso: b,\n homepage: b\n}, _s = {\n id: \"https://iiif-parser/empty-service\",\n type: \"UnknownService\"\n};\nfunction we(t) {\n return Array.isArray(t) ? t : t ? [t] : [];\n}\nfunction We(...t) {\n return (e) => t.reduce((i, r) => r(i), e);\n}\nconst Gt = [\n \"Collection\",\n \"Manifest\",\n \"Canvas\",\n \"AnnotationPage\",\n \"AnnotationCollection\",\n \"Annotation\",\n \"ContentResource\",\n \"Range\",\n \"Service\",\n \"Selector\",\n \"Agent\"\n];\nfunction Ts(t, e) {\n if (typeof t > \"u\" || t === null)\n throw new Error(\"Null or undefined is not a valid entity.\");\n if (Array.isArray(t))\n throw new Error(\"Array is not a valid entity\");\n if (typeof t != \"object\") {\n if (e)\n return e;\n throw new Error(`${typeof t} is not a valid entity`);\n }\n if (typeof t.type == \"string\") {\n const i = Gt.indexOf(t.type);\n if (i !== -1)\n return Gt[i];\n }\n if (t.profile)\n return \"Service\";\n throw new Error(\"Resource type is not known\");\n}\nclass Et {\n constructor(e, i = {}) {\n re(this, \"traversals\"), re(this, \"options\"), re(this, \"_traverseManifest\", We(\n this.traverseManifestItems.bind(this),\n this.traverseLinking.bind(this),\n this.traverseDescriptive.bind(this),\n this.traverseLinkedCanvases.bind(this),\n this.traverseManifestStructures.bind(this),\n this.traverseInlineAnnotationPages.bind(this)\n )), re(this, \"_traverseCanvas\", We(\n this.traverseCanvasItems.bind(this),\n this.traverseLinking.bind(this),\n this.traverseDescriptive.bind(this),\n this.traverseLinkedCanvases.bind(this),\n this.traverseInlineAnnotationPages.bind(this)\n )), re(this, \"_traverseAnnotationPage\", We(\n this.traverseAnnotationPageItems.bind(this),\n this.traverseLinking.bind(this),\n this.traverseDescriptive.bind(this)\n )), re(this, \"_traverseRange\", We(\n this.traverseRangeRanges.bind(this),\n this.traverseLinking.bind(this),\n this.traverseDescriptive.bind(this),\n this.traverseLinkedCanvases.bind(this)\n )), this.traversals = {\n collection: [],\n manifest: [],\n canvas: [],\n annotationCollection: [],\n annotationPage: [],\n annotation: [],\n contentResource: [],\n choice: [],\n range: [],\n service: [],\n agent: [],\n specificResource: [],\n geoJson: [],\n ...e\n }, this.options = {\n allowUndefinedReturn: !1,\n ...i\n };\n }\n static all(e) {\n return new Et({\n collection: [e],\n manifest: [e],\n canvas: [e],\n annotationCollection: [e],\n annotationPage: [e],\n annotation: [e],\n contentResource: [e],\n choice: [e],\n range: [e],\n service: [e],\n geoJson: [e],\n specificResource: [e],\n agent: [e]\n });\n }\n traverseDescriptive(e) {\n return e.thumbnail && (e.thumbnail = we(e.thumbnail).map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e.provider && (e.provider = e.provider.map((i) => this.traverseAgent(i, e))), e;\n }\n traverseLinking(e) {\n return e.seeAlso && (e.seeAlso = e.seeAlso.map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e.service && (e.service = we(e.service).map((i) => this.traverseService(i))), e.services && (e.services = we(e.services).map((i) => this.traverseService(i, e))), e.logo && (e.logo = e.logo.map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e.homepage && (e.homepage = e.homepage.map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e.partOf && (e.partOf = e.partOf.map((i) => typeof i == \"string\" || !i.type ? this.traverseType(i, { parent: e }, this.traversals.contentResource) : i.type === \"Canvas\" ? this.traverseType(i, { parent: e }, this.traversals.canvas) : i.type === \"AnnotationCollection\" ? this.traverseType(\n i,\n { parent: e },\n this.traversals.annotationCollection\n ) : i.type === \"Collection\" ? this.traverseType(i, { parent: e }, this.traversals.collection) : this.traverseType(i, { parent: e }, this.traversals.contentResource))), e.start && (ne(e.start) ? e.start = this.traverseSpecificResource(e.start, \"Canvas\", e) : e.start = this.traverseType(e.start, { parent: e }, this.traversals.canvas)), e.rendering && (e.rendering = e.rendering.map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e.supplementary && (e.supplementary = e.supplementary.map(\n (i) => this.traverseType(i, { parent: e }, this.traversals.contentResource)\n )), e;\n }\n traverseCollectionItems(e) {\n return e.items && e.items.map((i) => i.type === \"Collection\" ? this.traverseCollection(i) : this.traverseManifest(i)), e;\n }\n traverseCollection(e, i) {\n return this.traverseType(\n this.traverseDescriptive(\n this.traverseInlineAnnotationPages(\n this.traverseLinking(this.traverseLinkedCanvases(this.traverseCollectionItems(e)))\n )\n ),\n { parent: i },\n this.traversals.collection\n );\n }\n traverseGeoJson(e, i) {\n return this.traverseType(e, { parent: i }, this.traversals.geoJson);\n }\n traverseNavPlace(e) {\n return e.navPlace && (e.navPlace = this.traverseGeoJson(e.navPlace, e)), e;\n }\n traverseManifestItems(e) {\n return e.items && (e.items = e.items.map((i) => this.traverseCanvas(i))), e;\n }\n traverseManifestStructures(e) {\n return e.structures && (e.structures = e.structures.map((i) => this.traverseRange(i))), e;\n }\n traverseManifest(e, i) {\n return this.traverseType(this._traverseManifest(e), { parent: i }, this.traversals.manifest);\n }\n traverseCanvasItems(e) {\n return e.items = (e.items || []).map((i) => this.traverseAnnotationPage(i, e)), e;\n }\n traverseInlineAnnotationPages(e) {\n return typeof e == \"string\" || !e || e.annotations && (e.annotations = e.annotations.map((i) => this.traverseAnnotationPage(i, e))), e;\n }\n traverseCanvas(e, i) {\n return this.traverseType(this._traverseCanvas(e), { parent: i }, this.traversals.canvas);\n }\n traverseAnnotationPageItems(e) {\n return e.items && (e.items = e.items.map((i) => this.traverseAnnotation(i, e))), e;\n }\n traverseAnnotationPage(e, i) {\n return this.traverseType(\n this._traverseAnnotationPage(e),\n { parent: i },\n this.traversals.annotationPage\n );\n }\n traverseAnnotationBody(e) {\n return Array.isArray(e.body) ? e.body = e.body.map((i) => this.traverseContentResource(i, e)) : e.body && (e.body = this.traverseContentResource(e.body, e)), e;\n }\n traverseLinkedCanvases(e) {\n return e.placeholderCanvas && (e.placeholderCanvas = this.traverseCanvas(e.placeholderCanvas)), e.accompanyingCanvas && (e.accompanyingCanvas = this.traverseCanvas(e.accompanyingCanvas)), e;\n }\n traverseAnnotation(e, i) {\n return this.traverseType(\n this.traverseLinking(this.traverseAnnotationBody(this.traverseDescriptive(e))),\n { parent: i },\n this.traversals.annotation\n );\n }\n traverseContentResourceLinking(e) {\n return typeof e == \"string\" || !e || e && e.service && (e.service = we(\n e.service || []\n ).map((i) => this.traverseService(i, e))), e;\n }\n traverseContentResource(e, i) {\n return e.type === \"Choice\" && (e.items = e.items.map((r) => this.traverseContentResource(r, e))), ne(e) ? this.traverseSpecificResource(e, \"ContentResource\") : this.traverseType(\n this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)),\n { parent: i },\n this.traversals.contentResource\n );\n }\n traverseSpecificResource(e, i, r) {\n let n = e.source;\n return typeof e.source == \"string\" && (n = { id: e.source, type: i || \"unknown\" }), this.traverseType(\n {\n ...e,\n source: i === \"Canvas\" || n.type === \"Canvas\" ? this.traverseType(n, { parent: r }, this.traversals.canvas) : i === \"ContentResource\" ? this.traverseContentResource(n, { parent: r }) : this.traverseUnknown(n, { parent: r, typeHint: i })\n },\n { parent: r },\n this.traversals.specificResource\n );\n }\n traverseRangeRanges(e) {\n return e.items && (e.items = e.items.map((i) => typeof i == \"string\" ? this.traverseCanvas({ id: i, type: \"Canvas\" }, e) : ne(i) ? this.traverseSpecificResource(i, \"Canvas\", e) : i.type === \"Manifest\" ? this.traverseManifest(i, e) : this.traverseRange(i, e))), e;\n }\n traverseRange(e, i) {\n return this.traverseType(this._traverseRange(e), { parent: i }, this.traversals.range);\n }\n traverseAgent(e, i) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(e)),\n { parent: i },\n this.traversals.agent\n );\n }\n traverseType(e, i, r) {\n return r.reduce((n, s) => {\n const a = s(n, i);\n return typeof a > \"u\" && !this.options.allowUndefinedReturn ? n : a;\n }, e);\n }\n traverseService(e, i) {\n const r = Object.assign({}, e);\n return r && r.service && (r.service = we(r.service).map((n) => this.traverseService(n))), this.traverseType(r, { parent: i }, this.traversals.service);\n }\n traverseUnknown(e, { parent: i, typeHint: r } = {}) {\n const n = Ts(e, r);\n switch (n) {\n case \"Collection\":\n return this.traverseCollection(e, i);\n case \"Manifest\":\n return this.traverseManifest(e, i);\n case \"Canvas\":\n return this.traverseCanvas(e, i);\n case \"AnnotationPage\":\n return this.traverseAnnotationPage(e, i);\n case \"Annotation\":\n return this.traverseAnnotation(e, i);\n case \"ContentResource\":\n return this.traverseContentResource(e, i);\n case \"Range\":\n return this.traverseRange(e, i);\n case \"Service\":\n return this.traverseService(e, i);\n case \"Agent\":\n return this.traverseAgent(e, i);\n default: {\n if (r)\n return r;\n throw new Error(`Unknown or unsupported resource type of ${n}`);\n }\n }\n }\n}\nconst Qt = [\n \"sc:Collection\",\n \"sc:Manifest\",\n \"sc:Canvas\",\n \"sc:AnnotationList\",\n \"oa:Annotation\",\n \"sc:Range\",\n \"sc:Layer\",\n \"sc:Sequence\",\n \"oa:Choice\",\n \"Service\",\n \"ContentResource\"\n];\nfunction Ms(t) {\n if (typeof t > \"u\" || t === null)\n throw new Error(\"Null or undefined is not a valid entity.\");\n if (Array.isArray(t))\n throw new Error(\"Array is not a valid entity\");\n if (typeof t != \"object\")\n throw new Error(`${typeof t} is not a valid entity`);\n if (typeof t[\"@type\"] == \"string\") {\n const e = Qt.indexOf(t[\"@type\"]);\n if (e !== -1)\n return Qt[e];\n }\n if (t.profile)\n return \"Service\";\n if (t.format || t[\"@type\"])\n return \"ContentResource\";\n throw new Error(\"Resource type is not known\");\n}\nclass Ot {\n constructor(e, i = {}) {\n re(this, \"traversals\"), re(this, \"options\"), this.traversals = {\n collection: [],\n manifest: [],\n canvas: [],\n annotationList: [],\n sequence: [],\n annotation: [],\n contentResource: [],\n choice: [],\n range: [],\n service: [],\n layer: [],\n ...e\n }, this.options = {\n convertPropsToArray: !0,\n mergeMemberProperties: !0,\n allowUndefinedReturn: !1,\n ...i\n };\n }\n static all(e) {\n return new Ot({\n collection: [e],\n manifest: [e],\n canvas: [e],\n annotationList: [e],\n sequence: [e],\n annotation: [e],\n contentResource: [e],\n choice: [e],\n range: [e],\n service: [e],\n layer: [e]\n });\n }\n traverseCollection(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(e))),\n this.traversals.collection\n );\n }\n traverseCollectionItems(e) {\n if (this.options.mergeMemberProperties) {\n const i = [\n ...(e.manifests || []).map((r) => typeof r == \"string\" ? { \"@id\": r, \"@type\": \"sc:Manifest\" } : r),\n ...(e.collections || []).map((r) => typeof r == \"string\" ? { \"@id\": r, \"@type\": \"sc:Collection\" } : r),\n ...e.members || []\n ];\n delete e.collections, delete e.manifests, e.members = i;\n }\n return e.manifests && (e.manifests = e.manifests.map(\n (i) => this.traverseManifest(\n typeof i == \"string\" ? { \"@id\": i, \"@type\": \"sc:Manifest\" } : i\n )\n )), e.collections && (e.collections = e.collections.map(\n (i) => this.traverseCollection(\n typeof i == \"string\" ? { \"@id\": i, \"@type\": \"sc:Collection\" } : i\n )\n )), e.members && (e.members = e.members.map((i) => typeof i == \"string\" ? i : this.traverseUnknown(i))), e;\n }\n traverseManifest(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e))),\n this.traversals.manifest\n );\n }\n traverseManifestItems(e) {\n return e.sequences && (e.sequences = e.sequences.map((i) => this.traverseSequence(i))), e.structures && (e.structures = e.structures.map((i) => this.traverseRange(i))), e;\n }\n traverseSequence(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(e))),\n this.traversals.sequence\n );\n }\n traverseSequenceItems(e) {\n return e.canvases && (e.canvases = e.canvases.map((i) => this.traverseCanvas(i))), e;\n }\n traverseCanvas(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))),\n this.traversals.canvas\n );\n }\n traverseCanvasItems(e) {\n return e.images && (e.images = e.images.map((i) => this.traverseAnnotation(i))), e.otherContent && (e.otherContent = e.otherContent.map((i) => this.traverseAnnotationList(i))), e;\n }\n traverseRange(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(e))),\n this.traversals.range\n );\n }\n traverseRangeItems(e) {\n if (this.options.mergeMemberProperties) {\n const i = [\n ...(e.ranges || []).map((r) => typeof r == \"string\" ? { \"@id\": r, \"@type\": \"sc:Range\" } : r),\n ...(e.canvases || []).map((r) => typeof r == \"string\" ? { \"@id\": r, \"@type\": \"sc:Canvas\" } : r),\n ...e.members || []\n ];\n delete e.ranges, delete e.canvases, e.members = i.length ? i.map((r) => this.traverseUnknown(r)) : void 0;\n }\n return e;\n }\n traverseAnnotationList(e) {\n const i = typeof e == \"string\" ? { \"@id\": e, \"@type\": \"sc:AnnotationList\" } : e;\n return this.traverseType(\n this.traverseDescriptive(this.traverseAnnotationListItems(i)),\n this.traversals.annotationList\n );\n }\n traverseAnnotationListItems(e) {\n return e.resources && (e.resources = e.resources.map((i) => this.traverseAnnotation(i))), e;\n }\n traverseAnnotation(e) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(e))),\n this.traversals.annotation\n );\n }\n traverseAnnotationItems(e) {\n return e.resource && (Array.isArray(e.resource) ? e.resource = e.resource.map(\n (i) => this.traverseContentResource(i)\n ) : e.resource = this.traverseContentResource(e.resource)), e.on, e;\n }\n traverseLayer(e) {\n return this.traverseType(this.traverseLinking(this.traverseLayerItems(e)), this.traversals.layer);\n }\n traverseLayerItems(e) {\n return e.otherContent && (e.otherContent = e.otherContent.map((i) => this.traverseAnnotationList(i))), e;\n }\n traverseChoice(e) {\n return this.traverseType(this.traverseChoiceItems(e), this.traversals.choice);\n }\n traverseChoiceItems(e) {\n return e.default && e.default !== \"rdf:nil\" && (e.default = this.traverseContentResource(e.default)), e.item && e.item !== \"rdf:nil\" && (e.item = e.item.map((i) => this.traverseContentResource(i))), e;\n }\n traverseService(e) {\n return this.traverseType(this.traverseLinking(e), this.traversals.service);\n }\n traverseContentResource(e) {\n return e[\"@type\"] === \"oa:Choice\" ? this.traverseChoice(e) : this.traverseType(\n this.traverseDescriptive(this.traverseLinking(e)),\n this.traversals.contentResource\n );\n }\n traverseUnknown(e) {\n if (!e[\"@type\"] || typeof e == \"string\")\n return e;\n switch (Ms(e)) {\n case \"sc:Collection\":\n return this.traverseCollection(e);\n case \"sc:Manifest\":\n return this.traverseManifest(e);\n case \"sc:Canvas\":\n return this.traverseCanvas(e);\n case \"sc:Sequence\":\n return this.traverseSequence(e);\n case \"sc:Range\":\n return this.traverseRange(e);\n case \"oa:Annotation\":\n return this.traverseAnnotation(e);\n case \"sc:AnnotationList\":\n return this.traverseAnnotationList(e);\n case \"sc:Layer\":\n return this.traverseLayer(e);\n case \"Service\":\n return this.traverseService(e);\n case \"oa:Choice\":\n return this.traverseChoice(e);\n case \"ContentResource\":\n return this.traverseContentResource(e);\n }\n return e.profile ? this.traverseService(e) : e;\n }\n traverseImageResource(e) {\n const i = Array.isArray(e), r = Array.isArray(e) ? e : [e], n = [];\n for (const s of r)\n typeof s == \"string\" ? n.push(\n this.traverseContentResource({\n \"@id\": s,\n \"@type\": \"dctypes:Image\"\n })\n ) : n.push(this.traverseContentResource(s));\n return !i && !this.options.convertPropsToArray ? n[0] : n;\n }\n traverseDescriptive(e) {\n return e.thumbnail && (e.thumbnail = this.traverseImageResource(e.thumbnail)), e.logo && (e.logo = this.traverseImageResource(e.logo)), e;\n }\n traverseOneOrMoreServices(e) {\n const i = Array.isArray(e), r = Array.isArray(e) ? e : [e], n = [];\n for (const s of r)\n n.push(this.traverseService(s));\n return !i && !this.options.convertPropsToArray ? n[0] : n;\n }\n traverseLinking(e) {\n return e.related && (e.related = this.traverseOneOrManyType(e.related, this.traversals.contentResource)), e.rendering && (e.rendering = this.traverseOneOrManyType(e.rendering, this.traversals.contentResource)), e.service && (e.service = this.traverseOneOrMoreServices(e.service)), e.seeAlso && (e.seeAlso = this.traverseOneOrManyType(e.seeAlso, this.traversals.contentResource)), e.within && (typeof e.within == \"string\" || (e.within = this.traverseOneOrManyType(\n e.within,\n this.traversals.contentResource\n ))), e.startCanvas && (typeof e.startCanvas == \"string\" ? e.startCanvas = this.traverseType(\n { \"@id\": e.startCanvas, \"@type\": \"sc:Canvas\" },\n this.traversals.canvas\n ) : e.startCanvas && this.traverseType(e.startCanvas, this.traversals.canvas)), e.contentLayer && (typeof e.contentLayer == \"string\" ? e.contentLayer = this.traverseLayer({\n \"@id\": e.contentLayer,\n \"@type\": \"sc:Layer\"\n }) : e.contentLayer = this.traverseLayer(e.contentLayer)), e;\n }\n traverseOneOrManyType(e, i) {\n if (!Array.isArray(e))\n if (this.options.convertPropsToArray)\n e = [e];\n else\n return this.traverseType(e, i);\n return e.map((r) => this.traverseType(r, i));\n }\n traverseType(e, i) {\n return i.reduce((r, n) => {\n const s = n(r);\n return typeof s > \"u\" && !this.options.allowUndefinedReturn ? r : s;\n }, e);\n }\n}\nconst ks = \"http://library.stanford.edu/iiif/image-api/compliance.html#level0\", Di = \"http://library.stanford.edu/iiif/image-api/compliance.html#level1\", Ni = \"http://library.stanford.edu/iiif/image-api/compliance.html#level2\", Fs = \"http://library.stanford.edu/iiif/image-api/conformance.html#level0\", $i = \"http://library.stanford.edu/iiif/image-api/conformance.html#level1\", qi = \"http://library.stanford.edu/iiif/image-api/conformance.html#level2\", Ls = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0\", Ui = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1\", Wi = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\", Ps = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0\", zi = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1\", Vi = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2\", js = \"http://iiif.io/api/image/1/level0.json\", Ds = \"http://iiif.io/api/image/1/profiles/level0.json\", Bi = \"http://iiif.io/api/image/1/level1.json\", Gi = \"http://iiif.io/api/image/1/profiles/level1.json\", Qi = \"http://iiif.io/api/image/1/level2.json\", Hi = \"http://iiif.io/api/image/1/profiles/level2.json\", Ns = \"http://iiif.io/api/image/2/level0.json\", $s = \"http://iiif.io/api/image/2/profiles/level0.json\", Yi = \"http://iiif.io/api/image/2/level1.json\", Ji = \"http://iiif.io/api/image/2/profiles/level1.json\", Xi = \"http://iiif.io/api/image/2/level2.json\", Ki = \"http://iiif.io/api/image/2/profiles/level2.json\", qs = \"level0\", Zi = \"level1\", er = \"level2\", Us = \"http://iiif.io/api/image/2/level0\", tr = \"http://iiif.io/api/image/2/level1\", ir = \"http://iiif.io/api/image/2/level2\", Ws = [\n tr,\n ir,\n Di,\n Ni,\n $i,\n qi,\n Ui,\n Wi,\n zi,\n Vi,\n Bi,\n Gi,\n Qi,\n Hi,\n Yi,\n Ji,\n Xi,\n Ki,\n Zi,\n er\n], zs = [\n Us,\n tr,\n ir,\n ks,\n Di,\n Ni,\n Fs,\n $i,\n qi,\n Ls,\n Ui,\n Wi,\n Ps,\n zi,\n Vi,\n js,\n Ds,\n Bi,\n Gi,\n Qi,\n Hi,\n Ns,\n $s,\n Yi,\n Ji,\n Xi,\n Ki,\n qs,\n Zi,\n er\n];\nfunction J(t) {\n for (const e in t)\n (typeof t[e] > \"u\" || t[e] === null) && delete t[e];\n return t;\n}\nconst lt = {\n attributionLabel: \"Attribution\",\n lang: \"none\",\n providerId: \"http://example.org/provider\",\n providerName: \"Unknown\"\n};\nfunction be(t, e = \"none\") {\n if (!t)\n return {};\n const i = Array.isArray(t) ? t : [t], r = {};\n for (const n of i) {\n if (typeof n == \"string\") {\n r[e] = r[e] ? r[e] : [], r[e].push(n || \"\");\n continue;\n }\n if (!n[\"@language\"]) {\n r[e] = r[e] ? r[e] : [], r[e].push(n[\"@value\"] || \"\");\n continue;\n }\n const s = n[\"@language\"];\n r[s] = r[s] ? r[s] : [], r[s].push(n[\"@value\"] || \"\");\n }\n return r;\n}\nfunction rr(t) {\n if (Array.isArray(t))\n return rr(t.find((e) => typeof e == \"string\"));\n if (zs.indexOf(t) !== -1)\n return \"level2\";\n if (Ws.indexOf(t) !== -1)\n return \"level1\";\n if (typeof t == \"string\")\n return t;\n}\nfunction Vs(t) {\n const e = Array.isArray(t) ? t : [t];\n for (const i of e)\n switch (i) {\n case \"http://iiif.io/api/image/2/context.json\":\n case \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\":\n return \"ImageService2\";\n case \"http://iiif.io/api/image/1/context.json\":\n case \"http://library.stanford.edu/iiif/image-api/1.1/context.json\":\n return \"ImageService1\";\n case \"http://iiif.io/api/annex/openannotation/context.json\":\n return \"ImageApiSelector\";\n }\n}\nfunction Bs(t) {\n switch (t) {\n case \"http://iiif.io/api/image/2/level0.json\":\n case \"http://iiif.io/api/image/2/level1.json\":\n case \"http://iiif.io/api/image/2/level2.json\":\n return \"ImageService2\";\n case \"http://iiif.io/api/auth/1/kiosk\":\n case \"http://iiif.io/api/auth/1/login\":\n case \"http://iiif.io/api/auth/1/clickthrough\":\n case \"http://iiif.io/api/auth/1/external\":\n case \"http://iiif.io/api/auth/0/kiosk\":\n case \"http://iiif.io/api/auth/0/login\":\n case \"http://iiif.io/api/auth/0/clickthrough\":\n case \"http://iiif.io/api/auth/0/external\":\n return \"AuthCookieService1\";\n case \"http://iiif.io/api/auth/1/token\":\n case \"http://iiif.io/api/auth/0/token\":\n return \"AuthTokenService1\";\n case \"http://iiif.io/api/auth/1/logout\":\n case \"http://iiif.io/api/auth/0/logout\":\n return \"AuthLogoutService1\";\n case \"http://iiif.io/api/search/1/search\":\n case \"http://iiif.io/api/search/0/search\":\n return \"SearchService1\";\n case \"http://iiif.io/api/search/1/autocomplete\":\n case \"http://iiif.io/api/search/0/autocomplete\":\n return \"AutoCompleteService1\";\n }\n}\nfunction Ht(t) {\n for (const e of [\"sc\", \"oa\", \"dcterms\", \"dctypes\", \"iiif\"])\n if (t.startsWith(`${e}:`))\n return t.slice(e.length + 1);\n return t;\n}\nconst Gs = [\"Collection\", \"Manifest\", \"Annotation\", \"AnnotationPage\", \"Range\", \"Service\"];\nfunction _t(t) {\n const e = t[\"@id\"] || t.id;\n let i = t[\"@type\"] || t.type;\n const r = t.profile || void 0, n = t[\"@context\"] || void 0;\n if (r) {\n const s = Bs(r);\n if (s)\n return s;\n }\n if (n) {\n const s = Vs(n);\n if (s)\n return s;\n }\n if (i) {\n if (Array.isArray(i)) {\n if (i.indexOf(\"oa:CssStylesheet\") !== -1)\n return \"CssStylesheet\";\n if (i.indexOf(\"cnt:ContentAsText\") !== -1)\n return \"TextualBody\";\n i = i[0];\n }\n for (const s of [\"sc\", \"oa\", \"dcterms\", \"dctypes\", \"iiif\"])\n if (i.startsWith(`${s}:`)) {\n i = i.slice(s.length + 1);\n break;\n }\n switch (i) {\n case \"Layer\":\n return \"AnnotationCollection\";\n case \"AnnotationList\":\n return \"AnnotationPage\";\n case \"cnt:ContentAsText\":\n return \"TextualBody\";\n }\n }\n if (i && Gs.indexOf(i) !== -1)\n return i;\n if (t.format) {\n if (t.format.startsWith(\"image/\"))\n return \"Image\";\n if (t.format.startsWith(\"text/\") || t.format === \"application/pdf\")\n return \"Text\";\n if (t.format.startsWith(\"application/\"))\n return \"Dataset\";\n }\n return e && (e.endsWith(\".jpg\") || e.endsWith(\".png\") || e.endsWith(\".jpeg\")) ? \"Image\" : i || \"unknown\";\n}\nconst Qs = /http(s)?:\\/\\/(creativecommons.org|rightsstatements.org)[^\"'\\\\<\\n]+/gm;\nfunction Hs(t) {\n const e = t.match(Qs);\n return e ? e[0] : t;\n}\nfunction Ys(t, e = \"Rights/License\", i = \"none\") {\n let r = null;\n const n = [], s = Array.isArray(t) ? t : [t];\n for (const a of s) {\n const c = a ? Hs(a) : void 0;\n if (c && (c.indexOf(\"creativecommons.org\") !== -1 || c.indexOf(\"rightsstatements.org\") !== -1)) {\n c.startsWith(\"https://\") ? r = `http://${c.slice(8)}` : r = c;\n continue;\n }\n c && n.push({\n label: { [i]: [e] },\n value: { [i]: [c] }\n });\n }\n return [r, n];\n}\nconst Js = [\n \"http://iiif.io/api/presentation/2/context.json\",\n \"http://iiif.io/api/image/2/context.json\",\n \"http://iiif.io/api/image/1/context.json\",\n \"http://library.stanford.edu/iiif/image-api/1.1/context.json\",\n \"http://iiif.io/api/search/1/context.json\",\n \"http://iiif.io/api/search/0/context.json\",\n \"http://iiif.io/api/auth/1/context.json\",\n \"http://iiif.io/api/auth/0/context.json\",\n \"http://iiif.io/api/annex/openannotation/context.json\"\n];\nfunction Xs(t) {\n if (t) {\n const e = Array.isArray(t) ? t : [t], i = [];\n for (const r of e)\n r === \"http://iiif.io/api/presentation/2/context.json\" && i.push(\"http://iiif.io/api/presentation/3/context.json\"), Js.indexOf(r) === -1 && i.push(r);\n if (e.length)\n return i.length === 1 ? i[0] : i;\n }\n}\nfunction Ks(t) {\n return t ? t.map((e) => ({\n label: be(e.label),\n value: be(e.value)\n })) : [];\n}\nlet Yt = 0;\nfunction nr(t, e) {\n const i = encodeURI(t.id || t[\"@id\"] || \"\").trim();\n return i && e ? `${i}/${e}` : i || (Yt++, `http://example.org/${t[\"@type\"]}${e ? `/${e}` : \"\"}/${Yt}`);\n}\nfunction X(t) {\n const e = [...t.behavior || []];\n t.viewingHint && e.push(t.viewingHint);\n let i;\n return Array.isArray(t.motivation) ? i = t.motivation.map(Ht) : t.motivation && (i = Ht(t.motivation)), {\n \"@context\": t[\"@context\"] ? Xs(t[\"@context\"]) : void 0,\n id: (t[\"@id\"] || nr(t)).trim(),\n type: _t(t),\n behavior: e.length ? e : void 0,\n height: t.height ? t.height : void 0,\n width: t.width ? t.width : void 0,\n motivation: i,\n viewingDirection: t.viewingDirection,\n profile: t.profile,\n format: t.format ? t.format : void 0,\n duration: void 0,\n timeMode: void 0\n };\n}\nfunction K(t) {\n const [e, i] = Ys(t.license), r = [...t.metadata ? Ks(t.metadata) : [], ...i];\n return {\n rights: e,\n metadata: r.length ? r : void 0,\n label: t.label ? be(t.label) : void 0,\n requiredStatement: t.attribution ? {\n label: be(lt.attributionLabel),\n value: be(t.attribution)\n } : void 0,\n navDate: t.navDate,\n summary: t.description ? be(t.description) : void 0,\n thumbnail: Zs(t.thumbnail)\n };\n}\nfunction Zs(t) {\n return t && (Array.isArray(t) ? t : [t]).map((i) => typeof i == \"string\" ? { id: i, type: \"Image\" } : (i.type === \"unknown\" && (i.type = \"Image\"), i));\n}\nfunction ea(t) {\n if (!t.within)\n return;\n const e = Array.isArray(t.within) ? t.within : [t.within], i = [];\n for (const r of e)\n if (typeof r == \"string\") {\n if (r)\n switch (t[\"@type\"]) {\n case \"sc:Manifest\":\n i.push({ id: r, type: \"Collection\" });\n break;\n }\n } else\n r[\"@id\"] && i.push({\n id: r[\"@id\"],\n type: _t(r)\n });\n return i.length ? i : void 0;\n}\nfunction ae(t) {\n const e = t.related ? Array.isArray(t.related) ? t.related : [t.related] : [], i = t.contentLayer;\n return {\n provider: t.logo || e.length ? [\n {\n id: lt.providerId,\n type: \"Agent\",\n homepage: e.length ? [e[0]] : void 0,\n logo: t.logo ? Array.isArray(t.logo) ? t.logo : [t.logo] : void 0,\n label: be(lt.providerName)\n }\n ] : void 0,\n partOf: ea(t),\n rendering: t.rendering,\n seeAlso: t.seeAlso,\n start: t.startCanvas,\n service: t.service ? we(t.service) : void 0,\n supplementary: i ? [i] : void 0\n };\n}\nfunction ta(t) {\n return {\n chars: t.chars,\n format: t.format ? t.format : void 0,\n language: t.language\n };\n}\nfunction ia(t) {\n return J({\n ...X(t),\n ...K(t),\n ...ae(t),\n items: t.members\n });\n}\nfunction ra(t) {\n const e = [], i = [];\n let r;\n for (const s of t.sequences || [])\n s.canvases.length && e.push(...s.canvases), s.behavior && i.push(...s.behavior), s.startCanvas && (r = s.startCanvas);\n const n = X(t);\n return i.length && (n.behavior ? n.behavior.push(...i) : n.behavior = i), J({\n ...n,\n ...K(t),\n ...ae(t),\n start: r,\n items: e,\n structures: t.structures\n });\n}\nfunction na(t) {\n return J({\n ...X(t),\n ...K(t),\n ...ae(t),\n annotations: t.otherContent && t.otherContent.length ? t.otherContent : void 0,\n items: t.images && t.images.length ? [\n {\n id: nr(t, \"annotation-page\"),\n type: \"AnnotationPage\",\n items: t.images\n }\n ] : void 0\n });\n}\nfunction sa(t) {\n return J({\n ...X(t),\n ...K(t),\n ...ae(t),\n items: t.resources && t.resources.length ? t.resources : void 0\n });\n}\nfunction aa(t) {\n return !t.canvases || t.canvases.length === 0 ? {\n canvases: [],\n behavior: []\n } : {\n canvases: t.canvases,\n behavior: t.viewingHint ? [t.viewingHint] : [],\n startCanvas: t.startCanvas\n };\n}\nfunction oa(t) {\n function e(i) {\n if (Array.isArray(i)) {\n if (i.length > 1)\n return { type: \"List\", items: i.map(e) };\n i = i[0];\n }\n if (typeof i == \"string\")\n return encodeURI(i).trim();\n if (\"@type\" in i) {\n let r;\n if (typeof i.full == \"string\")\n r = i.full;\n else if (i.full[\"@type\"] === \"dctypes:Image\")\n r = { id: i.full[\"@id\"], type: \"Image\" };\n else if (i.full[\"@type\"] === \"sc:Canvas\")\n r = { id: i.full[\"@id\"], type: \"Canvas\" };\n else\n throw new Error(`Unsupported source type on annotation: ${i.full[\"@type\"]}`);\n return {\n type: \"SpecificResource\",\n source: r,\n selector: ut(i.selector)\n };\n } else\n return encodeURI(i[\"@id\"]).trim();\n }\n return J({\n ...X(t),\n ...K(t),\n ...ae(t),\n target: e(t.on),\n body: Array.isArray(t.resource) ? t.resource.map(ft) : ft(t.resource)\n });\n}\nfunction ft(t) {\n const e = t;\n return J({\n ...X(e),\n ...K(e),\n ...ae(e),\n ...ta(e)\n });\n}\nfunction ca(t) {\n const e = [];\n return t.default && t.default !== \"rdf:nil\" && e.push(t.default), t.item && t.item !== \"rdf:nil\" && e.push(...t.item), {\n ...X(t),\n ...K(t),\n items: e\n };\n}\nfunction la(t) {\n return J({\n ...X(t),\n ...K(t),\n ...ae(t),\n items: t.members\n });\n}\nfunction fa(t) {\n const { \"@id\": e, \"@type\": i, \"@context\": r, profile: n, ...s } = t, a = {};\n return e && (a[\"@id\"] = e), a[\"@type\"] = _t(t), a[\"@type\"] === \"unknown\" && (r && r.length && (a[\"@context\"] = r), a[\"@type\"] = \"Service\"), n && (a.profile = rr(n)), J({\n ...a,\n ...s\n });\n}\nfunction ua(t) {\n return J({\n ...X(t),\n ...K(t),\n ...ae(t)\n });\n}\nconst pa = new Ot({\n collection: [ia],\n manifest: [ra],\n canvas: [na],\n annotationList: [sa],\n sequence: [aa],\n annotation: [oa],\n contentResource: [ft],\n choice: [ca],\n range: [la],\n service: [fa],\n layer: [ua]\n});\nfunction ha(t) {\n return t && t[\"@context\"] && (t[\"@context\"] === \"http://iiif.io/api/presentation/2/context.json\" || t[\"@context\"].indexOf(\"http://iiif.io/api/presentation/2/context.json\") !== -1 || t[\"@context\"] === \"http://www.shared-canvas.org/ns/context.json\") || t[\"@context\"] === \"http://iiif.io/api/image/2/context.json\" ? pa.traverseUnknown(t) : t;\n}\nfunction ut(t) {\n if ((Array.isArray(t[\"@type\"]) && t[\"@type\"].includes(\"oa:SvgSelector\") || t[\"@type\"] == \"oa:SvgSelector\") && (\"chars\" in t || \"value\" in t))\n return {\n type: \"SvgSelector\",\n value: \"chars\" in t ? t.chars : t.value\n };\n if (t[\"@type\"] === \"oa:FragmentSelector\")\n return {\n type: \"FragmentSelector\",\n value: t.value\n };\n if (t[\"@type\"] === \"oa:Choice\")\n return [\n ut(t.default),\n ...(Array.isArray(t.item) ? t.item : [t.item]).map(\n ut\n )\n ];\n if (t[\"@type\"] == \"iiif:ImageApiSelector\")\n return {\n type: \"ImageApiSelector\",\n region: \"region\" in t ? t.region : void 0,\n rotation: \"rotation\" in t ? t.rotation : void 0\n };\n throw new Error(`Unsupported selector type: ${t[\"@type\"]}`);\n}\nfunction pt(t, e = {}) {\n if (Array.isArray(t))\n return pt(t[0]);\n if (typeof t == \"string\") {\n const [i, r] = t.split(\"#\");\n return r ? {\n type: \"SpecificResource\",\n source: { id: i, type: e.typeHint || \"Unknown\" },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n } : {\n type: \"SpecificResource\",\n source: { id: i, type: e.typeMap && e.typeMap[i] || e.typeHint || \"Unknown\" }\n };\n }\n if (t.type === \"Choice\" || t.type === \"List\" || t.type === \"Composite\" || t.type === \"Independents\")\n return pt(t.items[0]);\n if (t.type === \"SpecificResource\")\n return t.source.type === \"Canvas\" && t.source.partOf && typeof t.source.partOf == \"string\" && (t.source.partOf = [\n {\n id: t.source.partOf,\n type: \"Manifest\"\n }\n ]), t.selector ? {\n type: \"SpecificResource\",\n source: t.source,\n selector: t.selector\n } : {\n type: \"SpecificResource\",\n source: t.source\n };\n if (t.id) {\n t.type === \"Canvas\" && t.partOf && typeof t.partOf == \"string\" && (t.partOf = [\n {\n id: t.partOf,\n type: \"Manifest\"\n }\n ]);\n const [i, r] = t.id.split(\"#\");\n return r ? {\n type: \"SpecificResource\",\n source: {\n ...t,\n id: i\n },\n selector: {\n type: \"FragmentSelector\",\n value: r\n }\n } : {\n type: \"SpecificResource\",\n source: {\n ...t,\n id: i\n }\n };\n }\n return {\n type: \"SpecificResource\",\n source: t\n };\n}\nfunction da() {\n return {\n Collection: {},\n Manifest: {},\n Canvas: {},\n AnnotationPage: {},\n AnnotationCollection: {},\n Annotation: {},\n ContentResource: {},\n Range: {},\n Service: {},\n Selector: {},\n Agent: {}\n };\n}\nfunction sr(t, e) {\n if (typeof t == \"string\")\n return { id: t, type: e };\n if (!t.id)\n throw new Error(`Invalid resource does not have an ID (${JSON.stringify(t)}, ${e})`);\n return t;\n}\nfunction va(t, e) {\n return (i, r) => {\n const n = t[i] ? t[i] : {};\n return (s, a) => {\n const c = sr(s, r || i);\n return c && c.id && i ? (n[c.id] = n[c.id] ? dt(n[c.id], c, {\n parent: a.parent,\n isTopLevel: e.id === c.id\n }) : dt({ id: c.id, type: c.type }, c, {\n parent: a.parent,\n isTopLevel: e.id === c.id\n }), {\n id: c.id,\n type: i === \"ContentResource\" ? i : c.type\n }) : c;\n };\n };\n}\nfunction ht(t, e, i) {\n if (!e)\n return t;\n if (Array.isArray(t)) {\n if (!Array.isArray(e))\n throw new Error(\"Cannot merge array with non-array\");\n const r = [...t];\n for (const n of e)\n if (n[\"@id\"] && !n.id && (n.id = n[\"@id\"]), n[\"@type\"] && !n.type && (n.type = n[\"@type\"]), n != null)\n if (Array.isArray(n))\n r.push(n);\n else if (typeof n == \"object\" && n.id && n.type) {\n const s = r.findIndex((a) => a.id === n.id && a.type === n.type);\n s >= 0 && (r[s] = ht(r[s], n));\n } else\n t.indexOf(n) === -1 && r.push(n);\n return r;\n } else if (typeof t == \"object\") {\n if (Array.isArray(e) || typeof e != \"object\")\n throw new Error(\"Cannot merge object with non-object\");\n const r = { ...t }, n = [], s = [], a = Object.keys(t).filter((p) => p !== M && p !== \"id\" && p !== \"type\"), c = {}, u = {};\n for (const [p, f] of Object.entries(e)) {\n if (p === M || p === \"id\" || p === \"type\")\n continue;\n const v = r[p];\n v === f ? s.push(p) : v === b || !v ? (n.push(p), r[p] = f) : (v && f && (c[p] = v, u[p] = f), r[p] = ht(v, f), r[p] === c[p] && (s.push(p), delete c[p]));\n }\n if (i && (i.parent && i.parent.id || i.isTopLevel)) {\n const p = [], f = {};\n if (i.parent ? f[z] = i.parent.id : i.isTopLevel && (f[z] = t.id), r[M] && r[M].length) {\n const v = !(r[M] || []).find((m) => m[\"@explicit\"]), y = n.length > 0 || s.length !== a.length;\n if (v && y)\n for (const m of r[M]) {\n const h = { ...m }, A = Object.keys(c);\n if (h) {\n h[\"@explicit\"] = !0;\n for (const x of a)\n x !== M && (h[x] = Le);\n for (const x of A)\n h[x] = c[x];\n }\n p.push(h);\n }\n else\n p.push(...r[M]);\n if (y) {\n const m = Object.keys(u);\n f[\"@explicit\"] = !0;\n for (const h of n)\n f[h] = Le;\n for (const h of s)\n f[h] = Le;\n for (const h of m)\n f[h] = u[h];\n }\n }\n f.id = r.id, f.type = r.type, p.push(f), r[M] = p;\n }\n return r;\n } else if (t)\n return t;\n return e;\n}\nfunction dt(t, e, i) {\n if (typeof t == \"string\")\n return t;\n if (e.id !== t.id || e.type !== t.type) {\n if (e.type === \"ImageService3\")\n return e;\n if (t.type === \"ImageService3\")\n return t;\n throw new Error(\n `Can only merge entities with identical identifiers and type! ${e.type}(${e.id}) => ${t.type}(${t.id})`\n );\n }\n return ht({ ...t }, e, i);\n}\nfunction ya(t) {\n return (e, i) => (r) => {\n const { id: n, type: s } = sr(r, i || e);\n if (typeof n > \"u\")\n throw new Error(\"Found invalid entity without an ID.\");\n return e === \"ContentResource\" || e === \"Service\" ? t[n] = e : t[n] = s, r;\n };\n}\nfunction ma(t) {\n const e = Object.assign({}, t);\n if (e[\"@id\"] && (e.id = e[\"@id\"]), e[\"@type\"] && (e.type = e[\"@type\"]), e.service) {\n const i = [];\n e.service = Array.isArray(e.service) ? e.service : [e.service];\n for (const r of e.service)\n i.push({\n id: r[\"@id\"] || r.id,\n type: r[\"@type\"] || r.type\n });\n e.service = i;\n }\n return Object.assign({}, _s, e);\n}\nfunction ga(t) {\n return (e) => {\n t.Service = t.Service ? t.Service : {};\n const i = e.id || e[\"@id\"], r = ma(e);\n return r && r.id && (t.Service[r.id] ? t.Service[i] = dt(t.Service[i], r) : t.Service[i] = r), e;\n };\n}\nfunction Aa(t) {\n const e = JSON.stringify(t);\n let i = 5381, r = e.length;\n for (; r; )\n i = i * 33 ^ e.charCodeAt(--r);\n const s = (i >>> 0).toString(16);\n return s.length % 2 ? \"0\" + s : s;\n}\nfunction tt(t) {\n return (e) => typeof e == \"string\" ? { id: e, type: t } : e.id ? e.type ? e : { type: t, ...e } : { id: `vault://${Aa(e)}`, type: t, ...e };\n}\nfunction xe(t) {\n return (e) => ({\n ...t,\n ...e\n });\n}\nfunction Te(t) {\n return Array.isArray(t) ? t : [t];\n}\nfunction ba(t) {\n return t.body && (t.body = Te(t.body)), t.seeAlso && (t.seeAlso = Te(t.seeAlso)), t.audience && (t.audience = Te(t.audience)), t.accessibility && (t.accessibility = Te(t.accessibility)), t.motivation && (t.motivation = Te(t.motivation)), t;\n}\nfunction ar(t, { typeHint: e, partOfTypeHint: i } = {}) {\n if (typeof t == \"string\" && (t = { id: t, type: e || \"unknown\" }), ne(t))\n return typeof t.source == \"string\" && (t.source = { id: t.source, type: e || \"unknown\" }), t.source.type === \"Canvas\" && t.source.partOf && typeof t.source.partOf == \"string\" && (t.source.partOf = [\n {\n id: t.source.partOf,\n type: i || \"Manifest\"\n }\n ]), t;\n let r;\n if ((t.id || \"\").indexOf(\"#\") !== -1) {\n const [n, s] = (t.id || \"\").split(\"#\");\n t.id = n, s && (r = {\n type: \"FragmentSelector\",\n value: s\n });\n }\n return {\n type: \"SpecificResource\",\n source: t,\n selector: r\n };\n}\nfunction Sa(t) {\n const e = Object.assign({}, t);\n return t && t.items && (e.items = t.items.map((i) => typeof i == \"string\" || i.type === \"Canvas\" ? ar(i) : i)), e;\n}\nfunction xa(t) {\n const e = Object.assign({}, t);\n return e.start ? (e.start = ar(e.start, { typeHint: \"Canvas\" }), e) : t;\n}\nfunction wa(t) {\n const e = Object.assign({}, t);\n return e.target ? (e.target = pt(e.target, { typeHint: \"Canvas\" }), e) : t;\n}\nfunction Ca(t) {\n return t;\n}\nfunction it(t) {\n return typeof t.items > \"u\" && (t[Pe] = !0), t;\n}\nfunction Ra(t) {\n const e = ha(t), i = da(), r = {}, n = va(i, e), s = ya(r), c = new Et({\n collection: [\n it,\n xe(Rs),\n s(\"Collection\"),\n n(\"Collection\")\n ],\n manifest: [\n it,\n xe(Is),\n xa,\n s(\"Manifest\"),\n n(\"Manifest\")\n ],\n canvas: [\n xe(Cs),\n s(\"Canvas\"),\n n(\"Canvas\")\n ],\n annotationPage: [\n it,\n tt(\"AnnotationPage\"),\n xe(ws),\n s(\"AnnotationPage\"),\n n(\"AnnotationPage\")\n ],\n annotation: [\n tt(\"Annotation\"),\n ba,\n wa,\n s(\"Annotation\"),\n n(\"Annotation\")\n ],\n contentResource: [\n tt(\"ContentResource\"),\n s(\"ContentResource\"),\n n(\"ContentResource\")\n ],\n range: [\n xe(Es),\n Sa,\n s(\"Range\", \"Canvas\"),\n n(\"Range\", \"Canvas\")\n ],\n agent: [\n xe(Os),\n s(\"Agent\"),\n n(\"Agent\")\n ],\n specificResource: [\n Ca\n ],\n service: [\n ga(i)\n ]\n }).traverseUnknown(e);\n return { entities: i, resource: c, mapping: r };\n}\nfunction Ia(t) {\n const e = {};\n for (const [i, r] of t) {\n if (i === Pi && r !== U)\n return r;\n r !== U && typeof r < \"u\" && r !== null && (e[i] = r);\n }\n return e;\n}\nfunction Ea(t, e, i) {\n if (!e.type || !e.id)\n throw new Error(\"Unknown entity\");\n if (!i[e.type])\n throw new Error(`Serializer not found for ${e.type}`);\n function r(n, s, a = 0) {\n const c = i[n.type];\n if (!c)\n return U;\n if (a > 20)\n throw new Error(\"Circular reference: \" + n.id + \" \" + n.type);\n const [u, p] = ji(t, n.type ? n : n.id, s) || (n.id && n.type ? n : null);\n if (!u)\n return U;\n const f = c(u, t, {\n parent: s,\n isTopLevel: e.id === n.id,\n fullResource: p\n });\n let v = f.next();\n for (; !v.done; ) {\n const y = v.value;\n let m = U;\n if (y)\n if (Array.isArray(y)) {\n const h = [];\n for (const A of y)\n h.push(r(A, n, a + 1));\n m = h;\n } else\n m = r(y, n, a + 1);\n v = f.next(m);\n }\n return v.value === U ? U : Ia(v.value);\n }\n return r(e);\n}\nfunction je(t, { allowSourceString: e = !0, allowString: i = !1, allowedStringType: r } = {}) {\n const n = (s) => {\n if (e && s && s.source && typeof s.source != \"string\") {\n const a = Object.keys(s.source);\n if (s.source.id && s.source.type && a.length === 2)\n return { ...s, source: s.source.id };\n }\n return s;\n };\n if (t) {\n if (t.source && t.source.partOf)\n return n(t);\n const s = Object.keys(t);\n if (s.length === 2 && t.type && t.source || s.length === 3 && t.type && t.source && s.indexOf(\"selector\") !== -1 && !t.selector)\n return i && (!r || r === t.source.type) ? t.source.id : t.source.type === \"ContentResource\" ? { type: \"SpecificResource\", source: t.source.id } : t.source;\n if (t.selector && !Array.isArray(t.selector) && typeof t.selector != \"string\" && t.selector.type === \"FragmentSelector\") {\n const a = `${t.source.id}#${t.selector.value}`;\n return i ? a : { id: a, type: t.source.type };\n }\n }\n return n(t);\n}\nfunction Ce(t) {\n if (!t)\n return;\n const e = Object.keys(t);\n if (e.length !== 0) {\n if (e.length === 1) {\n const i = e[0];\n if (!i)\n return \"\";\n const r = (t[i] || []).join(\"\");\n return i === \"@none\" || i === \"none\" || i === \"en\" ? r : {\n \"@language\": i,\n \"@value\": r\n };\n }\n return e.map((i) => ({\n \"@language\": i,\n \"@value\": (t[i] || []).join(\"\")\n }));\n }\n}\nfunction or(t) {\n return Array.isArray(t) ? t.map((e) => or(e)) : typeof t == \"string\" ? t : t.type && t.type === \"Canvas\" ? t.id : t;\n}\nfunction se(t, e = !1) {\n if (t)\n return t.length > 1 && !e ? t : t[0] || void 0;\n}\nfunction Oa(t) {\n if (t) {\n if (typeof t == \"string\")\n return {\n \"@id\": t\n };\n if (\"@id\" in t) {\n const e = { ...t };\n return delete e[\"@type\"], e;\n }\n return {\n \"@context\": \"http://iiif.io/api/image/2/context.json\",\n \"@id\": t.id,\n profile: `http://iiif.io/api/image/2/profiles/${t.profile}.json`\n };\n }\n}\nfunction pe(t, e) {\n return [\n [\"@id\", t.id],\n [\"@type\", e],\n [\"format\", t.format],\n [\"height\", t.height],\n [\"width\", t.width],\n [\"viewingDirection\", t.viewingDirection !== \"left-to-right\" ? t.viewingDirection : void 0],\n [\"license\", t.license ? t.license : void 0]\n ];\n}\nfunction* he(t) {\n const e = t.provider ? yield t.provider[0] : void 0;\n return [\n [\"label\", Ce(t.label)],\n [\n \"metadata\",\n t.metadata && t.metadata.length ? t.metadata.map((i) => ({\n label: Ce(i.label) || \"\",\n value: Ce(i.value) || \"\"\n })) : void 0\n ],\n [\"description\", Ce(t.summary)],\n [\"thumbnail\", se(yield t.thumbnail)],\n [\"navDate\", t.navDate],\n [\"logo\", e ? se(e.logo) : void 0],\n [\"homepage\", e ? e.homepage : void 0],\n [\"attribution\", t.requiredStatement ? Ce(t.requiredStatement.value) : void 0]\n ];\n}\nfunction* Me(t) {\n const e = t.start && t.start.type && t.start.type === \"SpecificResource\" ? je(t.start) : t.start;\n return [\n [\"seeAlso\", se(yield t.seeAlso)],\n [\"service\", se((t.service || []).map(Oa))],\n [\"rendering\", se(yield t.rendering)],\n [\"startCanvas\", e ? e.id : void 0]\n ];\n}\nfunction _a(t) {\n return t.type === \"SpecificResource\";\n}\nfunction Ta(t) {\n return t && t.type === \"FragmentSelector\";\n}\nfunction Ma(t) {\n if (t && _a(t)) {\n let e = t.id;\n const i = t.selector ? Array.isArray(t.selector) ? t.selector[0] : t.selector : void 0;\n return Ta(i) && (e += \"#\" + i.value), e;\n }\n return t == null ? void 0 : t.id;\n}\nconst ka = {\n Manifest: function* (t, e, { isTopLevel: i }) {\n return [\n ...i ? [[\"@context\", \"http://iiif.io/api/presentation/2/context.json\"]] : [],\n ...pe(t, \"sc:Manifest\"),\n ...yield* he(t),\n ...yield* Me(t),\n [\n \"sequences\",\n [\n {\n \"@id\": `${t.id}/sequence0`,\n \"@type\": \"sc:Sequence\",\n canvases: yield t.items\n }\n ]\n ],\n [\"structures\", yield t.structures]\n ];\n },\n Canvas: function* (t) {\n const i = (yield t.items)[0];\n return [\n ...pe(t, \"sc:Canvas\"),\n ...yield* he(t),\n ...yield* Me(t),\n [\"images\", i ? [i.resources] : void 0],\n [\n \"annotations\",\n t.annotations && t.annotations.length ? se(yield t.annotations) : void 0\n ]\n ];\n },\n AnnotationPage: function* (t) {\n return [\n ...pe(t, \"sc:AnnotationList\"),\n ...yield* he(t),\n [\"resources\", t.items && t.items.length ? se(yield t.items) : void 0]\n ];\n },\n Annotation: function* (t) {\n return [\n [\"@id\", t.id],\n [\"@type\", \"oa:Annotation\"],\n [\"motivation\", \"sc:painting\"],\n [\"on\", or(t.target)],\n [\"resource\", se(yield t.body, !0)]\n ];\n },\n ContentResource: function* (t) {\n switch (t.type) {\n case \"Image\":\n return [\n ...pe(t, \"dctypes:Image\"),\n ...yield* he(t),\n ...yield* Me(t)\n ];\n case \"Text\":\n case \"Dataset\":\n default:\n return [...pe(t, void 0), ...yield* he(t)];\n }\n },\n AnnotationCollection: function* (t) {\n return [\n [\"@id\", t.id],\n [\"@type\", \"sc:Layer\"],\n [\"label\", Ce(t.label)]\n ];\n },\n Collection: function* (t) {\n return [\n ...pe(t, \"sc:Collection\"),\n ...yield* he(t),\n ...yield* Me(t),\n [\"members\", yield* t.items]\n ];\n },\n Range: function* (t) {\n const e = [], i = [];\n if (t.items)\n for (const r of t.items) {\n const n = r.type === \"SpecificResource\" ? r.source : r;\n if (n) {\n const s = yield n;\n e.push({\n \"@id\": Ma(r),\n \"@type\": n.type,\n label: s ? s.label : void 0,\n within: t.id\n }), n.type === \"Canvas\" && i.push(n.id);\n }\n }\n return [\n ...pe(t, \"sc:Range\"),\n ...yield* he(t),\n ...yield* Me(t),\n [\"canvases\", i.length === e.length ? i : void 0],\n [\"members\", i.length !== e.length ? e : void 0]\n ];\n }\n};\nfunction de(t) {\n var e;\n return [\n [\"id\", (e = t.id) != null && e.startsWith(\"vault://\") ? void 0 : t.id],\n [\"type\", t.type],\n [\"format\", t.format],\n [\"profile\", t.profile],\n [\"height\", t.height || void 0],\n [\"width\", t.width || void 0],\n [\"duration\", t.duration || void 0],\n [\"viewingDirection\", t.viewingDirection !== \"left-to-right\" ? t.viewingDirection : void 0],\n [\"behavior\", t.behavior && t.behavior.length ? t.behavior : void 0],\n [\"timeMode\", t.timeMode],\n [\"motivation\", Array.isArray(t.motivation) ? t.motivation[0] : t.motivation],\n [M, U]\n ];\n}\nfunction _(t) {\n if (t === U || !t || t.length === 0)\n return;\n const e = t.filter((i) => i !== U);\n if (e.length !== 0)\n return e;\n}\nfunction cr(t) {\n if (t && t.type && t.type === \"ImageService2\") {\n const { id: e, type: i, profile: r, ...n } = t, s = typeof r == \"string\" ? r : Array.isArray(r) ? r.find((a) => typeof a == \"string\") : \"\";\n return {\n \"@id\": e,\n \"@type\": i,\n profile: s ? s.startsWith(\"http\") ? s : `http://iiif.io/api/image/2/${s}.json` : \"http://iiif.io/api/image/2/level0.json\",\n ...n\n };\n }\n return t;\n}\nfunction Jt(t) {\n if (Array.isArray(t) || (t = t ? [t] : []), !(!t || t.length === 0))\n return t.map(cr);\n}\nfunction* te(t) {\n return [\n [\"label\", t.label],\n [\"metadata\", _(t.metadata)],\n [\"summary\", t.summary],\n [\"requiredStatement\", t.requiredStatement],\n [\"rights\", Array.isArray(t.rights) ? t.rights[0] || void 0 : t.rights || void 0],\n [\"navDate\", t.navDate],\n [\"language\", t.language],\n [\"thumbnail\", _(yield t.thumbnail)],\n [\"placeholderCanvas\", yield t.placeholderCanvas],\n [\"accompanyingCanvas\", yield t.accompanyingCanvas],\n [\"provider\", _(yield t.provider)]\n ];\n}\nfunction* ie(t) {\n return [\n [\"seeAlso\", _(yield t.seeAlso)],\n [\"service\", _(Jt(t.service))],\n [\"services\", _(Jt(t.services))],\n [\"rendering\", _(yield t.rendering)],\n [\"supplementary\", _(yield t.supplementary)],\n [\"homepage\", _(yield t.homepage)],\n [\"logo\", _(yield t.logo)],\n [\"partOf\", _(yield t.partOf)],\n [\n \"start\",\n t.start ? je(t.start) : t.start\n ]\n ];\n}\nconst Fa = {\n Manifest: function* (t, e, { isTopLevel: i }) {\n return i ? [\n [\n \"@context\",\n t[\"@context\"] ? t[\"@context\"] : \"http://iiif.io/api/presentation/3/context.json\"\n ],\n ...de(t),\n ...yield* te(t),\n ...yield* ie(t),\n [\"items\", yield t.items],\n [\"structures\", _(yield t.structures)],\n [\"annotations\", _(yield t.annotations)],\n [\"navPlace\", t.navPlace]\n ] : [\n ...de(t),\n ...yield* te(t)\n ];\n },\n Canvas: function* (t) {\n return [\n ...de(t),\n ...yield* te(t),\n ...yield* ie(t),\n [\"items\", yield t.items],\n [\"annotations\", _(yield t.annotations)],\n [\"navPlace\", t.navPlace]\n ];\n },\n Agent: function* (t) {\n return [\n [\"id\", t.id],\n [\"type\", \"Agent\"],\n [\"label\", t.label],\n ...yield* ie(t)\n ];\n },\n AnnotationPage: function* (t) {\n var e;\n const i = Object.entries(t).map(([n, s]) => [n, Array.isArray(s) ? _(s) : s]).filter(([n, s]) => n !== \"items\" && n !== \"id\" && n !== M && n !== z && n !== Pe), r = yield t.items;\n return [\n [\"id\", (e = t.id) != null && e.startsWith(\"vault://\") ? void 0 : t.id],\n ...i,\n ...yield* ie(t),\n [\"items\", r.length || t[Pe] === !1 ? r : U]\n ];\n },\n Service: function* (t) {\n return [[Pi, cr(t)]];\n },\n Annotation: function* (t) {\n const e = Object.entries(t).map(([r, n]) => r === \"motivation\" ? [r, Array.isArray(n) ? n[0] : n] : r === \"target\" ? [\n r,\n je(n, { allowString: !0, allowSourceString: !0, allowedStringType: \"Canvas\" })\n ] : [r, Array.isArray(n) ? _(n) : n]).filter(([r]) => r !== \"body\" && r !== M && r !== Pe);\n let i;\n if (Array.isArray(t.body)) {\n const r = [];\n for (const n of t.body)\n if (n && ne(n)) {\n const s = {\n ...n\n };\n s.source = yield n.source, r.push(je(s, { allowSourceString: !0 }));\n } else\n r.push(yield n);\n i = r;\n } else\n t.body && ne(t.body) ? (i = {\n ...t.body\n }, i.source = yield t.body.source) : i = yield t.body;\n return [\n ...e,\n ...yield* te(t),\n ...yield* ie(t),\n [\"body\", i.length === 1 ? i[0] : i]\n ];\n },\n ContentResource: function* (t) {\n return La(\n [\n ...de(t),\n ...yield* te(t),\n ...yield* ie(t),\n [\"annotations\", _(yield t.annotations)],\n [\"items\", _(yield t.items)]\n ],\n t\n );\n },\n AnnotationCollection: function* (t) {\n return [\n [\"id\", t.id],\n [\"type\", \"AnnotationCollection\"],\n [\"label\", t.label]\n ];\n },\n Collection: function* (t, e, { isTopLevel: i }) {\n return i ? [\n [\"@context\", \"http://iiif.io/api/presentation/3/context.json\"],\n ...de(t),\n ...yield* te(t),\n ...yield* ie(t),\n [\"items\", _(yield t.items)],\n [\"navPlace\", t.navPlace]\n ] : [...de(t), ...yield* te(t)];\n },\n Range: function* (t) {\n const e = [];\n for (const i of t.items)\n i.type === \"Range\" ? e.push(yield i) : i && i.type === \"SpecificResource\" ? e.push(je(i)) : e.push(i);\n return [\n ...de(t),\n ...yield* te(t),\n ...yield* ie(t),\n [\"items\", e],\n [\"annotations\", _(yield t.annotations)],\n [\"navPlace\", t.navPlace]\n ];\n }\n};\nfunction La(t, e) {\n const i = Object.keys(e), r = t.map(([n]) => n);\n for (const n of i)\n n === M || n === Pe || r.indexOf(n) === -1 && typeof e[n] < \"u\" && t.push([n, e[n]]);\n return t;\n}\nconst T = function(e) {\n return function() {\n const i = { type: e, getType: () => e, toString: () => e };\n return (r, n) => ({\n ...i,\n ...r !== void 0 && { payload: r },\n ...n !== void 0 && { meta: n }\n });\n };\n}, lr = \"@iiif/IMPORT_ENTITIES\", fr = \"@iiif/MODIFY_ENTITY_FIELD\", ur = \"@iiif/REORDER_ENTITY_FIELD\", pr = \"@iiif/ADD_REFERENCE\", vt = \"@iiif/UPDATE_REFERENCE\", hr = \"@iiif/REMOVE_REFERENCE\", dr = \"@iiif/ADD_METADATA\", vr = \"@iiif/REMOVE_METADATA\", yt = \"@iiif/UPDATE_METADATA\", yr = \"@iiif/REORDER_METADATA\", mr = T(lr)(), Pa = T(fr)(), ja = T(ur)(), Da = T(pr)(), Na = T(hr)(), $a = T(vt)(), qa = T(dr)(), Ua = T(yt)(), Wa = T(vr)(), za = T(yr)(), Va = {\n importEntities: mr,\n modifyEntityField: Pa,\n reorderEntityField: ja,\n addReference: Da,\n removeReference: Na,\n updateReference: $a,\n addMetadata: qa,\n removeMetadata: Wa,\n updateMetadata: Ua,\n reorderMetadata: za\n}, gr = \"@iiif/ADD_MAPPING\", Ar = \"@iiif/ADD_MAPPINGS\", Ba = T(gr)(), Ga = T(Ar)(), br = \"@iiif/SET_META_VALUE\", Sr = \"@iiif/SET_META_VALUE_DYNAMIC\", xr = \"@iiif/UNSET_META_VALUE\", Qa = T(br)(), Ha = T(Sr)(), Ya = T(xr)(), Xt = {\n setMetaValue: Qa,\n setMetaValueDynamic: Ha,\n unsetMetaValue: Ya\n}, mt = \"RESOURCE_ERROR\", wr = \"RESOURCE_LOADING\", gt = \"RESOURCE_READY\", Cr = \"@iiif/REQUEST_RESOURCE\", Rr = \"@iiif/REQUEST_ERROR\", Ir = \"@iiif/REQUEST_MISMATCH\", Er = \"@iiif/REQUEST_COMPLETE\", Ja = \"@iiif/REQUEST_OFFLINE_RESOURCE\", Xa = T(Cr)(), At = T(Rr)(), Ka = T(Ir)(), Za = T(Er)(), Tt = \"@iiif/BATCH\", eo = \"@iiif/BATCH_IMPORT\", bt = T(Tt)(), to = (t, e) => {\n const { entities: i, resource: r, mapping: n } = Ra(e);\n if (r.id === void 0)\n return [At({ id: t, message: \"ID is not defined in resource.\" })];\n const s = [mr({ entities: i }), Ga({ mapping: n })];\n return r.id !== t && (s.push(Ba({ id: t, type: r.type })), s.push(Ka({ requestId: t, actualId: r.id }))), s.push(Za({ id: t })), s;\n}, Kt = Number.isNaN || function(e) {\n return typeof e == \"number\" && e !== e;\n};\nfunction io(t, e) {\n return !!(t === e || Kt(t) && Kt(e));\n}\nfunction Zt(t, e) {\n if (!Array.isArray(t) || !Array.isArray(e))\n return t === e;\n if (t.length !== e.length)\n return !1;\n for (let i = 0; i < t.length; i++)\n if (!io(t[i], e[i]))\n return !1;\n return !0;\n}\nfunction rt(t, e, i) {\n const r = t.iiif.requests[e], n = t.iiif.mapping[e];\n if (!n || !t.iiif.entities[n][r.resourceUri])\n return;\n const s = t.iiif.entities[n][r.resourceUri];\n if (s && s[M]) {\n const a = s[M].find((c) => i ? c[z] === i.id : c[z] === s.id);\n return It(s, a);\n }\n return s;\n}\nfunction ro(t) {\n return t && typeof t.then == \"function\";\n}\nfunction ei(t, e, { waitTimeout: i = 30 } = {}) {\n return (r, n) => {\n const s = t.getStore(), a = s.getState(), c = a.iiif.requests[r];\n if (c) {\n if (c.loadingState === gt) {\n const p = rt(a, r);\n if (p)\n return p;\n }\n switch (c.loadingState) {\n case mt:\n break;\n case wr:\n return (async () => {\n let p, f = !1;\n try {\n const v = await Promise.race([\n new Promise((y, m) => {\n f || (p = s.subscribe(() => {\n const h = s.getState();\n if (h.iiif.requests[r].loadingState === mt) {\n m();\n return;\n }\n if (h.iiif.requests[r].loadingState === gt) {\n const A = rt(h, r);\n A ? y(A) : m();\n }\n }));\n }),\n new Promise(\n (y, m) => setTimeout(\n () => {\n f = !0, m();\n },\n i * 60 * 1e3\n )\n )\n ]);\n if (p && p(), v)\n return v;\n } catch {\n p && p();\n }\n })();\n }\n }\n t.dispatch(Xa({ id: r }));\n const u = (p) => {\n if (!p)\n return;\n !p.id && !p[\"@id\"] && (p[\"@type\"] && (p[\"@id\"] = r), p.id = r);\n const f = to(r, p);\n return t.dispatch(bt({ actions: f })), rt(s.getState(), r);\n };\n try {\n const p = e(r, n);\n return ro(p) ? (async () => {\n try {\n return u(await p);\n } catch (f) {\n throw t.dispatch(At({ id: r, message: f.toString() })), f;\n }\n })() : u(p);\n } catch (p) {\n throw t.dispatch(At({ id: r, message: p.toString() })), p;\n }\n };\n}\nfunction Or() {\n return {\n Collection: {},\n Manifest: {},\n Canvas: {},\n AnnotationPage: {},\n AnnotationCollection: {},\n Annotation: {},\n ContentResource: {},\n Range: {},\n Service: {},\n Selector: {},\n Agent: {}\n };\n}\nconst ti = (t) => {\n let e;\n const i = /* @__PURE__ */ new Set(), r = (u, p) => {\n const f = typeof u == \"function\" ? u(e) : u;\n if (!Object.is(f, e)) {\n const v = e;\n e = p ?? typeof f != \"object\" ? f : Object.assign({}, e, f), i.forEach((y) => y(e, v));\n }\n }, n = () => e, c = { setState: r, getState: n, subscribe: (u) => (i.add(u), () => i.delete(u)), destroy: () => {\n i.clear();\n } };\n return e = t(r, n, c), c;\n}, no = (t) => t ? ti(t) : ti, so = (t, e) => (i, r, n) => (n.dispatch = (s) => (i((a) => t(a, s), !1, s), s), n.dispatchFromDevtools = !0, { dispatch: (...s) => n.dispatch(...s), ...e }), ao = so, St = /* @__PURE__ */ new Map(), ze = (t) => {\n const e = St.get(t);\n return e ? Object.fromEntries(\n Object.entries(e.stores).map(([i, r]) => [i, r.getState()])\n ) : {};\n}, oo = (t, e, i) => {\n if (t === void 0)\n return {\n type: \"untracked\",\n connection: e.connect(i)\n };\n const r = St.get(i.name);\n if (r)\n return { type: \"tracked\", store: t, ...r };\n const n = {\n connection: e.connect(i),\n stores: {}\n };\n return St.set(i.name, n), { type: \"tracked\", store: t, ...n };\n}, co = (t, e = {}) => (i, r, n) => {\n const { enabled: s, anonymousActionType: a, store: c, ...u } = e;\n let p;\n try {\n p = (s ?? !1) && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch {\n }\n if (!p)\n return t(i, r, n);\n const { connection: f, ...v } = oo(c, p, u);\n let y = !0;\n n.setState = (A, x, S) => {\n const C = i(A, x);\n if (!y)\n return C;\n const E = S === void 0 ? { type: a || \"anonymous\" } : typeof S == \"string\" ? { type: S } : S;\n return c === void 0 ? (f == null || f.send(E, r()), C) : (f == null || f.send(\n {\n ...E,\n type: `${c}/${E.type}`\n },\n {\n ...ze(u.name),\n [c]: n.getState()\n }\n ), C);\n };\n const m = (...A) => {\n const x = y;\n y = !1, i(...A), y = x;\n }, h = t(n.setState, r, n);\n if (v.type === \"untracked\" ? f == null || f.init(h) : (v.stores[v.store] = n, f == null || f.init(\n Object.fromEntries(\n Object.entries(v.stores).map(([A, x]) => [\n A,\n A === v.store ? h : x.getState()\n ])\n )\n )), n.dispatchFromDevtools && typeof n.dispatch == \"function\") {\n let A = !1;\n const x = n.dispatch;\n n.dispatch = (...S) => {\n x(...S);\n };\n }\n return f.subscribe((A) => {\n var x;\n switch (A.type) {\n case \"ACTION\":\n if (typeof A.payload != \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return nt(\n A.payload,\n (S) => {\n if (S.type === \"__setState\") {\n if (c === void 0) {\n m(S.state);\n return;\n }\n Object.keys(S.state).length !== 1 && console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format. \n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n const C = S.state[c];\n if (C == null)\n return;\n JSON.stringify(n.getState()) !== JSON.stringify(C) && m(C);\n return;\n }\n n.dispatchFromDevtools && typeof n.dispatch == \"function\" && n.dispatch(S);\n }\n );\n case \"DISPATCH\":\n switch (A.payload.type) {\n case \"RESET\":\n return m(h), c === void 0 ? f == null ? void 0 : f.init(n.getState()) : f == null ? void 0 : f.init(ze(u.name));\n case \"COMMIT\":\n if (c === void 0) {\n f == null || f.init(n.getState());\n return;\n }\n return f == null ? void 0 : f.init(ze(u.name));\n case \"ROLLBACK\":\n return nt(A.state, (S) => {\n if (c === void 0) {\n m(S), f == null || f.init(n.getState());\n return;\n }\n m(S[c]), f == null || f.init(ze(u.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return nt(A.state, (S) => {\n if (c === void 0) {\n m(S);\n return;\n }\n JSON.stringify(n.getState()) !== JSON.stringify(S[c]) && m(S[c]);\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState: S } = A.payload, C = (x = S.computedStates.slice(-1)[0]) == null ? void 0 : x.state;\n if (!C)\n return;\n m(c === void 0 ? C : C[c]), f == null || f.send(\n null,\n // FIXME no-any\n S\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return y = !y;\n }\n return;\n }\n }), h;\n}, lo = co, nt = (t, e) => {\n let i;\n try {\n i = JSON.parse(t);\n } catch (r) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n r\n );\n }\n i !== void 0 && e(i);\n}, fo = (t) => (e, i, r) => {\n const n = r.subscribe;\n return r.subscribe = (a, c, u) => {\n let p = a;\n if (c) {\n const f = (u == null ? void 0 : u.equalityFn) || Object.is;\n let v = a(r.getState());\n p = (y) => {\n const m = a(y);\n if (!f(v, m)) {\n const h = v;\n c(v = m, h);\n }\n }, u != null && u.fireImmediately && c(v, v);\n }\n return n(p);\n }, t(e, i, r);\n}, uo = fo, po = (t = {}, e) => {\n switch (e.type) {\n case gr:\n return {\n ...t,\n [e.payload.id]: e.payload.type\n };\n case Ar:\n return {\n ...t,\n ...e.payload.mapping\n };\n default:\n return t;\n }\n};\nfunction st(t, e, i, r) {\n return !(!t[i] || !t[i][e] || !t[i][e][r] || !Array.isArray(t[i][e][r]));\n}\nfunction ho(t, e) {\n const i = {}, r = [];\n for (const [n, s] of Object.entries(t || {})) {\n r.push(n);\n const a = (e || {})[n];\n if (!a || a.length === 0) {\n i[n] = s;\n continue;\n }\n i[n] = a;\n }\n for (const [n, s] of Object.entries(e || {}))\n r.indexOf(n) === -1 && (i[n] = s);\n return i;\n}\nfunction w(t) {\n return t.payload;\n}\nfunction at(t, e) {\n return typeof t > \"u\" ? e : t;\n}\nconst vo = (t = Or(), e) => {\n var r;\n const i = (n, s) => ({\n ...t,\n [w(e).type]: {\n ...t[w(e).type],\n [w(e).id]: {\n ...n,\n ...s\n }\n }\n });\n switch (e.type) {\n case fr: {\n if (!t[w(e).type] || !t[w(e).type][w(e).id])\n return t;\n const n = t[w(e).type][w(e).id];\n return typeof n == \"string\" ? t : i(n, { [w(e).key]: w(e).value });\n }\n case ur: {\n if (!st(t, w(e).id, w(e).type, w(e).key))\n return t;\n const n = t[w(e).type][w(e).id];\n if (typeof n == \"string\")\n return t;\n const s = Array.from(n[w(e).key]), [a] = s.splice(w(e).startIndex, 1);\n return s.splice(w(e).endIndex, 0, a), i(n, { [w(e).key]: s });\n }\n case lr: {\n const n = Object.keys(w(e).entities), s = { ...t };\n for (const a of n) {\n const c = w(e).entities[a], u = { ...t[a] || {} };\n let p = !1;\n const f = Object.keys(c || {}) || [];\n if (c && f) {\n for (const v of f)\n p = !0, u[v] = t[a][v] ? ho(t[a][v], c[v]) : c[v];\n p && (s[a] = u);\n }\n }\n return s;\n }\n case pr: {\n if (!st(t, w(e).id, w(e).type, w(e).key))\n return t;\n const n = t[w(e).type][w(e).id], s = Array.from(n[w(e).key]);\n return s.splice(at(w(e).index, s.length + 1), 0, w(e).reference), i(n, { [w(e).key]: s });\n }\n case vt:\n case hr: {\n if (!st(t, w(e).id, w(e).type, w(e).key))\n return t;\n const n = t[w(e).type][w(e).id], s = Array.from(n[w(e).key]), a = at(\n w(e).index,\n s.findIndex((c) => c && c.id === w(e).reference.id)\n );\n return a === -1 || ((r = s[a]) == null ? void 0 : r.id) !== w(e).reference.id ? t : (e.type === vt ? s.splice(a, 1, w(e).reference) : s.splice(a, 1), i(n, { [w(e).key]: s }));\n }\n case dr: {\n const n = t[w(e).type][w(e).id];\n if (!n)\n return t;\n const s = Array.from(n.metadata || []), a = w(e);\n return s.splice(at(e.payload.beforeIndex, s.length + 1), 0, {\n label: a.label,\n value: a.label\n }), i(n, { metadata: s });\n }\n case yr: {\n const n = t[w(e).type][w(e).id];\n if (typeof n == \"string\" || !n)\n return t;\n const s = Array.from(n.metadata || []), [a] = s.splice(w(e).startIndex, 1);\n return s.splice(w(e).endIndex, 0, a), i(n, { metadata: s });\n }\n case yt:\n case vr: {\n const n = t[w(e).type][w(e).id], s = Array.from(n.metadata || []), a = w(e).atIndex;\n return typeof a > \"u\" || a === -1 || !s[a] ? t : (e.type === yt ? s.splice(a, 1, { label: w(e).label, value: w(e).value }) : s.splice(a, 1), i(n, { metadata: s }));\n }\n default:\n return t;\n }\n}, yo = (t = {}, e) => {\n switch (e.type) {\n case Cr:\n case Ja:\n return {\n ...t,\n [e.payload.id]: {\n requestUri: e.payload.id,\n loadingState: wr,\n uriMismatch: !1,\n resourceUri: e.payload.id\n }\n };\n case Ir:\n return {\n ...t,\n [e.payload.requestId]: {\n ...t[e.payload.requestId] || {},\n uriMismatch: !0,\n resourceUri: e.payload.actualId\n },\n [e.payload.actualId]: {\n requestUri: e.payload.requestId,\n loadingState: t[e.payload.requestId].loadingState,\n uriMismatch: !0,\n resourceUri: e.payload.actualId\n }\n };\n case Rr:\n return {\n ...t,\n [e.payload.id]: {\n ...t[e.payload.id] || {},\n loadingState: mt,\n error: e.payload.message\n }\n };\n case Er:\n return {\n ...t,\n [e.payload.id]: {\n ...t[e.payload.id] || {},\n loadingState: gt,\n error: void 0\n }\n };\n }\n return t;\n}, mo = (t = {}, e) => {\n const { id: i, updateValue: r, value: n, meta: s, key: a } = e && e.payload || {};\n switch (e.type) {\n case br:\n return {\n ...t,\n [i]: {\n ...t[i] || {},\n [s]: {\n ...t[i] ? t[i][s] || {} : {},\n [a]: n\n }\n }\n };\n case Sr:\n return {\n ...t,\n [i]: {\n ...t[i] || {},\n [s]: {\n ...t[i] ? t[i][s] || {} : {},\n [a]: t[i] && t[i][s] ? r(t[i][s][a]) : r(void 0)\n }\n }\n };\n case xr:\n return t[i] && t[i][s] && t[i][s][a] ? {\n ...t,\n [i]: {\n ...t[i] || {},\n [s]: {\n ...t[i] ? t[i][s] || {} : {},\n [a]: void 0\n }\n }\n } : t;\n default:\n return t;\n }\n};\nfunction _r(t = {}) {\n const e = Object.keys(t);\n return function(r = {}, n) {\n let s = !1;\n const a = {};\n for (let c = 0; c < e.length; c++) {\n const u = e[c];\n a[u] = t[u](r[u], n), s = s || a[u] !== r[u];\n }\n return s ? a : r;\n };\n}\nfunction go(t) {\n return (e, i) => i && i.type === Tt ? i.payload.actions.reduce(t, e) : i && i.type === eo ? {\n ...e,\n iiif: {\n ...e.iiif,\n ...i.payload.state\n }\n } : t(e, i);\n}\nconst Ao = _r({\n mapping: po,\n entities: vo,\n requests: yo,\n meta: mo\n});\nfunction bo() {\n return {\n iiif: {\n entities: Or(),\n meta: {},\n mapping: {},\n requests: {}\n }\n };\n}\nfunction So(t = {}) {\n const {\n enableDevtools: e = !1,\n iiifStoreName: i = \"iiif\",\n defaultState: r = bo(),\n customReducers: n = {}\n } = t, s = go(_r({ [i]: Ao, ...n }));\n return no(uo(lo(ao(s, r), { enabled: e })));\n}\nfunction xo(t) {\n return { all: t = t || /* @__PURE__ */ new Map(), on: function(e, i) {\n var r = t.get(e);\n r ? r.push(i) : t.set(e, [i]);\n }, off: function(e, i) {\n var r = t.get(e);\n r && (i ? r.splice(r.indexOf(i) >>> 0, 1) : t.set(e, []));\n }, emit: function(e, i) {\n var r = t.get(e);\n r && r.slice().map(function(n) {\n n(i);\n }), (r = t.get(\"*\")) && r.slice().map(function(n) {\n n(e, i);\n });\n } };\n}\nfunction L(t, e, i, r = !0) {\n e[Ie] = e[Ie] || [], e[Ie].push(t);\n const n = /* @__PURE__ */ new Map();\n Object.defineProperty(e, t, {\n enumerable: r,\n get() {\n if (typeof e[me][t] > \"u\")\n return;\n const s = e[me][t];\n if (!s)\n return s;\n const a = i.get(e[me][t], {\n parent: this.id ? { id: this.id, type: this.type } : void 0\n });\n return n.has(a) || (n.clear(), n.set(a, ge(a, i))), n.get(a);\n },\n set(s) {\n e[me][t] !== s && (this[ve] ? i.modifyEntityField({ id: this.id, type: this.type }, t, Tr(s)) : this[me][t] = s);\n }\n });\n}\nconst me = Symbol.for(\"_refs_\"), ve = Symbol.for(\"_reactive_\"), Ie = Symbol.for(\"_defined_\"), ii = Symbol.for(\"_parent_\");\nfunction wo(t, e = !1, i) {\n const r = {\n id: \"\",\n type: \"unknown\",\n [Ie]: [],\n [me]: {},\n [ii]: i || null,\n [ve]: null,\n is(n) {\n return typeof n == \"string\" ? this.id === n : n.id ? n.id === this.id : !1;\n },\n reactive() {\n if (!this[ve])\n return this[ve] = this.subscribe(() => this.refresh(), !0), () => {\n this.unreactive();\n };\n },\n refresh() {\n if (this.id) {\n const n = this.unwrap();\n for (const s of Object.keys(n || {}))\n this[Ie].includes(s) ? this[me][s] = n[s] : this[s] = n[s];\n }\n },\n unreactive() {\n this[ve] && (this[ve](), this[ve] = null);\n },\n unwrap() {\n if (!this.id)\n throw new Error(\"Invalid object\");\n const n = this[ii];\n return t.get(this.id, { parent: n ? { id: n, type: \"unknown\" } : void 0 });\n },\n toPresentation3() {\n return t.toPresentation3(this.unwrap());\n },\n toPresentation2() {\n return t.toPresentation2(this.unwrap());\n },\n valueOf() {\n return this.unwrap();\n },\n toJSON() {\n const n = this;\n return {\n ...n,\n items: n.items,\n annotations: n.annotations,\n structures: n.structures,\n seeAlso: n.seeAlso,\n service: n.service,\n services: n.services,\n rendering: n.rendering,\n partOf: n.partOf,\n start: n.start,\n supplementary: n.supplementary,\n homepage: n.homepage,\n thumbnail: n.thumbnail,\n placeholderCanvas: n.placeholderCanvas,\n accompanyingCanvas: n.accompanyingCanvas,\n provider: n.provider\n };\n },\n subscribe(n, s = !0) {\n return t.subscribe(\n () => this.id ? t.get(this.id) : null,\n n,\n s\n );\n }\n };\n return L(\"items\", r, t), L(\"annotations\", r, t), L(\"structures\", r, t), L(\"seeAlso\", r, t), L(\"rendering\", r, t), L(\"partOf\", r, t), L(\"start\", r, t, !1), L(\"supplementary\", r, t), L(\"homepage\", r, t), L(\"thumbnail\", r, t), L(\"placeholderCanvas\", r, t, !1), L(\"accompanyingCanvas\", r, t, !1), L(\"provider\", r, t), L(\"body\", r, t), L(\"logo\", r, t), r;\n}\nfunction Co(t) {\n return !!t[Ie];\n}\nfunction Tr(t) {\n return Array.isArray(t) ? t.map((e) => Tr(e)) : !t || !t.type ? t : { id: t.id, type: t.type };\n}\nfunction ge(t, e, i = !1, r) {\n if (Array.isArray(t))\n return t.map((c) => ge(c, e, i));\n if (!t || !t.type || !t.id)\n return t;\n const n = wo(e, i), s = Object.create(n), a = Object.assign(s, t);\n return i && a.reactive(), a;\n}\nfunction ri(t) {\n switch (t) {\n case \"Image\":\n case \"Video\":\n case \"Sound\":\n case \"Dataset\":\n case \"Text\":\n case \"Composite\":\n case \"List\":\n case \"Independents\":\n case \"Audience\":\n return \"ContentResource\";\n case \"ImageService1\":\n case \"ImageService2\":\n case \"ImageService3\":\n return \"Service\";\n }\n return t;\n}\nclass Ro {\n constructor(e, i) {\n D(this, \"options\");\n D(this, \"store\");\n D(this, \"emitter\");\n D(this, \"isBatching\", !1);\n D(this, \"batchQueue\", []);\n D(this, \"remoteFetcher\");\n D(this, \"staticFetcher\");\n D(this, \"defaultFetcher\", (e) => fetch(e).then((i) => i.json()));\n this.options = Object.assign(\n {\n reducers: {},\n customFetcher: this.defaultFetcher,\n enableDevtools: !0\n },\n e || {}\n ), this.store = i || So({\n customReducers: this.options.reducers,\n defaultState: this.options.defaultState,\n enableDevtools: this.options.enableDevtools\n }), this.emitter = xo(), this.remoteFetcher = ei(this, this.options.customFetcher), this.staticFetcher = ei(this, (r, n) => n);\n }\n batch(e) {\n this.isBatching = !0;\n try {\n e(this), this.isBatching = !1, this.dispatch(bt({ actions: this.batchQueue }));\n } catch (i) {\n throw this.batchQueue = [], this.isBatching = !1, i;\n }\n this.batchQueue = [];\n }\n async asyncBatch(e) {\n this.isBatching = !0;\n try {\n await e(this), this.isBatching = !1, this.dispatch(bt({ actions: this.batchQueue }));\n } catch (i) {\n throw this.batchQueue = [], this.isBatching = !1, i;\n }\n this.batchQueue = [];\n }\n modifyEntityField(e, i, r) {\n this.dispatch(\n Va.modifyEntityField({\n id: e.id,\n type: e.type,\n key: i,\n value: r\n })\n );\n }\n dispatch(e) {\n if (this.isBatching)\n this.batchQueue.push(e);\n else {\n if (e.type === Tt) {\n for (const n of e.payload.actions)\n this.emitter.emit(n.type, { action: n, state: this.store.getState() });\n this.store.dispatch(e);\n const r = this.getState();\n for (const n of e.payload.actions)\n this.emitter.emit(`after:${n.type}`, { action: n, state: r });\n return;\n }\n this.emitter.emit(e.type, { action: e, state: this.store.getState() }), this.store.dispatch(e);\n const i = this.store.getState();\n this.emitter.emit(`after:${e.type}`, { action: e, state: i });\n return;\n }\n }\n on(e, i) {\n return this.emitter.on(e, i), () => {\n this.emitter.off(e, i);\n };\n }\n serialize(e, i) {\n return Ea(this.getState().iiif, e, i);\n }\n toPresentation2(e) {\n return this.serialize(e, ka);\n }\n toPresentation3(e) {\n return this.serialize(e, Fa);\n }\n hydrate(e, i, r = {}) {\n return this.get(e, i, { ...r, skipSelfReturn: !1 });\n }\n get(e, i, r = {}) {\n typeof i != \"string\" && (r = i || {}, i = void 0);\n const { skipSelfReturn: n = !0 } = r || {};\n let s = r.parent ? typeof r.parent == \"string\" ? r.parent : r.parent.id : void 0;\n if (Array.isArray(e))\n return e.map((v) => this.get(v, r));\n const a = this.getState();\n if (ne(e) && !r.preserveSpecificResources && (e = e.source), typeof e == \"string\") {\n const v = ri(i || a.iiif.mapping[e]);\n if (!v)\n return n ? null : { id: e, type: \"unknown\" };\n e = { id: e, type: v };\n }\n if (e && e.partOf && !s && !r.skipPartOfCheck) {\n const v = Array.isArray(e.partOf) ? e.partOf[0] : e.partOf;\n v && (typeof v == \"string\" && (s = v), typeof v.id == \"string\" && (s = v.id));\n }\n const c = ri(i || (e == null ? void 0 : e.type)), u = e == null ? void 0 : e.id, p = a.iiif.entities[c];\n if (!p) {\n const v = a.iiif.requests[u];\n return v && v.resourceUri !== u ? this.get(v.resourceUri, r) : n ? null : e;\n }\n const f = p[e.id];\n if (f && f[M]) {\n const v = f[M].find((y) => s ? y[z] === s : y[z] === f.id);\n return It(f, v);\n }\n return p[e.id] || (n ? null : e);\n }\n select(e) {\n return e(this.getState());\n }\n getStore() {\n return this.store;\n }\n getState() {\n return this.store.getState();\n }\n deep(e, i) {\n if (typeof e > \"u\")\n return this.get(i, { skipSelfReturn: !1 });\n if (typeof e == \"function\")\n try {\n const n = e(this.get(i, { skipSelfReturn: !1 })), s = (a) => this.deep(a, n);\n return s.size = Array.isArray(n) ? n.length : 1, s;\n } catch {\n const s = (a) => this.deep(a, void 0);\n return s.size = 0, s;\n }\n const r = (n) => this.deep(n, e);\n return r.size = Array.isArray(e) ? e.length : 1, r;\n }\n loadManifest(e, i) {\n const r = typeof e == \"string\" ? e : e.id;\n return this.load(r, i);\n }\n loadCollection(e, i) {\n const r = typeof e == \"string\" ? e : e.id;\n return this.load(r, i);\n }\n load(e, i) {\n const r = typeof e == \"string\" ? e : e.id;\n return i ? Promise.resolve(this.staticFetcher(r, i)) : Promise.resolve(this.remoteFetcher(r));\n }\n loadSync(e, i) {\n const r = typeof e == \"string\" ? e : e.id;\n return this.staticFetcher(r, i);\n }\n loadManifestSync(e, i) {\n const r = typeof e == \"string\" ? e : e.id;\n return this.loadSync(r, i);\n }\n loadCollectionSync(e, i) {\n const r = typeof e == \"string\" ? e : e.id;\n return this.loadSync(r, i);\n }\n areInputsEqual(e, i) {\n return Zt(e, i);\n }\n subscribe(e, i, r) {\n return typeof r > \"u\" && (typeof i > \"u\" || i === !1 || i === !0) && (r = i, i = e, e = (n) => n), this.store.subscribe(e, (n) => i(n, this), {\n equalityFn: Zt,\n fireImmediately: !r\n });\n }\n async ensureLoaded(e) {\n const i = typeof e == \"string\" ? e : e.id;\n this.requestStatus(i) || await this.load(i);\n }\n requestStatus(e) {\n return this.select((i) => i.iiif.requests[e]);\n }\n getResourceMeta(e, i) {\n const r = this.getState().iiif.meta[e];\n if (r)\n return i ? r[i] : r;\n }\n getObject(e, i, r = {}) {\n const { reactive: n, ...s } = r;\n return ge(this.get(e, i, s), this, n);\n }\n async loadObject(e, i) {\n return ge(await this.load(e, i), this);\n }\n async loadManifestObject(e, i) {\n return ge(await this.loadManifest(e, i), this);\n }\n async loadCollectionObject(e, i) {\n return ge(await this.loadCollection(e, i), this);\n }\n wrapObject(e) {\n return ge(this.get(e, { skipSelfReturn: !1 }), this);\n }\n isWrapped(e) {\n return Co(e);\n }\n setMetaValue([e, i, r], n) {\n this.dispatch(\n typeof n == \"function\" ? Xt.setMetaValueDynamic({\n id: e,\n meta: i,\n key: r,\n updateValue: n\n }) : Xt.setMetaValue({\n id: e,\n meta: i,\n key: r,\n value: n\n })\n );\n }\n}\nfunction Io() {\n return typeof self < \"u\" ? self : typeof window < \"u\" ? window : typeof global < \"u\" ? global : {};\n}\nfunction No(t) {\n const e = Io();\n try {\n const r = e.IIIF_VAULT;\n if (r)\n return r;\n } catch {\n }\n const i = new Ro(t);\n try {\n e.IIIF_VAULT = i;\n } catch {\n }\n return i;\n}\nvar xt = { exports: {} };\n(function(t, e) {\n var i = Object.defineProperty, r = (s, a, c) => a in s ? i(s, a, { enumerable: !0, configurable: !0, writable: !0, value: c }) : s[a] = c, n = (s, a, c) => (r(s, typeof a != \"symbol\" ? a + \"\" : a, c), c);\n (function(s, a) {\n a(e);\n })(Gn, function(s) {\n const a = \"http://library.stanford.edu/iiif/image-api/compliance.html#level1\", c = \"http://library.stanford.edu/iiif/image-api/compliance.html#level2\", u = \"http://library.stanford.edu/iiif/image-api/conformance.html#level1\", p = \"http://library.stanford.edu/iiif/image-api/conformance.html#level2\", f = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1\", v = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\", y = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1\", m = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2\", h = \"http://iiif.io/api/image/1/level1.json\", A = \"http://iiif.io/api/image/1/profiles/level1.json\", x = \"http://iiif.io/api/image/1/level2.json\", S = \"http://iiif.io/api/image/1/profiles/level2.json\", C = \"http://iiif.io/api/image/2/level1.json\", E = \"http://iiif.io/api/image/2/profiles/level1.json\", P = \"http://iiif.io/api/image/2/level2.json\", j = \"http://iiif.io/api/image/2/profiles/level2.json\", k = \"level1\", $ = \"level2\", B = \"http://iiif.io/api/image/2/level1\", G = \"http://iiif.io/api/image/2/level2\", oe = [B, G, a, c, u, p, f, v, y, m, h, A, x, S, C, E, P, j, k, $], W = [\"http://iiif.io/api/image/2/level0\", B, G, \"http://library.stanford.edu/iiif/image-api/compliance.html#level0\", a, c, \"http://library.stanford.edu/iiif/image-api/conformance.html#level0\", u, p, \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0\", f, v, \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0\", y, m, \"http://iiif.io/api/image/1/level0.json\", \"http://iiif.io/api/image/1/profiles/level0.json\", h, A, x, S, \"http://iiif.io/api/image/2/level0.json\", \"http://iiif.io/api/image/2/profiles/level0.json\", C, E, P, j, \"level0\", k, $], Ee = [\"sc:Collection\", \"sc:Manifest\", \"sc:Canvas\", \"sc:AnnotationList\", \"oa:Annotation\", \"sc:Range\", \"sc:Layer\", \"sc:Sequence\", \"oa:Choice\", \"Service\", \"ContentResource\"];\n class ce {\n constructor(o, d = {}) {\n n(this, \"traversals\"), n(this, \"options\"), this.traversals = { collection: [], manifest: [], canvas: [], annotationList: [], sequence: [], annotation: [], contentResource: [], choice: [], range: [], service: [], layer: [], ...o }, this.options = { convertPropsToArray: !0, mergeMemberProperties: !0, allowUndefinedReturn: !1, ...d };\n }\n static all(o) {\n return new ce({ collection: [o], manifest: [o], canvas: [o], annotationList: [o], sequence: [o], annotation: [o], contentResource: [o], choice: [o], range: [o], service: [o], layer: [o] });\n }\n traverseCollection(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(o))), this.traversals.collection);\n }\n traverseCollectionItems(o) {\n if (this.options.mergeMemberProperties) {\n const d = [...(o.manifests || []).map((g) => typeof g == \"string\" ? { \"@id\": g, \"@type\": \"sc:Manifest\" } : g), ...(o.collections || []).map((g) => typeof g == \"string\" ? { \"@id\": g, \"@type\": \"sc:Collection\" } : g), ...o.members || []];\n delete o.collections, delete o.manifests, o.members = d;\n }\n return o.manifests && (o.manifests = o.manifests.map((d) => this.traverseManifest(typeof d == \"string\" ? { \"@id\": d, \"@type\": \"sc:Manifest\" } : d))), o.collections && (o.collections = o.collections.map((d) => this.traverseCollection(typeof d == \"string\" ? { \"@id\": d, \"@type\": \"sc:Collection\" } : d))), o.members && (o.members = o.members.map((d) => typeof d == \"string\" ? d : this.traverseUnknown(d))), o;\n }\n traverseManifest(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(o))), this.traversals.manifest);\n }\n traverseManifestItems(o) {\n return o.sequences && (o.sequences = o.sequences.map((d) => this.traverseSequence(d))), o.structures && (o.structures = o.structures.map((d) => this.traverseRange(d))), o;\n }\n traverseSequence(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(o))), this.traversals.sequence);\n }\n traverseSequenceItems(o) {\n return o.canvases && (o.canvases = o.canvases.map((d) => this.traverseCanvas(d))), o;\n }\n traverseCanvas(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(o))), this.traversals.canvas);\n }\n traverseCanvasItems(o) {\n return o.images && (o.images = o.images.map((d) => this.traverseAnnotation(d))), o.otherContent && (o.otherContent = o.otherContent.map((d) => this.traverseAnnotationList(d))), o;\n }\n traverseRange(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(o))), this.traversals.range);\n }\n traverseRangeItems(o) {\n if (this.options.mergeMemberProperties) {\n const d = [...(o.ranges || []).map((g) => typeof g == \"string\" ? { \"@id\": g, \"@type\": \"sc:Range\" } : g), ...(o.canvases || []).map((g) => typeof g == \"string\" ? { \"@id\": g, \"@type\": \"sc:Canvas\" } : g), ...o.members || []];\n delete o.ranges, delete o.canvases, o.members = d.length ? d.map((g) => this.traverseUnknown(g)) : void 0;\n }\n return o;\n }\n traverseAnnotationList(o) {\n const d = typeof o == \"string\" ? { \"@id\": o, \"@type\": \"sc:AnnotationList\" } : o;\n return this.traverseType(this.traverseDescriptive(this.traverseAnnotationListItems(d)), this.traversals.annotationList);\n }\n traverseAnnotationListItems(o) {\n return o.resources && (o.resources = o.resources.map((d) => this.traverseAnnotation(d))), o;\n }\n traverseAnnotation(o) {\n return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(o))), this.traversals.annotation);\n }\n traverseAnnotationItems(o) {\n return o.resource && (Array.isArray(o.resource) ? o.resource = o.resource.map((d) => this.traverseContentResource(d)) : o.resource = this.traverseContentResource(o.resource)), o.on, o;\n }\n traverseLayer(o) {\n return this.traverseType(this.traverseLinking(this.traverseLayerItems(o)), this.traversals.layer);\n }\n traverseLayerItems(o) {\n return o.otherContent && (o.otherContent = o.otherContent.map((d) => this.traverseAnnotationList(d))), o;\n }\n traverseChoice(o) {\n return this.traverseType(this.traverseChoiceItems(o), this.traversals.choice);\n }\n traverseChoiceItems(o) {\n return o.default && o.default !== \"rdf:nil\" && (o.default = this.traverseContentResource(o.default)), o.item && o.item !== \"rdf:nil\" && (o.item = o.item.map((d) => this.traverseContentResource(d))), o;\n }\n traverseService(o) {\n return this.traverseType(this.traverseLinking(o), this.traversals.service);\n }\n traverseContentResource(o) {\n return o[\"@type\"] === \"oa:Choice\" ? this.traverseChoice(o) : this.traverseType(this.traverseDescriptive(this.traverseLinking(o)), this.traversals.contentResource);\n }\n traverseUnknown(o) {\n if (!o[\"@type\"] || typeof o == \"string\")\n return o;\n switch (function(d) {\n if (d == null)\n throw new Error(\"Null or undefined is not a valid entity.\");\n if (Array.isArray(d))\n throw new Error(\"Array is not a valid entity\");\n if (typeof d != \"object\")\n throw new Error(typeof d + \" is not a valid entity\");\n if (typeof d[\"@type\"] == \"string\") {\n const g = Ee.indexOf(d[\"@type\"]);\n if (g !== -1)\n return Ee[g];\n }\n if (d.profile)\n return \"Service\";\n if (d.format || d[\"@type\"])\n return \"ContentResource\";\n throw new Error(\"Resource type is not known\");\n }(o)) {\n case \"sc:Collection\":\n return this.traverseCollection(o);\n case \"sc:Manifest\":\n return this.traverseManifest(o);\n case \"sc:Canvas\":\n return this.traverseCanvas(o);\n case \"sc:Sequence\":\n return this.traverseSequence(o);\n case \"sc:Range\":\n return this.traverseRange(o);\n case \"oa:Annotation\":\n return this.traverseAnnotation(o);\n case \"sc:AnnotationList\":\n return this.traverseAnnotationList(o);\n case \"sc:Layer\":\n return this.traverseLayer(o);\n case \"Service\":\n return this.traverseService(o);\n case \"oa:Choice\":\n return this.traverseChoice(o);\n case \"ContentResource\":\n return this.traverseContentResource(o);\n }\n return o.profile ? this.traverseService(o) : o;\n }\n traverseImageResource(o) {\n const d = Array.isArray(o), g = Array.isArray(o) ? o : [o], I = [];\n for (const R of g)\n typeof R == \"string\" ? I.push(this.traverseContentResource({ \"@id\": R, \"@type\": \"dctypes:Image\" })) : I.push(this.traverseContentResource(R));\n return d || this.options.convertPropsToArray ? I : I[0];\n }\n traverseDescriptive(o) {\n return o.thumbnail && (o.thumbnail = this.traverseImageResource(o.thumbnail)), o.logo && (o.logo = this.traverseImageResource(o.logo)), o;\n }\n traverseOneOrMoreServices(o) {\n const d = Array.isArray(o), g = Array.isArray(o) ? o : [o], I = [];\n for (const R of g)\n I.push(this.traverseService(R));\n return d || this.options.convertPropsToArray ? I : I[0];\n }\n traverseLinking(o) {\n return o.related && (o.related = this.traverseOneOrManyType(o.related, this.traversals.contentResource)), o.rendering && (o.rendering = this.traverseOneOrManyType(o.rendering, this.traversals.contentResource)), o.service && (o.service = this.traverseOneOrMoreServices(o.service)), o.seeAlso && (o.seeAlso = this.traverseOneOrManyType(o.seeAlso, this.traversals.contentResource)), o.within && (typeof o.within == \"string\" || (o.within = this.traverseOneOrManyType(o.within, this.traversals.contentResource))), o.startCanvas && (typeof o.startCanvas == \"string\" ? o.startCanvas = this.traverseType({ \"@id\": o.startCanvas, \"@type\": \"sc:Canvas\" }, this.traversals.canvas) : o.startCanvas && this.traverseType(o.startCanvas, this.traversals.canvas)), o.contentLayer && (typeof o.contentLayer == \"string\" ? o.contentLayer = this.traverseLayer({ \"@id\": o.contentLayer, \"@type\": \"sc:Layer\" }) : o.contentLayer = this.traverseLayer(o.contentLayer)), o;\n }\n traverseOneOrManyType(o, d) {\n if (!Array.isArray(o)) {\n if (!this.options.convertPropsToArray)\n return this.traverseType(o, d);\n o = [o];\n }\n return o.map((g) => this.traverseType(g, d));\n }\n traverseType(o, d) {\n return d.reduce((g, I) => {\n const R = I(g);\n return R !== void 0 || this.options.allowUndefinedReturn ? R : g;\n }, o);\n }\n }\n function N(l) {\n for (const o in l)\n l[o] !== void 0 && l[o] !== null || delete l[o];\n return l;\n }\n const Qe = \"Attribution\", He = \"http://example.org/provider\", De = \"Unknown\";\n function Q(l, o = \"none\") {\n if (!l)\n return {};\n const d = Array.isArray(l) ? l : [l], g = {};\n for (const I of d) {\n if (typeof I == \"string\") {\n g[o] = g[o] ? g[o] : [], g[o].push(I || \"\");\n continue;\n }\n if (!I[\"@language\"]) {\n g[o] = g[o] ? g[o] : [], g[o].push(I[\"@value\"] || \"\");\n continue;\n }\n const R = I[\"@language\"];\n g[R] = g[R] ? g[R] : [], g[R].push(I[\"@value\"] || \"\");\n }\n return g;\n }\n function Ne(l) {\n return Array.isArray(l) ? Ne(l.find((o) => typeof o == \"string\")) : W.indexOf(l) !== -1 ? \"level2\" : oe.indexOf(l) !== -1 ? \"level1\" : typeof l == \"string\" ? l : void 0;\n }\n function Oe(l) {\n for (const o of [\"sc\", \"oa\", \"dcterms\", \"dctypes\", \"iiif\"])\n if (l.startsWith(`${o}:`))\n return l.slice(o.length + 1);\n return l;\n }\n const Ye = [\"Collection\", \"Manifest\", \"Annotation\", \"AnnotationPage\", \"Range\", \"Service\"];\n function _e(l) {\n const o = l[\"@id\"] || l.id;\n let d = l[\"@type\"] || l.type;\n const g = l.profile || void 0, I = l[\"@context\"] || void 0;\n if (g) {\n const R = function(F) {\n switch (F) {\n case \"http://iiif.io/api/image/2/level0.json\":\n case \"http://iiif.io/api/image/2/level1.json\":\n case \"http://iiif.io/api/image/2/level2.json\":\n return \"ImageService2\";\n case \"http://iiif.io/api/auth/1/kiosk\":\n case \"http://iiif.io/api/auth/1/login\":\n case \"http://iiif.io/api/auth/1/clickthrough\":\n case \"http://iiif.io/api/auth/1/external\":\n case \"http://iiif.io/api/auth/0/kiosk\":\n case \"http://iiif.io/api/auth/0/login\":\n case \"http://iiif.io/api/auth/0/clickthrough\":\n case \"http://iiif.io/api/auth/0/external\":\n return \"AuthCookieService1\";\n case \"http://iiif.io/api/auth/1/token\":\n case \"http://iiif.io/api/auth/0/token\":\n return \"AuthTokenService1\";\n case \"http://iiif.io/api/auth/1/logout\":\n case \"http://iiif.io/api/auth/0/logout\":\n return \"AuthLogoutService1\";\n case \"http://iiif.io/api/search/1/search\":\n case \"http://iiif.io/api/search/0/search\":\n return \"SearchService1\";\n case \"http://iiif.io/api/search/1/autocomplete\":\n case \"http://iiif.io/api/search/0/autocomplete\":\n return \"AutoCompleteService1\";\n }\n }(g);\n if (R)\n return R;\n }\n if (I) {\n const R = function(F) {\n const $e = Array.isArray(F) ? F : [F];\n for (const qe of $e)\n switch (qe) {\n case \"http://iiif.io/api/image/2/context.json\":\n case \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\":\n return \"ImageService2\";\n case \"http://iiif.io/api/image/1/context.json\":\n case \"http://library.stanford.edu/iiif/image-api/1.1/context.json\":\n return \"ImageService1\";\n case \"http://iiif.io/api/annex/openannotation/context.json\":\n return \"ImageApiSelector\";\n }\n }(I);\n if (R)\n return R;\n }\n if (d) {\n if (Array.isArray(d)) {\n if (d.indexOf(\"oa:CssStylesheet\") !== -1)\n return \"CssStylesheet\";\n if (d.indexOf(\"cnt:ContentAsText\") !== -1)\n return \"TextualBody\";\n d = d[0];\n }\n for (const R of [\"sc\", \"oa\", \"dcterms\", \"dctypes\", \"iiif\"])\n if (d.startsWith(`${R}:`)) {\n d = d.slice(R.length + 1);\n break;\n }\n switch (d) {\n case \"Layer\":\n return \"AnnotationCollection\";\n case \"AnnotationList\":\n return \"AnnotationPage\";\n case \"cnt:ContentAsText\":\n return \"TextualBody\";\n }\n }\n if (d && Ye.indexOf(d) !== -1)\n return d;\n if (l.format) {\n if (l.format.startsWith(\"image/\"))\n return \"Image\";\n if (l.format.startsWith(\"text/\") || l.format === \"application/pdf\")\n return \"Text\";\n if (l.format.startsWith(\"application/\"))\n return \"Dataset\";\n }\n return o && (o.endsWith(\".jpg\") || o.endsWith(\".png\") || o.endsWith(\".jpeg\")) ? \"Image\" : d || \"unknown\";\n }\n const Mr = /http(s)?:\\/\\/(creativecommons.org|rightsstatements.org)[^\"'\\\\<\\n]+/gm;\n function kr(l) {\n const o = l.match(Mr);\n return o ? o[0] : l;\n }\n const Fr = [\"http://iiif.io/api/presentation/2/context.json\", \"http://iiif.io/api/image/2/context.json\", \"http://iiif.io/api/image/1/context.json\", \"http://library.stanford.edu/iiif/image-api/1.1/context.json\", \"http://iiif.io/api/search/1/context.json\", \"http://iiif.io/api/search/0/context.json\", \"http://iiif.io/api/auth/1/context.json\", \"http://iiif.io/api/auth/0/context.json\", \"http://iiif.io/api/annex/openannotation/context.json\"];\n function Lr(l) {\n if (l) {\n const o = Array.isArray(l) ? l : [l], d = [];\n for (const g of o)\n g === \"http://iiif.io/api/presentation/2/context.json\" && d.push(\"http://iiif.io/api/presentation/3/context.json\"), Fr.indexOf(g) === -1 && d.push(g);\n if (o.length)\n return d.length === 1 ? d[0] : d;\n }\n }\n let Mt = 0;\n function kt(l, o) {\n const d = encodeURI(l.id || l[\"@id\"] || \"\").trim();\n return d && o ? `${d}/${o}` : d || (Mt++, `http://example.org/${l[\"@type\"]}${o ? `/${o}` : \"\"}/${Mt}`);\n }\n function H(l) {\n const o = [...l.behavior || []];\n let d;\n return l.viewingHint && o.push(l.viewingHint), Array.isArray(l.motivation) ? d = l.motivation.map(Oe) : l.motivation && (d = Oe(l.motivation)), { \"@context\": l[\"@context\"] ? Lr(l[\"@context\"]) : void 0, id: (l[\"@id\"] || kt(l)).trim(), type: _e(l), behavior: o.length ? o : void 0, height: l.height ? l.height : void 0, width: l.width ? l.width : void 0, motivation: d, viewingDirection: l.viewingDirection, profile: l.profile, format: l.format ? l.format : void 0, duration: void 0, timeMode: void 0 };\n }\n function Y(l) {\n const [o, d] = function(R, F = \"Rights/License\", $e = \"none\") {\n let qe = null;\n const Ft = [], $r = Array.isArray(R) ? R : [R];\n for (const Lt of $r) {\n const ee = Lt ? kr(Lt) : void 0;\n !ee || ee.indexOf(\"creativecommons.org\") === -1 && ee.indexOf(\"rightsstatements.org\") === -1 ? ee && Ft.push({ label: { [$e]: [F] }, value: { [$e]: [ee] } }) : qe = ee.startsWith(\"https://\") ? `http://${ee.slice(8)}` : ee;\n }\n return [qe, Ft];\n }(l.license), g = [...l.metadata ? (I = l.metadata, I ? I.map((R) => ({ label: Q(R.label), value: Q(R.value) })) : []) : [], ...d];\n var I;\n return { rights: o, metadata: g.length ? g : void 0, label: l.label ? Q(l.label) : void 0, requiredStatement: l.attribution ? { label: Q(Qe), value: Q(l.attribution) } : void 0, navDate: l.navDate, summary: l.description ? Q(l.description) : void 0, thumbnail: Pr(l.thumbnail) };\n }\n function Pr(l) {\n return l && (Array.isArray(l) ? l : [l]).map((o) => typeof o == \"string\" ? { id: o, type: \"Image\" } : (o.type === \"unknown\" && (o.type = \"Image\"), o));\n }\n function jr(l) {\n if (!l.within)\n return;\n const o = Array.isArray(l.within) ? l.within : [l.within], d = [];\n for (const g of o)\n typeof g == \"string\" ? g && l[\"@type\"] === \"sc:Manifest\" && d.push({ id: g, type: \"Collection\" }) : g[\"@id\"] && d.push({ id: g[\"@id\"], type: _e(g) });\n return d.length ? d : void 0;\n }\n function Z(l) {\n const o = l.related ? Array.isArray(l.related) ? l.related : [l.related] : [], d = l.contentLayer;\n return { provider: l.logo || o.length ? [{ id: He, type: \"Agent\", homepage: o.length ? [o[0]] : void 0, logo: l.logo ? Array.isArray(l.logo) ? l.logo : [l.logo] : void 0, label: Q(De) }] : void 0, partOf: jr(l), rendering: l.rendering, seeAlso: l.seeAlso, start: l.startCanvas, service: l.service ? (g = l.service, Array.isArray(g) ? g : g ? [g] : []) : void 0, supplementary: d ? [d] : void 0 };\n var g;\n }\n function Je(l) {\n const o = l;\n return N({ ...H(o), ...Y(o), ...Z(o), ...(d = o, { chars: d.chars, format: d.format ? d.format : void 0, language: d.language }) });\n var d;\n }\n const Dr = new ce({ collection: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l), items: l.members });\n }], manifest: [function(l) {\n const o = [], d = [];\n let g;\n for (const R of l.sequences || [])\n R.canvases.length && o.push(...R.canvases), R.behavior && d.push(...R.behavior), R.startCanvas && (g = R.startCanvas);\n const I = H(l);\n return d.length && (I.behavior ? I.behavior.push(...d) : I.behavior = d), N({ ...I, ...Y(l), ...Z(l), start: g, items: o, structures: l.structures });\n }], canvas: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l), annotations: l.otherContent && l.otherContent.length ? l.otherContent : void 0, items: l.images && l.images.length ? [{ id: kt(l, \"annotation-page\"), type: \"AnnotationPage\", items: l.images }] : void 0 });\n }], annotationList: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l), items: l.resources && l.resources.length ? l.resources : void 0 });\n }], sequence: [function(l) {\n return l.canvases && l.canvases.length !== 0 ? { canvases: l.canvases, behavior: l.viewingHint ? [l.viewingHint] : [], startCanvas: l.startCanvas } : { canvases: [], behavior: [] };\n }], annotation: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l), target: function o(d) {\n if (Array.isArray(d)) {\n if (d.length > 1)\n return { type: \"List\", items: d.map(o) };\n d = d[0];\n }\n if (typeof d == \"string\")\n return encodeURI(d).trim();\n if (\"@type\" in d) {\n let g;\n if (typeof d.full == \"string\")\n g = d.full;\n else if (d.full[\"@type\"] === \"dctypes:Image\")\n g = { id: d.full[\"@id\"], type: \"Image\" };\n else {\n if (d.full[\"@type\"] !== \"sc:Canvas\")\n throw new Error(`Unsupported source type on annotation: ${d.full[\"@type\"]}`);\n g = { id: d.full[\"@id\"], type: \"Canvas\" };\n }\n return { type: \"SpecificResource\", source: g, selector: Xe(d.selector) };\n }\n return encodeURI(d[\"@id\"]).trim();\n }(l.on), body: Array.isArray(l.resource) ? l.resource.map(Je) : Je(l.resource) });\n }], contentResource: [Je], choice: [function(l) {\n const o = [];\n return l.default && l.default !== \"rdf:nil\" && o.push(l.default), l.item && l.item !== \"rdf:nil\" && o.push(...l.item), { ...H(l), ...Y(l), items: o };\n }], range: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l), items: l.members });\n }], service: [function(l) {\n const { \"@id\": o, \"@type\": d, \"@context\": g, profile: I, ...R } = l, F = {};\n return o && (F[\"@id\"] = o), F[\"@type\"] = _e(l), F[\"@type\"] === \"unknown\" && (g && g.length && (F[\"@context\"] = g), F[\"@type\"] = \"Service\"), I && (F.profile = Ne(I)), N({ ...F, ...R });\n }], layer: [function(l) {\n return N({ ...H(l), ...Y(l), ...Z(l) });\n }] });\n function Xe(l) {\n if ((Array.isArray(l[\"@type\"]) && l[\"@type\"].includes(\"oa:SvgSelector\") || l[\"@type\"] == \"oa:SvgSelector\") && (\"chars\" in l || \"value\" in l))\n return { type: \"SvgSelector\", value: \"chars\" in l ? l.chars : l.value };\n if (l[\"@type\"] === \"oa:FragmentSelector\")\n return { type: \"FragmentSelector\", value: l.value };\n if (l[\"@type\"] === \"oa:Choice\")\n return [Xe(l.default), ...(Array.isArray(l.item) ? l.item : [l.item]).map(Xe)];\n if (l[\"@type\"] == \"iiif:ImageApiSelector\")\n return { type: \"ImageApiSelector\", region: \"region\" in l ? l.region : void 0, rotation: \"rotation\" in l ? l.rotation : void 0 };\n throw new Error(`Unsupported selector type: ${l[\"@type\"]}`);\n }\n const Nr = function(l) {\n return l && l[\"@context\"] && (l[\"@context\"] === \"http://iiif.io/api/presentation/2/context.json\" || l[\"@context\"].indexOf(\"http://iiif.io/api/presentation/2/context.json\") !== -1 || l[\"@context\"] === \"http://www.shared-canvas.org/ns/context.json\") || l[\"@context\"] === \"http://iiif.io/api/image/2/context.json\" ? Dr.traverseUnknown(l) : l;\n };\n s.upgrade = Nr, Object.defineProperties(s, { __esModule: { value: !0 }, [Symbol.toStringTag]: { value: \"Module\" } });\n });\n})(xt, xt.exports);\nvar Eo = xt.exports;\nfunction $o(t, e) {\n return fetch(t, e).then((i) => i.json()).then(Eo.upgrade);\n}\nexport {\n Ro as Vault,\n Oi as buildLocaleString,\n _o as createEventsHelper,\n Po as createPaintingAnnotationsHelper,\n jo as createRangeHelper,\n Do as createSequenceHelper,\n To as createStylesHelper,\n qn as createThumbnailHelper,\n vs as decodeContentState,\n ds as encodeContentState,\n Ae as expandTarget,\n $o as fetch,\n Ct as findAllCanvasesInRange,\n ki as findFirstCanvasFromRange,\n gs as findManifestSelectedRange,\n Rt as findSelectedRange,\n Un as getClosestLanguage,\n Fi as getManifestSequence,\n Mo as getThumbnail,\n ko as getValue,\n As as getVisibleCanvasesFromCanvasId,\n No as globalVault,\n $n as imageServiceLoader,\n us as isImageApiSelector,\n Lo as normaliseContentState,\n hs as parseContentState,\n ps as parseRotation,\n Be as parseSelector,\n ms as parseSpecificResource,\n Fo as serialiseContentState,\n Bt as validateContentState\n};\n//# sourceMappingURL=index.mjs.map\n","import { ContentResource, PointSelector, W3CAnnotationTarget } from '@iiif/presentation-3';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { UseRenderingStrategy } from '../../hooks/useRenderingStrategy';\nimport { BoxSelector, expandTarget, SupportedTarget, TemporalBoxSelector } from '@iiif/helpers';\n\n/**\n * Parse specific resource.\n *\n * This could be expanded to support pulling out more from the specific resource.\n *\n * @param resource\n */\nexport function parseSpecificResource(resource: ContentResource) {\n if (resource.type === 'SpecificResource') {\n return [resource.source, { selector: resource.selector }];\n }\n\n return [resource, { selector: null }];\n}\n\nexport function getParsedTargetSelector(\n canvas: CanvasNormalized,\n target: W3CAnnotationTarget | W3CAnnotationTarget[]\n): [TemporalBoxSelector | BoxSelector | PointSelector | null, SupportedTarget['source']] {\n const { selector: imageTarget, source } = expandTarget(target);\n\n if (source.id !== canvas.id) {\n // Skip invalid targets.\n return [null, source];\n }\n\n // Target is where it should be painted.\n const defaultTarget: BoxSelector = {\n type: 'BoxSelector',\n spatial: {\n x: 0,\n y: 0,\n width: Number(canvas.width),\n height: Number(canvas.height),\n },\n };\n\n return [\n imageTarget\n ? imageTarget.type === 'TemporalSelector'\n ? ({\n type: 'TemporalBoxSelector',\n temporal: imageTarget.temporal,\n spatial: defaultTarget.spatial,\n } as any)\n : imageTarget\n : null,\n source,\n ];\n}\n\nexport const emptyActions = {\n makeChoice: () => {\n // no-op\n },\n};\n\nexport const unknownResponse: UseRenderingStrategy[0] = { type: 'unknown' };\n\nexport const unsupportedStrategy = (reason: string): UseRenderingStrategy[0] => {\n return { type: 'unknown', reason, annotations: { pages: [] } };\n};\n\nexport const emptyStrategy = (width: number, height: number): UseRenderingStrategy[0] => {\n return { type: 'empty', width, height, annotations: { pages: [] }, image: null, images: [] };\n};\n","import { useVaultSelector } from './useVaultSelector';\nimport { IIIFStore } from '@iiif/helpers/vault';\n\nfunction getMeta(state: IIIFStore, resourceId: string) {\n const resourceMeta = state?.iiif?.meta[resourceId];\n if (!resourceMeta) {\n return null;\n }\n return resourceMeta.annotationPageManager as any;\n}\n\nexport function useEnabledAnnotationPageIds(resourceId?: string, availablePageIds?: string[]) {\n return useVaultSelector(\n (state) => {\n const pageIds: string[] = [];\n if (!resourceId) {\n return pageIds;\n }\n const allAnnotationListIds = Object.keys(state.iiif.entities.AnnotationPage);\n for (const annotationListId of allAnnotationListIds) {\n if (!availablePageIds || availablePageIds.indexOf(annotationListId) !== -1) {\n const annotationListMeta = getMeta(state, annotationListId);\n if (annotationListMeta && annotationListMeta.views && annotationListMeta.views[resourceId]) {\n pageIds.push(annotationListId);\n }\n }\n }\n\n return pageIds;\n },\n [resourceId, availablePageIds]\n );\n}\n","import { CanvasNormalized, ManifestNormalized } from '@iiif/presentation-3-normalized';\n\nexport function flattenAnnotationPageIds({\n canvas,\n manifest,\n all,\n canvases,\n}: {\n manifest?: ManifestNormalized;\n canvas?: CanvasNormalized;\n canvases?: CanvasNormalized[];\n all?: boolean;\n}) {\n const foundIds: string[] = [];\n\n if (manifest) {\n for (const page of manifest.annotations) {\n if (foundIds.indexOf(page.id) === -1) {\n foundIds.push(page.id);\n }\n }\n }\n\n if (all) {\n if (canvases && canvases.length) {\n for (const canvas_ of canvases) {\n for (const page of canvas_.annotations) {\n if (foundIds.indexOf(page.id) === -1) {\n foundIds.push(page.id);\n }\n }\n }\n }\n } else if (canvas) {\n for (const page of canvas.annotations) {\n if (foundIds.indexOf(page.id) === -1) {\n foundIds.push(page.id);\n }\n }\n }\n\n // Remove enabled page IDs for now.\n // for (const enabledPage of enabledPageIds) {\n // if (foundIds.indexOf(enabledPage) === -1) {\n // foundIds.push(enabledPage);\n // }\n // }\n\n return foundIds;\n}\n","import { useCallback, useMemo } from 'react';\nimport { useVault } from './useVault';\nimport { useManifest } from './useManifest';\nimport { useCanvas } from './useCanvas';\nimport { useVisibleCanvases } from '../context/VisibleCanvasContext';\nimport { useEnabledAnnotationPageIds } from './useEnabledAnnotationPageIds';\nimport { flattenAnnotationPageIds } from '../utility/flatten-annotation-page-ids';\nimport { IIIFStore } from '@iiif/helpers/vault';\n\ntype AnnotationPageResourceMap = {\n [id: string]: boolean;\n};\n\ntype AnnotationPageManager = {\n views: AnnotationPageResourceMap;\n};\n\nfunction getMeta(state: IIIFStore, resourceId: string) {\n const resourceMeta = state?.iiif?.meta[resourceId];\n if (!resourceMeta) {\n return null;\n }\n return resourceMeta.annotationPageManager as AnnotationPageManager;\n}\n\nexport function useAnnotationPageManager(resourceId?: string, options: { all?: boolean } = {}) {\n const vault = useVault();\n const manifest = useManifest();\n const canvas = useCanvas();\n const canvases = useVisibleCanvases();\n const availablePageIds = useMemo(() => {\n return flattenAnnotationPageIds({\n all: options.all,\n manifest,\n canvas,\n canvases,\n });\n }, [options.all, canvas, canvases, manifest]);\n const enabledPageIds = useEnabledAnnotationPageIds(resourceId, options.all ? undefined : availablePageIds);\n\n const setPageDisabled = useCallback(\n (deselectId: string) => {\n if (!resourceId) {\n return;\n }\n vault.setMetaValue<AnnotationPageResourceMap>(\n [deselectId, 'annotationPageManager', 'views'],\n (existingResources: AnnotationPageResourceMap | undefined) => {\n if (existingResources && !existingResources[resourceId]) {\n return existingResources;\n }\n\n return {\n ...(existingResources || {}),\n [resourceId]: false,\n };\n }\n );\n },\n [resourceId, vault]\n );\n\n const setPageEnabled = useCallback(\n (id: string, opt: { deselectOthers?: boolean } = {}) => {\n if (!resourceId) {\n return;\n }\n const state = vault.getState();\n const toDeselect = [];\n\n // Deselect these.\n if (opt?.deselectOthers) {\n const allAnnotationListIds = Object.keys(state.iiif.entities.AnnotationPage);\n for (const annotationPageId of allAnnotationListIds) {\n const annotationListMeta = getMeta(state, annotationPageId);\n if (annotationListMeta && annotationListMeta.views && annotationListMeta.views[resourceId]) {\n toDeselect.push(annotationPageId);\n }\n }\n }\n\n // Disable first.\n for (const deselectId of toDeselect) {\n setPageDisabled(deselectId);\n }\n\n // Then enable.\n vault.setMetaValue<AnnotationPageResourceMap>(\n [id, 'annotationPageManager', 'views'],\n (existingResources: AnnotationPageResourceMap | undefined) => {\n if (existingResources && existingResources[resourceId]) {\n return existingResources;\n }\n return {\n ...(existingResources || {}),\n [resourceId]: true,\n };\n }\n );\n },\n [resourceId, setPageDisabled, vault]\n );\n\n return {\n availablePageIds,\n enabledPageIds,\n setPageEnabled,\n setPageDisabled,\n };\n}\n","import { useVaultSelector } from './useVaultSelector';\n\nexport function useResources<Type>(ids: string[], type: string): Type[] {\n return useVaultSelector((state, vault) => vault.get(ids.map((id) => ({ id, type }))) as any, [ids, type]);\n}\n","import React, { useContext } from 'react';\nimport { ImageServiceLoader } from '@atlas-viewer/iiif-image-api';\n\nexport const ImageServiceLoaderContext = React.createContext<ImageServiceLoader>(new ImageServiceLoader());\n\nexport function useImageServiceLoader() {\n return useContext(ImageServiceLoaderContext);\n}\n","import { ImageService } from '@iiif/presentation-3';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useImageServiceLoader } from '../context/ImageServiceLoaderContext';\n\nexport type ImageServiceLoaderType = (\n imageService: any | undefined,\n { height, width }: { height: number; width: number }\n) => ImageService | undefined;\n\nexport function useLoadImageService() {\n const loader = useImageServiceLoader();\n const [imageServiceStatus, setImageServiceStatus] = useState<Record<string, string>>({});\n const didUnmount = useRef(false);\n useEffect(() => {\n return () => {\n didUnmount.current = true;\n };\n }, []);\n const loadImageService = useCallback<ImageServiceLoaderType>(\n (imageService, { height, width }) => {\n if (imageService) {\n const imageServiceId = imageService.id || (imageService['@id'] as string);\n // We want to kick this off.\n const syncLoaded = loader.loadServiceSync({\n id: imageServiceId,\n width: imageService.width || width,\n height: imageService.height || height,\n source: imageService,\n });\n\n if (syncLoaded) {\n imageService = syncLoaded;\n } else if (!imageServiceStatus[imageServiceId]) {\n if (!didUnmount.current) {\n setImageServiceStatus((r) => {\n return {\n ...r,\n [imageServiceId]: 'loading',\n };\n });\n }\n loader\n .loadService({\n id: imageServiceId,\n width: imageService.width || width,\n height: imageService.height || height,\n })\n .then(() => {\n if (!didUnmount.current) {\n setImageServiceStatus((r) => {\n return {\n ...r,\n [imageServiceId]: 'done',\n };\n });\n }\n });\n }\n }\n return imageService;\n },\n [loader, imageServiceStatus]\n );\n\n return [loadImageService, imageServiceStatus] as const;\n}\n","// This is valid under a canvas context.\nimport { AnnotationNormalized, AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useCanvas } from './useCanvas';\nimport { useVaultSelector } from './useVaultSelector';\nimport { useAnnotation } from './useAnnotation';\n\nexport function usePaintingAnnotations(\n options: { canvasId?: string; enableSingleAnnotation?: boolean } = {}\n): AnnotationNormalized[] {\n const annotation = useAnnotation();\n const canvas = useCanvas(options.canvasId ? { id: options.canvasId } : undefined);\n\n return useVaultSelector(\n (state, vault) => {\n if (!canvas) {\n return [];\n }\n if (annotation && options.enableSingleAnnotation) {\n return [annotation];\n }\n const annotationPages = vault.get(canvas.items);\n const flatAnnotations: AnnotationNormalized[] = [];\n for (const page of annotationPages) {\n flatAnnotations.push(...vault.get(page.items));\n }\n return flatAnnotations;\n },\n [canvas]\n );\n}\n","function x(t) {\n return t.type === \"SpecificResource\" ? [t.source, { selector: t.selector }] : [t, { selector: null }];\n}\nconst d = {}, b = {\n get(t) {\n return t;\n },\n setMetaValue([t, o, r], i) {\n const e = b.getResourceMeta(t, o), n = e ? e[r] : void 0, a = typeof i == \"function\" ? i(n) : i;\n d[t] = {\n ...d[t] || {},\n [o]: {\n ...(d[t] || {})[o] || {},\n [r]: a\n }\n };\n },\n getResourceMeta: (t, o) => {\n const r = d[t];\n if (r)\n return o ? r[o] : r;\n }\n};\nfunction M(t = b) {\n function o(e) {\n const n = e ? typeof e == \"string\" ? t.get(e) : e : null;\n if (!n)\n return [];\n const a = t.get(n.items, { parent: n }), c = [];\n for (const f of a)\n c.push(...t.get(f.items, { parent: f }));\n return c;\n }\n function r(e, n = []) {\n const a = Array.isArray(e) ? e : o(e), c = [];\n let f = null;\n const h = [];\n for (const s of a) {\n if (s.type !== \"Annotation\")\n throw new Error(\"getPaintables() accept either a canvas or list of annotations\");\n const A = Array.from(Array.isArray(s.body) ? s.body : [s.body]);\n for (const w of A) {\n const [m, { selector: P }] = x(w), u = t.get(m), p = (u.type || \"unknown\").toLowerCase();\n if (p === \"choice\") {\n const g = t.get(u.items, { parent: u.id }), y = n.length ? n.map((l) => g.find((V) => V.id === l)).filter(Boolean) : [g[0]];\n y.length === 0 && y.push(g[0]), f = {\n type: \"single-choice\",\n items: g.map((l) => ({\n id: l.id,\n label: l.label,\n selected: y.indexOf(l) !== -1\n })),\n label: m.label\n }, A.push(...y);\n continue;\n }\n c.indexOf(p) === -1 && c.push(p), h.push({\n type: p,\n annotationId: s.id,\n resource: u,\n target: s.target,\n selector: P\n });\n }\n }\n return {\n types: c,\n items: h,\n choice: f\n };\n }\n function i(e) {\n const { choice: n } = r(e);\n return n;\n }\n return {\n getAllPaintingAnnotations: o,\n getPaintables: r,\n extractChoices: i\n };\n}\nexport {\n M as createPaintingAnnotationsHelper,\n x as parseSpecificResource\n};\n//# sourceMappingURL=painting-annotations.mjs.map\n","import { useCallback, useMemo, useState } from 'react';\nimport { useVault } from './useVault';\nimport { usePaintingAnnotations } from './usePaintingAnnotations';\nimport { createPaintingAnnotationsHelper } from '@iiif/helpers/painting-annotations';\n\nexport function usePaintables(\n options?: { defaultChoices?: string[]; enableSingleAnnotation?: boolean },\n deps: any[] = []\n) {\n const vault = useVault();\n const helper = useMemo(() => {\n return createPaintingAnnotationsHelper(vault);\n }, []);\n const paintingAnnotations = usePaintingAnnotations({ enableSingleAnnotation: options?.enableSingleAnnotation });\n const [enabledChoices, setEnabledChoices] = useState<string[]>(options?.defaultChoices || []);\n\n const paintables = useMemo(\n () => helper.getPaintables(paintingAnnotations, enabledChoices),\n [vault, paintingAnnotations, enabledChoices, ...deps]\n );\n\n const makeChoice = useCallback(\n (\n id: string,\n { deselectOthers = true, deselect = false }: { deselectOthers?: boolean; deselect?: boolean } = {}\n ) => {\n if (paintables.choice) {\n // Don't support multiple choice yet.\n if (paintables.choice.type !== 'single-choice') {\n throw new Error('Complex choice not supported yet');\n }\n\n setEnabledChoices((prevChoices) => {\n if (deselect) {\n const without = prevChoices.filter((e) => e !== id);\n\n if (without.length === 0) {\n const defaultId = paintables.items[0].resource.id;\n if (defaultId) {\n return [defaultId];\n } else {\n return [];\n }\n }\n\n return without;\n }\n\n if (deselectOthers) {\n return [id];\n }\n\n const newChoices = [...prevChoices];\n\n // Add the default ID.\n if (newChoices.length === 0 && paintables.items.length) {\n const defaultId = paintables.items[0].resource.id;\n if (defaultId) {\n newChoices.push(defaultId);\n }\n }\n\n if (prevChoices.indexOf(id) !== -1) {\n return prevChoices;\n }\n\n return [...prevChoices, id];\n });\n }\n },\n [paintables.choice]\n );\n\n const actions = { makeChoice };\n\n return [paintables, actions] as const;\n}\n","import { IIIFExternalWebResource } from '@iiif/presentation-3';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { ImageServiceLoaderType } from '../../hooks/useLoadImageService';\nimport { AnnotationPageDescription, ImageWithOptionalService } from './resource-types';\nimport { getImageServices } from '@atlas-viewer/iiif-image-api';\nimport { getParsedTargetSelector, unsupportedStrategy } from './rendering-utils';\nimport { expandTarget } from '@iiif/helpers/annotation-targets';\nimport { BoxSelector, ChoiceDescription, Paintables } from '@iiif/helpers';\n\nexport type SingleImageStrategy = {\n type: 'images';\n image: ImageWithOptionalService;\n images: Array<ImageWithOptionalService>;\n choice?: ChoiceDescription;\n annotations?: AnnotationPageDescription;\n};\n\nexport function getImageStrategy(\n canvas: CanvasNormalized,\n paintables: Paintables,\n loadImageService: ImageServiceLoaderType\n) {\n const imageTypes: ImageWithOptionalService[] = [];\n for (const singleImage of paintables.items) {\n // SingleImageStrategy\n const resource: IIIFExternalWebResource =\n singleImage.resource && singleImage.resource.type === 'SpecificResource'\n ? singleImage.resource.source\n : singleImage.resource;\n\n // Validation.\n if (!resource.id) {\n // @todo we could skip this?\n return unsupportedStrategy('No resource Identifier');\n }\n\n let imageService = undefined;\n if (resource.service) {\n const imageServices = getImageServices(resource as any) as any[];\n if (imageServices[0]) {\n imageService = loadImageService(imageServices[0], canvas);\n }\n }\n\n // Target is where it should be painted.\n const defaultTarget: BoxSelector = {\n type: 'BoxSelector',\n spatial: {\n x: 0,\n y: 0,\n width: Number(canvas.width),\n height: Number(canvas.height),\n },\n };\n\n const [target, source] = getParsedTargetSelector(canvas, singleImage.target);\n if (source.id !== canvas.id) {\n // Skip invalid targets.\n continue;\n }\n\n // Support for cropping before painting an annotation.\n // @todo this isn't working.\n const defaultImageSelector =\n (singleImage.resource as any).width && (singleImage.resource as any).height\n ? ({\n type: 'BoxSelector',\n spatial: {\n x: 0,\n y: 0,\n width: (singleImage.resource as any).width,\n height: (singleImage.resource as any).height,\n },\n } as BoxSelector)\n : undefined;\n\n let imageSelector = singleImage.resource.type === 'SpecificResource' ? expandTarget(singleImage.resource) : null;\n\n if (singleImage.selector) {\n const found = expandTarget({\n type: 'SpecificResource',\n source: singleImage.resource,\n selector: singleImage.selector,\n });\n\n if (found) {\n imageSelector = found;\n }\n }\n\n const selector: undefined | BoxSelector =\n imageSelector &&\n imageSelector.selector &&\n (imageSelector.selector.type === 'BoxSelector' || imageSelector.selector.type === 'TemporalBoxSelector')\n ? {\n type: 'BoxSelector',\n spatial: {\n x: imageSelector.selector.spatial.x,\n y: imageSelector.selector.spatial.y,\n width: imageSelector.selector.spatial.width,\n height: imageSelector.selector.spatial.height,\n },\n }\n : undefined;\n\n if (imageService && !imageService.id) {\n (imageService as any).id = imageService['@id'];\n }\n\n const imageType: ImageWithOptionalService = {\n id: resource.id,\n type: 'Image',\n annotationId: (singleImage as any).annotationId,\n width: Number(target || selector ? resource.width : canvas.width),\n height: Number(target || selector ? resource.height : canvas.height),\n service: imageService,\n sizes:\n imageService && imageService.sizes\n ? imageService.sizes\n : resource.width && resource.height\n ? [{ width: resource.width, height: resource.height }]\n : [],\n target: target && target.type !== 'PointSelector' ? target : defaultTarget,\n selector: selector,\n };\n\n imageTypes.push(imageType);\n }\n\n return {\n type: 'images',\n image: imageTypes[0],\n images: imageTypes,\n choice: paintables.choice,\n } as SingleImageStrategy;\n}\n","import { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { unsupportedStrategy } from './rendering-utils';\nimport { AnnotationPageDescription } from './resource-types';\nimport { ExternalWebResource } from '@iiif/presentation-3';\nimport { RenderingStrategy } from './strategies';\nimport { ChoiceDescription, Paintables } from '@iiif/helpers';\n\nexport type Single3DModelStrategy = {\n type: '3d-model';\n model: ExternalWebResource;\n choice?: ChoiceDescription; // future\n annotations?: AnnotationPageDescription; // future\n};\n\nconst supportedFormats = ['model/gltf-binary'];\n\nexport function get3dStrategy(canvas: CanvasNormalized, paintables: Paintables): RenderingStrategy {\n const first = paintables.items[0];\n const resource = first.resource as ExternalWebResource;\n\n if (!resource.format) {\n return unsupportedStrategy('Unknown format');\n }\n\n if (supportedFormats.indexOf(resource.format) === -1) {\n return unsupportedStrategy(`3D format: ${resource.format} is unsupported`);\n }\n\n return {\n type: '3d-model',\n model: resource as any,\n } as Single3DModelStrategy;\n}\n","import { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { unsupportedStrategy } from './rendering-utils';\nimport { MediaStrategy } from './strategies';\nimport { Paintables } from '@iiif/helpers';\n\nexport function getAudioStrategy(canvas: CanvasNormalized, paintables: Paintables) {\n if (!canvas.duration) {\n return unsupportedStrategy('No duration on canvas');\n }\n\n if (paintables.items.length > 1) {\n return unsupportedStrategy('Only one audio source supported');\n }\n\n const audioResource = paintables.items[0]?.resource as any; // @todo stronger type for what this might be.\n\n if (!audioResource) {\n return unsupportedStrategy('Unknown audio');\n }\n\n if (!audioResource.format) {\n return unsupportedStrategy('Audio does not have format');\n }\n\n return {\n type: 'media',\n media: {\n annotationId: paintables.items[0].annotationId,\n duration: canvas.duration,\n url: audioResource.id,\n type: 'Sound',\n target: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n format: audioResource.format,\n selector: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n },\n annotations: {\n pages: [],\n },\n } as MediaStrategy;\n}\n","import { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { unsupportedStrategy } from './rendering-utils';\nimport { MediaStrategy } from './strategies';\nimport { Paintables } from '@iiif/helpers';\n\n// https://stackoverflow.com/a/27728417\nconst ytRegex = /^.*(?:(?:youtu\\.be\\/|v\\/|vi\\/|u\\/\\w\\/|embed\\/|shorts\\/)|(?:(?:watch)?\\?vi?=|&vi?=))([^#&?]*).*/;\n\nexport function getVideoStrategy(canvas: CanvasNormalized, paintables: Paintables) {\n const videoPaintables = paintables.items.filter((t) => t.type === 'video');\n\n if (!canvas.duration) {\n return unsupportedStrategy('No duration on canvas');\n }\n\n if (videoPaintables.length > 1) {\n return unsupportedStrategy('Only one video source supported');\n }\n\n const audioResource = videoPaintables[0]?.resource as any; // @todo stronger type for what this might be.\n const isYouTube = !!(audioResource.service || []).find((service: any) =>\n (service.profile || '').includes('youtube.com')\n );\n\n if (!audioResource) {\n return unsupportedStrategy('Unknown video');\n }\n\n if (!audioResource.format || audioResource.format === 'text/html') {\n if (!isYouTube) {\n return unsupportedStrategy('Video does not have format');\n }\n }\n\n const media = {\n annotationId: (paintables.items[0] as any).annotationId,\n duration: canvas.duration,\n url: audioResource.id,\n type: 'Video',\n items: [],\n target: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n format: audioResource.format,\n selector: {\n type: 'TemporalSelector',\n temporal: {\n startTime: 0,\n endTime: canvas.duration,\n },\n },\n };\n\n if (isYouTube) {\n media.type = 'VideoYouTube';\n const id = audioResource.id.match(ytRegex);\n if (!id[1]) {\n return unsupportedStrategy('Video is not known youtube video');\n }\n (media as any).youTubeId = id[1];\n }\n\n // @todo support VTT\n\n return {\n type: 'media',\n media,\n annotations: {\n pages: [],\n },\n } as MediaStrategy;\n}\n","import { InternationalString } from '@iiif/presentation-3';\nimport { CanvasNormalized } from '@iiif/presentation-3-normalized';\nimport { AnnotationPageDescription } from './resource-types';\nimport { getParsedTargetSelector } from './rendering-utils';\nimport { RenderingStrategy } from './strategies';\nimport { ChoiceDescription, Paintables, SupportedTarget } from '@iiif/helpers';\n\nexport type TextualContentStrategy = {\n type: 'textual-content';\n items: { annotationId: string; text: InternationalString; target: SupportedTarget | null }[];\n choice?: ChoiceDescription; // future\n annotations?: AnnotationPageDescription; // future\n};\n\nfunction parseType(item: any, languageMap: InternationalString = {}, lang?: string) {\n const language = item.language || lang || 'none';\n switch (item.type) {\n case 'TextualBody': {\n if (typeof item.value !== 'undefined') {\n languageMap[language] = item.value;\n }\n break;\n }\n case 'List':\n case 'Composite':\n case 'Choice': {\n if (item.items) {\n item.items.forEach((inner: any) => parseType(inner, languageMap, language));\n }\n }\n }\n return languageMap;\n}\n\nexport function getTextualContentStrategy(canvas: CanvasNormalized, paintables: Paintables): RenderingStrategy {\n const items: TextualContentStrategy['items'] = [];\n\n paintables.items.forEach((item) => {\n if (item.resource) {\n const [target] = getParsedTargetSelector(canvas, item.target);\n items.push({ annotationId: item.annotationId, text: parseType(item.resource), target: target as any });\n }\n });\n\n return {\n type: 'textual-content',\n items,\n } as TextualContentStrategy;\n}\n","import { AnnotationPageNormalized } from '@iiif/presentation-3-normalized';\nimport { useCanvas } from './useCanvas';\nimport { useMemo } from 'react';\nimport { useVault } from './useVault';\nimport { RenderingStrategy } from '../features/rendering-strategy/strategies';\nimport {\n emptyActions,\n emptyStrategy,\n unknownResponse,\n unsupportedStrategy,\n} from '../features/rendering-strategy/rendering-utils';\nimport { useAnnotationPageManager } from './useAnnotationPageManager';\nimport { useManifest } from './useManifest';\nimport { useResources } from './useResources';\nimport { useLoadImageService } from './useLoadImageService';\nimport { usePaintables } from './usePaintables';\nimport { getImageStrategy } from '../features/rendering-strategy/image-strategy';\nimport { get3dStrategy } from '../features/rendering-strategy/3d-strategy';\nimport { getAudioStrategy } from '../features/rendering-strategy/audio-strategy';\nimport { getVideoStrategy } from '../features/rendering-strategy/video-strategy';\nimport { getTextualContentStrategy } from '../features/rendering-strategy/textual-content-strategy';\n\n// @todo we may not have any actions returned from the rendering strategy.\nexport type StrategyActions = {\n makeChoice: (id: string, options?: { deselectOthers?: boolean; deselect?: boolean }) => void;\n};\n\nexport type UseRenderingStrategy = [RenderingStrategy, StrategyActions];\n\nexport type UseRenderingStrategyOptions = {\n strategies?: Array<RenderingStrategy['type']>;\n annotationPageManagerId?: string;\n enableSingleAnnotation?: boolean;\n defaultChoices?: string[];\n};\n\nexport function useRenderingStrategy(options?: UseRenderingStrategyOptions): UseRenderingStrategy {\n const manifest = useManifest();\n const canvas = useCanvas();\n const vault = useVault();\n const [loadImageService, imageServiceStatus] = useLoadImageService();\n const { enabledPageIds } = useAnnotationPageManager(options?.annotationPageManagerId || manifest?.id || canvas?.id, {\n all: false,\n });\n const enabledPages = useResources<AnnotationPageNormalized>(enabledPageIds, 'AnnotationPage');\n\n const supports: RenderingStrategy['type'][] = options?.strategies || [\n 'empty',\n 'images',\n 'media',\n 'textual-content',\n 'complex-timeline',\n ];\n\n const [paintables, actions] = usePaintables(options, [imageServiceStatus]);\n\n const strategy = useMemo(() => {\n if (!canvas) {\n console.log('No canvas');\n return unknownResponse;\n }\n\n if (paintables.types.length === 0) {\n if (supports.indexOf('empty') !== -1) {\n return emptyStrategy(canvas.width, canvas.height);\n }\n console.log('No paintables');\n return unknownResponse;\n }\n\n if (paintables.types.length !== 1) {\n if (paintables.types.length === 2 && paintables.types.indexOf('text') !== -1) {\n paintables.types = paintables.types.filter((t) => t !== 'text');\n } else {\n if (supports.indexOf('complex-timeline') === -1) {\n return unsupportedStrategy('Complex timeline not supported');\n }\n return unsupportedStrategy('ComplexTimelineStrategy not yet supported');\n }\n }\n\n const mainType = paintables.types[0];\n\n // Image\n if (mainType === 'image') {\n if (supports.indexOf('images') === -1) {\n return unsupportedStrategy('Image not supported');\n }\n\n return getImageStrategy(canvas, paintables, loadImageService);\n }\n\n // 3D\n if (mainType === 'Model' || mainType === 'model') {\n if (supports.indexOf('3d-model') === -1) {\n return unsupportedStrategy('3D not supported');\n }\n\n return get3dStrategy(canvas, paintables);\n }\n\n if (mainType === 'textualbody') {\n if (supports.indexOf('textual-content') === -1) {\n return unsupportedStrategy('Textual content not supported');\n }\n\n return getTextualContentStrategy(canvas, paintables);\n }\n\n if (mainType === 'sound' || mainType === 'audio') {\n if (supports.indexOf('media') === -1) {\n return unsupportedStrategy('Media not supported');\n }\n\n // Media Strategy with audio or audio sequence.\n return getAudioStrategy(canvas, paintables);\n }\n\n if (mainType === 'video') {\n if (supports.indexOf('media') === -1) {\n return unsupportedStrategy('Media not supported');\n }\n\n // Media Strategy with video or video sequence.\n return getVideoStrategy(canvas, paintables);\n }\n\n console.log('No idea');\n // Unknown fallback.\n return unknownResponse;\n }, [canvas, paintables, vault, actions.makeChoice]);\n\n return useMemo(() => {\n if (strategy.type === 'unknown') {\n return [strategy, emptyActions];\n }\n\n return [\n {\n ...strategy,\n annotations: { pages: enabledPages },\n },\n actions,\n ];\n }, [strategy, enabledPages]);\n}\n","import { Vault } from '@iiif/helpers/vault';\nimport { useVault } from './useVault';\nimport { useEffect } from 'react';\n\nexport const useVaultEffect = (callback: (vault: Vault) => void, deps: any[] = []): void => {\n const vault = useVault();\n\n useEffect(() => {\n callback(vault);\n }, [vault, ...deps]);\n};\n","import { ImageServiceLoader as T, getFixedSizeFromImage as w } from \"@atlas-viewer/iiif-image-api\";\nconst m = {}, b = {\n get(i) {\n return i;\n },\n setMetaValue([i, n, o], r) {\n const c = b.getResourceMeta(i, n), s = c ? c[o] : void 0, e = typeof r == \"function\" ? r(s) : r;\n m[i] = {\n ...m[i] || {},\n [n]: {\n ...(m[i] || {})[n] || {},\n [o]: e\n }\n };\n },\n getResourceMeta: (i, n) => {\n const o = m[i];\n if (o)\n return n ? o[n] : o;\n }\n}, R = new T(), p = /* @__PURE__ */ new Map();\nfunction M(i, {\n vault: n = b,\n dereference: o = !1,\n ...r\n} = {}) {\n let c = p.get(n);\n return c || (c = y(n), p.set(n, c)), c.getBestThumbnailAtSize(i, r, o);\n}\nfunction y(i = b, n = {}) {\n const o = n.imageServiceLoader || R;\n async function r(c, s, e = !1, h = [], l) {\n const g = () => o.getThumbnailFromResource(void 0, s, e, h);\n if (!c)\n return await o.getThumbnailFromResource(void 0, s, e, h);\n if (typeof c == \"string\") {\n const t = w(c);\n return t && h.push(t), await o.getThumbnailFromResource(void 0, s, e, h);\n }\n const a = i.get(c, { skipSelfReturn: !1 });\n if (typeof a == \"string\")\n return { best: w(a), fallback: [], log: [] };\n if (!a)\n return await g();\n switch (await (async (t) => {\n if (t && t.thumbnail && t.thumbnail.length) {\n const u = i.get(t.thumbnail[0]), f = await o.getImageCandidates(u, e);\n f && f.length && h.push(...f);\n }\n })(a), a.type) {\n case \"Annotation\": {\n const t = Array.isArray(a.body) ? a.body : [a.body], u = i.get(t[0]);\n return l && !u.width && (u.width = l.width, u.height = l.height), await o.getThumbnailFromResource(u, s, e, h);\n }\n case \"Canvas\": {\n const t = a;\n return r(t.items[0], s, e, h, {\n width: t.width,\n height: t.height\n });\n }\n case \"AnnotationPage\":\n return r(a.items[0], s, e, h, l);\n case \"Choice\": {\n const t = a;\n return !t.items || t.items[0] ? await g() : r(t.items[0], s, e, h, l);\n }\n case \"Collection\": {\n const u = a.items[0];\n return u ? r(u, s, e, h, l) : await g();\n }\n case \"Manifest\": {\n const u = a.items[0];\n return u ? r(u, s, e, h, l) : await g();\n }\n case \"SpecificResource\":\n case \"Image\":\n case \"Dataset\":\n case \"Sound\":\n case \"Text\":\n case \"TextualBody\":\n case \"Video\":\n return l && !a.width && (a.width = l.width, a.height = l.height), o.getThumbnailFromResource(a, s, e, h);\n }\n return await g();\n }\n return {\n getBestThumbnailAtSize: r\n };\n}\nexport {\n y as createThumbnailHelper,\n M as getThumbnail,\n R as imageServiceLoader\n};\n//# sourceMappingURL=thumbnail.mjs.map\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport { useManifest } from './useManifest';\nimport { useCanvas } from './useCanvas';\nimport { useVaultEffect } from './useVaultEffect';\nimport { ImageCandidate, ImageCandidateRequest } from '@atlas-viewer/iiif-image-api';\nimport { useImageServiceLoader } from '../context/ImageServiceLoaderContext';\nimport { createThumbnailHelper } from '@iiif/helpers/thumbnail';\nimport { useVault } from './useVault';\n\nexport function useThumbnail(\n request: ImageCandidateRequest,\n dereference?: boolean,\n { canvasId, manifestId }: { canvasId?: string; manifestId?: string } = {}\n) {\n const vault = useVault();\n const loader = useImageServiceLoader();\n const helper = useMemo(() => createThumbnailHelper(vault, { imageServiceLoader: loader }), [vault, loader]);\n\n const [thumbnail, setThumbnail] = useState<ImageCandidate | undefined>();\n const manifest = useManifest(manifestId ? { id: manifestId } : undefined);\n const canvas = useCanvas(canvasId ? { id: canvasId } : undefined);\n const subject = canvas ? canvas : manifest;\n const didUnmount = useRef(false);\n\n useEffect(() => {\n didUnmount.current = false;\n return () => {\n didUnmount.current = true;\n };\n }, []);\n\n if (!subject) {\n throw new Error('Must be called under a manifest or canvas context.');\n }\n\n useVaultEffect(\n (v) => {\n helper.getBestThumbnailAtSize(subject, request, dereference).then((thumb) => {\n if (thumb.best && !didUnmount.current) {\n setThumbnail(thumb.best);\n }\n });\n },\n [subject]\n );\n\n return thumbnail;\n}\n","import { RefObject, useCallback, useEffect, useReducer, useRef } from 'react';\n\ntype MediaPlayerAction =\n | { type: 'PLAY_PAUSE' }\n | { type: 'TOGGLE_MUTE' }\n | { type: 'MUTE' }\n | { type: 'UNMUTE' }\n | { type: 'SET_VOLUME'; volume: number }\n | { type: 'PLAY' }\n | { type: 'PLAY_REQUESTED' }\n | { type: 'PAUSE' }\n | { type: 'FINISHED' };\n\nexport type MediaPlayerState = {\n isPlaying: boolean;\n isMuted: boolean;\n playRequested: boolean;\n volume: number;\n isFinished: boolean;\n duration: number;\n};\n\nexport type MediaPlayerActions = {\n play(): void;\n pause(): void;\n playPause(): void;\n mute(): void;\n unmute(): void;\n toggleMute(): void;\n setVolume(volume: number): void;\n setDurationPercent(percent: number): void;\n setTime(time: number): void;\n};\n\nfunction getDefaultState(duration: number): MediaPlayerState {\n return { isMuted: false, playRequested: false, isPlaying: false, isFinished: false, volume: 100, duration };\n}\n\nfunction reducer(state: MediaPlayerState, action: MediaPlayerAction) {\n switch (action.type) {\n case 'FINISHED':\n return { ...state, isFinished: true, isPlaying: false, playRequested: false };\n case 'PLAY_PAUSE':\n return { ...state, isFinished: false, isPlaying: !state.isPlaying };\n case 'PLAY_REQUESTED':\n return { ...state, isFinished: false, playRequested: true };\n case 'PAUSE':\n return { ...state, isPlaying: false };\n case 'PLAY':\n return { ...state, isFinished: false, playRequested: false, isPlaying: true };\n case 'MUTE':\n return { ...state, isMuted: true };\n case 'SET_VOLUME':\n return { ...state, volume: action.volume, isMuted: action.volume === 0 };\n case 'TOGGLE_MUTE':\n return { ...state, isMuted: !state.isMuted };\n case 'UNMUTE':\n return { ...state, isMuted: false };\n }\n return state;\n}\n\nexport function formatTime(time: number) {\n const seconds = Math.round(time);\n return `${Math.floor(seconds / 60)}:${`${seconds % 60}`.padStart(2, '0')}`;\n}\n\nexport function useSimpleMediaPlayer(props: { duration: number }): readonly [\n {\n element: RefObject<HTMLAudioElement | HTMLVideoElement>;\n currentTime: RefObject<HTMLDivElement>;\n progress: RefObject<HTMLDivElement>;\n },\n MediaPlayerState,\n MediaPlayerActions\n] {\n const [state, dispatch] = useReducer(reducer, getDefaultState(props.duration));\n\n const media = useRef<HTMLAudioElement | HTMLVideoElement>(null);\n const currentTime = useRef<HTMLDivElement>(null);\n const progress = useRef<HTMLDivElement>(null);\n const _isMuted = useRef(false);\n\n const _updateCurrentTime = useCallback(() => {\n if (currentTime.current && media.current) {\n currentTime.current.innerHTML = formatTime(media.current.currentTime);\n if (progress.current) {\n progress.current.style.width = `${(media.current.currentTime / props.duration) * 100}%`;\n }\n if (_isMuted.current !== media.current.muted) {\n _isMuted.current = media.current.muted;\n dispatch(media.current.muted ? { type: 'MUTE' } : { type: 'UNMUTE' });\n }\n }\n }, [props.duration]);\n\n const play = useCallback(() => {\n if (media.current) {\n dispatch({ type: 'PLAY_REQUESTED' });\n media.current.play().then(() => {\n dispatch({ type: 'PLAY' });\n });\n _updateCurrentTime();\n }\n }, [_updateCurrentTime]);\n\n const playPause = useCallback(() => {\n if (media.current) {\n if (media.current.duration > 0 && media.current.paused) {\n play();\n } else {\n pause();\n }\n }\n }, [_updateCurrentTime]);\n\n const pause = useCallback(() => {\n if (media.current) {\n media.current.pause();\n dispatch({ type: 'PAUSE' });\n _updateCurrentTime();\n }\n }, [_updateCurrentTime]);\n\n const toggleMute = useCallback(() => {\n if (media.current) {\n media.current.muted = !media.current.muted;\n dispatch(media.current.muted ? { type: 'MUTE' } : { type: 'UNMUTE' });\n }\n }, []);\n\n const mute = useCallback(() => {\n if (media.current) {\n media.current.muted = true;\n dispatch({ type: 'MUTE' });\n }\n }, []);\n\n const unmute = useCallback(() => {\n if (media.current) {\n media.current.muted = false;\n dispatch({ type: 'UNMUTE' });\n }\n }, []);\n\n const setVolume = useCallback((newVolume: number) => {\n if (media.current) {\n media.current.muted = false;\n media.current.volume = newVolume / 100;\n dispatch({ type: 'SET_VOLUME', volume: newVolume });\n }\n }, []);\n\n const setDurationPercent = useCallback((percent: number) => {\n if (media.current) {\n media.current.currentTime = Math.max(0, Math.min(percent * props.duration, props.duration));\n _updateCurrentTime();\n }\n }, []);\n\n const setTime = useCallback((time: number) => {\n if (media.current) {\n media.current.currentTime = Math.max(0, Math.min(time, props.duration));\n _updateCurrentTime();\n }\n }, []);\n\n useEffect(() => {\n const interval = setInterval(() => {\n _updateCurrentTime();\n }, 350);\n\n return () => clearInterval(interval);\n }, [_updateCurrentTime, props.duration]);\n\n useEffect(() => {\n const ended = () => {\n dispatch({ type: 'FINISHED' });\n };\n const _media = media.current;\n\n _media?.addEventListener('ended', ended);\n\n return () => _media?.removeEventListener('ended', ended);\n }, []);\n\n return [\n { element: media, currentTime, progress },\n state,\n {\n play,\n pause,\n playPause,\n mute,\n unmute,\n toggleMute,\n setVolume,\n setDurationPercent,\n setTime,\n },\n ];\n}\n","import { createContext, ReactNode, RefObject, useContext } from 'react';\nimport { MediaPlayerActions, MediaPlayerState } from '../hooks/useSimpleMediaPlayer';\n\nconst MediaReactContextState = createContext<MediaPlayerState | null>(null);\nconst MediaReactContextActions = createContext<MediaPlayerActions | null>(null);\nconst MediaReactContextElements = createContext<{\n element: RefObject<HTMLAudioElement | HTMLVideoElement>;\n currentTime: RefObject<HTMLDivElement>;\n progress: RefObject<HTMLDivElement>;\n} | null>(null);\n\nexport function useMediaState() {\n const ctx = useContext(MediaReactContextState);\n if (!ctx) {\n throw new Error('Ctx not found');\n }\n return ctx;\n}\n\nexport function useMediaActions() {\n const ctx = useContext(MediaReactContextActions);\n if (!ctx) {\n throw new Error('Ctx not found');\n }\n return ctx;\n}\n\nexport function useMediaElements() {\n const ctx = useContext(MediaReactContextElements);\n if (!ctx) {\n throw new Error('Ctx not found');\n }\n return ctx;\n}\n\nexport function MediaPlayerProvider({\n actions,\n state,\n children,\n currentTime,\n progress,\n element,\n}: {\n actions: MediaPlayerActions;\n state: MediaPlayerState;\n children: ReactNode;\n currentTime: RefObject<HTMLDivElement>;\n progress: RefObject<HTMLDivElement>;\n element: RefObject<HTMLAudioElement | HTMLVideoElement>;\n}) {\n return (\n <MediaReactContextElements.Provider value={{ currentTime, progress, element }}>\n <MediaReactContextActions.Provider value={actions}>\n <MediaReactContextState.Provider value={state}>{children}</MediaReactContextState.Provider>\n </MediaReactContextActions.Provider>\n </MediaReactContextElements.Provider>\n );\n}\n","import { ReactNode } from 'react';\nimport { useSimpleMediaPlayer } from '../../hooks/useSimpleMediaPlayer';\nimport { SingleAudio } from '../../features/rendering-strategy/resource-types';\nimport { MediaPlayerProvider } from '../../context/MediaContext';\nimport { useOverlay } from '../context/overlays';\n\nexport function AudioHTML({ media, children }: { media: SingleAudio; children: ReactNode }) {\n const [{ element, currentTime, progress }, state, actions] = useSimpleMediaPlayer({ duration: media.duration });\n\n return (\n <MediaPlayerProvider\n state={state}\n actions={actions}\n currentTime={currentTime}\n progress={progress}\n element={element}\n >\n <audio ref={element} src={media.url} />\n {children}\n </MediaPlayerProvider>\n );\n}\n\nexport function Audio({\n media,\n mediaControlsDeps,\n children,\n}: {\n media: SingleAudio;\n mediaControlsDeps?: any[];\n children: ReactNode;\n}) {\n useOverlay('portal', 'audio', AudioHTML, { media, children }, [media, ...(mediaControlsDeps || [])]);\n\n return null;\n}\n","import { ReactNode, RefObject } from 'react';\nimport { useSimpleMediaPlayer } from '../../hooks/useSimpleMediaPlayer';\nimport { SingleVideo } from '../../features/rendering-strategy/resource-types';\nimport { MediaPlayerProvider } from '../../context/MediaContext';\nimport { useOverlay } from '../context/overlays';\n\nexport function VideoHTML({\n element,\n media,\n playPause,\n}: {\n element: RefObject<any>;\n media: SingleVideo;\n playPause: () => void;\n}) {\n const Component = 'div' as any;\n return (\n <Component className=\"video-container\" part=\"video-container\" onClick={playPause}>\n <style>\n {`\n .video-container {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: #000;\n z-index: 13;\n display: flex;\n justify-content: center;\n pointer-events: visible;\n }\n `}\n </style>\n <video ref={element as any} src={media.url} style={{ width: '100%', objectFit: 'contain' }} />\n </Component>\n );\n}\n\nexport function Video({\n media,\n mediaControlsDeps,\n children,\n}: {\n media: SingleVideo;\n mediaControlsDeps?: any[];\n children: ReactNode;\n}) {\n const [{ element, currentTime, progress }, state, actions] = useSimpleMediaPlayer({ duration: media.duration });\n\n useOverlay('overlay', 'video-element', VideoHTML, {\n element,\n media,\n playPause: actions.playPause,\n });\n\n useOverlay(\n 'portal',\n 'custom-controls',\n MediaPlayerProvider,\n {\n state: state,\n actions: actions,\n currentTime: currentTime,\n progress: progress,\n element: element,\n children,\n },\n [currentTime, state, media, ...(mediaControlsDeps || [])]\n );\n\n return null;\n}\n","// @ts-ignore\nimport ModelViewer from 'react-model-viewer';\nimport { useOverlay } from '../context/overlays';\n\nexport function ModelHTML({ model }: { model: any }) {\n return (\n <>\n <style>\n {`\n .model-container {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: #000;\n z-index: 13;\n display: flex;\n justify-content: center;\n pointer-events: visible;\n }\n `}\n </style>\n <div className=\"model-container\">\n {/*@ts-ignore*/}\n <model-viewer\n interaction-prompt=\"none\"\n style={{ width: '100%', height: '100%' }}\n camera-controls=\"\"\n ar-status=\"not-presenting\"\n src={model.id}\n />\n </div>\n </>\n );\n}\n\nexport function Model({ model, name }: { model: any; name?: string }) {\n useOverlay('overlay', `model-${name}`, ModelHTML, { model }, [model]);\n\n return null;\n}\n","import { BoxStyle } from '@atlas-viewer/atlas';\nimport { useCanvas } from '../../hooks/useCanvas';\n\nexport function CanvasBackground({ style }: { style?: BoxStyle }) {\n const canvas = useCanvas();\n\n if (!canvas || !canvas.height || !canvas.width) {\n return null;\n }\n\n return (\n <box\n interactive={false}\n target={{ x: 0, y: 0, width: Number(canvas.width), height: Number(canvas.height) }}\n style={style}\n />\n );\n}\n","import { InternationalString } from '@iiif/presentation-3';\nimport React, { ReactNode, useMemo } from 'react';\n\nconst LanguageContext = React.createContext<string>('en');\n\nexport function LanguageProvider(props: { language: string; children: ReactNode }) {\n return <LanguageContext.Provider value={props.language}>{props.children}</LanguageContext.Provider>;\n}\n\nexport function useIIIFLanguage() {\n return React.useContext(LanguageContext);\n}\n\nfunction getLanguagePartFromCode(code: string) {\n return code.indexOf('-') !== -1 ? code.slice(0, code.indexOf('-')) : code;\n}\n\ntype LanguageStringProps = {\n [key: string]: any;\n} & { as?: string | React.FC<any>; language: string; viewingDirection?: 'rtl' | 'rtl' };\n\nexport function LanguageString({ as: Component, language, children, viewingDirection, ...props }: LanguageStringProps) {\n const i18nLanguage = useIIIFLanguage();\n\n const isSame = useMemo(() => {\n return getLanguagePartFromCode(i18nLanguage) === getLanguagePartFromCode(language);\n }, [i18nLanguage, language]);\n\n if (isSame) {\n if (Component) {\n return <Component {...props}>{children}</Component>;\n }\n\n return <span {...props}>{children}</span>;\n }\n\n if (Component) {\n return (\n <Component {...props} lang={language} dir={viewingDirection}>\n {children}\n </Component>\n );\n }\n\n return (\n <span {...props} lang={language} dir={viewingDirection}>\n {children}\n </span>\n );\n}\n\nfunction getClosestLanguage(i18nLanguage: string, languages: string[], i18nLanguages: string[]) {\n if (languages.length === 0) {\n return undefined;\n }\n\n // Only one option.\n if (languages.length === 1) {\n return languages[0];\n }\n\n // Exact match.\n if (languages.indexOf(i18nLanguage) !== -1) {\n return i18nLanguage;\n }\n\n // Root match (en-us === en)\n const root = i18nLanguage.indexOf('-') !== -1 ? i18nLanguage.slice(0, i18nLanguage.indexOf('-')) : null;\n if (root && languages.indexOf(root) !== -1) {\n return root;\n }\n\n // All of the fall backs.\n for (const lang of i18nLanguages) {\n if (languages.indexOf(lang) !== -1) {\n return lang;\n }\n }\n\n if (languages.indexOf('none') !== -1) {\n return 'none';\n }\n\n if (languages.indexOf('@none') !== -1) {\n return '@none';\n }\n\n // Finally, fall back to the first.\n return languages[0];\n}\n\nexport const useClosestLanguage = (getLanguages: () => string[], deps: any[] = []): string | undefined => {\n const i18nLanguage = useIIIFLanguage();\n\n return useMemo(() => {\n const languages = getLanguages();\n\n return getClosestLanguage(i18nLanguage, languages, []);\n }, [i18nLanguage, ...deps]);\n};\n\nexport function useLocaleString(inputText: InternationalString | string | null | undefined, defaultText?: string) {\n const language = useClosestLanguage(() => Object.keys(inputText || {}), [inputText]);\n return [\n useMemo(() => {\n if (!inputText) {\n return defaultText || '';\n }\n if (typeof inputText === 'string') {\n return inputText;\n }\n\n const candidateText = language ? inputText[language] : undefined;\n if (candidateText) {\n if (typeof candidateText === 'string') {\n return candidateText;\n }\n return candidateText.join('\\n');\n }\n\n return '';\n }, [language, defaultText, inputText]),\n language,\n ] as const;\n}\n\nexport function useCreateLocaleString() {\n const i18nLanguage = useIIIFLanguage();\n\n return function createLocaleString(\n inputText: InternationalString | string | null | undefined,\n defaultText?: string,\n separator?: string\n ) {\n const languages = Object.keys(inputText || {});\n const language = getClosestLanguage(i18nLanguage, languages, []);\n\n if (!inputText) {\n return defaultText || '';\n }\n if (typeof inputText === 'string') {\n return inputText;\n }\n\n const candidateText = language ? inputText[language] : undefined;\n if (candidateText) {\n if (typeof candidateText === 'string') {\n return candidateText;\n }\n return candidateText.join(typeof separator !== 'undefined' ? separator : '\\n');\n }\n\n return '';\n };\n}\n\nexport const LocaleString: React.FC<\n {\n as?: string | React.FC<any>;\n defaultText?: string;\n to?: string;\n enableDangerouslySetInnerHTML?: boolean;\n children: InternationalString | string | null | undefined;\n style?: React.CSSProperties;\n extraProps?: any;\n } & Record<string, any>\n> = ({ as: Component, defaultText, enableDangerouslySetInnerHTML, children, ...props }) => {\n const [text, language] = useLocaleString(children, defaultText);\n\n if (language) {\n return (\n <LanguageString\n {...props}\n as={Component}\n language={language}\n title={enableDangerouslySetInnerHTML ? undefined : text}\n dangerouslySetInnerHTML={\n enableDangerouslySetInnerHTML\n ? {\n __html: text,\n }\n : undefined\n }\n >\n {enableDangerouslySetInnerHTML ? undefined : text}\n </LanguageString>\n );\n }\n\n if (Component) {\n return <Component {...props}>{text}</Component>;\n }\n\n return (\n <span\n {...props}\n title={enableDangerouslySetInnerHTML ? undefined : text}\n dangerouslySetInnerHTML={\n enableDangerouslySetInnerHTML\n ? {\n __html: text,\n }\n : undefined\n }\n >\n {enableDangerouslySetInnerHTML ? undefined : text}\n </span>\n );\n};\n","import { useSimpleMediaPlayer } from '../../hooks/useSimpleMediaPlayer';\nimport { useOverlay } from '../context/overlays';\nimport { SingleYouTubeVideo } from '../../features/rendering-strategy/resource-types';\nimport { ReactNode, RefObject, useRef } from 'react';\n\nexport function VideoYouTubeHTML({\n element,\n media,\n playPause,\n}: {\n element: RefObject<any>;\n media: SingleYouTubeVideo;\n playPause: () => void;\n}) {\n const player = useRef<HTMLIFrameElement>(null);\n\n if (!media.youTubeId) {\n return null;\n }\n\n const Component = 'div' as any;\n return (\n <Component className=\"video-container\" part=\"video-container\" onClick={playPause}>\n <style>\n {`\n .video-container {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: #000;\n z-index: 13;\n display: flex;\n justify-content: center;\n pointer-events: visible;\n }\n .video-yt {\n border: none;\n width: 100%;\n object-fit: contain;\n }\n `}\n </style>\n <iframe\n className=\"video-yt\"\n ref={player}\n src={`https://www.youtube.com/embed/${media.youTubeId}?enablejsapi=1&origin=${window.location.host}`}\n referrerPolicy=\"no-referrer\"\n sandbox=\"allow-scripts allow-same-origin allow-presentation\"\n ></iframe>\n </Component>\n );\n}\n\nexport function VideoYouTube({\n media,\n mediaControlsDeps,\n children,\n}: {\n media: SingleYouTubeVideo;\n mediaControlsDeps?: any[];\n children: ReactNode;\n}) {\n const [{ element, currentTime, progress }, state, actions] = useSimpleMediaPlayer({ duration: media.duration });\n\n useOverlay('overlay', 'video-element', VideoYouTubeHTML, {\n element,\n media,\n playPause: actions.playPause,\n });\n\n return null;\n}\n","import { createStylesHelper } from '@iiif/helpers/styles';\nimport { RenderImage } from './Image';\nimport React, { Fragment, ReactNode, useEffect, useLayoutEffect, useMemo } from 'react';\nimport { BoxStyle, HTMLPortal } from '@atlas-viewer/atlas';\nimport { useVirtualAnnotationPageContext } from '../../hooks/useVirtualAnnotationPageContext';\nimport { StrategyActions, useRenderingStrategy } from '../../hooks/useRenderingStrategy';\nimport { useVault } from '../../hooks/useVault';\nimport { useResourceEvents } from '../../hooks/useResourceEvents';\nimport { useThumbnail } from '../../hooks/useThumbnail';\nimport { useCanvas } from '../../hooks/useCanvas';\nimport { RenderAnnotationPage } from './AnnotationPage';\nimport { Audio } from './Audio';\nimport { EmptyStrategy, MediaStrategy, RenderingStrategy } from '../../features/rendering-strategy/strategies';\nimport { Video } from './Video';\nimport { Model } from './Model';\nimport { CanvasContext } from '../../context/CanvasContext';\nimport { SingleImageStrategy } from '../../features/rendering-strategy/image-strategy';\nimport { CanvasBackground } from './CanvasBackground';\nimport { ImageWithOptionalService } from '../../features/rendering-strategy/resource-types';\nimport { LocaleString } from '../../utility/i18n-utils';\nimport { useOverlay } from '../context/overlays';\nimport { useViewerPreset, ViewerPresetContext } from '../../context/ViewerPresetContext';\nimport { ChoiceDescription } from '@iiif/helpers';\nimport { useWorldSize } from '../context/world-size';\nimport { VideoYouTube } from './VideoYouTube';\n\nexport type CanvasProps = {\n x?: number;\n y?: number;\n onCreated?: any;\n onChoiceChange?: (choice?: ChoiceDescription) => void;\n registerActions?: (actions: StrategyActions) => void;\n defaultChoices?: Array<{ id: string; opacity?: number }>;\n isStatic?: boolean;\n keepCanvasScale?: boolean;\n children?: ReactNode;\n renderViewerControls?: (strategy: SingleImageStrategy | EmptyStrategy) => ReactNode;\n viewControlsDeps?: any[];\n renderMediaControls?: (strategy: MediaStrategy) => ReactNode;\n mediaControlsDeps?: any[];\n strategies?: Array<RenderingStrategy['type']>;\n backgroundStyle?: BoxStyle;\n alwaysShowBackground?: boolean;\n enableSizes?: boolean;\n enableYouTube?: boolean;\n ignoreSize?: boolean;\n throwOnUnknown?: boolean;\n onClickPaintingAnnotation?: (id: string, image: ImageWithOptionalService, e: any) => void;\n};\n\nexport function RenderCanvas({\n x,\n y,\n onChoiceChange,\n registerActions,\n defaultChoices,\n isStatic,\n renderViewerControls,\n renderMediaControls,\n viewControlsDeps,\n mediaControlsDeps,\n strategies,\n throwOnUnknown,\n backgroundStyle,\n alwaysShowBackground,\n keepCanvasScale = false,\n enableSizes = false,\n enableYouTube = true,\n onClickPaintingAnnotation,\n children,\n}: CanvasProps) {\n const canvas = useCanvas();\n const elementProps = useResourceEvents(canvas, ['deep-zoom']);\n const [virtualPage] = useVirtualAnnotationPageContext();\n const preset = useViewerPreset();\n const vault = useVault();\n const helper = useMemo(() => createStylesHelper(vault), [vault]);\n const [strategy, actions] = useRenderingStrategy({\n strategies: strategies || ['images'],\n defaultChoices: defaultChoices?.map(({ id }) => id),\n });\n const choice = strategy.type === 'images' ? strategy.choice : undefined;\n const bestScale = useMemo(() => {\n if (keepCanvasScale) {\n return 1;\n }\n return Math.max(\n 1,\n ...(strategy.type === 'images'\n ? strategy.images.map((i) => {\n return (i.width || 0) / i.target?.spatial.width;\n })\n : [])\n );\n }, [keepCanvasScale, strategy]);\n\n useWorldSize(bestScale);\n\n useEffect(() => {\n if (registerActions) {\n registerActions(actions);\n }\n }, [strategy.annotations]);\n\n useEffect(() => {\n if (defaultChoices) {\n for (const choice of defaultChoices) {\n if (typeof choice.opacity !== 'undefined') {\n helper.applyStyles({ id: choice.id }, 'atlas', {\n opacity: choice.opacity,\n });\n }\n }\n }\n }, [defaultChoices]);\n\n useLayoutEffect(() => {\n if (onChoiceChange) {\n onChoiceChange(choice);\n }\n }, [choice]);\n\n useOverlay(\n preset &&\n (strategy.type === 'images' ||\n strategy.type === 'empty' ||\n (strategy.type === 'textual-content' && renderViewerControls))\n ? 'overlay'\n : 'none',\n `canvas-portal-controls-${canvas?.id}`,\n ViewerPresetContext.Provider,\n renderViewerControls\n ? {\n value: preset || null,\n children: renderViewerControls(strategy as any),\n }\n : {},\n [canvas, preset, strategy, ...(viewControlsDeps || [])]\n );\n\n const thumbnail = useThumbnail({ maxWidth: 256, maxHeight: 256 });\n\n if (!canvas) {\n return null;\n }\n\n // accompanyingCanvas\n const accompanyingCanvas = canvas.accompanyingCanvas;\n\n const thumbnailFallbackImage =\n thumbnail && thumbnail.type === 'fixed' ? (\n <world-object height={canvas.height} width={canvas.width} x={x} y={y}>\n <world-image\n uri={thumbnail.id}\n target={{ x: 0, y: 0, width: canvas.width, height: canvas.height }}\n display={\n thumbnail.width && thumbnail.height\n ? {\n width: thumbnail.width,\n height: thumbnail.height,\n }\n : undefined\n }\n crop={undefined}\n />\n </world-object>\n ) : null;\n\n if (strategy.type === 'unknown') {\n if (thumbnailFallbackImage) {\n return thumbnailFallbackImage;\n }\n\n if (throwOnUnknown) {\n throw new Error(strategy.reason || 'Unknown image strategy');\n }\n\n return null;\n }\n\n const annotations = (\n <Fragment>\n {virtualPage ? <RenderAnnotationPage page={virtualPage} /> : null}\n {strategy.annotations && strategy.annotations.pages\n ? strategy.annotations.pages.map((page) => {\n return <RenderAnnotationPage key={page.id} page={page} />;\n })\n : null}\n {children}\n </Fragment>\n );\n\n const totalKey = strategy.type === 'images' ? strategy.images.length : 0;\n\n return (\n <>\n <world-object\n key={`${canvas.id}/${strategy.type}/${totalKey}`}\n height={canvas.height}\n width={canvas.width}\n // scale={bestScale}\n x={x}\n y={y}\n {...elementProps}\n >\n {strategy.type === 'empty' || alwaysShowBackground ? <CanvasBackground style={backgroundStyle} /> : null}\n {strategy.type === 'textual-content'\n ? strategy.items.map((item, n) => {\n return (\n <>\n <HTMLPortal\n key={n}\n // @ts-ignore\n onClick={\n onClickPaintingAnnotation\n ? (e: any) => {\n e.stopPropagation();\n onClickPaintingAnnotation(item.annotationId, item as any, e);\n }\n : undefined\n }\n target={(item.target as any)?.spatial || undefined}\n >\n <div data-textual-content={true}>\n <LocaleString enableDangerouslySetInnerHTML>{item.text}</LocaleString>\n </div>\n </HTMLPortal>\n {annotations}\n </>\n );\n })\n : null}\n {strategy.type === 'images' ? (\n <>\n {strategy.images.map((image, idx) => (\n <RenderImage\n isStatic={isStatic}\n key={image.id + idx}\n image={image}\n id={image.id}\n thumbnail={idx === 0 ? thumbnail : undefined}\n selector={image.selector}\n enableSizes={enableSizes}\n onClick={\n onClickPaintingAnnotation\n ? (e) => {\n e.stopPropagation();\n onClickPaintingAnnotation(image.annotationId, image, e);\n }\n : undefined\n }\n />\n ))}\n {annotations}\n </>\n ) : null}\n {strategy.type === '3d-model' ? <Model model={strategy.model} /> : null}\n {strategy.type === 'media' ? (\n <>\n {strategy.media.type === 'Sound' ? (\n <Audio media={strategy.media} mediaControlsDeps={mediaControlsDeps}>\n {thumbnailFallbackImage}\n {renderMediaControls ? renderMediaControls(strategy) : null}\n </Audio>\n ) : strategy.media.type === 'Video' ? (\n <Video media={strategy.media} mediaControlsDeps={mediaControlsDeps}>\n {thumbnailFallbackImage}\n {renderMediaControls ? renderMediaControls(strategy) : null}\n </Video>\n ) : strategy.media.type === 'VideoYouTube' && enableYouTube ? (\n <VideoYouTube media={strategy.media} mediaControlsDeps={mediaControlsDeps}>\n {thumbnailFallbackImage}\n {renderMediaControls ? renderMediaControls(strategy) : null}\n </VideoYouTube>\n ) : null}\n </>\n ) : null}\n {/* This is required to fix a race condition. */}\n </world-object>\n {strategy.type === 'media' && strategy.media.type === 'Sound' && accompanyingCanvas ? (\n <CanvasContext canvas={accompanyingCanvas.id}>\n <RenderCanvas renderViewerControls={renderViewerControls} />\n </CanvasContext>\n ) : null}\n </>\n );\n}\n","import { globalVault } from '@iiif/helpers/vault';\nimport { useContext } from 'react';\nimport { ReactVaultContext } from '../context/VaultContext';\n\nexport function useExistingVault() {\n const oldContext: any = useContext(ReactVaultContext);\n\n return oldContext && oldContext.vault ? (oldContext.vault as any) : globalVault();\n}\n","import { FC, forwardRef, ForwardRefExoticComponent, ReactNode, RefAttributes, useImperativeHandle } from 'react';\nimport { Viewer } from './Viewer';\nimport { RenderAnnotation } from './render/Annotation';\nimport { RenderAnnotationPage } from './render/AnnotationPage';\nimport { CanvasProps, RenderCanvas } from './render/Canvas';\nimport { RenderImage } from './render/Image';\nimport { CanvasBackground } from './render/CanvasBackground';\nimport { SimpleViewerProvider, useSimpleViewer } from '../viewers/SimpleViewerContext';\nimport { VaultProvider } from '../context/VaultContext';\nimport { useManifest } from '../hooks/useManifest';\nimport { useVisibleCanvases } from '../context/VisibleCanvasContext';\nimport { CanvasContext } from '../context/CanvasContext';\nimport { ViewerControls } from '../demo/viewer-controls';\nimport { MediaControls } from '../demo/media-controls';\nimport { useExistingVault } from '../hooks/useExistingVault';\nimport { SimpleViewerContext } from '../viewers/SimpleViewerContext.types';\nimport { Audio, AudioHTML } from './render/Audio';\nimport { Video, VideoHTML } from './render/Video';\nimport { Model, ModelHTML } from './render/Model';\nimport { ViewerMode } from '@atlas-viewer/atlas';\n\ninterface CanvasPanelProps {\n manifest: string;\n startCanvas?: string;\n rangeId?: string;\n pagingEnabled?: boolean;\n header?: ReactNode;\n children?: ReactNode;\n mode?: ViewerMode;\n\n // Inner props\n height?: number;\n spacing?: number;\n components?: {\n ViewerControls?: FC;\n MediaControls?: FC;\n };\n\n // Other components\n canvasProps?: Omit<Partial<CanvasProps>, 'x'>;\n annotations?: ReactNode;\n}\n\nconst Inner = forwardRef(function Inner(\n props: {\n height?: number;\n canvasProps?: CanvasPanelProps['canvasProps'];\n spacing?: number;\n components?: CanvasPanelProps['components'];\n children?: ReactNode;\n annotations?: ReactNode;\n header?: ReactNode;\n reuseAtlas?: boolean;\n mode?: ViewerMode;\n },\n ref\n) {\n const manifest = useManifest();\n const canvases = useVisibleCanvases();\n const viewer = useSimpleViewer();\n const { ViewerControls, MediaControls } = props.components || {};\n\n useImperativeHandle(ref, () => viewer, [viewer]);\n\n if (!manifest) {\n return <div />;\n }\n\n let accumulator = 0;\n\n return (\n <>\n {props.header}\n <CanvasPanel.Viewer\n key={props.reuseAtlas ? '' : viewer.currentSequenceIndex}\n height={props.height}\n mode={props.mode}\n >\n {canvases.map((canvas, idx) => {\n const margin = accumulator;\n accumulator += canvas.width + (props.spacing || 0);\n return (\n <CanvasContext canvas={canvas.id} key={canvas.id}>\n <CanvasPanel.RenderCanvas\n key={canvas.id}\n strategies={['3d-model', 'media', 'images', 'empty', 'textual-content']}\n renderViewerControls={idx === 0 && ViewerControls ? () => <ViewerControls /> : undefined}\n renderMediaControls={idx === 0 && MediaControls ? () => <MediaControls /> : undefined}\n x={margin}\n {...(props.canvasProps || {})}\n >\n {props.annotations}\n </CanvasPanel.RenderCanvas>\n </CanvasContext>\n );\n })}\n </CanvasPanel.Viewer>\n {props.children}\n </>\n );\n});\n\ntype CanvasPanelType = ForwardRefExoticComponent<CanvasPanelProps & RefAttributes<SimpleViewerContext>> & {\n RenderImage: typeof RenderImage;\n RenderCanvas: typeof RenderCanvas;\n RenderAnnotationPage: typeof RenderAnnotationPage;\n RenderAnnotation: typeof RenderAnnotation;\n Viewer: typeof Viewer;\n CanvasBackground: typeof CanvasBackground;\n Audio: typeof Audio;\n Video: typeof Video;\n Model: typeof Model;\n AudioHTML: typeof AudioHTML;\n VideoHTML: typeof VideoHTML;\n ModelHTML: typeof ModelHTML;\n};\n\nexport const CanvasPanel = forwardRef(function CanvasPanel(\n { children, height, annotations, canvasProps, spacing, header, components, mode, ...props }: CanvasPanelProps,\n ref\n) {\n const vault = useExistingVault();\n\n return (\n <VaultProvider vault={vault}>\n <SimpleViewerProvider {...props}>\n <Inner\n ref={ref}\n height={height}\n components={components}\n spacing={spacing}\n canvasProps={canvasProps}\n annotations={annotations}\n header={header}\n mode={mode}\n >\n {children}\n </Inner>\n </SimpleViewerProvider>\n </VaultProvider>\n );\n}) as CanvasPanelType;\n\nCanvasPanel.RenderImage = RenderImage;\nCanvasPanel.RenderCanvas = RenderCanvas;\nCanvasPanel.RenderAnnotationPage = RenderAnnotationPage;\nCanvasPanel.RenderAnnotation = RenderAnnotation;\nCanvasPanel.Viewer = Viewer;\nCanvasPanel.CanvasBackground = CanvasBackground;\nCanvasPanel.Audio = Audio;\nCanvasPanel.Video = Video;\nCanvasPanel.Model = Model;\nCanvasPanel.AudioHTML = AudioHTML;\nCanvasPanel.VideoHTML = VideoHTML;\nCanvasPanel.ModelHTML = ModelHTML;\n"],"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","d","f","S","E","R","y","l","Ee","J","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","findAllCanvasesInRange","found","inner","_a","sourceId","getManifestSequence","manifestOrRange","disablePaging","skipNonPaged","behavior","isPaged","isContinuous","isIndividuals","manifestItems","ordering","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","canvasId","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","_b","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","Pr","jr","Dr","Nr","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","MediaPlayerProvider","AudioHTML","Audio","mediaControlsDeps","VideoHTML","Video","ModelHTML","model","Model","name","CanvasBackground","LanguageContext","useIIIFLanguage","getLanguagePartFromCode","code","LanguageString","Component","viewingDirection","i18nLanguage","getClosestLanguage","languages","i18nLanguages","root","useClosestLanguage","getLanguages","useLocaleString","inputText","defaultText","candidateText","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"],"mappings":"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","x_google_ignoreList":[0,1,2,4,21,31,33,35,41,50,59]}
1
+ {"version":3,"file":"canvas-panel.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"],"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"],"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","d","f","S","E","R","y","l","Ee","J","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","findAllCanvasesInRange","found","inner","_a","sourceId","getManifestSequence","manifestOrRange","disablePaging","skipNonPaged","behavior","isPaged","isContinuous","isIndividuals","manifestItems","ordering","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","canvasId","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","_b","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","Pr","jr","Dr","Nr","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","MediaPlayerProvider","AudioHTML","Audio","mediaControlsDeps","VideoHTML","Video","ModelHTML","model","Model","name","CanvasBackground","LanguageContext","useIIIFLanguage","getLanguagePartFromCode","code","LanguageString","Component","viewingDirection","i18nLanguage","getClosestLanguage","languages","i18nLanguages","root","useClosestLanguage","getLanguages","useLocaleString","inputText","defaultText","candidateText","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"],"mappings":"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","x_google_ignoreList":[0,1,2,4,21,31,33,35,41,50,60]}