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.mjs","sources":["../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../../../src/context/ResourceContext.tsx","../../../node_modules/@iiif/helpers/dist/vault/esm/vault.mjs","../../../src/context/VaultContext.tsx","../../../src/hooks/useVault.ts","../../../src/hooks/useExternalResource.ts","../../../src/hooks/useExternalManifest.ts","../../../src/context/ManifestContext.tsx","../../../src/context/CanvasContext.tsx","../../../src/hooks/useVaultSelector.ts","../../../src/context/VisibleCanvasContext.tsx","../../../src/hooks/useManifest.ts","../../../src/context/RangeContext.tsx","../../../src/future-helpers/ranges.ts","../../../src/future-helpers/sequences.ts","../../../src/hooks/useRange.ts","../../../src/viewers/SimpleViewerContext.hooks.ts","../../../src/viewers/SimpleViewerContext.tsx","../../../src/context/ContextBridge.tsx","../../../node_modules/@iiif/helpers/dist/vault-actions/esm/vault-actions.mjs","../../../src/hooks/useDispatch.ts","../../../src/hooks/useVirtualAnnotationPage.ts","../../../src/hooks/useVirtualAnnotationPageContext.tsx","../../../src/canvas-panel/render/DefaultCanvasFallback.tsx","../../../src/context/ViewerPresetContext.tsx","../../../src/canvas-panel/context/overlays.tsx","../../../src/hooks/useCanvas.ts","../../../src/canvas-panel/context/world-size.ts","../../../src/canvas-panel/Viewer.tsx","../../../node_modules/@iiif/helpers/dist/events/esm/events.mjs","../../../src/hooks/useResourceEvents.ts","../../../node_modules/@iiif/helpers/dist/styles/esm/styles.mjs","../../../src/hooks/useStyles.ts","../../../node_modules/@iiif/helpers/dist/annotation-targets/esm/annotation-targets.mjs","../../../src/hooks/useAnnotation.ts","../../../src/canvas-panel/render/Annotation.tsx","../../../src/hooks/useAnnotationPage.ts","../../../src/canvas-panel/render/AnnotationPage.tsx","../../../src/canvas-panel/render/Image.tsx","../../../node_modules/@iiif/helpers/dist/esm/index.mjs","../../../src/features/rendering-strategy/rendering-utils.ts","../../../src/hooks/useEnabledAnnotationPageIds.ts","../../../src/utility/flatten-annotation-page-ids.ts","../../../src/hooks/useAnnotationPageManager.ts","../../../src/hooks/useResources.ts","../../../src/context/ImageServiceLoaderContext.tsx","../../../src/hooks/useLoadImageService.ts","../../../src/hooks/usePaintingAnnotations.ts","../../../node_modules/@iiif/helpers/dist/painting-annotations/esm/painting-annotations.mjs","../../../src/hooks/usePaintables.ts","../../../src/features/rendering-strategy/image-strategy.ts","../../../src/features/rendering-strategy/3d-strategy.ts","../../../src/features/rendering-strategy/audio-strategy.ts","../../../src/features/rendering-strategy/video-strategy.ts","../../../src/features/rendering-strategy/textual-content-strategy.ts","../../../src/hooks/useRenderingStrategy.ts","../../../src/hooks/useVaultEffect.ts","../../../node_modules/@iiif/helpers/dist/thumbnail/esm/thumbnail.mjs","../../../src/hooks/useThumbnail.ts","../../../src/hooks/useSimpleMediaPlayer.ts","../../../src/context/MediaContext.tsx","../../../src/canvas-panel/render/Audio.tsx","../../../src/canvas-panel/render/Video.tsx","../../../src/canvas-panel/render/Model.tsx","../../../src/canvas-panel/render/CanvasBackground.tsx","../../../src/utility/i18n-utils.tsx","../../../src/canvas-panel/render/VideoYouTube.tsx","../../../src/canvas-panel/render/Canvas.tsx","../../../src/hooks/useExistingVault.ts","../../../src/canvas-panel/index.tsx"],"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","h","m","C","A","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","Lt","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.mjs","sources":["../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../../../src/context/ResourceContext.tsx","../../../node_modules/@iiif/helpers/dist/vault/esm/vault.mjs","../../../src/context/VaultContext.tsx","../../../src/hooks/useVault.ts","../../../src/hooks/useExternalResource.ts","../../../src/hooks/useExternalManifest.ts","../../../src/context/ManifestContext.tsx","../../../src/context/CanvasContext.tsx","../../../src/hooks/useVaultSelector.ts","../../../src/context/VisibleCanvasContext.tsx","../../../src/hooks/useManifest.ts","../../../src/context/RangeContext.tsx","../../../src/future-helpers/ranges.ts","../../../src/future-helpers/sequences.ts","../../../src/hooks/useRange.ts","../../../src/viewers/SimpleViewerContext.hooks.ts","../../../src/viewers/SimpleViewerContext.tsx","../../../src/context/ContextBridge.tsx","../../../node_modules/@iiif/helpers/dist/vault-actions/esm/vault-actions.mjs","../../../src/hooks/useDispatch.ts","../../../src/hooks/useVirtualAnnotationPage.ts","../../../src/hooks/useVirtualAnnotationPageContext.tsx","../../../src/canvas-panel/render/DefaultCanvasFallback.tsx","../../../src/context/ViewerPresetContext.tsx","../../../src/canvas-panel/context/overlays.tsx","../../../src/hooks/useCanvas.ts","../../../src/canvas-panel/context/world-size.ts","../../../src/canvas-panel/Viewer.tsx","../../../node_modules/@iiif/helpers/dist/events/esm/events.mjs","../../../src/hooks/useResourceEvents.ts","../../../node_modules/@iiif/helpers/dist/styles/esm/styles.mjs","../../../src/hooks/useStyles.ts","../../../node_modules/@iiif/helpers/dist/annotation-targets/esm/annotation-targets.mjs","../../../src/hooks/useAnnotation.ts","../../../src/canvas-panel/render/Annotation.tsx","../../../src/hooks/useAnnotationPage.ts","../../../src/canvas-panel/render/AnnotationPage.tsx","../../../src/canvas-panel/render/Image.tsx","../../../node_modules/@iiif/helpers/dist/esm/index.mjs","../../../src/features/rendering-strategy/rendering-utils.ts","../../../src/hooks/useEnabledAnnotationPageIds.ts","../../../src/utility/flatten-annotation-page-ids.ts","../../../src/hooks/useAnnotationPageManager.ts","../../../src/hooks/useResources.ts","../../../src/context/ImageServiceLoaderContext.tsx","../../../src/hooks/useLoadImageService.ts","../../../src/hooks/usePaintingAnnotations.ts","../../../node_modules/@iiif/helpers/dist/painting-annotations/esm/painting-annotations.mjs","../../../src/hooks/usePaintables.ts","../../../src/features/rendering-strategy/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","h","m","C","A","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","Lt","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]}