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