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