react-iiif-vault 2.0.17 → 2.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.d.ts +1 -0
- package/dist/bundle.global.js +31 -31
- package/dist/canvas-panel.cjs +6 -6
- package/dist/canvas-panel.js +1 -1
- package/dist/chunk-OGCPXOIP.js +49 -0
- package/dist/index.cjs +8 -8
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/package.json +2 -6
- package/dist/chunk-IGWOGVER.js +0 -49
package/dist/canvas-panel.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var Pa=Object.create;var Vt=Object.defineProperty;var Ta=Object.getOwnPropertyDescriptor;var wa=Object.getOwnPropertyNames;var Ia=Object.getPrototypeOf,Ma=Object.prototype.hasOwnProperty;var ka=(e,t)=>{for(var n in t)Vt(e,n,{get:t[n],enumerable:!0})},So=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of wa(t))!Ma.call(e,a)&&a!==n&&Vt(e,a,{get:()=>t[a],enumerable:!(o=Ta(t,a))||o.enumerable});return e};var J=(e,t,n)=>(n=e!=null?Pa(Ia(e)):{},So(t||!e||!e.__esModule?Vt(n,"default",{value:e,enumerable:!0}):n,e)),Ea=e=>So(Vt({},"__esModule",{value:!0}),e);var Ls={};ka(Ls,{CanvasPanel:()=>F});module.exports=Ea(Ls);var Fe=require("react");var qe=J(require("react"),1),xo=require("react/jsx-runtime"),Va={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},Nt=qe.default.createContext(Va),re=()=>(0,qe.useContext)(Nt);function xe({value:e,children:t}){let n=re(),o=(0,qe.useMemo)(()=>({...n,...e}),[e,n]);return(0,xo.jsx)(Nt.Provider,{value:o,children:t})}var bo=require("react/jsx-runtime");function pe({canvas:e,children:t}){return(0,bo.jsx)(xe,{value:{canvas:e},children:t})}var Lt=J(require("react"),1),pt=require("@iiif/helpers/vault");var Nn=require("react/jsx-runtime"),ke=Lt.default.createContext({vault:null,setVaultInstance:e=>{}});function $e({vault:e,vaultOptions:t,useGlobal:n,resources:o,children:a}){let[i,r]=(0,Lt.useState)(()=>e||(n?(0,pt.globalVault)(t):t?new pt.Vault(t):new pt.Vault));return(0,Nn.jsx)(ke.Provider,{value:{vault:i,setVaultInstance:r},children:(0,Nn.jsx)(xe,{value:o||{},children:a})})}var Ro=require("react"),Ao=J(require("react"),1);var Co=require("react"),k=()=>{let{vault:e}=(0,Co.useContext)(ke);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};var zt=require("react");function E(e,t=[]){let n=k(),[o,a]=(0,zt.useState)(()=>e(n.getState(),n));return(0,zt.useEffect)(()=>n.subscribe(i=>e(i,n),i=>{a(i)},!1),t),o}var We=Ao.default.createContext([]);function Ot(){let e=(0,Ro.useContext)(We);return E(t=>e.map(n=>t.iiif.entities.Canvas[n]).filter(Boolean),[e])}var Po=require("@iiif/helpers/vault"),To=require("react");function Ue(e){let t=(0,To.useContext)(ke);return e||(t&&t.vault?t.vault:(0,Po.globalVault)())}var wo=require("react");function q(e={},t=[]){let{id:n,selector:o}=e,a=re(),i=k(),r=n||a.manifest,s=E(l=>r?l.iiif.entities.Manifest[r]:void 0,[r]);return(0,wo.useMemo)(()=>{if(s)return o?o(s):s},[s,o,...t])}var Jo=require("react"),Dt=require("react");var be=require("react");function Io(e,{noCache:t=!1}={}){let n=typeof e=="string"?e:e.id,o=Ue(),[a,i]=(0,be.useState)(n),[r,s]=(0,be.useState)(void 0),l=(0,be.useMemo)(()=>o.get(n,{skipSelfReturn:!0})||void 0,[n,o]),[u,d]=(0,be.useState)(l);return(0,be.useEffect)(()=>{(async()=>{try{let c=l&&!t?l:await o.load(n),m=c?c.id||c["@id"]:null;c&&a!==m&&i(m),d(c)}catch(c){s(c)}})()},[n,t]),{isLoaded:!!u,id:a,requestId:n,error:r,resource:u,cached:!!(u&&u===l)}}function Mo(e,t){let{id:n,isLoaded:o,error:a,resource:i,requestId:r,cached:s}=Io(e,t);return{id:n,isLoaded:o,error:a,manifest:i,requestId:r,cached:s}}var Eo=require("react/jsx-runtime");function ko({manifest:e,children:t}){return(0,Eo.jsx)(xe,{value:{manifest:e},children:t})}var No=require("react/jsx-runtime");function Vo({range:e,children:t}){return(0,No.jsx)(xe,{value:{range:e},children:t})}function Ln(e,t){let n=[];for(let o of t.items)if(o.type==="SpecificResource"&&o.source?.type==="Canvas"&&(o.source.id.indexOf("#")!==-1?n.push({id:o.source.id.split("#")[0],type:"Canvas"}):n.push(o.source)),o.type==="Range"&&n.push(...Ln(e,e.get(o))),o.type==="SpecificResource"){let a=typeof o.source=="string"?o.source:o.source.id;n.push({id:a,type:"Canvas"})}return n}function Lo(e,t,{disablePaging:n,skipNonPaged:o}={}){let a=t.behavior,i=a.includes("paged"),r=i?!1:a.includes("continuous"),s=i||r?!1:a.includes("individuals"),l=t.type==="Manifest"?t.items:Ln(e,t);if(r)return[l,[l.map((f,h)=>h)]];if(s||!i||n)return[l,l.map((f,h)=>[h])];let u=[],d=[],c=()=>{d.length&&(u.push([...d]),d=[])},m=0,p=!1;for(let f=0;f<l.length;f++){let h=e.get(l[f]);if(h.behavior.includes("non-paged")){f===m&&m++,o||(c(),u.push([f]),c());continue}if(f===m||h.behavior.includes("facing-pages")){d.length&&(p=!0),c(),u.push([f]),c();continue}if(d.push(f),p){c(),p=!1;continue}d.length>1&&c()}return d.length&&c(),[l,u]}var ie=require("react");var zo=require("react");function Oo(e={},t=[]){let{id:n,selector:o}=e,a=re(),i=n||a.range,r=E(s=>i?s.iiif.entities.Range[i]:void 0,[i]);return(0,zo.useMemo)(()=>{if(r)return o?o(r):r},[r,o,...t])}function Bo({startCanvas:e,disablePaging:t}){let n=k(),o=q(),a=Oo(),[i,r]=(0,ie.useState)(void 0),s=a||o;if(!s)throw new Error("Nothing selected");let[l,u]=(0,ie.useMemo)(()=>Lo(n,s,{disablePaging:t}),[n,s,t]),d=(0,ie.useRef)(u);if(d.current!==u){let v=d.current[i][0],S=u.findIndex(g=>g.includes(v));d.current=u,r(S)}let c=(0,ie.useCallback)(h=>{let v=u.findIndex(S=>S.includes(h));r(v===-1?0:v)},[l,u]),m=(0,ie.useCallback)(h=>{let v=l.findIndex(S=>S.id===h);v!==-1?c(v):r(0)},[l,u]),p=(0,ie.useCallback)(()=>{r(h=>h>=u.length-1?h:h+1)},[u]),f=(0,ie.useCallback)(()=>{r(h=>h<=0?0:h-1)},[u]);return typeof i>"u"&&(e?m(e):r(0)),{visibleItems:u[i]?.map(h=>l[h].id)||[],cursor:i,items:l,sequence:u,hasPrevious:i>0,hasNext:i<u.length-1,setSequenceIndex:r,setCanvasIndex:c,setCanvasId:m,next:p,previous:f}}var se=require("react"),Bt=require("zustand");var On=require("zustand/vanilla");function ae(e,t,n){let o=t.findIndex(r=>r.service.id===e);if(o===-1)return t;let a=[...t],i=n(a[o]);return i===a[o]?t:(a[o]=i,a)}var Do=()=>(0,On.createStore)((e,t)=>({currentAuth:-1,authItems:[],login:()=>{let n=t().authItems[t().currentAuth];if(!n||n.isPending||n.isLoggedIn)return;if(n.type!=="active")throw new Error("Cannot login to non-active service");let o=n.service.service.find(a=>a.type==="AuthAccessTokenService2");if(!o)throw new Error("Token service not found");e(()=>({authItems:ae(n.id,t().authItems,a=>({...a,isPending:!0}))})),Ho(n.service).then(()=>{zn(o).then(a=>{let i=a.expiresIn,r=Date.now()+i*1e3;e(()=>({authItems:ae(n.id,t().authItems,s=>({...s,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:r}}))}))}).catch(a=>{e(()=>({authItems:ae(n.id,t().authItems,i=>({...i,isLoggedIn:!1,isPending:!1,error:a.message}))}))})})},logout:()=>{let n=t().authItems[t().currentAuth];if(!n||n.isPending||!n.isLoggedIn)return;if(n.type!=="active")throw new Error("Cannot logout of non-active service");let o=n.service.service.find(r=>r.type==="AuthLogoutService2");if(!o)return;let a=`${o.id}?origin=${$o()}`,i=window.open(a);e(()=>({authItems:ae(n.id,t().authItems,r=>({...r,isLoggedIn:!1,session:null,isPending:!1}))}))},nextAuth:()=>{let n=t().authItems.length,o=t().currentAuth+1;o>=n||e(()=>({currentAuth:o}))},previousAuth:()=>{let n=t().currentAuth-1;n<0||e(()=>({currentAuth:n}))},setAuth:n=>{n!==-1&&(n<0||n>=t().authItems.length)||e(()=>({currentAuth:n}))},addService:(n,o)=>{if(!n.service)return;let a=n.service.find(s=>s.type==="AuthAccessTokenService2"),i=n;if(t().authItems.find(s=>s.service.id===n.id)){e(()=>({authItems:ae(n.id,t().authItems,s=>({...s,instances:s.instances+1}))}));return}if(e(()=>({currentAuth:i.profile==="active"?0:t().currentAuth,authItems:[{id:n.id,type:n.profile,service:n,probeId:o,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...t().authItems]})),n.profile==="external"){if(!a)throw new Error("Token service not found");zn(a).then(s=>{e(()=>({authItems:ae(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:ae(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:s.message}))}))})}if(n.profile==="kiosk"){if(!a)throw new Error("Token service not found");e(()=>({authItems:ae(n.id,t().authItems,s=>({...s,isPending:!0}))})),Ho(i).then(()=>{zn(a).then(s=>{e(()=>({authItems:ae(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:ae(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,error:s.message}))}))})})}n.profile},removeService:(n,o)=>{let a=t().currentAuth===t().authItems.findIndex(r=>r.service.id===n.id),i=t().currentAuth;if(a){let r=t().authItems.find(l=>l.service.id===n.id);r&&r.instances>1||(i=t().authItems.findIndex(u=>u.service.id!==n.id&&u.instances>0))}e(()=>({authItems:ae(n.id,t().authItems,r=>({...r,instances:r.instances-1})),currentAuth:i}))}})),Fo=(e,t)=>(0,On.createStore)((n,o)=>({service:e,status:e?"unknown":"success",shouldRedirect:!1,redirectResource:null,shouldSubstitute:!1,substituteResource:null,error:null,errorHeading:null,errorNote:null,shouldDisplayResource:!1,token:t||null,async probe(){if(!o().service)return;let a=o().service?.id;if(!a){n({status:"error",error:"Service ID not found",errorHeading:{en:["Service ID not found"]}});return}n({status:"probing"});let i=o().token;try{let r=await fetch(a,{headers:i?{Authorization:`Bearer ${o().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(s=>s.json());if(r.status===200)n({status:"success",shouldDisplayResource:!0,error:null,errorHeading:null,errorNote:null,shouldSubstitute:!1,shouldRedirect:!1});else if(r.status<400&&r.status>=300){if(!r.location)throw new Error("Redirect location not found");n({status:"error",shouldDisplayResource:!1,shouldRedirect:!0,redirectResource:r.location||null})}else if(r.status===401)n({status:"error",shouldDisplayResource:!1,shouldRedirect:!1,shouldSubstitute:!!r.substitute,substituteResource:r.substitute||null,error:"Unauthorized",errorHeading:r.heading||{en:["Unauthorized"]},errorNote:r.note||null});else throw new Error("Unknown error")}catch(r){n({status:"error",error:r.message,errorHeading:{en:["Unknown error"]}})}},setToken(a){n({token:a})}}));function qo(e){let t=e.service||e.services||[],n={hasAuth:!1,services:{}};for(let o of t)if(o.type==="AuthProbeService2"){n.services.probe=o,n.hasAuth=!0;let a=o.service.filter(i=>i.type==="AuthAccessService2");a[0]&&(n.services.access=a[0])}return n}async function zn(e,{strict:t=!0}={}){return new Promise((n,o)=>{let a=Math.random().toString(36).substring(7),i=`${e.id}?messageId=${a}&origin=${window.location.origin}`,r=u=>{let d=u.data;if(d.messageId===a){if(t&&d.type!=="AuthAccessToken2"){s(),o("Invalid response, expected type=AuthAccessToken2");return}if(!d.accessToken){s(),o("Invalid response, expected accessToken");return}s(),n(d)}},s=()=>window.removeEventListener("message",r),l=document.createElement("iframe");l.src=i,l.style.display="none",document.body.appendChild(l),window.addEventListener("message",r)})}function $o(e){let t=window.location;if(e){let n=document.createElement("a");return n.href=e,n.protocol+"//"+n.hostname+(n.port?":"+n.port:"")}return t.protocol+"//"+t.hostname+(t.port?":"+t.port:"")}async function Ho(e){let t=`${e.id}?origin=${$o()}`,n=window.open(t);if(!n)throw new Error("Failed to open window");return new Promise((o,a)=>{let i=setInterval(()=>{n.closed&&(clearInterval(i),o())},500)})}var _e=require("react");var Wo=require("zustand");function Uo(e){let t=(0,_e.useMemo)(()=>qo(e),[e]),n=_o(t.services.access?.id),o=(0,_e.useMemo)(()=>Fo(t.services.probe,n),[t.services.probe]),a=(0,Wo.useStore)(o);return(0,_e.useEffect)(()=>{a.status==="unknown"&&!n&&a.probe()},[t.services.probe,a.status]),(0,_e.useEffect)(()=>{n&&(a.setToken(n),a.probe())},[n]),[e,a,t.hasAuth]}var ft=require("react/jsx-runtime"),Ye=(0,se.createContext)(null),Na=(0,se.createContext)(null);Na.displayName="CurrentAuth";var La=(0,se.createContext)(null);La.displayName="AuthActions";function Yo({children:e}){let t=(0,se.useMemo)(()=>Do(),[]);return(0,ft.jsx)(Ye.Provider,{value:t,children:e})}function jo(){return!!(0,se.useContext)(Ye)}function Hn(){let e=(0,se.useContext)(Ye);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function za(){let e=Hn();return(0,Bt.useStore)(e,n=>({login:n.login,logout:n.logout,nextAuth:n.nextAuth,previousAuth:n.previousAuth,setAuth:n.setAuth,addService:n.addService,removeService:n.removeService}))}function Oa(e){let t=Hn();return(0,Bt.useStore)(t,o=>o.authItems.find(a=>a.service.id===e))}function _o(e){let t=Hn();return(0,Bt.useStore)(t,o=>o.authItems.find(a=>a.id===e)?.session?.token)}function Ba(e){let t=za(),n=Oa(e.service.id);return(0,se.useEffect)(()=>(t?.addService(e.service,e.probeId),()=>{t?.removeService(e.service,e.probeId)}),[e.service]),n?(n.error||!n.isLoggedIn,e.children):null}function Bn(){return null}function Go(e){let[t,n,o]=Uo(e.resource),a=e.fallbackComponent||Bn,i=e.loadingComponent||Bn,r=e.errorComponent||Bn,s=n.service,l=null;if(!o||!s)return e.children(t);let u=s.service.filter(d=>d.type==="AuthAccessService2");n.status==="error"&&(l=(0,ft.jsx)(r,{resource:e.resource,error:n.error||"",heading:n.errorHeading,note:n.errorNote,extra:e.extra})),(n.status==="unknown"||n.status==="probing")&&(l=(0,ft.jsx)(i,{})),n.status==="success"&&(l=e.children(t));for(let d of u)l=(0,ft.jsx)(Ba,{service:d,probeId:s.id,children:l},d.id);return l}var gt=require("react");var Ko=require("zustand/vanilla"),Ha=e=>e.id||e["@id"];function Da(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 Qo=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?Ha(t):void 0,o=null;return(0,Ko.createStore)((a,i)=>({service:t,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!t,hasAutocomplete:t?!!Da(t):!1,errorMessage:"",search(r,s={}){if(!n)throw new Error("No search service found.");o&&!o.signal.aborted&&o.abort(),o=new AbortController;let l=new URLSearchParams;r.q&&l.set("q",r.q),r.motivation&&l.set("motivation",r.motivation),r.date&&l.set("date",r.date),r.user&&l.set("user",r.user),a({loading:!0}),fetch(`${n}?${l.toString()}`,{signal:o.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...s.headers||{}}}).then(async u=>{if(!o?.signal.aborted)if(u.ok){let d=await u.json();a({resources:d.resources,error:!1,errorMessage:""})}else a({resources:[],error:!0,errorMessage:u.statusText})})},clearSearch(){a({resources:[],error:!1,errorMessage:""})},highlightResult(r){let s=i().resources.find(l=>l["@id"]===r);a({highlight:s})},nextResult(){let r=i().resources,s=i().highlight;if(!s){a({highlight:r[0]||null});return}let l=r.findIndex(u=>u["@id"]===s["@id"]);if(l===-1){a({highlight:r[0]||null});return}a({highlight:r[l+1]||r[0]||null})},previousResult(){let r=i().resources,s=i().highlight;if(!s){a({highlight:r[r.length-1]||null});return}let l=r.findIndex(u=>u["@id"]===s["@id"]);if(l===-1){a({highlight:r[r.length-1]||null});return}if(l===0){a({highlight:r[r.length-1]||null});return}a({highlight:r[l-1]||r[r.length-1]||null})}}))};var Fa=require("zustand");function Xo(){let e=q();return e?e.service.find(t=>t.profile==="SearchService1"||t.profile==="http://iiif.io/api/search/1/search"):void 0}var Ht=require("react/jsx-runtime"),je=(0,gt.createContext)(null);je.displayName="Search";function Zo(e){let t=Xo();return e.store?(0,Ht.jsx)(je.Provider,{value:e.store,children:e.children}):(0,Ht.jsx)(qa,{service:t,children:e.children})}function qa({service:e,children:t}){let n=(0,gt.useMemo)(()=>Qo(e),[e]);return(0,Ht.jsx)(je.Provider,{value:n,children:t})}var K=require("react/jsx-runtime"),ht=()=>{},yt=(0,Dt.createContext)({setCurrentCanvasId:ht,setCurrentCanvasIndex:ht,nextCanvas:ht,previousCanvas:ht,items:[],sequence:[],setSequenceIndex:ht,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function $a(e){let t=q(),{cursor:n,visibleItems:o,next:a,sequence:i,items:r,setCanvasIndex:s,setCanvasId:l,previous:u,setSequenceIndex:d,hasNext:c,hasPrevious:m}=Bo({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),p=(0,Dt.useMemo)(()=>({sequence:i,items:r,setCurrentCanvasId:l,nextCanvas:a,previousCanvas:u,totalCanvases:r.length,setCurrentCanvasIndex:s,setSequenceIndex:d,currentSequenceIndex:n,hasNext:c,hasPrevious:m}),[i,r,l,a,u,r,s,d,n]);return t?o.length===0?null:(0,K.jsx)(yt.Provider,{value:p,children:(0,K.jsx)(We.Provider,{value:o,children:(0,K.jsx)(pe,{canvas:o[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,K.jsx)("div",{children:"Sorry, something went wrong."}))}function er(e){let t=Ue(e.vault),n=Mo(e.manifest);if(!n)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,K.jsx)("div",{children:"Sorry, something went wrong."});if(n.error)return(0,K.jsx)("div",{children:n.error.toString()});if(!n.isLoaded)return(0,K.jsx)("div",{children:"Loading..."});let o=(0,K.jsx)($a,{...e,children:e.children});return(0,K.jsx)($e,{vault:t,children:(0,K.jsx)(ko,{manifest:n.id,children:(0,K.jsx)(Yo,{children:(0,K.jsx)(Zo,{children:e.rangeId?(0,K.jsx)(Vo,{range:e.rangeId,children:o}):o})})})})}function Ft(){return(0,Jo.useContext)(yt)}var ur=require("@atlas-viewer/atlas"),fe=require("react"),cr=require("zustand");var tr=J(require("mitt"),1),Ee=require("react"),Ua=require("react/jsx-runtime"),Wa=(0,tr.default)(),nr=(0,Ee.createContext)(Wa);function or(){return(0,Ee.useContext)(nr)}function rr(e,t,n=[]){let o=(0,Ee.useContext)(nr);(0,Ee.useEffect)(()=>{let a=i=>{t(i)};return o.on(e,a),()=>{o.off(e,a)}},[o,e,...n])}var ir=require("polygon-editor"),ar=require("zustand/vanilla");function Dn(e){let t=Math.max(...e.map(i=>i[0])),n=Math.min(...e.map(i=>i[0])),o=Math.max(...e.map(i=>i[1])),a=Math.min(...e.map(i=>i[1]));for(let i of e)if(i[0]!==n&&i[0]!==t&&i[1]!==a&&i[1]!==o||i[0]<n||i[0]>t||i[1]<a||i[1]>o)return!1;return!0}function Ge(e){if(!e)return null;if(e.points.length>2){let t=Math.min(...e.points.map(i=>i[0])),n=Math.min(...e.points.map(i=>i[1])),o=Math.max(0,...e.points.map(i=>i[0])),a=Math.max(0,...e.points.map(i=>i[1]));return{x:t,y:n,width:o-t,height:a-n}}return null}function _a(e){return e.type==="SvgSelector"}function Fn(e,t){if(_a(e)){let r=e.svgShape==="polyline";if(!e.points||e.points.length===0)return null;if(t){let{width:s,height:l}=t;return{type:"SvgSelector",value:`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${s} ${l}" width="${s}" height="${l}"><${r?"polygon":"polyline"} points="${e.points.map(d=>d.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(s=>s.join(",")).join(" ")}${r?" Z":""}' /></g></svg>`}}if(!e.spatial)return null;let{x:n,y:o,width:a,height:i}=e.spatial||{};return!a||!i?null:{type:"FragmentSelector",value:`xywh=${~~n},${~~o},${~~a},${~~i}`}}function qn(e,t){if(!e||!e.points.length)return null;if(Dn(e.points)){let n=e.points.map(l=>l[0]),o=e.points.map(l=>l[1]),a=Math.min(...n),i=Math.min(...o),r=Math.max(...n)-a,s=Math.max(...o)-i;return Fn({type:"BoxSelector",spatial:{x:a,y:i,width:r,height:s}},t)}return Fn({type:"SvgSelector",points:e.points,svgShape:e.open?"polygon":"polyline"},t)}function sr(e){if(e.type==="polygon"&&!e.noBox&&e.points&&Dn(e.points)){let n=Ge({open:!1,points:e.points||[]});return sr({...e,type:"box",selector:n})}if(e.type==="polygon"||e.type==="draw")return{polygon:{points:e.points||[],open:e.open||!1},requestType:e.type,boundingBox:Ge({points:e.points||[],open:!1}),metadata:{},arguments:e.arguments||{},target:qn({points:e.points||[],open:!1},e.bounds)};let t=e.selector;if(t){let n=[[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:n,open:!1},requestType:e.type,boundingBox:t,metadata:{},target:qn({points:n,open:!1},e.bounds),arguments:e.arguments||{}}}return{polygon:{points:[],open:!1},requestType:e.type,boundingBox:null,target:null,metadata:{},arguments:e.arguments||{}}}var Ya={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 lr({events:e,enabledTools:t,keyboardShortcutMapping:n,keyboardShortcutsEnabled:o=!1,debug:a}){let i=(0,ar.createStore)((s,l)=>{let u=null,c=(0,ir.createHelper)({emitter:e,keyboardShortcutsEnabled:o,keyboardShortcutMapping:n,enabledTools:t,customSetState:m=>{a&&console.log("partial state",m),s(p=>({polygonState:{...p.polygonState,...m}}))}},m=>{s(p=>p.tool.requestId?{polygon:{...m,id:p.tool.requestId}}:{polygon:{id:void 0,points:[],open:!0}}),e.emit("atlas.polygon-update",m)});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:Ya,setMetadata:(m,p)=>{let f=p||l().tool.requestId;f&&s(h=>({metadata:{...h.metadata,[f]:{...h.metadata[f]||{},...m}}}))},setToolCanvasId:m=>{s(p=>({tool:{...p.tool,canvasId:m}}))},switchTool:{pointer(){s({mode:"sketch"}),r.tools.setTool("pointer")},hand(){s({mode:"explore"}),r.tools.setTool("hand")},draw(){s({mode:"sketch"}),r.tools.setTool("pencil")},pen(){s({mode:"sketch"}),r.tools.setTool("pen")},line(){s({mode:"sketch"}),r.tools.setTool("line")},lineBox(){s({mode:"sketch"}),r.tools.setTool("lineBox")},box(){s({mode:"sketch"}),r.tools.setTool("box")},triangle(){s({mode:"sketch"}),r.tools.setTool("stamp"),r.stamps.triangle()},hexagon(){s({mode:"sketch"}),r.tools.setTool("stamp"),r.stamps.hexagon()},circle(){s({mode:"sketch"}),r.tools.setTool("stamp"),r.stamps.circle()},remove(){let m=l();m.tool.requestId&&(c.setShape({points:[],open:!0}),m.cancelRequest(m.tool.requestId))}},reset:()=>{let m=l();m.tool.requestId&&m.cancelRequest(m.tool.requestId)},setPolygonState:m=>s({polygonState:typeof m=="function"?m(l().polygonState):m}),getRequestId:()=>{let m=Math.random().toString(36).slice(2);return s(p=>({validRequestIds:[...p.validRequestIds,m]})),{requestId:m,clear:()=>{l().tool.requestId,s(p=>({tool:p.tool.requestId===m?{enabled:!1,requestId:null,canvasId:null}:p.tool,validRequestIds:p.validRequestIds.filter(f=>f!==m)}))}}},cancelRequest:m=>{let p=m||l().tool.requestId;p&&(s(f=>({mode:"explore",tool:f.tool.requestId===p?{enabled:!1,requestId:null,canvasId:null}:f.tool,validRequestIds:f.validRequestIds.filter(h=>h!==p)})),e.emit("atlas.request-cancelled",{id:p}))},requestAnnotation:async(m,p)=>{let h={...l().requests,[p.requestId]:m},v=sr(m);a&&console.log("requestAnnotation",{response:v,request:m});try{let{points:S=[],open:g=!0}=v.polygon||{},{requestId:y,canvasId:b=null,toolId:x}=p,C=x,R=l(),A=R.validRequestIds.includes(y),B=v.requestType;return a&&console.log("setting points",{requestType:B,points:S,open:g}),!A||R.tool.enabled?null:(c.setShape({id:y,points:S,open:g}),B==="polygon"&&(C=C||"pen",c.tools.setTool("pen")),B==="draw"&&(C=C||"draw",c.tools.setTool("pencil")),B==="box"&&(C=C||"box",c.tools.setTool("box")),B==="target"?(C=C||"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)),m.bounds&&c.setBounds(m.bounds),e.emit("atlas.annotation-request",{id:y}),s({polygon:{id:y,points:S,open:g},mode:"sketch",requestType:B,tool:{enabled:!0,requestId:y,canvasId:b},requests:h}),C?R.switchTool[C]?.():S.length===0&&R.switchTool.box(),(typeof m.selectByDefault>"u"&&S.length&&B==="box"||m.selectByDefault)&&R.switchTool.pointer(),new Promise(de=>{let I=te=>{te.id===y&&(s(P=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(P.requests).filter(([M])=>M!==y))})),e.off("atlas.request-cancelled",I),e.off("atlas.annotation-completed",H),de(null))},H=te=>{te.id===y&&(s(P=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(P.requests).filter(([M])=>M!==y))})),e.off("atlas.annotation-completed",H),e.off("atlas.request-cancelled",I),de(te))};e.on("atlas.request-cancelled",I),e.on("atlas.annotation-completed",H)}))}catch(S){return console.error(S),null}},completeRequest:m=>{let p=l().tool.requestId;if(typeof m=="string"&&m&&m!==p)return;let f=p?l().requests[p]?.arguments||{}:{},h=p?l().metadata[p]||{}:{},v=l().polygonState.bounds,S=l().polygon;S&&(e.emit("atlas.annotation-completed",{id:S.id,polygon:S,requestType:l().requestType,target:qn(S,v),canvasId:l().tool.canvasId,boundingBox:Ge(S),metadata:h,arguments:{...f}}),c.setShape(null))},setAtlasRuntime:m=>{u=m,e.emit("atlas.ready",{runtime:m}),r.setScale(1/u._lastGoodScale),u.world.addLayoutSubscriber((p,f)=>{(p==="event-activation"||p==="zoom-to"||p==="go-home")&&u?._lastGoodScale&&!Number.isNaN(u._lastGoodScale)&&r.setScale(1/u._lastGoodScale)}),s({runtime:u})},clearAtlasRuntime:()=>{u=null,s({stableViewport:null,runtime:null})},setCanvasRelativePosition:(m,p)=>{s(f=>({canvasRelativePositions:{...f.canvasRelativePositions,[m]:p}}))},clearCanvasRelativePosition:m=>{s(p=>{let f={...p.canvasRelativePositions};return delete f[m],{canvasRelativePositions:f}})},changeMode:m=>{s({mode:m})},nudgeLeft:m=>{if(!u)return;let p=u.getViewport(),f=m??p.width*.1;u.world.gotoRegion({x:p.x-f,y:p.y,width:p.width,height:p.height,nudge:!0})},nudgeRight:m=>{if(!u)return;let p=u.getViewport(),f=m??p.width*.1;u.world.gotoRegion({x:p.x+f,y:p.y,width:p.width,height:p.height,nudge:!0})},nudgeUp:m=>{if(!u)return;let p=u.getViewport(),f=m??p.height*.1;u.world.gotoRegion({x:p.x,y:p.y-f,width:p.width,height:p.height,nudge:!0})},nudgeDown:m=>{if(!u)return;let p=u.getViewport(),f=m??p.height*.1;u.world.gotoRegion({x:p.x,y:p.y+f,width:p.width,height:p.height,nudge:!0})},zoomIn:()=>{u?.world?.zoomIn()},zoomOut:()=>{u?.world?.zoomOut()},goHome:()=>{u?.world?.goHome()},goToRegion:m=>{u?.world?.gotoRegion(m)},getRuntime:()=>u}}),r=i.getState().polygons;return e.on("atlas.annotation-request",()=>{r.clock.start((s,l,u)=>{e.emit("atlas.polygon-render",{state:s,slowState:l,dt:u})},s=>{typeof s=="object"?i.setState({polygonState:s}):i.setState(l=>({polygonState:s(l.polygonState)}))})}),e.on("atlas.annotation-completed",()=>{r.clock.stop()}),e.on("atlas.request-cancelled",()=>{r.clock.stop()}),i}var Wn=require("react/jsx-runtime"),Ke=(0,fe.createContext)(null);function Q(){return(0,fe.useContext)(Ke)}var $n={};function dr(e="atlas"){return $n[e]?.getState()}function vt({children:e,name:t="atlas",existing:n,atlasStoreConfig:o}){let a=or(),i=(0,fe.useContext)(Ke),r=(0,fe.useMemo)(()=>n||i||lr({events:a,...o||{}}),[a,n,i]),s=(0,cr.useStore)(r,l=>l.mode);return(0,fe.useEffect)(()=>{let l=t;return l&&($n[l]=r),()=>{l&&delete $n[l]}},[r,t]),(0,Wn.jsx)(Ke.Provider,{value:r,children:(0,Wn.jsx)(ur.ModeContext.Provider,{value:s||"explore",children:e})})}var xt=require("@atlas-viewer/atlas"),Pr=require("react");var St=require("react"),Ga=require("react/jsx-runtime");function ja(){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 mr=(0,St.createContext)(ja());mr.displayName="AnnotationStyle";function pr(){return(0,St.useContext)(mr)}var hr=require("@iiif/helpers/annotation-targets"),yr=require("react");var Qe=require("react"),fr=require("zustand"),Ka=(0,fr.create)()((e,t)=>{let n=new Map,o=()=>Math.random().toString(36).substring(2,15),a=i=>{let r=n.get(i);if(r)return r;let s=o();return n.set(i,s),s};return{stylesheets:{},loading:[],errors:[],async parseStylesheet(i){let{loadStylesheet:r,setStylesheet:s}=t();if(!i)return null;if(typeof i=="string")return i.startsWith("http")?{id:i,type:"CssStylesheet",value:await r(i)}:{id:s(i),type:"CssStylesheet",value:i};if(i.type==="CssStylesheet"){let l=i.id;if("value"in i){let u=Array.isArray(i.value)?i.value.join(`
|
|
2
|
-
`):i.value;if(u)return{id:s(u,l),type:"CssStylesheet",value:u}}if("id"in i&&i.id){let u=await r(i.id);return{id:i.id,type:"CssStylesheet",value:u}}}return null},async loadStylesheet(i){if(t().loading.includes(i))return"";try{let s=await fetch(i);if(!s.ok)throw new Error(`Failed to load stylesheet from ${i}`);let l=await s.text();return e(u=>({stylesheets:{...u.stylesheets,[i]:l}})),l}catch(s){return e(l=>({errors:[...l.errors,{url:i,error:s}]})),""}},setStylesheet(i,r){let s=r||a(i);return e(l=>({stylesheets:{...l.stylesheets,[s]:i}})),s}}});function gr(e){let[t,n]=(0,Qe.useState)(""),{loading:o,errors:a,stylesheets:i,parseStylesheet:r}=Ka();return(0,Qe.useEffect)(()=>{e&&r(e).then(l=>{l?.id&&n(l.id)})},[e,r]),[(0,Qe.useMemo)(()=>{let l={};return t&&i[t]&&(l[t]=i[t]),l},[t,i]),{id:t,stylesheets:i,loading:o,errors:a}]}function qt(e={},t=[]){let{id:n,selector:o}=e,a=re(),i=k(),r=n||a.annotation,s=E(d=>r?d.iiif.entities.Annotation[r]:void 0,[r]),[l]=gr(s?.stylesheet),u=E(d=>s&&s.body?s.body.map(c=>c?c.type==="SpecificResource"?{...c,source:i.get(c)}:c?d.iiif.entities[c.type][c.id]:null:null).filter(Boolean):[],[s]);return(0,yr.useMemo)(()=>{if(!s)return;let d={...s,body:u,target:(0,hr.expandTarget)(s.target,{typeMap:i.getState().iiif.mapping,loadedStylesheets:l})};return o?o(d):d},[s,o,u,l,...t])}var vr=require("react");function T(e={},t=[]){let{id:n,selector:o}=e,a=re(),i=n||a.canvas,r=E(s=>i?s.iiif.entities.Canvas[i]:void 0,[i]);return(0,vr.useMemo)(()=>{if(r)return o?o(r):r},[r,o,...t])}var Un=require("react"),Sr=require("@iiif/helpers/events");function $t(e,t){let n=k(),o=(0,Un.useMemo)(()=>(0,Sr.createEventsHelper)(n),[n]),a=E(()=>e&&e.id?n.getResourceMeta(e.id,"eventManager"):null,[e]);return(0,Un.useMemo)(()=>e?o.getListenersAsProps(e,t):{},[a,e,n,t])}var xr=require("react"),br=require("@iiif/helpers/styles");function Xe(e,t){let n=k(),o=(0,xr.useMemo)(()=>(0,br.createStylesHelper)(n),[n]);return E(()=>{if(!e)return null;let a=o.getAppliedStyles(e.id);return a?t?a[t]:a:void 0},[e,t])}var Rr=require("react");var Wt=require("@atlas-viewer/atlas"),me=require("react"),O=require("react/jsx-runtime");function Cr({handleSize:e,resizable:t,onSave:n,children:o,maintainAspectRatio:a,disableCardinalControls:i,aspectRatio:r,...s}){let l=typeof e>"u"?a?12:8:e,{portalRef:u,mode:d,mouseEvent:c,isEditing:m}=(0,Wt.useResizeWorldItem)({x:s.x||0,y:s.y||0,width:s.width,height:s.height,aspectRatio:r,maintainAspectRatio:a},n),p=(0,me.useMemo)(()=>c("translate"),[c]),f=(0,me.useMemo)(()=>c("east"),[c]),h=(0,me.useMemo)(()=>c("west"),[c]),v=(0,me.useMemo)(()=>c("south"),[c]),S=(0,me.useMemo)(()=>c("north"),[c]),g=(0,me.useMemo)(()=>c("south-east"),[c]),y=(0,me.useMemo)(()=>c("south-west"),[c]),b=(0,me.useMemo)(()=>c("north-east"),[c]),x=(0,me.useMemo)(()=>c("north-west"),[c]),C=d==="sketch",R={zIndex:999,boxShadow:"0px 2px 3px 0 rgba(0,0,0,0.2)",outline:"2px solid rgba(155,155,155,.7)",borderRadius:a||i?"50%":2,position:"absolute",background:"#fff",pointerEvents:m?"none":C?"initial":"none"};return(0,O.jsx)(O.Fragment,{children:(0,O.jsxs)("world-object",{...s,children:[o,C&&t?(0,O.jsx)(Wt.HTMLPortal,{ref:u,target:{x:0,y:0,height:s.height,width:s.width},relative:!0,interactive:!1,children:C&&t?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)("div",{onMouseDown:p,onTouchStart:p,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:m?"none":C?"initial":"none"}}),a?null:(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)("div",{title:"east",onTouchStart:f,onMouseDown:f,style:{...R,cursor:"e-resize",height:l*2,width:l,right:0,top:"50%",opacity:i?0:1,transform:`translate(${l/2}px, -${l}px)`}}),(0,O.jsx)("div",{title:"west",onMouseDown:h,style:{...R,cursor:"w-resize",position:"absolute",height:l*2,width:l,left:0,top:"50%",opacity:i?0:1,transform:`translate(-${l/2}px, -${l}px)`}}),(0,O.jsx)("div",{title:"north",onMouseDown:S,style:{...R,cursor:"n-resize",position:"absolute",height:l,width:l*2,left:"50%",top:0,opacity:i?0:1,transform:`translate(-${l}px, -${l/2}px)`}}),(0,O.jsx)("div",{title:"south",onMouseDown:v,style:{...R,cursor:"s-resize",position:"absolute",height:l,width:l*2,left:"50%",bottom:0,opacity:i?0:1,transform:`translate(-${l}px, ${l/2}px)`}})]}),(0,O.jsx)("div",{title:"north-east",onMouseDown:b,style:{...R,cursor:"ne-resize",position:"absolute",height:l,width:l,right:0,top:0,transform:`translate(${l/2}px, -${l/2}px)`}}),(0,O.jsx)("div",{title:"south-east",onMouseDown:g,style:{...R,cursor:"se-resize",position:"absolute",height:l,width:l,bottom:0,right:0,transform:`translate(${l/2}px, ${l/2}px)`}}),(0,O.jsx)("div",{title:"south-west",onMouseDown:y,style:{...R,cursor:"sw-resize",position:"absolute",height:l,width:l,bottom:0,left:0,transform:`translate(-${l/2}px, ${l/2}px)`}}),(0,O.jsx)("div",{title:"north-west",onMouseDown:x,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]})})}var _n=require("react/jsx-runtime");function Ar({id:e,interactive:t,region:n,onClick:o,onHover:a,onSave:i,aspectRatio:r,maintainAspectRatio:s,disableCardinalControls:l,isEditing:u,style:d={backgroundColor:"rgba(0,0,0,.5)"}}){let c=(0,Rr.useCallback)(m=>{u&&i?.({id:n.id,x:n.x,y:n.y,height:n.height,width:n.width,...m})},[i,u,n.id,n.x,n.y,n.height,n.width]);return(0,_n.jsx)(Cr,{id:e,x:n.x,y:n.y,width:n.width,aspectRatio:r,height:n.height,resizable:u,onSave:c,maintainAspectRatio:s,disableCardinalControls:l,children:(0,_n.jsx)("box",{interactive:t,onClick:m=>{m.preventDefault(),m.stopPropagation(),o?.(n)},relativeStyle:!0,onMouseEnter:()=>{a?.(n)},target:{x:0,y:0,width:n.width,height:n.height},style:d})})}var Tr=require("react/jsx-runtime"),Ze=({id:e,style:t,className:n,interactive:o,targetId:a,ignoreTargetId:i})=>{let r=qt({id:e}),s=Xe(r,"atlas"),l=Xe(r,"html"),u=$t(r,["atlas"]),d=T(),c=pr(),m=(0,Pr.useMemo)(()=>(0,xt.mergeStyles)((0,xt.mergeStyles)((0,xt.mergeStyles)((0,xt.mergeStyles)(t,s),r?.motivation?.includes("highlighting")?c.highlighted:c.default),r?.target?.selector?.boxStyle||{})),[t,s,c,r?.motivation,r?.target]),p=a||d?.id;return d&&r&&r.target&&r.target.selector&&(r.target.selector.type==="BoxSelector"||r.target.selector.type==="SvgSelector")&&r.target.source&&(i?!0:r.target.source.id===p||r.target.source===p)?(0,Tr.jsx)(Ar,{id:r.id,isEditing:!0,region:r.target.selector.spatial,style:m,className:l?.className||n,interactive:!!(l?.href||o),href:l?.href||null,title:l?.title||null,hrefTarget:l?.target||null,onClick:()=>{},...u}):null};var Mr=require("react");var wr=require("react");function Ir(e={},t=[]){let{id:n,selector:o}=e,a=re(),i=n||a.annotationPage,r=E(s=>i?s.iiif.entities.AnnotationPage[i]:void 0,[i]);return(0,wr.useMemo)(()=>{if(r)return o?o(r):r},[r,...t])}var Yn=require("react/jsx-runtime"),Ve=({className:e,page:t,targetId:n,ignoreTargetId:o})=>{let a=Ir({id:t.id})||t,i=Xe(a,"atlas"),r=Xe(a,"html");return E(s=>a.id?s.iiif.entities.AnnotationPage[a.id]:null,[]),(0,Yn.jsx)(Mr.Fragment,{children:a.items?.map(s=>(0,Yn.jsx)(Ze,{id:s.id,style:i,className:r?.className||e,targetId:n,ignoreTargetId:o},s.id))})};var bt=require("react"),Ut=require("react/jsx-runtime"),Qa=(0,bt.createContext)(null),Xa=(0,bt.createContext)(null),Za=(0,bt.createContext)(null);function _t({actions:e,state:t,children:n,currentTime:o,progress:a,element:i}){return(0,Ut.jsx)(Za.Provider,{value:{currentTime:o,progress:a,element:i},children:(0,Ut.jsx)(Xa.Provider,{value:e,children:(0,Ut.jsx)(Qa.Provider,{value:t,children:n})})})}var kr=require("react");var Er=require("@iiif/helpers");function Yt(){let e=q(),t=T();return(0,kr.useMemo)(()=>{if(!e||!t||!e.start)return null;let n=(0,Er.expandTarget)(e.start);return!n||n.source.id!==t.id||!n||!n.selector||n.selector.type!=="TemporalSelector"?null:n.selector.temporal},[e,t])}var L=require("react");function Vr(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function Ja(e,t){switch(t.type){case"RESET":return t.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:t.volume,isMuted:t.volume===0};case"TOGGLE_MUTE":return{...e,isMuted:!e.isMuted};case"UNMUTE":return{...e,isMuted:!1}}return e}function jn(e){let t=Math.round(e);return`${Math.floor(t/60)}:${`${t%60}`.padStart(2,"0")}`}function Je(e){let[t,n]=(0,L.useReducer)(Ja,Vr(e.duration));(0,L.useEffect)(()=>{n({type:"RESET",state:Vr(e.duration)})},[e.duration]);let o=(0,L.useRef)(null),a=(0,L.useRef)(null),i=(0,L.useRef)(null),r=(0,L.useRef)(!1),s=(0,L.useCallback)(()=>{a.current&&o.current&&(a.current.innerHTML=jn(o.current.currentTime),i.current&&(i.current.style.width=`${o.current.currentTime/e.duration*100}%`),r.current!==o.current.muted&&(r.current=o.current.muted,n(o.current.muted?{type:"MUTE"}:{type:"UNMUTE"})))},[e.duration]),l=(0,L.useCallback)(()=>{o.current&&(n({type:"PLAY_REQUESTED"}),o.current.play().then(()=>{n({type:"PLAY"})}),s())},[s]),u=(0,L.useCallback)(()=>{o.current&&(o.current.duration>0&&o.current.paused?l():d())},[s]),d=(0,L.useCallback)(()=>{o.current&&(o.current.pause(),n({type:"PAUSE"}),s())},[s]),c=(0,L.useCallback)(()=>{o.current&&(o.current.muted=!o.current.muted,n(o.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),m=(0,L.useCallback)(()=>{o.current&&(o.current.muted=!0,n({type:"MUTE"}))},[]),p=(0,L.useCallback)(()=>{o.current&&(o.current.muted=!1,n({type:"UNMUTE"}))},[]),f=(0,L.useCallback)(S=>{o.current&&(o.current.muted=!1,o.current.volume=S/100,n({type:"SET_VOLUME",volume:S}))},[]),h=(0,L.useCallback)(S=>{o.current&&(o.current.currentTime=Math.max(0,Math.min(S*e.duration,e.duration)),s())},[]),v=(0,L.useCallback)(S=>{if(o.current){let g=typeof S=="function"?S(o.current.currentTime):S;o.current.currentTime=Math.max(0,Math.min(g,e.duration)),s()}},[]);return(0,L.useEffect)(()=>{let S=setInterval(()=>{s()},350);return()=>clearInterval(S)},[s,e.duration]),(0,L.useEffect)(()=>{let S=()=>{n({type:"FINISHED"})},g=o.current;return g?.addEventListener("ended",S),()=>g?.removeEventListener("ended",S)},[]),[{element:o,currentTime:a,progress:i},t,{play:l,pause:d,playPause:u,mute:m,unmute:p,toggleMute:c,setVolume:f,setDurationPercent:h,setTime:v}]}var Ne=require("react"),Gn=(0,Ne.createContext)(()=>{}),Kn=(0,Ne.createContext)(()=>{});function j(e,t,n,o,a=[]){let i=(0,Ne.useContext)(e==="portal"?Kn:Gn);(0,Ne.useEffect)(()=>(e!=="none"&&i(t,n,o),()=>{i(t,null)}),[t,e,i,...a])}var Gt=require("react/jsx-runtime");function Qn({media:e,startTime:t,children:n}){let[{element:o,currentTime:a,progress:i},r,s]=Je({duration:e.duration}),l=t?`${e.url}#t=${t}`:e.url;return(0,Gt.jsxs)(_t,{state:r,actions:s,currentTime:a,progress:i,element:o,children:[(0,Gt.jsx)("audio",{ref:o,src:l}),n]},e.url)}function jt({media:e,mediaControlsDeps:t,audioCopmonent:n=Qn,children:o}){let a=Yt();return j("portal","audio",n,{media:e,startTime:a?a.startTime:null,children:o},[e,a,...t||[]]),null}var Kt=require("react"),Le=(0,Kt.createContext)(null);Le.displayName="Strategy";function z(){let e=(0,Kt.useContext)(Le);if(!e)throw new Error("useStrategy must be used within a StrategyProvider");return e}var Ce=require("react/jsx-runtime");function Xn({model:e}){return(0,Ce.jsxs)(Ce.Fragment,{children:[(0,Ce.jsx)("style",{children:`
|
|
1
|
+
"use strict";var Pa=Object.create;var Ot=Object.defineProperty;var Ta=Object.getOwnPropertyDescriptor;var wa=Object.getOwnPropertyNames;var Ia=Object.getPrototypeOf,Ma=Object.prototype.hasOwnProperty;var ka=(e,t)=>{for(var n in t)Ot(e,n,{get:t[n],enumerable:!0})},So=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of wa(t))!Ma.call(e,a)&&a!==n&&Ot(e,a,{get:()=>t[a],enumerable:!(o=Ta(t,a))||o.enumerable});return e};var Z=(e,t,n)=>(n=e!=null?Pa(Ia(e)):{},So(t||!e||!e.__esModule?Ot(n,"default",{value:e,enumerable:!0}):n,e)),Ea=e=>So(Ot({},"__esModule",{value:!0}),e);var Vs={};ka(Vs,{CanvasPanel:()=>$});module.exports=Ea(Vs);var $e=require("react");var qe=Z(require("react"),1),xo=require("react/jsx-runtime"),Va={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},Bt=qe.default.createContext(Va),oe=()=>(0,qe.useContext)(Bt);function Ce({value:e,children:t}){let n=oe(),o=(0,qe.useMemo)(()=>({...n,...e}),[e,n]);return(0,xo.jsx)(Bt.Provider,{value:o,children:t})}var bo=require("react/jsx-runtime");function ge({canvas:e,children:t}){return(0,bo.jsx)(Ce,{value:{canvas:e},children:t})}var Ht=Z(require("react"),1),gt=require("@iiif/helpers/vault");var zn=require("react/jsx-runtime"),ke=Ht.default.createContext({vault:null,setVaultInstance:e=>{}});function We({vault:e,vaultOptions:t,useGlobal:n,resources:o,children:a}){let[r,i]=(0,Ht.useState)(()=>e||(n?(0,gt.globalVault)(t):t?new gt.Vault(t):new gt.Vault));return(0,zn.jsx)(ke.Provider,{value:{vault:r,setVaultInstance:i},children:(0,zn.jsx)(Ce,{value:o||{},children:a})})}var Ro=require("react"),Ao=Z(require("react"),1);var Co=require("react"),M=()=>{let{vault:e}=(0,Co.useContext)(ke);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};var Dt=require("react");function k(e,t=[]){let n=M(),[o,a]=(0,Dt.useState)(()=>e(n.getState(),n));return(0,Dt.useEffect)(()=>n.subscribe(r=>e(r,n),r=>{a(r)},!1),t),o}var Ue=Ao.default.createContext([]);function $t(){let e=(0,Ro.useContext)(Ue);return k(t=>e.map(n=>t.iiif.entities.Canvas[n]).filter(Boolean),[e])}var Po=require("@iiif/helpers/vault"),To=require("react");function _e(e){let t=(0,To.useContext)(ke);return e||(t&&t.vault?t.vault:(0,Po.globalVault)())}var wo=require("react");function F(e={},t=[]){let{id:n,selector:o}=e,a=oe(),r=M(),i=n||a.manifest,s=k(l=>i?l.iiif.entities.Manifest[i]:void 0,[i]);return(0,wo.useMemo)(()=>{if(s)return o?o(s):s},[s,o,...t])}var Jo=require("react"),Wt=require("react");var Re=require("react");function Io(e,{noCache:t=!1}={}){let n=typeof e=="string"?e:e.id,o=_e(),[a,r]=(0,Re.useState)(n),[i,s]=(0,Re.useState)(void 0),l=(0,Re.useMemo)(()=>o.get(n,{skipSelfReturn:!0})||void 0,[n,o]),[u,d]=(0,Re.useState)(l);return(0,Re.useEffect)(()=>{(async()=>{try{let c=l&&!t?l:await o.load(n),m=c?c.id||c["@id"]:null;c&&a!==m&&r(m),d(c)}catch(c){s(c)}})()},[n,t]),{isLoaded:!!u,id:a,requestId:n,error:i,resource:u,cached:!!(u&&u===l)}}function Mo(e,t){let{id:n,isLoaded:o,error:a,resource:r,requestId:i,cached:s}=Io(e,t);return{id:n,isLoaded:o,error:a,manifest:r,requestId:i,cached:s}}var Eo=require("react/jsx-runtime");function ko({manifest:e,children:t}){return(0,Eo.jsx)(Ce,{value:{manifest:e},children:t})}var No=require("react/jsx-runtime");function Vo({range:e,children:t}){return(0,No.jsx)(Ce,{value:{range:e},children:t})}function On(e,t){let n=[];for(let o of t.items)if(o.type==="SpecificResource"&&o.source?.type==="Canvas"&&(o.source.id.indexOf("#")!==-1?n.push({id:o.source.id.split("#")[0],type:"Canvas"}):n.push(o.source)),o.type==="Range"&&n.push(...On(e,e.get(o))),o.type==="SpecificResource"){let a=typeof o.source=="string"?o.source:o.source.id;n.push({id:a,type:"Canvas"})}return n}function Lo(e,t,{disablePaging:n,skipNonPaged:o}={}){let a=t.behavior,r=a.includes("paged"),i=r?!1:a.includes("continuous"),s=r||i?!1:a.includes("individuals"),l=t.type==="Manifest"?t.items:On(e,t);if(i)return[l,[l.map((f,h)=>h)]];if(s||!r||n)return[l,l.map((f,h)=>[h])];let u=[],d=[],c=()=>{d.length&&(u.push([...d]),d=[])},m=0,p=!1;for(let f=0;f<l.length;f++){let h=e.get(l[f]);if(h.behavior.includes("non-paged")){f===m&&m++,o||(c(),u.push([f]),c());continue}if(f===m||h.behavior.includes("facing-pages")){d.length&&(p=!0),c(),u.push([f]),c();continue}if(d.push(f),p){c(),p=!1;continue}d.length>1&&c()}return d.length&&c(),[l,u]}var re=require("react");var zo=require("react");function Oo(e={},t=[]){let{id:n,selector:o}=e,a=oe(),r=n||a.range,i=k(s=>r?s.iiif.entities.Range[r]:void 0,[r]);return(0,zo.useMemo)(()=>{if(i)return o?o(i):i},[i,o,...t])}function Bo({startCanvas:e,disablePaging:t}){let n=M(),o=F(),a=Oo(),[r,i]=(0,re.useState)(void 0),s=a||o;if(!s)throw new Error("Nothing selected");let[l,u]=(0,re.useMemo)(()=>Lo(n,s,{disablePaging:t}),[n,s,t]),d=(0,re.useRef)(u);if(d.current!==u){let y=d.current[r][0],S=u.findIndex(b=>b.includes(y));d.current=u,i(S)}let c=(0,re.useCallback)(h=>{let y=u.findIndex(S=>S.includes(h));i(y===-1?0:y)},[l,u]),m=(0,re.useCallback)(h=>{let y=l.findIndex(S=>S.id===h);y!==-1?c(y):i(0)},[l,u]),p=(0,re.useCallback)(()=>{i(h=>h>=u.length-1?h:h+1)},[u]),f=(0,re.useCallback)(()=>{i(h=>h<=0?0:h-1)},[u]);return typeof r>"u"&&(e?m(e):i(0)),{visibleItems:u[r]?.map(h=>l[h].id)||[],cursor:r,items:l,sequence:u,hasPrevious:r>0,hasNext:r<u.length-1,setSequenceIndex:i,setCanvasIndex:c,setCanvasId:m,next:p,previous:f}}var ae=require("react"),Ft=require("zustand");var Hn=require("zustand/vanilla");function ie(e,t,n){let o=t.findIndex(i=>i.service.id===e);if(o===-1)return t;let a=[...t],r=n(a[o]);return r===a[o]?t:(a[o]=r,a)}var Do=()=>(0,Hn.createStore)((e,t)=>({currentAuth:-1,authItems:[],login:()=>{let n=t().authItems[t().currentAuth];if(!n||n.isPending||n.isLoggedIn)return;if(n.type!=="active")throw new Error("Cannot login to non-active service");let o=n.service.service.find(a=>a.type==="AuthAccessTokenService2");if(!o)throw new Error("Token service not found");e(()=>({authItems:ie(n.id,t().authItems,a=>({...a,isPending:!0}))})),Ho(n.service).then(()=>{Bn(o).then(a=>{let r=a.expiresIn,i=Date.now()+r*1e3;e(()=>({authItems:ie(n.id,t().authItems,s=>({...s,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:i}}))}))}).catch(a=>{e(()=>({authItems:ie(n.id,t().authItems,r=>({...r,isLoggedIn:!1,isPending:!1,error:a.message}))}))})})},logout:()=>{let n=t().authItems[t().currentAuth];if(!n||n.isPending||!n.isLoggedIn)return;if(n.type!=="active")throw new Error("Cannot logout of non-active service");let o=n.service.service.find(i=>i.type==="AuthLogoutService2");if(!o)return;let a=`${o.id}?origin=${qo()}`,r=window.open(a);e(()=>({authItems:ie(n.id,t().authItems,i=>({...i,isLoggedIn:!1,session:null,isPending:!1}))}))},nextAuth:()=>{let n=t().authItems.length,o=t().currentAuth+1;o>=n||e(()=>({currentAuth:o}))},previousAuth:()=>{let n=t().currentAuth-1;n<0||e(()=>({currentAuth:n}))},setAuth:n=>{n!==-1&&(n<0||n>=t().authItems.length)||e(()=>({currentAuth:n}))},addService:(n,o)=>{if(!n.service)return;let a=n.service.find(s=>s.type==="AuthAccessTokenService2"),r=n;if(t().authItems.find(s=>s.service.id===n.id)){e(()=>({authItems:ie(n.id,t().authItems,s=>({...s,instances:s.instances+1}))}));return}if(e(()=>({currentAuth:r.profile==="active"?0:t().currentAuth,authItems:[{id:n.id,type:n.profile,service:n,probeId:o,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...t().authItems]})),n.profile==="external"){if(!a)throw new Error("Token service not found");Bn(a).then(s=>{e(()=>({authItems:ie(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:ie(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:s.message}))}))})}if(n.profile==="kiosk"){if(!a)throw new Error("Token service not found");e(()=>({authItems:ie(n.id,t().authItems,s=>({...s,isPending:!0}))})),Ho(r).then(()=>{Bn(a).then(s=>{e(()=>({authItems:ie(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:ie(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,error:s.message}))}))})})}n.profile},removeService:(n,o)=>{let a=t().currentAuth===t().authItems.findIndex(i=>i.service.id===n.id),r=t().currentAuth;if(a){let i=t().authItems.find(l=>l.service.id===n.id);i&&i.instances>1||(r=t().authItems.findIndex(u=>u.service.id!==n.id&&u.instances>0))}e(()=>({authItems:ie(n.id,t().authItems,i=>({...i,instances:i.instances-1})),currentAuth:r}))}})),$o=(e,t)=>(0,Hn.createStore)((n,o)=>({service:e,status:e?"unknown":"success",shouldRedirect:!1,redirectResource:null,shouldSubstitute:!1,substituteResource:null,error:null,errorHeading:null,errorNote:null,shouldDisplayResource:!1,token:t||null,async probe(){if(!o().service)return;let a=o().service?.id;if(!a){n({status:"error",error:"Service ID not found",errorHeading:{en:["Service ID not found"]}});return}n({status:"probing"});let r=o().token;try{let i=await fetch(a,{headers:r?{Authorization:`Bearer ${o().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(s=>s.json());if(i.status===200)n({status:"success",shouldDisplayResource:!0,error:null,errorHeading:null,errorNote:null,shouldSubstitute:!1,shouldRedirect:!1});else if(i.status<400&&i.status>=300){if(!i.location)throw new Error("Redirect location not found");n({status:"error",shouldDisplayResource:!1,shouldRedirect:!0,redirectResource:i.location||null})}else if(i.status===401)n({status:"error",shouldDisplayResource:!1,shouldRedirect:!1,shouldSubstitute:!!i.substitute,substituteResource:i.substitute||null,error:"Unauthorized",errorHeading:i.heading||{en:["Unauthorized"]},errorNote:i.note||null});else throw new Error("Unknown error")}catch(i){n({status:"error",error:i.message,errorHeading:{en:["Unknown error"]}})}},setToken(a){n({token:a})}}));function Fo(e){let t=e.service||e.services||[],n={hasAuth:!1,services:{}};for(let o of t)if(o.type==="AuthProbeService2"){n.services.probe=o,n.hasAuth=!0;let a=o.service.filter(r=>r.type==="AuthAccessService2");a[0]&&(n.services.access=a[0])}return n}async function Bn(e,{strict:t=!0}={}){return new Promise((n,o)=>{let a=Math.random().toString(36).substring(7),r=`${e.id}?messageId=${a}&origin=${window.location.origin}`,i=u=>{let d=u.data;if(d.messageId===a){if(t&&d.type!=="AuthAccessToken2"){s(),o("Invalid response, expected type=AuthAccessToken2");return}if(!d.accessToken){s(),o("Invalid response, expected accessToken");return}s(),n(d)}},s=()=>window.removeEventListener("message",i),l=document.createElement("iframe");l.src=r,l.style.display="none",document.body.appendChild(l),window.addEventListener("message",i)})}function qo(e){let t=window.location;if(e){let n=document.createElement("a");return n.href=e,n.protocol+"//"+n.hostname+(n.port?":"+n.port:"")}return t.protocol+"//"+t.hostname+(t.port?":"+t.port:"")}async function Ho(e){let t=`${e.id}?origin=${qo()}`,n=window.open(t);if(!n)throw new Error("Failed to open window");return new Promise((o,a)=>{let r=setInterval(()=>{n.closed&&(clearInterval(r),o())},500)})}var Ye=require("react");var Wo=require("zustand");function Uo(e){let t=(0,Ye.useMemo)(()=>Fo(e),[e]),n=_o(t.services.access?.id),o=(0,Ye.useMemo)(()=>$o(t.services.probe,n),[t.services.probe]),a=(0,Wo.useStore)(o);return(0,Ye.useEffect)(()=>{a.status==="unknown"&&!n&&a.probe()},[t.services.probe,a.status]),(0,Ye.useEffect)(()=>{n&&(a.setToken(n),a.probe())},[n]),[e,a,t.hasAuth]}var ht=require("react/jsx-runtime"),je=(0,ae.createContext)(null),Na=(0,ae.createContext)(null);Na.displayName="CurrentAuth";var La=(0,ae.createContext)(null);La.displayName="AuthActions";function Yo({children:e}){let t=(0,ae.useMemo)(()=>Do(),[]);return(0,ht.jsx)(je.Provider,{value:t,children:e})}function jo(){return!!(0,ae.useContext)(je)}function $n(){let e=(0,ae.useContext)(je);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function za(){let e=$n();return(0,Ft.useStore)(e,n=>({login:n.login,logout:n.logout,nextAuth:n.nextAuth,previousAuth:n.previousAuth,setAuth:n.setAuth,addService:n.addService,removeService:n.removeService}))}function Oa(e){let t=$n();return(0,Ft.useStore)(t,o=>o.authItems.find(a=>a.service.id===e))}function _o(e){let t=$n();return(0,Ft.useStore)(t,o=>o.authItems.find(a=>a.id===e)?.session?.token)}function Ba(e){let t=za(),n=Oa(e.service.id);return(0,ae.useEffect)(()=>(t?.addService(e.service,e.probeId),()=>{t?.removeService(e.service,e.probeId)}),[e.service]),n?(n.error||!n.isLoggedIn,e.children):null}function Dn(){return null}function Go(e){let[t,n,o]=Uo(e.resource),a=e.fallbackComponent||Dn,r=e.loadingComponent||Dn,i=e.errorComponent||Dn,s=n.service,l=null;if(!o||!s)return e.children(t);let u=s.service.filter(d=>d.type==="AuthAccessService2");n.status==="error"&&(l=(0,ht.jsx)(i,{resource:e.resource,error:n.error||"",heading:n.errorHeading,note:n.errorNote,extra:e.extra})),(n.status==="unknown"||n.status==="probing")&&(l=(0,ht.jsx)(r,{})),n.status==="success"&&(l=e.children(t));for(let d of u)l=(0,ht.jsx)(Ba,{service:d,probeId:s.id,children:l},d.id);return l}var yt=require("react");var Ko=require("zustand/vanilla"),Ha=e=>e.id||e["@id"];function Da(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 Qo=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?Ha(t):void 0,o=null;return(0,Ko.createStore)((a,r)=>({service:t,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!t,hasAutocomplete:t?!!Da(t):!1,errorMessage:"",search(i,s={}){if(!n)throw new Error("No search service found.");o&&!o.signal.aborted&&o.abort(),o=new AbortController;let l=new URLSearchParams;i.q&&l.set("q",i.q),i.motivation&&l.set("motivation",i.motivation),i.date&&l.set("date",i.date),i.user&&l.set("user",i.user),a({loading:!0}),fetch(`${n}?${l.toString()}`,{signal:o.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...s.headers||{}}}).then(async u=>{if(!o?.signal.aborted)if(u.ok){let d=await u.json();a({resources:d.resources,error:!1,errorMessage:""})}else a({resources:[],error:!0,errorMessage:u.statusText})})},clearSearch(){a({resources:[],error:!1,errorMessage:""})},highlightResult(i){let s=r().resources.find(l=>l["@id"]===i);a({highlight:s})},nextResult(){let i=r().resources,s=r().highlight;if(!s){a({highlight:i[0]||null});return}let l=i.findIndex(u=>u["@id"]===s["@id"]);if(l===-1){a({highlight:i[0]||null});return}a({highlight:i[l+1]||i[0]||null})},previousResult(){let i=r().resources,s=r().highlight;if(!s){a({highlight:i[i.length-1]||null});return}let l=i.findIndex(u=>u["@id"]===s["@id"]);if(l===-1){a({highlight:i[i.length-1]||null});return}if(l===0){a({highlight:i[i.length-1]||null});return}a({highlight:i[l-1]||i[i.length-1]||null})}}))};var $a=require("zustand");function Xo(){let e=F();return e?e.service.find(t=>t.profile==="SearchService1"||t.profile==="http://iiif.io/api/search/1/search"):void 0}var qt=require("react/jsx-runtime"),Ge=(0,yt.createContext)(null);Ge.displayName="Search";function Zo(e){let t=Xo();return e.store?(0,qt.jsx)(Ge.Provider,{value:e.store,children:e.children}):(0,qt.jsx)(Fa,{service:t,children:e.children})}function Fa({service:e,children:t}){let n=(0,yt.useMemo)(()=>Qo(e),[e]);return(0,qt.jsx)(Ge.Provider,{value:n,children:t})}var G=require("react/jsx-runtime"),vt=()=>{},St=(0,Wt.createContext)({setCurrentCanvasId:vt,setCurrentCanvasIndex:vt,nextCanvas:vt,previousCanvas:vt,items:[],sequence:[],setSequenceIndex:vt,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function qa(e){let t=F(),{cursor:n,visibleItems:o,next:a,sequence:r,items:i,setCanvasIndex:s,setCanvasId:l,previous:u,setSequenceIndex:d,hasNext:c,hasPrevious:m}=Bo({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),p=(0,Wt.useMemo)(()=>({sequence:r,items:i,setCurrentCanvasId:l,nextCanvas:a,previousCanvas:u,totalCanvases:i.length,setCurrentCanvasIndex:s,setSequenceIndex:d,currentSequenceIndex:n,hasNext:c,hasPrevious:m}),[r,i,l,a,u,i,s,d,n]);return t?o.length===0?null:(0,G.jsx)(St.Provider,{value:p,children:(0,G.jsx)(Ue.Provider,{value:o,children:(0,G.jsx)(ge,{canvas:o[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,G.jsx)("div",{children:"Sorry, something went wrong."}))}function er(e){let t=_e(e.vault),n=Mo(e.manifest);if(!n)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,G.jsx)("div",{children:"Sorry, something went wrong."});if(n.error)return(0,G.jsx)("div",{children:n.error.toString()});if(!n.isLoaded)return(0,G.jsx)("div",{children:"Loading..."});let o=(0,G.jsx)(qa,{...e,children:e.children});return(0,G.jsx)(We,{vault:t,children:(0,G.jsx)(ko,{manifest:n.id,children:(0,G.jsx)(Yo,{children:(0,G.jsx)(Zo,{children:e.rangeId?(0,G.jsx)(Vo,{range:e.rangeId,children:o}):o})})})})}function Ut(){return(0,Jo.useContext)(St)}var lr=require("@atlas-viewer/atlas"),he=require("react"),ur=require("zustand");var tr=Z(require("mitt"),1),Ee=require("react"),Ua=require("react/jsx-runtime"),Wa=(0,tr.default)(),xt=(0,Ee.createContext)(Wa);function nr(){return(0,Ee.useContext)(xt)}function or(e,t,n=[]){let o=(0,Ee.useContext)(xt);(0,Ee.useEffect)(()=>{let a=r=>{t(r)};return o.on(e,a),()=>{o.off(e,a)}},[o,e,...n])}var rr=require("polygon-editor"),ir=require("zustand/vanilla");function Fn(e){let t=Math.max(...e.map(r=>r[0])),n=Math.min(...e.map(r=>r[0])),o=Math.max(...e.map(r=>r[1])),a=Math.min(...e.map(r=>r[1]));for(let r of e)if(r[0]!==n&&r[0]!==t&&r[1]!==a&&r[1]!==o||r[0]<n||r[0]>t||r[1]<a||r[1]>o)return!1;return!0}function Ke(e){if(!e)return null;if(e.points.length>2){let t=Math.min(...e.points.map(r=>r[0])),n=Math.min(...e.points.map(r=>r[1])),o=Math.max(0,...e.points.map(r=>r[0])),a=Math.max(0,...e.points.map(r=>r[1]));return{x:t,y:n,width:o-t,height:a-n}}return null}function _a(e){return e.type==="SvgSelector"}function qn(e,t){if(_a(e)){let i=e.svgShape==="polyline";if(!e.points||e.points.length===0)return null;if(t){let{width:s,height:l}=t;return{type:"SvgSelector",value:`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${s} ${l}" width="${s}" height="${l}"><${i?"polygon":"polyline"} points="${e.points.map(d=>d.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(s=>s.join(",")).join(" ")}${i?" Z":""}' /></g></svg>`}}if(!e.spatial)return null;let{x:n,y:o,width:a,height:r}=e.spatial||{};return!a||!r?null:{type:"FragmentSelector",value:`xywh=${~~n},${~~o},${~~a},${~~r}`}}function Wn(e,t){if(!e||!e.points.length)return null;if(Fn(e.points)){let n=e.points.map(l=>l[0]),o=e.points.map(l=>l[1]),a=Math.min(...n),r=Math.min(...o),i=Math.max(...n)-a,s=Math.max(...o)-r;return qn({type:"BoxSelector",spatial:{x:a,y:r,width:i,height:s}},t)}return qn({type:"SvgSelector",points:e.points,svgShape:e.open?"polygon":"polyline"},t)}function ar(e){if(e.type==="polygon"&&!e.noBox&&e.points&&Fn(e.points)){let n=Ke({open:!1,points:e.points||[]});return ar({...e,type:"box",selector:n})}if(e.type==="polygon"||e.type==="draw")return{polygon:{points:e.points||[],open:e.open||!1},requestType:e.type,boundingBox:Ke({points:e.points||[],open:!1}),metadata:{},arguments:e.arguments||{},target:Wn({points:e.points||[],open:!1},e.bounds)};let t=e.selector;if(t){let n=[[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:n,open:!1},requestType:e.type,boundingBox:t,metadata:{},target:Wn({points:n,open:!1},e.bounds),arguments:e.arguments||{}}}return{polygon:{points:[],open:!1},requestType:e.type,boundingBox:null,target:null,metadata:{},arguments:e.arguments||{}}}var Ya={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 sr({events:e,enabledTools:t,keyboardShortcutMapping:n,keyboardShortcutsEnabled:o=!1,debug:a}){let r=(0,ir.createStore)((s,l)=>{let u=null,c=(0,rr.createHelper)({emitter:e,keyboardShortcutsEnabled:o,keyboardShortcutMapping:n,enabledTools:t,customSetState:m=>{a&&console.log("partial state",m),s(p=>({polygonState:{...p.polygonState,...m}}))}},m=>{s(p=>p.tool.requestId?{polygon:{...m,id:p.tool.requestId}}:{polygon:{id:void 0,points:[],open:!0}}),e.emit("atlas.polygon-update",m)});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:Ya,setMetadata:(m,p)=>{let f=p||l().tool.requestId;f&&s(h=>({metadata:{...h.metadata,[f]:{...h.metadata[f]||{},...m}}}))},setToolCanvasId:m=>{s(p=>({tool:{...p.tool,canvasId:m}}))},switchTool:{pointer(){s({mode:"sketch"}),i.tools.setTool("pointer")},hand(){s({mode:"explore"}),i.tools.setTool("hand")},draw(){s({mode:"sketch"}),i.tools.setTool("pencil")},pen(){s({mode:"sketch"}),i.tools.setTool("pen")},line(){s({mode:"sketch"}),i.tools.setTool("line")},lineBox(){s({mode:"sketch"}),i.tools.setTool("lineBox")},box(){s({mode:"sketch"}),i.tools.setTool("box")},triangle(){s({mode:"sketch"}),i.tools.setTool("stamp"),i.stamps.triangle()},hexagon(){s({mode:"sketch"}),i.tools.setTool("stamp"),i.stamps.hexagon()},circle(){s({mode:"sketch"}),i.tools.setTool("stamp"),i.stamps.circle()},remove(){let m=l();m.tool.requestId&&(c.setShape({points:[],open:!0}),m.cancelRequest(m.tool.requestId))}},reset:()=>{let m=l();m.tool.requestId&&m.cancelRequest(m.tool.requestId)},setPolygonState:m=>s({polygonState:typeof m=="function"?m(l().polygonState):m}),getRequestId:()=>{let m=Math.random().toString(36).slice(2);return s(p=>({validRequestIds:[...p.validRequestIds,m]})),{requestId:m,clear:()=>{l().tool.requestId,s(p=>({tool:p.tool.requestId===m?{enabled:!1,requestId:null,canvasId:null}:p.tool,validRequestIds:p.validRequestIds.filter(f=>f!==m)}))}}},cancelRequest:m=>{let p=m||l().tool.requestId;p&&(s(f=>({mode:"explore",tool:f.tool.requestId===p?{enabled:!1,requestId:null,canvasId:null}:f.tool,validRequestIds:f.validRequestIds.filter(h=>h!==p)})),e.emit("atlas.request-cancelled",{id:p}))},requestAnnotation:async(m,p)=>{let h={...l().requests,[p.requestId]:m},y=ar(m);a&&console.log("requestAnnotation",{response:y,request:m});try{let{points:S=[],open:b=!0}=y.polygon||{},{requestId:v,canvasId:x=null,toolId:g}=p,C=g,A=l(),T=A.validRequestIds.includes(v),O=y.requestType;return a&&console.log("setting points",{requestType:O,points:S,open:b}),!T||A.tool.enabled?null:(c.setShape({id:v,points:S,open:b}),O==="polygon"&&(C=C||"pen",c.tools.setTool("pen")),O==="draw"&&(C=C||"draw",c.tools.setTool("pencil")),O==="box"&&(C=C||"box",c.tools.setTool("box")),O==="target"?(C=C||"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)),m.bounds&&c.setBounds(m.bounds),e.emit("atlas.annotation-request",{id:v}),s({polygon:{id:v,points:S,open:b},mode:"sketch",requestType:O,tool:{enabled:!0,requestId:v,canvasId:x},requests:h}),C?A.switchTool[C]?.():S.length===0&&A.switchTool.box(),(typeof m.selectByDefault>"u"&&S.length&&O==="box"||m.selectByDefault)&&A.switchTool.pointer(),new Promise(ce=>{let de=me=>{me.id===v&&(s(R=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(R.requests).filter(([w])=>w!==v))})),e.off("atlas.request-cancelled",de),e.off("atlas.annotation-completed",te),ce(null))},te=me=>{me.id===v&&(s(R=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(R.requests).filter(([w])=>w!==v))})),e.off("atlas.annotation-completed",te),e.off("atlas.request-cancelled",de),ce(me))};e.on("atlas.request-cancelled",de),e.on("atlas.annotation-completed",te)}))}catch(S){return console.error(S),null}},completeRequest:m=>{let p=l().tool.requestId;if(typeof m=="string"&&m&&m!==p)return;let f=p?l().requests[p]?.arguments||{}:{},h=p?l().metadata[p]||{}:{},y=l().polygonState.bounds,S=l().polygon;S&&(e.emit("atlas.annotation-completed",{id:S.id,polygon:S,requestType:l().requestType,target:Wn(S,y),canvasId:l().tool.canvasId,boundingBox:Ke(S),metadata:h,arguments:{...f}}),c.setShape(null))},setAtlasRuntime:m=>{u=m,e.emit("atlas.ready",{runtime:m}),i.setScale(1/u._lastGoodScale),u.world.addLayoutSubscriber((p,f)=>{(p==="event-activation"||p==="zoom-to"||p==="go-home")&&u?._lastGoodScale&&!Number.isNaN(u._lastGoodScale)&&i.setScale(1/u._lastGoodScale)}),s({runtime:u})},clearAtlasRuntime:()=>{u=null,s({stableViewport:null,runtime:null})},setCanvasRelativePosition:(m,p)=>{s(f=>({canvasRelativePositions:{...f.canvasRelativePositions,[m]:p}}))},clearCanvasRelativePosition:m=>{s(p=>{let f={...p.canvasRelativePositions};return delete f[m],{canvasRelativePositions:f}})},changeMode:m=>{s({mode:m})},nudgeLeft:m=>{if(!u)return;let p=u.getViewport(),f=m??p.width*.1;u.world.gotoRegion({x:p.x-f,y:p.y,width:p.width,height:p.height,nudge:!0})},nudgeRight:m=>{if(!u)return;let p=u.getViewport(),f=m??p.width*.1;u.world.gotoRegion({x:p.x+f,y:p.y,width:p.width,height:p.height,nudge:!0})},nudgeUp:m=>{if(!u)return;let p=u.getViewport(),f=m??p.height*.1;u.world.gotoRegion({x:p.x,y:p.y-f,width:p.width,height:p.height,nudge:!0})},nudgeDown:m=>{if(!u)return;let p=u.getViewport(),f=m??p.height*.1;u.world.gotoRegion({x:p.x,y:p.y+f,width:p.width,height:p.height,nudge:!0})},zoomIn:()=>{u?.world?.zoomIn()},zoomOut:()=>{u?.world?.zoomOut()},goHome:()=>{u?.world?.goHome()},goToRegion:m=>{u?.world?.gotoRegion(m)},getRuntime:()=>u}}),i=r.getState().polygons;return e.on("atlas.annotation-request",()=>{i.clock.start((s,l,u)=>{e.emit("atlas.polygon-render",{state:s,slowState:l,dt:u})},s=>{typeof s=="object"?r.setState({polygonState:s}):r.setState(l=>({polygonState:s(l.polygonState)}))})}),e.on("atlas.annotation-completed",()=>{i.clock.stop()}),e.on("atlas.request-cancelled",()=>{i.clock.stop()}),r}var _n=require("react/jsx-runtime"),Qe=(0,he.createContext)(null);function K(){return(0,he.useContext)(Qe)}var Un={};function cr(e="atlas"){return Un[e]?.getState()}function bt({children:e,name:t="atlas",existing:n,atlasStoreConfig:o}){let a=nr(),r=(0,he.useContext)(Qe),i=(0,he.useMemo)(()=>n||r||sr({events:a,...o||{}}),[a,n,r]),s=(0,ur.useStore)(i,l=>l.mode);return(0,he.useEffect)(()=>{let l=t;return l&&(Un[l]=i),()=>{l&&delete Un[l]}},[i,t]),(0,_n.jsx)(Qe.Provider,{value:i,children:(0,_n.jsx)(lr.ModeContext.Provider,{value:s||"explore",children:e})})}var Rt=require("@atlas-viewer/atlas"),Ar=require("react");var Ct=require("react"),Ga=require("react/jsx-runtime");function ja(){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 dr=(0,Ct.createContext)(ja());dr.displayName="AnnotationStyle";function mr(){return(0,Ct.useContext)(dr)}var gr=require("@iiif/helpers/annotation-targets"),hr=require("react");var Xe=require("react"),pr=require("zustand"),Ka=(0,pr.create)()((e,t)=>{let n=new Map,o=()=>Math.random().toString(36).substring(2,15),a=r=>{let i=n.get(r);if(i)return i;let s=o();return n.set(r,s),s};return{stylesheets:{},loading:[],errors:[],async parseStylesheet(r){let{loadStylesheet:i,setStylesheet:s}=t();if(!r)return null;if(typeof r=="string")return r.startsWith("http")?{id:r,type:"CssStylesheet",value:await i(r)}:{id:s(r),type:"CssStylesheet",value:r};if(r.type==="CssStylesheet"){let l=r.id;if("value"in r){let u=Array.isArray(r.value)?r.value.join(`
|
|
2
|
+
`):r.value;if(u)return{id:s(u,l),type:"CssStylesheet",value:u}}if("id"in r&&r.id){let u=await i(r.id);return{id:r.id,type:"CssStylesheet",value:u}}}return null},async loadStylesheet(r){if(t().loading.includes(r))return"";try{let s=await fetch(r);if(!s.ok)throw new Error(`Failed to load stylesheet from ${r}`);let l=await s.text();return e(u=>({stylesheets:{...u.stylesheets,[r]:l}})),l}catch(s){return e(l=>({errors:[...l.errors,{url:r,error:s}]})),""}},setStylesheet(r,i){let s=i||a(r);return e(l=>({stylesheets:{...l.stylesheets,[s]:r}})),s}}});function fr(e){let[t,n]=(0,Xe.useState)(""),{loading:o,errors:a,stylesheets:r,parseStylesheet:i}=Ka();return(0,Xe.useEffect)(()=>{e&&i(e).then(l=>{l?.id&&n(l.id)})},[e,i]),[(0,Xe.useMemo)(()=>{let l={};return t&&r[t]&&(l[t]=r[t]),l},[t,r]),{id:t,stylesheets:r,loading:o,errors:a}]}function _t(e={},t=[]){let{id:n,selector:o}=e,a=oe(),r=M(),i=n||a.annotation,s=k(d=>i?d.iiif.entities.Annotation[i]:void 0,[i]),[l]=fr(s?.stylesheet),u=k(d=>s&&s.body?s.body.map(c=>c?c.type==="SpecificResource"?{...c,source:r.get(c)}:c?d.iiif.entities[c.type][c.id]:null:null).filter(Boolean):[],[s]);return(0,hr.useMemo)(()=>{if(!s)return;let d={...s,body:u,target:(0,gr.expandTarget)(s.target,{typeMap:r.getState().iiif.mapping,loadedStylesheets:l})};return o?o(d):d},[s,o,u,l,...t])}var yr=require("react");function P(e={},t=[]){let{id:n,selector:o}=e,a=oe(),r=n||a.canvas,i=k(s=>r?s.iiif.entities.Canvas[r]:void 0,[r]);return(0,yr.useMemo)(()=>{if(i)return o?o(i):i},[i,o,...t])}var Yn=require("react"),vr=require("@iiif/helpers/events");function Yt(e,t){let n=M(),o=(0,Yn.useMemo)(()=>(0,vr.createEventsHelper)(n),[n]),a=k(()=>e&&e.id?n.getResourceMeta(e.id,"eventManager"):null,[e]);return(0,Yn.useMemo)(()=>e?o.getListenersAsProps(e,t):{},[a,e,n,t])}var Sr=require("react"),xr=require("@iiif/helpers/styles");function Ze(e,t){let n=M(),o=(0,Sr.useMemo)(()=>(0,xr.createStylesHelper)(n),[n]);return k(()=>{if(!e)return null;let a=o.getAppliedStyles(e.id);return a?t?a[t]:a:void 0},[e,t])}var Cr=require("react");var jt=require("@atlas-viewer/atlas"),pe=require("react"),z=require("react/jsx-runtime");function br({handleSize:e,resizable:t,onSave:n,children:o,maintainAspectRatio:a,disableCardinalControls:r,aspectRatio:i,...s}){let l=typeof e>"u"?a?12:8:e,{portalRef:u,mode:d,mouseEvent:c,isEditing:m}=(0,jt.useResizeWorldItem)({x:s.x||0,y:s.y||0,width:s.width,height:s.height,aspectRatio:i,maintainAspectRatio:a},n),p=(0,pe.useMemo)(()=>c("translate"),[c]),f=(0,pe.useMemo)(()=>c("east"),[c]),h=(0,pe.useMemo)(()=>c("west"),[c]),y=(0,pe.useMemo)(()=>c("south"),[c]),S=(0,pe.useMemo)(()=>c("north"),[c]),b=(0,pe.useMemo)(()=>c("south-east"),[c]),v=(0,pe.useMemo)(()=>c("south-west"),[c]),x=(0,pe.useMemo)(()=>c("north-east"),[c]),g=(0,pe.useMemo)(()=>c("north-west"),[c]),C=d==="sketch",A={zIndex:999,boxShadow:"0px 2px 3px 0 rgba(0,0,0,0.2)",outline:"2px solid rgba(155,155,155,.7)",borderRadius:a||r?"50%":2,position:"absolute",background:"#fff",pointerEvents:m?"none":C?"initial":"none"};return(0,z.jsx)(z.Fragment,{children:(0,z.jsxs)("world-object",{...s,children:[o,C&&t?(0,z.jsx)(jt.HTMLPortal,{ref:u,target:{x:0,y:0,height:s.height,width:s.width},relative:!0,interactive:!1,children:C&&t?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("div",{onMouseDown:p,onTouchStart:p,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:m?"none":C?"initial":"none"}}),a?null:(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("div",{title:"east",onTouchStart:f,onMouseDown:f,style:{...A,cursor:"e-resize",height:l*2,width:l,right:0,top:"50%",opacity:r?0:1,transform:`translate(${l/2}px, -${l}px)`}}),(0,z.jsx)("div",{title:"west",onMouseDown:h,style:{...A,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)`}}),(0,z.jsx)("div",{title:"north",onMouseDown:S,style:{...A,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)`}}),(0,z.jsx)("div",{title:"south",onMouseDown:y,style:{...A,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)`}})]}),(0,z.jsx)("div",{title:"north-east",onMouseDown:x,style:{...A,cursor:"ne-resize",position:"absolute",height:l,width:l,right:0,top:0,transform:`translate(${l/2}px, -${l/2}px)`}}),(0,z.jsx)("div",{title:"south-east",onMouseDown:b,style:{...A,cursor:"se-resize",position:"absolute",height:l,width:l,bottom:0,right:0,transform:`translate(${l/2}px, ${l/2}px)`}}),(0,z.jsx)("div",{title:"south-west",onMouseDown:v,style:{...A,cursor:"sw-resize",position:"absolute",height:l,width:l,bottom:0,left:0,transform:`translate(-${l/2}px, ${l/2}px)`}}),(0,z.jsx)("div",{title:"north-west",onMouseDown:g,style:{...A,cursor:"nw-resize",position:"absolute",height:l,width:l,top:0,left:0,transform:`translate(-${l/2}px, -${l/2}px)`}})]}):null}):null]})})}var jn=require("react/jsx-runtime");function Rr({id:e,interactive:t,region:n,onClick:o,onHover:a,onSave:r,aspectRatio:i,maintainAspectRatio:s,disableCardinalControls:l,isEditing:u,style:d={backgroundColor:"rgba(0,0,0,.5)"}}){let c=(0,Cr.useCallback)(m=>{u&&r?.({id:n.id,x:n.x,y:n.y,height:n.height,width:n.width,...m})},[r,u,n.id,n.x,n.y,n.height,n.width]);return(0,jn.jsx)(br,{id:e,x:n.x,y:n.y,width:n.width,aspectRatio:i,height:n.height,resizable:u,onSave:c,maintainAspectRatio:s,disableCardinalControls:l,children:(0,jn.jsx)("box",{interactive:t,onClick:m=>{m.preventDefault(),m.stopPropagation(),o?.(n)},relativeStyle:!0,onMouseEnter:()=>{a?.(n)},target:{x:0,y:0,width:n.width,height:n.height},style:d})})}var Pr=require("react/jsx-runtime"),Je=({id:e,style:t,className:n,interactive:o,targetId:a,ignoreTargetId:r})=>{let i=_t({id:e}),s=Ze(i,"atlas"),l=Ze(i,"html"),u=Yt(i,["atlas"]),d=P(),c=mr(),m=(0,Ar.useMemo)(()=>(0,Rt.mergeStyles)((0,Rt.mergeStyles)((0,Rt.mergeStyles)((0,Rt.mergeStyles)(t,s),i?.motivation?.includes("highlighting")?c.highlighted:c.default),i?.target?.selector?.boxStyle||{})),[t,s,c,i?.motivation,i?.target]),p=a||d?.id;return d&&i&&i.target&&i.target.selector&&(i.target.selector.type==="BoxSelector"||i.target.selector.type==="SvgSelector")&&i.target.source&&(r?!0:i.target.source.id===p||i.target.source===p)?(0,Pr.jsx)(Rr,{id:i.id,isEditing:!0,region:i.target.selector.spatial,style:m,className:l?.className||n,interactive:!!(l?.href||o),href:l?.href||null,title:l?.title||null,hrefTarget:l?.target||null,onClick:()=>{},...u}):null};var Ir=require("react");var Tr=require("react");function wr(e={},t=[]){let{id:n,selector:o}=e,a=oe(),r=n||a.annotationPage,i=k(s=>r?s.iiif.entities.AnnotationPage[r]:void 0,[r]);return(0,Tr.useMemo)(()=>{if(i)return o?o(i):i},[i,...t])}var Gn=require("react/jsx-runtime"),Ve=({className:e,page:t,targetId:n,ignoreTargetId:o})=>{let a=wr({id:t.id})||t,r=Ze(a,"atlas"),i=Ze(a,"html");return k(s=>a.id?s.iiif.entities.AnnotationPage[a.id]:null,[]),(0,Gn.jsx)(Ir.Fragment,{children:a.items?.map(s=>(0,Gn.jsx)(Je,{id:s.id,style:r,className:i?.className||e,targetId:n,ignoreTargetId:o},s.id))})};var At=require("react"),Gt=require("react/jsx-runtime"),Qa=(0,At.createContext)(null),Xa=(0,At.createContext)(null),Za=(0,At.createContext)(null);function Kt({actions:e,state:t,children:n,currentTime:o,progress:a,element:r}){return(0,Gt.jsx)(Za.Provider,{value:{currentTime:o,progress:a,element:r},children:(0,Gt.jsx)(Xa.Provider,{value:e,children:(0,Gt.jsx)(Qa.Provider,{value:t,children:n})})})}var Mr=require("react");var kr=require("@iiif/helpers");function Qt(){let e=F(),t=P();return(0,Mr.useMemo)(()=>{if(!e||!t||!e.start)return null;let n=(0,kr.expandTarget)(e.start);return!n||n.source.id!==t.id||!n||!n.selector||n.selector.type!=="TemporalSelector"?null:n.selector.temporal},[e,t])}var N=require("react");function Er(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function Ja(e,t){switch(t.type){case"RESET":return t.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:t.volume,isMuted:t.volume===0};case"TOGGLE_MUTE":return{...e,isMuted:!e.isMuted};case"UNMUTE":return{...e,isMuted:!1}}return e}function Kn(e){let t=Math.round(e);return`${Math.floor(t/60)}:${`${t%60}`.padStart(2,"0")}`}function et(e){let[t,n]=(0,N.useReducer)(Ja,Er(e.duration));(0,N.useEffect)(()=>{n({type:"RESET",state:Er(e.duration)})},[e.duration]);let o=(0,N.useRef)(null),a=(0,N.useRef)(null),r=(0,N.useRef)(null),i=(0,N.useRef)(!1),s=(0,N.useCallback)(()=>{a.current&&o.current&&(a.current.innerHTML=Kn(o.current.currentTime),r.current&&(r.current.style.width=`${o.current.currentTime/e.duration*100}%`),i.current!==o.current.muted&&(i.current=o.current.muted,n(o.current.muted?{type:"MUTE"}:{type:"UNMUTE"})))},[e.duration]),l=(0,N.useCallback)(()=>{o.current&&(n({type:"PLAY_REQUESTED"}),o.current.play().then(()=>{n({type:"PLAY"})}),s())},[s]),u=(0,N.useCallback)(()=>{o.current&&(o.current.duration>0&&o.current.paused?l():d())},[s]),d=(0,N.useCallback)(()=>{o.current&&(o.current.pause(),n({type:"PAUSE"}),s())},[s]),c=(0,N.useCallback)(()=>{o.current&&(o.current.muted=!o.current.muted,n(o.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),m=(0,N.useCallback)(()=>{o.current&&(o.current.muted=!0,n({type:"MUTE"}))},[]),p=(0,N.useCallback)(()=>{o.current&&(o.current.muted=!1,n({type:"UNMUTE"}))},[]),f=(0,N.useCallback)(S=>{o.current&&(o.current.muted=!1,o.current.volume=S/100,n({type:"SET_VOLUME",volume:S}))},[]),h=(0,N.useCallback)(S=>{o.current&&(o.current.currentTime=Math.max(0,Math.min(S*e.duration,e.duration)),s())},[]),y=(0,N.useCallback)(S=>{if(o.current){let b=typeof S=="function"?S(o.current.currentTime):S;o.current.currentTime=Math.max(0,Math.min(b,e.duration)),s()}},[]);return(0,N.useEffect)(()=>{let S=setInterval(()=>{s()},350);return()=>clearInterval(S)},[s,e.duration]),(0,N.useEffect)(()=>{let S=()=>{n({type:"FINISHED"})},b=o.current;return b?.addEventListener("ended",S),()=>b?.removeEventListener("ended",S)},[]),[{element:o,currentTime:a,progress:r},t,{play:l,pause:d,playPause:u,mute:m,unmute:p,toggleMute:c,setVolume:f,setDurationPercent:h,setTime:y}]}var Ne=require("react"),Qn=(0,Ne.createContext)(()=>{}),Xn=(0,Ne.createContext)(()=>{});function Y(e,t,n,o,a=[]){let r=(0,Ne.useContext)(e==="portal"?Xn:Qn);(0,Ne.useEffect)(()=>(e!=="none"&&r(t,n,o),()=>{r(t,null)}),[t,e,r,...a])}var Zt=require("react/jsx-runtime");function Zn({media:e,startTime:t,children:n}){let[{element:o,currentTime:a,progress:r},i,s]=et({duration:e.duration}),l=t?`${e.url}#t=${t}`:e.url;return(0,Zt.jsxs)(Kt,{state:i,actions:s,currentTime:a,progress:r,element:o,children:[(0,Zt.jsx)("audio",{ref:o,src:l}),n]},e.url)}function Xt({media:e,mediaControlsDeps:t,audioCopmonent:n=Zn,children:o}){let a=Qt();return Y("portal","audio",n,{media:e,startTime:a?a.startTime:null,children:o},[e,a,...t||[]]),null}var Jt=require("react"),Le=(0,Jt.createContext)(null);Le.displayName="Strategy";function L(){let e=(0,Jt.useContext)(Le);if(!e)throw new Error("useStrategy must be used within a StrategyProvider");return e}var Ae=require("react/jsx-runtime");function Jn({model:e}){return(0,Ae.jsxs)(Ae.Fragment,{children:[(0,Ae.jsx)("style",{children:`
|
|
3
3
|
.model-container {
|
|
4
4
|
position: absolute;
|
|
5
5
|
top: 0;
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
justify-content: center;
|
|
13
13
|
pointer-events: visible;
|
|
14
14
|
}
|
|
15
|
-
`}),(0,Ce.jsx)("div",{className:"model-container",children:(0,Ce.jsx)("model-viewer",{"interaction-prompt":"none",style:{width:"100%",height:"100%"},"camera-controls":"","ar-status":"not-presenting",src:e.id})})]})}function Qt({model:e,name:t}){return j("overlay",`model-${t}`,Xn,{model:e},[e]),null}var Lr=require("react/jsx-runtime");function Nr(){let{strategy:e}=z();return e.type!=="3d-model"?null:(0,Lr.jsx)(Qt,{model:e.model})}var Xt=require("react"),Zt=(0,Xt.createContext)(null);Zt.displayName="Controls";function X(){let e=(0,Xt.useContext)(Zt);if(!e)throw new Error("useStrategy must be used within a StrategyProvider");return e}var ge=require("react/jsx-runtime");function zr(){let{strategy:e}=z(),{renderViewerControls:t,viewControlsDeps:n}=X(),o=T(),a=o?.accompanyingCanvas,i=o?.placeholderCanvas;return(0,ge.jsxs)(ge.Fragment,{children:[e.type==="media"&&e.media.type==="Sound"&&a?(0,ge.jsx)(pe,{canvas:a.id,children:(0,ge.jsx)(ze,{renderViewerControls:t,viewControlsDeps:n})}):null,e.type==="media"&&e.media.type==="Sound"&&i&&!a?(0,ge.jsx)(pe,{canvas:i.id,children:(0,ge.jsx)(ze,{renderViewerControls:t,viewControlsDeps:n})}):null]})}var et=require("react");var he=require("react");var Jt=require("@iiif/helpers/vault/actions");var Or=require("react");function Br(){let t=k().getStore();return(0,Or.useMemo)(()=>n=>t.dispatch(n),[t])}function Hr(e){return typeof e!="string"&&e&&e.bindToVault}function Dr(){let e=k(),t=(0,he.useRef)([]),n=Br(),o=(0,he.useMemo)(()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);(0,he.useLayoutEffect)(()=>{let s={id:o,type:"AnnotationPage",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],rendering:[],service:[]};n(Jt.entityActions.importEntities({entities:{AnnotationPage:{[s.id]:s}}}))},[o]);let a=E(s=>o&&s.iiif.entities.AnnotationPage[o]||null,[o]),i=(0,he.useCallback)((s,l)=>{if(o){if(Hr(s)){let c=s;c.__vault||c.bindToVault(e),s=typeof c.source=="string"?c.source:c.source.id,t.current[s]=c}else typeof s!="string"&&(s=s.id);let u=e.get({id:o,type:"AnnotationPage"}),d=e.get({id:s,type:"Annotation"});u&&d&&(u.items.find(c=>c.id===d.id)||n(Jt.entityActions.addReference({id:o,type:"AnnotationPage",key:"items",reference:{id:s,type:"Annotation"},index:l})))}},[o]),r=(0,he.useCallback)(s=>{o&&(Hr(s)?s=typeof s.source=="string"?s.source:s.source.id:typeof s!="string"&&(s=s.id),t.current[s]&&t.current[s].beforeRemove(),e.get({id:o,type:"AnnotationPage"})&&n(Jt.entityActions.removeReference({id:o,type:"AnnotationPage",key:"items",reference:{id:s,type:"Annotation"}})))},[o]);return[a,{addAnnotation:i,removeAnnotation:r}]}var Wr=require("react/jsx-runtime"),Fr=(0,et.createContext)(null);function qr(){let e=(0,et.useContext)(Fr);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function $r({children:e}){let[t,{addAnnotation:n,removeAnnotation:o}]=Dr();return(0,Wr.jsx)(Fr.Provider,{value:(0,et.useMemo)(()=>({fullPage:t,addAnnotation:n,removeAnnotation:o}),[t]),children:e})}var Oe=require("react/jsx-runtime");function Ur({children:e}){let{strategy:t}=z(),[n]=qr();return t.type!=="images"?null:(0,Oe.jsxs)(Oe.Fragment,{children:[n?(0,Oe.jsx)(Ve,{page:n}):null,t.annotations&&t.annotations.pages?t.annotations.pages.map(o=>(0,Oe.jsx)(Ve,{page:o},o.id)):null,e]})}var Re=require("react");var _r=require("react"),Yr=(e,t=[])=>{let n=k();(0,_r.useEffect)(()=>{e(n)},[n,...t])};var en=J(require("react"),1),jr=require("@iiif/helpers/image-service"),es=en.default.createContext(new jr.ImageServiceLoader);function Gr(){return(0,en.useContext)(es)}var Kr=require("@iiif/helpers/thumbnail");var tt=require("@iiif/parser/image-3");function ts(e,t){try{let n=(0,tt.getId)(e);if(!n)return;let o=(0,tt.parseImageServiceRequest)(n),a=o.type==="image"?o.region.w:void 0,i=o.type==="image"?o.region.h:void 0,r=a||e.width,s=i||e.height,l=t.width||t.maxWidth,u=t.height||t.maxHeight;if(o.type!=="image"||o.region.full||o.region.square)return;(l||u)&&(o.size={max:!1,upscaled:!1,confined:!!(l&&u),width:l,height:u,version:3});let d=r&&s&&(l||u)?Math.min(l?l/r:1/0,u?u/s:1/0):void 0;return{id:(0,tt.imageServiceRequestToString)(o),type:"fixed",width:r&&d?Math.round(r*d):l||r||e.width||0,height:s&&d?Math.round(s*d):u||s||e.height||0}}catch{return}}function nt(e,t,{canvasId:n,manifestId:o}={}){let a=k(),i=Gr(),r=(0,Re.useMemo)(()=>(0,Kr.createThumbnailHelper)(a,{imageServiceLoader:i}),[a,i]),[s,l]=(0,Re.useState)(),u=q(o?{id:o}:void 0),d=T(n?{id:n}:void 0),c=d||u,m=(0,Re.useRef)(!1);if((0,Re.useEffect)(()=>(m.current=!1,()=>{m.current=!0}),[]),!c)throw new Error("Must be called under a manifest or canvas context.");return Yr(p=>{if(c.type==="Canvas"&&c.thumbnail?.length){let f=ts(p.get(c.thumbnail[0]),e);if(f&&!m.current){l(f);return}}r.getBestThumbnailAtSize(c,e,t).then(f=>{f.best&&!m.current&&l(f.best)})},[c,e.width,e.height,e.maxWidth,e.maxHeight,e.minWidth,e.minHeight,e.allowUnsafe,e.unsafeImageService,e.preferFixedSize,t]),s}var Zn=require("react/jsx-runtime");function ot({x:e=0,y:t=0}){let n=T(),o=nt({maxWidth:256,maxHeight:256});return!n||!o||o.type!=="fixed"?null:(0,Zn.jsx)("world-object",{height:n.height,width:n.width,x:e,y:t,children:(0,Zn.jsx)("world-image",{uri:o.id,target:{x:0,y:0,width:n.width,height:n.height},display:o.width&&o.height?{width:o.width,height:o.height}:void 0,crop:void 0})})}var tn=require("react/jsx-runtime");function Qr({as:e}){let{strategy:t}=z(),{renderMediaControls:n,mediaControlsDeps:o}=X();return t.type!=="media"||t.media.type!=="Sound"?null:(0,tn.jsxs)(jt,{media:t.media,mediaControlsDeps:o,audioCopmonent:e,children:[(0,tn.jsx)(ot,{}),n?n(t):null]},t.media.url)}var ro=require("@atlas-viewer/atlas"),ln=require("react"),io=require("zustand");var Jn=require("react"),ns=require("zustand"),Jr=require("react/jsx-runtime"),Xr=(0,Jn.createContext)(null);Xr.displayName="ComplexTimeline";function Zr({children:e,store:t}){return(0,Jr.jsx)(Xr.Provider,{value:t,children:e})}var ti=J(require("mitt"),1),ni=require("zustand/vanilla");function ei({currentKeyFrameIndex:e,keyframes:t,targetTime:n,currentTime:o}){if(o<=n){let a=t.findIndex(s=>s.time>n);if(a===-1)return[e,[]];let i={},r=t.slice(e,a);for(let s of r)s.type==="enter"&&(i[s.id]=s),s.type==="exit"&&(i[s.id]?delete i[s.id]:i[s.id]=s);return[a,Object.values(i)]}return[e,[]]}function oi({complexTimeline:e,startTime:t=0}){let n=(0,ti.default)(),o={},a={progress:null,currentTime:null},i=0,r=null,s=0,l=null;function u(){let g=v.getState().visibleElements,y=o,b=[],x=Object.keys(y);for(let C of x){let R=y[C],A=g[C];R&&A&&b.push(R)}return b}function d(){return Object.keys(o).map(g=>o[g])}function c(S){a.currentTime&&(a.currentTime.innerHTML=jn(S),a.progress&&(a.progress.style.width=`${S/e.duration*100}%`))}let m=()=>{let S=v.getState(),g=S.currentPrime;if(!g)return;let y=o,b=S.visibleElements,x=Object.keys(y);for(let C of x){let R=y[C],A=b[C];if(R&&C!==g.id&&A){let B=s-A.time*1e3;Math.abs(s-A.time*1e3-R.currentTime*1e3)>300&&(R.currentTime=B/1e3)}}},p=(S=0)=>{let g=S-i,y=v.getState();if(y.isPlaying){let b=y.currentPrime;if(b){let A=o[b.id];A&&(A.paused?s+=g:s=(b.time+A.currentTime)*1e3)}else s+=g;let x=s/1e3;if(x>y.duration){v.getState().setTime(0),v.setState({isPlaying:!1}),f(),c(0);return}c(x);let[C,R]=ei({currentTime:x,currentKeyFrameIndex:y.nextKeyframeIndex,keyframes:y.complexTimeline.keyframes,targetTime:x});R.length&&y.applyKeyframes(C,R)}i=S,r=requestAnimationFrame(p)},f=()=>{r&&cancelAnimationFrame(r)},h=(S,g)=>{},v=(0,ni.createStore)((S,g)=>({complexTimeline:e,elements:{},visibleElements:{},isBuffering:!1,bufferMap:{},isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,isReady:!1,volume:100,duration:e.duration,clockStartRequests:0,clockStartTime:0,primeTime:0,currentPrime:null,clockRunning:!1,nextKeyframeIndex:0,startClock:()=>{g().clockRunning||(p(),l=setInterval(m,500)),S({clockRunning:!0,clockStartRequests:g().clockStartRequests+1})},applyKeyframes(y,b){let x=g(),C={...x.visibleElements},R=x.currentPrime;for(let A of b)A.type==="enter"&&(C[A.id]=A,n.emit("complex-timeline.enter",{id:A.id})),A.type==="exit"&&(C[A.id]=null,n.emit("complex-timeline.exit",{id:A.id})),A.isPrime&&(R=A);S({nextKeyframeIndex:y,visibleElements:C,currentPrime:R})},stopClock:()=>{let y=g().clockStartRequests;if(y!==0){if(y===1){f(),l&&clearInterval(l),S({clockRunning:!1,clockStartRequests:0});return}S({clockStartRequests:y-1})}},setElement:(y,b)=>{o[y]=b;let x=Object.keys(o),C=g().complexTimeline;h(b,y),C.items.filter(A=>A.type!=="Image"&&A.type!=="Text").every(A=>x.includes(A.annotationId))&&!g().isReady&&(n.emit("complex-timeline.ready",{complexTimeline:C}),S({isReady:!0}))},removeElement:y=>{delete o[y]},mute(){for(let y of d())y.muted=!0;S({isMuted:!0})},unmute(){for(let y of d())y.muted=!1;S({isMuted:!1})},play(){if(!g().isPlaying){for(let b of u())b.play();S({isPlaying:!0})}},pause(){if(g().isPlaying){for(let b of u())b.pause();S({isPlaying:!1})}},playPause(){let y=g();y.isPlaying?y.pause():y.play()},setDurationPercent(y){let x=g().duration*y;g().setTime(x)},setTime(y){let b=g(),x=s/1e3,C=typeof y=="function"?y(x):y,R=b.nextKeyframeIndex;if(x>C){S({visibleElements:{},currentPrime:null});let P=Object.keys(b.visibleElements);for(let M of P)n.emit("complex-timeline.exit",{id:M});x=0,R=0}let[A,B]=ei({currentTime:x,currentKeyFrameIndex:R,keyframes:b.complexTimeline.keyframes,targetTime:C});b.applyKeyframes(A,B),s=C*1e3;let I=v.getState().visibleElements,H=o,te=Object.keys(I);for(let P of te){let M=I[P];if(M){let Z=H[P];Z&&(Z.currentTime=(s-M.time*1e3)/1e3)}}c(C)},setVolume(y){for(let b of d())b.volume=Math.min(1,Math.max(0,y/100));S({volume:y})},toggleMute(){let y=g();y.isMuted?(y.unmute(),S({isMuted:!1})):(y.mute(),S({isMuted:!0}))},clearProgressElement(){a.progress=null},setProgressElement(y){a.progress=y},setCurrentTimeElement(y){a.currentTime=y},clearCurrentTimeElement(){a.currentTime=null}}));return n.on("complex-timeline.enter",S=>{let g=v.getState(),y=S.id,b=o[y];b&&g.isPlaying&&b.play()}),n.on("complex-timeline.exit",S=>{let g=v.getState(),y=S.id,b=o[y];b&&(b.currentTime=0,b.pause())}),v.getState().setTime(t),{store:v,emitter:n}}var rt=require("react");var le=require("react");var os=[.6,.02,0,.75];var Ct={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":os,"ease-out-cubic":[.215,.61,.355,1]};function Rt([e,t,n,o]){let a=3*e,i=3*(n-e)-a,r=1-a-i,s=3*t,l=3*(o-t)-s,u=1-s-l;function d(f){return((r*f+i)*f+a)*f}function c(f){return((u*f+l)*f+s)*f}function m(f){return(3*r*f+2*i)*f+a}function p(f,h=1e-6){let v=f;for(let y=0;y<8;y++){let b=d(v)-f;if(Math.abs(b)<h)return v;let x=m(v);if(Math.abs(x)<1e-6)break;v=v-b/x}let S=0,g=1;for(v=f;S<g;){let y=d(v);if(Math.abs(y-f)<h)return v;f>y?S=v:g=v,v=(g-S)*.5+S}return v}return f=>{if(f<=0)return 0;if(f>=1)return 1;let h=p(f);return c(h)}}function ri(e,{duration:t=300,easing:n}={}){let o=(0,le.useRef)(Rt(Ct["ease-in-out"]));(0,le.useEffect)(()=>{if(!n)o.current=Rt(Ct["ease-in-out"]);else if(typeof n=="function")o.current=n;else if(Array.isArray(n))o.current=Rt(n);else{let d=Ct[n];o.current=Rt(d??Ct["ease-in-out"])}},[n]);let[a,i]=(0,le.useState)(e),r=(0,le.useRef)(e??0),s=(0,le.useRef)(null),l=(0,le.useRef)(null),u=(0,le.useRef)(e);return(0,le.useEffect)(()=>{if(e===void 0){i(void 0);return}let d=u.current;if(u.current=e,d===void 0){r.current=e,i(e);return}if(d===e&&a===e)return;l.current!==null&&(cancelAnimationFrame(l.current),l.current=null),s.current=null;let c=r.current,m=(((e||0)-c)%360+540)%360-180,p=c+m;function f(h){s.current===null&&(s.current=h);let v=h-s.current,S=Math.min(v/t,1),g=o.current(S),y=c+(p-c)*g;r.current=y,i(y),S<1?l.current=requestAnimationFrame(f):(r.current=((e||0)%360+360)%360,i(r.current),l.current=null)}return l.current=requestAnimationFrame(f),()=>{l.current!==null&&(cancelAnimationFrame(l.current),l.current=null)}},[e,t]),a}var di=require("@atlas-viewer/atlas"),mi=require("@iiif/parser/image-3");var nn=J(require("react"),1),ii=require("@iiif/helpers/image-service"),on=require("zustand"),ai=nn.default.createContext(ii.imageServices.store);ai.displayName="ImageServicesHelper";function eo(){return(0,nn.useContext)(ai)}function si(e){let t=eo();return(0,on.useStore)(t,({loaded:n})=>n[e])}function rn(){let e=eo();return(0,on.useStore)(e,({loadServiceSync:t})=>t)}function li(){let e=eo();return(0,on.useStore)(e,({loaded:t})=>t)}var ue=J(require("react"),1),Ae=require("react/jsx-runtime"),rs=ue.default.createContext("en"),is=ue.default.createContext({}),as=ue.default.createContext(null);function ss(){return ue.default.useContext(as)}function ci(){return ue.default.useContext(rs)}function ls(){return ue.default.useContext(is)}function ui(e){return e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):e}function us({as:e,language:t,children:n,viewingDirection:o,...a}){let i=ci();return(0,ue.useMemo)(()=>ui(i)===ui(t),[i,t])?e?(0,Ae.jsx)(e,{...a,children:n}):(0,Ae.jsx)("span",{...a,children:n}):e?(0,Ae.jsx)(e,{...a,lang:t,dir:o,children:n}):(0,Ae.jsx)("span",{...a,lang:t,dir:o,children:n})}function cs(e,t,n){if(t.length===0)return;if(t.length===1)return t[0];if(t.indexOf(e)!==-1)return e;let o=e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):null;if(o&&t.indexOf(o)!==-1)return o;for(let a of n)if(t.indexOf(a)!==-1)return a;return t.indexOf("none")!==-1?"none":t.indexOf("@none")!==-1?"@none":t[0]}var ds=(e,t=[])=>{let n=ci();return(0,ue.useMemo)(()=>{let o=e();return cs(n,o,[])},[n,...t])};function to(e,t,n,o){return t?n?n(e[t]||t,o||"none"):e[t]||t:""}function ms(e,t,n=`
|
|
16
|
-
`,o={}){let a=ss(),i=ds(()=>Object.keys(e||{}),[e]);return[(0,ue.useMemo)(()=>{if(!e)return to(o,t,a)||"";if(typeof e=="string")return to(o,e,a);let r=i?e[i]:void 0;return r?typeof r=="string"?r:r.map(s=>to(o,s,a,i)).join(n):""},[i,t,e]),i]}function At({as:e,defaultText:t,enableDangerouslySetInnerHTML:n,children:o,separator:a,...i}){let r=ls(),[s,l]=ms(o,t,a,r);return l?(0,Ae.jsx)(us,{...i,as:e,language:l,title:n?void 0:s,dangerouslySetInnerHTML:n?{__html:s}:void 0,children:n?void 0:s}):e?(0,Ae.jsx)(e,{...i,children:s}):(0,Ae.jsx)("span",{...i,title:n?void 0:s,dangerouslySetInnerHTML:n?{__html:s}:void 0,children:n?void 0:s})}var no=require("@iiif/parser/image-3"),an=require("react"),Be=require("react/jsx-runtime"),oo=e=>{let t=e.format||"jpg",n=e.width/(e.crop?.width||e.tiles.width),o=e.tiles.imageService.sizes||[],a=e.enableThumbnail,i=e.enableSizes,r=(0,an.useMemo)(()=>{let u=e.tiles.imageService.id||e.tiles.imageService["@id"];return u?.endsWith("/info.json")?u.slice(0,-1*10):u},[e.tiles.imageService.id,e.tiles.imageService["@id"]]),s=(0,an.useMemo)(()=>{let u=e.tiles.imageService.tiles||[];if(!u.length){let d=e.width,c=[1],m=1;for(;2**m<d;)m=m*2,c.push(m);return(e.tiles.imageService.maxArea||e.tiles.imageService.maxWidth||e.tiles.imageService.maxHeight)&&(0,no.isImageServiceLevel)(2,e.tiles.imageService)?[{width:256,height:256,scaleFactors:c}]:(0,no.isImageServiceLevel)(2,e.tiles.imageService)?[{width:256,height:256,scaleFactors:c}]:[]}return u},[e.tiles.imageService,e.width]),l=(0,an.useMemo)(()=>{let u=e.tiles.imageService;return(u?u["@context"]?Array.isArray(u["@context"])?u["@context"]:[u["@context"]]:[]:[]).indexOf("http://iiif.io/api/image/3/context.json")!==-1},[e.tiles.imageService.id,e.tiles.imageService]);return(0,Be.jsx)("world-object",{rotation:e.rotation,scale:n,height:e.crop?.height||e.tiles.height,width:e.crop?.width||e.tiles.width,x:e.x,y:e.y,onClick:e.onClick,children:(0,Be.jsxs)("composite-image",{id:e.tiles.imageService.id,width:e.crop?.width||e.tiles.width,height:e.crop?.height||e.tiles.height,crop:e.crop,renderOptions:e.renderOptions,children:[a&&e.tiles.thumbnail?(0,Be.jsx)("world-image",{priority:!0,uri:e.tiles.thumbnail.id,target:{width:e.tiles.width,height:e.tiles.height},display:{width:e.tiles.thumbnail.width,height:e.tiles.thumbnail.height},crop:e.crop}):null,i&&o.map((u,d)=>(0,Be.jsx)("world-image",{uri:`${r}/full/${u.width},${l?u.height:""}/0/default.${t}`,target:{width:e.tiles.width,height:e.tiles.height},display:{width:u.width,height:u.height},crop:e.crop},d)),s.map(u=>(u.scaleFactors||[]).map(d=>(0,Be.jsx)("tiled-image",{uri:e.tiles.imageService.id,display:{width:e.tiles.width,height:e.tiles.height},format:t,tile:u,scaleFactor:d,crop:e.crop,version3:l},`${e.tiles.imageService.id}-tile-${d}`)))]},e.tiles.imageService.id)},e.tiles.imageService.id)};var ne=require("react/jsx-runtime");function ps({resource:e,heading:t,note:n,extra:o}){return o?(0,ne.jsx)(di.HTMLPortal,{target:{x:0,y:0,width:o.target?.spatial.width,height:o.target?.spatial.height},backgroundColor:"#333",relative:!0,children:(0,ne.jsx)("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:(0,ne.jsxs)("div",{children:[(0,ne.jsx)(At,{children:t||"Not authorised"}),n&&(0,ne.jsx)("p",{children:(0,ne.jsx)(At,{children:n})}),(0,ne.jsx)("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}function pi({image:e,thumbnail:t,crop:n,enableSizes:o,enableThumbnail:a,renderOptions:i,rotation:r,manualRotation:s}){let l=jo(),u=(0,mi.getId)(e.service),d=si(u),c=rn(),m=d?.service;c(e.service,e);let p=m&&d?.status==="done",f=(m?.preferredFormats||[])[0],h=t&&t.type==="fixed"&&t.id&&!t.id.includes("/full/full/")&&!t.id.includes("/max/")?t:void 0;if(p===!1)return null;if(!l){let v=e.service,S=v.width||e.width||0,g=v.height||e.height||0,y=0,b=0,x=e.target?.spatial.width||S,C=e.target?.spatial.height||g,R=x,A=C;return(r===90||r===270)&&!s&&([x,C]=[C,x],y=(R-x)/2,b=(A-C)/2),s&&([x,C]=[C,x]),(0,ne.jsx)(oo,{enableThumbnail:a,renderOptions:i,rotation:r,tiles:{id:v.id||v["@id"]||"unknown",height:g,width:S,imageService:v,thumbnail:h},enableSizes:o,x:y,y:b,format:f,width:x,height:C,crop:n})}return(0,ne.jsx)(Go,{resource:e.service,errorComponent:ps,extra:e,children:v=>{let S=v.width||e.width||0,g=v.height||e.height||0,y=0,b=0,x=e.target?.spatial.width||S,C=e.target?.spatial.height||g,R=x,A=C;return(r===90||r===270)&&!s&&([x,C]=[C,x],y=(R-x)/2,b=(A-C)/2),(0,ne.jsx)(oo,{enableThumbnail:a,renderOptions:i,tiles:{id:v.id||v["@id"]||"unknown",height:g,width:S,imageService:v,thumbnail:h},rotation:r,format:f,enableSizes:o,x:y,y:b,width:x,height:C,crop:n})}},e.id)}var Pe=require("react/jsx-runtime");function it({id:e,image:t,thumbnail:n,isStatic:o,x:a=0,y:i=0,children:r,selector:s,onClick:l,rotation:u,enableSizes:d,enableAnnotations:c}){let m=(0,rt.useMemo)(()=>{if(!(!s||s.spatial.x===0&&s.spatial.y===0))return s.spatial},[s]),p=(0,rt.useMemo)(()=>{if(typeof t.rotation<"u")return t.rotation;if(!t.annotation)return 0;let C=Array.isArray(t.annotation.body)?t.annotation.body?.[0]:t.annotation.body;if(C&&C.selector?.type==="ImageApiSelector")return Number(C.selector.rotation)},[t]),f=ri(u),h=!!t.service,v=a+t.target.spatial.x,S=i+t.target.spatial.y,g=t.target.spatial.width,y=t.target.spatial.height,b=t.target.spatial.width,x=t.target.spatial.height;return(p===90||p===270)&&([b,x]=[x,b],h||([g,y]=[y,g],v+=(t.target.spatial.width-g)/2,S+=(t.target.spatial.height-y)/2)),(0,Pe.jsxs)("world-object",{x:v,y:S,width:g,height:y,onClick:l,rotation:t.service?void 0:typeof f<"u"?f:p,children:[t.service?(0,Pe.jsxs)(rt.Fragment,{children:[(0,Pe.jsx)(pi,{image:t,thumbnail:n,crop:m,enableSizes:d,rotation:typeof f<"u"?f:p,manualRotation:typeof u<"u"}),r]},"service"):(0,Pe.jsxs)(rt.Fragment,{children:[(0,Pe.jsx)("world-image",{onClick:l,uri:t.id,target:{x:0,y:0,width:b,height:x},display:b&&x?{width:b,height:x}:void 0,crop:m}),r]},"no-service"),c&&t.annotationPages?t.annotationPages.map(C=>(0,Pe.jsx)(Ve,{page:C,className:"image-service-annotation",ignoreTargetId:!0},C.id)):null]},e+(h?"server":"no-service"))}var fi=require("@atlas-viewer/atlas");var ye=require("react/jsx-runtime");function sn({strategy:e,onClickPaintingAnnotation:t}){return(0,ye.jsx)(ye.Fragment,{children:e.items.map((n,o)=>(0,ye.jsx)(ye.Fragment,{children:(0,ye.jsx)(fi.HTMLPortal,{onClick:t?a=>{a.stopPropagation(),t(n.annotationId,n,a)}:void 0,target:n.target?.spatial||void 0,children:(0,ye.jsx)("div",{"data-textual-content":!0,children:(0,ye.jsx)(At,{enableDangerouslySetInnerHTML:!0,children:n.text})})},o)}))})}var oe=require("react/jsx-runtime");function gi({strategy:e,children:t}){let{store:n}=(0,ln.useMemo)(()=>oi({complexTimeline:e}),[e]),o=(0,io.useStore)(n,r=>r.isReady),a=(0,io.useStore)(n,r=>r.visibleElements);function i(r){return s=>{s&&n.getState().setElement(r,s)}}return(0,ln.useLayoutEffect)(()=>{if(o){let{startClock:r,stopClock:s}=n.getState();return r(),()=>{s()}}},[e,o]),j("portal","custom-controls",Zr,{store:n,children:t},[o]),(0,oe.jsxs)(oe.Fragment,{children:[e.items.map(r=>r.type!=="Image"||!a[r.annotationId]?null:(0,oe.jsx)(it,{image:r,id:r.annotationId},r.id)),e.items.map((r,s)=>r.type!=="Text"||!a[r.annotationId]?null:(0,oe.jsx)(sn,{strategy:{type:"textual-content",items:[r]}},s)),e.items.map((r,s)=>r.type!=="Video"||!r.target.spatial?null:(0,oe.jsx)(ro.HTMLPortal,{target:r.target.spatial,children:(0,oe.jsx)("video",{ref:i(r.annotationId),src:r.url,style:{height:"100%",width:"100%",opacity:a[r.annotationId]?1:0}})},s)),e.items.map((r,s)=>r.type!=="Sound"?null:(0,oe.jsx)(ro.HTMLPortal,{children:(0,oe.jsx)("audio",{ref:i(r.annotationId),src:r.url})},s)),e.highlights.map(({annotation:r})=>a[r.id]?(0,oe.jsx)(Ze,{id:r.id,ignoreTargetId:!0,style:{outline:"3px solid red"},className:"image-service-annotation"},r.id):null)]})}var yi=require("react/jsx-runtime");function hi(){let{strategy:e}=z(),{renderComplexTimelineControls:t}=X();return e.type!=="complex-timeline"?null:(0,yi.jsx)(gi,{strategy:e,children:t?t(e):null})}var vi=require("react/jsx-runtime");function un({style:e}){let t=T();return!t||!t.height||!t.width?null:(0,vi.jsx)("box",{interactive:!1,target:{x:0,y:0,width:Number(t.width),height:Number(t.height)},style:e})}var xi=require("react/jsx-runtime");function Si({backgroundStyle:e,alwaysShowBackground:t}){let{strategy:n}=z();return n.type!=="empty"&&!t?null:(0,xi.jsx)(un,{style:e})}var cn=require("react"),He=(0,cn.createContext)(null);function dn(){return(0,cn.useContext)(He)}var at=require("react/jsx-runtime");function bi({isStatic:e=!1,enableSizes:t=!1,enableAnnotations:n=!0,onClickPaintingAnnotation:o,rotation:a,children:i}){let{strategy:r}=z(),{renderViewerControls:s,viewControlsDeps:l}=X(),u=T(),d=dn(),c=nt({maxWidth:256,maxHeight:256});if(j(d&&r.type==="images"&&s?"overlay":"none",`canvas-portal-controls-${u?.id}`,He.Provider,s?{value:d||null,children:s(r)}:{},[u,d,r,...l||[]]),r.type!=="images")return null;let m=r.images.length===1?a:0;return(0,at.jsxs)(at.Fragment,{children:[r.images.map((p,f)=>(0,at.jsx)(it,{isStatic:e,image:p,id:p.id,thumbnail:f===0?c:void 0,selector:p.selector,enableSizes:t,enableAnnotations:n,rotation:m,onClick:o?h=>{o(p.annotationId,p,h)}:void 0},p.id+f)),i]})}var st=require("react/jsx-runtime");function Ci({onClickPaintingAnnotation:e,children:t}){let{strategy:n}=z(),{renderViewerControls:o,viewControlsDeps:a}=X(),i=dn(),r=T();return j(i&&n.type==="textual-content"&&o?"overlay":"none",`canvas-portal-controls-${r?.id}`,He.Provider,o?{value:i||null,children:o(n)}:{},[r,i,n,...a||[]]),n.type!=="textual-content"?null:(0,st.jsxs)(st.Fragment,{children:[(0,st.jsx)(sn,{strategy:n,onClickPaintingAnnotation:e}),t]})}var Pt=require("react/jsx-runtime");function ao({element:e,media:t,startTime:n,playPause:o,poster:a}){let i="div",r=n?`${t.url}#t=${n}`:t.url;return(0,Pt.jsxs)(i,{className:"video-container",part:"video-container",onClick:o,children:[(0,Pt.jsx)("style",{children:`
|
|
15
|
+
`}),(0,Ae.jsx)("div",{className:"model-container",children:(0,Ae.jsx)("model-viewer",{"interaction-prompt":"none",style:{width:"100%",height:"100%"},"camera-controls":"","ar-status":"not-presenting",src:e.id})})]})}function en({model:e,name:t}){return Y("overlay",`model-${t}`,Jn,{model:e},[e]),null}var Nr=require("react/jsx-runtime");function Vr(){let{strategy:e}=L();return e.type!=="3d-model"?null:(0,Nr.jsx)(en,{model:e.model})}var tn=require("react"),nn=(0,tn.createContext)(null);nn.displayName="Controls";function Q(){let e=(0,tn.useContext)(nn);if(!e)throw new Error("useStrategy must be used within a StrategyProvider");return e}var ye=require("react/jsx-runtime");function Lr(){let{strategy:e}=L(),{renderViewerControls:t,viewControlsDeps:n}=Q(),o=P(),a=o?.accompanyingCanvas,r=o?.placeholderCanvas;return(0,ye.jsxs)(ye.Fragment,{children:[e.type==="media"&&e.media.type==="Sound"&&a?(0,ye.jsx)(ge,{canvas:a.id,children:(0,ye.jsx)(ze,{renderViewerControls:t,viewControlsDeps:n})}):null,e.type==="media"&&e.media.type==="Sound"&&r&&!a?(0,ye.jsx)(ge,{canvas:r.id,children:(0,ye.jsx)(ze,{renderViewerControls:t,viewControlsDeps:n})}):null]})}var tt=require("react");var ve=require("react");var on=require("@iiif/helpers/vault/actions");var zr=require("react");function Or(){let t=M().getStore();return(0,zr.useMemo)(()=>n=>t.dispatch(n),[t])}function Br(e){return typeof e!="string"&&e&&e.bindToVault}function Hr(){let e=M(),t=(0,ve.useRef)([]),n=Or(),o=(0,ve.useMemo)(()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);(0,ve.useLayoutEffect)(()=>{let s={id:o,type:"AnnotationPage",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],rendering:[],service:[]};n(on.entityActions.importEntities({entities:{AnnotationPage:{[s.id]:s}}}))},[o]);let a=k(s=>o&&s.iiif.entities.AnnotationPage[o]||null,[o]),r=(0,ve.useCallback)((s,l)=>{if(o){if(Br(s)){let c=s;c.__vault||c.bindToVault(e),s=typeof c.source=="string"?c.source:c.source.id,t.current[s]=c}else typeof s!="string"&&(s=s.id);let u=e.get({id:o,type:"AnnotationPage"}),d=e.get({id:s,type:"Annotation"});u&&d&&(u.items.find(c=>c.id===d.id)||n(on.entityActions.addReference({id:o,type:"AnnotationPage",key:"items",reference:{id:s,type:"Annotation"},index:l})))}},[o]),i=(0,ve.useCallback)(s=>{o&&(Br(s)?s=typeof s.source=="string"?s.source:s.source.id:typeof s!="string"&&(s=s.id),t.current[s]&&t.current[s].beforeRemove(),e.get({id:o,type:"AnnotationPage"})&&n(on.entityActions.removeReference({id:o,type:"AnnotationPage",key:"items",reference:{id:s,type:"Annotation"}})))},[o]);return[a,{addAnnotation:r,removeAnnotation:i}]}var qr=require("react/jsx-runtime"),Dr=(0,tt.createContext)(null);function $r(){let e=(0,tt.useContext)(Dr);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function Fr({children:e}){let[t,{addAnnotation:n,removeAnnotation:o}]=Hr();return(0,qr.jsx)(Dr.Provider,{value:(0,tt.useMemo)(()=>({fullPage:t,addAnnotation:n,removeAnnotation:o}),[t]),children:e})}var Oe=require("react/jsx-runtime");function Wr({children:e}){let{strategy:t}=L(),[n]=$r();return t.type!=="images"?null:(0,Oe.jsxs)(Oe.Fragment,{children:[n?(0,Oe.jsx)(Ve,{page:n}):null,t.annotations&&t.annotations.pages?t.annotations.pages.map(o=>(0,Oe.jsx)(Ve,{page:o},o.id)):null,e]})}var Pe=require("react");var Ur=require("react"),_r=(e,t=[])=>{let n=M();(0,Ur.useEffect)(()=>{e(n)},[n,...t])};var rn=Z(require("react"),1),Yr=require("@iiif/helpers/image-service"),es=rn.default.createContext(new Yr.ImageServiceLoader);function jr(){return(0,rn.useContext)(es)}var Gr=require("@iiif/helpers/thumbnail");var nt=require("@iiif/parser/image-3");function ts(e,t){try{let n=(0,nt.getId)(e);if(!n)return;let o=(0,nt.parseImageServiceRequest)(n),a=o.type==="image"?o.region.w:void 0,r=o.type==="image"?o.region.h:void 0,i=a||e.width,s=r||e.height,l=t.width||t.maxWidth,u=t.height||t.maxHeight;if(o.type!=="image"||o.region.full||o.region.square)return;(l||u)&&(o.size={max:!1,upscaled:!1,confined:!!(l&&u),width:l,height:u,version:3});let d=i&&s&&(l||u)?Math.min(l?l/i:1/0,u?u/s:1/0):void 0;return{id:(0,nt.imageServiceRequestToString)(o),type:"fixed",width:i&&d?Math.round(i*d):l||i||e.width||0,height:s&&d?Math.round(s*d):u||s||e.height||0}}catch{return}}function ot(e,t,{canvasId:n,manifestId:o}={}){let a=M(),r=jr(),i=(0,Pe.useMemo)(()=>(0,Gr.createThumbnailHelper)(a,{imageServiceLoader:r}),[a,r]),[s,l]=(0,Pe.useState)(),u=F(o?{id:o}:void 0),d=P(n?{id:n}:void 0),c=d||u,m=(0,Pe.useRef)(!1);if((0,Pe.useEffect)(()=>(m.current=!1,()=>{m.current=!0}),[]),!c)throw new Error("Must be called under a manifest or canvas context.");return _r(p=>{if(c.type==="Canvas"&&c.thumbnail?.length){let f=ts(p.get(c.thumbnail[0]),e);if(f&&!m.current){l(f);return}}i.getBestThumbnailAtSize(c,e,t).then(f=>{f.best&&!m.current&&l(f.best)})},[c,e.width,e.height,e.maxWidth,e.maxHeight,e.minWidth,e.minHeight,e.allowUnsafe,e.unsafeImageService,e.preferFixedSize,t]),s}var eo=require("react/jsx-runtime");function rt({x:e=0,y:t=0}){let n=P(),o=ot({maxWidth:256,maxHeight:256});return!n||!o||o.type!=="fixed"?null:(0,eo.jsx)("world-object",{height:n.height,width:n.width,x:e,y:t,children:(0,eo.jsx)("world-image",{uri:o.id,target:{x:0,y:0,width:n.width,height:n.height},display:o.width&&o.height?{width:o.width,height:o.height}:void 0,crop:void 0})})}var an=require("react/jsx-runtime");function Kr({as:e}){let{strategy:t}=L(),{renderMediaControls:n,mediaControlsDeps:o}=Q();return t.type!=="media"||t.media.type!=="Sound"?null:(0,an.jsxs)(Xt,{media:t.media,mediaControlsDeps:o,audioCopmonent:e,children:[(0,an.jsx)(rt,{}),n?n(t):null]},t.media.url)}var io=require("@atlas-viewer/atlas"),cn=require("react"),ao=require("zustand");var to=require("react"),ns=require("zustand"),Zr=require("react/jsx-runtime"),Qr=(0,to.createContext)(null);Qr.displayName="ComplexTimeline";function Xr({children:e,store:t}){return(0,Zr.jsx)(Qr.Provider,{value:t,children:e})}var ei=Z(require("mitt"),1),ti=require("zustand/vanilla");function Jr({currentKeyFrameIndex:e,keyframes:t,targetTime:n,currentTime:o}){if(o<=n){let a=t.findIndex(s=>s.time>n);if(a===-1)return[e,[]];let r={},i=t.slice(e,a);for(let s of i)s.type==="enter"&&(r[s.id]=s),s.type==="exit"&&(r[s.id]?delete r[s.id]:r[s.id]=s);return[a,Object.values(r)]}return[e,[]]}function ni({complexTimeline:e,startTime:t=0}){let n=(0,ei.default)(),o={},a={progress:null,currentTime:null},r=0,i=null,s=0,l=null;function u(){let b=y.getState().visibleElements,v=o,x=[],g=Object.keys(v);for(let C of g){let A=v[C],T=b[C];A&&T&&x.push(A)}return x}function d(){return Object.keys(o).map(b=>o[b])}function c(S){a.currentTime&&(a.currentTime.innerHTML=Kn(S),a.progress&&(a.progress.style.width=`${S/e.duration*100}%`))}let m=()=>{let S=y.getState(),b=S.currentPrime;if(!b)return;let v=o,x=S.visibleElements,g=Object.keys(v);for(let C of g){let A=v[C],T=x[C];if(A&&C!==b.id&&T){let O=s-T.time*1e3;Math.abs(s-T.time*1e3-A.currentTime*1e3)>300&&(A.currentTime=O/1e3)}}},p=(S=0)=>{let b=S-r,v=y.getState();if(v.isPlaying){let x=v.currentPrime;if(x){let T=o[x.id];T&&(T.paused?s+=b:s=(x.time+T.currentTime)*1e3)}else s+=b;let g=s/1e3;if(g>v.duration){y.getState().setTime(0),y.setState({isPlaying:!1}),f(),c(0);return}c(g);let[C,A]=Jr({currentTime:g,currentKeyFrameIndex:v.nextKeyframeIndex,keyframes:v.complexTimeline.keyframes,targetTime:g});A.length&&v.applyKeyframes(C,A)}r=S,i=requestAnimationFrame(p)},f=()=>{i&&cancelAnimationFrame(i)},h=(S,b)=>{},y=(0,ti.createStore)((S,b)=>({complexTimeline:e,elements:{},visibleElements:{},isBuffering:!1,bufferMap:{},isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,isReady:!1,volume:100,duration:e.duration,clockStartRequests:0,clockStartTime:0,primeTime:0,currentPrime:null,clockRunning:!1,nextKeyframeIndex:0,startClock:()=>{b().clockRunning||(p(),l=setInterval(m,500)),S({clockRunning:!0,clockStartRequests:b().clockStartRequests+1})},applyKeyframes(v,x){let g=b(),C={...g.visibleElements},A=g.currentPrime;for(let T of x)T.type==="enter"&&(C[T.id]=T,n.emit("complex-timeline.enter",{id:T.id})),T.type==="exit"&&(C[T.id]=null,n.emit("complex-timeline.exit",{id:T.id})),T.isPrime&&(A=T);S({nextKeyframeIndex:v,visibleElements:C,currentPrime:A})},stopClock:()=>{let v=b().clockStartRequests;if(v!==0){if(v===1){f(),l&&clearInterval(l),S({clockRunning:!1,clockStartRequests:0});return}S({clockStartRequests:v-1})}},setElement:(v,x)=>{o[v]=x;let g=Object.keys(o),C=b().complexTimeline;h(x,v),C.items.filter(T=>T.type!=="Image"&&T.type!=="Text").every(T=>g.includes(T.annotationId))&&!b().isReady&&(n.emit("complex-timeline.ready",{complexTimeline:C}),S({isReady:!0}))},removeElement:v=>{delete o[v]},mute(){for(let v of d())v.muted=!0;S({isMuted:!0})},unmute(){for(let v of d())v.muted=!1;S({isMuted:!1})},play(){if(!b().isPlaying){for(let x of u())x.play();S({isPlaying:!0})}},pause(){if(b().isPlaying){for(let x of u())x.pause();S({isPlaying:!1})}},playPause(){let v=b();v.isPlaying?v.pause():v.play()},setDurationPercent(v){let g=b().duration*v;b().setTime(g)},setTime(v){let x=b(),g=s/1e3,C=typeof v=="function"?v(g):v,A=x.nextKeyframeIndex;if(g>C){S({visibleElements:{},currentPrime:null});let R=Object.keys(x.visibleElements);for(let w of R)n.emit("complex-timeline.exit",{id:w});g=0,A=0}let[T,O]=Jr({currentTime:g,currentKeyFrameIndex:A,keyframes:x.complexTimeline.keyframes,targetTime:C});x.applyKeyframes(T,O),s=C*1e3;let de=y.getState().visibleElements,te=o,me=Object.keys(de);for(let R of me){let w=de[R];if(w){let D=te[R];D&&(D.currentTime=(s-w.time*1e3)/1e3)}}c(C)},setVolume(v){for(let x of d())x.volume=Math.min(1,Math.max(0,v/100));S({volume:v})},toggleMute(){let v=b();v.isMuted?(v.unmute(),S({isMuted:!1})):(v.mute(),S({isMuted:!0}))},clearProgressElement(){a.progress=null},setProgressElement(v){a.progress=v},setCurrentTimeElement(v){a.currentTime=v},clearCurrentTimeElement(){a.currentTime=null}}));return n.on("complex-timeline.enter",S=>{let b=y.getState(),v=S.id,x=o[v];x&&b.isPlaying&&x.play()}),n.on("complex-timeline.exit",S=>{let b=y.getState(),v=S.id,x=o[v];x&&(x.currentTime=0,x.pause())}),y.getState().setTime(t),{store:y,emitter:n}}var at=require("react");var se=require("react");var os=[.6,.02,0,.75];var Pt={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":os,"ease-out-cubic":[.215,.61,.355,1]};function Tt([e,t,n,o]){let a=3*e,r=3*(n-e)-a,i=1-a-r,s=3*t,l=3*(o-t)-s,u=1-s-l;function d(f){return((i*f+r)*f+a)*f}function c(f){return((u*f+l)*f+s)*f}function m(f){return(3*i*f+2*r)*f+a}function p(f,h=1e-6){let y=f;for(let v=0;v<8;v++){let x=d(y)-f;if(Math.abs(x)<h)return y;let g=m(y);if(Math.abs(g)<1e-6)break;y=y-x/g}let S=0,b=1;for(y=f;S<b;){let v=d(y);if(Math.abs(v-f)<h)return y;f>v?S=y:b=y,y=(b-S)*.5+S}return y}return f=>{if(f<=0)return 0;if(f>=1)return 1;let h=p(f);return c(h)}}function oi(e,{duration:t=300,easing:n}={}){let o=(0,se.useRef)(Tt(Pt["ease-in-out"]));(0,se.useEffect)(()=>{if(!n)o.current=Tt(Pt["ease-in-out"]);else if(typeof n=="function")o.current=n;else if(Array.isArray(n))o.current=Tt(n);else{let d=Pt[n];o.current=Tt(d??Pt["ease-in-out"])}},[n]);let[a,r]=(0,se.useState)(e),i=(0,se.useRef)(e??0),s=(0,se.useRef)(null),l=(0,se.useRef)(null),u=(0,se.useRef)(e);return(0,se.useEffect)(()=>{if(e===void 0){r(void 0);return}let d=u.current;if(u.current=e,d===void 0){i.current=e,r(e);return}if(d===e&&a===e)return;l.current!==null&&(cancelAnimationFrame(l.current),l.current=null),s.current=null;let c=i.current,m=(((e||0)-c)%360+540)%360-180,p=c+m;function f(h){s.current===null&&(s.current=h);let y=h-s.current,S=Math.min(y/t,1),b=o.current(S),v=c+(p-c)*b;i.current=v,r(v),S<1?l.current=requestAnimationFrame(f):(i.current=((e||0)%360+360)%360,r(i.current),l.current=null)}return l.current=requestAnimationFrame(f),()=>{l.current!==null&&(cancelAnimationFrame(l.current),l.current=null)}},[e,t]),a}var pi=require("@atlas-viewer/atlas"),fi=require("@iiif/parser/image-3");var it=Z(require("react"),1),ii=require("@iiif/helpers/image-service"),wt=require("zustand"),ri=new WeakMap,ai=it.default.createContext(ii.imageServices.store);ai.displayName="ImageServicesHelper";function sn(){return(0,it.useContext)(ai)}function si(e){let t=sn();return(0,wt.useStore)(t,({loaded:n})=>n[e])}function li(){let e=sn();return(0,wt.useStore)(e,({loadServiceSync:t})=>t)}function ui(){let e=sn();return(0,wt.useStore)(e,({loaded:t})=>t)}function ci(){let e=sn(),t=(0,wt.useStore)(e,n=>n.loadService);return(0,it.useCallback)((n,o)=>{let a=n.id||n["@id"];if(!a)return t(n,o);let r=ri.get(e);r||(r=new Map,ri.set(e,r));let i=r.get(a);if(i)return i;let s=t(n,o).finally(()=>r.delete(a));return r.set(a,s),s},[t,e])}var le=Z(require("react"),1),Te=require("react/jsx-runtime"),rs=le.default.createContext("en"),is=le.default.createContext({}),as=le.default.createContext(null);function ss(){return le.default.useContext(as)}function mi(){return le.default.useContext(rs)}function ls(){return le.default.useContext(is)}function di(e){return e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):e}function us({as:e,language:t,children:n,viewingDirection:o,...a}){let r=mi(),i=t!=="none"&&t!=="@none";return(0,le.useMemo)(()=>di(r)===di(t),[r,t])||!i?e?(0,Te.jsx)(e,{...a,children:n}):(0,Te.jsx)("span",{...a,children:n}):e?(0,Te.jsx)(e,{...a,lang:t,dir:o,children:n}):(0,Te.jsx)("span",{...a,lang:t,dir:o,children:n})}function cs(e,t,n){if(t.length===0)return;if(t.length===1)return t[0];if(t.indexOf(e)!==-1)return e;let o=e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):null;if(o&&t.indexOf(o)!==-1)return o;for(let a of n)if(t.indexOf(a)!==-1)return a;return t.indexOf("none")!==-1?"none":t.indexOf("@none")!==-1?"@none":t[0]}var ds=(e,t=[])=>{let n=mi();return(0,le.useMemo)(()=>{let o=e();return cs(n,o,[])},[n,...t])};function no(e,t,n,o){return t?n?n(e[t]||t,o||"none"):e[t]||t:""}function ms(e,t,n=`
|
|
16
|
+
`,o={}){let a=ss(),r=ds(()=>typeof e=="string"?[]:Object.keys(e||{}),[e]);return[(0,le.useMemo)(()=>{if(!e)return no(o,t,a)||"";if(typeof e=="string")return no(o,e,a);let i=r?e[r]:void 0;return i?typeof i=="string"?i:i.map(s=>no(o,s,a,r)).join(n):""},[r,t,e]),r]}function It({as:e,defaultText:t,enableDangerouslySetInnerHTML:n,children:o,separator:a,...r}){let i=ls(),[s,l]=ms(o,t,a,i);return l?(0,Te.jsx)(us,{...r,as:e,language:l,title:n?void 0:s,dangerouslySetInnerHTML:n?{__html:s}:void 0,children:n?void 0:s}):e?(0,Te.jsx)(e,{...r,children:s}):(0,Te.jsx)("span",{...r,title:n?void 0:s,dangerouslySetInnerHTML:n?{__html:s}:void 0,children:n?void 0:s})}var oo=require("@iiif/parser/image-3"),ln=require("react"),Be=require("react/jsx-runtime"),ro=e=>{let t=e.format||"jpg",n=e.width/(e.crop?.width||e.tiles.width),o=e.tiles.imageService.sizes||[],a=e.enableThumbnail,r=e.enableSizes,i=(0,ln.useMemo)(()=>{let u=e.tiles.imageService.id||e.tiles.imageService["@id"];return u?.endsWith("/info.json")?u.slice(0,-1*10):u},[e.tiles.imageService.id,e.tiles.imageService["@id"]]),s=(0,ln.useMemo)(()=>{let u=e.tiles.imageService.tiles||[];if(!u.length){let d=e.width,c=[1],m=1;for(;2**m<d;)m=m*2,c.push(m);return(e.tiles.imageService.maxArea||e.tiles.imageService.maxWidth||e.tiles.imageService.maxHeight)&&(0,oo.isImageServiceLevel)(2,e.tiles.imageService)?[{width:256,height:256,scaleFactors:c}]:(0,oo.isImageServiceLevel)(2,e.tiles.imageService)?[{width:256,height:256,scaleFactors:c}]:[]}return u},[e.tiles.imageService,e.width]),l=(0,ln.useMemo)(()=>{let u=e.tiles.imageService;return(u?u["@context"]?Array.isArray(u["@context"])?u["@context"]:[u["@context"]]:[]:[]).indexOf("http://iiif.io/api/image/3/context.json")!==-1},[e.tiles.imageService.id,e.tiles.imageService]);return(0,Be.jsx)("world-object",{rotation:e.rotation,scale:n,height:e.crop?.height||e.tiles.height,width:e.crop?.width||e.tiles.width,x:e.x,y:e.y,onClick:e.onClick,children:(0,Be.jsxs)("composite-image",{id:e.tiles.imageService.id,width:e.crop?.width||e.tiles.width,height:e.crop?.height||e.tiles.height,crop:e.crop,renderOptions:e.renderOptions,children:[a&&e.tiles.thumbnail?(0,Be.jsx)("world-image",{priority:!0,uri:e.tiles.thumbnail.id,target:{width:e.tiles.width,height:e.tiles.height},display:{width:e.tiles.thumbnail.width,height:e.tiles.thumbnail.height},crop:e.crop}):null,r&&o.map((u,d)=>(0,Be.jsx)("world-image",{uri:`${i}/full/${u.width},${l?u.height:""}/0/default.${t}`,target:{width:e.tiles.width,height:e.tiles.height},display:{width:u.width,height:u.height},crop:e.crop},d)),s.map(u=>(u.scaleFactors||[]).map(d=>(0,Be.jsx)("tiled-image",{uri:e.tiles.imageService.id,display:{width:e.tiles.width,height:e.tiles.height},format:t,tile:u,scaleFactor:d,crop:e.crop,version3:l},`${e.tiles.imageService.id}-tile-${d}`)))]},e.tiles.imageService.id)},e.tiles.imageService.id)};var J=require("react/jsx-runtime");function ps({resource:e,heading:t,note:n,extra:o}){return o?(0,J.jsx)(pi.HTMLPortal,{target:{x:0,y:0,width:o.target?.spatial.width,height:o.target?.spatial.height},backgroundColor:"#333",relative:!0,children:(0,J.jsx)("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:(0,J.jsxs)("div",{children:[(0,J.jsx)(It,{children:t||"Not authorised"}),n&&(0,J.jsx)("p",{children:(0,J.jsx)(It,{children:n})}),(0,J.jsx)("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}function gi({image:e,thumbnail:t,crop:n,enableSizes:o,enableThumbnail:a,renderOptions:r,rotation:i,manualRotation:s}){let l=jo(),u=(0,fi.getId)(e.service),d=si(u),c=d?.service,m=c&&d?.status==="done",p=(c?.preferredFormats||[])[0],f=t&&t.type==="fixed"&&t.id&&!t.id.includes("/full/full/")&&!t.id.includes("/max/")?t:void 0;if(m===!1)return null;if(!l){let h=e.service,y=h.width||e.width||0,S=h.height||e.height||0,b=0,v=0,x=e.target?.spatial.width||y,g=e.target?.spatial.height||S,C=x,A=g;return(i===90||i===270)&&([x,g]=[g,x],s||(b=(C-x)/2,v=(A-g)/2)),(0,J.jsx)(ro,{enableThumbnail:a,renderOptions:r,rotation:i,tiles:{id:h.id||h["@id"]||"unknown",height:S,width:y,imageService:h,thumbnail:f},enableSizes:o,x:b,y:v,format:p,width:x,height:g,crop:n})}return(0,J.jsx)(Go,{resource:e.service,errorComponent:ps,extra:e,children:h=>{let y=h.width||e.width||0,S=h.height||e.height||0,b=0,v=0,x=e.target?.spatial.width||y,g=e.target?.spatial.height||S,C=x,A=g;return(i===90||i===270)&&([x,g]=[g,x],s||(b=(C-x)/2,v=(A-g)/2)),(0,J.jsx)(ro,{enableThumbnail:a,renderOptions:r,tiles:{id:h.id||h["@id"]||"unknown",height:S,width:y,imageService:h,thumbnail:f},rotation:i,format:p,enableSizes:o,x:b,y:v,width:x,height:g,crop:n})}},e.id)}var we=require("react/jsx-runtime");function st({id:e,image:t,thumbnail:n,isStatic:o,x:a=0,y:r=0,children:i,selector:s,onClick:l,rotation:u,enableSizes:d,enableAnnotations:c}){let m=(0,at.useMemo)(()=>{if(!(!s||s.spatial.x===0&&s.spatial.y===0))return s.spatial},[s]),p=(0,at.useMemo)(()=>{if(typeof t.rotation<"u")return t.rotation;if(!t.annotation)return 0;let C=Array.isArray(t.annotation.body)?t.annotation.body?.[0]:t.annotation.body;if(C&&C.selector?.type==="ImageApiSelector")return Number(C.selector.rotation)},[t]),f=oi(u),h=!!t.service,y=a+t.target.spatial.x,S=r+t.target.spatial.y,b=t.target.spatial.width,v=t.target.spatial.height,x=t.target.spatial.width,g=t.target.spatial.height;return(p===90||p===270)&&([x,g]=[g,x],h||([b,v]=[v,b],y+=(t.target.spatial.width-b)/2,S+=(t.target.spatial.height-v)/2)),(0,we.jsxs)("world-object",{x:y,y:S,width:b,height:v,onClick:l,rotation:t.service?void 0:typeof f<"u"?f:p,children:[t.service?(0,we.jsxs)(at.Fragment,{children:[(0,we.jsx)(gi,{image:t,thumbnail:n,crop:m,enableSizes:d,rotation:typeof f<"u"?f:p,manualRotation:typeof u<"u"}),i]},"service"):(0,we.jsxs)(at.Fragment,{children:[(0,we.jsx)("world-image",{onClick:l,uri:t.id,target:{x:0,y:0,width:x,height:g},display:x&&g?{width:x,height:g}:void 0,crop:m}),i]},"no-service"),c&&t.annotationPages?t.annotationPages.map(C=>(0,we.jsx)(Ve,{page:C,className:"image-service-annotation",ignoreTargetId:!0},C.id)):null]},e+(h?"server":"no-service"))}var hi=require("@atlas-viewer/atlas");var Se=require("react/jsx-runtime");function un({strategy:e,onClickPaintingAnnotation:t}){return(0,Se.jsx)(Se.Fragment,{children:e.items.map((n,o)=>(0,Se.jsx)(Se.Fragment,{children:(0,Se.jsx)(hi.HTMLPortal,{onClick:t?a=>{a.stopPropagation(),t(n.annotationId,n,a)}:void 0,target:n.target?.spatial||void 0,children:(0,Se.jsx)("div",{"data-textual-content":!0,children:(0,Se.jsx)(It,{enableDangerouslySetInnerHTML:!0,children:n.text})})},o)}))})}var ee=require("react/jsx-runtime");function yi({strategy:e,children:t}){let{store:n}=(0,cn.useMemo)(()=>ni({complexTimeline:e}),[e]),o=(0,ao.useStore)(n,i=>i.isReady),a=(0,ao.useStore)(n,i=>i.visibleElements);function r(i){return s=>{s&&n.getState().setElement(i,s)}}return(0,cn.useLayoutEffect)(()=>{if(o){let{startClock:i,stopClock:s}=n.getState();return i(),()=>{s()}}},[e,o]),Y("portal","custom-controls",Xr,{store:n,children:t},[o]),(0,ee.jsxs)(ee.Fragment,{children:[e.items.map(i=>i.type!=="Image"||!a[i.annotationId]?null:(0,ee.jsx)(st,{image:i,id:i.annotationId},i.id)),e.items.map((i,s)=>i.type!=="Text"||!a[i.annotationId]?null:(0,ee.jsx)(un,{strategy:{type:"textual-content",items:[i]}},s)),e.items.map((i,s)=>i.type!=="Video"||!i.target.spatial?null:(0,ee.jsx)(io.HTMLPortal,{target:i.target.spatial,children:(0,ee.jsx)("video",{ref:r(i.annotationId),src:i.url,style:{height:"100%",width:"100%",opacity:a[i.annotationId]?1:0}})},s)),e.items.map((i,s)=>i.type!=="Sound"?null:(0,ee.jsx)(io.HTMLPortal,{children:(0,ee.jsx)("audio",{ref:r(i.annotationId),src:i.url})},s)),e.highlights.map(({annotation:i})=>a[i.id]?(0,ee.jsx)(Je,{id:i.id,ignoreTargetId:!0,style:{outline:"3px solid red"},className:"image-service-annotation"},i.id):null)]})}var Si=require("react/jsx-runtime");function vi(){let{strategy:e}=L(),{renderComplexTimelineControls:t}=Q();return e.type!=="complex-timeline"?null:(0,Si.jsx)(yi,{strategy:e,children:t?t(e):null})}var xi=require("react/jsx-runtime");function dn({style:e}){let t=P();return!t||!t.height||!t.width?null:(0,xi.jsx)("box",{interactive:!1,target:{x:0,y:0,width:Number(t.width),height:Number(t.height)},style:e})}var Ci=require("react/jsx-runtime");function bi({backgroundStyle:e,alwaysShowBackground:t}){let{strategy:n}=L();return n.type!=="empty"&&!t?null:(0,Ci.jsx)(dn,{style:e})}var mn=require("react"),He=(0,mn.createContext)(null);function pn(){return(0,mn.useContext)(He)}var lt=require("react/jsx-runtime");function Ri({isStatic:e=!1,enableSizes:t=!1,enableAnnotations:n=!0,onClickPaintingAnnotation:o,rotation:a,children:r}){let{strategy:i}=L(),{renderViewerControls:s,viewControlsDeps:l}=Q(),u=P(),d=pn(),c=ot({maxWidth:256,maxHeight:256});if(Y(d&&i.type==="images"&&s?"overlay":"none",`canvas-portal-controls-${u?.id}`,He.Provider,s?{value:d||null,children:s(i)}:{},[u,d,i,...l||[]]),i.type!=="images")return null;let m=i.images.length===1?a:void 0;return(0,lt.jsxs)(lt.Fragment,{children:[i.images.map((p,f)=>(0,lt.jsx)(st,{isStatic:e,image:p,id:p.id,thumbnail:f===0?c:void 0,selector:p.selector,enableSizes:t,enableAnnotations:n,rotation:m,onClick:o?h=>{o(p.annotationId,p,h)}:void 0},p.id+f)),r]})}var ut=require("react/jsx-runtime");function Ai({onClickPaintingAnnotation:e,children:t}){let{strategy:n}=L(),{renderViewerControls:o,viewControlsDeps:a}=Q(),r=pn(),i=P();return Y(r&&n.type==="textual-content"&&o?"overlay":"none",`canvas-portal-controls-${i?.id}`,He.Provider,o?{value:r||null,children:o(n)}:{},[i,r,n,...a||[]]),n.type!=="textual-content"?null:(0,ut.jsxs)(ut.Fragment,{children:[(0,ut.jsx)(un,{strategy:n,onClickPaintingAnnotation:e}),t]})}var Mt=require("react/jsx-runtime");function so({element:e,media:t,startTime:n,playPause:o,poster:a}){let r="div",i=n?`${t.url}#t=${n}`:t.url;return(0,Mt.jsxs)(r,{className:"video-container",part:"video-container",onClick:o,children:[(0,Mt.jsx)("style",{children:`
|
|
17
17
|
.video-container {
|
|
18
18
|
position: absolute;
|
|
19
19
|
top: 0;
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
justify-content: center;
|
|
27
27
|
pointer-events: visible;
|
|
28
28
|
}
|
|
29
|
-
`}),(0,
|
|
29
|
+
`}),(0,Mt.jsx)("video",{poster:a,ref:e,src:i,style:{width:"100%",objectFit:"contain"}})]})}function fn({media:e,mediaControlsDeps:t,children:n,videoComponent:o=so,captions:a}){let r=P(),i=Qt(),s=r&&r.placeholderCanvas&&r.placeholderCanvas.id||void 0,l=ot({},!1,{canvasId:s}),[{element:u,currentTime:d,progress:c},m,p]=et({duration:e.duration});return Y("overlay","video-element",o,{element:u,media:e,playPause:p.playPause,poster:l?.id,canvas:r,startTime:i?i.startTime:null,captions:a},[l]),Y("portal","custom-controls",Kt,{state:m,actions:p,currentTime:d,progress:c,element:u,children:n},[d,m,e,...t||[]]),null}var gn=require("react/jsx-runtime");function Pi({as:e}){let{strategy:t}=L(),{renderMediaControls:n,mediaControlsDeps:o}=Q();return t.type!=="media"||t.media.type!=="Video"?null:(0,gn.jsxs)(fn,{captions:t.captions,media:t.media,mediaControlsDeps:o,videoComponent:e,children:[(0,gn.jsx)(rt,{}),n?n(t):null]},t.media.url)}var Ti=require("react");var kt=require("react/jsx-runtime");function fs({element:e,media:t,playPause:n}){let o=(0,Ti.useRef)(null);return t.youTubeId?(0,kt.jsxs)("div",{className:"video-container",part:"video-container",onClick:n,children:[(0,kt.jsx)("style",{children:`
|
|
30
30
|
.video-container {
|
|
31
31
|
position: absolute;
|
|
32
32
|
top: 0;
|
|
@@ -44,4 +44,4 @@
|
|
|
44
44
|
width: 100%;
|
|
45
45
|
object-fit: contain;
|
|
46
46
|
}
|
|
47
|
-
`}),(0,Tt.jsx)("iframe",{title:`YouTube video: ${t.youTubeId}`,className:"video-yt",ref:o,src:`https://www.youtube.com/embed/${t.youTubeId}?enablejsapi=1&origin=${gs()}&modestbranding=1&rel=0`,referrerPolicy:"no-referrer compute-pressure",sandbox:"allow-scripts allow-same-origin allow-presentation"})]}):null}function gs(){return typeof window<"u"?window.location.host:""}function Pi({media:e,mediaControlsDeps:t,children:n}){let[{element:o,currentTime:a,progress:i},r,s]=Je({duration:e.duration});return j("overlay","video-element",fs,{element:o,media:e,playPause:s.playPause}),null}var fn=require("react/jsx-runtime");function Ti(){let{strategy:e}=z(),{renderMediaControls:t,mediaControlsDeps:n}=X();return e.type!=="media"||e.media.type!=="VideoYouTube"?null:(0,fn.jsxs)(Pi,{media:e.media,mediaControlsDeps:n,children:[(0,fn.jsx)(ot,{}),t?t(e):null]})}var Rn=require("react"),ce=require("zustand");var hn=require("@atlas-viewer/atlas"),we=require("react");var Ii=require("polygon-editor"),$=require("react");var gn=require("zustand");function wi(e){let t=Q(),n=(0,gn.useStore)(t,i=>i.polygons),o=(0,gn.useStore)(t,i=>i.polygonState),a=(0,gn.useStore)(t,i=>i.polygon);return rr("atlas.polygon-render",({state:i,slowState:r,dt:s})=>{e(i,r,s)}),{currentShape:a,state:o,helper:n}}var w=require("react/jsx-runtime"),ve=(0,Ii.createSvgHelpers)(),hs={shapeFill:"#ffffff33",shapeStroke:"#000",lineStroke:"#000",ghostLineStroke:"#0F0",activeLineStroke:"#4D7EEA",boundingBoxDottedStroke:"#0007",boundingBoxStroke:"#fffA",controlFill:"#fff"};function Mi(e){let{image:t}=e,n={...hs,...e.theme||{}},o=(0,$.useRef)(),a=(0,$.useRef)(),i=(0,$.useRef)(),r=(0,$.useRef)(),s=(0,$.useRef)(),l=(0,$.useRef)(),u=(0,$.useRef)(),d=(0,$.useRef)(),c=(0,$.useRef)(),m=(0,$.useRef)(),[p,f]=(0,$.useState)(null),[h,v]=(0,$.useState)(!1),{helper:S,state:g,currentShape:y}=wi((I,H)=>{if(I.closestLineIndex,ve.updateTransitionBoundingBox(i.current,I,H),ve.updateBoundingBoxPolygon(o.current,I,H),ve.updateBoundingBoxPolygon(a.current,I,H),ve.updateTransitionShape(u.current,I,H),ve.updateClosestLinePointTransform(s.current,I,H),ve.updateSelectBox(r.current,I,H),ve.updatePointLine(d.current,I,H),ve.updateDrawPreview(l.current,I,H,3),ve.updateLineBox(c.current,I),f(I.transitionDirection),v(I.transitionRotate),I.closestLineIndex!==-1&&m.current){let te=I.polygon,P=te.points[I.closestLineIndex],M=te.points[(I.closestLineIndex+1)%te.points.length];P&&M&&m.current.setAttribute("points",`${P[0]},${P[1]} ${M[0]},${M[1]}`)}});(0,$.useEffect)(()=>{let I=()=>{S.modifiers.reset()};return document.addEventListener("mouseleave",I),()=>{document.removeEventListener("mouseleave",I)}},[]);let b=(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)("marker",{id:"dot",viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:"5",markerHeight:"5",children:[(0,w.jsx)("circle",{cx:"5",cy:"5",r:"5",fill:n.lineStroke,className:"marker"}),(0,w.jsx)("circle",{cx:"5",cy:"5",r:"3",fill:n.controlFill})]}),(0,w.jsx)("marker",{id:"newdot",viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:"5",markerHeight:"5",children:(0,w.jsx)("circle",{cx:"5",cy:"5",r:"5",fill:n.activeLineStroke,className:"marker"})}),(0,w.jsxs)("marker",{id:"selected",viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:"5",markerHeight:"5",children:[(0,w.jsx)("circle",{cx:"5",cy:"5",r:"5",fill:n.lineStroke}),(0,w.jsx)("circle",{cx:"5",cy:"5",r:"3",fill:n.activeLineStroke})]}),(0,w.jsxs)("marker",{id:"resizer",viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:"6",markerHeight:"6",children:[(0,w.jsx)("rect",{width:"10",height:"10",fill:n.lineStroke}),(0,w.jsx)("rect",{x:"1",y:"1",width:"8",height:"8",fill:n.controlFill})]})]}),x=y?y.open?"polyline":"polygon":null,C=!g.showBoundingBox&&g.closestPoint!==null&&g.actionIntentType==="select-point",R=g.actionIntentType==="add-open-point",A=g.transitionIntentType==="split-line",B=g.transitioning&&g.selectedStamp&&g.transitionIntentType==="stamp-shape",de=y&&x?(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(x,{fill:(!g.transitioning||g.transitionIntentType==="select-multiple-points")&&!y.open?n.shapeFill:"none",strokeWidth:B||g.showBoundingBox&&g.boxMode||g.transitioning&&g.transitionIntentType==="split-line"||g.transitioning&&g.transitionIntentType==="move-point"?0:2,stroke:n.shapeStroke,points:y.points.map(I=>I.join(",")).join(" "),vectorEffect:"non-scaling-stroke",markerStart:g.showBoundingBox?void 0:g.boxMode?"url(#resizer)":"url(#dot)",markerMid:g.showBoundingBox?void 0:g.boxMode?"url(#resizer)":"url(#dot)",markerEnd:g.showBoundingBox?void 0:g.boxMode?"url(#resizer)":"url(#dot)",style:{pointerEvents:"none"},opacity:g.transitioning&&g.transitionIntentType==="move-shape"?0:1}),g.currentTool==="lineBox"&&g.actionIntentType==="close-line-box"?(0,w.jsx)("polygon",{fill:n.shapeFill,ref:c,stroke:n.lineStroke,strokeWidth:2,vectorEffect:"non-scaling-stroke"}):null,g.transitionIntentType==="draw-shape"&&g.transitioning?(0,w.jsx)("polyline",{ref:l,fill:"none",stroke:n.activeLineStroke,strokeWidth:2,vectorEffect:"non-scaling-stroke"}):null,!(g.transitioning&&g.transitionIntentType==="move-point")&&!(g.transitioning&&g.transitionIntentType==="stamp-shape")&&!g.showBoundingBox&&g.selectedPoints&&g.selectedPoints.length?(0,w.jsx)("polyline",{strokeWidth:2,vectorEffect:"non-scaling-stroke",stroke:"transparent",markerStart:"url(#selected)",markerMid:"url(#selected)",markerEnd:"url(#selected)",fill:"transparent",points:y.points.filter((I,H)=>g.selectedPoints?.includes(H)).map(I=>I.join(",")).join(" "),opacity:g.transitioning&&g.transitionIntentType==="move-shape"?0:1}):null,C&&!g.transitioning&&g.closestPoint!==null&&y.points[g.closestPoint]?(0,w.jsx)("polyline",{strokeWidth:2,vectorEffect:"non-scaling-stroke",stroke:"transparent",markerStart:"url(#selected)",markerMid:"url(#selected)",markerEnd:"url(#selected)",fill:n.activeLineStroke,points:`${y.points[g.closestPoint][0]},${y.points[g.closestPoint][1]}`,opacity:g.transitioning&&g.transitionIntentType==="move-shape"?0:1}):null,!g.transitioning&&(g.actionIntentType==="add-open-point"||g.actionIntentType==="close-shape"||g.actionIntentType==="close-shape-line")?(0,w.jsx)("polyline",{stroke:n.activeLineStroke,ref:d,strokeWidth:g.actionIntentType==="add-open-point"?1:2,vectorEffect:"non-scaling-stroke"}):null,g.hasClosestLine&&!g.showBoundingBox&&!g.transitioning&&g.currentTool!=="box"&&g.transitionIntentType==="split-line"?(0,w.jsx)("g",{children:(0,w.jsx)("polyline",{ref:m,vectorEffect:"non-scaling-stroke",fill:"transparent",stroke:n.activeLineStroke,strokeWidth:3})}):null,g.hasClosestLine&&!g.showBoundingBox&&!g.transitioning&&g.currentTool!=="box"&&g.transitionIntentType==="split-line"?(0,w.jsx)("g",{ref:s,children:(0,w.jsx)("polyline",{markerStart:"url(#newdot)",points:"0,0 1,1",vectorEffect:"non-scaling-stroke",stroke:"transparent",fill:"transparent",strokeWidth:2})}):null,g.transitioning?(0,w.jsx)(x,{ref:u,fill:y.open?"none":n.shapeFill,stroke:g.transitionIntentType==="stamp-shape"?n.activeLineStroke:n.shapeStroke,vectorEffect:"non-scaling-stroke",strokeWidth:(y.open,2)}):null,g.transitioning&&g.transitionIntentType==="select-multiple-points"?(0,w.jsx)("rect",{ref:r,fill:"rgba(255, 255, 255, .3)",strokeWidth:1,stroke:"rgba(0,0,0,.2)",vectorEffect:"non-scaling-stroke"}):null,g.showBoundingBox&&!B?(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)("polygon",{ref:o,strokeWidth:2,stroke:n.boundingBoxStroke,fill:"none",markerStart:"url(#resizer)",markerMid:"url(#resizer)",markerEnd:"url(#resizer)",vectorEffect:"non-scaling-stroke"}),(0,w.jsx)("polygon",{ref:a,strokeWidth:2,stroke:n.boundingBoxDottedStroke,fill:"none",strokeDasharray:"4 4",markerStart:"url(#resizer)",markerMid:"url(#resizer)",markerEnd:"url(#resizer)",vectorEffect:"non-scaling-stroke"})]}):null]}):null;return{currentTool:S.state.slowState.currentTool,setCurrentTool:S.tools.setTool,helper:S,currentShape:y,state:g,isAddingPoint:R,isSplitting:A,isStamping:B,isHoveringPoint:C,transitionDirection:p,transitionRotate:h,defs:b,editor:de}}var Te=require("react/jsx-runtime");function ki(e){let t=(0,hn.useAtlas)(),{image:n}=e,{helper:o,defs:a,editor:i,state:r,transitionDirection:s,isSplitting:l,transitionRotate:u,isHoveringPoint:d,isAddingPoint:c}=Mi({image:e.image,theme:e.theme}),m=(0,we.useCallback)(h=>{h.button!==2&&o.pointer([[~~h.atlas.x,~~h.atlas.y]])},[o]),p=(0,we.useCallback)(h=>{h.button!==2&&o.pointerDown()},[o]),f=(0,we.useCallback)(h=>{h.button!==2&&o.pointerUp()},[o]);return(0,we.useEffect)(()=>{let h=v=>{o.key.up(v.key)};return document.addEventListener("keyup",h),()=>{document.removeEventListener("keyup",h)}},[o]),(0,we.useEffect)(()=>{let h=v=>{v.target&&["INPUT","TEXTAREA"].includes(v.target.tagName)||v.target?.isContentEditable||document.activeElement&&(document.activeElement instanceof HTMLInputElement||document.activeElement instanceof HTMLTextAreaElement||document.activeElement.isContentEditable)||o.key.down(v.key)};return document.addEventListener("keydown",h),()=>{document.removeEventListener("keydown",h)}},[o]),(0,we.useEffect)(()=>{let h=[];return s&&h.push(`atlas-cursor-${s}`),r.actionIntentType==="cut-line"&&r.modifiers?.Shift&&h.push("atlas-cursor-cut"),(d||r.transitionIntentType==="move-shape"||r.transitionIntentType==="move-point")&&h.push("atlas-cursor-move"),c&&h.push("atlas-cursor-crosshair"),l&&h.push("atlas-cursor-copy"),u&&h.push("atlas-cursor-rotate"),r.transitionIntentType==="draw-shape"&&h.push("atlas-cursor-draw"),t?.canvas&&t.canvas.classList.add(...h),()=>{t?.canvas&&t.canvas.classList.remove(...h)}},[t?.canvas,c,d,l,r.modifiers?.Shift,r.actionIntentType,r.transitionIntentType,s,u]),(0,Te.jsx)("world-object",{height:n.height,width:n.width,onMouseMove:m,onMouseDown:p,onMouseUp:f,onMouseLeave:o.blur,children:(0,Te.jsx)(hn.HTMLPortal,{relative:!0,interactive:!1,children:(0,Te.jsx)("div",{className:"absolute top-0 right-0 left-0 bottom-0",children:(0,Te.jsxs)("svg",{width:"100%",height:"100%",viewBox:`0 0 ${n.width} ${n.height}`,tabIndex:-1,children:[(0,Te.jsx)("title",{children:"Annotation Editor"}),(0,Te.jsx)("defs",{children:a}),i]})})})})}var qi=require("react"),$i=require("zustand");var Hi=require("@atlas-viewer/atlas"),W=require("@floating-ui/react"),Di=require("react-dom");var D=J(require("react"),1);var Ei=J(require("react"),1),so=require("react"),Vi=J(require("mitt"),1),vs=require("react/jsx-runtime"),ys=(0,Vi.default)(),wt=(0,so.createContext)({emitter:ys});wt.displayName="Events";function Ni(){return Ei.default.useContext(wt).emitter}var lt=require("react"),zi=require("react/jsx-runtime"),It=(0,lt.createContext)("");function Li({children:e,identifier:t}){let n=(0,lt.useMemo)(()=>t??Math.random().toString(36).substring(2,9),[t]);return(0,zi.jsx)(It.Provider,{value:n,children:e})}function yn(){return(0,lt.useContext)(It)}var ee=require("react/jsx-runtime"),lo=D.default.createContext({});function vn(){let e=(0,D.useContext)(lo),t=Object.keys(e),n={};for(let o of t)e[o].Provider&&(n[o]={value:(0,D.useContext)(e[o]),Provider:e[o].Provider});return n}function Ss(e){let t=Object.keys(e),n=e.children;for(let o of t){if(o==="children")continue;let{value:a,Provider:i}=e[o];n=(0,ee.jsx)(i,{value:a,children:n})}return n}function Sn(){return{VaultContext:(0,D.useContext)(ke),ResourceContext:(0,D.useContext)(Nt),SimpleViewerReactContext:(0,D.useContext)(yt),VisibleCanvasReactContext:(0,D.useContext)(We),AuthRContext:(0,D.useContext)(Ye),SearchReactContext:(0,D.useContext)(je),ReactEventContext:(0,D.useContext)(wt),ContextBridgeReactContext:(0,D.useContext)(lo),StrategyReactContext:(0,D.useContext)(Le),AtlasStoreReactContext:(0,D.useContext)(Ke),ViewerIdentifierContext:(0,D.useContext)(It)}}function xn(e){return(0,ee.jsx)($e,{vault:e.bridge.VaultContext.vault||void 0,resources:e.bridge.ResourceContext,children:(0,ee.jsx)(We.Provider,{value:e.bridge.VisibleCanvasReactContext,children:(0,ee.jsx)(yt.Provider,{value:e.bridge.SimpleViewerReactContext,children:(0,ee.jsx)(wt.Provider,{value:e.bridge.ReactEventContext,children:(0,ee.jsx)(Ke.Provider,{value:e.bridge.AtlasStoreReactContext,children:(0,ee.jsx)(Ye.Provider,{value:e.bridge.AuthRContext,children:(0,ee.jsx)(je.Provider,{value:e.bridge.SearchReactContext,children:(0,ee.jsx)(It.Provider,{value:e.bridge.ViewerIdentifierContext,children:(0,ee.jsx)(lo.Provider,{value:e.bridge.ContextBridgeReactContext,children:(0,ee.jsx)(Le.Provider,{value:e.bridge.StrategyReactContext,children:e.custom?(0,ee.jsx)(Ss,{...e.custom,children:e.children}):e.children})})})})})})})})})})}var ut=require("react/jsx-runtime"),Fi=10,Oi=1;function xs(e){let[t,n]=e.split("-");return[t,n]}function Bi(e,t,n){return t>n?e:Math.min(Math.max(e,t),n)}function bs(e){return e.top>0||e.right>0||e.bottom>0||e.left>0}function Cs(e){return{name:"insideHighlightFallback",options:e,async fn(t){if(e.width<=Oi||e.height<=Oi)return{};let n=await(0,W.detectOverflow)(t,{altBoundary:!0});if(!bs(n))return{};let{reference:o,floating:a}=t.rects,[i,r]=xs(t.initialPlacement),s=Math.min(Fi,o.width/2,o.height/2),l=o.x+(o.width-a.width)/2,u=o.y+(o.height-a.height)/2,d=t.x,c=t.y;return i==="top"||i==="bottom"?(c=i==="top"?o.y+s:o.y+o.height-a.height-s,r==="start"?d=o.x+s:r==="end"?d=o.x+o.width-a.width-s:d=l,d=Bi(d,o.x+s,o.x+o.width-a.width-s)):(d=i==="left"?o.x+s:o.x+o.width-a.width-s,r==="start"?c=o.y+s:r==="end"?c=o.y+o.height-a.height-s:c=u,c=Bi(c,o.y+s,o.y+o.height-a.height-s)),{x:d,y:c}}}}function bn({annotation:e,target:t,children:n,dismissable:o,isOpen:a,onOpenChange:i,placement:r}){let s=yn(),l=Sn(),u=vn(),{refs:d,floatingStyles:c,context:m}=(0,W.useFloating)({open:a,onOpenChange:i,nodeId:e.id,placement:r||"bottom",middleware:[(0,W.offset)(Fi),(0,W.flip)({mainAxis:!0,fallbackStrategy:"bestFit",altBoundary:!0}),(0,W.shift)({altBoundary:!0}),Cs(t)],whileElementsMounted:W.autoUpdate}),p=(0,W.useDismiss)(m),{getReferenceProps:f,getFloatingProps:h}=(0,W.useInteractions)([o?p:null].filter(v=>v!==null));return(0,ut.jsxs)(Hi.HTMLPortal,{relative:!0,target:t,interactive:!1,children:[(0,ut.jsx)("div",{ref:d.setReference,...f(),style:{position:"absolute",top:0,left:0,right:0,bottom:0,pointerEvents:"none"}}),(0,Di.createPortal)((0,ut.jsx)(xn,{bridge:l,custom:u,children:(0,ut.jsx)("div",{ref:d.setFloating,style:c,...h(),children:n})}),document.getElementById(`atlas-floating-ui-${s}`))]})}var Mt=require("react/jsx-runtime"),Rs=(0,$i.create)()(e=>({isMenuOpen:!1,menuPosition:{x:0,y:0},setMenuPosition(t){e({menuPosition:t})},toggle(t){e(n=>({isMenuOpen:!n.isMenuOpen,menuPosition:t}))},open(t){e({isMenuOpen:!0,menuPosition:t})},setIsMenuOpen(t){e(typeof t=="function"?n=>({isMenuOpen:t(n.isMenuOpen)}):{isMenuOpen:t})},close(){e({isMenuOpen:!1})}}));function Cn(e,t,n){let{isMenuOpen:o,setIsMenuOpen:a,close:i,open:r,menuPosition:s,setMenuPosition:l,toggle:u}=Rs(),d=(0,qi.useCallback)(p=>{n&&(p.preventDefault(),p.stopPropagation(),u(p.atlas))},[u,n]);return[(0,Mt.jsx)(Mt.Fragment,{children:n&&o&&(0,Mt.jsx)(bn,{dismissable:!0,placement:"bottom-start",isOpen:o,onOpenChange:a,annotation:{id:e},target:{x:s.x,y:s.y,height:1,width:1},children:o&&n({canvasId:t,position:s,close:()=>a(!1)})})}),{onContextMenu:d},{open:r,close:i,toggle:u,isMenuOpen:o,setIsMenuOpen:a,menuPosition:s,setMenuPosition:l}]}var Wi=require("zustand");function Ui(){let e=Q();return(0,Wi.useStore)(e,t=>t.tool.requestId&&t.requests[t.tool.requestId]||null)}var U=require("react/jsx-runtime");function _i({theme:e,renderContextMenu:t,children:n}){let o=Q(),a=T(),i=(0,ce.useStore)(o,x=>x.polygon),r=(0,ce.useStore)(o,x=>x.polygonState.currentTool),s=(0,ce.useStore)(o,x=>x.mode),l=(0,ce.useStore)(o,x=>x.changeMode),u=(0,ce.useStore)(o,x=>x.polygonState.transitioning),{enabled:d,requestId:c}=(0,ce.useStore)(o,x=>x.tool),m=(0,Rn.useMemo)(()=>Ge(i),[i]),p=Ui(),[f,h]=Cn("editing-annotation",a?.id,t),v=p?.annotationPopup||n||(0,U.jsx)(As,{}),S=p?.svgTheme||e,g=()=>{l("sketch")};if(!d||!a||!c||!i)return null;let y=m&&i.id&&!u&&(r==="pointer"||r==="hand"||!i.open)?(0,U.jsx)(bn,{annotation:i,target:m,children:v}):null,b="shape";return s==="explore"?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(b,{id:`shape-${i.id}`,points:i.points,open:i.open,onClick:g,relativeStyle:!0,target:{x:0,y:0,width:a.width,height:a.height},style:{":hover":{backgroundColor:"rgba(0,0,0,0.2)"},backgroundColor:"rgba(0,0,0,0)",borderWidth:"4px",borderColor:"rgba(255, 255, 255, .4)"},...h}),(0,U.jsx)(b,{id:`shape-${i.id}`,points:i.points,open:i.open,onClick:g,relativeStyle:!0,target:{x:0,y:0,width:a.width,height:a.height},style:{backgroundColor:"rgba(0,0,0,0)",borderWidth:"2px",borderColor:"rgba(0, 0, 0, .4)"}}),y]}):(0,U.jsxs)(U.Fragment,{children:[t?(0,U.jsx)(b,{id:`shape-${i.id}`,points:i.points,open:i.open,target:{x:0,y:0,width:a.width,height:a.height},...h}):null,(0,U.jsx)(ki,{image:a,theme:S}),y,f]})}function As(){let e=Q(),t=(0,ce.useStore)(e,r=>r.changeMode),n=(0,ce.useStore)(e,r=>r.mode),o=(0,ce.useStore)(e,r=>r.completeRequest),a=(0,ce.useStore)(e,r=>r.tool),i=()=>{(0,Rn.startTransition)(()=>{o()})};return a.enabled?(0,U.jsxs)("div",{className:"svg-tools-container animate-fadeIn",children:[n!=="sketch"&&(0,U.jsx)("button",{className:"svg-tools-button",onClick:()=>{t("sketch")},children:"Edit"}),(0,U.jsx)("button",{className:"svg-tools-button",onClick:i,children:"Save"})]}):null}var Ie=require("react");var ct=require("react");var Yi=require("@iiif/helpers");function An(e,t){let{selector:n,source:o}=(0,Yi.expandTarget)(t);if(o.id!==e.id)return[null,o];let a={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}};return[n?n.type==="TemporalSelector"?{type:"TemporalBoxSelector",temporal:n.temporal,spatial:a.spatial}:n:null,o]}var ji={makeChoice:()=>{}},Pn={type:"unknown"},N=e=>({type:"unknown",reason:e,annotations:{pages:[]}}),Gi=(e,t)=>({type:"empty",width:e,height:t,annotations:{pages:[]},image:null,images:[]});var kt=require("react");function Ps(e,t){let n=e?.iiif?.meta[t];return n?n.annotationPageManager:null}function Ki(e,t){return E(n=>{let o=[];if(!e)return o;let a=Object.keys(n.iiif.entities.AnnotationPage);for(let i of a)if(!t||t.indexOf(i)!==-1){let r=Ps(n,i);r&&r.views&&r.views[e]&&o.push(i)}return o},[e,t])}function Qi({canvas:e,manifest:t,all:n,canvases:o}){let a=[];if(t)for(let i of t.annotations)a.indexOf(i.id)===-1&&a.push(i.id);if(n){if(o&&o.length)for(let i of o)for(let r of i.annotations)a.indexOf(r.id)===-1&&a.push(r.id)}else if(e)for(let i of e.annotations)a.indexOf(i.id)===-1&&a.push(i.id);return a}function Ts(e,t){let n=e?.iiif?.meta[t];return n?n.annotationPageManager:null}function Xi(e,t={}){let n=k(),o=q(),a=T(),i=Ot(),r=(0,kt.useMemo)(()=>Qi({all:t.all,manifest:o,canvas:a,canvases:i}),[t.all,a,i,o]),s=Ki(e,t.all?void 0:r),l=(0,kt.useCallback)(d=>{e&&n.setMetaValue([d,"annotationPageManager","views"],c=>c&&!c[e]?c:{...c||{},[e]:!1})},[e,n]),u=(0,kt.useCallback)((d,c={})=>{if(!e)return;let m=n.getState(),p=[];if(c?.deselectOthers){let f=Object.keys(m.iiif.entities.AnnotationPage);for(let h of f){let v=Ts(m,h);v&&v.views&&v.views[e]&&p.push(h)}}for(let f of p)l(f);n.setMetaValue([d,"annotationPageManager","views"],f=>f&&f[e]?f:{...f||{},[e]:!0})},[e,l,n]);return{availablePageIds:r,enabledPageIds:s,setPageEnabled:u,setPageDisabled:l}}function Zi(e,t){return E((n,o)=>o.get(e.map(a=>({id:a,type:t}))),[e,t])}var Ji=J(require("mitt"),1),ea=require("react"),ta=require("zustand");var ws=(0,ta.createStore)((e,t)=>({loaded:{},setLoaded:(n,o="done")=>{e(a=>({loaded:{...a.loaded,[n]:o}}))}})),Is=(0,Ji.default)();Is.on("loaded",e=>{ws.getState().setLoaded(e.imageServiceId)});function na(){let e=rn(),t=li();return[(0,ea.useCallback)((o,{height:a,width:i})=>o&&e(o,{height:a,width:i},!0),[e]),t]}var De=require("react");function oa(e={}){let t=qt(),n=T(e.canvasId?{id:e.canvasId}:void 0);return E((o,a)=>{if(!n)return[];if(t&&e.enableSingleAnnotation)return[t];let i=a.get(n.items),r=[];for(let s of i)r.push(...a.get(s.items));return r},[n])}var ra=require("@iiif/helpers/painting-annotations");function ia(e,t=[]){let n=k(),o=(0,De.useMemo)(()=>(0,ra.createPaintingAnnotationsHelper)(n),[]),a=oa({enableSingleAnnotation:e?.enableSingleAnnotation}),[i,r]=(0,De.useState)(e?.defaultChoices||[]),s=(0,De.useMemo)(()=>o.getPaintables(a,i),[n,a,i,...t]),u={makeChoice:(0,De.useCallback)((d,{deselectOthers:c=!0,deselect:m=!1}={})=>{s.choice&&r(p=>{if(m){let h=p.filter(v=>v!==d);if(h.length===0){let v=s.items[0].resource.id;return v?[v]:[]}return h}if(c)return[d];let f=[...p];if(f.length===0&&s.items.length){let h=s.items[0].resource.id;h&&f.push(h)}return p.indexOf(d)!==-1?p:[...p,d]})},[s.choice])};return[s,u]}var Ms=["model/gltf-binary"];function aa(e,t){let n=t.items[0],o=n.resource;return o.format?Ms.indexOf(o.format)===-1?N(`3D format: ${o.format} is unsupported`):{type:"3d-model",model:o,annotationId:n.annotationId,annotation:n.annotation}:N("Unknown format")}function Tn(e,t){let n=t.items,o=n[0];if(n.length===0||!o)return N("No audio");if(!e.duration)return N("No duration on canvas");if(n.length>1)return N("Only one audio source supported");let a=o.resource;return a?("format"in a||(a.format="audio/mpeg"),{type:"media",media:{annotationId:o.annotationId,annotation:o.annotation,duration:e.duration,url:a.id,type:"Sound",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:a.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},annotations:{pages:[]}}):N("Unknown audio")}var uo=require("@iiif/helpers/annotation-targets"),la=require("@iiif/parser/image-3");function Se(e){return e.replace(/^http:/,"https:")}function sa(e){if(!(e?.type!=="ImageApiSelector"||typeof e.rotation>"u"))return co(e.rotation)}function co(e){if(e===null||typeof e>"u"||e==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}function ks(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 wn(e,t,n){let o=[],a=[];for(let i of t.items){let r=i.resource&&i.resource.type==="SpecificResource"?i.resource.source:i.resource;if(!r.id)return N("No resource Identifier");let l=(i.resource.type==="SpecificResource"?sa(i.resource.selector):void 0)??sa(i.selector)??co(i.rotation)??co(i.selector?.rotation),u=typeof l<"u",d;if(r.service){let y=(0,la.getImageServices)(r);y[0]&&(d=n(y[0],u?{width:Number(r.width||e.width),height:Number(r.height||e.height)}:e))}let c={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}},[m,p]=An(e,i.target),f=e.id?.split("?")[0]||"";if(!(Se(p.id||"")===Se(e.id)||Se(decodeURIComponent(p.id||""))===Se(e.id||"")||Se(p.id||"")===Se(f)||Se(decodeURIComponent(p.id||""))===Se(f)))continue;let h=i.resource.width&&i.resource.height?{type:"BoxSelector",spatial:{x:0,y:0,width:i.resource.width,height:i.resource.height}}:void 0,v=i.resource.type==="SpecificResource"?(0,uo.expandTarget)(i.resource):null;if(i.selector){let y=(0,uo.expandTarget)({type:"SpecificResource",source:i.resource,selector:i.selector});y&&(v=y)}let S=v&&v.selector&&(v.selector.type==="BoxSelector"||v.selector.type==="TemporalBoxSelector")?{type:"BoxSelector",spatial:{x:v.selector.spatial.x,y:v.selector.spatial.y,width:v.selector.spatial.width,height:v.selector.spatial.height},...typeof v.selector.rotation<"u"?{rotation:v.selector.rotation}:{},...v.selector.rotationOrigin?{rotationOrigin:v.selector.rotationOrigin}:{},...v.selector.translate?{translate:v.selector.translate}:{},...v.selector.transform?{transform:v.selector.transform}:{},...v.selector.boxStyle?{boxStyle:v.selector.boxStyle}:{}}:void 0;d&&!d.id&&(d.id=d["@id"]);let g={id:r.id,type:"Image",annotationId:i.annotationId,annotation:i.annotation,width:Number(u||m||S?r.width:e.width),height:Number(u||m||S?r.height:e.height),...typeof l<"u"?{rotation:l}:{},...ks(i),service:d,sizes:d&&d.sizes?d.sizes:r.width&&r.height?[{width:r.width,height:r.height}]:[],target:m&&m.type!=="PointSelector"?m:c,selector:S||{type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}},annotationPages:i.resource.annotations||[]};o.push(g)}return{type:"images",image:o[0],images:o,choice:t.choice}}function ua(e,t={},n){let o=e.language||n||"none";switch(e.type){case"TextualBody":{typeof e.value<"u"&&(t[o]=[e.value]);break}case"List":case"Composite":case"Choice":e.items&&e.items.forEach(a=>ua(a,t,o))}return t}function In(e,t){let n=[];return t.items.forEach(o=>{if(o.resource){let[a]=An(e,o.target);n.push({type:"Text",annotationId:o.annotationId,annotation:o.annotation,text:ua(o.resource),target:a})}}),{type:"textual-content",items:n}}var Mn=require("@iiif/helpers");var Es=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function kn(e,t,n,o=!1){let a=t.items.filter(h=>h.type==="video"),i=a[0],r=!1,s=!1;if(e.duration||(s=!0),a.length>1||!i)return N("Only one video source supported");let l=a[0]?.resource,u=!!(l.service||[]).find(h=>(h.profile||"").includes("youtube.com"));if(!u&&s)return N("Video does not have duration");if(!l)return N("Unknown video");if((!l.format||l.format==="text/html")&&!u)return N("Video does not have format");let d=[],c=n.get(e.annotations||[]);for(let h of c){let v=n.get(h.items||[]);for(let S of v)if((S.motivation?Array.isArray(S.motivation||"")?S.motivation:[S.motivation]:[]).includes("supplementing")){let y=n.get(S.body||[]);for(let b of y){let x=b;if(x.type==="Choice")for(let C of x.items){let R=n.get(C);R.format==="text/vtt"&&d.push({id:R.id,type:"Text",format:"text/vtt",label:R.label,language:R.language})}else x.format==="text/vtt"&&d.push({id:x.id,type:"Text",format:"text/vtt",label:x.label,language:x.language})}}}let m={annotationId:i.annotationId,annotation:i.annotation,duration:e.duration,url:l.id,type:"Video",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:l.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},p=(0,Mn.expandTarget)(i.target);p.selector&&p.selector.type==="TemporalBoxSelector"&&(m.target=p.selector);let{selector:f}=(0,Mn.parseSelector)(i.selector);if(f===null){let h=m.target.temporal.startTime,S=(m.target.temporal.endTime||e.duration)-h;m.selector={type:"TemporalSelector",temporal:{startTime:0,endTime:S}}}else f.type==="TemporalSelector"&&(m.selector=f);if(o&&!m.target.spatial&&(r=!0,m.target={type:"TemporalBoxSelector",temporal:m.target.temporal,spatial:{x:e.width/2,y:e.height/2,width:e.width/2,height:e.height/2}}),u){m.type="VideoYouTube";let h=l.id.match(Es);if(!h[1])return N("Video is not known youtube video");m.youTubeId=h[1]}return{type:"media",media:m,annotations:{pages:[]},noSpatial:r,captions:d}}var ca=require("@iiif/helpers");function da(e,t,n,o){let a={type:"complex-timeline",items:[],keyframes:[],highlights:[],duration:e.duration||0},i={type:"complex-choice",items:[]},r=o.get(e.annotations);function s(d){d.choice&&(d.choice.type==="complex-choice"?i.items.push(...d.choice.items):i.items.push(d.choice))}for(let d of t.items){if(d.type==="image"){let c=wn(e,{choice:null,allChoices:null,types:["image"],items:[d]},n);if(c.type==="images"){if(!c.image)continue;s(c),a.items.push(c.image);let m={id:c.image.annotationId,type:"enter",resourceType:"image",time:c.image.target?.temporal?.startTime||0};a.keyframes.push(m);let p={id:c.image.annotationId,type:"exit",resourceType:"image",time:c.image.target?.temporal?.endTime||e.duration||0};a.keyframes.push(p)}}if(d.type==="textualbody"){let c=In(e,{choice:null,allChoices:null,types:["textualbody"],items:[d]});if(c.type==="textual-content"){s(c);let m=c.items[0];a.items.push(m);let p=m.target,f={id:m.annotationId,type:"enter",resourceType:"text",time:p.temporal?.startTime||0};a.keyframes.push(f);let h={id:m.annotationId,type:"exit",resourceType:"text",time:p.temporal?.endTime||e.duration||0};a.keyframes.push(h)}}if(d.type==="video"){let c=kn(e,{choice:null,allChoices:null,types:["video"],items:[d]},o,!0);if(c.type==="media"){s(c);let m=c.media;a.items.push(m);let p={id:m.annotationId,type:"enter",resourceType:"video",time:m.target?.temporal?.startTime||0};a.keyframes.push(p);let f={id:m.annotationId,type:"exit",resourceType:"video",time:m.target?.temporal?.endTime||e.duration||0};a.keyframes.push(f)}}if(d.type==="audio"||d.type==="sound"){let c=Tn(e,{choice:null,allChoices:null,types:["audio"],items:[d]});if(c.type==="media"){s(c);let m=c.media;a.items.push(m);let p={id:m.annotationId,type:"enter",resourceType:"audio",time:m.target?.temporal?.startTime||0};a.keyframes.push(p);let f={id:m.annotationId,type:"exit",resourceType:"audio",time:m.target?.temporal?.endTime||e.duration||0};a.keyframes.push(f)}}}for(let d of r)for(let c of d.items){let m=o.get(c),p=(0,ca.expandTarget)(m.target,{typeMap:o.getState?.().iiif.mapping});if(p.selector?.temporal){let f={id:m.id,type:"enter",resourceType:"highlight",time:p.selector.temporal.startTime||0};a.keyframes.push(f);let h={id:m.id,type:"exit",resourceType:"highlight",time:p.selector.temporal.endTime||e.duration||0};a.keyframes.push(h)}a.highlights.push({annotation:m,target:p})}a.keyframes.sort((d,c)=>d.time-c.time);let l=[],u=[];for(let d of a.keyframes){if(d.resourceType==="image"||d.resourceType==="text"||d.resourceType==="highlight"){u.push(d);continue}if(d.type==="enter"){l.length===0&&(d.isPrime=!0),l.push(d),u.push(d);continue}if(d.type==="exit"&&(u.push(d),l=l.filter(c=>c.id!==d.id),l.length!==0)){let c=l[0],m={id:c.id,type:"change",isPrime:!0,resourceType:c.resourceType,time:d.time};u.push(m)}}return a.keyframes=u,i.items.length&&(a.choice=i),a}var En={},mo={get(e){return e},setMetaValue([e,t,n],o){let a=mo.getResourceMeta(e,t),i=a?a[n]:void 0,r=typeof o=="function"?o(i):o;En[e]={...En[e]||{},[t]:{...(En[e]||{})[t]||{},[n]:r}}},getResourceMeta:(e,t)=>{let n=En[e];if(n)return t?n[t]:n},async load(e){let t=typeof e=="string"?e:e.id;return fetch(t).then(n=>n.json())},requestStatus(e){}};function ma({canvas:e,paintables:t,supports:n,loadImageService:o,vault:a=mo}){if(!e)return Pn;if(t.types.length===0)return n.indexOf("empty")!==-1?Gi(e.width,e.height):Pn;if(t.types.length!==1)if(t.types.length===2&&t.types.indexOf("text")!==-1)t.types=t.types.filter(r=>r!=="text");else return n.indexOf("complex-timeline")===-1?N("Complex timeline not supported"):da(e,t,o,a);let i=t.types[0];return i==="image"?n.indexOf("images")===-1?N("Image not supported"):wn(e,t,o):i==="Model"||i==="model"?n.indexOf("3d-model")===-1?N("3D not supported"):aa(e,t):i==="textualbody"?n.indexOf("textual-content")===-1?N("Textual content not supported"):In(e,t):i==="sound"||i==="audio"?n.indexOf("media")===-1?N("Media not supported"):Tn(e,t):i==="video"?n.indexOf("media")===-1?N("Media not supported"):kn(e,t,a):Pn}function pa(e){let t=q(),n=T(),o=k(),a=Ni(),i=e?.emitter||a,[r,s]=na(),{enabledPageIds:l}=Xi(e?.annotationPageManagerId||t?.id||n?.id,{all:!1}),u=Zi(l,"AnnotationPage"),d=e?.strategies||["empty","images","media","textual-content","complex-timeline"],[c,m]=ia(e,[s]);(0,ct.useEffect)(()=>{let f=h=>{m.makeChoice(h.choiceId,{deselectOthers:h.deselectOthers,deselect:h.deselect})};return i.on("make-choice",f),()=>{i.off("make-choice",f)}},[]);let p=(0,ct.useMemo)(()=>ma({canvas:n,paintables:c,supports:d,loadImageService:r,vault:o}),[n,c,o,m.makeChoice]);return(0,ct.useEffect)(()=>{let f=c.allChoices,h={canvasId:n?.id,manifestId:t?.id};f&&i.emit("choice-change",{choice:f,partOf:h})},[n?.id,c.allChoices]),(0,ct.useMemo)(()=>p.type==="unknown"?[p,ji]:[{...p,annotations:{pages:u}},m],[p,u])}var fa=require("@iiif/helpers");var po=require("react/jsx-runtime");function ga({strategies:e,registerActions:t,defaultChoices:n,onChoiceChange:o,mediaControlsDeps:a,renderMediaControls:i,renderViewerControls:r,viewControlsDeps:s,renderComplexTimelineControls:l,complexTimelineControlsDeps:u,throwOnUnknown:d,children:c}){let m=T(),p=k(),f=(0,Ie.useMemo)(()=>(0,fa.createStylesHelper)(p),[p]),[h,v]=pa({strategies:e||["images"],defaultChoices:n?.map(({id:b})=>b)}),S="choice"in h?h.choice:void 0;if((0,Ie.useEffect)(()=>{t&&t(v)},[h.annotations]),(0,Ie.useEffect)(()=>{o&&o(S)},[S]),(0,Ie.useEffect)(()=>{if(n)for(let b of n)typeof b.opacity<"u"&&f.applyStyles({id:b.id},"atlas",{opacity:b.opacity})},[n]),h.type==="unknown"&&d)throw new Error(h.reason||"Unknown strategy");let g=(0,Ie.useMemo)(()=>({renderMediaControls:i,mediaControlsDeps:a||[],renderViewerControls:r,viewControlsDeps:s||[],renderComplexTimelineControls:l,complexTimelineControlsDeps:u||[]}),[a,i,r,s,l,u]),y=(0,Ie.useMemo)(()=>({strategy:h,actions:v,choices:"choice"in h?h.choice:[]}),[h,m]);return(0,po.jsx)(Zt.Provider,{value:g,children:(0,po.jsx)(Le.Provider,{value:y,children:c})})}var Et=require("react"),go=require("zustand");var dt=require("react");var fo=(0,dt.createContext)(()=>{});function ha(e){let t=T(),n=(0,dt.useContext)(fo);(0,dt.useEffect)(()=>t&&t.id?(n(t.id,e),()=>n(t.id,-1)):()=>{},[t,e])}var va=require("react/jsx-runtime");function ya({x:e=0,y:t=0,keepCanvasScale:n=!0,renderContextMenu:o,children:a}){let{strategy:i}=z(),r=T(),s=Q(),l=$t(r,["deep-zoom"]),u=(0,go.useStore)(s,h=>h.setCanvasRelativePosition),d=(0,go.useStore)(s,h=>h.clearCanvasRelativePosition),[c,m]=Cn(`context-menu/${r?.id}`,r?.id,o),p=(0,Et.useMemo)(()=>n?1:Math.max(1,...i.type==="images"?i.images.map(h=>(h.width||0)/h.target?.spatial.width):[]),[n,i]);(0,Et.useEffect)(()=>{if(r)return u(r.id,{x:e,y:t,width:r.width,height:r.height}),()=>{d(r.id)}},[e,t,r,d,u]),(0,Et.useEffect)(()=>{r&&s.getState().reset()},[s,r]),ha(p);let f=i.type==="images"?i.images.length:0;return r?(0,va.jsxs)("world-object",{height:r.height,width:r.width,x:e,y:t,...m,...l,children:[c,a]},`${r.id}/${i.type}/${f}`):null}var G=require("react/jsx-runtime");function ze({x:e,y:t,onChoiceChange:n,registerActions:o,defaultChoices:a,isStatic:i,renderViewerControls:r,renderMediaControls:s,renderComplexTimelineControls:l,complexTimelineControlsDeps:u,viewControlsDeps:d,mediaControlsDeps:c,strategies:m,throwOnUnknown:p,rotation:f,backgroundStyle:h,alwaysShowBackground:v,keepCanvasScale:S=!1,enableSizes:g=!1,enableYouTube:y=!0,onClickPaintingAnnotation:b,components:x={},children:C,annotationPopup:R,svgTheme:A,renderContextMenu:B,renderAnnotationContextMenu:de}){return(0,G.jsxs)(ga,{throwOnUnknown:p,onChoiceChange:n,registerActions:o,strategies:m,defaultChoices:a,mediaControlsDeps:c,renderMediaControls:s,renderViewerControls:r,renderComplexTimelineControls:l,complexTimelineControlsDeps:u,viewControlsDeps:d,children:[(0,G.jsxs)(ya,{keepCanvasScale:S,x:e,y:t,renderContextMenu:B,children:[(0,G.jsx)(Si,{alwaysShowBackground:v,backgroundStyle:h}),(0,G.jsx)(hi,{}),(0,G.jsx)(Ci,{}),(0,G.jsx)(bi,{isStatic:i,enableSizes:g,onClickPaintingAnnotation:b,rotation:f}),(0,G.jsx)(Ur,{}),(0,G.jsx)(Nr,{}),(0,G.jsx)(Qr,{as:x.Audio}),(0,G.jsx)(Ri,{as:x.Video}),y?(0,G.jsx)(Ti,{}):null,(0,G.jsx)(_i,{theme:A,renderContextMenu:de,children:R}),C]}),(0,G.jsx)(zr,{})]})}var ho=require("react/jsx-runtime");function Sa(e){let t=T();return!t||!t.placeholderCanvas?null:(0,ho.jsx)(pe,{canvas:t.placeholderCanvas.id,children:(0,ho.jsx)(ze,{renderViewerControls:e.renderViewerControls})})}var Ca=require("@atlas-viewer/atlas"),_=J(require("react"),1),Ra=require("react-error-boundary"),yo=require("zustand");var Vn=require("react");function xa(e,t=2e3){let{currentSequenceIndex:n,sequence:o,items:a}=Ft(),i=T(),r=(0,Vn.useMemo)(()=>{let l=o[n]||[];return l.length===0&&i?[{id:i.id,type:"Canvas"}]:l.map(u=>a[u])},[o,n,i,a]),s=Q();(0,Vn.useEffect)(()=>{let u=setInterval(()=>{if(e&&t!==-1){let d={x:e.x,y:e.y,width:e.width,height:e.height},c=s.getState().canvasRelativePositions,m={};for(let p of r){let f=c[p.id];if(f){let h=f.x,v=f.y,S=f.width,g=f.height,y={x:Math.max(h,d.x),y:Math.max(v,d.y),width:Math.min(h+S,d.x+d.width)-Math.max(h,d.x),height:Math.min(v+g,d.y+d.height)-Math.max(v,d.y)};y.width<=0||y.height<=0||(m[p.id]={x:y.x-f.x,y:y.y-f.y,width:y.width,height:y.height}),s.setState({canvasViewports:m})}}}},t);return()=>{clearTimeout(u)}},[r,e,s,t])}var mt=require("react/jsx-runtime");function ba({width:e,style:t,height:n,error:o,resetErrorBoundary:a}){return(0,mt.jsxs)("div",{style:{width:e,height:n,minHeight:500,...t||{},background:"#f9f9f9"},children:[(0,mt.jsx)("h3",{children:"Error occurred"}),(0,mt.jsx)("p",{children:o.message}),(0,mt.jsx)("button",{type:"button",onClick:a,children:"Reset"})]})}var V=require("react/jsx-runtime");function Aa(e){let t=Q(),n=(0,_.useMemo)(()=>e.name||Math.random().toString(36).substring(2,9),[e.name]);return(0,V.jsx)(Li,{identifier:n,children:(0,V.jsx)(vt,{name:e.name,existing:t,children:(0,V.jsx)(Vs,{...e})})})}function Vs({name:e,children:t,errorFallback:n,outerContainerProps:o={},worldScale:a,updateViewportTimeout:i,...r}){let s=Q(),l=yn(),u=(0,yo.useStore)(s,P=>P.mode),d=(0,yo.useStore)(s,P=>P.setAtlasRuntime),[c,m]=(0,_.useState)(),p=vn(),f=Sn(),h=n||ba,[v,S]=(0,_.useState)({}),g=Object.entries(v),[y,b]=(0,_.useState)({}),x=Object.entries(y),[C,R]=(0,_.useState)({}),{worldScale:A,runtimeOptions:B}=(0,_.useMemo)(()=>{if(Object.values(C).length===0)return{worldScale:1,runtimeOptions:r.runtimeOptions||{maxOverZoom:1}};let M=Math.max(...Object.values(C));return{worldScale:M,runtimeOptions:{maxOverZoom:M||1,...r.runtimeOptions||{}}}},[C,r.runtimeOptions]);xa(c?.runtime,i);let de=(0,_.useCallback)((P,M)=>{R(Z=>{if(M===-1){let{[P]:vo,...Me}=Z;return Me}return{...Z,[P]:M}})},[]),I=(0,_.useCallback)((P,M,Z)=>{S(({[P]:vo,...Me})=>M?{...Me,[P]:{element:M,props:Z}}:Me)},[]),H=(0,_.useCallback)((P,M,Z)=>{b(({[P]:vo,...Me})=>M?{...Me,[P]:{element:M,props:Z}}:Me)},[]),te=(0,_.useCallback)(P=>{m(P),d(P.runtime),r.onCreated&&r.onCreated(P)},[r.onCreated,d]);return(0,V.jsxs)(Ra.ErrorBoundary,{resetKeys:[],fallbackRender:P=>(0,V.jsx)(h,{...r,...P}),children:[(0,V.jsx)(Ca.AtlasAuto,{...r,mode:u,containerProps:{style:{position:"relative"},...r.containerProps||{}},htmlChildren:(0,V.jsx)(V.Fragment,{children:g.map(([P,{element:M,props:Z}])=>(0,V.jsx)(_.default.Fragment,{children:(0,V.jsx)(M,{...Z||{}})},P))}),onCreated:te,runtimeOptions:B,children:(0,V.jsx)(vt,{name:e,existing:s,children:(0,V.jsx)(He.Provider,{value:c,children:(0,V.jsx)(fo.Provider,{value:de,children:(0,V.jsx)(Gn.Provider,{value:I,children:(0,V.jsx)(Kn.Provider,{value:H,children:(0,V.jsx)(xn,{bridge:f,custom:p,children:(0,V.jsx)($r,{children:t})})})})})})})}),(0,V.jsx)("div",{children:x.map(([P,{element:M,props:Z}])=>(0,V.jsx)(_.default.Fragment,{children:(0,V.jsx)(M,{...Z||{}})},P))}),(0,V.jsx)("div",{id:`atlas-floating-ui-${l}`,className:"atlas-floating-ui",style:{position:"relative",zIndex:999999}})]})}var Y=require("react/jsx-runtime"),Ns=(0,Fe.forwardRef)(function(t,n){let o=q(),a=Ot(),i=Ft(),{ViewerControls:r,MediaControls:s,ComplexTimelineControls:l}=t.components||{};if((0,Fe.useImperativeHandle)(n,()=>i,[i]),!o)return(0,Y.jsx)("div",{});let u=0,d=o.viewingDirection==="top-to-bottom",c=o.viewingDirection==="bottom-to-top",m=o.viewingDirection==="left-to-right",p=o.viewingDirection==="right-to-left",h=o.behavior.includes("continuous")?0:t.spacing||0,v=c||p,S=(0,Fe.useMemo)(()=>v?[...a].reverse():a,[a,v]);return(0,Y.jsxs)(Y.Fragment,{children:[t.header,(0,Y.jsx)(F.Viewer,{height:t.height,mode:t.mode,renderPreset:t.renderPreset,runtimeOptions:t.runtimeOptions,updateViewportTimeout:t.updateViewportTimeout,homePaddingPx:t.padding,children:S.map((g,y)=>{let b=0,x=0;return!d&&!c?(b=u,u+=g.width+h):(x=u,u+=g.height+h),(0,Y.jsx)(pe,{canvas:g.id,children:(0,Y.jsx)(F.RenderCanvas,{strategies:["3d-model","media","images","empty","textual-content","complex-timeline"],renderViewerControls:y===0&&r?()=>(0,Y.jsx)(r,{}):void 0,renderMediaControls:y===0&&s?()=>(0,Y.jsx)(s,{}):void 0,annotationPopup:t.annotationPopup,renderContextMenu:t.renderContextMenu,keepCanvasScale:t.keepCanvasScale,renderComplexTimelineControls:y===0&&l?()=>(0,Y.jsx)(l,{}):void 0,renderAnnotationContextMenu:t.renderAnnotationContextMenu,x:b,y:x,svgTheme:t.svgTheme,rotation:t.rotation,...t.canvasProps||{},children:t.annotations},g.id)},g.id)})},t.reuseAtlas?"":i.currentSequenceIndex),t.children]})}),F=(0,Fe.forwardRef)(function({children:t,height:n,annotations:o,canvasProps:a,spacing:i,header:r,components:s,mode:l,reuseAtlas:u,renderPreset:d,runtimeOptions:c,annotationPopup:m,name:p,svgTheme:f,updateViewportTimeout:h,renderContextMenu:v,keepCanvasScale:S,renderAnnotationContextMenu:g,padding:y,rotation:b,...x},C){let R=Ue();return(0,Y.jsx)(vt,{name:p,children:(0,Y.jsx)($e,{vault:R,children:(0,Y.jsx)(er,{...x,children:(0,Y.jsx)(Ns,{ref:C,height:n,components:s,spacing:i,canvasProps:a,annotations:o,header:r,mode:l,reuseAtlas:u,renderPreset:d,runtimeOptions:c,annotationPopup:m,svgTheme:f,updateViewportTimeout:h,renderContextMenu:v,keepCanvasScale:S,renderAnnotationContextMenu:g,padding:y,rotation:b,children:t})})})})});F.RenderImage=it;F.RenderCanvas=ze;F.RenderAnnotationPage=Ve;F.RenderAnnotation=Ze;F.Viewer=Aa;F.CanvasBackground=un;F.Audio=jt;F.Video=mn;F.Model=Qt;F.AudioHTML=Qn;F.VideoHTML=ao;F.ModelHTML=Xn;F.PlaceholderCanvas=Sa;F.getAtlasStoreByName=dr;
|
|
47
|
+
`}),(0,kt.jsx)("iframe",{title:`YouTube video: ${t.youTubeId}`,className:"video-yt",ref:o,src:`https://www.youtube.com/embed/${t.youTubeId}?enablejsapi=1&origin=${gs()}&modestbranding=1&rel=0`,referrerPolicy:"no-referrer compute-pressure",sandbox:"allow-scripts allow-same-origin allow-presentation"})]}):null}function gs(){return typeof window<"u"?window.location.host:""}function wi({media:e,mediaControlsDeps:t,children:n}){let[{element:o,currentTime:a,progress:r},i,s]=et({duration:e.duration});return Y("overlay","video-element",fs,{element:o,media:e,playPause:s.playPause}),null}var hn=require("react/jsx-runtime");function Ii(){let{strategy:e}=L(),{renderMediaControls:t,mediaControlsDeps:n}=Q();return e.type!=="media"||e.media.type!=="VideoYouTube"?null:(0,hn.jsxs)(wi,{media:e.media,mediaControlsDeps:n,children:[(0,hn.jsx)(rt,{}),t?t(e):null]})}var Pn=require("react"),ue=require("zustand");var vn=require("@atlas-viewer/atlas"),fe=require("react");var ki=require("polygon-editor"),B=require("react");var yn=require("zustand");function Mi(e){let t=K(),n=(0,yn.useStore)(t,r=>r.polygons),o=(0,yn.useStore)(t,r=>r.polygonState),a=(0,yn.useStore)(t,r=>r.polygon);return or("atlas.polygon-render",({state:r,slowState:i,dt:s})=>{e(r,i,s)}),{currentShape:a,state:o,helper:n}}var I=require("react/jsx-runtime"),xe=(0,ki.createSvgHelpers)(),hs={shapeFill:"#ffffff33",shapeStroke:"#000",lineStroke:"#000",ghostLineStroke:"#0F0",activeLineStroke:"#4D7EEA",boundingBoxDottedStroke:"#0007",boundingBoxStroke:"#fffA",controlFill:"#fff"};function Ei(e){let{image:t}=e,n={...hs,...e.theme||{}},o=typeof window>"u"?1:window.devicePixelRatio||1,a=`svg-editor-${(0,B.useId)().replace(/:/g,"")}`,r={dot:`${a}-dot`,newdot:`${a}-newdot`,selected:`${a}-selected`,resizer:`${a}-resizer`},i=(0,B.useRef)(),s=(0,B.useRef)(),l=(0,B.useRef)(),u=(0,B.useRef)(),d=(0,B.useRef)(),c=(0,B.useRef)(),m=(0,B.useRef)(),p=(0,B.useRef)(),f=(0,B.useRef)(),h=(0,B.useRef)(),[y,S]=(0,B.useState)(null),[b,v]=(0,B.useState)(!1),{helper:x,state:g,currentShape:C}=Mi((R,w)=>{if(R.closestLineIndex,xe.updateTransitionBoundingBox(l.current,R,w),xe.updateBoundingBoxPolygon(i.current,R,w),xe.updateBoundingBoxPolygon(s.current,R,w),xe.updateTransitionShape(m.current,R,w),xe.updateClosestLinePointTransform(d.current,R,w),xe.updateSelectBox(u.current,R,w),xe.updatePointLine(p.current,R,w),xe.updateDrawPreview(c.current,R,w,3),xe.updateLineBox(f.current,R),S(R.transitionDirection),v(R.transitionRotate),R.closestLineIndex!==-1&&h.current){let D=R.polygon,Fe=D.points[R.closestLineIndex],ne=D.points[(R.closestLineIndex+1)%D.points.length];Fe&&ne&&h.current.setAttribute("points",`${Fe[0]},${Fe[1]} ${ne[0]},${ne[1]}`)}});(0,B.useEffect)(()=>{let R=()=>{x.modifiers.reset()};return document.addEventListener("mouseleave",R),()=>{document.removeEventListener("mouseleave",R)}},[]);let A=(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)("marker",{id:r.dot,viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:5*o,markerHeight:5*o,children:[(0,I.jsx)("circle",{cx:"5",cy:"5",r:"5",fill:n.lineStroke,className:"marker"}),(0,I.jsx)("circle",{cx:"5",cy:"5",r:"3",fill:n.controlFill})]}),(0,I.jsx)("marker",{id:r.newdot,viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:5*o,markerHeight:5*o,children:(0,I.jsx)("circle",{cx:"5",cy:"5",r:"5",fill:n.activeLineStroke,className:"marker"})}),(0,I.jsxs)("marker",{id:r.selected,viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:5*o,markerHeight:5*o,children:[(0,I.jsx)("circle",{cx:"5",cy:"5",r:"5",fill:n.lineStroke}),(0,I.jsx)("circle",{cx:"5",cy:"5",r:"3",fill:n.activeLineStroke})]}),(0,I.jsxs)("marker",{id:r.resizer,viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:6*o,markerHeight:6*o,children:[(0,I.jsx)("rect",{width:"10",height:"10",fill:n.lineStroke}),(0,I.jsx)("rect",{x:"1",y:"1",width:"8",height:"8",fill:n.controlFill})]})]}),T=C?C.open?"polyline":"polygon":null,O=!g.showBoundingBox&&g.closestPoint!==null&&g.actionIntentType==="select-point",ce=g.actionIntentType==="add-open-point",de=g.transitionIntentType==="split-line",te=g.transitioning&&g.selectedStamp&&g.transitionIntentType==="stamp-shape",me=C&&T?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(T,{fill:(!g.transitioning||g.transitionIntentType==="select-multiple-points")&&!C.open?n.shapeFill:"none",strokeWidth:te||g.showBoundingBox&&g.boxMode||g.transitioning&&g.transitionIntentType==="split-line"||g.transitioning&&g.transitionIntentType==="move-point"?0:2,stroke:n.shapeStroke,points:C.points.map(R=>R.join(",")).join(" "),vectorEffect:"non-scaling-stroke",markerStart:g.showBoundingBox?void 0:`url(#${g.boxMode?r.resizer:r.dot})`,markerMid:g.showBoundingBox?void 0:`url(#${g.boxMode?r.resizer:r.dot})`,markerEnd:g.showBoundingBox?void 0:`url(#${g.boxMode?r.resizer:r.dot})`,style:{pointerEvents:"none"},opacity:g.transitioning&&g.transitionIntentType==="move-shape"?0:1}),g.currentTool==="lineBox"&&g.actionIntentType==="close-line-box"?(0,I.jsx)("polygon",{fill:n.shapeFill,ref:f,stroke:n.lineStroke,strokeWidth:2,vectorEffect:"non-scaling-stroke"}):null,g.transitionIntentType==="draw-shape"&&g.transitioning?(0,I.jsx)("polyline",{ref:c,fill:"none",stroke:n.activeLineStroke,strokeWidth:2,vectorEffect:"non-scaling-stroke"}):null,!(g.transitioning&&g.transitionIntentType==="move-point")&&!(g.transitioning&&g.transitionIntentType==="stamp-shape")&&!g.showBoundingBox&&g.selectedPoints&&g.selectedPoints.length?(0,I.jsx)("polyline",{strokeWidth:2,vectorEffect:"non-scaling-stroke",stroke:"transparent",markerStart:`url(#${r.selected})`,markerMid:`url(#${r.selected})`,markerEnd:`url(#${r.selected})`,fill:"transparent",points:C.points.filter((R,w)=>g.selectedPoints?.includes(w)).map(R=>R.join(",")).join(" "),opacity:g.transitioning&&g.transitionIntentType==="move-shape"?0:1}):null,O&&!g.transitioning&&g.closestPoint!==null&&C.points[g.closestPoint]?(0,I.jsx)("polyline",{strokeWidth:2,vectorEffect:"non-scaling-stroke",stroke:"transparent",markerStart:`url(#${r.selected})`,markerMid:`url(#${r.selected})`,markerEnd:`url(#${r.selected})`,fill:n.activeLineStroke,points:`${C.points[g.closestPoint][0]},${C.points[g.closestPoint][1]}`,opacity:g.transitioning&&g.transitionIntentType==="move-shape"?0:1}):null,!g.transitioning&&(g.actionIntentType==="add-open-point"||g.actionIntentType==="close-shape"||g.actionIntentType==="close-shape-line")?(0,I.jsx)("polyline",{stroke:n.activeLineStroke,ref:p,strokeWidth:g.actionIntentType==="add-open-point"?1:2,vectorEffect:"non-scaling-stroke"}):null,g.hasClosestLine&&!g.showBoundingBox&&!g.transitioning&&g.currentTool!=="box"&&g.transitionIntentType==="split-line"?(0,I.jsx)("g",{children:(0,I.jsx)("polyline",{ref:h,vectorEffect:"non-scaling-stroke",fill:"transparent",stroke:n.activeLineStroke,strokeWidth:3})}):null,g.hasClosestLine&&!g.showBoundingBox&&!g.transitioning&&g.currentTool!=="box"&&g.transitionIntentType==="split-line"?(0,I.jsx)("g",{ref:d,children:(0,I.jsx)("polyline",{markerStart:`url(#${r.newdot})`,points:"0,0 1,1",vectorEffect:"non-scaling-stroke",stroke:"transparent",fill:"transparent",strokeWidth:2})}):null,g.transitioning?(0,I.jsx)(T,{ref:m,fill:C.open?"none":n.shapeFill,stroke:g.transitionIntentType==="stamp-shape"?n.activeLineStroke:n.shapeStroke,vectorEffect:"non-scaling-stroke",strokeWidth:(C.open,2)}):null,g.transitioning&&g.transitionIntentType==="select-multiple-points"?(0,I.jsx)("rect",{ref:u,fill:"rgba(255, 255, 255, .3)",strokeWidth:1,stroke:"rgba(0,0,0,.2)",vectorEffect:"non-scaling-stroke"}):null,g.showBoundingBox&&!te?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)("polygon",{ref:i,strokeWidth:2,stroke:n.boundingBoxStroke,fill:"none",markerStart:`url(#${r.resizer})`,markerMid:`url(#${r.resizer})`,markerEnd:`url(#${r.resizer})`,vectorEffect:"non-scaling-stroke"}),(0,I.jsx)("polygon",{ref:s,strokeWidth:2,stroke:n.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:x.state.slowState.currentTool,setCurrentTool:x.tools.setTool,helper:x,currentShape:C,state:g,isAddingPoint:ce,isSplitting:de,isStamping:te,isHoveringPoint:O,transitionDirection:y,transitionRotate:b,defs:A,editor:me}}var Ie=require("react/jsx-runtime");function Vi(e){let t=(0,vn.useAtlas)(),n=(0,fe.useRef)(null),{image:o}=e,{helper:a,defs:r,editor:i,state:s,transitionDirection:l,isSplitting:u,transitionRotate:d,isHoveringPoint:c,isAddingPoint:m}=Ei({image:e.image,theme:e.theme}),p=(0,fe.useCallback)(y=>{y.button!==2&&a.pointer([[~~y.atlas.x,~~y.atlas.y]])},[a]),f=(0,fe.useCallback)(y=>{y.button!==2&&(n.current?.focus(),a.pointerDown())},[a]),h=(0,fe.useCallback)(y=>{y.button!==2&&a.pointerUp()},[a]);return(0,fe.useEffect)(()=>{let y=S=>{n.current?.contains(document.activeElement)&&a.key.up(S.key)};return document.addEventListener("keyup",y),()=>{document.removeEventListener("keyup",y)}},[a]),(0,fe.useEffect)(()=>{let y=S=>{n.current?.contains(document.activeElement)&&(S.target&&["INPUT","TEXTAREA"].includes(S.target.tagName)||S.target?.isContentEditable||document.activeElement&&(document.activeElement instanceof HTMLInputElement||document.activeElement instanceof HTMLTextAreaElement||document.activeElement.isContentEditable)||a.key.down(S.key))};return document.addEventListener("keydown",y),()=>{document.removeEventListener("keydown",y)}},[a]),(0,fe.useEffect)(()=>{let y=[];return l&&y.push(`atlas-cursor-${l}`),s.actionIntentType==="cut-line"&&s.modifiers?.Shift&&y.push("atlas-cursor-cut"),(c||s.transitionIntentType==="move-shape"||s.transitionIntentType==="move-point")&&y.push("atlas-cursor-move"),m&&y.push("atlas-cursor-crosshair"),u&&y.push("atlas-cursor-copy"),d&&y.push("atlas-cursor-rotate"),s.transitionIntentType==="draw-shape"&&y.push("atlas-cursor-draw"),t?.canvas&&t.canvas.classList.add(...y),()=>{t?.canvas&&t.canvas.classList.remove(...y)}},[t?.canvas,m,c,u,s.modifiers?.Shift,s.actionIntentType,s.transitionIntentType,l,d]),(0,Ie.jsx)("world-object",{height:o.height,width:o.width,onMouseMove:p,onMouseDown:f,onMouseUp:h,onMouseLeave:a.blur,children:(0,Ie.jsx)(vn.HTMLPortal,{relative:!0,interactive:!1,children:(0,Ie.jsx)("div",{className:"absolute top-0 right-0 left-0 bottom-0",children:(0,Ie.jsxs)("svg",{ref:n,width:"100%",height:"100%",viewBox:`0 0 ${o.width} ${o.height}`,tabIndex:-1,children:[(0,Ie.jsx)("title",{children:"Annotation Editor"}),(0,Ie.jsx)("defs",{children:r}),i]})})})})}var Wi=require("react"),Ui=require("zustand");var $i=require("@atlas-viewer/atlas"),q=require("@floating-ui/react"),Fi=require("react-dom");var H=Z(require("react"),1);var Ni=Z(require("react"),1),lo=require("react"),Li=Z(require("mitt"),1),vs=require("react/jsx-runtime"),ys=(0,Li.default)(),Et=(0,lo.createContext)({emitter:ys});Et.displayName="Events";function zi(){return Ni.default.useContext(Et).emitter}var ct=require("react"),Bi=require("react/jsx-runtime"),Vt=(0,ct.createContext)("");function Oi({children:e,identifier:t}){let n=(0,ct.useMemo)(()=>t??Math.random().toString(36).substring(2,9),[t]);return(0,Bi.jsx)(Vt.Provider,{value:n,children:e})}function Sn(){return(0,ct.useContext)(Vt)}var X=require("react/jsx-runtime"),uo=H.default.createContext({});function xn(){let e=(0,H.useContext)(uo),t=Object.keys(e),n={};for(let o of t)e[o].Provider&&(n[o]={value:(0,H.useContext)(e[o]),Provider:e[o].Provider});return n}function Ss(e){let t=Object.keys(e),n=e.children;for(let o of t){if(o==="children")continue;let{value:a,Provider:r}=e[o];n=(0,X.jsx)(r,{value:a,children:n})}return n}function bn(){return{VaultContext:(0,H.useContext)(ke),ResourceContext:(0,H.useContext)(Bt),SimpleViewerReactContext:(0,H.useContext)(St),VisibleCanvasReactContext:(0,H.useContext)(Ue),AuthRContext:(0,H.useContext)(je),SearchReactContext:(0,H.useContext)(Ge),ReactEventContext:(0,H.useContext)(Et),ReactEmitterContext:(0,H.useContext)(xt),ContextBridgeReactContext:(0,H.useContext)(uo),StrategyReactContext:(0,H.useContext)(Le),AtlasStoreReactContext:(0,H.useContext)(Qe),ViewerIdentifierContext:(0,H.useContext)(Vt)}}function Cn(e){return(0,X.jsx)(We,{vault:e.bridge.VaultContext.vault||void 0,resources:e.bridge.ResourceContext,children:(0,X.jsx)(Ue.Provider,{value:e.bridge.VisibleCanvasReactContext,children:(0,X.jsx)(St.Provider,{value:e.bridge.SimpleViewerReactContext,children:(0,X.jsx)(Et.Provider,{value:e.bridge.ReactEventContext,children:(0,X.jsx)(xt.Provider,{value:e.bridge.ReactEmitterContext,children:(0,X.jsx)(Qe.Provider,{value:e.bridge.AtlasStoreReactContext,children:(0,X.jsx)(je.Provider,{value:e.bridge.AuthRContext,children:(0,X.jsx)(Ge.Provider,{value:e.bridge.SearchReactContext,children:(0,X.jsx)(Vt.Provider,{value:e.bridge.ViewerIdentifierContext,children:(0,X.jsx)(uo.Provider,{value:e.bridge.ContextBridgeReactContext,children:(0,X.jsx)(Le.Provider,{value:e.bridge.StrategyReactContext,children:e.custom?(0,X.jsx)(Ss,{...e.custom,children:e.children}):e.children})})})})})})})})})})})}var dt=require("react/jsx-runtime"),qi=10,Hi=1;function xs(e){let[t,n]=e.split("-");return[t,n]}function Di(e,t,n){return t>n?e:Math.min(Math.max(e,t),n)}function bs(e){return e.top>0||e.right>0||e.bottom>0||e.left>0}function Cs(e){return{name:"insideHighlightFallback",options:e,async fn(t){if(e.width<=Hi||e.height<=Hi)return{};let n=await(0,q.detectOverflow)(t,{altBoundary:!0});if(!bs(n))return{};let{reference:o,floating:a}=t.rects,[r,i]=xs(t.initialPlacement),s=Math.min(qi,o.width/2,o.height/2),l=o.x+(o.width-a.width)/2,u=o.y+(o.height-a.height)/2,d=t.x,c=t.y;return r==="top"||r==="bottom"?(c=r==="top"?o.y+s:o.y+o.height-a.height-s,i==="start"?d=o.x+s:i==="end"?d=o.x+o.width-a.width-s:d=l,d=Di(d,o.x+s,o.x+o.width-a.width-s)):(d=r==="left"?o.x+s:o.x+o.width-a.width-s,i==="start"?c=o.y+s:i==="end"?c=o.y+o.height-a.height-s:c=u,c=Di(c,o.y+s,o.y+o.height-a.height-s)),{x:d,y:c}}}}function Rn({annotation:e,target:t,children:n,dismissable:o,isOpen:a,onOpenChange:r,placement:i}){let s=Sn(),l=bn(),u=xn(),{refs:d,floatingStyles:c,context:m}=(0,q.useFloating)({open:a,onOpenChange:r,nodeId:e.id,placement:i||"bottom",middleware:[(0,q.offset)(qi),(0,q.flip)({mainAxis:!0,fallbackStrategy:"bestFit",altBoundary:!0}),(0,q.shift)({altBoundary:!0}),Cs(t)],whileElementsMounted:q.autoUpdate}),p=(0,q.useDismiss)(m),{getReferenceProps:f,getFloatingProps:h}=(0,q.useInteractions)([o?p:null].filter(y=>y!==null));return(0,dt.jsxs)($i.HTMLPortal,{relative:!0,target:t,interactive:!1,children:[(0,dt.jsx)("div",{ref:d.setReference,...f(),style:{position:"absolute",top:0,left:0,right:0,bottom:0,pointerEvents:"none"}}),(0,Fi.createPortal)((0,dt.jsx)(Cn,{bridge:l,custom:u,children:(0,dt.jsx)("div",{ref:d.setFloating,style:c,...h(),children:n})}),document.getElementById(`atlas-floating-ui-${s}`))]})}var Nt=require("react/jsx-runtime"),Rs=(0,Ui.create)()(e=>({isMenuOpen:!1,menuPosition:{x:0,y:0},setMenuPosition(t){e({menuPosition:t})},toggle(t){e(n=>({isMenuOpen:!n.isMenuOpen,menuPosition:t}))},open(t){e({isMenuOpen:!0,menuPosition:t})},setIsMenuOpen(t){e(typeof t=="function"?n=>({isMenuOpen:t(n.isMenuOpen)}):{isMenuOpen:t})},close(){e({isMenuOpen:!1})}}));function An(e,t,n){let{isMenuOpen:o,setIsMenuOpen:a,close:r,open:i,menuPosition:s,setMenuPosition:l,toggle:u}=Rs(),d=(0,Wi.useCallback)(p=>{n&&(p.preventDefault(),p.stopPropagation(),u(p.atlas))},[u,n]);return[(0,Nt.jsx)(Nt.Fragment,{children:n&&o&&(0,Nt.jsx)(Rn,{dismissable:!0,placement:"bottom-start",isOpen:o,onOpenChange:a,annotation:{id:e},target:{x:s.x,y:s.y,height:1,width:1},children:o&&n({canvasId:t,position:s,close:()=>a(!1)})})}),{onContextMenu:d},{open:i,close:r,toggle:u,isMenuOpen:o,setIsMenuOpen:a,menuPosition:s,setMenuPosition:l}]}var _i=require("zustand");function Yi(){let e=K();return(0,_i.useStore)(e,t=>t.tool.requestId&&t.requests[t.tool.requestId]||null)}var W=require("react/jsx-runtime");function ji({theme:e,renderContextMenu:t,children:n}){let o=K(),a=P(),r=(0,ue.useStore)(o,g=>g.polygon),i=(0,ue.useStore)(o,g=>g.polygonState.currentTool),s=(0,ue.useStore)(o,g=>g.mode),l=(0,ue.useStore)(o,g=>g.changeMode),u=(0,ue.useStore)(o,g=>g.polygonState.transitioning),{enabled:d,requestId:c}=(0,ue.useStore)(o,g=>g.tool),m=(0,Pn.useMemo)(()=>Ke(r),[r]),p=Yi(),[f,h]=An("editing-annotation",a?.id,t),y=p?.annotationPopup||n||(0,W.jsx)(As,{}),S=p?.svgTheme||e,b=()=>{l("sketch")};if(!d||!a||!c||!r)return null;let v=m&&r.id&&!u&&(i==="pointer"||i==="hand"||!r.open)?(0,W.jsx)(Rn,{annotation:r,target:m,children:y}):null,x="shape";return s==="explore"?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(x,{id:`shape-${r.id}`,points:r.points,open:r.open,onClick:b,relativeStyle:!0,target:{x:0,y:0,width:a.width,height:a.height},style:{":hover":{backgroundColor:"rgba(0,0,0,0.2)"},backgroundColor:"rgba(0,0,0,0)",borderWidth:"4px",borderColor:"rgba(255, 255, 255, .4)"},...h}),(0,W.jsx)(x,{id:`shape-${r.id}`,points:r.points,open:r.open,onClick:b,relativeStyle:!0,target:{x:0,y:0,width:a.width,height:a.height},style:{backgroundColor:"rgba(0,0,0,0)",borderWidth:"2px",borderColor:"rgba(0, 0, 0, .4)"}}),v]}):(0,W.jsxs)(W.Fragment,{children:[t?(0,W.jsx)(x,{id:`shape-${r.id}`,points:r.points,open:r.open,target:{x:0,y:0,width:a.width,height:a.height},...h}):null,(0,W.jsx)(Vi,{image:a,theme:S}),v,f]})}function As(){let e=K(),t=(0,ue.useStore)(e,i=>i.changeMode),n=(0,ue.useStore)(e,i=>i.mode),o=(0,ue.useStore)(e,i=>i.completeRequest),a=(0,ue.useStore)(e,i=>i.tool),r=()=>{(0,Pn.startTransition)(()=>{o()})};return a.enabled?(0,W.jsxs)("div",{className:"svg-tools-container animate-fadeIn",children:[n!=="sketch"&&(0,W.jsx)("button",{className:"svg-tools-button",onClick:()=>{t("sketch")},children:"Edit"}),(0,W.jsx)("button",{className:"svg-tools-button",onClick:r,children:"Save"})]}):null}var Me=require("react");var mt=require("react");var Gi=require("@iiif/helpers");function Tn(e,t){let{selector:n,source:o}=(0,Gi.expandTarget)(t);if(o.id!==e.id)return[null,o];let a={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}};return[n?n.type==="TemporalSelector"?{type:"TemporalBoxSelector",temporal:n.temporal,spatial:a.spatial}:n:null,o]}var Ki={makeChoice:()=>{}},wn={type:"unknown"},V=e=>({type:"unknown",reason:e,annotations:{pages:[]}}),Qi=(e,t)=>({type:"empty",width:e,height:t,annotations:{pages:[]},image:null,images:[]});var Lt=require("react");function Ps(e,t){let n=e?.iiif?.meta[t];return n?n.annotationPageManager:null}function Xi(e,t){return k(n=>{let o=[];if(!e)return o;let a=Object.keys(n.iiif.entities.AnnotationPage);for(let r of a)if(!t||t.indexOf(r)!==-1){let i=Ps(n,r);i&&i.views&&i.views[e]&&o.push(r)}return o},[e,t])}function Zi({canvas:e,manifest:t,all:n,canvases:o}){let a=[];if(t)for(let r of t.annotations)a.indexOf(r.id)===-1&&a.push(r.id);if(n){if(o&&o.length)for(let r of o)for(let i of r.annotations)a.indexOf(i.id)===-1&&a.push(i.id)}else if(e)for(let r of e.annotations)a.indexOf(r.id)===-1&&a.push(r.id);return a}function Ts(e,t){let n=e?.iiif?.meta[t];return n?n.annotationPageManager:null}function Ji(e,t={}){let n=M(),o=F(),a=P(),r=$t(),i=(0,Lt.useMemo)(()=>Zi({all:t.all,manifest:o,canvas:a,canvases:r}),[t.all,a,r,o]),s=Xi(e,t.all?void 0:i),l=(0,Lt.useCallback)(d=>{e&&n.setMetaValue([d,"annotationPageManager","views"],c=>c&&!c[e]?c:{...c||{},[e]:!1})},[e,n]),u=(0,Lt.useCallback)((d,c={})=>{if(!e)return;let m=n.getState(),p=[];if(c?.deselectOthers){let f=Object.keys(m.iiif.entities.AnnotationPage);for(let h of f){let y=Ts(m,h);y&&y.views&&y.views[e]&&p.push(h)}}for(let f of p)l(f);n.setMetaValue([d,"annotationPageManager","views"],f=>f&&f[e]?f:{...f||{},[e]:!0})},[e,l,n]);return{availablePageIds:i,enabledPageIds:s,setPageEnabled:u,setPageDisabled:l}}function ea(e,t){return k((n,o)=>o.get(e.map(a=>({id:a,type:t}))),[e,t])}var ta=require("react");function na(){let e=li(),t=ci(),n=ui();return[(0,ta.useCallback)((a,{height:r,width:i})=>{if(!a||a.width&&a.height&&a.tiles?.length)return a;let s=e(a,{height:r,width:i});return s||t(a,{height:r,width:i}),s||void 0},[t,e]),n]}var De=require("react");function oa(e={}){let t=_t(),n=P(e.canvasId?{id:e.canvasId}:void 0);return k((o,a)=>{if(!n)return[];if(t&&e.enableSingleAnnotation)return[t];let r=a.get(n.items),i=[];for(let s of r)i.push(...a.get(s.items));return i},[n])}var ra=require("@iiif/helpers/painting-annotations");function ia(e,t=[]){let n=M(),o=(0,De.useMemo)(()=>(0,ra.createPaintingAnnotationsHelper)(n),[]),a=oa({enableSingleAnnotation:e?.enableSingleAnnotation}),[r,i]=(0,De.useState)(e?.defaultChoices||[]),s=(0,De.useMemo)(()=>o.getPaintables(a,r),[n,a,r,...t]),u={makeChoice:(0,De.useCallback)((d,{deselectOthers:c=!0,deselect:m=!1}={})=>{s.choice&&i(p=>{if(m){let h=p.filter(y=>y!==d);if(h.length===0){let y=s.items[0].resource.id;return y?[y]:[]}return h}if(c)return[d];let f=[...p];if(f.length===0&&s.items.length){let h=s.items[0].resource.id;h&&f.push(h)}return p.indexOf(d)!==-1?p:[...p,d]})},[s.choice])};return[s,u]}var ws=["model/gltf-binary"];function aa(e,t){let n=t.items[0],o=n.resource;return o.format?ws.indexOf(o.format)===-1?V(`3D format: ${o.format} is unsupported`):{type:"3d-model",model:o,annotationId:n.annotationId,annotation:n.annotation}:V("Unknown format")}function In(e,t){let n=t.items,o=n[0];if(n.length===0||!o)return V("No audio");if(!e.duration)return V("No duration on canvas");if(n.length>1)return V("Only one audio source supported");let a=o.resource;return a?("format"in a||(a.format="audio/mpeg"),{type:"media",media:{annotationId:o.annotationId,annotation:o.annotation,duration:e.duration,url:a.id,type:"Sound",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:a.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},annotations:{pages:[]}}):V("Unknown audio")}var co=require("@iiif/helpers/annotation-targets"),la=require("@iiif/parser/image-3");function be(e){return e.replace(/^http:/,"https:")}function sa(e){if(!(e?.type!=="ImageApiSelector"||typeof e.rotation>"u"))return mo(e.rotation)}function mo(e){if(e===null||typeof e>"u"||e==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}function Is(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 Mn(e,t,n){let o=[],a=[];for(let r of t.items){let i=r.resource&&r.resource.type==="SpecificResource"?r.resource.source:r.resource;if(!i.id)return V("No resource Identifier");let l=(r.resource.type==="SpecificResource"?sa(r.resource.selector):void 0)??sa(r.selector)??mo(r.rotation)??mo(r.selector?.rotation),u=typeof l<"u",d;if(i.service){let v=(0,la.getImageServices)(i);v[0]&&(d=n(v[0],u?{width:Number(i.width||e.width),height:Number(i.height||e.height)}:e))}let c={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}},[m,p]=Tn(e,r.target),f=e.id?.split("?")[0]||"";if(!(be(p.id||"")===be(e.id)||be(decodeURIComponent(p.id||""))===be(e.id||"")||be(p.id||"")===be(f)||be(decodeURIComponent(p.id||""))===be(f)))continue;let h=r.resource.width&&r.resource.height?{type:"BoxSelector",spatial:{x:0,y:0,width:r.resource.width,height:r.resource.height}}:void 0,y=r.resource.type==="SpecificResource"?(0,co.expandTarget)(r.resource):null;if(r.selector){let v=(0,co.expandTarget)({type:"SpecificResource",source:r.resource,selector:r.selector});v&&(y=v)}let S=y&&y.selector&&(y.selector.type==="BoxSelector"||y.selector.type==="TemporalBoxSelector")?{type:"BoxSelector",spatial:{x:y.selector.spatial.x,y:y.selector.spatial.y,width:y.selector.spatial.width,height:y.selector.spatial.height},...typeof y.selector.rotation<"u"?{rotation:y.selector.rotation}:{},...y.selector.rotationOrigin?{rotationOrigin:y.selector.rotationOrigin}:{},...y.selector.translate?{translate:y.selector.translate}:{},...y.selector.transform?{transform:y.selector.transform}:{},...y.selector.boxStyle?{boxStyle:y.selector.boxStyle}:{}}:void 0;d&&!d.id&&(d.id=d["@id"]);let b={id:i.id,type:"Image",annotationId:r.annotationId,annotation:r.annotation,width:Number(u||m||S?i.width:e.width),height:Number(u||m||S?i.height:e.height),...typeof l<"u"?{rotation:l}:{},...Is(r),service:d,sizes:d&&d.sizes?d.sizes:i.width&&i.height?[{width:i.width,height:i.height}]:[],target:m&&m.type!=="PointSelector"?m:c,selector:S||{type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}},annotationPages:r.resource.annotations||[]};o.push(b)}return{type:"images",image:o[0],images:o,choice:t.choice}}function ua(e,t={},n){let o=e.language||n||"none";switch(e.type){case"TextualBody":{typeof e.value<"u"&&(t[o]=[e.value]);break}case"List":case"Composite":case"Choice":e.items&&e.items.forEach(a=>ua(a,t,o))}return t}function kn(e,t){let n=[];return t.items.forEach(o=>{if(o.resource){let[a]=Tn(e,o.target);n.push({type:"Text",annotationId:o.annotationId,annotation:o.annotation,text:ua(o.resource),target:a})}}),{type:"textual-content",items:n}}var En=require("@iiif/helpers");var Ms=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function Vn(e,t,n,o=!1){let a=t.items.filter(h=>h.type==="video"),r=a[0],i=!1,s=!1;if(e.duration||(s=!0),a.length>1||!r)return V("Only one video source supported");let l=a[0]?.resource,u=!!(l.service||[]).find(h=>(h.profile||"").includes("youtube.com"));if(!u&&s)return V("Video does not have duration");if(!l)return V("Unknown video");if((!l.format||l.format==="text/html")&&!u)return V("Video does not have format");let d=[],c=n.get(e.annotations||[]);for(let h of c){let y=n.get(h.items||[]);for(let S of y)if((S.motivation?Array.isArray(S.motivation||"")?S.motivation:[S.motivation]:[]).includes("supplementing")){let v=n.get(S.body||[]);for(let x of v){let g=x;if(g.type==="Choice")for(let C of g.items){let A=n.get(C);A.format==="text/vtt"&&d.push({id:A.id,type:"Text",format:"text/vtt",label:A.label,language:A.language})}else g.format==="text/vtt"&&d.push({id:g.id,type:"Text",format:"text/vtt",label:g.label,language:g.language})}}}let m={annotationId:r.annotationId,annotation:r.annotation,duration:e.duration,url:l.id,type:"Video",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:l.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},p=(0,En.expandTarget)(r.target);p.selector&&p.selector.type==="TemporalBoxSelector"&&(m.target=p.selector);let{selector:f}=(0,En.parseSelector)(r.selector);if(f===null){let h=m.target.temporal.startTime,S=(m.target.temporal.endTime||e.duration)-h;m.selector={type:"TemporalSelector",temporal:{startTime:0,endTime:S}}}else f.type==="TemporalSelector"&&(m.selector=f);if(o&&!m.target.spatial&&(i=!0,m.target={type:"TemporalBoxSelector",temporal:m.target.temporal,spatial:{x:e.width/2,y:e.height/2,width:e.width/2,height:e.height/2}}),u){m.type="VideoYouTube";let h=l.id.match(Ms);if(!h[1])return V("Video is not known youtube video");m.youTubeId=h[1]}return{type:"media",media:m,annotations:{pages:[]},noSpatial:i,captions:d}}var ca=require("@iiif/helpers");function da(e,t,n,o){let a={type:"complex-timeline",items:[],keyframes:[],highlights:[],duration:e.duration||0},r={type:"complex-choice",items:[]},i=o.get(e.annotations);function s(d){d.choice&&(d.choice.type==="complex-choice"?r.items.push(...d.choice.items):r.items.push(d.choice))}for(let d of t.items){if(d.type==="image"){let c=Mn(e,{choice:null,allChoices:null,types:["image"],items:[d]},n);if(c.type==="images"){if(!c.image)continue;s(c),a.items.push(c.image);let m={id:c.image.annotationId,type:"enter",resourceType:"image",time:c.image.target?.temporal?.startTime||0};a.keyframes.push(m);let p={id:c.image.annotationId,type:"exit",resourceType:"image",time:c.image.target?.temporal?.endTime||e.duration||0};a.keyframes.push(p)}}if(d.type==="textualbody"){let c=kn(e,{choice:null,allChoices:null,types:["textualbody"],items:[d]});if(c.type==="textual-content"){s(c);let m=c.items[0];a.items.push(m);let p=m.target,f={id:m.annotationId,type:"enter",resourceType:"text",time:p.temporal?.startTime||0};a.keyframes.push(f);let h={id:m.annotationId,type:"exit",resourceType:"text",time:p.temporal?.endTime||e.duration||0};a.keyframes.push(h)}}if(d.type==="video"){let c=Vn(e,{choice:null,allChoices:null,types:["video"],items:[d]},o,!0);if(c.type==="media"){s(c);let m=c.media;a.items.push(m);let p={id:m.annotationId,type:"enter",resourceType:"video",time:m.target?.temporal?.startTime||0};a.keyframes.push(p);let f={id:m.annotationId,type:"exit",resourceType:"video",time:m.target?.temporal?.endTime||e.duration||0};a.keyframes.push(f)}}if(d.type==="audio"||d.type==="sound"){let c=In(e,{choice:null,allChoices:null,types:["audio"],items:[d]});if(c.type==="media"){s(c);let m=c.media;a.items.push(m);let p={id:m.annotationId,type:"enter",resourceType:"audio",time:m.target?.temporal?.startTime||0};a.keyframes.push(p);let f={id:m.annotationId,type:"exit",resourceType:"audio",time:m.target?.temporal?.endTime||e.duration||0};a.keyframes.push(f)}}}for(let d of i)for(let c of d.items){let m=o.get(c),p=(0,ca.expandTarget)(m.target,{typeMap:o.getState?.().iiif.mapping});if(p.selector?.temporal){let f={id:m.id,type:"enter",resourceType:"highlight",time:p.selector.temporal.startTime||0};a.keyframes.push(f);let h={id:m.id,type:"exit",resourceType:"highlight",time:p.selector.temporal.endTime||e.duration||0};a.keyframes.push(h)}a.highlights.push({annotation:m,target:p})}a.keyframes.sort((d,c)=>d.time-c.time);let l=[],u=[];for(let d of a.keyframes){if(d.resourceType==="image"||d.resourceType==="text"||d.resourceType==="highlight"){u.push(d);continue}if(d.type==="enter"){l.length===0&&(d.isPrime=!0),l.push(d),u.push(d);continue}if(d.type==="exit"&&(u.push(d),l=l.filter(c=>c.id!==d.id),l.length!==0)){let c=l[0],m={id:c.id,type:"change",isPrime:!0,resourceType:c.resourceType,time:d.time};u.push(m)}}return a.keyframes=u,r.items.length&&(a.choice=r),a}var Nn={},po={get(e){return e},setMetaValue([e,t,n],o){let a=po.getResourceMeta(e,t),r=a?a[n]:void 0,i=typeof o=="function"?o(r):o;Nn[e]={...Nn[e]||{},[t]:{...(Nn[e]||{})[t]||{},[n]:i}}},getResourceMeta:(e,t)=>{let n=Nn[e];if(n)return t?n[t]:n},async load(e){let t=typeof e=="string"?e:e.id;return fetch(t).then(n=>n.json())},requestStatus(e){}};function ma({canvas:e,paintables:t,supports:n,loadImageService:o,vault:a=po}){if(!e)return wn;if(t.types.length===0)return n.indexOf("empty")!==-1?Qi(e.width,e.height):wn;if(t.types.length!==1)if(t.types.length===2&&t.types.indexOf("text")!==-1)t.types=t.types.filter(i=>i!=="text");else return n.indexOf("complex-timeline")===-1?V("Complex timeline not supported"):da(e,t,o,a);let r=t.types[0];return r==="image"?n.indexOf("images")===-1?V("Image not supported"):Mn(e,t,o):r==="Model"||r==="model"?n.indexOf("3d-model")===-1?V("3D not supported"):aa(e,t):r==="textualbody"?n.indexOf("textual-content")===-1?V("Textual content not supported"):kn(e,t):r==="sound"||r==="audio"?n.indexOf("media")===-1?V("Media not supported"):In(e,t):r==="video"?n.indexOf("media")===-1?V("Media not supported"):Vn(e,t,a):wn}function pa(e){let t=F(),n=P(),o=M(),a=zi(),r=e?.emitter||a,[i,s]=na(),{enabledPageIds:l}=Ji(e?.annotationPageManagerId||t?.id||n?.id,{all:!1}),u=ea(l,"AnnotationPage"),d=e?.strategies||["empty","images","media","textual-content","complex-timeline"],[c,m]=ia(e,[s]);(0,mt.useEffect)(()=>{let f=h=>{m.makeChoice(h.choiceId,{deselectOthers:h.deselectOthers,deselect:h.deselect})};return r.on("make-choice",f),()=>{r.off("make-choice",f)}},[]);let p=(0,mt.useMemo)(()=>ma({canvas:n,paintables:c,supports:d,loadImageService:i,vault:o}),[n,c,o,m.makeChoice]);return(0,mt.useEffect)(()=>{let f=c.allChoices,h={canvasId:n?.id,manifestId:t?.id};f&&r.emit("choice-change",{choice:f,partOf:h})},[n?.id,c.allChoices]),(0,mt.useMemo)(()=>p.type==="unknown"?[p,Ki]:[{...p,annotations:{pages:u}},m],[p,u])}var fa=require("@iiif/helpers");var fo=require("react/jsx-runtime");function ga({strategies:e,registerActions:t,defaultChoices:n,onChoiceChange:o,mediaControlsDeps:a,renderMediaControls:r,renderViewerControls:i,viewControlsDeps:s,renderComplexTimelineControls:l,complexTimelineControlsDeps:u,throwOnUnknown:d,children:c}){let m=P(),p=M(),f=(0,Me.useMemo)(()=>(0,fa.createStylesHelper)(p),[p]),[h,y]=pa({strategies:e||["images"],defaultChoices:n?.map(({id:x})=>x)}),S="choice"in h?h.choice:void 0;if((0,Me.useEffect)(()=>{t&&t(y)},[h.annotations]),(0,Me.useEffect)(()=>{o&&o(S)},[S]),(0,Me.useEffect)(()=>{if(n)for(let x of n)typeof x.opacity<"u"&&f.applyStyles({id:x.id},"atlas",{opacity:x.opacity})},[n]),h.type==="unknown"&&d)throw new Error(h.reason||"Unknown strategy");let b=(0,Me.useMemo)(()=>({renderMediaControls:r,mediaControlsDeps:a||[],renderViewerControls:i,viewControlsDeps:s||[],renderComplexTimelineControls:l,complexTimelineControlsDeps:u||[]}),[a,r,i,s,l,u]),v=(0,Me.useMemo)(()=>({strategy:h,actions:y,choices:"choice"in h?h.choice:[]}),[h,m]);return(0,fo.jsx)(nn.Provider,{value:b,children:(0,fo.jsx)(Le.Provider,{value:v,children:c})})}var zt=require("react"),ho=require("zustand");var pt=require("react");var go=(0,pt.createContext)(()=>{});function ha(e){let t=P(),n=(0,pt.useContext)(go);(0,pt.useEffect)(()=>t&&t.id?(n(t.id,e),()=>n(t.id,-1)):()=>{},[t,e])}var va=require("react/jsx-runtime");function ya({x:e=0,y:t=0,keepCanvasScale:n=!0,renderContextMenu:o,children:a}){let{strategy:r}=L(),i=P(),s=K(),l=Yt(i,["deep-zoom"]),u=(0,ho.useStore)(s,h=>h.setCanvasRelativePosition),d=(0,ho.useStore)(s,h=>h.clearCanvasRelativePosition),[c,m]=An(`context-menu/${i?.id}`,i?.id,o),p=(0,zt.useMemo)(()=>n?1:Math.max(1,...r.type==="images"?r.images.map(h=>(h.width||0)/h.target?.spatial.width):[]),[n,r]);(0,zt.useEffect)(()=>{if(i)return u(i.id,{x:e,y:t,width:i.width,height:i.height}),()=>{d(i.id)}},[e,t,i,d,u]),(0,zt.useEffect)(()=>{i&&s.getState().reset()},[s,i]),ha(p);let f=r.type==="images"?r.images.length:0;return i?(0,va.jsxs)("world-object",{height:i.height,width:i.width,x:e,y:t,...m,...l,children:[c,a]},`${i.id}/${r.type}/${f}`):null}var j=require("react/jsx-runtime");function ze({x:e,y:t,onChoiceChange:n,registerActions:o,defaultChoices:a,isStatic:r,renderViewerControls:i,renderMediaControls:s,renderComplexTimelineControls:l,complexTimelineControlsDeps:u,viewControlsDeps:d,mediaControlsDeps:c,strategies:m,throwOnUnknown:p,rotation:f,backgroundStyle:h,alwaysShowBackground:y,keepCanvasScale:S=!1,enableSizes:b=!1,enableYouTube:v=!0,onClickPaintingAnnotation:x,components:g={},children:C,annotationPopup:A,svgTheme:T,renderContextMenu:O,renderAnnotationContextMenu:ce}){return(0,j.jsxs)(ga,{throwOnUnknown:p,onChoiceChange:n,registerActions:o,strategies:m,defaultChoices:a,mediaControlsDeps:c,renderMediaControls:s,renderViewerControls:i,renderComplexTimelineControls:l,complexTimelineControlsDeps:u,viewControlsDeps:d,children:[(0,j.jsxs)(ya,{keepCanvasScale:S,x:e,y:t,renderContextMenu:O,children:[(0,j.jsx)(bi,{alwaysShowBackground:y,backgroundStyle:h}),(0,j.jsx)(vi,{}),(0,j.jsx)(Ai,{}),(0,j.jsx)(Ri,{isStatic:r,enableSizes:b,onClickPaintingAnnotation:x,rotation:f}),(0,j.jsx)(Wr,{}),(0,j.jsx)(Vr,{}),(0,j.jsx)(Kr,{as:g.Audio}),(0,j.jsx)(Pi,{as:g.Video}),v?(0,j.jsx)(Ii,{}):null,(0,j.jsx)(ji,{theme:T,renderContextMenu:ce,children:A}),C]}),(0,j.jsx)(Lr,{})]})}var yo=require("react/jsx-runtime");function Sa(e){let t=P();return!t||!t.placeholderCanvas?null:(0,yo.jsx)(ge,{canvas:t.placeholderCanvas.id,children:(0,yo.jsx)(ze,{renderViewerControls:e.renderViewerControls})})}var Ca=require("@atlas-viewer/atlas"),U=Z(require("react"),1),Ra=require("react-error-boundary"),vo=require("zustand");var Ln=require("react");function xa(e,t=2e3){let{currentSequenceIndex:n,sequence:o,items:a}=Ut(),r=P(),i=(0,Ln.useMemo)(()=>{let l=o[n]||[];return l.length===0&&r?[{id:r.id,type:"Canvas"}]:l.map(u=>a[u])},[o,n,r,a]),s=K();(0,Ln.useEffect)(()=>{let u=setInterval(()=>{if(e&&t!==-1){let d={x:e.x,y:e.y,width:e.width,height:e.height},c=s.getState().canvasRelativePositions,m={};for(let p of i){let f=c[p.id];if(f){let h=f.x,y=f.y,S=f.width,b=f.height,v={x:Math.max(h,d.x),y:Math.max(y,d.y),width:Math.min(h+S,d.x+d.width)-Math.max(h,d.x),height:Math.min(y+b,d.y+d.height)-Math.max(y,d.y)};v.width<=0||v.height<=0||(m[p.id]={x:v.x-f.x,y:v.y-f.y,width:v.width,height:v.height}),s.setState({canvasViewports:m})}}}},t);return()=>{clearTimeout(u)}},[i,e,s,t])}var ft=require("react/jsx-runtime");function ba({width:e,style:t,height:n,error:o,resetErrorBoundary:a}){return(0,ft.jsxs)("div",{style:{width:e,height:n,minHeight:500,...t||{},background:"#f9f9f9"},children:[(0,ft.jsx)("h3",{children:"Error occurred"}),(0,ft.jsx)("p",{children:o.message}),(0,ft.jsx)("button",{type:"button",onClick:a,children:"Reset"})]})}var E=require("react/jsx-runtime");function Aa(e){let t=K(),n=(0,U.useMemo)(()=>e.name||Math.random().toString(36).substring(2,9),[e.name]);return(0,E.jsx)(Oi,{identifier:n,children:(0,E.jsx)(bt,{name:e.name,existing:t,children:(0,E.jsx)(ks,{...e})})})}function ks({name:e,children:t,errorFallback:n,outerContainerProps:o={},worldScale:a,updateViewportTimeout:r,...i}){let s=K(),l=Sn(),u=(0,vo.useStore)(s,R=>R.mode),d=(0,vo.useStore)(s,R=>R.setAtlasRuntime),[c,m]=(0,U.useState)(),p=xn(),f=bn(),h=n||ba,[y,S]=(0,U.useState)({}),b=Object.entries(y),[v,x]=(0,U.useState)({}),g=Object.entries(v),[C,A]=(0,U.useState)({}),{worldScale:T,runtimeOptions:O}=(0,U.useMemo)(()=>{if(Object.values(C).length===0)return{worldScale:1,runtimeOptions:i.runtimeOptions||{maxOverZoom:1}};let w=Math.max(...Object.values(C));return{worldScale:w,runtimeOptions:{maxOverZoom:w||1,...i.runtimeOptions||{}}}},[C,i.runtimeOptions]);xa(c?.runtime,r);let ce=(0,U.useCallback)((R,w)=>{A(D=>{if(w===-1){let{[R]:Fe,...ne}=D;return ne}return{...D,[R]:w}})},[]),de=(0,U.useCallback)((R,w,D)=>{S(({[R]:Fe,...ne})=>w?{...ne,[R]:{element:w,props:D}}:ne)},[]),te=(0,U.useCallback)((R,w,D)=>{x(({[R]:Fe,...ne})=>w?{...ne,[R]:{element:w,props:D}}:ne)},[]),me=(0,U.useCallback)(R=>{m(R),d(R.runtime),i.onCreated&&i.onCreated(R)},[i.onCreated,d]);return(0,E.jsxs)(Ra.ErrorBoundary,{resetKeys:[],fallbackRender:R=>(0,E.jsx)(h,{...i,...R}),children:[(0,E.jsx)(Ca.AtlasAuto,{...i,mode:u,containerProps:{style:{position:"relative"},...i.containerProps||{}},htmlChildren:(0,E.jsx)(E.Fragment,{children:b.map(([R,{element:w,props:D}])=>(0,E.jsx)(U.default.Fragment,{children:(0,E.jsx)(w,{...D||{}})},R))}),onCreated:me,runtimeOptions:O,children:(0,E.jsx)(bt,{name:e,existing:s,children:(0,E.jsx)(He.Provider,{value:c,children:(0,E.jsx)(go.Provider,{value:ce,children:(0,E.jsx)(Qn.Provider,{value:de,children:(0,E.jsx)(Xn.Provider,{value:te,children:(0,E.jsx)(Cn,{bridge:f,custom:p,children:(0,E.jsx)(Fr,{children:t})})})})})})})}),(0,E.jsx)("div",{children:g.map(([R,{element:w,props:D}])=>(0,E.jsx)(U.default.Fragment,{children:(0,E.jsx)(w,{...D||{}})},R))}),(0,E.jsx)("div",{id:`atlas-floating-ui-${l}`,className:"atlas-floating-ui",style:{position:"relative",zIndex:999999}})]})}var _=require("react/jsx-runtime"),Es=(0,$e.forwardRef)(function(t,n){let o=F(),a=$t(),r=Ut(),{ViewerControls:i,MediaControls:s,ComplexTimelineControls:l}=t.components||{};if((0,$e.useImperativeHandle)(n,()=>r,[r]),!o)return(0,_.jsx)("div",{});let u=0,d=o.viewingDirection==="top-to-bottom",c=o.viewingDirection==="bottom-to-top",m=o.viewingDirection==="left-to-right",p=o.viewingDirection==="right-to-left",h=o.behavior.includes("continuous")?0:t.spacing||0,y=c||p,S=(0,$e.useMemo)(()=>y?[...a].reverse():a,[a,y]);return(0,_.jsxs)(_.Fragment,{children:[t.header,(0,_.jsx)($.Viewer,{height:t.height,mode:t.mode,renderPreset:t.renderPreset,runtimeOptions:t.runtimeOptions,updateViewportTimeout:t.updateViewportTimeout,homePaddingPx:t.padding,children:S.map((b,v)=>{let x=0,g=0;return!d&&!c?(x=u,u+=b.width+h):(g=u,u+=b.height+h),(0,_.jsx)(ge,{canvas:b.id,children:(0,_.jsx)($.RenderCanvas,{strategies:["3d-model","media","images","empty","textual-content","complex-timeline"],renderViewerControls:v===0&&i?()=>(0,_.jsx)(i,{}):void 0,renderMediaControls:v===0&&s?()=>(0,_.jsx)(s,{}):void 0,annotationPopup:t.annotationPopup,renderContextMenu:t.renderContextMenu,keepCanvasScale:t.keepCanvasScale,renderComplexTimelineControls:v===0&&l?()=>(0,_.jsx)(l,{}):void 0,renderAnnotationContextMenu:t.renderAnnotationContextMenu,x,y:g,svgTheme:t.svgTheme,rotation:t.rotation,...t.canvasProps||{},children:t.annotations},b.id)},b.id)})},t.reuseAtlas?"":r.currentSequenceIndex),t.children]})}),$=(0,$e.forwardRef)(function({children:t,height:n,annotations:o,canvasProps:a,spacing:r,header:i,components:s,mode:l,reuseAtlas:u,renderPreset:d,runtimeOptions:c,annotationPopup:m,name:p,svgTheme:f,updateViewportTimeout:h,renderContextMenu:y,keepCanvasScale:S,renderAnnotationContextMenu:b,padding:v,rotation:x,...g},C){let A=_e();return(0,_.jsx)(bt,{name:p,children:(0,_.jsx)(We,{vault:A,children:(0,_.jsx)(er,{...g,children:(0,_.jsx)(Es,{ref:C,height:n,components:s,spacing:r,canvasProps:a,annotations:o,header:i,mode:l,reuseAtlas:u,renderPreset:d,runtimeOptions:c,annotationPopup:m,svgTheme:f,updateViewportTimeout:h,renderContextMenu:y,keepCanvasScale:S,renderAnnotationContextMenu:b,padding:v,rotation:x,children:t})})})})});$.RenderImage=st;$.RenderCanvas=ze;$.RenderAnnotationPage=Ve;$.RenderAnnotation=Je;$.Viewer=Aa;$.CanvasBackground=dn;$.Audio=Xt;$.Video=fn;$.Model=en;$.AudioHTML=Zn;$.VideoHTML=so;$.ModelHTML=Jn;$.PlaceholderCanvas=Sa;$.getAtlasStoreByName=cr;
|
package/dist/canvas-panel.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ac as a}from"./chunk-
|
|
1
|
+
import{ac as a}from"./chunk-OGCPXOIP.js";import"./chunk-P7XHGETS.js";export{a as CanvasPanel};
|