react-iiif-vault 2.0.18 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -1
- package/dist/Image-CXsx26cA.d.ts +45 -0
- package/dist/Image-g-DyBvi0.d.cts +45 -0
- package/dist/ImageStrategy-BHLIi5gd.d.ts +55 -0
- package/dist/ImageStrategy-Be9YES5a.d.cts +55 -0
- package/dist/SimpleViewerContext.hooks-CTgfe0Gg.d.cts +617 -0
- package/dist/SimpleViewerContext.hooks-DYJSrd-U.d.ts +617 -0
- package/dist/SimpleViewerContext.types-CWf5OFM7.d.ts +51 -0
- package/dist/SimpleViewerContext.types-Df-cpBss.d.cts +51 -0
- package/dist/ViewerPresetContext-D7N6KH9p.d.ts +144 -0
- package/dist/ViewerPresetContext-DwFTIkDx.d.cts +144 -0
- package/dist/bundle.d.ts +290 -196
- package/dist/bundle.global.js +45 -74
- package/dist/canvas-panel/scene.cjs +1 -0
- package/dist/canvas-panel/scene.d.cts +133 -0
- package/dist/canvas-panel/scene.d.ts +133 -0
- package/dist/canvas-panel/scene.js +1 -0
- package/dist/canvas-panel.cjs +1 -47
- package/dist/canvas-panel.d.cts +10 -5
- package/dist/canvas-panel.d.ts +10 -5
- package/dist/canvas-panel.js +1 -1
- package/dist/chunk-3XPYQXUE.js +48 -0
- package/dist/chunk-6WG6RPHU.js +1 -0
- package/dist/chunk-DXC5VCRN.js +1 -0
- package/dist/chunk-DZ7DMQ3V.cjs +1 -0
- package/dist/chunk-HFC72RK6.js +1 -0
- package/dist/chunk-L2GTJVPY.js +1 -0
- package/dist/chunk-L576POBV.cjs +2 -0
- package/dist/chunk-LKWFF45D.cjs +1 -0
- package/dist/chunk-MEQI335A.js +2 -0
- package/dist/chunk-MIANDAMK.cjs +1 -0
- package/dist/chunk-ND2R7OTX.js +1 -0
- package/dist/chunk-R7HZTE2T.cjs +48 -0
- package/dist/chunk-WBVFSMED.cjs +1 -0
- package/dist/chunk-XULFR6E3.cjs +1 -0
- package/dist/chunk-YEU5T67O.js +1 -0
- package/dist/chunk-ZBGD3VEW.cjs +1 -0
- package/dist/chunk-ZEGT4BAR.cjs +1 -0
- package/dist/core.cjs +1 -0
- package/dist/core.d.cts +133 -0
- package/dist/core.d.ts +133 -0
- package/dist/core.js +1 -0
- package/dist/{index-DijgVxjb.d.ts → index-ClFUurPI.d.ts} +15 -69
- package/dist/{index-DHghDluJ.d.cts → index-QFlDahI_.d.cts} +15 -69
- package/dist/index.cjs +1 -49
- package/dist/index.d.cts +33 -1496
- package/dist/index.d.ts +33 -1496
- package/dist/index.js +1 -1
- package/dist/presentation-4.cjs +1 -0
- package/dist/presentation-4.d.cts +304 -0
- package/dist/presentation-4.d.ts +304 -0
- package/dist/presentation-4.js +1 -0
- package/dist/ranges-Cc2ppjFD.d.ts +689 -0
- package/dist/ranges-D-UBNcsJ.d.cts +689 -0
- package/dist/{useRenderingStrategy-CoKE915F.d.cts → useRenderingStrategy-Vubk-vUU.d.cts} +47 -24
- package/dist/{useRenderingStrategy-CoKE915F.d.ts → useRenderingStrategy-Vubk-vUU.d.ts} +47 -24
- package/dist/utils-DHWZGbVU.d.ts +54 -0
- package/dist/utils-De5WTLDh.d.cts +54 -0
- package/dist/utils.cjs +1 -1
- package/dist/utils.d.cts +7 -5
- package/dist/utils.d.ts +7 -5
- package/dist/utils.js +1 -1
- package/package.json +54 -15
- package/dist/chunk-KUNXFW7A.js +0 -49
- package/dist/chunk-P7XHGETS.js +0 -1
- package/dist/utils-BKdiug6F.d.cts +0 -41
- package/dist/utils-CmwQWQLa.d.ts +0 -41
package/dist/canvas-panel.d.cts
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import '@atlas-viewer/atlas';
|
|
2
2
|
import 'react';
|
|
3
|
-
export {
|
|
3
|
+
export { a as CanvasPanel, C as CanvasPanelProps } from './index-QFlDahI_.cjs';
|
|
4
|
+
import './SimpleViewerContext.types-Df-cpBss.cjs';
|
|
4
5
|
import 'react/jsx-runtime';
|
|
5
6
|
import 'zustand';
|
|
6
7
|
import 'mitt';
|
|
7
8
|
import 'polygon-editor';
|
|
8
|
-
import '@iiif/helpers/vault';
|
|
9
|
-
import '@iiif/presentation-3';
|
|
10
9
|
import 'zustand/vanilla';
|
|
11
|
-
import '@iiif/presentation-3
|
|
12
|
-
import '
|
|
10
|
+
import '@iiif/parser/presentation-3/types';
|
|
11
|
+
import '@iiif/parser/presentation-3-normalized/types';
|
|
12
|
+
import './useRenderingStrategy-Vubk-vUU.cjs';
|
|
13
13
|
import '@iiif/helpers';
|
|
14
|
+
import '@iiif/helpers/painting-annotations';
|
|
15
|
+
import '@iiif/parser/presentation-4-normalized/types';
|
|
14
16
|
import '@iiif/helpers/annotation-targets';
|
|
17
|
+
import './Image-g-DyBvi0.cjs';
|
|
18
|
+
import '@iiif/helpers/vault-4';
|
|
19
|
+
import '@iiif/helpers/vault';
|
package/dist/canvas-panel.d.ts
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import '@atlas-viewer/atlas';
|
|
2
2
|
import 'react';
|
|
3
|
-
export {
|
|
3
|
+
export { a as CanvasPanel, C as CanvasPanelProps } from './index-ClFUurPI.js';
|
|
4
|
+
import './SimpleViewerContext.types-CWf5OFM7.js';
|
|
4
5
|
import 'react/jsx-runtime';
|
|
5
6
|
import 'zustand';
|
|
6
7
|
import 'mitt';
|
|
7
8
|
import 'polygon-editor';
|
|
8
|
-
import '@iiif/helpers/vault';
|
|
9
|
-
import '@iiif/presentation-3';
|
|
10
9
|
import 'zustand/vanilla';
|
|
11
|
-
import '@iiif/presentation-3
|
|
12
|
-
import '
|
|
10
|
+
import '@iiif/parser/presentation-3/types';
|
|
11
|
+
import '@iiif/parser/presentation-3-normalized/types';
|
|
12
|
+
import './useRenderingStrategy-Vubk-vUU.js';
|
|
13
13
|
import '@iiif/helpers';
|
|
14
|
+
import '@iiif/helpers/painting-annotations';
|
|
15
|
+
import '@iiif/parser/presentation-4-normalized/types';
|
|
14
16
|
import '@iiif/helpers/annotation-targets';
|
|
17
|
+
import './Image-CXsx26cA.js';
|
|
18
|
+
import '@iiif/helpers/vault-4';
|
|
19
|
+
import '@iiif/helpers/vault';
|
package/dist/canvas-panel.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{ca as a}from"./chunk-3XPYQXUE.js";import"./chunk-6WG6RPHU.js";import"./chunk-YEU5T67O.js";import"./chunk-MEQI335A.js";import"./chunk-L2GTJVPY.js";export{a as CanvasPanel};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import{A as Ae,a as Tt,j as je,k as Ue,m as At,n as Te,o as Xe,q as kt,r as Mt,t as Vt,v as Ot,z as Ie}from"./chunk-6WG6RPHU.js";import{a as re,f as zt,h as Ft,i as Wt,j as Gt,k as Yt,l as _t,m as jt,o as Ut}from"./chunk-YEU5T67O.js";import{I as Bt,J as $,K as Et,L as se,M as ee,O as le,P as Ze,Q as A,S as O,W as Ht,X as $t,a as bt,aa as ke,ba as qt,ca as Dt,d as ne,e as Rt,f as we,j as Pt,k as Ye,m as wt,n as It,qa as ue,ra as Me,ta as Ke,u as _e}from"./chunk-MEQI335A.js";import{a as Nt,c as de,d as Lt}from"./chunk-L2GTJVPY.js";import{forwardRef as Jo,useImperativeHandle as Kr,useMemo as Jr}from"react";import{ModeContext as rn}from"@atlas-viewer/atlas";import{createContext as an,useContext as Jt,useEffect as sn,useMemo as ln}from"react";import{useStore as dn}from"zustand";import{createHelper as tn}from"polygon-editor";import{createStore as on}from"zustand/vanilla";function Je(e){let t=Math.max(...e.map(r=>r[0])),o=Math.min(...e.map(r=>r[0])),n=Math.max(...e.map(r=>r[1])),i=Math.min(...e.map(r=>r[1]));for(let r of e)if(r[0]!==o&&r[0]!==t&&r[1]!==i&&r[1]!==n||r[0]<o||r[0]>t||r[1]<i||r[1]>n)return!1;return!0}function pe(e){if(!e)return null;if(e.points.length>2){let t=Math.min(...e.points.map(r=>r[0])),o=Math.min(...e.points.map(r=>r[1])),n=Math.max(0,...e.points.map(r=>r[0])),i=Math.max(0,...e.points.map(r=>r[1]));return{x:t,y:o,width:n-t,height:i-o}}return null}function Qo(e){return e.type==="SvgSelector"}function ri(e){return e.type==="BoxSelector"}function en(e,t){if(Qo(e)){let s=e.svgShape==="polyline";if(!e.points||e.points.length===0)return null;if(t){let{width:a,height:l}=t;return{type:"SvgSelector",value:`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${a} ${l}" width="${a}" height="${l}"><${s?"polygon":"polyline"} points="${e.points.map(f=>f.join(",")).join(" ")}" /></svg>`}}return{type:"SvgSelector",value:`<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><g><path d='M${e.points.map(a=>a.join(",")).join(" ")}${s?" Z":""}' /></g></svg>`}}if(!e.spatial)return null;let{x:o,y:n,width:i,height:r}=e.spatial||{};return!i||!r?null:{type:"FragmentSelector",value:`xywh=${~~o},${~~n},${~~i},${~~r}`}}var Qe=en;function et(e,t){if(!e||!e.points.length)return null;if(Je(e.points)){let o=e.points.map(l=>l[0]),n=e.points.map(l=>l[1]),i=Math.min(...o),r=Math.min(...n),s=Math.max(...o)-i,a=Math.max(...n)-r;return Qe({type:"BoxSelector",spatial:{x:i,y:r,width:s,height:a}},t)}return Qe({type:"SvgSelector",points:e.points,svgShape:e.open?"polygon":"polyline"},t)}function Xt(e){if(e.type==="polygon"&&!e.noBox&&e.points&&Je(e.points)){let o=pe({open:!1,points:e.points||[]});return Xt({...e,type:"box",selector:o})}if(e.type==="polygon"||e.type==="draw")return{polygon:{points:e.points||[],open:e.open||!1},requestType:e.type,boundingBox:pe({points:e.points||[],open:!1}),metadata:{},arguments:e.arguments||{},target:et({points:e.points||[],open:!1},e.bounds)};let t=e.selector;if(t){let o=[[t.x,t.y],[t.x+t.width,t.y],[t.x+t.width,t.y+t.height],[t.x,t.y+t.height]];return{polygon:{points:o,open:!1},requestType:e.type,boundingBox:t,metadata:{},target:et({points:o,open:!1},e.bounds),arguments:e.arguments||{}}}return{polygon:{points:[],open:!1},requestType:e.type,boundingBox:null,target:null,metadata:{},arguments:e.arguments||{}}}var nn={shapeId:null,noShape:!0,transitioning:!1,actionIntentType:null,transitionIntentType:null,selectedPoints:[],hasClosestLine:!1,lastCreationTool:null,modifiers:{Alt:!1,Shift:!1,Meta:!1,proximity:0},bounds:null,showBoundingBox:!1,currentModifiers:{},validIntentKeys:{},pointerInsideShape:!1,closestPoint:null,transitionModifiers:null,selectedStamp:null,bezierLines:[],boxMode:!1,fixedAspectRatio:!1,cursor:"",enabledTools:["pointer","pen","box","lineBox","stamp","hand","line","pencil"],canDelete:!0,canDeselect:!0,isToolSwitchingLocked:!1,currentTool:"box",snapEnabled:!1,snapToPoints:!1,snapToLines:!1,snapToIntersections:!1,snapToGrid:!1,snapToParallel:!1};function Zt({events:e,enabledTools:t,keyboardShortcutMapping:o,keyboardShortcutsEnabled:n=!1,debug:i}){let r=on((a,l)=>{let m=null,c=tn({emitter:e,keyboardShortcutsEnabled:n,keyboardShortcutMapping:o,enabledTools:t,customSetState:d=>{i&&console.log("partial state",d),a(u=>({polygonState:{...u.polygonState,...d}}))}},d=>{a(u=>u.tool.requestId?{polygon:{...d,id:u.tool.requestId}}:{polygon:{id:void 0,points:[],open:!0}}),e.emit("atlas.polygon-update",d)});return{mode:"explore",tool:{enabled:!1,requestId:null,canvasId:null},runtime:null,requestType:null,requests:{},history:c.history,polygon:null,validRequestIds:[],metadata:{},stableViewport:null,canvasRelativePositions:{},canvasViewports:{},polygons:c,polygonState:nn,setMetadata:(d,u)=>{let g=u||l().tool.requestId;g&&a(x=>({metadata:{...x.metadata,[g]:{...x.metadata[g]||{},...d}}}))},setToolCanvasId:d=>{a(u=>({tool:{...u.tool,canvasId:d}}))},switchTool:{pointer(){a({mode:"sketch"}),s.tools.setTool("pointer")},hand(){a({mode:"explore"}),s.tools.setTool("hand")},draw(){a({mode:"sketch"}),s.tools.setTool("pencil")},pen(){a({mode:"sketch"}),s.tools.setTool("pen")},line(){a({mode:"sketch"}),s.tools.setTool("line")},lineBox(){a({mode:"sketch"}),s.tools.setTool("lineBox")},box(){a({mode:"sketch"}),s.tools.setTool("box")},triangle(){a({mode:"sketch"}),s.tools.setTool("stamp"),s.stamps.triangle()},hexagon(){a({mode:"sketch"}),s.tools.setTool("stamp"),s.stamps.hexagon()},circle(){a({mode:"sketch"}),s.tools.setTool("stamp"),s.stamps.circle()},remove(){let d=l();d.tool.requestId&&(c.setShape({points:[],open:!0}),d.cancelRequest(d.tool.requestId))}},reset:()=>{let d=l();d.tool.requestId&&d.cancelRequest(d.tool.requestId)},setPolygonState:d=>a({polygonState:typeof d=="function"?d(l().polygonState):d}),getRequestId:()=>{let d=Math.random().toString(36).slice(2);return a(u=>({validRequestIds:[...u.validRequestIds,d]})),{requestId:d,clear:()=>{l().tool.requestId,a(u=>({tool:u.tool.requestId===d?{enabled:!1,requestId:null,canvasId:null}:u.tool,validRequestIds:u.validRequestIds.filter(g=>g!==d)}))}}},cancelRequest:d=>{let u=d||l().tool.requestId;u&&(a(g=>({mode:"explore",tool:g.tool.requestId===u?{enabled:!1,requestId:null,canvasId:null}:g.tool,validRequestIds:g.validRequestIds.filter(x=>x!==u)})),e.emit("atlas.request-cancelled",{id:u}))},requestAnnotation:async(d,u)=>{let x={...l().requests,[u.requestId]:d},h=Xt(d);i&&console.log("requestAnnotation",{response:h,request:d});try{let{points:C=[],open:P=!0}=h.polygon||{},{requestId:S,canvasId:T=null,toolId:p}=u,v=p,R=l(),K=R.validRequestIds.includes(S),E=h.requestType;return i&&console.log("setting points",{requestType:E,points:C,open:P}),!K||R.tool.enabled?null:(c.setShape({id:S,points:C,open:P}),E==="polygon"&&(v=v||"pen",c.tools.setTool("pen")),E==="draw"&&(v=v||"draw",c.tools.setTool("pencil")),E==="box"&&(v=v||"box",c.tools.setTool("box")),E==="target"?(v=v||"box",c.tools.setTool("box"),c.lockAspectRatio(),c.tools.lockToolSwitching(),c.tools.setCanDeselect(!1),c.tools.setCanDelete(!1)):(c.tools.unlockToolSwitching(),c.tools.setCanDeselect(!0),c.tools.setCanDelete(!0)),d.bounds&&c.setBounds(d.bounds),e.emit("atlas.annotation-request",{id:S}),a({polygon:{id:S,points:C,open:P},mode:"sketch",requestType:E,tool:{enabled:!0,requestId:S,canvasId:T},requests:x}),v?R.switchTool[v]?.():C.length===0&&R.switchTool.box(),(typeof d.selectByDefault>"u"&&C.length&&E==="box"||d.selectByDefault)&&R.switchTool.pointer(),new Promise(J=>{let j=D=>{D.id===S&&(a(y=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(y.requests).filter(([b])=>b!==S))})),e.off("atlas.request-cancelled",j),e.off("atlas.annotation-completed",q),J(null))},q=D=>{D.id===S&&(a(y=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(y.requests).filter(([b])=>b!==S))})),e.off("atlas.annotation-completed",q),e.off("atlas.request-cancelled",j),J(D))};e.on("atlas.request-cancelled",j),e.on("atlas.annotation-completed",q)}))}catch(C){return console.error(C),null}},completeRequest:d=>{let u=l().tool.requestId;if(typeof d=="string"&&d&&d!==u)return;let g=u?l().requests[u]?.arguments||{}:{},x=u?l().metadata[u]||{}:{},h=l().polygonState.bounds,C=l().polygon;C&&(e.emit("atlas.annotation-completed",{id:C.id,polygon:C,requestType:l().requestType,target:et(C,h),canvasId:l().tool.canvasId,boundingBox:pe(C),metadata:x,arguments:{...g}}),c.setShape(null))},setAtlasRuntime:d=>{m=d,e.emit("atlas.ready",{runtime:d}),s.setScale(1/m._lastGoodScale),m.world.addLayoutSubscriber((u,g)=>{(u==="event-activation"||u==="zoom-to"||u==="go-home")&&m?._lastGoodScale&&!Number.isNaN(m._lastGoodScale)&&s.setScale(1/m._lastGoodScale)}),a({runtime:m})},clearAtlasRuntime:()=>{m=null,a({stableViewport:null,runtime:null})},setCanvasRelativePosition:(d,u)=>{a(g=>({canvasRelativePositions:{...g.canvasRelativePositions,[d]:u}}))},clearCanvasRelativePosition:d=>{a(u=>{let g={...u.canvasRelativePositions};return delete g[d],{canvasRelativePositions:g}})},changeMode:d=>{a({mode:d})},nudgeLeft:d=>{if(!m)return;let u=m.getViewport(),g=d??u.width*.1;m.world.gotoRegion({x:u.x-g,y:u.y,width:u.width,height:u.height,nudge:!0})},nudgeRight:d=>{if(!m)return;let u=m.getViewport(),g=d??u.width*.1;m.world.gotoRegion({x:u.x+g,y:u.y,width:u.width,height:u.height,nudge:!0})},nudgeUp:d=>{if(!m)return;let u=m.getViewport(),g=d??u.height*.1;m.world.gotoRegion({x:u.x,y:u.y-g,width:u.width,height:u.height,nudge:!0})},nudgeDown:d=>{if(!m)return;let u=m.getViewport(),g=d??u.height*.1;m.world.gotoRegion({x:u.x,y:u.y+g,width:u.width,height:u.height,nudge:!0})},zoomIn:()=>{m?.world?.zoomIn()},zoomOut:()=>{m?.world?.zoomOut()},goHome:()=>{m?.world?.goHome()},goToRegion:d=>{m?.world?.gotoRegion(d)},getRuntime:()=>m}}),s=r.getState().polygons;return e.on("atlas.annotation-request",()=>{s.clock.start((a,l,m)=>{e.emit("atlas.polygon-render",{state:a,slowState:l,dt:m})},a=>{typeof a=="object"?r.setState({polygonState:a}):r.setState(l=>({polygonState:a(l.polygonState)}))})}),e.on("atlas.annotation-completed",()=>{s.clock.stop()}),e.on("atlas.request-cancelled",()=>{s.clock.stop()}),r}import{jsx as Kt}from"react/jsx-runtime";var ce=an(null);function N(){return Jt(ce)}var tt={};function Qt(e="atlas"){return tt[e]?.getState()}function xe({children:e,name:t="atlas",existing:o,atlasStoreConfig:n}){let i=kt(),r=Jt(ce),s=ln(()=>o||r||Zt({events:i,...n||{}}),[i,o,r]),a=dn(s,l=>l.mode);return sn(()=>{let l=t;return l&&(tt[l]=s),()=>{l&&delete tt[l]}},[s,t]),Kt(ce.Provider,{value:s,children:Kt(rn.Provider,{value:a||"explore",children:e})})}import{mergeStyles as Ve}from"@atlas-viewer/atlas";import{useMemo as mn}from"react";import{useCallback as cn}from"react";import{HTMLPortal as un,useResizeWorldItem as pn}from"@atlas-viewer/atlas";import{useMemo as U}from"react";import{Fragment as ot,jsx as z,jsxs as nt}from"react/jsx-runtime";function eo({handleSize:e,resizable:t,onSave:o,children:n,maintainAspectRatio:i,disableCardinalControls:r,aspectRatio:s,...a}){let l=typeof e>"u"?i?12:8:e,{portalRef:m,mode:f,mouseEvent:c,isEditing:d}=pn({x:a.x||0,y:a.y||0,width:a.width,height:a.height,aspectRatio:s,maintainAspectRatio:i},o),u=U(()=>c("translate"),[c]),g=U(()=>c("east"),[c]),x=U(()=>c("west"),[c]),h=U(()=>c("south"),[c]),C=U(()=>c("north"),[c]),P=U(()=>c("south-east"),[c]),S=U(()=>c("south-west"),[c]),T=U(()=>c("north-east"),[c]),p=U(()=>c("north-west"),[c]),v=f==="sketch",R={zIndex:999,boxShadow:"0px 2px 3px 0 rgba(0,0,0,0.2)",outline:"2px solid rgba(155,155,155,.7)",borderRadius:i||r?"50%":2,position:"absolute",background:"#fff",pointerEvents:d?"none":v?"initial":"none"};return z(ot,{children:nt("world-object",{...a,children:[n,v&&t?z(un,{ref:m,target:{x:0,y:0,height:a.height,width:a.width},relative:!0,interactive:!1,children:v&&t?nt(ot,{children:[z("div",{onMouseDown:u,onTouchStart:u,style:{display:"block",width:"100%",height:"100%",cursor:"move",border:"1px solid rgba(255,255,255, .7)",outline:"2px solid rgba(155,155,155, .7)",boxSizing:"border-box",pointerEvents:d?"none":v?"initial":"none"}}),i?null:nt(ot,{children:[z("div",{title:"east",onTouchStart:g,onMouseDown:g,style:{...R,cursor:"e-resize",height:l*2,width:l,right:0,top:"50%",opacity:r?0:1,transform:`translate(${l/2}px, -${l}px)`}}),z("div",{title:"west",onMouseDown:x,style:{...R,cursor:"w-resize",position:"absolute",height:l*2,width:l,left:0,top:"50%",opacity:r?0:1,transform:`translate(-${l/2}px, -${l}px)`}}),z("div",{title:"north",onMouseDown:C,style:{...R,cursor:"n-resize",position:"absolute",height:l,width:l*2,left:"50%",top:0,opacity:r?0:1,transform:`translate(-${l}px, -${l/2}px)`}}),z("div",{title:"south",onMouseDown:h,style:{...R,cursor:"s-resize",position:"absolute",height:l,width:l*2,left:"50%",bottom:0,opacity:r?0:1,transform:`translate(-${l}px, ${l/2}px)`}})]}),z("div",{title:"north-east",onMouseDown:T,style:{...R,cursor:"ne-resize",position:"absolute",height:l,width:l,right:0,top:0,transform:`translate(${l/2}px, -${l/2}px)`}}),z("div",{title:"south-east",onMouseDown:P,style:{...R,cursor:"se-resize",position:"absolute",height:l,width:l,bottom:0,right:0,transform:`translate(${l/2}px, ${l/2}px)`}}),z("div",{title:"south-west",onMouseDown:S,style:{...R,cursor:"sw-resize",position:"absolute",height:l,width:l,bottom:0,left:0,transform:`translate(-${l/2}px, ${l/2}px)`}}),z("div",{title:"north-west",onMouseDown:p,style:{...R,cursor:"nw-resize",position:"absolute",height:l,width:l,top:0,left:0,transform:`translate(-${l/2}px, -${l/2}px)`}})]}):null}):null]})})}import{jsx as to}from"react/jsx-runtime";function oo({id:e,interactive:t,region:o,onClick:n,onHover:i,onSave:r,aspectRatio:s,maintainAspectRatio:a,disableCardinalControls:l,isEditing:m,style:f={backgroundColor:"rgba(0,0,0,.5)"}}){let c=cn(d=>{m&&r?.({id:o.id,x:o.x,y:o.y,height:o.height,width:o.width,...d})},[r,m,o.id,o.x,o.y,o.height,o.width]);return to(eo,{id:e,x:o.x,y:o.y,width:o.width,aspectRatio:s,height:o.height,resizable:m,onSave:c,maintainAspectRatio:a,disableCardinalControls:l,children:to("box",{interactive:t,onClick:d=>{d.preventDefault(),d.stopPropagation(),n?.(o)},relativeStyle:!0,onMouseEnter:()=>{i?.(o)},target:{x:0,y:0,width:o.width,height:o.height},style:f})})}import{jsx as gn}from"react/jsx-runtime";var me=({id:e,style:t,className:o,interactive:n,targetId:i,ignoreTargetId:r})=>{let s=Bt({id:e}),a=se(s,"atlas"),l=se(s,"html"),m=Et(s,["atlas"]),f=$(),c=Vt(),d=mn(()=>Ve(Ve(Ve(Ve(t,a),s?.motivation?.includes("highlighting")?c.highlighted:c.default),s?.target?.selector?.boxStyle||{})),[t,a,c,s?.motivation,s?.target]),u=i||f?.id;return f&&s&&s.target&&s.target.selector&&(s.target.selector.type==="BoxSelector"||s.target.selector.type==="SvgSelector")&&s.target.source&&(r?!0:s.target.source.id===u||s.target.source===u)?gn(oo,{id:s.id,isEditing:!0,region:s.target.selector.spatial,style:d,className:l?.className||o,interactive:!!(l?.href||n),href:l?.href||null,title:l?.title||null,hrefTarget:l?.target||null,onClick:()=>{},...m}):null};import{Fragment as fn}from"react";import{jsx as no}from"react/jsx-runtime";var X=({className:e,page:t,targetId:o,ignoreTargetId:n})=>{let i=Ot({id:t.id})||t,r=se(i,"atlas"),s=se(i,"html");return Pt(a=>i.id?a.iiif.entities.AnnotationPage[i.id]:null,[]),no(fn,{children:i.items?.map(a=>no(me,{id:a.id,style:r,className:s?.className||e,targetId:o,ignoreTargetId:n},a.id))})};import{createContext as ro,useContext as yn,useEffect as hn}from"react";var rt=ro(()=>{}),it=ro(()=>{});function V(e,t,o,n,i=[]){let r=yn(e==="portal"?it:rt);hn(()=>(e!=="none"&&r(t,o,n),()=>{r(t,null)}),[t,e,r,...i])}import{jsx as vn,jsxs as xn}from"react/jsx-runtime";function at({media:e,startTime:t,children:o}){let[{element:n,currentTime:i,progress:r},s,a]=le({duration:e.duration}),l=t?`${e.url}#t=${t}`:e.url;return xn(Ie,{state:s,actions:a,currentTime:i,progress:r,element:n,children:[vn("audio",{ref:n,src:l}),o]},e.url)}function Be({media:e,mediaControlsDeps:t,audioCopmonent:o=at,children:n}){let i=Ae();return V("portal","audio",o,{media:e,startTime:i?i.startTime:null,children:n},[e,i,...t||[]]),null}import{Fragment as Cn,jsx as st,jsxs as Sn}from"react/jsx-runtime";function lt({model:e}){return Sn(Cn,{children:[st("style",{children:`
|
|
2
|
+
.model-container {
|
|
3
|
+
position: absolute;
|
|
4
|
+
top: 0;
|
|
5
|
+
bottom: 0;
|
|
6
|
+
left: 0;
|
|
7
|
+
right: 0;
|
|
8
|
+
background: #000;
|
|
9
|
+
z-index: 13;
|
|
10
|
+
display: flex;
|
|
11
|
+
justify-content: center;
|
|
12
|
+
pointer-events: visible;
|
|
13
|
+
}
|
|
14
|
+
`}),st("div",{className:"model-container",children:st("model-viewer",{"interaction-prompt":"none",style:{width:"100%",height:"100%"},"camera-controls":"","ar-status":"not-presenting",src:e.id})})]})}function Ee({model:e,name:t}){return V("overlay",`model-${t}`,lt,{model:e},[e]),null}import{jsx as bn}from"react/jsx-runtime";function io(){let{strategy:e}=A();return e.type!=="3d-model"?null:bn(Ee,{model:e.model})}import{Fragment as Rn,jsx as Oe,jsxs as Pn}from"react/jsx-runtime";function ao(){let{strategy:e}=A(),{renderViewerControls:t,viewControlsDeps:o}=O(),n=ee(),i=Lt(n),r=de(n),s=i?.type==="Canvas",a=r?.type==="Canvas";return Pn(Rn,{children:[e.type==="media"&&e.media.type==="Sound"&&s?Oe(ne,{canvas:i.id,children:Oe(ie,{renderViewerControls:t,viewControlsDeps:o})}):null,e.type==="media"&&e.media.type==="Sound"&&a&&!s?Oe(ne,{canvas:r.id,children:Oe(ie,{renderViewerControls:t,viewControlsDeps:o})}):null]})}import{Fragment as wn,jsx as so,jsxs as Tn}from"react/jsx-runtime";function lo({children:e}){let{strategy:t}=A(),[o]=Ht();return t.type!=="images"?null:Tn(wn,{children:[o?so(X,{page:o}):null,t.annotations&&t.annotations.pages?t.annotations.pages.map(n=>so(X,{page:n},n.id)):null,e]})}import{jsx as uo}from"react/jsx-runtime";function ge({x:e=0,y:t=0}){let o=$(),n=ke({maxWidth:256,maxHeight:256});return!o||!n||n.type!=="fixed"?null:uo("world-object",{height:o.height,width:o.width,x:e,y:t,children:uo("world-image",{uri:n.id,target:{x:0,y:0,width:o.width,height:o.height},display:n.width&&n.height?{width:n.width,height:n.height}:void 0,crop:void 0})})}import{jsx as In,jsxs as An}from"react/jsx-runtime";function po({as:e}){let{strategy:t}=A(),{renderMediaControls:o,mediaControlsDeps:n}=O();return t.type!=="media"||t.media.type!=="Sound"?null:An(Be,{media:t.media,mediaControlsDeps:n,audioCopmonent:e,children:[In(ge,{}),o?o(t):null]},t.media.url)}import{HTMLPortal as Nn}from"@atlas-viewer/atlas";import{useEffect as Ln,useId as Hn,useState as $n}from"react";import{HTMLPortal as Bn}from"@atlas-viewer/atlas";import fe,{useMemo as dt}from"react";import{jsx as G}from"react/jsx-runtime";var mo=fe.createContext("en"),go=fe.createContext({}),fo=fe.createContext(null);function Ba(e){return G(go.Provider,{value:e.translations,children:e.children})}function Ea(e){return G(mo.Provider,{value:e.language,children:e.children})}function Oa(e){return G(fo.Provider,{value:e.convert,children:e.children})}function yo(){return fe.useContext(fo)}function ut(){return fe.useContext(mo)}function ho(){return fe.useContext(go)}function co(e){return e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):e}function kn({as:e,language:t,children:o,viewingDirection:n,...i}){let r=ut(),s=t!=="none"&&t!=="@none";return dt(()=>co(r)===co(t),[r,t])||!s?e?G(e,{...i,children:o}):G("span",{...i,children:o}):e?G(e,{...i,lang:t,dir:n,children:o}):G("span",{...i,lang:t,dir:n,children:o})}function vo(e,t,o){if(t.length===0)return;if(t.length===1)return t[0];if(t.indexOf(e)!==-1)return e;let n=e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):null;if(n&&t.indexOf(n)!==-1)return n;for(let i of o)if(t.indexOf(i)!==-1)return i;return t.indexOf("none")!==-1?"none":t.indexOf("@none")!==-1?"@none":t[0]}var Mn=(e,t=[])=>{let o=ut();return dt(()=>{let n=e();return vo(o,n,[])},[o,...t])};function ae(e,t,o,n){return t?o?o(e[t]||t,n||"none"):e[t]||t:""}function Vn(e,t,o=`
|
|
15
|
+
`,n={}){let i=yo(),r=Mn(()=>typeof e=="string"?[]:Object.keys(e||{}),[e]);return[dt(()=>{if(!e)return ae(n,t,i)||"";if(typeof e=="string")return ae(n,e,i);let s=r?e[r]:void 0;return s?typeof s=="string"?s:s.map(a=>ae(n,a,i,r)).join(o):""},[r,t,e]),r]}function Na(){let e=ut(),t=ho(),o=yo();return function(i,r="",s=`
|
|
16
|
+
`,a=t){let l=Object.keys(i||{}),m=vo(e,l,[]);if(!i)return ae(a,r,o)||"";if(typeof i=="string")return ae(a,i,o);let f=m?i[m]:void 0;return f?typeof f=="string"?ae(a,f,o,m):f.map(c=>ae(a,c,o,m)).join(typeof s<"u"?s:`
|
|
17
|
+
`):""}}function Ce({as:e,defaultText:t,enableDangerouslySetInnerHTML:o,children:n,separator:i,...r}){let s=ho(),[a,l]=Vn(n,t,i,s);return l?G(kn,{...r,as:e,language:l,title:o?void 0:a,dangerouslySetInnerHTML:o?{__html:a}:void 0,children:o?void 0:a}):e?G(e,{...r,children:a}):G("span",{...r,title:o?void 0:a,dangerouslySetInnerHTML:o?{__html:a}:void 0,children:o?void 0:a})}import{Fragment as xo,jsx as Se}from"react/jsx-runtime";function Ne({strategy:e,onClickPaintingAnnotation:t}){return Se(xo,{children:e.items.map((o,n)=>Se(xo,{children:Se(Bn,{onClick:t?i=>{i.stopPropagation(),t(o.annotationId,o,i)}:void 0,target:o.target?.spatial||void 0,children:Se("div",{"data-textual-content":!0,children:Se(Ce,{enableDangerouslySetInnerHTML:!0,children:o.text})})},n)}))})}import{HTMLPortal as En}from"@atlas-viewer/atlas";import{jsx as ye,jsxs as On}from"react/jsx-runtime";function he({resource:e,heading:t,note:o,extra:n}){return n?ye(En,{target:{x:0,y:0,width:n.target?.spatial.width,height:n.target?.spatial.height},backgroundColor:"#333",relative:!0,children:ye("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:On("div",{children:[ye(Ce,{children:t||"Not authorised"}),o&&ye("p",{children:ye(Ce,{children:o})}),ye("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}import{jsx as te}from"react/jsx-runtime";function qn({item:e,visible:t,controller:o}){let[n,i]=$n(null);return Ln(()=>n&&o?o.attachMediaElement(e.annotationId,n):void 0,[o,e.annotationId,e.url,n]),te(Nn,{target:"spatial"in e.target?e.target.spatial:void 0,children:e.type==="Video"?te("video",{ref:i,src:e.url,style:{height:"100%",width:"100%",opacity:t?1:0,pointerEvents:t?void 0:"none"}}):te("audio",{ref:i,src:e.url})})}var Dn={Auth:he,Media:qn,Text:({item:e})=>te(Ne,{strategy:{type:"textual-content",items:[e]}}),Highlight:({id:e})=>te(me,{id:e,ignoreTargetId:!0,style:{outline:"3px solid red"},className:"image-service-annotation"})};function zn({children:e}){let t=Dt(),o=Hn();return V("portal",`timeline-controls-${o}`,qt,{store:t,children:e},[t,e]),null}function Co({strategy:e,children:t,imageOptions:o}){return te(re,{presentation:Dn,children:te(Ft,{strategy:e,imageOptions:o,children:te(zn,{children:t})})})}import{jsx as Fn}from"react/jsx-runtime";function So({imageOptions:e}={}){let{strategy:t}=A(),{renderComplexTimelineControls:o}=O();return t.type!=="complex-timeline"?null:Fn(Co,{strategy:t,imageOptions:e,children:o?o(t):null})}import{jsx as pt}from"react/jsx-runtime";var Wn={Auth:he,AnnotationPage:({page:e})=>pt(X,{page:e,className:"image-service-annotation",ignoreTargetId:!0})};function bo(e){let{strategy:t}=A(),{renderViewerControls:o,viewControlsDeps:n}=O(),i=$(),r=Me();return V(r&&t.type==="images"&&o?"overlay":"none",`canvas-portal-controls-${i?.id}`,ue.Provider,o?{value:r||null,children:o(t)}:{},[i,r,t,...n||[]]),pt(re,{presentation:Wn,children:pt(Yt,{...e})})}import{Fragment as Yn,jsx as Gn,jsxs as _n}from"react/jsx-runtime";function Ro({onClickPaintingAnnotation:e,children:t}){let{strategy:o}=A(),{renderViewerControls:n,viewControlsDeps:i}=O(),r=Me(),s=$();return V(r&&o.type==="textual-content"&&n?"overlay":"none",`canvas-portal-controls-${s?.id}`,ue.Provider,n?{value:r||null,children:n(o)}:{},[s,r,o,...i||[]]),o.type!=="textual-content"?null:_n(Yn,{children:[Gn(Ne,{strategy:o,onClickPaintingAnnotation:e}),t]})}import{jsx as Po,jsxs as jn}from"react/jsx-runtime";function ct({element:e,media:t,startTime:o,playPause:n,poster:i}){let r="div",s=o?`${t.url}#t=${o}`:t.url;return jn(r,{className:"video-container",part:"video-container",onClick:n,children:[Po("style",{children:`
|
|
18
|
+
.video-container {
|
|
19
|
+
position: absolute;
|
|
20
|
+
top: 0;
|
|
21
|
+
bottom: 0;
|
|
22
|
+
left: 0;
|
|
23
|
+
right: 0;
|
|
24
|
+
background: #000;
|
|
25
|
+
z-index: 13;
|
|
26
|
+
display: flex;
|
|
27
|
+
justify-content: center;
|
|
28
|
+
pointer-events: visible;
|
|
29
|
+
}
|
|
30
|
+
`}),Po("video",{poster:i,ref:e,src:s,style:{width:"100%",objectFit:"contain"}})]})}function Le({media:e,mediaControlsDeps:t,children:o,posterCanvasId:n,videoComponent:i=ct,captions:r}){let s=ee(),a=Ae(),l=de(s),m=n||(l?.type==="Canvas"?l.id:void 0),f=ke({},!1,{canvasId:m}),[{element:c,currentTime:d,progress:u},g,x]=le({duration:e.duration});return V("overlay","video-element",i,{element:c,media:e,playPause:x.playPause,poster:f?.id,canvas:s,startTime:a?a.startTime:null,captions:r},[f,s,e,a,x.playPause,r]),V("portal","custom-controls",Ie,{state:g,actions:x,currentTime:d,progress:u,element:c,children:o},[d,g,e,...t||[]]),null}import{jsx as Un,jsxs as Xn}from"react/jsx-runtime";function wo({as:e}){let{strategy:t}=A(),{renderMediaControls:o,mediaControlsDeps:n}=O();return t.type!=="media"||t.media.type!=="Video"?null:Xn(Le,{captions:t.captions,media:t.media,mediaControlsDeps:n,videoComponent:e,children:[Un(ge,{}),o?o(t):null]},t.media.url)}import{useRef as Zn}from"react";import{jsx as To,jsxs as Qn}from"react/jsx-runtime";function Kn({element:e,media:t,playPause:o}){let n=Zn(null);return t.youTubeId?Qn("div",{className:"video-container",part:"video-container",onClick:o,children:[To("style",{children:`
|
|
31
|
+
.video-container {
|
|
32
|
+
position: absolute;
|
|
33
|
+
top: 0;
|
|
34
|
+
bottom: 0;
|
|
35
|
+
left: 0;
|
|
36
|
+
right: 0;
|
|
37
|
+
background: #000;
|
|
38
|
+
z-index: 13;
|
|
39
|
+
display: flex;
|
|
40
|
+
justify-content: center;
|
|
41
|
+
pointer-events: visible;
|
|
42
|
+
}
|
|
43
|
+
.video-yt {
|
|
44
|
+
border: none;
|
|
45
|
+
width: 100%;
|
|
46
|
+
object-fit: contain;
|
|
47
|
+
}
|
|
48
|
+
`}),To("iframe",{title:`YouTube video: ${t.youTubeId}`,className:"video-yt",ref:n,src:`https://www.youtube.com/embed/${t.youTubeId}?enablejsapi=1&origin=${Jn()}&modestbranding=1&rel=0`,referrerPolicy:"no-referrer compute-pressure",sandbox:"allow-scripts allow-same-origin allow-presentation"})]}):null}function Jn(){return typeof window<"u"?window.location.host:""}function Io({media:e,mediaControlsDeps:t,children:o}){let[{element:n,currentTime:i,progress:r},s,a]=le({duration:e.duration});return V("overlay","video-element",Kn,{element:n,media:e,playPause:a.playPause}),null}import{jsx as er,jsxs as tr}from"react/jsx-runtime";function Ao(){let{strategy:e}=A(),{renderMediaControls:t,mediaControlsDeps:o}=O();return e.type!=="media"||e.media.type!=="VideoYouTube"?null:tr(Io,{media:e.media,mediaControlsDeps:o,children:[er(ge,{}),t?t(e):null]})}import{startTransition as Lr,useMemo as Hr}from"react";import{useStore as _}from"zustand";import{HTMLPortal as ar,useAtlas as sr}from"@atlas-viewer/atlas";import{useCallback as ft,useEffect as yt,useRef as lr}from"react";import{createSvgHelpers as or}from"polygon-editor";import{useEffect as nr,useId as rr,useRef as Y,useState as Mo}from"react";import{useStore as mt}from"zustand";function ko(e){let t=N(),o=mt(t,r=>r.polygons),n=mt(t,r=>r.polygonState),i=mt(t,r=>r.polygon);return Mt("atlas.polygon-render",({state:r,slowState:s,dt:a})=>{e(r,s,a)}),{currentShape:i,state:n,helper:o}}import{Fragment as gt,jsx as w,jsxs as ve}from"react/jsx-runtime";var Z=or(),ir={shapeFill:"#ffffff33",shapeStroke:"#000",lineStroke:"#000",ghostLineStroke:"#0F0",activeLineStroke:"#4D7EEA",boundingBoxDottedStroke:"#0007",boundingBoxStroke:"#fffA",controlFill:"#fff"};function Vo(e){let{image:t}=e,o={...ir,...e.theme||{}},n=typeof window>"u"?1:window.devicePixelRatio||1,i=`svg-editor-${rr().replace(/:/g,"")}`,r={dot:`${i}-dot`,newdot:`${i}-newdot`,selected:`${i}-selected`,resizer:`${i}-resizer`},s=Y(),a=Y(),l=Y(),m=Y(),f=Y(),c=Y(),d=Y(),u=Y(),g=Y(),x=Y(),[h,C]=Mo(null),[P,S]=Mo(!1),{helper:T,state:p,currentShape:v}=ko((y,b)=>{if(y.closestLineIndex,Z.updateTransitionBoundingBox(l.current,y,b),Z.updateBoundingBoxPolygon(s.current,y,b),Z.updateBoundingBoxPolygon(a.current,y,b),Z.updateTransitionShape(d.current,y,b),Z.updateClosestLinePointTransform(f.current,y,b),Z.updateSelectBox(m.current,y,b),Z.updatePointLine(u.current,y,b),Z.updateDrawPreview(c.current,y,b,3),Z.updateLineBox(g.current,y),C(y.transitionDirection),S(y.transitionRotate),y.closestLineIndex!==-1&&x.current){let k=y.polygon,Q=k.points[y.closestLineIndex],H=k.points[(y.closestLineIndex+1)%k.points.length];Q&&H&&x.current.setAttribute("points",`${Q[0]},${Q[1]} ${H[0]},${H[1]}`)}});nr(()=>{let y=()=>{T.modifiers.reset()};return document.addEventListener("mouseleave",y),()=>{document.removeEventListener("mouseleave",y)}},[]);let R=ve(gt,{children:[ve("marker",{id:r.dot,viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:5*n,markerHeight:5*n,children:[w("circle",{cx:"5",cy:"5",r:"5",fill:o.lineStroke,className:"marker"}),w("circle",{cx:"5",cy:"5",r:"3",fill:o.controlFill})]}),w("marker",{id:r.newdot,viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:5*n,markerHeight:5*n,children:w("circle",{cx:"5",cy:"5",r:"5",fill:o.activeLineStroke,className:"marker"})}),ve("marker",{id:r.selected,viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:5*n,markerHeight:5*n,children:[w("circle",{cx:"5",cy:"5",r:"5",fill:o.lineStroke}),w("circle",{cx:"5",cy:"5",r:"3",fill:o.activeLineStroke})]}),ve("marker",{id:r.resizer,viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:6*n,markerHeight:6*n,children:[w("rect",{width:"10",height:"10",fill:o.lineStroke}),w("rect",{x:"1",y:"1",width:"8",height:"8",fill:o.controlFill})]})]}),K=v?v.open?"polyline":"polygon":null,E=!p.showBoundingBox&&p.closestPoint!==null&&p.actionIntentType==="select-point",J=p.actionIntentType==="add-open-point",j=p.transitionIntentType==="split-line",q=p.transitioning&&p.selectedStamp&&p.transitionIntentType==="stamp-shape",D=v&&K?ve(gt,{children:[w(K,{fill:(!p.transitioning||p.transitionIntentType==="select-multiple-points")&&!v.open?o.shapeFill:"none",strokeWidth:q||p.showBoundingBox&&p.boxMode||p.transitioning&&p.transitionIntentType==="split-line"||p.transitioning&&p.transitionIntentType==="move-point"?0:2,stroke:o.shapeStroke,points:v.points.map(y=>y.join(",")).join(" "),vectorEffect:"non-scaling-stroke",markerStart:p.showBoundingBox?void 0:`url(#${p.boxMode?r.resizer:r.dot})`,markerMid:p.showBoundingBox?void 0:`url(#${p.boxMode?r.resizer:r.dot})`,markerEnd:p.showBoundingBox?void 0:`url(#${p.boxMode?r.resizer:r.dot})`,style:{pointerEvents:"none"},opacity:p.transitioning&&p.transitionIntentType==="move-shape"?0:1}),p.currentTool==="lineBox"&&p.actionIntentType==="close-line-box"?w("polygon",{fill:o.shapeFill,ref:g,stroke:o.lineStroke,strokeWidth:2,vectorEffect:"non-scaling-stroke"}):null,p.transitionIntentType==="draw-shape"&&p.transitioning?w("polyline",{ref:c,fill:"none",stroke:o.activeLineStroke,strokeWidth:2,vectorEffect:"non-scaling-stroke"}):null,!(p.transitioning&&p.transitionIntentType==="move-point")&&!(p.transitioning&&p.transitionIntentType==="stamp-shape")&&!p.showBoundingBox&&p.selectedPoints&&p.selectedPoints.length?w("polyline",{strokeWidth:2,vectorEffect:"non-scaling-stroke",stroke:"transparent",markerStart:`url(#${r.selected})`,markerMid:`url(#${r.selected})`,markerEnd:`url(#${r.selected})`,fill:"transparent",points:v.points.filter((y,b)=>p.selectedPoints?.includes(b)).map(y=>y.join(",")).join(" "),opacity:p.transitioning&&p.transitionIntentType==="move-shape"?0:1}):null,E&&!p.transitioning&&p.closestPoint!==null&&v.points[p.closestPoint]?w("polyline",{strokeWidth:2,vectorEffect:"non-scaling-stroke",stroke:"transparent",markerStart:`url(#${r.selected})`,markerMid:`url(#${r.selected})`,markerEnd:`url(#${r.selected})`,fill:o.activeLineStroke,points:`${v.points[p.closestPoint][0]},${v.points[p.closestPoint][1]}`,opacity:p.transitioning&&p.transitionIntentType==="move-shape"?0:1}):null,!p.transitioning&&(p.actionIntentType==="add-open-point"||p.actionIntentType==="close-shape"||p.actionIntentType==="close-shape-line")?w("polyline",{stroke:o.activeLineStroke,ref:u,strokeWidth:p.actionIntentType==="add-open-point"?1:2,vectorEffect:"non-scaling-stroke"}):null,p.hasClosestLine&&!p.showBoundingBox&&!p.transitioning&&p.currentTool!=="box"&&p.transitionIntentType==="split-line"?w("g",{children:w("polyline",{ref:x,vectorEffect:"non-scaling-stroke",fill:"transparent",stroke:o.activeLineStroke,strokeWidth:3})}):null,p.hasClosestLine&&!p.showBoundingBox&&!p.transitioning&&p.currentTool!=="box"&&p.transitionIntentType==="split-line"?w("g",{ref:f,children:w("polyline",{markerStart:`url(#${r.newdot})`,points:"0,0 1,1",vectorEffect:"non-scaling-stroke",stroke:"transparent",fill:"transparent",strokeWidth:2})}):null,p.transitioning?w(K,{ref:d,fill:v.open?"none":o.shapeFill,stroke:p.transitionIntentType==="stamp-shape"?o.activeLineStroke:o.shapeStroke,vectorEffect:"non-scaling-stroke",strokeWidth:(v.open,2)}):null,p.transitioning&&p.transitionIntentType==="select-multiple-points"?w("rect",{ref:m,fill:"rgba(255, 255, 255, .3)",strokeWidth:1,stroke:"rgba(0,0,0,.2)",vectorEffect:"non-scaling-stroke"}):null,p.showBoundingBox&&!q?ve(gt,{children:[w("polygon",{ref:s,strokeWidth:2,stroke:o.boundingBoxStroke,fill:"none",markerStart:`url(#${r.resizer})`,markerMid:`url(#${r.resizer})`,markerEnd:`url(#${r.resizer})`,vectorEffect:"non-scaling-stroke"}),w("polygon",{ref:a,strokeWidth:2,stroke:o.boundingBoxDottedStroke,fill:"none",strokeDasharray:"4 4",markerStart:`url(#${r.resizer})`,markerMid:`url(#${r.resizer})`,markerEnd:`url(#${r.resizer})`,vectorEffect:"non-scaling-stroke"})]}):null]}):null;return{currentTool:T.state.slowState.currentTool,setCurrentTool:T.tools.setTool,helper:T,currentShape:v,state:p,isAddingPoint:J,isSplitting:j,isStamping:q,isHoveringPoint:E,transitionDirection:h,transitionRotate:P,defs:R,editor:D}}import{jsx as be,jsxs as dr}from"react/jsx-runtime";function Bo(e){let t=sr(),o=lr(null),{image:n}=e,{helper:i,defs:r,editor:s,state:a,transitionDirection:l,isSplitting:m,transitionRotate:f,isHoveringPoint:c,isAddingPoint:d}=Vo({image:e.image,theme:e.theme}),u=ft(h=>{h.button!==2&&i.pointer([[~~h.atlas.x,~~h.atlas.y]])},[i]),g=ft(h=>{h.button!==2&&(o.current?.focus(),i.pointerDown())},[i]),x=ft(h=>{h.button!==2&&i.pointerUp()},[i]);return yt(()=>{let h=C=>{o.current?.contains(document.activeElement)&&i.key.up(C.key)};return document.addEventListener("keyup",h),()=>{document.removeEventListener("keyup",h)}},[i]),yt(()=>{let h=C=>{o.current?.contains(document.activeElement)&&(C.target&&["INPUT","TEXTAREA"].includes(C.target.tagName)||C.target?.isContentEditable||document.activeElement&&(document.activeElement instanceof HTMLInputElement||document.activeElement instanceof HTMLTextAreaElement||document.activeElement.isContentEditable)||i.key.down(C.key))};return document.addEventListener("keydown",h),()=>{document.removeEventListener("keydown",h)}},[i]),yt(()=>{let h=[];return l&&h.push(`atlas-cursor-${l}`),a.actionIntentType==="cut-line"&&a.modifiers?.Shift&&h.push("atlas-cursor-cut"),(c||a.transitionIntentType==="move-shape"||a.transitionIntentType==="move-point")&&h.push("atlas-cursor-move"),d&&h.push("atlas-cursor-crosshair"),m&&h.push("atlas-cursor-copy"),f&&h.push("atlas-cursor-rotate"),a.transitionIntentType==="draw-shape"&&h.push("atlas-cursor-draw"),t?.canvas&&t.canvas.classList.add(...h),()=>{t?.canvas&&t.canvas.classList.remove(...h)}},[t?.canvas,d,c,m,a.modifiers?.Shift,a.actionIntentType,a.transitionIntentType,l,f]),be("world-object",{height:n.height,width:n.width,onMouseMove:u,onMouseDown:g,onMouseUp:x,onMouseLeave:i.blur,children:be(ar,{relative:!0,interactive:!1,children:be("div",{className:"absolute top-0 right-0 left-0 bottom-0",children:dr("svg",{ref:o,width:"100%",height:"100%",viewBox:`0 0 ${n.width} ${n.height}`,tabIndex:-1,children:[be("title",{children:"Annotation Editor"}),be("defs",{children:r}),s]})})})})}import{useCallback as Vr}from"react";import{create as Br}from"zustand";import{HTMLPortal as hr}from"@atlas-viewer/atlas";import{autoUpdate as vr,detectOverflow as xr,flip as Cr,offset as Sr,shift as br,useDismiss as Rr,useFloating as Pr,useInteractions as wr}from"@floating-ui/react";import{createPortal as Tr}from"react-dom";import gr,{useContext as B,useMemo as fr}from"react";import{createContext as ur,useContext as pr,useMemo as cr}from"react";import{jsx as mr}from"react/jsx-runtime";var Re=ur("");function Eo({children:e,identifier:t}){let o=cr(()=>t??Math.random().toString(36).substring(2,9),[t]);return mr(Re.Provider,{value:o,children:e})}function He(){return pr(Re)}import{jsx as L}from"react/jsx-runtime";var Pe=gr.createContext({});function $e(){let e=B(Pe),t=Object.keys(e),o={};for(let n of t)e[n].Provider&&(o[n]={value:B(e[n]),Provider:e[n].Provider});return o}function yr(e){let t=Object.keys(e),o=e.children;for(let n of t){if(n==="children")continue;let{value:i,Provider:r}=e[n];o=L(r,{value:i,children:o})}return o}function Vl(e){let t=B(Pe),o=fr(()=>({...t,...e.providers}),[e.providers]);return L(Pe.Provider,{value:o,children:e.children})}function qe(){return{VaultContext:B(Rt),ResourceContext:B(bt),SimpleViewerReactContext:B(Ue),VisibleCanvasReactContext:B(Ye),AuthRContext:B(_e),SearchReactContext:B(je),ReactEventContext:B(Ke),ReactEmitterContext:B(Xe),ContextBridgeReactContext:B(Pe),StrategyReactContext:B(Ze),AtlasStoreReactContext:B(ce),ViewerIdentifierContext:B(Re)}}function De(e){return L(we,{vault:e.bridge.VaultContext.vault||void 0,resources:e.bridge.ResourceContext,children:L(Ye.Provider,{value:e.bridge.VisibleCanvasReactContext,children:L(Ue.Provider,{value:e.bridge.SimpleViewerReactContext,children:L(Ke.Provider,{value:e.bridge.ReactEventContext,children:L(Xe.Provider,{value:e.bridge.ReactEmitterContext,children:L(ce.Provider,{value:e.bridge.AtlasStoreReactContext,children:L(_e.Provider,{value:e.bridge.AuthRContext,children:L(je.Provider,{value:e.bridge.SearchReactContext,children:L(Re.Provider,{value:e.bridge.ViewerIdentifierContext,children:L(Pe.Provider,{value:e.bridge.ContextBridgeReactContext,children:L(Ze.Provider,{value:e.bridge.StrategyReactContext,children:e.custom?L(yr,{...e.custom,children:e.children}):e.children})})})})})})})})})})})}import{jsx as ht,jsxs as Mr}from"react/jsx-runtime";var Lo=10,Oo=1;function Ir(e){let[t,o]=e.split("-");return[t,o]}function No(e,t,o){return t>o?e:Math.min(Math.max(e,t),o)}function Ar(e){return e.top>0||e.right>0||e.bottom>0||e.left>0}function kr(e){return{name:"insideHighlightFallback",options:e,async fn(t){if(e.width<=Oo||e.height<=Oo)return{};let o=await xr(t,{altBoundary:!0});if(!Ar(o))return{};let{reference:n,floating:i}=t.rects,[r,s]=Ir(t.initialPlacement),a=Math.min(Lo,n.width/2,n.height/2),l=n.x+(n.width-i.width)/2,m=n.y+(n.height-i.height)/2,f=t.x,c=t.y;return r==="top"||r==="bottom"?(c=r==="top"?n.y+a:n.y+n.height-i.height-a,s==="start"?f=n.x+a:s==="end"?f=n.x+n.width-i.width-a:f=l,f=No(f,n.x+a,n.x+n.width-i.width-a)):(f=r==="left"?n.x+a:n.x+n.width-i.width-a,s==="start"?c=n.y+a:s==="end"?c=n.y+n.height-i.height-a:c=m,c=No(c,n.y+a,n.y+n.height-i.height-a)),{x:f,y:c}}}}function ze({annotation:e,target:t,children:o,dismissable:n,isOpen:i,onOpenChange:r,placement:s}){let a=He(),l=qe(),m=$e(),{refs:f,floatingStyles:c,context:d}=Pr({open:i,onOpenChange:r,nodeId:e.id,placement:s||"bottom",middleware:[Sr(Lo),Cr({mainAxis:!0,fallbackStrategy:"bestFit",altBoundary:!0}),br({altBoundary:!0}),kr(t)],whileElementsMounted:vr}),u=Rr(d),{getReferenceProps:g,getFloatingProps:x}=wr([n?u:null].filter(h=>h!==null));return Mr(hr,{relative:!0,target:t,interactive:!1,children:[ht("div",{ref:f.setReference,...g(),style:{position:"absolute",top:0,left:0,right:0,bottom:0,pointerEvents:"none"}}),Tr(ht(De,{bridge:l,custom:m,children:ht("div",{ref:f.setFloating,style:c,...x(),children:o})}),document.getElementById(`atlas-floating-ui-${a}`))]})}import{Fragment as Or,jsx as Ho}from"react/jsx-runtime";var Er=Br()(e=>({isMenuOpen:!1,menuPosition:{x:0,y:0},setMenuPosition(t){e({menuPosition:t})},toggle(t){e(o=>({isMenuOpen:!o.isMenuOpen,menuPosition:t}))},open(t){e({isMenuOpen:!0,menuPosition:t})},setIsMenuOpen(t){e(typeof t=="function"?o=>({isMenuOpen:t(o.isMenuOpen)}):{isMenuOpen:t})},close(){e({isMenuOpen:!1})}}));function Fe(e,t,o){let{isMenuOpen:n,setIsMenuOpen:i,close:r,open:s,menuPosition:a,setMenuPosition:l,toggle:m}=Er(),f=Vr(u=>{o&&(u.preventDefault(),u.stopPropagation(),m(u.atlas))},[m,o]);return[Ho(Or,{children:o&&n&&Ho(ze,{dismissable:!0,placement:"bottom-start",isOpen:n,onOpenChange:i,annotation:{id:e},target:{x:a.x,y:a.y,height:1,width:1},children:n&&o({canvasId:t,position:a,close:()=>i(!1)})})}),{onContextMenu:f},{open:s,close:r,toggle:m,isMenuOpen:n,setIsMenuOpen:i,menuPosition:a,setMenuPosition:l}]}import{useStore as Nr}from"zustand";function $o(){let e=N();return Nr(e,t=>t.tool.requestId&&t.requests[t.tool.requestId]||null)}import{Fragment as qo,jsx as oe,jsxs as vt}from"react/jsx-runtime";function Do({theme:e,renderContextMenu:t,children:o}){let n=N(),i=$(),r=_(n,p=>p.polygon),s=_(n,p=>p.polygonState.currentTool),a=_(n,p=>p.mode),l=_(n,p=>p.changeMode),m=_(n,p=>p.polygonState.transitioning),{enabled:f,requestId:c}=_(n,p=>p.tool),d=Hr(()=>pe(r),[r]),u=$o(),[g,x]=Fe("editing-annotation",i?.id,t),h=u?.annotationPopup||o||oe($r,{}),C=u?.svgTheme||e,P=()=>{l("sketch")};if(!f||!i||!c||!r)return null;let S=d&&r.id&&!m&&(s==="pointer"||s==="hand"||!r.open)?oe(ze,{annotation:r,target:d,children:h}):null,T="shape";return a==="explore"?vt(qo,{children:[oe(T,{id:`shape-${r.id}`,points:r.points,open:r.open,onClick:P,relativeStyle:!0,target:{x:0,y:0,width:i.width,height:i.height},style:{":hover":{backgroundColor:"rgba(0,0,0,0.2)"},backgroundColor:"rgba(0,0,0,0)",borderWidth:"4px",borderColor:"rgba(255, 255, 255, .4)"},...x}),oe(T,{id:`shape-${r.id}`,points:r.points,open:r.open,onClick:P,relativeStyle:!0,target:{x:0,y:0,width:i.width,height:i.height},style:{backgroundColor:"rgba(0,0,0,0)",borderWidth:"2px",borderColor:"rgba(0, 0, 0, .4)"}}),S]}):vt(qo,{children:[t?oe(T,{id:`shape-${r.id}`,points:r.points,open:r.open,target:{x:0,y:0,width:i.width,height:i.height},...x}):null,oe(Bo,{image:i,theme:C}),S,g]})}function $r(){let e=N(),t=_(e,s=>s.changeMode),o=_(e,s=>s.mode),n=_(e,s=>s.completeRequest),i=_(e,s=>s.tool),r=()=>{Lr(()=>{n()})};return i.enabled?vt("div",{className:"svg-tools-container animate-fadeIn",children:[o!=="sketch"&&oe("button",{className:"svg-tools-button",onClick:()=>{t("sketch")},children:"Edit"}),oe("button",{className:"svg-tools-button",onClick:r,children:"Save"})]}):null}import{useCallback as qr,useEffect as Dr}from"react";import{jsxs as zr}from"react/jsx-runtime";function zo({renderContextMenu:e,children:t,...o}){let n=ee(),i=N(),[r,s]=Fe(`context-menu/${n?.id}`,n?.id,e),a=qr((l,m)=>{m?i.getState().setCanvasRelativePosition(l,m):i.getState().clearCanvasRelativePosition(l)},[i]);return Dr(()=>{n&&i.getState().reset()},[i,n]),zr(Ut,{...o,events:s,onPositionChange:a,children:[r,t]})}import{jsx as F,jsxs as Fo}from"react/jsx-runtime";function ie({x:e,y:t,onChoiceChange:o,registerActions:n,emitter:i,annotationPageManagerId:r,defaultChoices:s,isStatic:a,renderViewerControls:l,renderMediaControls:m,renderComplexTimelineControls:f,complexTimelineControlsDeps:c,viewControlsDeps:d,mediaControlsDeps:u,strategies:g,throwOnUnknown:x,rotation:h,backgroundStyle:C,alwaysShowBackground:P,keepCanvasScale:S=!1,enableSizes:T=!1,enableThumbnail:p,imageCandidates:v,format:R,useFloorCalc:K,renderOptions:E,style:J,enableYouTube:j=!0,onClickPaintingAnnotation:q,components:D={},children:y,annotationPopup:b,svgTheme:k,renderContextMenu:Q,renderAnnotationContextMenu:H}){let St={isStatic:a,enableSizes:T,enableThumbnail:p,imageCandidates:v,format:R,useFloorCalc:K,renderOptions:E,style:J};return Fo(_t,{throwOnUnknown:x,onChoiceChange:o,registerActions:n,emitter:i,annotationPageManagerId:r,strategies:g,defaultChoices:s,mediaControlsDeps:u,renderMediaControls:m,renderViewerControls:l,renderComplexTimelineControls:f,complexTimelineControlsDeps:c,viewControlsDeps:d,children:[Fo(zo,{keepCanvasScale:S,x:e,y:t,renderContextMenu:Q,children:[F(Gt,{alwaysShowBackground:P,backgroundStyle:C}),F(So,{imageOptions:St}),F(Ro,{}),F(bo,{...St,onClickPaintingAnnotation:q,rotation:h}),F(lo,{}),F(io,{}),F(po,{as:D.Audio}),F(wo,{as:D.Video}),j?F(Ao,{}):null,F(Do,{theme:k,renderContextMenu:H,children:b}),y]}),F(ao,{})]})}import{jsx as xt}from"react/jsx-runtime";var Fr={Auth:he,AnnotationPage:({page:e})=>xt(X,{page:e,className:"image-service-annotation",ignoreTargetId:!0})};function Wo(e){return xt(re,{presentation:Fr,children:xt(zt,{...e})})}import{jsx as Go}from"react/jsx-runtime";function Yo(e){let t=ee(),o=de(t);return o?.type!=="Canvas"?null:Go(ne,{canvas:o.id,children:Go(ie,{renderViewerControls:e.renderViewerControls})})}import{AtlasAuto as _r}from"@atlas-viewer/atlas";import Uo,{useCallback as We,useMemo as Zo,useState as Ge}from"react";import{ErrorBoundary as jr}from"react-error-boundary";import{useStore as Xo}from"zustand";import{useEffect as Wr,useMemo as Gr}from"react";function _o(e,t=2e3){let{currentSequenceIndex:o,sequence:n,items:i}=Te(),r=$(),s=Gr(()=>{let l=n[o]||[];return l.length===0&&r?[{id:r.id,type:"Canvas"}]:l.map(m=>i[m])},[n,o,r,i]),a=N();Wr(()=>{let m=setInterval(()=>{if(e&&t!==-1){let f={x:e.x,y:e.y,width:e.width,height:e.height},c=a.getState().canvasRelativePositions,d={};for(let u of s){let g=c[u.id];if(g){let x=g.x,h=g.y,C=g.width,P=g.height,S={x:Math.max(x,f.x),y:Math.max(h,f.y),width:Math.min(x+C,f.x+f.width)-Math.max(x,f.x),height:Math.min(h+P,f.y+f.height)-Math.max(h,f.y)};S.width<=0||S.height<=0||(d[u.id]={x:S.x-g.x,y:S.y-g.y,width:S.width,height:S.height}),a.setState({canvasViewports:d})}}}},t);return()=>{clearTimeout(m)}},[s,e,a,t])}import{jsx as Ct,jsxs as Yr}from"react/jsx-runtime";function jo({width:e,style:t,height:o,error:n,resetErrorBoundary:i}){return Yr("div",{style:{width:e,height:o,minHeight:500,...t||{},background:"#f9f9f9"},children:[Ct("h3",{children:"Error occurred"}),Ct("p",{children:n.message}),Ct("button",{type:"button",onClick:i,children:"Reset"})]})}import{Fragment as Xr,jsx as I,jsxs as Zr}from"react/jsx-runtime";function Ko(e){let t=N(),o=Zo(()=>e.name||Math.random().toString(36).substring(2,9),[e.name]);return I(Eo,{identifier:o,children:I(xe,{name:e.name,existing:t,children:I(Ur,{...e})})})}function Ur({name:e,children:t,errorFallback:o,outerContainerProps:n={},worldScale:i,updateViewportTimeout:r,...s}){let a=N(),l=He(),m=Xo(a,y=>y.mode),f=Xo(a,y=>y.setAtlasRuntime),[c,d]=Ge(),u=$e(),g=qe(),x=o||jo,[h,C]=Ge({}),P=Object.entries(h),[S,T]=Ge({}),p=Object.entries(S),[v,R]=Ge({}),{worldScale:K,runtimeOptions:E}=Zo(()=>{if(Object.values(v).length===0)return{worldScale:1,runtimeOptions:s.runtimeOptions||{maxOverZoom:1}};let b=Math.max(...Object.values(v));return{worldScale:b,runtimeOptions:{maxOverZoom:b||1,...s.runtimeOptions||{}}}},[v,s.runtimeOptions]);_o(c?.runtime,r);let J=We((y,b)=>{R(k=>{if(b===-1){let{[y]:Q,...H}=k;return H}return{...k,[y]:b}})},[]),j=We((y,b,k)=>{C(({[y]:Q,...H})=>b?{...H,[y]:{element:b,props:k}}:H)},[]),q=We((y,b,k)=>{T(({[y]:Q,...H})=>b?{...H,[y]:{element:b,props:k}}:H)},[]),D=We(y=>{d(y),f(y.runtime),s.onCreated&&s.onCreated(y)},[s.onCreated,f]);return Zr(jr,{resetKeys:[],fallbackRender:y=>I(x,{...s,...y}),children:[I(_r,{...s,mode:m,containerProps:{style:{position:"relative"},...s.containerProps||{}},htmlChildren:I(Xr,{children:P.map(([y,{element:b,props:k}])=>I(Uo.Fragment,{children:I(b,{...k||{}})},y))}),onCreated:D,runtimeOptions:E,children:I(xe,{name:e,existing:a,children:I(ue.Provider,{value:c,children:I(jt.Provider,{value:J,children:I(rt.Provider,{value:j,children:I(it.Provider,{value:q,children:I(De,{bridge:g,custom:u,children:I($t,{children:t})})})})})})})}),I("div",{children:p.map(([y,{element:b,props:k}])=>I(Uo.Fragment,{children:I(b,{...k||{}})},y))}),I("div",{id:`atlas-floating-ui-${l}`,className:"atlas-floating-ui",style:{position:"relative",zIndex:999999}})]})}import{Fragment as ei,jsx as W,jsxs as ti}from"react/jsx-runtime";var Qr=Jo(function(t,o){let n=It(),i=wt(),r=Te(),{ViewerControls:s,MediaControls:a,ComplexTimelineControls:l}=t.components||{};if(Kr(o,()=>r,[r]),!n)return W("div",{});let m=0,f=n.viewingDirection==="top-to-bottom",c=n.viewingDirection==="bottom-to-top",d=n.viewingDirection==="left-to-right",u=n.viewingDirection==="right-to-left",x=n.behavior.includes("continuous")?0:t.spacing||0,h=c||u,C=Jr(()=>h?[...i].reverse():i,[i,h]);return ti(ei,{children:[t.header,W(M.Viewer,{height:t.height,mode:t.mode,renderPreset:t.renderPreset,runtimeOptions:t.runtimeOptions,updateViewportTimeout:t.updateViewportTimeout,homePaddingPx:t.padding,children:C.map((P,S)=>{let{width:T,height:p}=Nt(P),v=0,R=0;return!f&&!c?(v=m,m+=T+x):(R=m,m+=p+x),W(ne,{canvas:P.id,children:W(M.RenderCanvas,{strategies:["3d-model","media","images","empty","textual-content","complex-timeline"],renderViewerControls:S===0&&s?()=>W(s,{}):void 0,renderMediaControls:S===0&&a?()=>W(a,{}):void 0,annotationPopup:t.annotationPopup,renderContextMenu:t.renderContextMenu,keepCanvasScale:t.keepCanvasScale,renderComplexTimelineControls:S===0&&l?()=>W(l,{}):void 0,renderAnnotationContextMenu:t.renderAnnotationContextMenu,x:v,y:R,svgTheme:t.svgTheme,rotation:t.rotation,...t.canvasProps||{},children:t.annotations},P.id)},P.id)})},t.reuseAtlas?"":r.currentSequenceIndex),t.children]})}),M=Jo(function({children:t,height:o,annotations:n,canvasProps:i,spacing:r,header:s,components:a,mode:l,reuseAtlas:m,renderPreset:f,runtimeOptions:c,annotationPopup:d,name:u,svgTheme:g,updateViewportTimeout:x,renderContextMenu:h,keepCanvasScale:C,renderAnnotationContextMenu:P,padding:S,rotation:T,...p},v){let R=Tt();return W(xe,{name:u,children:W(we,{vault:R,children:W(At,{...p,children:W(Qr,{ref:v,height:o,components:a,spacing:r,canvasProps:i,annotations:n,header:s,mode:l,reuseAtlas:m,renderPreset:f,runtimeOptions:c,annotationPopup:d,svgTheme:g,updateViewportTimeout:x,renderContextMenu:h,keepCanvasScale:C,renderAnnotationContextMenu:P,padding:S,rotation:T,children:t})})})})});M.RenderImage=Wo;M.RenderCanvas=ie;M.RenderAnnotationPage=X;M.RenderAnnotation=me;M.Viewer=Ko;M.CanvasBackground=Wt;M.Audio=Be;M.Video=Le;M.Model=Ee;M.AudioHTML=at;M.VideoHTML=ct;M.ModelHTML=lt;M.PlaceholderCanvas=Yo;M.getAtlasStoreByName=Qt;export{Je as a,pe as b,Qo as c,ri as d,en as e,Qe as f,et as g,Xt as h,Zt as i,ce as j,N as k,Qt as l,xe as m,eo as n,oo as o,me as p,X as q,V as r,io as s,ao as t,lo as u,ge as v,po as w,Ba as x,Ea as y,Oa as z,yo as A,ut as B,ho as C,kn as D,Mn as E,Vn as F,Na as G,Ce as H,So as I,bo as J,Ro as K,wo as L,Ao as M,ko as N,ir as O,Vo as P,$e as Q,yr as R,Vl as S,qe as T,De as U,Er as V,Fe as W,$o as X,Do as Y,$r as Z,zo as _,Wo as $,jo as aa,Ko as ba,M as ca};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{M as O,b as y,c as C,d as L,e as D,f as z,h as k,j as R,k as Q,n as h,x as H}from"./chunk-MEQI335A.js";import{globalVault as ie}from"@iiif/helpers/vault";import{useContext as ae}from"react";function P(e){let t=ae(D);return e||t.vault||ie()}import{useEffect as se,useMemo as ce,useState as ue}from"react";function j(e,{noCache:t=!1}={}){let n=typeof e=="string"?e:e.id,i=P(),a=ce(()=>{let o=t?void 0:i.get(n,{skipSelfReturn:!0})||void 0;return{id:n,vault:i,noCache:t,initialData:o}},[n,i,t]),[s,r]=ue();se(()=>{let o=!0;return a.initialData||i.load(n).then(l=>{o&&r({request:a,resource:l})},l=>{o&&r({request:a,error:l instanceof Error?l:new Error(String(l))})}),()=>{o=!1}},[a]);let u=s?.request===a?s:void 0,c=u?.resource||a.initialData;return{id:c?.id||n,requestId:n,isLoaded:!!c,error:u?.error,cached:!!c&&c===a.initialData,resource:c}}function K(e,t){let{id:n,isLoaded:i,error:a,resource:s,requestId:r,cached:u}=j(e,t);return{id:n,isLoaded:i,error:a,manifest:s,requestId:r,cached:u}}import{jsx as le}from"react/jsx-runtime";function $({manifest:e,children:t}){return le(C,{value:{manifest:e},children:t})}import{jsx as de}from"react/jsx-runtime";function B({range:e,children:t}){return de(C,{value:{range:e},children:t})}import{useMemo as fe}from"react";function F(e={},t=[]){let{id:n,selector:i}=e,a=y(),s=n||a.range,r=R(u=>s?u.iiif.entities.Range[s]:void 0,[s]);return fe(()=>{if(r)return i?i(r):r},[r,i,...t])}import{getManifestSequence as W}from"@iiif/helpers/sequences";function U(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.id=="string"&&(t.type==="Canvas"||t.type==="Timeline")}function Y(e,t,n={}){if(t.type!=="Manifest"||!t.items.some(o=>U(o)&&o.type==="Timeline")){let[o,l]=W(e,t,n);return[o.map(({id:p})=>({id:p,type:"Canvas"})),l]}let i=t.items.flatMap(o=>U(o)?[{id:o.id,type:o.type}]:[]),[a,s]=W(e,t,n),r=s.map(o=>o.map(l=>a[l]?.id).filter(Boolean)),u=new Set,c=[];for(let[o,l]of i.entries()){if(l.type==="Timeline"){c.push([o]);continue}if(u.has(l.id))continue;let p=r.find(m=>m.includes(l.id))||[l.id];p.forEach(m=>u.add(m)),c.push(p.flatMap(m=>{let v=i.findIndex(A=>A.id===m);return v<0?[]:[v]}))}return[i,c]}import{useCallback as b,useMemo as me,useRef as pe,useState as he}from"react";function M({startCanvas:e,disablePaging:t}){let n=k(),i=h(),a=F(),[s,r]=he(void 0),u=a||i;if(!u)throw new Error("Nothing selected");let[c,o]=me(()=>Y(n,u,{disablePaging:t}),[n,u,t]),l=pe(o);if(l.current!==o){let g=l.current[s][0],S=o.findIndex(oe=>oe.includes(g));l.current=o,r(S)}let p=b(d=>{let g=o.findIndex(S=>S.includes(d));r(g===-1?0:g)},[c,o]),m=b(d=>{let g=c.findIndex(S=>S.id===d);g!==-1?p(g):r(0)},[c,o]),v=b(()=>{r(d=>d>=o.length-1?d:d+1)},[o]),A=b(()=>{r(d=>d<=0?0:d-1)},[o]);return typeof s>"u"&&(e?m(e):r(0)),{visibleItems:o[s]?.map(d=>c[d].id)||[],cursor:s,items:c,sequence:o,hasPrevious:s>0,hasNext:s<o.length-1,setSequenceIndex:r,setCanvasIndex:p,setCanvasId:m,next:v,previous:A}}function ft(e){return M(e)}function _(){let e=h();return e?e.service.find(t=>t.profile==="SearchService1"||t.profile==="http://iiif.io/api/search/1/search"):void 0}import{useContext as Re}from"react";import{createContext as Pe,useMemo as be}from"react";import{createContext as xe,useContext as yt,useMemo as ye}from"react";import{createStore as ge}from"zustand/vanilla";var ve=e=>e.id||e["@id"];function Se(e){return(Array.isArray(e.service)?e.service:[e.service]).find(n=>n?.profile==="http://iiif.io/api/search/0/autocomplete"||n?.profile==="http://iiif.io/api/search/1/autocomplete"||n?.profile==="AutoCompleteService1")}var G=e=>{let t;typeof e=="string"?t={"@context":"http://iiif.io/api/search/1/context.json",profile:"http://iiif.io/api/search/1/search","@id":e,id:e,service:[]}:t=e;let n=t?ve(t):void 0,i=null;return ge((a,s)=>({service:t,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!t,hasAutocomplete:t?!!Se(t):!1,errorMessage:"",search(r,u={}){if(!n)throw new Error("No search service found.");i&&!i.signal.aborted&&i.abort(),i=new AbortController;let c=new URLSearchParams;r.q&&c.set("q",r.q),r.motivation&&c.set("motivation",r.motivation),r.date&&c.set("date",r.date),r.user&&c.set("user",r.user),a({loading:!0}),fetch(`${n}?${c.toString()}`,{signal:i.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...u.headers||{}}}).then(async o=>{if(!i?.signal.aborted)if(o.ok){let l=await o.json();a({resources:l.resources,error:!1,errorMessage:""})}else a({resources:[],error:!0,errorMessage:o.statusText})})},clearSearch(){a({resources:[],error:!1,errorMessage:""})},highlightResult(r){let u=s().resources.find(c=>c["@id"]===r);a({highlight:u})},nextResult(){let r=s().resources,u=s().highlight;if(!u){a({highlight:r[0]||null});return}let c=r.findIndex(o=>o["@id"]===u["@id"]);if(c===-1){a({highlight:r[0]||null});return}a({highlight:r[c+1]||r[0]||null})},previousResult(){let r=s().resources,u=s().highlight;if(!u){a({highlight:r[r.length-1]||null});return}let c=r.findIndex(o=>o["@id"]===u["@id"]);if(c===-1){a({highlight:r[r.length-1]||null});return}if(c===0){a({highlight:r[r.length-1]||null});return}a({highlight:r[c-1]||r[r.length-1]||null})}}))};import{useStore as At}from"zustand";import{jsx as w}from"react/jsx-runtime";var E=xe(null);E.displayName="Search";function J(e){let t=_();return e.store?w(E.Provider,{value:e.store,children:e.children}):w(Ce,{service:t,children:e.children})}function Ce({service:e,children:t}){let n=ye(()=>G(e),[e]);return w(E.Provider,{value:n,children:t})}import{jsx as f}from"react/jsx-runtime";var x=()=>{},X=Pe({setCurrentCanvasId:x,setCurrentCanvasIndex:x,nextCanvas:x,previousCanvas:x,items:[],sequence:[],setSequenceIndex:x,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function Ae(e){let t=h(),{cursor:n,visibleItems:i,next:a,sequence:s,items:r,setCanvasIndex:u,setCanvasId:c,previous:o,setSequenceIndex:l,hasNext:p,hasPrevious:m}=M({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),v=be(()=>({sequence:s,items:r,setCurrentCanvasId:c,nextCanvas:a,previousCanvas:o,totalCanvases:r.length,setCurrentCanvasIndex:u,setSequenceIndex:l,currentSequenceIndex:n,hasNext:p,hasPrevious:m}),[s,r,c,a,o,r,u,l,n]);return t?i.length===0?null:f(X.Provider,{value:v,children:f(Q.Provider,{value:i,children:f(L,{canvas:i[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),f("div",{children:"Sorry, something went wrong."}))}function _t(e){let t=P(e.vault),n=K(e.manifest);if(!n)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),f("div",{children:"Sorry, something went wrong."});if(n.error)return f("div",{children:n.error.toString()});if(!n.isLoaded)return f("div",{children:"Loading..."});let i=f(Ae,{...e,children:e.children});return f(z,{vault:t,children:f($,{manifest:n.id,children:f(H,{children:f(J,{children:e.rangeId?f(B,{range:e.rangeId,children:i}):i})})})})}function Gt(){return Re(X)}import Me from"mitt";import{createContext as we,useContext as Z,useEffect as Ee}from"react";import{jsx as Ie}from"react/jsx-runtime";var Ve=Me(),V=we(Ve);function tr({children:e,emitter:t}){return Ie(V.Provider,{value:t,children:e})}function rr(){return Z(V)}function nr(e,t,n=[]){let i=Z(V);Ee(()=>{let a=s=>{t(s)};return i.on(e,a),()=>{i.off(e,a)}},[i,e,...n])}import{createContext as Te,useContext as qe,useMemo as Ne}from"react";import{jsx as Le}from"react/jsx-runtime";function ee(){return{default:{backgroundColor:"rgba(0,0,0,0)",borderWidth:"2px",borderColor:"rgba(252,0,98, .5)"},highlighted:{backgroundColor:"rgba(75, 103, 225, 0.4)",borderWidth:"1px",borderColor:"rgba(75,103,225,0.99)"},hidden:{borderWidth:"0px",borderColor:"rgba(0,0,0,0)",backgroundColor:"rgba(0,0,0,0)",hidden:!0}}}var I=Te(ee());I.displayName="AnnotationStyle";function sr(){return qe(I)}function cr({theme:e,children:t}){let n=Ne(()=>e||ee(),[e]);return Le(I.Provider,{value:n,children:t})}import{useMemo as De}from"react";function pr(e={},t=[]){let{id:n,selector:i}=e,a=y(),s=n||a.annotationPage,r=R(u=>s?u.iiif.entities.AnnotationPage[s]:void 0,[s]);return De(()=>{if(r)return i?i(r):r},[r,...t])}import{createContext as q,useContext as N}from"react";import{jsx as T}from"react/jsx-runtime";var te=q(null),re=q(null),ne=q(null);function vr(){let e=N(te);if(!e)throw new Error("Ctx not found");return e}function Sr(){let e=N(re);if(!e)throw new Error("Ctx not found");return e}function xr(){let e=N(ne);if(!e)throw new Error("Ctx not found");return e}function yr({actions:e,state:t,children:n,currentTime:i,progress:a,element:s}){return T(ne.Provider,{value:{currentTime:i,progress:a,element:s},children:T(re.Provider,{value:e,children:T(te.Provider,{value:t,children:n})})})}import{useMemo as ze}from"react";import{expandTarget as ke}from"@iiif/helpers";function wr(){let e=h(),t=O();return ze(()=>{if(!e||!t||!e.start)return null;let n=ke(e.start);return!n||n.source.id!==t.id||!n||!n.selector||n.selector.type!=="TemporalSelector"?null:n.selector.temporal},[e,t])}export{P as a,j as b,K as c,$ as d,B as e,F as f,M as g,ft as h,_ as i,E as j,X as k,Ae as l,_t as m,Gt as n,V as o,tr as p,rr as q,nr as r,ee as s,sr as t,cr as u,pr as v,vr as w,Sr as x,xr as y,yr as z,wr as A};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as u}from"./chunk-6WG6RPHU.js";import{b as s,j as d}from"./chunk-MEQI335A.js";import{useMemo as p}from"react";function z(n,r=[]){let{id:t,selector:i}=n,l=s(),e=t||l.collection,o=d((c,m)=>e&&c.iiif.mapping[e]==="Collection"?m.get({id:e,type:"Collection"}):void 0,[e]);return p(()=>{if(o)return i?i(o):o},[o,i,...r])}function x(n,r){let{id:t,isLoaded:i,error:l,resource:e,requestId:o,cached:c}=u(n,r);return{id:t,isLoaded:i,error:l,manifest:e,collection:e,requestId:o,cached:c}}export{z as a,x as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkLKWFF45Dcjs = require('./chunk-LKWFF45D.cjs');var _chunkL576POBVcjs = require('./chunk-L576POBV.cjs');var _react = require('react');function z(n,r=[]){let{id:t,selector:i}=n,l=_chunkL576POBVcjs.b.call(void 0, ),e=t||l.collection,o=_chunkL576POBVcjs.j.call(void 0, (c,m)=>e&&c.iiif.mapping[e]==="Collection"?m.get({id:e,type:"Collection"}):void 0,[e]);return _react.useMemo.call(void 0, ()=>{if(o)return i?i(o):o},[o,i,...r])}function x(n,r){let{id:t,isLoaded:i,error:l,resource:e,requestId:o,cached:c}=_chunkLKWFF45Dcjs.b.call(void 0, n,r);return{id:t,isLoaded:i,error:l,manifest:e,collection:e,requestId:o,cached:c}}exports.a = z; exports.b = x;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as he,f as _}from"./chunk-ND2R7OTX.js";import{$ as fe,H as q,a as $,aa as pe,b as oe,ba as de,ca as ge,g as re,h as ne,k as R,r as ie}from"./chunk-3XPYQXUE.js";import{a as j,f as ee,n as te,r as L,t as ae}from"./chunk-6WG6RPHU.js";import{J as T,_ as se,aa as le,d as G,f as J,h as Q,l as Z,n as B,qa as K,ua as me,xa as ce,za as ue}from"./chunk-MEQI335A.js";import{useCallback as ye,useEffect as Te,useRef as Me,useState as V}from"react";import{useStore as M}from"zustand";function xe(e){let[t,o]=V(0),r=R(),n=M(r,p=>p.tool.enabled),a=M(r,p=>p.tool.requestId),i=M(r,p=>p.getRequestId),l=M(r,p=>p.requestAnnotation),d=M(r,p=>p.completeRequest),c=M(r,p=>p.cancelRequest),s=Me(e?.onSuccess);s.current=e?.onSuccess;let[y,x]=V(!1),[v,b]=V(null),[u,I]=V(null),m=n&&a!==u,h=n&&a===u,f=ye(async(p,P)=>{if(u){let A=s.current;x(!0);let E=await l(p,{...P,requestId:u});if(E)return A?.(E),o(D=>D+1),x(!1),b(E),E;let F={id:u,cancelled:!0,...ne(p)};return A?.(F),b(F),o(D=>D+1),x(!1),F}return null},[l,u]),g=ye(()=>{b(null),x(!1)},[]);return Te(()=>{let p=i();return I(p.requestId),()=>{p.clear()}},[t]),{id:t,busy:m,isPending:y,isActive:h,requestId:u,requestAnnotation:f,cancelRequest:()=>u?c(u):void 0,completeRequest:()=>u?d(u):void 0,reset:g,data:v}}import{useEffect as ke}from"react";var bt=[{name:"Default",outer:{borderWidth:4,borderColor:"rgba(255, 255, 255, .4)"},inner:{borderWidth:2,borderColor:"#000"}},{name:"High contrast",outer:{borderWidth:3,borderColor:"#fff"},inner:{borderWidth:1,borderColor:"#000"}},{name:"Lightsaber",outer:{borderWidth:"4",borderColor:"rgba(56,68,255,0.64)"},inner:{borderWidth:"2",borderColor:"#fff"}},{name:"Bright",outer:{borderWidth:"6",borderColor:"#25d527"},inner:{borderWidth:"3",borderColor:"#a916ff"}},{name:"pink",outer:{borderWidth:"4",borderColor:"#ff00ff"},inner:{borderWidth:"2",borderColor:"#ffffff"}},{name:"fine (dark)",outer:{borderWidth:"1",borderColor:"#000000"},inner:{}},{name:"fine (light)",outer:{borderWidth:"1",borderColor:"#FFF"},inner:{}}];function be(e){let{id:t,data:o,requestAnnotation:r,cancelRequest:n,isPending:a}=xe({onSuccess:i=>{e.updateShape(i.polygon)}});return ke(()=>(r({type:"polygon",open:e.shape?.open,points:e.shape?.points}),()=>{n()}),[]),null}import{jsx as ve}from"react/jsx-runtime";function qt(e){let t=T(),o=e.annotationBucket,r=e.readOnly,n=e.id,{onClick:a,isHighlighted:i}=he(e.id),l=ae(),d=i?l.highlighted:l[o||"hidden"]||l.hidden;if(!t)return null;if(r){let c="shape",s=e.polygon,y=s.open;return s?ve(c,{id:`shape-${n}`,points:s.points,open:y,onClick:a,relativeStyle:!0,target:{x:0,y:0,width:t.width,height:t.height},style:d}):null}return ve(be,{image:t,shape:e.polygon||{id:e.id,open:!0,points:[]},updateShape:e.updatePolygon,theme:e.theme,controlsHtmlId:e.controlsHtmlId,renderControls:e.renderControls})}import{useCanvas as Ae}from"@atlas-viewer/atlas";import{forwardRef as Ne,useImperativeHandle as Ee}from"react";import{Fragment as Be,jsx as Se}from"react/jsx-runtime";var Lt=Ne(function({canvasId:t},o){let r=Ae(),n=ce(t||r?.id),a=Q();return Ee(o,()=>n,[t,r]),!r||n.enabledPageIds.length===0?null:Se(Be,{children:n.enabledPageIds.map(i=>Se(ge.RenderAnnotationPage,{page:a.get(i)},i))})});import{useMemo as Le}from"react";import{Fragment as Ve,jsx as S,jsxs as z}from"react/jsx-runtime";function W({metadata:e=[],config:t,labelWidth:o=16,showEmptyMessage:r=!0,allowHtml:n,emptyFallback:a,classes:i={},emptyMessage:l="No metadata available",emptyValueFallback:d="No value",emptyLabelFallback:c="",separator:s,tableFooter:y,tableHeader:x,customLabelRender:v,customValueRender:b}){let u=Le(()=>{let m=(t||[]).reduce((f,g)=>[...f,...g.keys],[]),h={};for(let f of e){let g=f?.label?Object.values(f.label):[];for(let p of g)if(p?.length&&(m.indexOf(`metadata.${p[0]}`)!==-1||m.length===0)&&f){let P=`metadata.${p[0]}`;h[P]=h[P]?h[P]:[],h[P].push(f);break}}return h},[t,e]);return Object.keys(u).length===0&&r?S(Ve,{children:a})||S("div",{className:i.empty,children:l}):t?.length?z("table",{className:i.container,children:[x,S("tbody",{children:t.map((m,h)=>{let f=[];for(let p of m.keys)for(let P of u[p]||[]){let A=S(q,{enableDangerouslySetInnerHTML:n,defaultText:d,separator:s,children:P.value},h+"__"+p);b?f.push(b(P,A)):f.push(A)}if(f.length===0)return null;let g=S(q,{enableDangerouslySetInnerHTML:n,separator:s,defaultText:c,children:m.label});return z("tr",{className:i.row,children:[S("td",{className:i.label,style:o?{minWidth:o}:{},children:v?v(m.label,g):g}),S("td",{className:i.value,children:f})]},h)})}),y]}):z("table",{className:i.container,children:[x,S("tbody",{children:e?.length?e.map((m,h)=>{if(!m)return null;let f=S(q,{enableDangerouslySetInnerHTML:n,defaultText:d,separator:s,children:m.label}),g=S(q,{enableDangerouslySetInnerHTML:n,defaultText:d,separator:s,children:m.value});return z("tr",{className:i.row,children:[S("td",{className:i.label,style:o?{minWidth:o}:{},children:v?v(m.label,f):f}),S("td",{className:i.value,children:b?b(m,g):g})]},h)}):null}),y]})}import{useMemo as ze}from"react";import{jsx as We}from"react/jsx-runtime";function Yt(e){let t=B(),o=T(),r=ee(),n=ze(()=>{let a=t?.metadata||[],i=o?.metadata||[],l=r?.metadata||[];return[...a,...i,...l]},[t,o,r]);return We(W,{metadata:n,...e})}import{useEffect as He,useState as Oe}from"react";import{jsx as H}from"react/jsx-runtime";function Fe(e){let t=typeof e.src=="string"?e.src:e.src.id,o=se(),[r,n]=Oe(!1),a;if(t){let l=o.loadServiceSync({id:t});l&&(a=l)}!a&&!r&&o.loadService({id:t}).then(()=>{n(!0)});let i=_(a,{size:e.size,selector:e.region,rotation:e.rotation,format:e.format,region:e.region,quality:e.quality},[r,e.src,e.size,e.region,e.rotation,e.format,e.region,e.quality]);return He(()=>()=>{n(!1)},[t]),i?H("img",{src:i,alt:e.alt,className:e.className,style:e.style}):H(De,{...e,fetchImageService:!1})}function De(e){if(e.fetchImageService)return H(Fe,{...e});let t=typeof e.src=="string"?{id:e.src,profile:"level0"}:e.src,o=_(t,{size:e.size,selector:e.region,rotation:e.rotation,format:e.format,region:e.region,quality:e.quality},[e.src,e.size,e.region,e.rotation,e.format,e.region,e.quality]);return o?H("img",{src:o,alt:e.alt,className:e.className,style:e.style}):null}import{useMemo as $e,useState as Ke}from"react";import{ErrorBoundary as _e}from"react-error-boundary";import{jsx as k,jsxs as Xe}from"react/jsx-runtime";function fo({src:e,errorFallback:t,interactive:o,skipSizes:r,children:n,renderViewerControls:a,viewControlsDeps:i,fluid:l,x:d,y:c,...s}){let y=j(),[x,v]=Ke(),b=t||pe,[u,I]=ue(),m=$e(()=>{let f=I[e]?.status,g=u({id:e},{});return g?.height&&g.width&&f!=="loading"?{id:e,width:g.width,height:g.height,service:g,type:"Image",selector:{type:"BoxSelector",spatial:{x:0,y:0,width:g.width,height:g.height}},target:{type:"BoxSelector",spatial:{x:0,y:0,width:g.width,height:g.height}}}:null},[u,e,I]);if(!m||!m.height||!m.width)return null;let h=l?void 0:s.homePosition?s.homePosition.width/s.homePosition.height:m.width/m.height;return k(_e,{resetKeys:[],fallbackRender:f=>k(b,{...s,...f}),children:k(J,{vault:y,children:k(de,{...s,aspectRatio:h,containerProps:{style:{position:"relative"},...s.containerProps||{}},onCreated:f=>{v(f),s.onCreated&&s.onCreated(f)},children:Xe(K.Provider,{value:x,children:[k(fe,{image:m,id:m.id,isStatic:!o,x:d,y:c},m.id),k(Ue,{viewerPreset:x,renderViewerControls:a,image:m,src:e,viewControlsDeps:i}),n]})})})})}function Ue({viewerPreset:e,renderViewerControls:t,image:o,src:r,viewControlsDeps:n}){return ie(e&&t?"overlay":"none",`canvas-portal-controls-${r}`,K.Provider,t&&o?{value:e||null,children:t({image:o,images:[o],type:"images"})}:{},[r,e,...n||[]]),null}import{jsx as Ye}from"react/jsx-runtime";function bo(e){let t=B();return Ye(W,{metadata:t?.metadata||[],...e})}import*as U from"react-lazy-load-image-component";import{getValue as Ge}from"@iiif/helpers/i18n";import{Fragment as Ce,jsx as w,jsxs as Ze}from"react/jsx-runtime";var{LazyLoadComponent:Je}=U||U.default;function Re(e){let{size:t,visible:o,classes:r,canvasId:n,figure:a}=e,i=t?.width||128,l=t?.height||t?.width||128,d=w(Qe,{...e}),c=w(Je,{threshold:300,style:{height:l,width:i},visibleByDefault:o,children:n?w(G,{canvas:n,children:d}):d});return a?w("figure",{className:r?.figure,children:c}):c}function Qe({fallback:e,size:t,classes:o,showLabel:r,alt:n,dereference:a=!1}){let i=T(),l=t?.width||128,d=t?.height||t?.width||128,c=n||Ge(i?.label)||"",s=le({width:l,height:d,allowUnsafe:!0},a);return!s||s.type!=="fixed"?w(Ce,{children:e}):Ze(Ce,{children:[w("div",{className:o?.imageWrapper,children:w("img",{className:o?.img,src:s.id,alt:c})}),r?w(q,{as:"figcaption",className:o?.label,children:i?.label}):null]})}import{useLayoutEffect as je,useRef as et}from"react";import{jsx as N}from"react/jsx-runtime";function No({scrollBehaviour:e,dereference:t,flat:o,size:r,classes:n={},showLabel:a,figure:i,fallback:l}){let d=et(null),{items:c,sequence:s,currentSequenceIndex:y,setSequenceIndex:x}=te(),v={row:n.selected?.row||n.row,item:n.selected?.item||n.item,figure:n.selected?.figure||n.figure,img:n.selected?.img||n.img,label:n.selected?.label||n.label,imageWrapper:n.selected?.imageWrapper||n.imageWrapper};je(()=>{if(!d.current)return;let u=d.current.querySelector("[data-selected=true]");u&&u.scrollIntoView({behavior:e||"instant",block:"nearest",inline:"center"})},[y]);let b=[];for(let u of s){let I=[],m=s[y]===u;for(let h of u){let f=c[h];I.push(N("div",{className:m?v.item:n.item,children:N(Re,{classes:m?v:n,canvasId:f.id,size:r,dereference:t,showLabel:a,figure:i,placeholder:N("div",{style:{height:128,width:128}}),fallback:l})},h))}if(o){b.push(I);continue}b.push(N("div",{onClick:h=>{x(s.indexOf(u))},"data-selected":m,className:m?v.row:n.row,children:I},u.join("-")))}return N("div",{ref:d,className:n.container,children:b})}import{useStore as O}from"zustand";function Ie(){let e=R(),t=O(e,a=>a.completeRequest),o=O(e,a=>a.polygonState.currentTool),r=O(e,a=>a.polygonState.selectedStamp),n=O(e,a=>a.switchTool);return{completeRequest:t,currentTool:o,selectedStamp:r,switchTool:n}}import{Fragment as Pe,jsx as C,jsxs as we}from"react/jsx-runtime";var tt={draw:!0,polygon:!0,line:!0,lineBox:!0,box:!0,triangle:!0,hexagon:!0,circle:!0,delete:!0,pen:!0};function Ho({showShapes:e=!0,enabled:t=tt,classNames:o={},icons:r={}}){let{currentTool:n,switchTool:a,selectedStamp:i}=Ie();return we(Pe,{children:[n,C("button",{className:o.button,onClick:a.pointer,"data-active":n==="pointer",children:r.PointerIcon||"Pointer"}),C("button",{className:o.button,onClick:a.hand,"data-active":n==="hand",children:r.HandIcon||"Hand"}),e?we(Pe,{children:[t.box&&C("button",{className:o.button,onClick:a.box,"data-active":n==="box",children:r.BoxIcon||"Box"}),t.pen&&C("button",{className:o.button,onClick:a.pen,"data-active":n==="pen",children:r.PenIcon||"Pen"}),t.draw&&C("button",{className:o.button,onClick:a.draw,"data-active":n==="pencil",children:r.DrawIcon||"Draw"}),t.line&&C("button",{className:o.button,onClick:a.line,"data-active":n==="line",children:r.LineIcon||"Line"}),t.lineBox&&C("button",{className:o.button,onClick:a.lineBox,"data-active":n==="lineBox",children:r.LineBoxIcon||"LineBox"}),t.triangle&&C("button",{className:o.button,onClick:a.triangle,"data-active":n==="stamp"&&i?.id==="triangle",children:r.TriangleIcon||"Triangle"}),t.hexagon&&C("button",{className:o.button,onClick:a.hexagon,"data-active":n==="stamp"&&i?.id==="hexagon",children:r.HexagonIcon||"Hexagon"}),t.circle&&C("button",{className:o.button,"data-active":n==="stamp"&&i?.id==="circle",onClick:a.circle,children:r.CircleIcon||"Circle"})]}):null,t.delete&&C("button",{className:o.button,onClick:a.remove,children:r.DeleteForeverIcon||"Delete"})]})}import{useCanvas as ot}from"@atlas-viewer/atlas";import{useEffect as rt,useMemo as X,useState as nt}from"react";function Uo({canvasId:e}={}){let t=ot(),o=Z(),r=X(()=>e?[e]:t?[t.id]:o.map(c=>c.id),[e,t,o]),[n,a]=nt({}),i=me();rt(()=>{let c=s=>{let y=s.partOf.canvasId;y&&a(x=>({...x,[y]:s.choice}))};return i.on("choice-change",c),()=>{i.off("choice-change",c)}},[]);let l=X(()=>{let c=[];for(let s of r){let y=n[s];y&&c.push({canvasId:s,choice:y})}return c},[r,n]),d=X(()=>({makeChoice:(c,s)=>{i.emit("make-choice",{choiceId:c,...s})}}),[i]);return{choices:l,actions:d}}import{startTransition as at,useMemo as it}from"react";import{useStore as qe}from"zustand";function Qo(){let e=R(),t=qe(e,r=>r.completeRequest),o=qe(e,r=>r.cancelRequest);return it(()=>({saveAnnotation:()=>{at(()=>{t()})},cancelRequest:o}),[t,o])}import{useCallback as st}from"react";import{useStore as Y}from"zustand";function or({requestId:e}={}){let t=R(),o=Y(t,l=>l.metadata),r=Y(t,l=>l.tool.requestId),n=e||r,a=Y(t,l=>l.setMetadata),i=st(l=>a(l,n||void 0),[a,n]);return[n?o[n]||{}:{},i]}import{useStore as lt}from"zustand";function sr(e){let t=R(),o=lt(t,r=>r.tool.requestId);L("polygons.start-transition",r=>{e.requestId&&o!==e.requestId||e?.onStart?.(r.transitionIntent)},[o,e.requestId]),L("polygons.end-transition",r=>{e.requestId&&o!==e.requestId||e?.onEnd?.(r.transitionIntent,r.response)},[o,e.requestId]),L("polygons.transition",r=>{e.requestId&&o!==e.requestId||e?.onTransition?.(r.transitionIntent)},[o,e.requestId])}function mr(e,t){let{x:o,y:r,width:n,height:a}=e,{x:i,y:l}=t,{width:d,height:c}=t;return o+n>i&&o<i+d&&r+a>l&&r<l+c}import mt from"tiny-invariant";function gr(e,t){let o=e.boundingBox||oe(e.polygon);if(e.polygon&&!$(e.polygon.points)){let r=e.target||re(e.polygon,t);return mt(r?.type==="SvgSelector"),{type:"SvgSelector",points:e.polygon.points,spatial:{unit:"pixel",...o||{}},svgShape:e.polygon.open?"polyline":"polygon",svg:r.value}}return{type:"BoxSelector",spatial:o}}import{findManifestSelectedRange as ct,findSelectedRange as ut}from"@iiif/helpers/ranges";import{findAllCanvasesInRange as Cr,findFirstCanvasFromRange as Rr}from"@iiif/helpers/ranges";function xr(e,t,o){return ct(e,t,o)}function br(e,t,o){return ut(e,t,o)}import{cachedParseCssToBoxStyleMap as Er,convertBoxStyleToSelectorStyle as Br,convertSelectorStyleToBoxStyle as Lr,expandTarget as Vr,expandTargets as zr,getSelectorTransformAttributes as Wr,isImageApiSelector as Hr,isValidCanvasFragment as Or,parseCssToBoxStyleMap as Fr,parseCssTransform as Dr,parseCssTransformOrigin as $r,parseCssTransformStyle as Kr,parseRotation as _r,parseSelector as Ur,parseWkt as Xr,polygonToBoundingBox as Yr,resolveSelectorStyle as Gr,serializeSupportedSelector as Jr,splitCanvasFragment as Qr}from"@iiif/helpers/annotation-targets";export{xe as a,bt as b,be as c,qt as d,Lt as e,W as f,Yt as g,De as h,fo as i,bo as j,Re as k,No as l,Ie as m,Ho as n,Uo as o,Qo as p,or as q,sr as r,mr as s,gr as t,xr as u,br as v,Cr as w,Rr as x,Er as y,Br as z,Lr as A,Vr as B,zr as C,Wr as D,Hr as E,Or as F,Fr as G,Dr as H,$r as I,Kr as J,_r as K,Ur as L,Xr as M,Yr as N,Gr as O,Jr as P,Qr as Q};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function R(e){return{width:typeof e.width=="number"&&e.width>0?e.width:0,height:typeof e.height=="number"&&e.height>0?e.height:0}}function W(e){return!e||typeof e!="object"||!("id"in e)||!("type"in e)?!1:typeof e.id=="string"&&(e.type==="Canvas"||e.type==="Timeline"||e.type==="Scene")}function oe(e){if(!(!e||!("backgroundColor"in e)))return typeof e.backgroundColor=="string"?e.backgroundColor:void 0}function ne(e){if(!e)return null;let t="placeholderContainer"in e?e.placeholderContainer:"placeholderCanvas"in e?e.placeholderCanvas:null;return W(t)?t:null}function ie(e){if(!e)return null;let t="accompanyingContainer"in e?e.accompanyingContainer:"accompanyingCanvas"in e?e.accompanyingCanvas:null;return W(t)?t:null}import{expandTarget as L,parseSelector as _}from"@iiif/helpers";function ce(e){return e.type==="SpecificResource"?[e.source,{selector:e.selector}]:[e,{selector:null}]}function P(e,t){let i=L(t.target).selector?.temporal,r=_(t.selector).selector?.temporal,n=e.duration||0,p=i?.startTime??0,c=r?.startTime??0,h="duration"in t.resource&&typeof t.resource.duration=="number"?t.resource.duration:void 0,d=r?.endTime??h,u=i?.endTime??(i&&d!==void 0&&Number.isFinite(d)?Math.min(n,p+Math.max(0,d-c)):n);return{target:{startTime:p,endTime:u},source:r||{startTime:0,endTime:u-p}}}function k(e,t){let{selector:i,source:r}=L(t);if(r.id!==e.id)return[null,r];let n={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}};return[i?i.type==="TemporalSelector"?{type:"TemporalBoxSelector",temporal:i.temporal,spatial:n.spatial}:i:null,r]}var le={makeChoice:()=>{}},w={type:"unknown"},l=e=>({type:"unknown",reason:e,annotations:{pages:[]}}),U=(e,t)=>({type:"empty",width:e,height:t,annotations:{pages:[]},image:null,images:[]});var Q=["model/gltf-binary"];function E(e,t){let i=t.items[0],r=i.resource;return r.format?Q.indexOf(r.format)===-1?l(`3D format: ${r.format} is unsupported`):{type:"3d-model",model:r,annotationId:i.annotationId,annotation:i.annotation}:l("Unknown format")}import{expandTarget as F}from"@iiif/helpers/annotation-targets";import{getImageServices as $}from"@iiif/parser/image-3";function S(e){return e.replace(/^http:/,"https:")}function Y(e){if(!(e?.type!=="ImageApiSelector"||typeof e.rotation>"u"))return z(e.rotation)}function z(e){if(e===null||typeof e>"u"||e==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}function J(e){let t=e.selector||{};return{...e.rotationOrigin||t.rotationOrigin?{rotationOrigin:e.rotationOrigin||t.rotationOrigin}:{},...e.translate||t.translate?{translate:e.translate||t.translate}:{},...e.transform||t.transform?{transform:e.transform||t.transform}:{},...e.style||t.boxStyle?{style:e.style||t.boxStyle}:{},...e.styleClass?{styleClass:e.styleClass}:{}}}function V(e,t,i){let r=R(e),n=[];for(let p of t.items){let c=p.resource&&p.resource.type==="SpecificResource"?p.resource.source:p.resource;if(!c.id)return l("No resource Identifier");let h=typeof c.width=="number"?c.width:void 0,d=typeof c.height=="number"?c.height:void 0,o=(p.resource.type==="SpecificResource"?Y(p.resource.selector):void 0)??Y(p.selector)??z(p.rotation)??z(p.selector?.rotation),a=typeof o<"u",s;if(c.service){let T=$(c);T[0]&&(s=i(T[0],a?{width:Number(h||e.width),height:Number(d||e.height)}:r))}let y={type:"BoxSelector",spatial:{x:0,y:0,width:r.width,height:r.height}},[f,g]=k(e,p.target),C=e.id?.split("?")[0]||"";if(!(S(g.id||"")===S(e.id)||S(decodeURIComponent(g.id||""))===S(e.id||"")||S(g.id||"")===S(C)||S(decodeURIComponent(g.id||""))===S(C)))continue;let m=p.resource.type==="SpecificResource"?F(p.resource):null;if(p.selector){let T=F({type:"SpecificResource",source:p.resource,selector:p.selector});T&&(m=T)}let v=m&&m.selector&&(m.selector.type==="BoxSelector"||m.selector.type==="TemporalBoxSelector")?{type:"BoxSelector",spatial:{x:m.selector.spatial.x,y:m.selector.spatial.y,width:m.selector.spatial.width,height:m.selector.spatial.height},...typeof m.selector.rotation<"u"?{rotation:m.selector.rotation}:{},...m.selector.rotationOrigin?{rotationOrigin:m.selector.rotationOrigin}:{},...m.selector.translate?{translate:m.selector.translate}:{},...m.selector.transform?{transform:m.selector.transform}:{},...m.selector.boxStyle?{boxStyle:m.selector.boxStyle}:{}}:void 0;s&&!s.id&&(s.id=s["@id"]);let x={id:c.id,type:"Image",annotationId:p.annotationId,annotation:p.annotation,width:Number(a||f||v?h:e.width),height:Number(a||f||v?d:e.height),...typeof o<"u"?{rotation:o}:{},...J(p),service:s,sizes:s&&s.sizes?s.sizes:h&&d?[{width:h,height:d}]:[],target:f&&f.type!=="PointSelector"?f:y,selector:v,annotationPages:p.resource.annotations||[]};n.push(x)}return{type:"images",image:n[0],images:n,choice:t.choice}}function q(e,t={},i){let r=e.language||i||"none";switch(e.type){case"TextualBody":{typeof e.value<"u"&&(t[r]=[e.value]);break}case"List":case"Composite":case"Choice":e.items&&e.items.forEach(n=>q(n,t,r))}return t}function A(e,t){let i=[];return t.items.forEach(r=>{if(r.resource){let[n]=k(e,r.target);i.push({type:"Text",annotationId:r.annotationId,annotation:r.annotation,text:q(r.resource),target:n})}}),{type:"textual-content",items:i}}import{expandTarget as K}from"@iiif/helpers";var X=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function O(e,t,i,r=!1){let n=R(e),p=t.items.filter(m=>m.type==="video"),c=p[0],h=!1,d=!1,u=e.duration||0;if(u||(d=!0),p.length>1||!c)return l("Only one video source supported");let o=p[0]?.resource,a=!!(o.service||[]).find(m=>(m.profile||"").includes("youtube.com"));if(!a&&d)return l("Video does not have duration");if(!o)return l("Unknown video");if((!o.format||o.format==="text/html")&&!a)return l("Video does not have format");let s=[],y=i.get([...e.annotations]);for(let m of y){let v=i.get(m.items||[]);for(let x of v)if((x.motivation?Array.isArray(x.motivation||"")?x.motivation:[x.motivation]:[]).includes("supplementing")){let H=i.get(x.body||[]);for(let j of H){let b=j;if(b.type==="Choice")for(let G of b.items){let I=i.get(G);I.format==="text/vtt"&&s.push({id:I.id,type:"Text",format:"text/vtt",label:I.label,language:I.language})}else b.format==="text/vtt"&&s.push({id:b.id,type:"Text",format:"text/vtt",label:b.label,language:b.language})}}}let f=P(e,c),g={annotationId:c.annotationId,annotation:c.annotation,duration:u,url:o.id,type:"Video",target:{type:"TemporalSelector",temporal:f.target},format:o.format,selector:{type:"TemporalSelector",temporal:f.source}},C=K(c.target);if(C.selector&&(C.selector.type==="TemporalBoxSelector"||C.selector.type==="TemporalSelector")&&(g.target={...C.selector,temporal:f.target}),r&&!g.target.spatial&&(h=!0,g.target={type:"TemporalBoxSelector",temporal:g.target.temporal,spatial:{x:0,y:0,width:n.width,height:n.height}}),a){g.type="VideoYouTube";let m=o.id.match(X);if(!m[1])return l("Video is not known youtube video");g.youTubeId=m[1]}return{type:"media",media:g,annotations:{pages:[]},noSpatial:h,captions:s}}import{expandTarget as Z}from"@iiif/helpers";function M(e,t){let i=t.items,r=i[0];if(i.length===0||!r)return l("No audio");if(!e.duration)return l("No duration on canvas");if(i.length>1)return l("Only one audio source supported");let n=r.resource;if(!n)return l("Unknown audio");let{target:p,source:c}=P(e,r);return{type:"media",media:{annotationId:r.annotationId,annotation:r.annotation,duration:e.duration,url:n.id,type:"Sound",target:{type:"TemporalSelector",temporal:p},format:("format"in n&&typeof n.format=="string"?n.format:void 0)||"audio/mpeg",selector:{type:"TemporalSelector",temporal:c}},annotations:{pages:[]}}}function D(e,t,i,r){let n={type:"complex-timeline",items:[],keyframes:[],highlights:[],duration:e.duration||0},p={type:"complex-choice",items:[]},c=r.get([...e.annotations]);function h(o){o.choice&&(o.choice.type==="complex-choice"?p.items.push(...o.choice.items):p.items.push(o.choice))}for(let o of t.items){if(o.type==="image"){let a=V(e,{choice:null,allChoices:null,types:["image"],items:[o]},i);if(a.type==="images"){if(!a.image)continue;h(a),n.items.push(a.image);let s={id:a.image.annotationId,type:"enter",resourceType:"image",time:a.image.target?.temporal?.startTime||0};n.keyframes.push(s);let y={id:a.image.annotationId,type:"exit",resourceType:"image",time:a.image.target?.temporal?.endTime??e.duration??0};n.keyframes.push(y)}}if(o.type==="textualbody"){let a=A(e,{choice:null,allChoices:null,types:["textualbody"],items:[o]});if(a.type==="textual-content"){h(a);let s=a.items[0];n.items.push(s);let y=s.target,f={id:s.annotationId,type:"enter",resourceType:"text",time:y?.temporal?.startTime??0};n.keyframes.push(f);let g={id:s.annotationId,type:"exit",resourceType:"text",time:y?.temporal?.endTime??e.duration??0};n.keyframes.push(g)}}if(o.type==="video"){let a=O(e,{choice:null,allChoices:null,types:["video"],items:[o]},r,!0);if(a.type==="media"){h(a);let s=a.media;n.items.push(s);let y={id:s.annotationId,type:"enter",resourceType:"video",time:s.target?.temporal?.startTime||0};n.keyframes.push(y);let f={id:s.annotationId,type:"exit",resourceType:"video",time:s.target?.temporal?.endTime??e.duration??0};n.keyframes.push(f)}}if(o.type==="audio"||o.type==="sound"){let a=M(e,{choice:null,allChoices:null,types:["audio"],items:[o]});if(a.type==="media"){h(a);let s=a.media;n.items.push(s);let y={id:s.annotationId,type:"enter",resourceType:"audio",time:s.target?.temporal?.startTime||0};n.keyframes.push(y);let f={id:s.annotationId,type:"exit",resourceType:"audio",time:s.target?.temporal?.endTime??e.duration??0};n.keyframes.push(f)}}}for(let o of c)for(let a of o.items){let s=r.get(a),y=Z(s.target,{typeMap:r.getState?.().iiif.mapping});if(y.selector?.temporal){let f={id:s.id,type:"enter",resourceType:"highlight",time:y.selector.temporal.startTime||0};n.keyframes.push(f);let g={id:s.id,type:"exit",resourceType:"highlight",time:y.selector.temporal.endTime||e.duration||0};n.keyframes.push(g)}n.highlights.push({annotation:s,target:y})}n.keyframes.sort((o,a)=>o.time-a.time);let d=[],u=[];for(let o of n.keyframes){if(o.resourceType==="image"||o.resourceType==="text"||o.resourceType==="highlight"){u.push(o);continue}if(o.type==="enter"){d.length===0&&(o.isPrime=!0),d.push(o),u.push(o);continue}if(o.type==="exit"&&(u.push(o),d=d.filter(a=>a.id!==o.id),d.length!==0)){let a=d[0],s={id:a.id,type:"change",isPrime:!0,resourceType:a.resourceType,time:o.time};u.push(s)}}return n.keyframes=u,p.items.length&&(n.choice=p),n}import{expandTarget as ee,parseSelector as te}from"@iiif/helpers";var N={},B={get(e){return e},setMetaValue([e,t,i],r){let n=B.getResourceMeta(e,t),p=n?n[i]:void 0,c=typeof r=="function"?r(p):r;N[e]={...N[e]||{},[t]:{...(N[e]||{})[t]||{},[i]:c}}},getResourceMeta:(e,t)=>{let i=N[e];if(i)return t?i[t]:i},async load(e){let t=typeof e=="string"?e:e.id;return fetch(t).then(i=>i.json())},requestStatus(e){}};function Qe({canvas:e,paintables:t,supports:i,loadImageService:r,vault:n=B}){if(e?.type==="Scene")return l("Scene rendering is not supported");if(!e)return w;if(t.types.length===0){if(i.indexOf("empty")!==-1){let{width:o,height:a}=R(e);return U(o,a)}return w}let p=["image","textualbody","video","audio","sound"],c=t.items.filter(o=>p.includes(o.type));if(Number.isFinite(e.duration)&&(e.duration||0)>0&&(c.length>1||c.some(o=>o.type==="image"||o.type==="textualbody"?!0:!!ee(o.target).selector?.temporal||!!te(o.selector).selector?.temporal)))return i.includes("complex-timeline")?D(e,t,r,n):l("Complex timeline not supported");if(t.types.length!==1)if(t.types.length===2&&t.types.indexOf("text")!==-1)t={...t,types:t.types.filter(o=>o!=="text")};else return i.indexOf("complex-timeline")===-1?l("Complex timeline not supported"):D(e,t,r,n);let u=t.types[0];return u==="image"?i.indexOf("images")===-1?l("Image not supported"):V(e,t,r):u==="Model"||u==="model"?i.indexOf("3d-model")===-1?l("3D not supported"):E(e,t):u==="textualbody"?i.indexOf("textual-content")===-1?l("Textual content not supported"):A(e,t):u==="sound"||u==="audio"?i.indexOf("media")===-1?l("Media not supported"):M(e,t):u==="video"?i.indexOf("media")===-1?l("Media not supported"):O(e,t,n):w}export{R as a,oe as b,ne as c,ie as d,ce as e,P as f,k as g,le as h,w as i,l as j,U as k,E as l,V as m,A as n,O as o,D as p,Qe as q};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkZEGT4BARcjs = require('./chunk-ZEGT4BAR.cjs');var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _jsxruntime = require('react/jsx-runtime');var mt={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0,scene:void 0,timeline:void 0},me= exports.a =_react2.default.createContext(mt),V= exports.b =()=>_react.useContext.call(void 0, me);function j({value:e,children:n}){let t=V(),r=_react.useMemo.call(void 0, ()=>({...t,...e}),[e,t]);return _jsxruntime.jsx.call(void 0, me.Provider,{value:r,children:n})}function Jn({canvas:e,children:n}){return _jsxruntime.jsx.call(void 0, j,{value:{canvas:e},children:n})}var _vault = require('@iiif/helpers/vault');var _vault4 = require('@iiif/helpers/vault-4');var X=_react2.default.createContext({vault:null,setVaultInstance:e=>{}});function cr({vault:e,vaultOptions:n,useGlobal:t,resources:r,version:i=3,children:s}){let a=_react.useMemo.call(void 0, ()=>e||(i===4?new (0, _vault4.Vault4)(n):t?_vault.globalVault.call(void 0, n):n?new (0, _vault.Vault)(n):new _vault.Vault),[t,e,n,i]),[o,u]=_react.useState.call(void 0, ),d=p=>u({generated:a,vault:p}),l=e||(o&&o.generated===a?o.vault:a);return _jsxruntime.jsx.call(void 0, X.Provider,{value:{vault:l,setVaultInstance:d},children:_jsxruntime.jsx.call(void 0, j,{value:r||{},children:s})})}function Z(){let{vault:e}=_react.useContext.call(void 0, X);if(!e)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e}function I(){return Z()}function J(e,n,t=[]){let r=_react.useMemo.call(void 0, ()=>{let i=e.getState(),s=n(i,e);return{snapshot(){let a=e.getState();return a!==i&&(s=n(a,e),i=a),s},subscribe(a){return _vault4.isVault4.call(void 0, e)?e.subscribe(()=>a(),!0):e.subscribe(()=>a(),!0)}}},[e,...t]);return _react.useSyncExternalStore.call(void 0, r.subscribe,r.snapshot,r.snapshot)}function R(e,n=[]){return J(I(),e,n)}var ge=_react2.default.createContext([]);function br(){let e=_react.useContext.call(void 0, ge);return R(n=>e.map(t=>n.iiif.entities.Canvas[t]).filter(Boolean),[e])}function he(){let e=_react.useContext.call(void 0, ge);return R(n=>e.flatMap(t=>{let r=n.iiif.mapping[t]==="Timeline"?n.iiif.entities.Timeline[t]:n.iiif.entities.Canvas[t];return r?[r]:[]}),[e])}function O(e={},n=[]){let{id:t,selector:r}=e,i=V(),s=t||i.manifest,a=R(o=>s?o.iiif.entities.Manifest[s]:void 0,[s]);return _react.useMemo.call(void 0, ()=>{if(a)return r?r(a):a},[a,r,...n])}var _vanilla = require('zustand/vanilla');function Mr(e){let n=e.service||e.services||[];for(let t of n)if(t.type==="AuthProbeService2")return!0;return!1}function L(e,n,t){let r=n.findIndex(a=>a.service.id===e);if(r===-1)return n;let i=[...n],s=t(i[r]);return s===i[r]?n:(i[r]=s,i)}var Ae=()=>_vanilla.createStore.call(void 0, (e,n)=>({currentAuth:-1,authItems:[],login:()=>{let t=n().authItems[n().currentAuth];if(!t||t.isPending||t.isLoggedIn)return;if(t.type!=="active")throw new Error("Cannot login to non-active service");let r=t.service.service.find(i=>i.type==="AuthAccessTokenService2");if(!r)throw new Error("Token service not found");e(()=>({authItems:L(t.id,n().authItems,i=>({...i,isPending:!0}))})),ye(t.service).then(()=>{ee(r).then(i=>{let s=i.expiresIn,a=Date.now()+s*1e3;e(()=>({authItems:L(t.id,n().authItems,o=>({...o,isLoggedIn:!0,isPending:!1,session:{token:i.accessToken,expires:a}}))}))}).catch(i=>{e(()=>({authItems:L(t.id,n().authItems,s=>({...s,isLoggedIn:!1,isPending:!1,error:i.message}))}))})})},logout:()=>{let t=n().authItems[n().currentAuth];if(!t||t.isPending||!t.isLoggedIn)return;if(t.type!=="active")throw new Error("Cannot logout of non-active service");let r=t.service.service.find(a=>a.type==="AuthLogoutService2");if(!r)return;let i=`${r.id}?origin=${be()}`,s=window.open(i);e(()=>({authItems:L(t.id,n().authItems,a=>({...a,isLoggedIn:!1,session:null,isPending:!1}))}))},nextAuth:()=>{let t=n().authItems.length,r=n().currentAuth+1;r>=t||e(()=>({currentAuth:r}))},previousAuth:()=>{let t=n().currentAuth-1;t<0||e(()=>({currentAuth:t}))},setAuth:t=>{t!==-1&&(t<0||t>=n().authItems.length)||e(()=>({currentAuth:t}))},addService:(t,r)=>{if(!t.service)return;let i=t.service.find(o=>o.type==="AuthAccessTokenService2"),s=t;if(n().authItems.find(o=>o.service.id===t.id)){e(()=>({authItems:L(t.id,n().authItems,o=>({...o,instances:o.instances+1}))}));return}if(e(()=>({currentAuth:s.profile==="active"?0:n().currentAuth,authItems:[{id:t.id,type:t.profile,service:t,probeId:r,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...n().authItems]})),t.profile==="external"){if(!i)throw new Error("Token service not found");ee(i).then(o=>{e(()=>({authItems:L(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:o.accessToken,expires:o.expiresIn}}))}))}).catch(o=>{e(()=>({authItems:L(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:o.message}))}))})}if(t.profile==="kiosk"){if(!i)throw new Error("Token service not found");e(()=>({authItems:L(t.id,n().authItems,o=>({...o,isPending:!0}))})),ye(s).then(()=>{ee(i).then(o=>{e(()=>({authItems:L(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:o.accessToken,expires:o.expiresIn}}))}))}).catch(o=>{e(()=>({authItems:L(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,error:o.message}))}))})})}t.profile},removeService:(t,r)=>{let i=n().currentAuth===n().authItems.findIndex(a=>a.service.id===t.id),s=n().currentAuth;if(i){let a=n().authItems.find(u=>u.service.id===t.id);a&&a.instances>1||(s=n().authItems.findIndex(d=>d.service.id!==t.id&&d.instances>0))}e(()=>({authItems:L(t.id,n().authItems,a=>({...a,instances:a.instances-1})),currentAuth:s}))}})),xe= exports.q =(e,n)=>_vanilla.createStore.call(void 0, (t,r)=>({service:e,status:e?"unknown":"success",shouldRedirect:!1,redirectResource:null,shouldSubstitute:!1,substituteResource:null,error:null,errorHeading:null,errorNote:null,shouldDisplayResource:!1,token:n||null,async probe(){if(!r().service)return;let i=_optionalChain([r, 'call', _2 => _2(), 'access', _3 => _3.service, 'optionalAccess', _4 => _4.id]);if(!i){t({status:"error",error:"Service ID not found",errorHeading:{en:["Service ID not found"]}});return}t({status:"probing"});let s=r().token;try{let a=await fetch(i,{headers:s?{Authorization:`Bearer ${r().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(o=>o.json());if(a.status===200)t({status:"success",shouldDisplayResource:!0,error:null,errorHeading:null,errorNote:null,shouldSubstitute:!1,shouldRedirect:!1});else if(a.status<400&&a.status>=300){if(!a.location)throw new Error("Redirect location not found");t({status:"error",shouldDisplayResource:!1,shouldRedirect:!0,redirectResource:a.location||null})}else if(a.status===401)t({status:"error",shouldDisplayResource:!1,shouldRedirect:!1,shouldSubstitute:!!a.substitute,substituteResource:a.substitute||null,error:"Unauthorized",errorHeading:a.heading||{en:["Unauthorized"]},errorNote:a.note||null});else throw new Error("Unknown error")}catch(a){t({status:"error",error:a.message,errorHeading:{en:["Unknown error"]}})}},setToken(i){t({token:i})}}));function Se(e){let n=e.service||e.services||[],t={hasAuth:!1,services:{}};for(let r of n)if(r.type==="AuthProbeService2"){t.services.probe=r,t.hasAuth=!0;let i=r.service.filter(s=>s.type==="AuthAccessService2");i[0]&&(t.services.access=i[0])}return t}async function ee(e,{strict:n=!0}={}){return new Promise((t,r)=>{let i=Math.random().toString(36).substring(7),s=`${e.id}?messageId=${i}&origin=${window.location.origin}`,a=d=>{let l=d.data;if(l.messageId===i){if(n&&l.type!=="AuthAccessToken2"){o(),r("Invalid response, expected type=AuthAccessToken2");return}if(!l.accessToken){o(),r("Invalid response, expected accessToken");return}o(),t(l)}},o=()=>window.removeEventListener("message",a),u=document.createElement("iframe");u.src=s,u.style.display="none",document.body.appendChild(u),window.addEventListener("message",a)})}function be(e){let n=window.location;if(e){let t=document.createElement("a");return t.href=e,t.protocol+"//"+t.hostname+(t.port?":"+t.port:"")}return n.protocol+"//"+n.hostname+(n.port?":"+n.port:"")}async function ye(e){let n=`${e.id}?origin=${be()}`,t=window.open(n);if(!t)throw new Error("Failed to open window");return new Promise((r,i)=>{let s=setInterval(()=>{t.closed&&(clearInterval(s),r())},500)})}var _zustand = require('zustand');function Ie(e){let n=_react.useMemo.call(void 0, ()=>Se(e),[e]),t=Re(_optionalChain([n, 'access', _5 => _5.services, 'access', _6 => _6.access, 'optionalAccess', _7 => _7.id])),r=_react.useMemo.call(void 0, ()=>xe(n.services.probe,t),[n.services.probe]),i=_zustand.useStore.call(void 0, r);return _react.useEffect.call(void 0, ()=>{i.status==="unknown"&&!t&&i.probe()},[n.services.probe,i.status]),_react.useEffect.call(void 0, ()=>{t&&(i.setToken(t),i.probe())},[t]),[e,i,n.hasAuth]}var re=_react.createContext.call(void 0, null),Et= exports.v =_react.createContext.call(void 0, null);Et.displayName="CurrentAuth";var Mt=_react.createContext.call(void 0, null);Mt.displayName="AuthActions";function Yr({children:e}){let n=_react.useMemo.call(void 0, ()=>Ae(),[]);return _jsxruntime.jsx.call(void 0, re.Provider,{value:n,children:e})}function Wr(){return!!_react.useContext.call(void 0, re)}function $(){let e=_react.useContext.call(void 0, re);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function kt(){let e=$();return _zustand.useStore.call(void 0, e,t=>({login:t.login,logout:t.logout,nextAuth:t.nextAuth,previousAuth:t.previousAuth,setAuth:t.setAuth,addService:t.addService,removeService:t.removeService}))}function Gr(){let e=$();return _zustand.useStore.call(void 0, e,n=>n)}function wt(e){let n=$();return _zustand.useStore.call(void 0, n,r=>r.authItems.find(i=>i.service.id===e))}function Re(e){let n=$();return _zustand.useStore.call(void 0, n,r=>_optionalChain([r, 'access', _8 => _8.authItems, 'access', _9 => _9.find, 'call', _10 => _10(i=>i.id===e), 'optionalAccess', _11 => _11.session, 'optionalAccess', _12 => _12.token]))}function Qr(e){let n=$();return _zustand.useStore.call(void 0, n,r=>{let i=r.authItems.find(s=>s.service.id===e);return!i||!i.isLoggedIn||!i.session?null:_optionalChain([i, 'access', _13 => _13.session, 'optionalAccess', _14 => _14.token])||null})}function Vt(e){let n=kt(),t=wt(e.service.id);return _react.useEffect.call(void 0, ()=>(_optionalChain([n, 'optionalAccess', _15 => _15.addService, 'call', _16 => _16(e.service,e.probeId)]),()=>{_optionalChain([n, 'optionalAccess', _17 => _17.removeService, 'call', _18 => _18(e.service,e.probeId)])}),[e.service]),t?(t.error||!t.isLoggedIn,e.children):null}function te(){return null}function Xr(e){let[n,t,r]=Ie(e.resource),i=e.fallbackComponent||te,s=e.loadingComponent||te,a=e.errorComponent||te,o=t.service,u=null;if(!r||!o)return e.children(n);let d=o.service.filter(l=>l.type==="AuthAccessService2");t.status==="error"&&(u=_jsxruntime.jsx.call(void 0, a,{resource:e.resource,error:t.error||"",heading:t.errorHeading,note:t.errorNote,extra:e.extra})),(t.status==="unknown"||t.status==="probing")&&(u=_jsxruntime.jsx.call(void 0, s,{})),t.status==="success"&&(u=e.children(n));for(let l of d)u=_jsxruntime.jsx.call(void 0, Vt,{service:l,probeId:o.id,children:u},l.id);return u}var Ft=_zustand.create.call(void 0, )((e,n)=>{let t=new Map,r=()=>Math.random().toString(36).substring(2,15),i=s=>{let a=t.get(s);if(a)return a;let o=r();return t.set(s,o),o};return{stylesheets:{},loading:[],errors:[],async parseStylesheet(s){let{loadStylesheet:a,setStylesheet:o}=n();if(!s)return null;if(typeof s=="string")return s.startsWith("http")?{id:s,type:"CssStylesheet",value:await a(s)}:{id:o(s),type:"CssStylesheet",value:s};if(s.type==="CssStylesheet"){let u=s.id;if("value"in s){let d=Array.isArray(s.value)?s.value.join(`
|
|
2
|
+
`):s.value;if(d)return{id:o(d,u),type:"CssStylesheet",value:d}}if("id"in s&&s.id){let d=await a(s.id);return{id:s.id,type:"CssStylesheet",value:d}}}return null},async loadStylesheet(s){if(n().loading.includes(s))return"";try{let o=await fetch(s);if(!o.ok)throw new Error(`Failed to load stylesheet from ${s}`);let u=await o.text();return e(d=>({stylesheets:{...d.stylesheets,[s]:u}})),u}catch(o){return e(u=>({errors:[...u.errors,{url:s,error:o}]})),""}},setStylesheet(s,a){let o=a||i(s);return e(u=>({stylesheets:{...u.stylesheets,[o]:s}})),o}}});function Ee(e){let[n,t]=_react.useState.call(void 0, ),r=_optionalChain([n, 'optionalAccess', _19 => _19.stylesheet])===e&&_optionalChain([n, 'optionalAccess', _20 => _20.id])||"",{loading:i,errors:s,stylesheets:a,parseStylesheet:o}=Ft();return _react.useEffect.call(void 0, ()=>{if(!e)return;let d=!0;return o(e).then(l=>{d&&_optionalChain([l, 'optionalAccess', _21 => _21.id])&&t({stylesheet:e,id:l.id})}),()=>{d=!1}},[e,o]),[_react.useMemo.call(void 0, ()=>{let d={};return r&&a[r]&&(d[r]=a[r]),d},[r,a]),{id:r,stylesheets:a,loading:i,errors:s}]}var _annotationtargets = require('@iiif/helpers/annotation-targets');function Me(e={},n=[]){let{id:t,selector:r}=e,i=V(),s=I(),a=t||i.annotation,o=R(l=>a?l.iiif.entities.Annotation[a]:void 0,[a]),[u]=Ee(_optionalChain([o, 'optionalAccess', _22 => _22.stylesheet])),d=R(l=>o&&o.body?(Array.isArray(o.body)?o.body:[o.body]).map(p=>p?p.type==="SpecificResource"?{...p,source:s.get(p)}:p?l.iiif.entities[p.type][p.id]:null:null).filter(Boolean):[],[o]);return _react.useMemo.call(void 0, ()=>{if(!o)return;let l={...o,body:d,target:_annotationtargets.expandTarget.call(void 0, o.target,{typeMap:s.getState().iiif.mapping,loadedStylesheets:u})};return r?r(l):l},[o,r,d,u,...n])}function ke(e={},n=[]){let{id:t,selector:r}=e,i=V(),s=t||i.canvas,a=R(o=>s?o.iiif.entities.Canvas[s]:void 0,[s]);return _react.useMemo.call(void 0, ()=>{if(a)return r?r(a):a},[a,r,...n])}var _events = require('@iiif/helpers/events');function vi(e,n){let t=I(),r=_react.useMemo.call(void 0, ()=>_events.createEventsHelper.call(void 0, t),[t]),i=R(()=>e&&e.id?t.getResourceMeta(e.id,"eventManager"):null,[e]);return _react.useMemo.call(void 0, ()=>e?r.getListenersAsProps(e,n):{},[i,e,t,n])}var _styles = require('@iiif/helpers/styles');function Ci(e,n){let t=I(),r=_react.useMemo.call(void 0, ()=>_styles.createStylesHelper.call(void 0, t),[t]);return R(()=>{if(!e)return null;let i=r.getAppliedStyles(e.id);return i?n?i[n]:i:void 0},[e,n])}function Ve(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function Bt(e,n){switch(n.type){case"RESET":return n.state;case"FINISHED":return{...e,isFinished:!0,isPlaying:!1,playRequested:!1};case"PLAY_PAUSE":return{...e,isFinished:!1,isPlaying:!e.isPlaying};case"PLAY_REQUESTED":return{...e,isFinished:!1,playRequested:!0};case"PAUSE":return{...e,isPlaying:!1};case"PLAY":return{...e,isFinished:!1,playRequested:!1,isPlaying:!0};case"MUTE":return{...e,isMuted:!0};case"SET_VOLUME":return{...e,volume:n.volume,isMuted:n.volume===0};case"TOGGLE_MUTE":return{...e,isMuted:!e.isMuted};case"UNMUTE":return{...e,isMuted:!1}}return e}function oe(e){let n=Math.round(e);return`${Math.floor(n/60)}:${`${n%60}`.padStart(2,"0")}`}function Pi(e){let[n,t]=_react.useReducer.call(void 0, Bt,Ve(e.duration));_react.useEffect.call(void 0, ()=>{t({type:"RESET",state:Ve(e.duration)})},[e.duration]);let r=_react.useRef.call(void 0, null),i=_react.useRef.call(void 0, null),s=_react.useRef.call(void 0, null),a=_react.useRef.call(void 0, !1),o=_react.useCallback.call(void 0, ()=>{i.current&&r.current&&(i.current.innerHTML=oe(r.current.currentTime),s.current&&(s.current.style.width=`${r.current.currentTime/e.duration*100}%`),a.current!==r.current.muted&&(a.current=r.current.muted,t(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"})))},[e.duration]),u=_react.useCallback.call(void 0, ()=>{r.current&&(t({type:"PLAY_REQUESTED"}),r.current.play().then(()=>{t({type:"PLAY"})}),o())},[o]),d=_react.useCallback.call(void 0, ()=>{r.current&&(r.current.duration>0&&r.current.paused?u():l())},[o]),l=_react.useCallback.call(void 0, ()=>{r.current&&(r.current.pause(),t({type:"PAUSE"}),o())},[o]),p=_react.useCallback.call(void 0, ()=>{r.current&&(r.current.muted=!r.current.muted,t(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),T=_react.useCallback.call(void 0, ()=>{r.current&&(r.current.muted=!0,t({type:"MUTE"}))},[]),C=_react.useCallback.call(void 0, ()=>{r.current&&(r.current.muted=!1,t({type:"UNMUTE"}))},[]),g=_react.useCallback.call(void 0, S=>{r.current&&(r.current.muted=!1,r.current.volume=S/100,t({type:"SET_VOLUME",volume:S}))},[]),b=_react.useCallback.call(void 0, S=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(S*e.duration,e.duration)),o())},[]),x=_react.useCallback.call(void 0, S=>{if(r.current){let w=typeof S=="function"?S(r.current.currentTime):S;r.current.currentTime=Math.max(0,Math.min(w,e.duration)),o()}},[]);return _react.useEffect.call(void 0, ()=>{let S=setInterval(()=>{o()},350);return()=>clearInterval(S)},[o,e.duration]),_react.useEffect.call(void 0, ()=>{let S=()=>{t({type:"FINISHED"})},w=r.current;return _optionalChain([w, 'optionalAccess', _23 => _23.addEventListener, 'call', _24 => _24("ended",S)]),()=>_optionalChain([w, 'optionalAccess', _25 => _25.removeEventListener, 'call', _26 => _26("ended",S)])},[]),[{element:r,currentTime:i,progress:s},n,{play:u,pause:l,playPause:d,mute:T,unmute:C,toggleMute:p,setVolume:g,setDurationPercent:b,setTime:x}]}var Le=_react.createContext.call(void 0, null);Le.displayName="Strategy";function ki(){let e=_react.useContext.call(void 0, Le);if(!e)throw new Error("useStrategy must be used within a StrategyProvider");return e}var Ne=_react.createContext.call(void 0, null);Ne.displayName="Controls";function Ni(){let e=_react.useContext.call(void 0, Ne);if(!e)throw new Error("useStrategy must be used within a StrategyProvider");return e}function De(){let n=I().getStore();return _react.useMemo.call(void 0, ()=>t=>n.dispatch(t),[n])}var _actions = require('@iiif/helpers/vault/actions');function He(e){return typeof e!="string"&&e&&e.bindToVault}function Ue(){let e=I(),n=_react.useRef.call(void 0, []),t=De(),r=_react.useMemo.call(void 0, ()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);_react.useLayoutEffect.call(void 0, ()=>{e.loadSync(r,{id:r,type:"AnnotationPage",items:[]})},[r,e,t]);let i=R(o=>r&&o.iiif.entities.AnnotationPage[r]||null,[r,e,t]),s=_react.useCallback.call(void 0, (o,u)=>{if(r){if(He(o)){let p=o;p.__vault||p.bindToVault(e),o=typeof p.source=="string"?p.source:p.source.id,n.current[o]=p}else typeof o!="string"&&(o=o.id);let d=e.get({id:r,type:"AnnotationPage"}),l=e.get({id:o,type:"Annotation"});d&&l&&(d.items.find(p=>p.id===l.id)||t(_actions.entityActions.addReference({id:r,type:"AnnotationPage",key:"items",reference:{id:o,type:"Annotation"},index:u})))}},[r,e,t]),a=_react.useCallback.call(void 0, o=>{r&&(He(o)?o=typeof o.source=="string"?o.source:o.source.id:typeof o!="string"&&(o=o.id),n.current[o]&&n.current[o].beforeRemove(),e.get({id:r,type:"AnnotationPage"})&&t(_actions.entityActions.removeReference({id:r,type:"AnnotationPage",key:"items",reference:{id:o,type:"Annotation"}})))},[r,e,t]);return[i,{addAnnotation:s,removeAnnotation:a}]}var Oe=_react.createContext.call(void 0, null);function Gi(){let e=_react.useContext.call(void 0, Oe);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function Qi({children:e}){let[n,{addAnnotation:t,removeAnnotation:r}]=Ue();return _jsxruntime.jsx.call(void 0, Oe.Provider,{value:_react.useMemo.call(void 0, ()=>({fullPage:n,addAnnotation:t,removeAnnotation:r}),[n,t,r]),children:e})}function _e(e,n=[]){let t=I();_react.useEffect.call(void 0, ()=>{let r=e(t);return typeof r=="function"?()=>r():void 0},[t,...n])}var _imageservice = require('@iiif/helpers/image-service');var cn=_react2.default.createContext(new _imageservice.ImageServiceLoader);function Ke(){return _react.useContext.call(void 0, cn)}var _thumbnail = require('@iiif/helpers/thumbnail');var _image3 = require('@iiif/parser/image-3');function vn(e,n){try{let t=_image3.getId.call(void 0, e);if(!t)return;let r=_image3.parseImageServiceRequest.call(void 0, t),i=r.type==="image"?r.region.w:void 0,s=r.type==="image"?r.region.h:void 0,a=i||e.width,o=s||e.height,u=n.width||n.maxWidth,d=n.height||n.maxHeight;if(r.type!=="image"||r.region.full||r.region.square)return;(u||d)&&(r.size={max:!1,upscaled:!1,confined:!!(u&&d),width:u,height:d,version:3});let l=a&&o&&(u||d)?Math.min(u?u/a:1/0,d?d/o:1/0):void 0;return{id:_image3.imageServiceRequestToString.call(void 0, r),type:"fixed",width:a&&l?Math.round(a*l):u||a||e.width||0,height:o&&l?Math.round(o*l):d||o||e.height||0}}catch (e2){return}}function po(e,n,{canvasId:t,manifestId:r}={}){let i=I(),s=Ke(),a=_react.useMemo.call(void 0, ()=>_thumbnail.createThumbnailHelper.call(void 0, i,{imageServiceLoader:s}),[i,s]),[o,u]=_react.useState.call(void 0, ),d=O(r?{id:r}:void 0),l=ke(t?{id:t}:void 0),p=l||d,T=_react.useRef.call(void 0, !1);if(_react.useEffect.call(void 0, ()=>(T.current=!1,()=>{T.current=!0}),[]),!p)throw new Error("Must be called under a manifest or canvas context.");return _e(C=>{if(p.type==="Canvas"&&_optionalChain([p, 'access', _27 => _27.thumbnail, 'optionalAccess', _28 => _28.length])){let g=vn(C.get(p.thumbnail[0]),e);if(g&&!T.current){u(g);return}}a.getBestThumbnailAtSize(p,e,n).then(g=>{g.best&&!T.current&&u(g.best)})},[p,e.width,e.height,e.maxWidth,e.maxHeight,e.minWidth,e.minHeight,e.allowUnsafe,e.unsafeImageService,e.preferFixedSize,n]),o}var se=_react.createContext.call(void 0, null);se.displayName="ComplexTimeline";function Ao({children:e,store:n}){return _jsxruntime.jsx.call(void 0, se.Provider,{value:n,children:e})}function bn(){let e=_react.useContext.call(void 0, se);if(!e)throw new Error("useComplexTimeline must be used within a ComplexTimelineProvider");return e}function xo(e){return _zustand.useStore.call(void 0, bn(),e)}var _mitt = require('mitt'); var _mitt2 = _interopRequireDefault(_mitt);function $e({currentKeyFrameIndex:e,keyframes:n,targetTime:t,currentTime:r}){if(r<=t){let i=n.findIndex(u=>u.time>t),s=i===-1?n.length:i,a={},o=n.slice(e,s);for(let u of o)u.type==="enter"&&(a[u.id]=u),u.type==="change"&&(a[u.id]=_optionalChain([a, 'access', _29 => _29[u.id], 'optionalAccess', _30 => _30.type])==="enter"?{...a[u.id],isPrime:u.isPrime}:u),u.type==="exit"&&(a[u.id]?delete a[u.id]:a[u.id]=u);return[s,Object.values(a)]}return[e,[]]}function Ro({complexTimeline:e,startTime:n=0}){let t=_mitt2.default.call(void 0, ),r=new Map,i=!1,s=null,a=null,o=null,u=null,d=()=>v.getState().complexTimeline.items.filter(f=>f.type==="Video"||f.type==="Sound");function l(){let f=!i&&d().every(h=>(_optionalChain([r, 'access', _31 => _31.get, 'call', _32 => _32(h.annotationId), 'optionalAccess', _33 => _33.element, 'access', _34 => _34.readyState])||0)>=2),c=v.getState().isReady,m=d().filter(h=>{let y=_optionalChain([r, 'access', _35 => _35.get, 'call', _36 => _36(h.annotationId), 'optionalAccess', _37 => _37.element]);if(!y||y.readyState<2||!Number.isFinite(y.duration)||y.duration<=0)return!1;let A=y.seekable;return!_optionalChain([A, 'optionalAccess', _38 => _38.length])||!Array.from({length:A.length},(P,M)=>A.end(M)>A.start(M)).some(Boolean)}).map(h=>h.annotationId);v.setState({isReady:f,unseekableMedia:m}),f&&!c&&t.emit("complex-timeline.ready",{complexTimeline:v.getState().complexTimeline})}function p(f){v.setState({primeTime:f}),u&&(u.textContent=oe(f)),o&&(o.style.width=`${v.getState().duration?f/v.getState().duration*100:0}%`)}function T(f,c){let m=d().find(h=>h.annotationId===f);return m?Math.max(0,c-(_optionalChain([m, 'access', _39 => _39.target, 'access', _40 => _40.temporal, 'optionalAccess', _41 => _41.startTime])||0)+(_optionalChain([m, 'access', _42 => _42.selector, 'optionalAccess', _43 => _43.temporal, 'optionalAccess', _44 => _44.startTime])||0)):c}function C(f,c){let m=h=>{i||_optionalChain([r, 'access', _45 => _45.get, 'call', _46 => _46(f), 'optionalAccess', _47 => _47.element])!==c||!v.getState().isPlaying||(v.getState().pause(),v.setState({playbackError:h}))};try{_optionalChain([c, 'access', _48 => _48.play, 'call', _49 => _49(), 'optionalAccess', _50 => _50.catch, 'call', _51 => _51(m)])}catch(h){m(h)}}function g(f=!1){let c=v.getState();for(let[h,{element:y}]of r)if(c.visibleElements[h]){if(!f&&y.seeking)continue;let A=T(h,c.primeTime),P=Math.abs(y.currentTime-A);y.readyState>0&&P>(f?.01:.3)&&(y.currentTime=A),c.isPlaying&&y.paused&&C(h,y)}else y.paused||y.pause();let m=Object.entries(c.bufferMap).some(([h,y])=>y&&c.visibleElements[h]);c.isBuffering!==m&&v.setState({isBuffering:m})}function b(f){s=null;let c=v.getState(),m=a===null?0:(f-a)/1e3;a=f;let h=[...r].some(([y,{element:A}])=>c.visibleElements[y]&&A.seeking);if(!i&&c.isPlaying&&c.isReady&&!c.isBuffering&&!h){let y=c.currentPrime&&_optionalChain([r, 'access', _52 => _52.get, 'call', _53 => _53(c.currentPrime.id), 'optionalAccess', _54 => _54.element]),A=d().find(E=>E.annotationId===_optionalChain([c, 'access', _55 => _55.currentPrime, 'optionalAccess', _56 => _56.id])),P=y&&A&&!y.paused&&!y.ended?y.currentTime+(_optionalChain([A, 'access', _57 => _57.target, 'access', _58 => _58.temporal, 'optionalAccess', _59 => _59.startTime])||0)-(_optionalChain([A, 'access', _60 => _60.selector, 'optionalAccess', _61 => _61.temporal, 'optionalAccess', _62 => _62.startTime])||0):c.primeTime+m,M=Math.min(c.duration,Math.max(0,P));M<c.primeTime&&c.setTime(M);let[z,F]=$e({currentTime:v.getState().primeTime,targetTime:M,currentKeyFrameIndex:v.getState().nextKeyframeIndex,keyframes:c.complexTimeline.keyframes});p(M),z!==c.nextKeyframeIndex&&c.applyKeyframes(z,F),g(),M>=c.duration&&(c.pause(),v.setState({isFinished:!0}))}!i&&v.getState().clockRunning&&(s=requestAnimationFrame(b))}function x(){s!==null&&cancelAnimationFrame(s),s=null,a=null}function S(f){let c=r.get(f);if(!c)return;r.delete(f),c.cleanup(),c.element.pause();let m={...v.getState().bufferMap};delete m[f],v.setState({bufferMap:m,isBuffering:Object.entries(m).some(([h,y])=>y&&v.getState().visibleElements[h])}),l()}function w(f,c){if(i)return()=>{};S(f);let m=E=>{if(_optionalChain([r, 'access', _63 => _63.get, 'call', _64 => _64(f), 'optionalAccess', _65 => _65.element])!==c)return;let k=v.getState(),q={...k.bufferMap,[f]:E},B=Object.entries(q).some(([H,U])=>U&&k.visibleElements[H]);v.setState({bufferMap:q,isBuffering:B}),t.emit("complex-timeline.buffering",{id:f,isBuffering:E}),k.isBuffering&&!B&&t.emit("complex-timeline.finished-buffering",{})},h=()=>m(!0),y=()=>{m(!1),l()},z=[["loadedmetadata",()=>{l(),g(!0)}],["loadeddata",l],["progress",l],["durationchange",l],["waiting",h],["stalled",h],["canplay",y],["playing",y],["pause",()=>{let E=v.getState();c.paused&&!c.ended&&E.isPlaying&&E.visibleElements[f]&&E.pause()}],["error",()=>{v.getState().visibleElements[f]&&(v.getState().pause(),v.setState({playbackError:c.error||new Error(`Media failed: ${f}`)}))}],["emptied",l]];for(let[E,k]of z)c.addEventListener(E,k);let F={element:c,cleanup:()=>{for(let[E,k]of z)c.removeEventListener(E,k)}};return r.set(f,F),c.volume=v.getState().volume/100,c.muted=v.getState().isMuted,l(),g(!0),()=>{r.get(f)===F&&S(f)}}function D(){if(!i){i=!0,v.getState().pause(),x();for(let f of r.keys())S(f);o=u=null,t.all.clear(),v.setState({isReady:!1,clockRunning:!1,clockStartRequests:0})}}let v=_vanilla.createStore.call(void 0, (f,c)=>({complexTimeline:e,visibleElements:{},isReady:!1,unseekableMedia:[],isBuffering:!1,bufferMap:{},isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e.duration,primeTime:0,clockRunning:!1,clockStartTime:0,currentPrime:null,clockStartRequests:0,nextKeyframeIndex:0,playbackError:null,attachMediaElement:w,dispose:D,setElement:(m,h)=>{w(m,h)},removeElement:S,updateTimeline(m){if(i)return;let h=c().complexTimeline;if(h.keyframes===m.keyframes&&h.duration===m.duration){f({complexTimeline:m});for(let y of r.keys())d().some(A=>A.annotationId===y)||S(y);l();return}f({complexTimeline:m,duration:m.duration,visibleElements:{},currentPrime:null,nextKeyframeIndex:0});for(let y of r.keys())d().some(A=>A.annotationId===y)||S(y);c().setTime(c().primeTime),l()},startClock(){i||(c().clockRunning||(a=null,s=requestAnimationFrame(b)),f({clockRunning:!0,clockStartRequests:c().clockStartRequests+1}))},stopClock(){let m=Math.max(0,c().clockStartRequests-1);f({clockStartRequests:m,clockRunning:m>0}),m||x()},applyKeyframes(m,h){let y={...c().visibleElements},A=c().currentPrime;for(let P of h)P.type==="enter"&&(y[P.id]=P,t.emit("complex-timeline.enter",{id:P.id})),P.type==="exit"&&(y[P.id]=null,_optionalChain([A, 'optionalAccess', _66 => _66.id])===P.id&&(A=null),t.emit("complex-timeline.exit",{id:P.id})),P.isPrime&&P.type!=="exit"&&(A=y[P.id]||null);f({visibleElements:y,currentPrime:A,nextKeyframeIndex:m})},play(){if(!(i||c().isPlaying)){c().isFinished&&c().setTime(0),f({isPlaying:!0,playRequested:!0,isFinished:!1,playbackError:null}),a=null;for(let[m,{element:h}]of r)c().visibleElements[m]&&C(m,h);f({playRequested:!1})}},pause(){f({isPlaying:!1,playRequested:!1});for(let{element:m}of r.values())m.paused||m.pause()},playPause(){c().isPlaying?c().pause():c().play()},setDurationPercent(m){c().setTime(c().duration*m)},setTime(m){if(i)return;let h=c(),y=typeof m=="function"?m(h.primeTime):m;if(!Number.isFinite(y))return;let A=Math.max(0,Math.min(h.duration,y));for(let E of d()){let k=_optionalChain([r, 'access', _67 => _67.get, 'call', _68 => _68(E.annotationId), 'optionalAccess', _69 => _69.element]),q=_optionalChain([E, 'access', _70 => _70.target, 'access', _71 => _71.temporal, 'optionalAccess', _72 => _72.startTime])||0,B=_nullishCoalesce(_optionalChain([E, 'access', _73 => _73.target, 'access', _74 => _74.temporal, 'optionalAccess', _75 => _75.endTime]), () => (h.duration));if(!k||A<q||A>=B)continue;let H=T(E.annotationId,A),U=k.seekable;if(_optionalChain([U, 'optionalAccess', _76 => _76.length])&&Math.abs(k.currentTime-H)>.01&&!Array.from({length:U.length},(Yn,ue)=>H>=U.start(ue)&&H<=U.end(ue)).some(Boolean)){f({playbackError:new Error(`Media cannot seek to ${H.toFixed(1)}s: the source has not made that position seekable.`)});return}}f({playbackError:null});let P=h.nextKeyframeIndex,M=h.primeTime;if(A<M){for(let[E,k]of Object.entries(h.visibleElements))k&&t.emit("complex-timeline.exit",{id:E});f({visibleElements:{},currentPrime:null}),P=0,M=0}let[z,F]=$e({currentTime:M,targetTime:A,currentKeyFrameIndex:P,keyframes:h.complexTimeline.keyframes});p(A),h.applyKeyframes(z,F),f({isFinished:A>=h.duration}),A>=h.duration&&c().pause(),g(!0),a=null},mute(){for(let{element:m}of r.values())m.muted=!0;f({isMuted:!0})},unmute(){for(let{element:m}of r.values())m.muted=!1;f({isMuted:!1})},toggleMute(){c().isMuted?c().unmute():c().mute()},setVolume(m){if(Number.isFinite(m)){m=Math.min(100,Math.max(0,m));for(let{element:h}of r.values())h.volume=m/100;f({volume:m})}},setProgressElement(m){o=m,p(c().primeTime)},setCurrentTimeElement(m){u=m,p(c().primeTime)},clearProgressElement(){o=null},clearCurrentTimeElement(){u=null}}));return l(),v.getState().setTime(n),{store:v,emitter:t,attachMediaElement:w,dispose:D,getSnapshot:v.getState,subscribe:v.subscribe}}var Rn=[.6,.02,0,.75],Eo= exports.ha =16,Mo= exports.ia ={linear:[0,0,1,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1],"ease-in-cubic":Rn,"ease-out-cubic":[.215,.61,.355,1]};function ko(e,n,t){let r=Math.max(0,Math.min(1,t));return{x:e.x+(n.x-e.x)*r,y:e.y+(n.y-e.y)*r,width:e.width+(n.width-e.width)*r,height:e.height+(n.height-e.height)*r}}function wo(e,n){let t=[],r=e;for(let i of n)t.push({from:r,to:i}),r=i;return t}function Vo([e,n,t,r]){let i=3*e,s=3*(t-e)-i,a=1-i-s,o=3*n,u=3*(r-n)-o,d=1-o-u;function l(g){return((a*g+s)*g+i)*g}function p(g){return((d*g+u)*g+o)*g}function T(g){return(3*a*g+2*s)*g+i}function C(g,b=1e-6){let x=g;for(let D=0;D<8;D++){let v=l(x)-g;if(Math.abs(v)<b)return x;let f=T(x);if(Math.abs(f)<1e-6)break;x=x-v/f}let S=0,w=1;for(x=g;S<w;){let D=l(x);if(Math.abs(D-g)<b)return x;g>D?S=x:w=x,x=(w-S)*.5+S}return x}return g=>{if(g<=0)return 0;if(g>=1)return 1;let b=C(g);return p(b)}}function Lo(e,n){if(!n||n.length===0)return{index:-1,t:0};if(Number.isNaN(e)||!isFinite(e))return{index:-1,t:0};if(e<0)return{index:-1,t:0};if(e>=n.length)return{index:n.length,t:0};let t=Math.floor(e),r=e-t;return{index:t,t:r}}var Mn=_react.createContext.call(void 0, null);function zo(){return _react.useContext.call(void 0, Mn)}var Nn=_mitt2.default.call(void 0, ),ae= exports.ta =_react.createContext.call(void 0, {emitter:Nn});ae.displayName="Events";function qe(){return _react2.default.useContext(ae).emitter}function $o({emitter:e,children:n}){return _jsxruntime.jsx.call(void 0, ae.Provider,{value:_react.useMemo.call(void 0, ()=>({emitter:e}),[e]),children:n})}function Be({canvas:e,manifest:n,all:t,canvases:r}){let i=[];if(n)for(let s of n.annotations)i.indexOf(s.id)===-1&&i.push(s.id);if(t){if(r&&r.length)for(let s of r)for(let a of s.annotations)i.indexOf(a.id)===-1&&i.push(a.id)}else if(e)for(let s of e.annotations)i.indexOf(s.id)===-1&&i.push(s.id);return i}function _(){let{canvas:e}=V();return R(n=>{if(e)return n.iiif.mapping[e]==="Timeline"?n.iiif.entities.Timeline[e]:n.iiif.entities.Canvas[e]},[e])}function zn(e,n){let t=_optionalChain([e, 'optionalAccess', _77 => _77.iiif, 'optionalAccess', _78 => _78.meta, 'access', _79 => _79[n]]);return t?t.annotationPageManager:null}function je(e,n){return R(t=>{let r=[];if(!e)return r;let i=Object.keys(t.iiif.entities.AnnotationPage);for(let s of i)if(!n||n.indexOf(s)!==-1){let a=zn(t,s);a&&a.views&&a.views[e]&&r.push(s)}return r},[e,n])}function Hn(e,n){let t=_optionalChain([e, 'optionalAccess', _80 => _80.iiif, 'optionalAccess', _81 => _81.meta, 'access', _82 => _82[n]]);return t?t.annotationPageManager:null}function We(e,n={}){let t=I(),r=O(),i=_(),s=he(),a=_react.useMemo.call(void 0, ()=>Be({all:n.all,manifest:r,canvas:i,canvases:s}),[n.all,i,s,r]),o=je(e,n.all?void 0:a),u=_react.useCallback.call(void 0, l=>{e&&t.setMetaValue([l,"annotationPageManager","views"],p=>p&&!p[e]?p:{...p||{},[e]:!1})},[e,t]),d=_react.useCallback.call(void 0, (l,p={})=>{if(!e)return;let T=t.getState(),C=[];if(_optionalChain([p, 'optionalAccess', _83 => _83.deselectOthers])){let g=Object.keys(T.iiif.entities.AnnotationPage);for(let b of g){let x=Hn(T,b);x&&x.views&&x.views[e]&&C.push(b)}}for(let g of C)u(g);t.setMetaValue([l,"annotationPageManager","views"],g=>g&&g[e]?g:{...g||{},[e]:!0})},[e,u,t]);return{availablePageIds:a,enabledPageIds:o,setPageEnabled:d,setPageDisabled:u}}function Ge(e,n){return R((t,r)=>r.get(e.map(i=>({id:i,type:n}))),[e,n])}var Qe=new WeakMap,Xe=_react2.default.createContext(_imageservice.imageServices.store);Xe.displayName="ImageServicesHelper";function Q(){return _react.useContext.call(void 0, Xe)}function ds(e){let n=Q();return _zustand.useStore.call(void 0, n,({loaded:t})=>t[e])}function Ze(){let e=Q();return _zustand.useStore.call(void 0, e,({loadServiceSync:n})=>n)}function Je(){let e=Q();return _zustand.useStore.call(void 0, e,({loaded:n})=>n)}function et(){let e=Q(),n=_zustand.useStore.call(void 0, e,t=>t.loadService);return _react.useCallback.call(void 0, (t,r)=>{let i=t.id||t["@id"];if(!i)return n(t,r);let s=Qe.get(e);s||(s=new Map,Qe.set(e,s));let a=s.get(i);if(a)return a;let o=n(t,r).finally(()=>s.delete(i));return s.set(i,o),o},[n,e])}function tt(){let e=Ze(),n=et(),t=Je();return[_react.useCallback.call(void 0, (i,{height:s,width:a})=>{if(!i||i.width&&i.height&&_optionalChain([i, 'access', _84 => _84.tiles, 'optionalAccess', _85 => _85.length]))return i;let o=e(i,{height:s,width:a});return o||n(i,{height:s,width:a}),o||void 0},[n,e]),t]}function rt(e={}){let n=Z(),t=V(),r=_(),i=Me();return J(n,(s,a)=>{let o=e.canvasId||_optionalChain([r, 'optionalAccess', _86 => _86.id]),u=o?s.iiif.mapping[o]==="Timeline"?s.iiif.entities.Timeline[o]:s.iiif.entities.Canvas[o]:void 0;return u?e.enableSingleAnnotation&&t.annotation?_vault4.isVault4.call(void 0, a)?[a.get({id:t.annotation,type:"Annotation"})]:i?[i]:[]:u.items.flatMap(l=>_vault4.isVault4.call(void 0, a)?a.get({id:l.id,type:"AnnotationPage"}).items.map(p=>a.get({id:p.id,type:"Annotation"})):a.get({id:l.id,type:"AnnotationPage"}).items.map(p=>a.get({id:p.id,type:"Annotation"}))):[]},[r,e.canvasId,e.enableSingleAnnotation,t.annotation,i])}var _paintingannotations = require('@iiif/helpers/painting-annotations');function ot(e,n=[]){let t=I(),r=_react.useMemo.call(void 0, ()=>_paintingannotations.createPaintingAnnotationsHelper.call(void 0, t),[t]),i=rt({enableSingleAnnotation:_optionalChain([e, 'optionalAccess', _87 => _87.enableSingleAnnotation])}),[s,a]=_react.useState.call(void 0, _optionalChain([e, 'optionalAccess', _88 => _88.defaultChoices])||[]),o=_react.useMemo.call(void 0, ()=>r.getPaintables(i,s),[t,i,s,...n]),d={makeChoice:_react.useCallback.call(void 0, (l,{deselectOthers:p=!0,deselect:T=!1}={})=>{o.choice&&a(C=>{if(T){let b=C.filter(x=>x!==l);if(b.length===0){let x=o.items[0].resource.id;return x?[x]:[]}return b}if(p)return[l];let g=[...C];if(g.length===0&&o.items.length){let b=o.items[0].resource.id;b&&g.push(b)}return C.indexOf(l)!==-1?C:[...C,l]})},[o.choice])};return[o,d]}function Os(e){let n=O(),t=_(),r=I(),i=qe(),s=_optionalChain([e, 'optionalAccess', _89 => _89.emitter])||i,[a,o]=tt(),{enabledPageIds:u}=We(_optionalChain([e, 'optionalAccess', _90 => _90.annotationPageManagerId])||_optionalChain([n, 'optionalAccess', _91 => _91.id])||_optionalChain([t, 'optionalAccess', _92 => _92.id]),{all:!1}),d=Ge(u,"AnnotationPage"),l=_optionalChain([e, 'optionalAccess', _93 => _93.strategies])||["empty","images","media","textual-content","complex-timeline"],[p,T]=ot(e,[o]);_react.useEffect.call(void 0, ()=>{let g=b=>{T.makeChoice(b.choiceId,{deselectOthers:b.deselectOthers,deselect:b.deselect})};return s.on("make-choice",g),()=>{s.off("make-choice",g)}},[s,T.makeChoice]);let C=_react.useMemo.call(void 0, ()=>_chunkZEGT4BARcjs.q.call(void 0, {canvas:t,paintables:p,supports:l,loadImageService:a,vault:r}),[t,p,r,T.makeChoice,o,l.join(",")]);return _react.useEffect.call(void 0, ()=>{let g=p.allChoices,b={canvasId:_optionalChain([t, 'optionalAccess', _94 => _94.id]),manifestId:_optionalChain([n, 'optionalAccess', _95 => _95.id])};g&&s.emit("choice-change",{choice:g,partOf:b})},[_optionalChain([t, 'optionalAccess', _96 => _96.id]),_optionalChain([n, 'optionalAccess', _97 => _97.id]),p.allChoices,s]),_react.useMemo.call(void 0, ()=>C.type==="unknown"?[C,_chunkZEGT4BARcjs.h]:[{...C,annotations:{pages:d}},T],[C,d,T.makeChoice])}exports.a = me; exports.b = V; exports.c = j; exports.d = Jn; exports.e = X; exports.f = cr; exports.g = Z; exports.h = I; exports.i = J; exports.j = R; exports.k = ge; exports.l = br; exports.m = he; exports.n = O; exports.o = Mr; exports.p = Ae; exports.q = xe; exports.r = Se; exports.s = ee; exports.t = ye; exports.u = re; exports.v = Et; exports.w = Mt; exports.x = Yr; exports.y = Wr; exports.z = $; exports.A = kt; exports.B = Gr; exports.C = wt; exports.D = Re; exports.E = Qr; exports.F = Xr; exports.G = Ft; exports.H = Ee; exports.I = Me; exports.J = ke; exports.K = vi; exports.L = Ci; exports.M = _; exports.N = oe; exports.O = Pi; exports.P = Le; exports.Q = ki; exports.R = Ne; exports.S = Ni; exports.T = De; exports.U = Ue; exports.V = Oe; exports.W = Gi; exports.X = Qi; exports.Y = _e; exports.Z = cn; exports._ = Ke; exports.$ = vn; exports.aa = po; exports.ba = Ao; exports.ca = bn; exports.da = xo; exports.ea = $e; exports.fa = Ro; exports.ga = Rn; exports.ha = Eo; exports.ia = Mo; exports.ja = ko; exports.ka = wo; exports.la = Vo; exports.ma = Lo; exports.na = ds; exports.oa = Ze; exports.pa = et; exports.qa = Mn; exports.ra = zo; exports.sa = Nn; exports.ta = ae; exports.ua = qe; exports.va = $o; exports.wa = Be; exports.xa = We; exports.ya = Ge; exports.za = tt; exports.Aa = rt; exports.Ba = ot; exports.Ca = Os;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkL576POBVcjs = require('./chunk-L576POBV.cjs');var _vault = require('@iiif/helpers/vault');var _react = require('react');function P(e){let t=_react.useContext.call(void 0, _chunkL576POBVcjs.e);return e||t.vault||_vault.globalVault.call(void 0, )}function j(e,{noCache:t=!1}={}){let n=typeof e=="string"?e:e.id,i=P(),a=_react.useMemo.call(void 0, ()=>{let o=t?void 0:i.get(n,{skipSelfReturn:!0})||void 0;return{id:n,vault:i,noCache:t,initialData:o}},[n,i,t]),[s,r]=_react.useState.call(void 0, );_react.useEffect.call(void 0, ()=>{let o=!0;return a.initialData||i.load(n).then(l=>{o&&r({request:a,resource:l})},l=>{o&&r({request:a,error:l instanceof Error?l:new Error(String(l))})}),()=>{o=!1}},[a]);let u=_optionalChain([s, 'optionalAccess', _2 => _2.request])===a?s:void 0,c=_optionalChain([u, 'optionalAccess', _3 => _3.resource])||a.initialData;return{id:_optionalChain([c, 'optionalAccess', _4 => _4.id])||n,requestId:n,isLoaded:!!c,error:_optionalChain([u, 'optionalAccess', _5 => _5.error]),cached:!!c&&c===a.initialData,resource:c}}function K(e,t){let{id:n,isLoaded:i,error:a,resource:s,requestId:r,cached:u}=j(e,t);return{id:n,isLoaded:i,error:a,manifest:s,requestId:r,cached:u}}var _jsxruntime = require('react/jsx-runtime');function $({manifest:e,children:t}){return _jsxruntime.jsx.call(void 0, _chunkL576POBVcjs.c,{value:{manifest:e},children:t})}function B({range:e,children:t}){return _jsxruntime.jsx.call(void 0, _chunkL576POBVcjs.c,{value:{range:e},children:t})}function F(e={},t=[]){let{id:n,selector:i}=e,a=_chunkL576POBVcjs.b.call(void 0, ),s=n||a.range,r=_chunkL576POBVcjs.j.call(void 0, u=>s?u.iiif.entities.Range[s]:void 0,[s]);return _react.useMemo.call(void 0, ()=>{if(r)return i?i(r):r},[r,i,...t])}var _sequences = require('@iiif/helpers/sequences');function U(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.id=="string"&&(t.type==="Canvas"||t.type==="Timeline")}function Y(e,t,n={}){if(t.type!=="Manifest"||!t.items.some(o=>U(o)&&o.type==="Timeline")){let[o,l]=_sequences.getManifestSequence.call(void 0, e,t,n);return[o.map(({id:p})=>({id:p,type:"Canvas"})),l]}let i=t.items.flatMap(o=>U(o)?[{id:o.id,type:o.type}]:[]),[a,s]=_sequences.getManifestSequence.call(void 0, e,t,n),r=s.map(o=>o.map(l=>_optionalChain([a, 'access', _6 => _6[l], 'optionalAccess', _7 => _7.id])).filter(Boolean)),u=new Set,c=[];for(let[o,l]of i.entries()){if(l.type==="Timeline"){c.push([o]);continue}if(u.has(l.id))continue;let p=r.find(m=>m.includes(l.id))||[l.id];p.forEach(m=>u.add(m)),c.push(p.flatMap(m=>{let v=i.findIndex(A=>A.id===m);return v<0?[]:[v]}))}return[i,c]}function M({startCanvas:e,disablePaging:t}){let n=_chunkL576POBVcjs.h.call(void 0, ),i=_chunkL576POBVcjs.n.call(void 0, ),a=F(),[s,r]=_react.useState.call(void 0, void 0),u=a||i;if(!u)throw new Error("Nothing selected");let[c,o]=_react.useMemo.call(void 0, ()=>Y(n,u,{disablePaging:t}),[n,u,t]),l=_react.useRef.call(void 0, o);if(l.current!==o){let g=l.current[s][0],S=o.findIndex(oe=>oe.includes(g));l.current=o,r(S)}let p=_react.useCallback.call(void 0, d=>{let g=o.findIndex(S=>S.includes(d));r(g===-1?0:g)},[c,o]),m=_react.useCallback.call(void 0, d=>{let g=c.findIndex(S=>S.id===d);g!==-1?p(g):r(0)},[c,o]),v=_react.useCallback.call(void 0, ()=>{r(d=>d>=o.length-1?d:d+1)},[o]),A=_react.useCallback.call(void 0, ()=>{r(d=>d<=0?0:d-1)},[o]);return typeof s>"u"&&(e?m(e):r(0)),{visibleItems:_optionalChain([o, 'access', _8 => _8[s], 'optionalAccess', _9 => _9.map, 'call', _10 => _10(d=>c[d].id)])||[],cursor:s,items:c,sequence:o,hasPrevious:s>0,hasNext:s<o.length-1,setSequenceIndex:r,setCanvasIndex:p,setCanvasId:m,next:v,previous:A}}function ft(e){return M(e)}function _(){let e=_chunkL576POBVcjs.n.call(void 0, );return e?e.service.find(t=>t.profile==="SearchService1"||t.profile==="http://iiif.io/api/search/1/search"):void 0}var _vanilla = require('zustand/vanilla');var ve=e=>e.id||e["@id"];function Se(e){return(Array.isArray(e.service)?e.service:[e.service]).find(n=>_optionalChain([n, 'optionalAccess', _11 => _11.profile])==="http://iiif.io/api/search/0/autocomplete"||_optionalChain([n, 'optionalAccess', _12 => _12.profile])==="http://iiif.io/api/search/1/autocomplete"||_optionalChain([n, 'optionalAccess', _13 => _13.profile])==="AutoCompleteService1")}var G=e=>{let t;typeof e=="string"?t={"@context":"http://iiif.io/api/search/1/context.json",profile:"http://iiif.io/api/search/1/search","@id":e,id:e,service:[]}:t=e;let n=t?ve(t):void 0,i=null;return _vanilla.createStore.call(void 0, (a,s)=>({service:t,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!t,hasAutocomplete:t?!!Se(t):!1,errorMessage:"",search(r,u={}){if(!n)throw new Error("No search service found.");i&&!i.signal.aborted&&i.abort(),i=new AbortController;let c=new URLSearchParams;r.q&&c.set("q",r.q),r.motivation&&c.set("motivation",r.motivation),r.date&&c.set("date",r.date),r.user&&c.set("user",r.user),a({loading:!0}),fetch(`${n}?${c.toString()}`,{signal:i.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...u.headers||{}}}).then(async o=>{if(!_optionalChain([i, 'optionalAccess', _14 => _14.signal, 'access', _15 => _15.aborted]))if(o.ok){let l=await o.json();a({resources:l.resources,error:!1,errorMessage:""})}else a({resources:[],error:!0,errorMessage:o.statusText})})},clearSearch(){a({resources:[],error:!1,errorMessage:""})},highlightResult(r){let u=s().resources.find(c=>c["@id"]===r);a({highlight:u})},nextResult(){let r=s().resources,u=s().highlight;if(!u){a({highlight:r[0]||null});return}let c=r.findIndex(o=>o["@id"]===u["@id"]);if(c===-1){a({highlight:r[0]||null});return}a({highlight:r[c+1]||r[0]||null})},previousResult(){let r=s().resources,u=s().highlight;if(!u){a({highlight:r[r.length-1]||null});return}let c=r.findIndex(o=>o["@id"]===u["@id"]);if(c===-1){a({highlight:r[r.length-1]||null});return}if(c===0){a({highlight:r[r.length-1]||null});return}a({highlight:r[c-1]||r[r.length-1]||null})}}))};var _zustand = require('zustand');var E=_react.createContext.call(void 0, null);E.displayName="Search";function J(e){let t=_();return e.store?_jsxruntime.jsx.call(void 0, E.Provider,{value:e.store,children:e.children}):_jsxruntime.jsx.call(void 0, Ce,{service:t,children:e.children})}function Ce({service:e,children:t}){let n=_react.useMemo.call(void 0, ()=>G(e),[e]);return _jsxruntime.jsx.call(void 0, E.Provider,{value:n,children:t})}var x=()=>{},X= exports.k =_react.createContext.call(void 0, {setCurrentCanvasId:x,setCurrentCanvasIndex:x,nextCanvas:x,previousCanvas:x,items:[],sequence:[],setSequenceIndex:x,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function Ae(e){let t=_chunkL576POBVcjs.n.call(void 0, ),{cursor:n,visibleItems:i,next:a,sequence:s,items:r,setCanvasIndex:u,setCanvasId:c,previous:o,setSequenceIndex:l,hasNext:p,hasPrevious:m}=M({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),v=_react.useMemo.call(void 0, ()=>({sequence:s,items:r,setCurrentCanvasId:c,nextCanvas:a,previousCanvas:o,totalCanvases:r.length,setCurrentCanvasIndex:u,setSequenceIndex:l,currentSequenceIndex:n,hasNext:p,hasPrevious:m}),[s,r,c,a,o,r,u,l,n]);return t?i.length===0?null:_jsxruntime.jsx.call(void 0, X.Provider,{value:v,children:_jsxruntime.jsx.call(void 0, _chunkL576POBVcjs.k.Provider,{value:i,children:_jsxruntime.jsx.call(void 0, _chunkL576POBVcjs.d,{canvas:i[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),_jsxruntime.jsx.call(void 0, "div",{children:"Sorry, something went wrong."}))}function _t(e){let t=P(e.vault),n=K(e.manifest);if(!n)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),_jsxruntime.jsx.call(void 0, "div",{children:"Sorry, something went wrong."});if(n.error)return _jsxruntime.jsx.call(void 0, "div",{children:n.error.toString()});if(!n.isLoaded)return _jsxruntime.jsx.call(void 0, "div",{children:"Loading..."});let i=_jsxruntime.jsx.call(void 0, Ae,{...e,children:e.children});return _jsxruntime.jsx.call(void 0, _chunkL576POBVcjs.f,{vault:t,children:_jsxruntime.jsx.call(void 0, $,{manifest:n.id,children:_jsxruntime.jsx.call(void 0, _chunkL576POBVcjs.x,{children:_jsxruntime.jsx.call(void 0, J,{children:e.rangeId?_jsxruntime.jsx.call(void 0, B,{range:e.rangeId,children:i}):i})})})})}function Gt(){return _react.useContext.call(void 0, X)}var _mitt = require('mitt'); var _mitt2 = _interopRequireDefault(_mitt);var Ve=_mitt2.default.call(void 0, ),V= exports.o =_react.createContext.call(void 0, Ve);function tr({children:e,emitter:t}){return _jsxruntime.jsx.call(void 0, V.Provider,{value:t,children:e})}function rr(){return _react.useContext.call(void 0, V)}function nr(e,t,n=[]){let i=_react.useContext.call(void 0, V);_react.useEffect.call(void 0, ()=>{let a=s=>{t(s)};return i.on(e,a),()=>{i.off(e,a)}},[i,e,...n])}function ee(){return{default:{backgroundColor:"rgba(0,0,0,0)",borderWidth:"2px",borderColor:"rgba(252,0,98, .5)"},highlighted:{backgroundColor:"rgba(75, 103, 225, 0.4)",borderWidth:"1px",borderColor:"rgba(75,103,225,0.99)"},hidden:{borderWidth:"0px",borderColor:"rgba(0,0,0,0)",backgroundColor:"rgba(0,0,0,0)",hidden:!0}}}var I=_react.createContext.call(void 0, ee());I.displayName="AnnotationStyle";function sr(){return _react.useContext.call(void 0, I)}function cr({theme:e,children:t}){let n=_react.useMemo.call(void 0, ()=>e||ee(),[e]);return _jsxruntime.jsx.call(void 0, I.Provider,{value:n,children:t})}function pr(e={},t=[]){let{id:n,selector:i}=e,a=_chunkL576POBVcjs.b.call(void 0, ),s=n||a.annotationPage,r=_chunkL576POBVcjs.j.call(void 0, u=>s?u.iiif.entities.AnnotationPage[s]:void 0,[s]);return _react.useMemo.call(void 0, ()=>{if(r)return i?i(r):r},[r,...t])}var te=_react.createContext.call(void 0, null),re=_react.createContext.call(void 0, null),ne=_react.createContext.call(void 0, null);function vr(){let e=_react.useContext.call(void 0, te);if(!e)throw new Error("Ctx not found");return e}function Sr(){let e=_react.useContext.call(void 0, re);if(!e)throw new Error("Ctx not found");return e}function xr(){let e=_react.useContext.call(void 0, ne);if(!e)throw new Error("Ctx not found");return e}function yr({actions:e,state:t,children:n,currentTime:i,progress:a,element:s}){return _jsxruntime.jsx.call(void 0, ne.Provider,{value:{currentTime:i,progress:a,element:s},children:_jsxruntime.jsx.call(void 0, re.Provider,{value:e,children:_jsxruntime.jsx.call(void 0, te.Provider,{value:t,children:n})})})}var _helpers = require('@iiif/helpers');function wr(){let e=_chunkL576POBVcjs.n.call(void 0, ),t=_chunkL576POBVcjs.M.call(void 0, );return _react.useMemo.call(void 0, ()=>{if(!e||!t||!e.start)return null;let n=_helpers.expandTarget.call(void 0, e.start);return!n||n.source.id!==t.id||!n||!n.selector||n.selector.type!=="TemporalSelector"?null:n.selector.temporal},[e,t])}exports.a = P; exports.b = j; exports.c = K; exports.d = $; exports.e = B; exports.f = F; exports.g = M; exports.h = ft; exports.i = _; exports.j = E; exports.k = X; exports.l = Ae; exports.m = _t; exports.n = Gt; exports.o = V; exports.p = tr; exports.q = rr; exports.r = nr; exports.s = ee; exports.t = sr; exports.u = cr; exports.v = pr; exports.w = vr; exports.x = Sr; exports.y = xr; exports.z = yr; exports.A = wr;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{h as ce,q as le}from"./chunk-L2GTJVPY.js";import ut,{useContext as ct,useMemo as lt}from"react";import{jsx as dt}from"react/jsx-runtime";var mt={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0,scene:void 0,timeline:void 0},me=ut.createContext(mt),V=()=>ct(me);function j({value:e,children:n}){let t=V(),r=lt(()=>({...t,...e}),[e,t]);return dt(me.Provider,{value:r,children:n})}import{jsx as ft}from"react/jsx-runtime";function Jn({canvas:e,children:n}){return ft(j,{value:{canvas:e},children:n})}import pt,{useMemo as gt,useState as ht}from"react";import{Vault as de,globalVault as yt}from"@iiif/helpers/vault";import{Vault4 as vt}from"@iiif/helpers/vault-4";import{jsx as fe}from"react/jsx-runtime";var X=pt.createContext({vault:null,setVaultInstance:e=>{}});function cr({vault:e,vaultOptions:n,useGlobal:t,resources:r,version:i=3,children:s}){let a=gt(()=>e||(i===4?new vt(n):t?yt(n):n?new de(n):new de),[t,e,n,i]),[o,u]=ht(),d=p=>u({generated:a,vault:p}),l=e||(o&&o.generated===a?o.vault:a);return fe(X.Provider,{value:{vault:l,setVaultInstance:d},children:fe(j,{value:r||{},children:s})})}import{useContext as At}from"react";function Z(){let{vault:e}=At(X);if(!e)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e}function I(){return Z()}import{isVault4 as xt}from"@iiif/helpers/vault-4";import{useMemo as St,useSyncExternalStore as bt}from"react";function J(e,n,t=[]){let r=St(()=>{let i=e.getState(),s=n(i,e);return{snapshot(){let a=e.getState();return a!==i&&(s=n(a,e),i=a),s},subscribe(a){return xt(e)?e.subscribe(()=>a(),!0):e.subscribe(()=>a(),!0)}}},[e,...t]);return bt(r.subscribe,r.snapshot,r.snapshot)}function R(e,n=[]){return J(I(),e,n)}import{useContext as pe}from"react";import Tt from"react";var ge=Tt.createContext([]);function br(){let e=pe(ge);return R(n=>e.map(t=>n.iiif.entities.Canvas[t]).filter(Boolean),[e])}function he(){let e=pe(ge);return R(n=>e.flatMap(t=>{let r=n.iiif.mapping[t]==="Timeline"?n.iiif.entities.Timeline[t]:n.iiif.entities.Canvas[t];return r?[r]:[]}),[e])}import{useMemo as Ct}from"react";function O(e={},n=[]){let{id:t,selector:r}=e,i=V(),s=t||i.manifest,a=R(o=>s?o.iiif.entities.Manifest[s]:void 0,[s]);return Ct(()=>{if(a)return r?r(a):a},[a,r,...n])}import{createStore as ve}from"zustand/vanilla";function Mr(e){let n=e.service||e.services||[];for(let t of n)if(t.type==="AuthProbeService2")return!0;return!1}function L(e,n,t){let r=n.findIndex(a=>a.service.id===e);if(r===-1)return n;let i=[...n],s=t(i[r]);return s===i[r]?n:(i[r]=s,i)}var Ae=()=>ve((e,n)=>({currentAuth:-1,authItems:[],login:()=>{let t=n().authItems[n().currentAuth];if(!t||t.isPending||t.isLoggedIn)return;if(t.type!=="active")throw new Error("Cannot login to non-active service");let r=t.service.service.find(i=>i.type==="AuthAccessTokenService2");if(!r)throw new Error("Token service not found");e(()=>({authItems:L(t.id,n().authItems,i=>({...i,isPending:!0}))})),ye(t.service).then(()=>{ee(r).then(i=>{let s=i.expiresIn,a=Date.now()+s*1e3;e(()=>({authItems:L(t.id,n().authItems,o=>({...o,isLoggedIn:!0,isPending:!1,session:{token:i.accessToken,expires:a}}))}))}).catch(i=>{e(()=>({authItems:L(t.id,n().authItems,s=>({...s,isLoggedIn:!1,isPending:!1,error:i.message}))}))})})},logout:()=>{let t=n().authItems[n().currentAuth];if(!t||t.isPending||!t.isLoggedIn)return;if(t.type!=="active")throw new Error("Cannot logout of non-active service");let r=t.service.service.find(a=>a.type==="AuthLogoutService2");if(!r)return;let i=`${r.id}?origin=${be()}`,s=window.open(i);e(()=>({authItems:L(t.id,n().authItems,a=>({...a,isLoggedIn:!1,session:null,isPending:!1}))}))},nextAuth:()=>{let t=n().authItems.length,r=n().currentAuth+1;r>=t||e(()=>({currentAuth:r}))},previousAuth:()=>{let t=n().currentAuth-1;t<0||e(()=>({currentAuth:t}))},setAuth:t=>{t!==-1&&(t<0||t>=n().authItems.length)||e(()=>({currentAuth:t}))},addService:(t,r)=>{if(!t.service)return;let i=t.service.find(o=>o.type==="AuthAccessTokenService2"),s=t;if(n().authItems.find(o=>o.service.id===t.id)){e(()=>({authItems:L(t.id,n().authItems,o=>({...o,instances:o.instances+1}))}));return}if(e(()=>({currentAuth:s.profile==="active"?0:n().currentAuth,authItems:[{id:t.id,type:t.profile,service:t,probeId:r,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...n().authItems]})),t.profile==="external"){if(!i)throw new Error("Token service not found");ee(i).then(o=>{e(()=>({authItems:L(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:o.accessToken,expires:o.expiresIn}}))}))}).catch(o=>{e(()=>({authItems:L(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:o.message}))}))})}if(t.profile==="kiosk"){if(!i)throw new Error("Token service not found");e(()=>({authItems:L(t.id,n().authItems,o=>({...o,isPending:!0}))})),ye(s).then(()=>{ee(i).then(o=>{e(()=>({authItems:L(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:o.accessToken,expires:o.expiresIn}}))}))}).catch(o=>{e(()=>({authItems:L(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,error:o.message}))}))})})}t.profile},removeService:(t,r)=>{let i=n().currentAuth===n().authItems.findIndex(a=>a.service.id===t.id),s=n().currentAuth;if(i){let a=n().authItems.find(u=>u.service.id===t.id);a&&a.instances>1||(s=n().authItems.findIndex(d=>d.service.id!==t.id&&d.instances>0))}e(()=>({authItems:L(t.id,n().authItems,a=>({...a,instances:a.instances-1})),currentAuth:s}))}})),xe=(e,n)=>ve((t,r)=>({service:e,status:e?"unknown":"success",shouldRedirect:!1,redirectResource:null,shouldSubstitute:!1,substituteResource:null,error:null,errorHeading:null,errorNote:null,shouldDisplayResource:!1,token:n||null,async probe(){if(!r().service)return;let i=r().service?.id;if(!i){t({status:"error",error:"Service ID not found",errorHeading:{en:["Service ID not found"]}});return}t({status:"probing"});let s=r().token;try{let a=await fetch(i,{headers:s?{Authorization:`Bearer ${r().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(o=>o.json());if(a.status===200)t({status:"success",shouldDisplayResource:!0,error:null,errorHeading:null,errorNote:null,shouldSubstitute:!1,shouldRedirect:!1});else if(a.status<400&&a.status>=300){if(!a.location)throw new Error("Redirect location not found");t({status:"error",shouldDisplayResource:!1,shouldRedirect:!0,redirectResource:a.location||null})}else if(a.status===401)t({status:"error",shouldDisplayResource:!1,shouldRedirect:!1,shouldSubstitute:!!a.substitute,substituteResource:a.substitute||null,error:"Unauthorized",errorHeading:a.heading||{en:["Unauthorized"]},errorNote:a.note||null});else throw new Error("Unknown error")}catch(a){t({status:"error",error:a.message,errorHeading:{en:["Unknown error"]}})}},setToken(i){t({token:i})}}));function Se(e){let n=e.service||e.services||[],t={hasAuth:!1,services:{}};for(let r of n)if(r.type==="AuthProbeService2"){t.services.probe=r,t.hasAuth=!0;let i=r.service.filter(s=>s.type==="AuthAccessService2");i[0]&&(t.services.access=i[0])}return t}async function ee(e,{strict:n=!0}={}){return new Promise((t,r)=>{let i=Math.random().toString(36).substring(7),s=`${e.id}?messageId=${i}&origin=${window.location.origin}`,a=d=>{let l=d.data;if(l.messageId===i){if(n&&l.type!=="AuthAccessToken2"){o(),r("Invalid response, expected type=AuthAccessToken2");return}if(!l.accessToken){o(),r("Invalid response, expected accessToken");return}o(),t(l)}},o=()=>window.removeEventListener("message",a),u=document.createElement("iframe");u.src=s,u.style.display="none",document.body.appendChild(u),window.addEventListener("message",a)})}function be(e){let n=window.location;if(e){let t=document.createElement("a");return t.href=e,t.protocol+"//"+t.hostname+(t.port?":"+t.port:"")}return n.protocol+"//"+n.hostname+(n.port?":"+n.port:"")}async function ye(e){let n=`${e.id}?origin=${be()}`,t=window.open(n);if(!t)throw new Error("Failed to open window");return new Promise((r,i)=>{let s=setInterval(()=>{t.closed&&(clearInterval(s),r())},500)})}import{createContext as ne,useContext as Pe,useEffect as Rt,useMemo as Pt}from"react";import{useStore as K}from"zustand";import{useEffect as Te,useMemo as Ce}from"react";import{useStore as It}from"zustand";function Ie(e){let n=Ce(()=>Se(e),[e]),t=Re(n.services.access?.id),r=Ce(()=>xe(n.services.probe,t),[n.services.probe]),i=It(r);return Te(()=>{i.status==="unknown"&&!t&&i.probe()},[n.services.probe,i.status]),Te(()=>{t&&(i.setToken(t),i.probe())},[t]),[e,i,n.hasAuth]}import{jsx as Y}from"react/jsx-runtime";var re=ne(null),Et=ne(null);Et.displayName="CurrentAuth";var Mt=ne(null);Mt.displayName="AuthActions";function Yr({children:e}){let n=Pt(()=>Ae(),[]);return Y(re.Provider,{value:n,children:e})}function Wr(){return!!Pe(re)}function $(){let e=Pe(re);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function kt(){let e=$();return K(e,t=>({login:t.login,logout:t.logout,nextAuth:t.nextAuth,previousAuth:t.previousAuth,setAuth:t.setAuth,addService:t.addService,removeService:t.removeService}))}function Gr(){let e=$();return K(e,n=>n)}function wt(e){let n=$();return K(n,r=>r.authItems.find(i=>i.service.id===e))}function Re(e){let n=$();return K(n,r=>r.authItems.find(i=>i.id===e)?.session?.token)}function Qr(e){let n=$();return K(n,r=>{let i=r.authItems.find(s=>s.service.id===e);return!i||!i.isLoggedIn||!i.session?null:i.session?.token||null})}function Vt(e){let n=kt(),t=wt(e.service.id);return Rt(()=>(n?.addService(e.service,e.probeId),()=>{n?.removeService(e.service,e.probeId)}),[e.service]),t?(t.error||!t.isLoggedIn,e.children):null}function te(){return null}function Xr(e){let[n,t,r]=Ie(e.resource),i=e.fallbackComponent||te,s=e.loadingComponent||te,a=e.errorComponent||te,o=t.service,u=null;if(!r||!o)return e.children(n);let d=o.service.filter(l=>l.type==="AuthAccessService2");t.status==="error"&&(u=Y(a,{resource:e.resource,error:t.error||"",heading:t.errorHeading,note:t.errorNote,extra:e.extra})),(t.status==="unknown"||t.status==="probing")&&(u=Y(s,{})),t.status==="success"&&(u=e.children(n));for(let l of d)u=Y(Vt,{service:l,probeId:o.id,children:u},l.id);return u}import{useEffect as Lt,useMemo as Nt,useState as Dt}from"react";import{create as zt}from"zustand";var Ft=zt()((e,n)=>{let t=new Map,r=()=>Math.random().toString(36).substring(2,15),i=s=>{let a=t.get(s);if(a)return a;let o=r();return t.set(s,o),o};return{stylesheets:{},loading:[],errors:[],async parseStylesheet(s){let{loadStylesheet:a,setStylesheet:o}=n();if(!s)return null;if(typeof s=="string")return s.startsWith("http")?{id:s,type:"CssStylesheet",value:await a(s)}:{id:o(s),type:"CssStylesheet",value:s};if(s.type==="CssStylesheet"){let u=s.id;if("value"in s){let d=Array.isArray(s.value)?s.value.join(`
|
|
2
|
+
`):s.value;if(d)return{id:o(d,u),type:"CssStylesheet",value:d}}if("id"in s&&s.id){let d=await a(s.id);return{id:s.id,type:"CssStylesheet",value:d}}}return null},async loadStylesheet(s){if(n().loading.includes(s))return"";try{let o=await fetch(s);if(!o.ok)throw new Error(`Failed to load stylesheet from ${s}`);let u=await o.text();return e(d=>({stylesheets:{...d.stylesheets,[s]:u}})),u}catch(o){return e(u=>({errors:[...u.errors,{url:s,error:o}]})),""}},setStylesheet(s,a){let o=a||i(s);return e(u=>({stylesheets:{...u.stylesheets,[o]:s}})),o}}});function Ee(e){let[n,t]=Dt(),r=n?.stylesheet===e&&n?.id||"",{loading:i,errors:s,stylesheets:a,parseStylesheet:o}=Ft();return Lt(()=>{if(!e)return;let d=!0;return o(e).then(l=>{d&&l?.id&&t({stylesheet:e,id:l.id})}),()=>{d=!1}},[e,o]),[Nt(()=>{let d={};return r&&a[r]&&(d[r]=a[r]),d},[r,a]),{id:r,stylesheets:a,loading:i,errors:s}]}import{expandTarget as Ht}from"@iiif/helpers/annotation-targets";import{useMemo as Ut}from"react";function Me(e={},n=[]){let{id:t,selector:r}=e,i=V(),s=I(),a=t||i.annotation,o=R(l=>a?l.iiif.entities.Annotation[a]:void 0,[a]),[u]=Ee(o?.stylesheet),d=R(l=>o&&o.body?(Array.isArray(o.body)?o.body:[o.body]).map(p=>p?p.type==="SpecificResource"?{...p,source:s.get(p)}:p?l.iiif.entities[p.type][p.id]:null:null).filter(Boolean):[],[o]);return Ut(()=>{if(!o)return;let l={...o,body:d,target:Ht(o.target,{typeMap:s.getState().iiif.mapping,loadedStylesheets:u})};return r?r(l):l},[o,r,d,u,...n])}import{useMemo as Ot}from"react";function ke(e={},n=[]){let{id:t,selector:r}=e,i=V(),s=t||i.canvas,a=R(o=>s?o.iiif.entities.Canvas[s]:void 0,[s]);return Ot(()=>{if(a)return r?r(a):a},[a,r,...n])}import{useMemo as we}from"react";import{createEventsHelper as _t}from"@iiif/helpers/events";function vi(e,n){let t=I(),r=we(()=>_t(t),[t]),i=R(()=>e&&e.id?t.getResourceMeta(e.id,"eventManager"):null,[e]);return we(()=>e?r.getListenersAsProps(e,n):{},[i,e,t,n])}import{useMemo as Kt}from"react";import{createStylesHelper as $t}from"@iiif/helpers/styles";function Ci(e,n){let t=I(),r=Kt(()=>$t(t),[t]);return R(()=>{if(!e)return null;let i=r.getAppliedStyles(e.id);return i?n?i[n]:i:void 0},[e,n])}import{useCallback as N,useEffect as ie,useReducer as qt,useRef as W}from"react";function Ve(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function Bt(e,n){switch(n.type){case"RESET":return n.state;case"FINISHED":return{...e,isFinished:!0,isPlaying:!1,playRequested:!1};case"PLAY_PAUSE":return{...e,isFinished:!1,isPlaying:!e.isPlaying};case"PLAY_REQUESTED":return{...e,isFinished:!1,playRequested:!0};case"PAUSE":return{...e,isPlaying:!1};case"PLAY":return{...e,isFinished:!1,playRequested:!1,isPlaying:!0};case"MUTE":return{...e,isMuted:!0};case"SET_VOLUME":return{...e,volume:n.volume,isMuted:n.volume===0};case"TOGGLE_MUTE":return{...e,isMuted:!e.isMuted};case"UNMUTE":return{...e,isMuted:!1}}return e}function oe(e){let n=Math.round(e);return`${Math.floor(n/60)}:${`${n%60}`.padStart(2,"0")}`}function Pi(e){let[n,t]=qt(Bt,Ve(e.duration));ie(()=>{t({type:"RESET",state:Ve(e.duration)})},[e.duration]);let r=W(null),i=W(null),s=W(null),a=W(!1),o=N(()=>{i.current&&r.current&&(i.current.innerHTML=oe(r.current.currentTime),s.current&&(s.current.style.width=`${r.current.currentTime/e.duration*100}%`),a.current!==r.current.muted&&(a.current=r.current.muted,t(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"})))},[e.duration]),u=N(()=>{r.current&&(t({type:"PLAY_REQUESTED"}),r.current.play().then(()=>{t({type:"PLAY"})}),o())},[o]),d=N(()=>{r.current&&(r.current.duration>0&&r.current.paused?u():l())},[o]),l=N(()=>{r.current&&(r.current.pause(),t({type:"PAUSE"}),o())},[o]),p=N(()=>{r.current&&(r.current.muted=!r.current.muted,t(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),T=N(()=>{r.current&&(r.current.muted=!0,t({type:"MUTE"}))},[]),C=N(()=>{r.current&&(r.current.muted=!1,t({type:"UNMUTE"}))},[]),g=N(S=>{r.current&&(r.current.muted=!1,r.current.volume=S/100,t({type:"SET_VOLUME",volume:S}))},[]),b=N(S=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(S*e.duration,e.duration)),o())},[]),x=N(S=>{if(r.current){let w=typeof S=="function"?S(r.current.currentTime):S;r.current.currentTime=Math.max(0,Math.min(w,e.duration)),o()}},[]);return ie(()=>{let S=setInterval(()=>{o()},350);return()=>clearInterval(S)},[o,e.duration]),ie(()=>{let S=()=>{t({type:"FINISHED"})},w=r.current;return w?.addEventListener("ended",S),()=>w?.removeEventListener("ended",S)},[]),[{element:r,currentTime:i,progress:s},n,{play:u,pause:l,playPause:d,mute:T,unmute:C,toggleMute:p,setVolume:g,setDurationPercent:b,setTime:x}]}import{createContext as jt,useContext as Yt}from"react";var Le=jt(null);Le.displayName="Strategy";function ki(){let e=Yt(Le);if(!e)throw new Error("useStrategy must be used within a StrategyProvider");return e}import{createContext as Wt,useContext as Gt}from"react";var Ne=Wt(null);Ne.displayName="Controls";function Ni(){let e=Gt(Ne);if(!e)throw new Error("useStrategy must be used within a StrategyProvider");return e}import{useMemo as Qt}from"react";function De(){let n=I().getStore();return Qt(()=>t=>n.dispatch(t),[n])}import{useCallback as ze,useLayoutEffect as Xt,useMemo as Zt,useRef as Jt}from"react";import{entityActions as Fe}from"@iiif/helpers/vault/actions";function He(e){return typeof e!="string"&&e&&e.bindToVault}function Ue(){let e=I(),n=Jt([]),t=De(),r=Zt(()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);Xt(()=>{e.loadSync(r,{id:r,type:"AnnotationPage",items:[]})},[r,e,t]);let i=R(o=>r&&o.iiif.entities.AnnotationPage[r]||null,[r,e,t]),s=ze((o,u)=>{if(r){if(He(o)){let p=o;p.__vault||p.bindToVault(e),o=typeof p.source=="string"?p.source:p.source.id,n.current[o]=p}else typeof o!="string"&&(o=o.id);let d=e.get({id:r,type:"AnnotationPage"}),l=e.get({id:o,type:"Annotation"});d&&l&&(d.items.find(p=>p.id===l.id)||t(Fe.addReference({id:r,type:"AnnotationPage",key:"items",reference:{id:o,type:"Annotation"},index:u})))}},[r,e,t]),a=ze(o=>{r&&(He(o)?o=typeof o.source=="string"?o.source:o.source.id:typeof o!="string"&&(o=o.id),n.current[o]&&n.current[o].beforeRemove(),e.get({id:r,type:"AnnotationPage"})&&t(Fe.removeReference({id:r,type:"AnnotationPage",key:"items",reference:{id:o,type:"Annotation"}})))},[r,e,t]);return[i,{addAnnotation:s,removeAnnotation:a}]}import{createContext as en,useContext as tn,useMemo as nn}from"react";import{jsx as rn}from"react/jsx-runtime";var Oe=en(null);function Gi(){let e=tn(Oe);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function Qi({children:e}){let[n,{addAnnotation:t,removeAnnotation:r}]=Ue();return rn(Oe.Provider,{value:nn(()=>({fullPage:n,addAnnotation:t,removeAnnotation:r}),[n,t,r]),children:e})}import{useEffect as on}from"react";function _e(e,n=[]){let t=I();on(()=>{let r=e(t);return typeof r=="function"?()=>r():void 0},[t,...n])}import sn,{useContext as an}from"react";import{ImageServiceLoader as un}from"@iiif/helpers/image-service";var cn=sn.createContext(new un);function Ke(){return an(cn)}import{useEffect as ln,useMemo as mn,useRef as dn,useState as fn}from"react";import{createThumbnailHelper as pn}from"@iiif/helpers/thumbnail";import{getId as gn,imageServiceRequestToString as hn,parseImageServiceRequest as yn}from"@iiif/parser/image-3";function vn(e,n){try{let t=gn(e);if(!t)return;let r=yn(t),i=r.type==="image"?r.region.w:void 0,s=r.type==="image"?r.region.h:void 0,a=i||e.width,o=s||e.height,u=n.width||n.maxWidth,d=n.height||n.maxHeight;if(r.type!=="image"||r.region.full||r.region.square)return;(u||d)&&(r.size={max:!1,upscaled:!1,confined:!!(u&&d),width:u,height:d,version:3});let l=a&&o&&(u||d)?Math.min(u?u/a:1/0,d?d/o:1/0):void 0;return{id:hn(r),type:"fixed",width:a&&l?Math.round(a*l):u||a||e.width||0,height:o&&l?Math.round(o*l):d||o||e.height||0}}catch{return}}function po(e,n,{canvasId:t,manifestId:r}={}){let i=I(),s=Ke(),a=mn(()=>pn(i,{imageServiceLoader:s}),[i,s]),[o,u]=fn(),d=O(r?{id:r}:void 0),l=ke(t?{id:t}:void 0),p=l||d,T=dn(!1);if(ln(()=>(T.current=!1,()=>{T.current=!0}),[]),!p)throw new Error("Must be called under a manifest or canvas context.");return _e(C=>{if(p.type==="Canvas"&&p.thumbnail?.length){let g=vn(C.get(p.thumbnail[0]),e);if(g&&!T.current){u(g);return}}a.getBestThumbnailAtSize(p,e,n).then(g=>{g.best&&!T.current&&u(g.best)})},[p,e.width,e.height,e.maxWidth,e.maxHeight,e.minWidth,e.minHeight,e.allowUnsafe,e.unsafeImageService,e.preferFixedSize,n]),o}import{createContext as An,useContext as xn}from"react";import{useStore as Sn}from"zustand";import{jsx as Tn}from"react/jsx-runtime";var se=An(null);se.displayName="ComplexTimeline";function Ao({children:e,store:n}){return Tn(se.Provider,{value:n,children:e})}function bn(){let e=xn(se);if(!e)throw new Error("useComplexTimeline must be used within a ComplexTimelineProvider");return e}function xo(e){return Sn(bn(),e)}import Cn from"mitt";import{createStore as In}from"zustand/vanilla";function $e({currentKeyFrameIndex:e,keyframes:n,targetTime:t,currentTime:r}){if(r<=t){let i=n.findIndex(u=>u.time>t),s=i===-1?n.length:i,a={},o=n.slice(e,s);for(let u of o)u.type==="enter"&&(a[u.id]=u),u.type==="change"&&(a[u.id]=a[u.id]?.type==="enter"?{...a[u.id],isPrime:u.isPrime}:u),u.type==="exit"&&(a[u.id]?delete a[u.id]:a[u.id]=u);return[s,Object.values(a)]}return[e,[]]}function Ro({complexTimeline:e,startTime:n=0}){let t=Cn(),r=new Map,i=!1,s=null,a=null,o=null,u=null,d=()=>v.getState().complexTimeline.items.filter(f=>f.type==="Video"||f.type==="Sound");function l(){let f=!i&&d().every(h=>(r.get(h.annotationId)?.element.readyState||0)>=2),c=v.getState().isReady,m=d().filter(h=>{let y=r.get(h.annotationId)?.element;if(!y||y.readyState<2||!Number.isFinite(y.duration)||y.duration<=0)return!1;let A=y.seekable;return!A?.length||!Array.from({length:A.length},(P,M)=>A.end(M)>A.start(M)).some(Boolean)}).map(h=>h.annotationId);v.setState({isReady:f,unseekableMedia:m}),f&&!c&&t.emit("complex-timeline.ready",{complexTimeline:v.getState().complexTimeline})}function p(f){v.setState({primeTime:f}),u&&(u.textContent=oe(f)),o&&(o.style.width=`${v.getState().duration?f/v.getState().duration*100:0}%`)}function T(f,c){let m=d().find(h=>h.annotationId===f);return m?Math.max(0,c-(m.target.temporal?.startTime||0)+(m.selector?.temporal?.startTime||0)):c}function C(f,c){let m=h=>{i||r.get(f)?.element!==c||!v.getState().isPlaying||(v.getState().pause(),v.setState({playbackError:h}))};try{c.play()?.catch(m)}catch(h){m(h)}}function g(f=!1){let c=v.getState();for(let[h,{element:y}]of r)if(c.visibleElements[h]){if(!f&&y.seeking)continue;let A=T(h,c.primeTime),P=Math.abs(y.currentTime-A);y.readyState>0&&P>(f?.01:.3)&&(y.currentTime=A),c.isPlaying&&y.paused&&C(h,y)}else y.paused||y.pause();let m=Object.entries(c.bufferMap).some(([h,y])=>y&&c.visibleElements[h]);c.isBuffering!==m&&v.setState({isBuffering:m})}function b(f){s=null;let c=v.getState(),m=a===null?0:(f-a)/1e3;a=f;let h=[...r].some(([y,{element:A}])=>c.visibleElements[y]&&A.seeking);if(!i&&c.isPlaying&&c.isReady&&!c.isBuffering&&!h){let y=c.currentPrime&&r.get(c.currentPrime.id)?.element,A=d().find(E=>E.annotationId===c.currentPrime?.id),P=y&&A&&!y.paused&&!y.ended?y.currentTime+(A.target.temporal?.startTime||0)-(A.selector?.temporal?.startTime||0):c.primeTime+m,M=Math.min(c.duration,Math.max(0,P));M<c.primeTime&&c.setTime(M);let[z,F]=$e({currentTime:v.getState().primeTime,targetTime:M,currentKeyFrameIndex:v.getState().nextKeyframeIndex,keyframes:c.complexTimeline.keyframes});p(M),z!==c.nextKeyframeIndex&&c.applyKeyframes(z,F),g(),M>=c.duration&&(c.pause(),v.setState({isFinished:!0}))}!i&&v.getState().clockRunning&&(s=requestAnimationFrame(b))}function x(){s!==null&&cancelAnimationFrame(s),s=null,a=null}function S(f){let c=r.get(f);if(!c)return;r.delete(f),c.cleanup(),c.element.pause();let m={...v.getState().bufferMap};delete m[f],v.setState({bufferMap:m,isBuffering:Object.entries(m).some(([h,y])=>y&&v.getState().visibleElements[h])}),l()}function w(f,c){if(i)return()=>{};S(f);let m=E=>{if(r.get(f)?.element!==c)return;let k=v.getState(),q={...k.bufferMap,[f]:E},B=Object.entries(q).some(([H,U])=>U&&k.visibleElements[H]);v.setState({bufferMap:q,isBuffering:B}),t.emit("complex-timeline.buffering",{id:f,isBuffering:E}),k.isBuffering&&!B&&t.emit("complex-timeline.finished-buffering",{})},h=()=>m(!0),y=()=>{m(!1),l()},z=[["loadedmetadata",()=>{l(),g(!0)}],["loadeddata",l],["progress",l],["durationchange",l],["waiting",h],["stalled",h],["canplay",y],["playing",y],["pause",()=>{let E=v.getState();c.paused&&!c.ended&&E.isPlaying&&E.visibleElements[f]&&E.pause()}],["error",()=>{v.getState().visibleElements[f]&&(v.getState().pause(),v.setState({playbackError:c.error||new Error(`Media failed: ${f}`)}))}],["emptied",l]];for(let[E,k]of z)c.addEventListener(E,k);let F={element:c,cleanup:()=>{for(let[E,k]of z)c.removeEventListener(E,k)}};return r.set(f,F),c.volume=v.getState().volume/100,c.muted=v.getState().isMuted,l(),g(!0),()=>{r.get(f)===F&&S(f)}}function D(){if(!i){i=!0,v.getState().pause(),x();for(let f of r.keys())S(f);o=u=null,t.all.clear(),v.setState({isReady:!1,clockRunning:!1,clockStartRequests:0})}}let v=In((f,c)=>({complexTimeline:e,visibleElements:{},isReady:!1,unseekableMedia:[],isBuffering:!1,bufferMap:{},isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e.duration,primeTime:0,clockRunning:!1,clockStartTime:0,currentPrime:null,clockStartRequests:0,nextKeyframeIndex:0,playbackError:null,attachMediaElement:w,dispose:D,setElement:(m,h)=>{w(m,h)},removeElement:S,updateTimeline(m){if(i)return;let h=c().complexTimeline;if(h.keyframes===m.keyframes&&h.duration===m.duration){f({complexTimeline:m});for(let y of r.keys())d().some(A=>A.annotationId===y)||S(y);l();return}f({complexTimeline:m,duration:m.duration,visibleElements:{},currentPrime:null,nextKeyframeIndex:0});for(let y of r.keys())d().some(A=>A.annotationId===y)||S(y);c().setTime(c().primeTime),l()},startClock(){i||(c().clockRunning||(a=null,s=requestAnimationFrame(b)),f({clockRunning:!0,clockStartRequests:c().clockStartRequests+1}))},stopClock(){let m=Math.max(0,c().clockStartRequests-1);f({clockStartRequests:m,clockRunning:m>0}),m||x()},applyKeyframes(m,h){let y={...c().visibleElements},A=c().currentPrime;for(let P of h)P.type==="enter"&&(y[P.id]=P,t.emit("complex-timeline.enter",{id:P.id})),P.type==="exit"&&(y[P.id]=null,A?.id===P.id&&(A=null),t.emit("complex-timeline.exit",{id:P.id})),P.isPrime&&P.type!=="exit"&&(A=y[P.id]||null);f({visibleElements:y,currentPrime:A,nextKeyframeIndex:m})},play(){if(!(i||c().isPlaying)){c().isFinished&&c().setTime(0),f({isPlaying:!0,playRequested:!0,isFinished:!1,playbackError:null}),a=null;for(let[m,{element:h}]of r)c().visibleElements[m]&&C(m,h);f({playRequested:!1})}},pause(){f({isPlaying:!1,playRequested:!1});for(let{element:m}of r.values())m.paused||m.pause()},playPause(){c().isPlaying?c().pause():c().play()},setDurationPercent(m){c().setTime(c().duration*m)},setTime(m){if(i)return;let h=c(),y=typeof m=="function"?m(h.primeTime):m;if(!Number.isFinite(y))return;let A=Math.max(0,Math.min(h.duration,y));for(let E of d()){let k=r.get(E.annotationId)?.element,q=E.target.temporal?.startTime||0,B=E.target.temporal?.endTime??h.duration;if(!k||A<q||A>=B)continue;let H=T(E.annotationId,A),U=k.seekable;if(U?.length&&Math.abs(k.currentTime-H)>.01&&!Array.from({length:U.length},(Yn,ue)=>H>=U.start(ue)&&H<=U.end(ue)).some(Boolean)){f({playbackError:new Error(`Media cannot seek to ${H.toFixed(1)}s: the source has not made that position seekable.`)});return}}f({playbackError:null});let P=h.nextKeyframeIndex,M=h.primeTime;if(A<M){for(let[E,k]of Object.entries(h.visibleElements))k&&t.emit("complex-timeline.exit",{id:E});f({visibleElements:{},currentPrime:null}),P=0,M=0}let[z,F]=$e({currentTime:M,targetTime:A,currentKeyFrameIndex:P,keyframes:h.complexTimeline.keyframes});p(A),h.applyKeyframes(z,F),f({isFinished:A>=h.duration}),A>=h.duration&&c().pause(),g(!0),a=null},mute(){for(let{element:m}of r.values())m.muted=!0;f({isMuted:!0})},unmute(){for(let{element:m}of r.values())m.muted=!1;f({isMuted:!1})},toggleMute(){c().isMuted?c().unmute():c().mute()},setVolume(m){if(Number.isFinite(m)){m=Math.min(100,Math.max(0,m));for(let{element:h}of r.values())h.volume=m/100;f({volume:m})}},setProgressElement(m){o=m,p(c().primeTime)},setCurrentTimeElement(m){u=m,p(c().primeTime)},clearProgressElement(){o=null},clearCurrentTimeElement(){u=null}}));return l(),v.getState().setTime(n),{store:v,emitter:t,attachMediaElement:w,dispose:D,getSnapshot:v.getState,subscribe:v.subscribe}}var Rn=[.6,.02,0,.75],Eo=16,Mo={linear:[0,0,1,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1],"ease-in-cubic":Rn,"ease-out-cubic":[.215,.61,.355,1]};function ko(e,n,t){let r=Math.max(0,Math.min(1,t));return{x:e.x+(n.x-e.x)*r,y:e.y+(n.y-e.y)*r,width:e.width+(n.width-e.width)*r,height:e.height+(n.height-e.height)*r}}function wo(e,n){let t=[],r=e;for(let i of n)t.push({from:r,to:i}),r=i;return t}function Vo([e,n,t,r]){let i=3*e,s=3*(t-e)-i,a=1-i-s,o=3*n,u=3*(r-n)-o,d=1-o-u;function l(g){return((a*g+s)*g+i)*g}function p(g){return((d*g+u)*g+o)*g}function T(g){return(3*a*g+2*s)*g+i}function C(g,b=1e-6){let x=g;for(let D=0;D<8;D++){let v=l(x)-g;if(Math.abs(v)<b)return x;let f=T(x);if(Math.abs(f)<1e-6)break;x=x-v/f}let S=0,w=1;for(x=g;S<w;){let D=l(x);if(Math.abs(D-g)<b)return x;g>D?S=x:w=x,x=(w-S)*.5+S}return x}return g=>{if(g<=0)return 0;if(g>=1)return 1;let b=C(g);return p(b)}}function Lo(e,n){if(!n||n.length===0)return{index:-1,t:0};if(Number.isNaN(e)||!isFinite(e))return{index:-1,t:0};if(e<0)return{index:-1,t:0};if(e>=n.length)return{index:n.length,t:0};let t=Math.floor(e),r=e-t;return{index:t,t:r}}import{createContext as Pn,useContext as En}from"react";var Mn=Pn(null);function zo(){return En(Mn)}import kn from"react";import{createContext as wn,useMemo as Vn}from"react";import Ln from"mitt";import{jsx as Dn}from"react/jsx-runtime";var Nn=Ln(),ae=wn({emitter:Nn});ae.displayName="Events";function qe(){return kn.useContext(ae).emitter}function $o({emitter:e,children:n}){return Dn(ae.Provider,{value:Vn(()=>({emitter:e}),[e]),children:n})}function Be({canvas:e,manifest:n,all:t,canvases:r}){let i=[];if(n)for(let s of n.annotations)i.indexOf(s.id)===-1&&i.push(s.id);if(t){if(r&&r.length)for(let s of r)for(let a of s.annotations)i.indexOf(a.id)===-1&&i.push(a.id)}else if(e)for(let s of e.annotations)i.indexOf(s.id)===-1&&i.push(s.id);return i}import{useCallback as Ye,useMemo as Fn}from"react";function _(){let{canvas:e}=V();return R(n=>{if(e)return n.iiif.mapping[e]==="Timeline"?n.iiif.entities.Timeline[e]:n.iiif.entities.Canvas[e]},[e])}function zn(e,n){let t=e?.iiif?.meta[n];return t?t.annotationPageManager:null}function je(e,n){return R(t=>{let r=[];if(!e)return r;let i=Object.keys(t.iiif.entities.AnnotationPage);for(let s of i)if(!n||n.indexOf(s)!==-1){let a=zn(t,s);a&&a.views&&a.views[e]&&r.push(s)}return r},[e,n])}function Hn(e,n){let t=e?.iiif?.meta[n];return t?t.annotationPageManager:null}function We(e,n={}){let t=I(),r=O(),i=_(),s=he(),a=Fn(()=>Be({all:n.all,manifest:r,canvas:i,canvases:s}),[n.all,i,s,r]),o=je(e,n.all?void 0:a),u=Ye(l=>{e&&t.setMetaValue([l,"annotationPageManager","views"],p=>p&&!p[e]?p:{...p||{},[e]:!1})},[e,t]),d=Ye((l,p={})=>{if(!e)return;let T=t.getState(),C=[];if(p?.deselectOthers){let g=Object.keys(T.iiif.entities.AnnotationPage);for(let b of g){let x=Hn(T,b);x&&x.views&&x.views[e]&&C.push(b)}}for(let g of C)u(g);t.setMetaValue([l,"annotationPageManager","views"],g=>g&&g[e]?g:{...g||{},[e]:!0})},[e,u,t]);return{availablePageIds:a,enabledPageIds:o,setPageEnabled:d,setPageDisabled:u}}function Ge(e,n){return R((t,r)=>r.get(e.map(i=>({id:i,type:n}))),[e,n])}import{useCallback as $n}from"react";import Un,{useCallback as On,useContext as _n}from"react";import{imageServices as Kn}from"@iiif/helpers/image-service";import{useStore as G}from"zustand";var Qe=new WeakMap,Xe=Un.createContext(Kn.store);Xe.displayName="ImageServicesHelper";function Q(){return _n(Xe)}function ds(e){let n=Q();return G(n,({loaded:t})=>t[e])}function Ze(){let e=Q();return G(e,({loadServiceSync:n})=>n)}function Je(){let e=Q();return G(e,({loaded:n})=>n)}function et(){let e=Q(),n=G(e,t=>t.loadService);return On((t,r)=>{let i=t.id||t["@id"];if(!i)return n(t,r);let s=Qe.get(e);s||(s=new Map,Qe.set(e,s));let a=s.get(i);if(a)return a;let o=n(t,r).finally(()=>s.delete(i));return s.set(i,o),o},[n,e])}function tt(){let e=Ze(),n=et(),t=Je();return[$n((i,{height:s,width:a})=>{if(!i||i.width&&i.height&&i.tiles?.length)return i;let o=e(i,{height:s,width:a});return o||n(i,{height:s,width:a}),o||void 0},[n,e]),t]}import{useCallback as qn,useMemo as it,useState as Bn}from"react";import{isVault4 as nt}from"@iiif/helpers/vault-4";function rt(e={}){let n=Z(),t=V(),r=_(),i=Me();return J(n,(s,a)=>{let o=e.canvasId||r?.id,u=o?s.iiif.mapping[o]==="Timeline"?s.iiif.entities.Timeline[o]:s.iiif.entities.Canvas[o]:void 0;return u?e.enableSingleAnnotation&&t.annotation?nt(a)?[a.get({id:t.annotation,type:"Annotation"})]:i?[i]:[]:u.items.flatMap(l=>nt(a)?a.get({id:l.id,type:"AnnotationPage"}).items.map(p=>a.get({id:p.id,type:"Annotation"})):a.get({id:l.id,type:"AnnotationPage"}).items.map(p=>a.get({id:p.id,type:"Annotation"}))):[]},[r,e.canvasId,e.enableSingleAnnotation,t.annotation,i])}import{createPaintingAnnotationsHelper as jn}from"@iiif/helpers/painting-annotations";function ot(e,n=[]){let t=I(),r=it(()=>jn(t),[t]),i=rt({enableSingleAnnotation:e?.enableSingleAnnotation}),[s,a]=Bn(e?.defaultChoices||[]),o=it(()=>r.getPaintables(i,s),[t,i,s,...n]),d={makeChoice:qn((l,{deselectOthers:p=!0,deselect:T=!1}={})=>{o.choice&&a(C=>{if(T){let b=C.filter(x=>x!==l);if(b.length===0){let x=o.items[0].resource.id;return x?[x]:[]}return b}if(p)return[l];let g=[...C];if(g.length===0&&o.items.length){let b=o.items[0].resource.id;b&&g.push(b)}return C.indexOf(l)!==-1?C:[...C,l]})},[o.choice])};return[o,d]}import{useEffect as st,useMemo as at}from"react";function Os(e){let n=O(),t=_(),r=I(),i=qe(),s=e?.emitter||i,[a,o]=tt(),{enabledPageIds:u}=We(e?.annotationPageManagerId||n?.id||t?.id,{all:!1}),d=Ge(u,"AnnotationPage"),l=e?.strategies||["empty","images","media","textual-content","complex-timeline"],[p,T]=ot(e,[o]);st(()=>{let g=b=>{T.makeChoice(b.choiceId,{deselectOthers:b.deselectOthers,deselect:b.deselect})};return s.on("make-choice",g),()=>{s.off("make-choice",g)}},[s,T.makeChoice]);let C=at(()=>le({canvas:t,paintables:p,supports:l,loadImageService:a,vault:r}),[t,p,r,T.makeChoice,o,l.join(",")]);return st(()=>{let g=p.allChoices,b={canvasId:t?.id,manifestId:n?.id};g&&s.emit("choice-change",{choice:g,partOf:b})},[t?.id,n?.id,p.allChoices,s]),at(()=>C.type==="unknown"?[C,ce]:[{...C,annotations:{pages:d}},T],[C,d,T.makeChoice])}export{me as a,V as b,j as c,Jn as d,X as e,cr as f,Z as g,I as h,J as i,R as j,ge as k,br as l,he as m,O as n,Mr as o,Ae as p,xe as q,Se as r,ee as s,ye as t,re as u,Et as v,Mt as w,Yr as x,Wr as y,$ as z,kt as A,Gr as B,wt as C,Re as D,Qr as E,Xr as F,Ft as G,Ee as H,Me as I,ke as J,vi as K,Ci as L,_ as M,oe as N,Pi as O,Le as P,ki as Q,Ne as R,Ni as S,De as T,Ue as U,Oe as V,Gi as W,Qi as X,_e as Y,cn as Z,Ke as _,vn as $,po as aa,Ao as ba,bn as ca,xo as da,$e as ea,Ro as fa,Rn as ga,Eo as ha,Mo as ia,ko as ja,wo as ka,Vo as la,Lo as ma,ds as na,Ze as oa,et as pa,Mn as qa,zo as ra,Nn as sa,ae as ta,qe as ua,$o as va,Be as wa,We as xa,Ge as ya,tt as za,rt as Aa,ot as Ba,Os as Ca};
|