react-iiif-vault 2.0.14 → 2.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- "use strict";var Aa=Object.create;var Et=Object.defineProperty;var Pa=Object.getOwnPropertyDescriptor;var Ta=Object.getOwnPropertyNames;var wa=Object.getPrototypeOf,Ia=Object.prototype.hasOwnProperty;var Ma=(e,t)=>{for(var n in t)Et(e,n,{get:t[n],enumerable:!0})},vo=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Ta(t))!Ia.call(e,a)&&a!==n&&Et(e,a,{get:()=>t[a],enumerable:!(o=Pa(t,a))||o.enumerable});return e};var J=(e,t,n)=>(n=e!=null?Aa(wa(e)):{},vo(t||!e||!e.__esModule?Et(n,"default",{value:e,enumerable:!0}):n,e)),ka=e=>vo(Et({},"__esModule",{value:!0}),e);var Es={};Ma(Es,{CanvasPanel:()=>F});module.exports=ka(Es);var Fe=require("react");var qe=J(require("react"),1),So=require("react/jsx-runtime"),Ea={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},Vt=qe.default.createContext(Ea),re=()=>(0,qe.useContext)(Vt);function xe({value:e,children:t}){let n=re(),o=(0,qe.useMemo)(()=>({...n,...e}),[e,n]);return(0,So.jsx)(Vt.Provider,{value:o,children:t})}var xo=require("react/jsx-runtime");function pe({canvas:e,children:t}){return(0,xo.jsx)(xe,{value:{canvas:e},children:t})}var Nt=J(require("react"),1),mt=require("@iiif/helpers/vault");var Vn=require("react/jsx-runtime"),ke=Nt.default.createContext({vault:null,setVaultInstance:e=>{}});function $e({vault:e,vaultOptions:t,useGlobal:n,resources:o,children:a}){let[i,r]=(0,Nt.useState)(()=>e||(n?(0,mt.globalVault)(t):t?new mt.Vault(t):new mt.Vault));return(0,Vn.jsx)(ke.Provider,{value:{vault:i,setVaultInstance:r},children:(0,Vn.jsx)(xe,{value:o||{},children:a})})}var Co=require("react"),Ro=J(require("react"),1);var bo=require("react"),k=()=>{let{vault:e}=(0,bo.useContext)(ke);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};var Lt=require("react");function E(e,t=[]){let n=k(),[o,a]=(0,Lt.useState)(()=>e(n.getState(),n));return(0,Lt.useEffect)(()=>n.subscribe(i=>e(i,n),i=>{a(i)},!1),t),o}var We=Ro.default.createContext([]);function zt(){let e=(0,Co.useContext)(We);return E(t=>e.map(n=>t.iiif.entities.Canvas[n]).filter(Boolean),[e])}var Ao=require("@iiif/helpers/vault"),Po=require("react");function Ue(e){let t=(0,Po.useContext)(ke);return e||(t&&t.vault?t.vault:(0,Ao.globalVault)())}var To=require("react");function q(e={},t=[]){let{id:n,selector:o}=e,a=re(),i=k(),r=n||a.manifest,s=E(l=>r?l.iiif.entities.Manifest[r]:void 0,[r]);return(0,To.useMemo)(()=>{if(s)return o?o(s):s},[s,o,...t])}var Zo=require("react"),Dt=require("react");var be=require("react");function wo(e,{noCache:t=!1}={}){let n=typeof e=="string"?e:e.id,o=Ue(),[a,i]=(0,be.useState)(n),[r,s]=(0,be.useState)(void 0),l=(0,be.useMemo)(()=>o.get(n,{skipSelfReturn:!0})||void 0,[n,o]),[u,m]=(0,be.useState)(l);return(0,be.useEffect)(()=>{(async()=>{try{let c=l&&!t?l:await o.load(n),d=c?c.id||c["@id"]:null;c&&a!==d&&i(d),m(c)}catch(c){s(c)}})()},[n,t]),{isLoaded:!!u,id:a,requestId:n,error:r,resource:u,cached:!!(u&&u===l)}}function Io(e,t){let{id:n,isLoaded:o,error:a,resource:i,requestId:r,cached:s}=wo(e,t);return{id:n,isLoaded:o,error:a,manifest:i,requestId:r,cached:s}}var ko=require("react/jsx-runtime");function Mo({manifest:e,children:t}){return(0,ko.jsx)(xe,{value:{manifest:e},children:t})}var Vo=require("react/jsx-runtime");function Eo({range:e,children:t}){return(0,Vo.jsx)(xe,{value:{range:e},children:t})}function Nn(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(...Nn(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 No(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:Nn(e,t);if(r)return[l,[l.map((f,h)=>h)]];if(s||!i||n)return[l,l.map((f,h)=>[h])];let u=[],m=[],c=()=>{m.length&&(u.push([...m]),m=[])},d=0,p=!1;for(let f=0;f<l.length;f++){let h=e.get(l[f]);if(h.behavior.includes("non-paged")){f===d&&d++,o||(c(),u.push([f]),c());continue}if(f===d||h.behavior.includes("facing-pages")){m.length&&(p=!0),c(),u.push([f]),c();continue}if(m.push(f),p){c(),p=!1;continue}m.length>1&&c()}return m.length&&c(),[l,u]}var ie=require("react");var Lo=require("react");function zo(e={},t=[]){let{id:n,selector:o}=e,a=re(),i=n||a.range,r=E(s=>i?s.iiif.entities.Range[i]:void 0,[i]);return(0,Lo.useMemo)(()=>{if(r)return o?o(r):r},[r,o,...t])}function Oo({startCanvas:e,disablePaging:t}){let n=k(),o=q(),a=zo(),[i,r]=(0,ie.useState)(void 0),s=a||o;if(!s)throw new Error("Nothing selected");let[l,u]=(0,ie.useMemo)(()=>No(n,s,{disablePaging:t}),[n,s,t]),m=(0,ie.useRef)(u);if(m.current!==u){let v=m.current[i][0],S=u.findIndex(g=>g.includes(v));m.current=u,r(S)}let c=(0,ie.useCallback)(h=>{let v=u.findIndex(S=>S.includes(h));r(v===-1?0:v)},[l,u]),d=(0,ie.useCallback)(h=>{let v=l.findIndex(S=>S.id===h);v!==-1?c(v):r(0)},[l,u]),p=(0,ie.useCallback)(()=>{r(h=>h>=u.length-1?h:h+1)},[u]),f=(0,ie.useCallback)(()=>{r(h=>h<=0?0:h-1)},[u]);return typeof i>"u"&&(e?d(e):r(0)),{visibleItems:u[i]?.map(h=>l[h].id)||[],cursor:i,items:l,sequence:u,hasPrevious:i>0,hasNext:i<u.length-1,setSequenceIndex:r,setCanvasIndex:c,setCanvasId:d,next:p,previous:f}}var se=require("react"),Ot=require("zustand");var zn=require("zustand/vanilla");function ae(e,t,n){let o=t.findIndex(r=>r.service.id===e);if(o===-1)return t;let a=[...t],i=n(a[o]);return i===a[o]?t:(a[o]=i,a)}var Do=()=>(0,zn.createStore)((e,t)=>({currentAuth:-1,authItems:[],login:()=>{let n=t().authItems[t().currentAuth];if(!n||n.isPending||n.isLoggedIn)return;if(n.type!=="active")throw new Error("Cannot login to non-active service");let o=n.service.service.find(a=>a.type==="AuthAccessTokenService2");if(!o)throw new Error("Token service not found");e(()=>({authItems:ae(n.id,t().authItems,a=>({...a,isPending:!0}))})),Bo(n.service).then(()=>{Ln(o).then(a=>{let i=a.expiresIn,r=Date.now()+i*1e3;e(()=>({authItems:ae(n.id,t().authItems,s=>({...s,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:r}}))}))}).catch(a=>{e(()=>({authItems:ae(n.id,t().authItems,i=>({...i,isLoggedIn:!1,isPending:!1,error:a.message}))}))})})},logout:()=>{let n=t().authItems[t().currentAuth];if(!n||n.isPending||!n.isLoggedIn)return;if(n.type!=="active")throw new Error("Cannot logout of non-active service");let o=n.service.service.find(r=>r.type==="AuthLogoutService2");if(!o)return;let a=`${o.id}?origin=${qo()}`,i=window.open(a);e(()=>({authItems:ae(n.id,t().authItems,r=>({...r,isLoggedIn:!1,session:null,isPending:!1}))}))},nextAuth:()=>{let n=t().authItems.length,o=t().currentAuth+1;o>=n||e(()=>({currentAuth:o}))},previousAuth:()=>{let n=t().currentAuth-1;n<0||e(()=>({currentAuth:n}))},setAuth:n=>{n!==-1&&(n<0||n>=t().authItems.length)||e(()=>({currentAuth:n}))},addService:(n,o)=>{if(!n.service)return;let a=n.service.find(s=>s.type==="AuthAccessTokenService2"),i=n;if(t().authItems.find(s=>s.service.id===n.id)){e(()=>({authItems:ae(n.id,t().authItems,s=>({...s,instances:s.instances+1}))}));return}if(e(()=>({currentAuth:i.profile==="active"?0:t().currentAuth,authItems:[{id:n.id,type:n.profile,service:n,probeId:o,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...t().authItems]})),n.profile==="external"){if(!a)throw new Error("Token service not found");Ln(a).then(s=>{e(()=>({authItems:ae(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:ae(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:s.message}))}))})}if(n.profile==="kiosk"){if(!a)throw new Error("Token service not found");e(()=>({authItems:ae(n.id,t().authItems,s=>({...s,isPending:!0}))})),Bo(i).then(()=>{Ln(a).then(s=>{e(()=>({authItems:ae(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:ae(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,error:s.message}))}))})})}n.profile},removeService:(n,o)=>{let a=t().currentAuth===t().authItems.findIndex(r=>r.service.id===n.id),i=t().currentAuth;if(a){let r=t().authItems.find(l=>l.service.id===n.id);r&&r.instances>1||(i=t().authItems.findIndex(u=>u.service.id!==n.id&&u.instances>0))}e(()=>({authItems:ae(n.id,t().authItems,r=>({...r,instances:r.instances-1})),currentAuth:i}))}})),Ho=(e,t)=>(0,zn.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 Fo(e){let t=e.service||e.services||[],n={hasAuth:!1,services:{}};for(let o of t)if(o.type==="AuthProbeService2"){n.services.probe=o,n.hasAuth=!0;let a=o.service.filter(i=>i.type==="AuthAccessService2");a[0]&&(n.services.access=a[0])}return n}async function Ln(e,{strict:t=!0}={}){return new Promise((n,o)=>{let a=Math.random().toString(36).substring(7),i=`${e.id}?messageId=${a}&origin=${window.location.origin}`,r=u=>{let m=u.data;if(m.messageId===a){if(t&&m.type!=="AuthAccessToken2"){s(),o("Invalid response, expected type=AuthAccessToken2");return}if(!m.accessToken){s(),o("Invalid response, expected accessToken");return}s(),n(m)}},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 qo(e){let t=window.location;if(e){let n=document.createElement("a");return n.href=e,n.protocol+"//"+n.hostname+(n.port?":"+n.port:"")}return t.protocol+"//"+t.hostname+(t.port?":"+t.port:"")}async function Bo(e){let t=`${e.id}?origin=${qo()}`,n=window.open(t);if(!n)throw new Error("Failed to open window");return new Promise((o,a)=>{let i=setInterval(()=>{n.closed&&(clearInterval(i),o())},500)})}var _e=require("react");var $o=require("zustand");function Wo(e){let t=(0,_e.useMemo)(()=>Fo(e),[e]),n=Uo(t.services.access?.id),o=(0,_e.useMemo)(()=>Ho(t.services.probe,n),[t.services.probe]),a=(0,$o.useStore)(o);return(0,_e.useEffect)(()=>{a.status==="unknown"&&!n&&a.probe()},[t.services.probe,a.status]),(0,_e.useEffect)(()=>{n&&(a.setToken(n),a.probe())},[n]),[e,a,t.hasAuth]}var pt=require("react/jsx-runtime"),Ye=(0,se.createContext)(null),Va=(0,se.createContext)(null);Va.displayName="CurrentAuth";var Na=(0,se.createContext)(null);Na.displayName="AuthActions";function _o({children:e}){let t=(0,se.useMemo)(()=>Do(),[]);return(0,pt.jsx)(Ye.Provider,{value:t,children:e})}function Yo(){return!!(0,se.useContext)(Ye)}function Bn(){let e=(0,se.useContext)(Ye);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function La(){let e=Bn();return(0,Ot.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 za(e){let t=Bn();return(0,Ot.useStore)(t,o=>o.authItems.find(a=>a.service.id===e))}function Uo(e){let t=Bn();return(0,Ot.useStore)(t,o=>o.authItems.find(a=>a.id===e)?.session?.token)}function Oa(e){let t=La(),n=za(e.service.id);return(0,se.useEffect)(()=>(t?.addService(e.service,e.probeId),()=>{t?.removeService(e.service,e.probeId)}),[e.service]),n?(n.error||!n.isLoggedIn,e.children):null}function On(){return null}function jo(e){let[t,n,o]=Wo(e.resource),a=e.fallbackComponent||On,i=e.loadingComponent||On,r=e.errorComponent||On,s=n.service,l=null;if(!o||!s)return e.children(t);let u=s.service.filter(m=>m.type==="AuthAccessService2");n.status==="error"&&(l=(0,pt.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,pt.jsx)(i,{})),n.status==="success"&&(l=e.children(t));for(let m of u)l=(0,pt.jsx)(Oa,{service:m,probeId:s.id,children:l},m.id);return l}var ft=require("react");var Go=require("zustand/vanilla"),Ba=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 Ko=e=>{let t;typeof e=="string"?t={"@context":"http://iiif.io/api/search/1/context.json",profile:"http://iiif.io/api/search/1/search","@id":e,id:e,service:[]}:t=e;let n=t?Ba(t):void 0,o=null;return(0,Go.createStore)((a,i)=>({service:t,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!t,hasAutocomplete:t?!!Da(t):!1,errorMessage:"",search(r,s={}){if(!n)throw new Error("No search service found.");o&&!o.signal.aborted&&o.abort(),o=new AbortController;let l=new URLSearchParams;r.q&&l.set("q",r.q),r.motivation&&l.set("motivation",r.motivation),r.date&&l.set("date",r.date),r.user&&l.set("user",r.user),a({loading:!0}),fetch(`${n}?${l.toString()}`,{signal:o.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...s.headers||{}}}).then(async u=>{if(!o?.signal.aborted)if(u.ok){let m=await u.json();a({resources:m.resources,error:!1,errorMessage:""})}else a({resources:[],error:!0,errorMessage:u.statusText})})},clearSearch(){a({resources:[],error:!1,errorMessage:""})},highlightResult(r){let s=i().resources.find(l=>l["@id"]===r);a({highlight:s})},nextResult(){let r=i().resources,s=i().highlight;if(!s){a({highlight:r[0]||null});return}let l=r.findIndex(u=>u["@id"]===s["@id"]);if(l===-1){a({highlight:r[0]||null});return}a({highlight:r[l+1]||r[0]||null})},previousResult(){let r=i().resources,s=i().highlight;if(!s){a({highlight:r[r.length-1]||null});return}let l=r.findIndex(u=>u["@id"]===s["@id"]);if(l===-1){a({highlight:r[r.length-1]||null});return}if(l===0){a({highlight:r[r.length-1]||null});return}a({highlight:r[l-1]||r[r.length-1]||null})}}))};var Ha=require("zustand");function Qo(){let e=q();return e?e.service.find(t=>t.profile==="SearchService1"||t.profile==="http://iiif.io/api/search/1/search"):void 0}var Bt=require("react/jsx-runtime"),je=(0,ft.createContext)(null);je.displayName="Search";function Xo(e){let t=Qo();return e.store?(0,Bt.jsx)(je.Provider,{value:e.store,children:e.children}):(0,Bt.jsx)(Fa,{service:t,children:e.children})}function Fa({service:e,children:t}){let n=(0,ft.useMemo)(()=>Ko(e),[e]);return(0,Bt.jsx)(je.Provider,{value:n,children:t})}var K=require("react/jsx-runtime"),gt=()=>{},ht=(0,Dt.createContext)({setCurrentCanvasId:gt,setCurrentCanvasIndex:gt,nextCanvas:gt,previousCanvas:gt,items:[],sequence:[],setSequenceIndex:gt,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function qa(e){let t=q(),{cursor:n,visibleItems:o,next:a,sequence:i,items:r,setCanvasIndex:s,setCanvasId:l,previous:u,setSequenceIndex:m,hasNext:c,hasPrevious:d}=Oo({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),p=(0,Dt.useMemo)(()=>({sequence:i,items:r,setCurrentCanvasId:l,nextCanvas:a,previousCanvas:u,totalCanvases:r.length,setCurrentCanvasIndex:s,setSequenceIndex:m,currentSequenceIndex:n,hasNext:c,hasPrevious:d}),[i,r,l,a,u,r,s,m,n]);return t?o.length===0?null:(0,K.jsx)(ht.Provider,{value:p,children:(0,K.jsx)(We.Provider,{value:o,children:(0,K.jsx)(pe,{canvas:o[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,K.jsx)("div",{children:"Sorry, something went wrong."}))}function Jo(e){let t=Ue(e.vault),n=Io(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)(qa,{...e,children:e.children});return(0,K.jsx)($e,{vault:t,children:(0,K.jsx)(Mo,{manifest:n.id,children:(0,K.jsx)(_o,{children:(0,K.jsx)(Xo,{children:e.rangeId?(0,K.jsx)(Eo,{range:e.rangeId,children:o}):o})})})})}function Ht(){return(0,Zo.useContext)(ht)}var lr=require("@atlas-viewer/atlas"),fe=require("react"),ur=require("zustand");var er=J(require("mitt"),1),Ee=require("react"),Wa=require("react/jsx-runtime"),$a=(0,er.default)(),tr=(0,Ee.createContext)($a);function nr(){return(0,Ee.useContext)(tr)}function or(e,t,n=[]){let o=(0,Ee.useContext)(tr);(0,Ee.useEffect)(()=>{let a=i=>{t(i)};return o.on(e,a),()=>{o.off(e,a)}},[o,e,...n])}var rr=require("polygon-editor"),ir=require("zustand/vanilla");function Dn(e){let t=Math.max(...e.map(i=>i[0])),n=Math.min(...e.map(i=>i[0])),o=Math.max(...e.map(i=>i[1])),a=Math.min(...e.map(i=>i[1]));for(let i of e)if(i[0]!==n&&i[0]!==t&&i[1]!==a&&i[1]!==o||i[0]<n||i[0]>t||i[1]<a||i[1]>o)return!1;return!0}function Ge(e){if(!e)return null;if(e.points.length>2){let t=Math.min(...e.points.map(i=>i[0])),n=Math.min(...e.points.map(i=>i[1])),o=Math.max(0,...e.points.map(i=>i[0])),a=Math.max(0,...e.points.map(i=>i[1]));return{x:t,y:n,width:o-t,height:a-n}}return null}function Ua(e){return e.type==="SvgSelector"}function Hn(e,t){if(Ua(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(m=>m.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 Fn(e,t){if(!e||!e.points.length)return null;if(Dn(e.points)){let n=e.points.map(l=>l[0]),o=e.points.map(l=>l[1]),a=Math.min(...n),i=Math.min(...o),r=Math.max(...n)-a,s=Math.max(...o)-i;return Hn({type:"BoxSelector",spatial:{x:a,y:i,width:r,height:s}},t)}return Hn({type:"SvgSelector",points:e.points,svgShape:e.open?"polygon":"polyline"},t)}function ar(e){if(e.type==="polygon"&&!e.noBox&&e.points&&Dn(e.points)){let n=Ge({open:!1,points:e.points||[]});return ar({...e,type:"box",selector:n})}if(e.type==="polygon"||e.type==="draw")return{polygon:{points:e.points||[],open:e.open||!1},requestType:e.type,boundingBox:Ge({points:e.points||[],open:!1}),metadata:{},arguments:e.arguments||{},target:Fn({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:Fn({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 _a={shapeId:null,noShape:!0,transitioning:!1,actionIntentType:null,transitionIntentType:null,selectedPoints:[],hasClosestLine:!1,lastCreationTool:null,modifiers:{Alt:!1,Shift:!1,Meta:!1,proximity:0},bounds:null,showBoundingBox:!1,currentModifiers:{},validIntentKeys:{},pointerInsideShape:!1,closestPoint:null,transitionModifiers:null,selectedStamp:null,bezierLines:[],boxMode:!1,fixedAspectRatio:!1,cursor:"",enabledTools:["pointer","pen","box","lineBox","stamp","hand","line","pencil"],canDelete:!0,canDeselect:!0,isToolSwitchingLocked:!1,currentTool:"box",snapEnabled:!1,snapToPoints:!1,snapToLines:!1,snapToIntersections:!1,snapToGrid:!1,snapToParallel:!1};function sr({events:e,enabledTools:t,keyboardShortcutMapping:n,keyboardShortcutsEnabled:o=!1,debug:a}){let i=(0,ir.createStore)((s,l)=>{let u=null,c=(0,rr.createHelper)({emitter:e,keyboardShortcutsEnabled:o,keyboardShortcutMapping:n,enabledTools:t,customSetState:d=>{a&&console.log("partial state",d),s(p=>({polygonState:{...p.polygonState,...d}}))}},d=>{s(p=>p.tool.requestId?{polygon:{...d,id:p.tool.requestId}}:{polygon:{id:void 0,points:[],open:!0}}),e.emit("atlas.polygon-update",d)});return{mode:"explore",tool:{enabled:!1,requestId:null,canvasId:null},runtime:null,requestType:null,requests:{},history:c.history,polygon:null,validRequestIds:[],metadata:{},stableViewport:null,canvasRelativePositions:{},canvasViewports:{},polygons:c,polygonState:_a,setMetadata:(d,p)=>{let f=p||l().tool.requestId;f&&s(h=>({metadata:{...h.metadata,[f]:{...h.metadata[f]||{},...d}}}))},setToolCanvasId:d=>{s(p=>({tool:{...p.tool,canvasId:d}}))},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 d=l();d.tool.requestId&&(c.setShape({points:[],open:!0}),d.cancelRequest(d.tool.requestId))}},reset:()=>{let d=l();d.tool.requestId&&d.cancelRequest(d.tool.requestId)},setPolygonState:d=>s({polygonState:typeof d=="function"?d(l().polygonState):d}),getRequestId:()=>{let d=Math.random().toString(36).slice(2);return s(p=>({validRequestIds:[...p.validRequestIds,d]})),{requestId:d,clear:()=>{l().tool.requestId,s(p=>({tool:p.tool.requestId===d?{enabled:!1,requestId:null,canvasId:null}:p.tool,validRequestIds:p.validRequestIds.filter(f=>f!==d)}))}}},cancelRequest:d=>{let p=d||l().tool.requestId;p&&(s(f=>({mode:"explore",tool:f.tool.requestId===p?{enabled:!1,requestId:null,canvasId:null}:f.tool,validRequestIds:f.validRequestIds.filter(h=>h!==p)})),e.emit("atlas.request-cancelled",{id:p}))},requestAnnotation:async(d,p)=>{let h={...l().requests,[p.requestId]:d},v=ar(d);a&&console.log("requestAnnotation",{response:v,request:d});try{let{points:S=[],open:g=!0}=v.polygon||{},{requestId:y,canvasId:b=null,toolId:x}=p,C=x,R=l(),A=R.validRequestIds.includes(y),B=v.requestType;return a&&console.log("setting points",{requestType:B,points:S,open:g}),!A||R.tool.enabled?null:(c.setShape({id:y,points:S,open:g}),B==="polygon"&&(C=C||"pen",c.tools.setTool("pen")),B==="draw"&&(C=C||"draw",c.tools.setTool("pencil")),B==="box"&&(C=C||"box",c.tools.setTool("box")),B==="target"?(C=C||"box",c.tools.setTool("box"),c.lockAspectRatio(),c.tools.lockToolSwitching(),c.tools.setCanDeselect(!1),c.tools.setCanDelete(!1)):(c.tools.unlockToolSwitching(),c.tools.setCanDeselect(!0),c.tools.setCanDelete(!0)),d.bounds&&c.setBounds(d.bounds),e.emit("atlas.annotation-request",{id:y}),s({polygon:{id:y,points:S,open:g},mode:"sketch",requestType:B,tool:{enabled:!0,requestId:y,canvasId:b},requests:h}),C?R.switchTool[C]?.():S.length===0&&R.switchTool.box(),(typeof d.selectByDefault>"u"&&S.length&&B==="box"||d.selectByDefault)&&R.switchTool.pointer(),new Promise(de=>{let I=te=>{te.id===y&&(s(P=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(P.requests).filter(([M])=>M!==y))})),e.off("atlas.request-cancelled",I),e.off("atlas.annotation-completed",D),de(null))},D=te=>{te.id===y&&(s(P=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(P.requests).filter(([M])=>M!==y))})),e.off("atlas.annotation-completed",D),e.off("atlas.request-cancelled",I),de(te))};e.on("atlas.request-cancelled",I),e.on("atlas.annotation-completed",D)}))}catch(S){return console.error(S),null}},completeRequest:d=>{let p=l().tool.requestId;if(typeof d=="string"&&d&&d!==p)return;let f=p?l().requests[p]?.arguments||{}:{},h=p?l().metadata[p]||{}:{},v=l().polygonState.bounds,S=l().polygon;S&&(e.emit("atlas.annotation-completed",{id:S.id,polygon:S,requestType:l().requestType,target:Fn(S,v),canvasId:l().tool.canvasId,boundingBox:Ge(S),metadata:h,arguments:{...f}}),c.setShape(null))},setAtlasRuntime:d=>{u=d,e.emit("atlas.ready",{runtime:d}),r.setScale(1/u._lastGoodScale),u.world.addLayoutSubscriber((p,f)=>{(p==="event-activation"||p==="zoom-to"||p==="go-home")&&u?._lastGoodScale&&!Number.isNaN(u._lastGoodScale)&&r.setScale(1/u._lastGoodScale)}),s({runtime:u})},clearAtlasRuntime:()=>{u=null,s({stableViewport:null,runtime:null})},setCanvasRelativePosition:(d,p)=>{s(f=>({canvasRelativePositions:{...f.canvasRelativePositions,[d]:p}}))},clearCanvasRelativePosition:d=>{s(p=>{let f={...p.canvasRelativePositions};return delete f[d],{canvasRelativePositions:f}})},changeMode:d=>{s({mode:d})},nudgeLeft:d=>{if(!u)return;let p=u.getViewport(),f=d??p.width*.1;u.world.gotoRegion({x:p.x-f,y:p.y,width:p.width,height:p.height,nudge:!0})},nudgeRight:d=>{if(!u)return;let p=u.getViewport(),f=d??p.width*.1;u.world.gotoRegion({x:p.x+f,y:p.y,width:p.width,height:p.height,nudge:!0})},nudgeUp:d=>{if(!u)return;let p=u.getViewport(),f=d??p.height*.1;u.world.gotoRegion({x:p.x,y:p.y-f,width:p.width,height:p.height,nudge:!0})},nudgeDown:d=>{if(!u)return;let p=u.getViewport(),f=d??p.height*.1;u.world.gotoRegion({x:p.x,y:p.y+f,width:p.width,height:p.height,nudge:!0})},zoomIn:()=>{u?.world?.zoomIn()},zoomOut:()=>{u?.world?.zoomOut()},goHome:()=>{u?.world?.goHome()},goToRegion:d=>{u?.world?.gotoRegion(d)},getRuntime:()=>u}}),r=i.getState().polygons;return e.on("atlas.annotation-request",()=>{r.clock.start((s,l,u)=>{e.emit("atlas.polygon-render",{state:s,slowState:l,dt:u})},s=>{typeof s=="object"?i.setState({polygonState:s}):i.setState(l=>({polygonState:s(l.polygonState)}))})}),e.on("atlas.annotation-completed",()=>{r.clock.stop()}),e.on("atlas.request-cancelled",()=>{r.clock.stop()}),i}var $n=require("react/jsx-runtime"),Ke=(0,fe.createContext)(null);function Q(){return(0,fe.useContext)(Ke)}var qn={};function cr(e="atlas"){return qn[e]?.getState()}function yt({children:e,name:t="atlas",existing:n,atlasStoreConfig:o}){let a=nr(),i=(0,fe.useContext)(Ke),r=(0,fe.useMemo)(()=>n||i||sr({events:a,...o||{}}),[a,n,i]),s=(0,ur.useStore)(r,l=>l.mode);return(0,fe.useEffect)(()=>{let l=t;return l&&(qn[l]=r),()=>{l&&delete qn[l]}},[r,t]),(0,$n.jsx)(Ke.Provider,{value:r,children:(0,$n.jsx)(lr.ModeContext.Provider,{value:s||"explore",children:e})})}var St=require("@atlas-viewer/atlas"),Ar=require("react");var vt=require("react"),ja=require("react/jsx-runtime");function Ya(){return{default:{backgroundColor:"rgba(0,0,0,0)",borderWidth:"2px",borderColor:"rgba(252,0,98, .5)"},highlighted:{backgroundColor:"rgba(75, 103, 225, 0.4)",borderWidth:"1px",borderColor:"rgba(75,103,225,0.99)"},hidden:{borderWidth:"0px",borderColor:"rgba(0,0,0,0)",backgroundColor:"rgba(0,0,0,0)",hidden:!0}}}var dr=(0,vt.createContext)(Ya());dr.displayName="AnnotationStyle";function mr(){return(0,vt.useContext)(dr)}var gr=require("@iiif/helpers/annotation-targets"),hr=require("react");var Qe=require("react"),pr=require("zustand"),Ga=(0,pr.create)()((e,t)=>{let n=new Map,o=()=>Math.random().toString(36).substring(2,15),a=i=>{let r=n.get(i);if(r)return r;let s=o();return n.set(i,s),s};return{stylesheets:{},loading:[],errors:[],async parseStylesheet(i){let{loadStylesheet:r,setStylesheet:s}=t();if(!i)return null;if(typeof i=="string")return i.startsWith("http")?{id:i,type:"CssStylesheet",value:await r(i)}:{id:s(i),type:"CssStylesheet",value:i};if(i.type==="CssStylesheet"){let l=i.id;if("value"in i){let u=Array.isArray(i.value)?i.value.join(`
1
+ "use strict";var Aa=Object.create;var Et=Object.defineProperty;var Pa=Object.getOwnPropertyDescriptor;var Ta=Object.getOwnPropertyNames;var wa=Object.getPrototypeOf,Ia=Object.prototype.hasOwnProperty;var Ma=(e,t)=>{for(var n in t)Et(e,n,{get:t[n],enumerable:!0})},vo=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Ta(t))!Ia.call(e,a)&&a!==n&&Et(e,a,{get:()=>t[a],enumerable:!(o=Pa(t,a))||o.enumerable});return e};var J=(e,t,n)=>(n=e!=null?Aa(wa(e)):{},vo(t||!e||!e.__esModule?Et(n,"default",{value:e,enumerable:!0}):n,e)),ka=e=>vo(Et({},"__esModule",{value:!0}),e);var Es={};Ma(Es,{CanvasPanel:()=>F});module.exports=ka(Es);var Fe=require("react");var qe=J(require("react"),1),So=require("react/jsx-runtime"),Ea={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},Vt=qe.default.createContext(Ea),re=()=>(0,qe.useContext)(Vt);function xe({value:e,children:t}){let n=re(),o=(0,qe.useMemo)(()=>({...n,...e}),[e,n]);return(0,So.jsx)(Vt.Provider,{value:o,children:t})}var xo=require("react/jsx-runtime");function pe({canvas:e,children:t}){return(0,xo.jsx)(xe,{value:{canvas:e},children:t})}var Nt=J(require("react"),1),mt=require("@iiif/helpers/vault");var Vn=require("react/jsx-runtime"),ke=Nt.default.createContext({vault:null,setVaultInstance:e=>{}});function $e({vault:e,vaultOptions:t,useGlobal:n,resources:o,children:a}){let[i,r]=(0,Nt.useState)(()=>e||(n?(0,mt.globalVault)(t):t?new mt.Vault(t):new mt.Vault));return(0,Vn.jsx)(ke.Provider,{value:{vault:i,setVaultInstance:r},children:(0,Vn.jsx)(xe,{value:o||{},children:a})})}var Co=require("react"),Ro=J(require("react"),1);var bo=require("react"),k=()=>{let{vault:e}=(0,bo.useContext)(ke);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};var Lt=require("react");function E(e,t=[]){let n=k(),[o,a]=(0,Lt.useState)(()=>e(n.getState(),n));return(0,Lt.useEffect)(()=>n.subscribe(i=>e(i,n),i=>{a(i)},!1),t),o}var We=Ro.default.createContext([]);function zt(){let e=(0,Co.useContext)(We);return E(t=>e.map(n=>t.iiif.entities.Canvas[n]).filter(Boolean),[e])}var Ao=require("@iiif/helpers/vault"),Po=require("react");function Ue(e){let t=(0,Po.useContext)(ke);return e||(t&&t.vault?t.vault:(0,Ao.globalVault)())}var To=require("react");function q(e={},t=[]){let{id:n,selector:o}=e,a=re(),i=k(),r=n||a.manifest,s=E(l=>r?l.iiif.entities.Manifest[r]:void 0,[r]);return(0,To.useMemo)(()=>{if(s)return o?o(s):s},[s,o,...t])}var Zo=require("react"),Dt=require("react");var be=require("react");function wo(e,{noCache:t=!1}={}){let n=typeof e=="string"?e:e.id,o=Ue(),[a,i]=(0,be.useState)(n),[r,s]=(0,be.useState)(void 0),l=(0,be.useMemo)(()=>o.get(n,{skipSelfReturn:!0})||void 0,[n,o]),[u,m]=(0,be.useState)(l);return(0,be.useEffect)(()=>{(async()=>{try{let c=l&&!t?l:await o.load(n),d=c?c.id||c["@id"]:null;c&&a!==d&&i(d),m(c)}catch(c){s(c)}})()},[n,t]),{isLoaded:!!u,id:a,requestId:n,error:r,resource:u,cached:!!(u&&u===l)}}function Io(e,t){let{id:n,isLoaded:o,error:a,resource:i,requestId:r,cached:s}=wo(e,t);return{id:n,isLoaded:o,error:a,manifest:i,requestId:r,cached:s}}var ko=require("react/jsx-runtime");function Mo({manifest:e,children:t}){return(0,ko.jsx)(xe,{value:{manifest:e},children:t})}var Vo=require("react/jsx-runtime");function Eo({range:e,children:t}){return(0,Vo.jsx)(xe,{value:{range:e},children:t})}function Nn(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(...Nn(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 No(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:Nn(e,t);if(r)return[l,[l.map((f,h)=>h)]];if(s||!i||n)return[l,l.map((f,h)=>[h])];let u=[],m=[],c=()=>{m.length&&(u.push([...m]),m=[])},d=0,p=!1;for(let f=0;f<l.length;f++){let h=e.get(l[f]);if(h.behavior.includes("non-paged")){f===d&&d++,o||(c(),u.push([f]),c());continue}if(f===d||h.behavior.includes("facing-pages")){m.length&&(p=!0),c(),u.push([f]),c();continue}if(m.push(f),p){c(),p=!1;continue}m.length>1&&c()}return m.length&&c(),[l,u]}var ie=require("react");var Lo=require("react");function zo(e={},t=[]){let{id:n,selector:o}=e,a=re(),i=n||a.range,r=E(s=>i?s.iiif.entities.Range[i]:void 0,[i]);return(0,Lo.useMemo)(()=>{if(r)return o?o(r):r},[r,o,...t])}function Oo({startCanvas:e,disablePaging:t}){let n=k(),o=q(),a=zo(),[i,r]=(0,ie.useState)(void 0),s=a||o;if(!s)throw new Error("Nothing selected");let[l,u]=(0,ie.useMemo)(()=>No(n,s,{disablePaging:t}),[n,s,t]),m=(0,ie.useRef)(u);if(m.current!==u){let v=m.current[i][0],S=u.findIndex(g=>g.includes(v));m.current=u,r(S)}let c=(0,ie.useCallback)(h=>{let v=u.findIndex(S=>S.includes(h));r(v===-1?0:v)},[l,u]),d=(0,ie.useCallback)(h=>{let v=l.findIndex(S=>S.id===h);v!==-1?c(v):r(0)},[l,u]),p=(0,ie.useCallback)(()=>{r(h=>h>=u.length-1?h:h+1)},[u]),f=(0,ie.useCallback)(()=>{r(h=>h<=0?0:h-1)},[u]);return typeof i>"u"&&(e?d(e):r(0)),{visibleItems:u[i]?.map(h=>l[h].id)||[],cursor:i,items:l,sequence:u,hasPrevious:i>0,hasNext:i<u.length-1,setSequenceIndex:r,setCanvasIndex:c,setCanvasId:d,next:p,previous:f}}var se=require("react"),Ot=require("zustand");var zn=require("zustand/vanilla");function ae(e,t,n){let o=t.findIndex(r=>r.service.id===e);if(o===-1)return t;let a=[...t],i=n(a[o]);return i===a[o]?t:(a[o]=i,a)}var Do=()=>(0,zn.createStore)((e,t)=>({currentAuth:-1,authItems:[],login:()=>{let n=t().authItems[t().currentAuth];if(!n||n.isPending||n.isLoggedIn)return;if(n.type!=="active")throw new Error("Cannot login to non-active service");let o=n.service.service.find(a=>a.type==="AuthAccessTokenService2");if(!o)throw new Error("Token service not found");e(()=>({authItems:ae(n.id,t().authItems,a=>({...a,isPending:!0}))})),Bo(n.service).then(()=>{Ln(o).then(a=>{let i=a.expiresIn,r=Date.now()+i*1e3;e(()=>({authItems:ae(n.id,t().authItems,s=>({...s,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:r}}))}))}).catch(a=>{e(()=>({authItems:ae(n.id,t().authItems,i=>({...i,isLoggedIn:!1,isPending:!1,error:a.message}))}))})})},logout:()=>{let n=t().authItems[t().currentAuth];if(!n||n.isPending||!n.isLoggedIn)return;if(n.type!=="active")throw new Error("Cannot logout of non-active service");let o=n.service.service.find(r=>r.type==="AuthLogoutService2");if(!o)return;let a=`${o.id}?origin=${qo()}`,i=window.open(a);e(()=>({authItems:ae(n.id,t().authItems,r=>({...r,isLoggedIn:!1,session:null,isPending:!1}))}))},nextAuth:()=>{let n=t().authItems.length,o=t().currentAuth+1;o>=n||e(()=>({currentAuth:o}))},previousAuth:()=>{let n=t().currentAuth-1;n<0||e(()=>({currentAuth:n}))},setAuth:n=>{n!==-1&&(n<0||n>=t().authItems.length)||e(()=>({currentAuth:n}))},addService:(n,o)=>{if(!n.service)return;let a=n.service.find(s=>s.type==="AuthAccessTokenService2"),i=n;if(t().authItems.find(s=>s.service.id===n.id)){e(()=>({authItems:ae(n.id,t().authItems,s=>({...s,instances:s.instances+1}))}));return}if(e(()=>({currentAuth:i.profile==="active"?0:t().currentAuth,authItems:[{id:n.id,type:n.profile,service:n,probeId:o,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...t().authItems]})),n.profile==="external"){if(!a)throw new Error("Token service not found");Ln(a).then(s=>{e(()=>({authItems:ae(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:ae(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:s.message}))}))})}if(n.profile==="kiosk"){if(!a)throw new Error("Token service not found");e(()=>({authItems:ae(n.id,t().authItems,s=>({...s,isPending:!0}))})),Bo(i).then(()=>{Ln(a).then(s=>{e(()=>({authItems:ae(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:ae(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,error:s.message}))}))})})}n.profile},removeService:(n,o)=>{let a=t().currentAuth===t().authItems.findIndex(r=>r.service.id===n.id),i=t().currentAuth;if(a){let r=t().authItems.find(l=>l.service.id===n.id);r&&r.instances>1||(i=t().authItems.findIndex(u=>u.service.id!==n.id&&u.instances>0))}e(()=>({authItems:ae(n.id,t().authItems,r=>({...r,instances:r.instances-1})),currentAuth:i}))}})),Ho=(e,t)=>(0,zn.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 Fo(e){let t=e.service||e.services||[],n={hasAuth:!1,services:{}};for(let o of t)if(o.type==="AuthProbeService2"){n.services.probe=o,n.hasAuth=!0;let a=o.service.filter(i=>i.type==="AuthAccessService2");a[0]&&(n.services.access=a[0])}return n}async function Ln(e,{strict:t=!0}={}){return new Promise((n,o)=>{let a=Math.random().toString(36).substring(7),i=`${e.id}?messageId=${a}&origin=${window.location.origin}`,r=u=>{let m=u.data;if(m.messageId===a){if(t&&m.type!=="AuthAccessToken2"){s(),o("Invalid response, expected type=AuthAccessToken2");return}if(!m.accessToken){s(),o("Invalid response, expected accessToken");return}s(),n(m)}},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 qo(e){let t=window.location;if(e){let n=document.createElement("a");return n.href=e,n.protocol+"//"+n.hostname+(n.port?":"+n.port:"")}return t.protocol+"//"+t.hostname+(t.port?":"+t.port:"")}async function Bo(e){let t=`${e.id}?origin=${qo()}`,n=window.open(t);if(!n)throw new Error("Failed to open window");return new Promise((o,a)=>{let i=setInterval(()=>{n.closed&&(clearInterval(i),o())},500)})}var _e=require("react");var $o=require("zustand");function Wo(e){let t=(0,_e.useMemo)(()=>Fo(e),[e]),n=Uo(t.services.access?.id),o=(0,_e.useMemo)(()=>Ho(t.services.probe,n),[t.services.probe]),a=(0,$o.useStore)(o);return(0,_e.useEffect)(()=>{a.status==="unknown"&&!n&&a.probe()},[t.services.probe,a.status]),(0,_e.useEffect)(()=>{n&&(a.setToken(n),a.probe())},[n]),[e,a,t.hasAuth]}var pt=require("react/jsx-runtime"),Ye=(0,se.createContext)(null),Va=(0,se.createContext)(null);Va.displayName="CurrentAuth";var Na=(0,se.createContext)(null);Na.displayName="AuthActions";function _o({children:e}){let t=(0,se.useMemo)(()=>Do(),[]);return(0,pt.jsx)(Ye.Provider,{value:t,children:e})}function Yo(){return!!(0,se.useContext)(Ye)}function Bn(){let e=(0,se.useContext)(Ye);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function La(){let e=Bn();return(0,Ot.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 za(e){let t=Bn();return(0,Ot.useStore)(t,o=>o.authItems.find(a=>a.service.id===e))}function Uo(e){let t=Bn();return(0,Ot.useStore)(t,o=>o.authItems.find(a=>a.id===e)?.session?.token)}function Oa(e){let t=La(),n=za(e.service.id);return(0,se.useEffect)(()=>(t?.addService(e.service,e.probeId),()=>{t?.removeService(e.service,e.probeId)}),[e.service]),n?(n.error||!n.isLoggedIn,e.children):null}function On(){return null}function jo(e){let[t,n,o]=Wo(e.resource),a=e.fallbackComponent||On,i=e.loadingComponent||On,r=e.errorComponent||On,s=n.service,l=null;if(!o||!s)return e.children(t);let u=s.service.filter(m=>m.type==="AuthAccessService2");n.status==="error"&&(l=(0,pt.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,pt.jsx)(i,{})),n.status==="success"&&(l=e.children(t));for(let m of u)l=(0,pt.jsx)(Oa,{service:m,probeId:s.id,children:l},m.id);return l}var ft=require("react");var Go=require("zustand/vanilla"),Ba=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 Ko=e=>{let t;typeof e=="string"?t={"@context":"http://iiif.io/api/search/1/context.json",profile:"http://iiif.io/api/search/1/search","@id":e,id:e,service:[]}:t=e;let n=t?Ba(t):void 0,o=null;return(0,Go.createStore)((a,i)=>({service:t,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!t,hasAutocomplete:t?!!Da(t):!1,errorMessage:"",search(r,s={}){if(!n)throw new Error("No search service found.");o&&!o.signal.aborted&&o.abort(),o=new AbortController;let l=new URLSearchParams;r.q&&l.set("q",r.q),r.motivation&&l.set("motivation",r.motivation),r.date&&l.set("date",r.date),r.user&&l.set("user",r.user),a({loading:!0}),fetch(`${n}?${l.toString()}`,{signal:o.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...s.headers||{}}}).then(async u=>{if(!o?.signal.aborted)if(u.ok){let m=await u.json();a({resources:m.resources,error:!1,errorMessage:""})}else a({resources:[],error:!0,errorMessage:u.statusText})})},clearSearch(){a({resources:[],error:!1,errorMessage:""})},highlightResult(r){let s=i().resources.find(l=>l["@id"]===r);a({highlight:s})},nextResult(){let r=i().resources,s=i().highlight;if(!s){a({highlight:r[0]||null});return}let l=r.findIndex(u=>u["@id"]===s["@id"]);if(l===-1){a({highlight:r[0]||null});return}a({highlight:r[l+1]||r[0]||null})},previousResult(){let r=i().resources,s=i().highlight;if(!s){a({highlight:r[r.length-1]||null});return}let l=r.findIndex(u=>u["@id"]===s["@id"]);if(l===-1){a({highlight:r[r.length-1]||null});return}if(l===0){a({highlight:r[r.length-1]||null});return}a({highlight:r[l-1]||r[r.length-1]||null})}}))};var Ha=require("zustand");function Qo(){let e=q();return e?e.service.find(t=>t.profile==="SearchService1"||t.profile==="http://iiif.io/api/search/1/search"):void 0}var Bt=require("react/jsx-runtime"),je=(0,ft.createContext)(null);je.displayName="Search";function Xo(e){let t=Qo();return e.store?(0,Bt.jsx)(je.Provider,{value:e.store,children:e.children}):(0,Bt.jsx)(Fa,{service:t,children:e.children})}function Fa({service:e,children:t}){let n=(0,ft.useMemo)(()=>Ko(e),[e]);return(0,Bt.jsx)(je.Provider,{value:n,children:t})}var K=require("react/jsx-runtime"),gt=()=>{},ht=(0,Dt.createContext)({setCurrentCanvasId:gt,setCurrentCanvasIndex:gt,nextCanvas:gt,previousCanvas:gt,items:[],sequence:[],setSequenceIndex:gt,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function qa(e){let t=q(),{cursor:n,visibleItems:o,next:a,sequence:i,items:r,setCanvasIndex:s,setCanvasId:l,previous:u,setSequenceIndex:m,hasNext:c,hasPrevious:d}=Oo({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),p=(0,Dt.useMemo)(()=>({sequence:i,items:r,setCurrentCanvasId:l,nextCanvas:a,previousCanvas:u,totalCanvases:r.length,setCurrentCanvasIndex:s,setSequenceIndex:m,currentSequenceIndex:n,hasNext:c,hasPrevious:d}),[i,r,l,a,u,r,s,m,n]);return t?o.length===0?null:(0,K.jsx)(ht.Provider,{value:p,children:(0,K.jsx)(We.Provider,{value:o,children:(0,K.jsx)(pe,{canvas:o[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,K.jsx)("div",{children:"Sorry, something went wrong."}))}function Jo(e){let t=Ue(e.vault),n=Io(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)(qa,{...e,children:e.children});return(0,K.jsx)($e,{vault:t,children:(0,K.jsx)(Mo,{manifest:n.id,children:(0,K.jsx)(_o,{children:(0,K.jsx)(Xo,{children:e.rangeId?(0,K.jsx)(Eo,{range:e.rangeId,children:o}):o})})})})}function Ht(){return(0,Zo.useContext)(ht)}var lr=require("@atlas-viewer/atlas"),fe=require("react"),ur=require("zustand");var er=J(require("mitt"),1),Ee=require("react"),Wa=require("react/jsx-runtime"),$a=(0,er.default)(),tr=(0,Ee.createContext)($a);function nr(){return(0,Ee.useContext)(tr)}function or(e,t,n=[]){let o=(0,Ee.useContext)(tr);(0,Ee.useEffect)(()=>{let a=i=>{t(i)};return o.on(e,a),()=>{o.off(e,a)}},[o,e,...n])}var rr=require("polygon-editor"),ir=require("zustand/vanilla");function Dn(e){let t=Math.max(...e.map(i=>i[0])),n=Math.min(...e.map(i=>i[0])),o=Math.max(...e.map(i=>i[1])),a=Math.min(...e.map(i=>i[1]));for(let i of e)if(i[0]!==n&&i[0]!==t&&i[1]!==a&&i[1]!==o||i[0]<n||i[0]>t||i[1]<a||i[1]>o)return!1;return!0}function Ge(e){if(!e)return null;if(e.points.length>2){let t=Math.min(...e.points.map(i=>i[0])),n=Math.min(...e.points.map(i=>i[1])),o=Math.max(0,...e.points.map(i=>i[0])),a=Math.max(0,...e.points.map(i=>i[1]));return{x:t,y:n,width:o-t,height:a-n}}return null}function Ua(e){return e.type==="SvgSelector"}function Hn(e,t){if(Ua(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(m=>m.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 Fn(e,t){if(!e||!e.points.length)return null;if(Dn(e.points)){let n=e.points.map(l=>l[0]),o=e.points.map(l=>l[1]),a=Math.min(...n),i=Math.min(...o),r=Math.max(...n)-a,s=Math.max(...o)-i;return Hn({type:"BoxSelector",spatial:{x:a,y:i,width:r,height:s}},t)}return Hn({type:"SvgSelector",points:e.points,svgShape:e.open?"polygon":"polyline"},t)}function ar(e){if(e.type==="polygon"&&!e.noBox&&e.points&&Dn(e.points)){let n=Ge({open:!1,points:e.points||[]});return ar({...e,type:"box",selector:n})}if(e.type==="polygon"||e.type==="draw")return{polygon:{points:e.points||[],open:e.open||!1},requestType:e.type,boundingBox:Ge({points:e.points||[],open:!1}),metadata:{},arguments:e.arguments||{},target:Fn({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:Fn({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 _a={shapeId:null,noShape:!0,transitioning:!1,actionIntentType:null,transitionIntentType:null,selectedPoints:[],hasClosestLine:!1,lastCreationTool:null,modifiers:{Alt:!1,Shift:!1,Meta:!1,proximity:0},bounds:null,showBoundingBox:!1,currentModifiers:{},validIntentKeys:{},pointerInsideShape:!1,closestPoint:null,transitionModifiers:null,selectedStamp:null,bezierLines:[],boxMode:!1,fixedAspectRatio:!1,cursor:"",enabledTools:["pointer","pen","box","lineBox","stamp","hand","line","pencil"],canDelete:!0,canDeselect:!0,isToolSwitchingLocked:!1,currentTool:"box",snapEnabled:!1,snapToPoints:!1,snapToLines:!1,snapToIntersections:!1,snapToGrid:!1,snapToParallel:!1};function sr({events:e,enabledTools:t,keyboardShortcutMapping:n,keyboardShortcutsEnabled:o=!1,debug:a}){let i=(0,ir.createStore)((s,l)=>{let u=null,c=(0,rr.createHelper)({emitter:e,keyboardShortcutsEnabled:o,keyboardShortcutMapping:n,enabledTools:t,customSetState:d=>{a&&console.log("partial state",d),s(p=>({polygonState:{...p.polygonState,...d}}))}},d=>{s(p=>p.tool.requestId?{polygon:{...d,id:p.tool.requestId}}:{polygon:{id:void 0,points:[],open:!0}}),e.emit("atlas.polygon-update",d)});return{mode:"explore",tool:{enabled:!1,requestId:null,canvasId:null},runtime:null,requestType:null,requests:{},history:c.history,polygon:null,validRequestIds:[],metadata:{},stableViewport:null,canvasRelativePositions:{},canvasViewports:{},polygons:c,polygonState:_a,setMetadata:(d,p)=>{let f=p||l().tool.requestId;f&&s(h=>({metadata:{...h.metadata,[f]:{...h.metadata[f]||{},...d}}}))},setToolCanvasId:d=>{s(p=>({tool:{...p.tool,canvasId:d}}))},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 d=l();d.tool.requestId&&(c.setShape({points:[],open:!0}),d.cancelRequest(d.tool.requestId))}},reset:()=>{let d=l();d.tool.requestId&&d.cancelRequest(d.tool.requestId)},setPolygonState:d=>s({polygonState:typeof d=="function"?d(l().polygonState):d}),getRequestId:()=>{let d=Math.random().toString(36).slice(2);return s(p=>({validRequestIds:[...p.validRequestIds,d]})),{requestId:d,clear:()=>{l().tool.requestId,s(p=>({tool:p.tool.requestId===d?{enabled:!1,requestId:null,canvasId:null}:p.tool,validRequestIds:p.validRequestIds.filter(f=>f!==d)}))}}},cancelRequest:d=>{let p=d||l().tool.requestId;p&&(s(f=>({mode:"explore",tool:f.tool.requestId===p?{enabled:!1,requestId:null,canvasId:null}:f.tool,validRequestIds:f.validRequestIds.filter(h=>h!==p)})),e.emit("atlas.request-cancelled",{id:p}))},requestAnnotation:async(d,p)=>{let h={...l().requests,[p.requestId]:d},v=ar(d);a&&console.log("requestAnnotation",{response:v,request:d});try{let{points:S=[],open:g=!0}=v.polygon||{},{requestId:y,canvasId:b=null,toolId:x}=p,C=x,R=l(),A=R.validRequestIds.includes(y),B=v.requestType;return a&&console.log("setting points",{requestType:B,points:S,open:g}),!A||R.tool.enabled?null:(c.setShape({id:y,points:S,open:g}),B==="polygon"&&(C=C||"pen",c.tools.setTool("pen")),B==="draw"&&(C=C||"draw",c.tools.setTool("pencil")),B==="box"&&(C=C||"box",c.tools.setTool("box")),B==="target"?(C=C||"box",c.tools.setTool("box"),c.lockAspectRatio(),c.tools.lockToolSwitching(),c.tools.setCanDeselect(!1),c.tools.setCanDelete(!1)):(c.tools.unlockToolSwitching(),c.tools.setCanDeselect(!0),c.tools.setCanDelete(!0)),d.bounds&&c.setBounds(d.bounds),e.emit("atlas.annotation-request",{id:y}),s({polygon:{id:y,points:S,open:g},mode:"sketch",requestType:B,tool:{enabled:!0,requestId:y,canvasId:b},requests:h}),C?R.switchTool[C]?.():S.length===0&&R.switchTool.box(),(typeof d.selectByDefault>"u"&&S.length&&B==="box"||d.selectByDefault)&&R.switchTool.pointer(),new Promise(de=>{let I=te=>{te.id===y&&(s(P=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(P.requests).filter(([M])=>M!==y))})),e.off("atlas.request-cancelled",I),e.off("atlas.annotation-completed",D),de(null))},D=te=>{te.id===y&&(s(P=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(P.requests).filter(([M])=>M!==y))})),e.off("atlas.annotation-completed",D),e.off("atlas.request-cancelled",I),de(te))};e.on("atlas.request-cancelled",I),e.on("atlas.annotation-completed",D)}))}catch(S){return console.error(S),null}},completeRequest:d=>{let p=l().tool.requestId;if(typeof d=="string"&&d&&d!==p)return;let f=p?l().requests[p]?.arguments||{}:{},h=p?l().metadata[p]||{}:{},v=l().polygonState.bounds,S=l().polygon;S&&(e.emit("atlas.annotation-completed",{id:S.id,polygon:S,requestType:l().requestType,target:Fn(S,v),canvasId:l().tool.canvasId,boundingBox:Ge(S),metadata:h,arguments:{...f}}),c.setShape(null))},setAtlasRuntime:d=>{u=d,e.emit("atlas.ready",{runtime:d}),r.setScale(1/u._lastGoodScale),u.world.addLayoutSubscriber((p,f)=>{(p==="event-activation"||p==="zoom-to"||p==="go-home")&&u?._lastGoodScale&&!Number.isNaN(u._lastGoodScale)&&r.setScale(1/u._lastGoodScale)}),s({runtime:u})},clearAtlasRuntime:()=>{u=null,s({stableViewport:null,runtime:null})},setCanvasRelativePosition:(d,p)=>{s(f=>({canvasRelativePositions:{...f.canvasRelativePositions,[d]:p}}))},clearCanvasRelativePosition:d=>{s(p=>{let f={...p.canvasRelativePositions};return delete f[d],{canvasRelativePositions:f}})},changeMode:d=>{s({mode:d})},nudgeLeft:d=>{if(!u)return;let p=u.getViewport(),f=d??p.width*.1;u.world.gotoRegion({x:p.x-f,y:p.y,width:p.width,height:p.height,nudge:!0})},nudgeRight:d=>{if(!u)return;let p=u.getViewport(),f=d??p.width*.1;u.world.gotoRegion({x:p.x+f,y:p.y,width:p.width,height:p.height,nudge:!0})},nudgeUp:d=>{if(!u)return;let p=u.getViewport(),f=d??p.height*.1;u.world.gotoRegion({x:p.x,y:p.y-f,width:p.width,height:p.height,nudge:!0})},nudgeDown:d=>{if(!u)return;let p=u.getViewport(),f=d??p.height*.1;u.world.gotoRegion({x:p.x,y:p.y+f,width:p.width,height:p.height,nudge:!0})},zoomIn:()=>{u?.world?.zoomIn()},zoomOut:()=>{u?.world?.zoomOut()},goHome:()=>{u?.world?.goHome()},goToRegion:d=>{u?.world?.gotoRegion(d)},getRuntime:()=>u}}),r=i.getState().polygons;return e.on("atlas.annotation-request",()=>{r.clock.start((s,l,u)=>{e.emit("atlas.polygon-render",{state:s,slowState:l,dt:u})},s=>{typeof s=="object"?i.setState({polygonState:s}):i.setState(l=>({polygonState:s(l.polygonState)}))})}),e.on("atlas.annotation-completed",()=>{r.clock.stop()}),e.on("atlas.request-cancelled",()=>{r.clock.stop()}),i}var $n=require("react/jsx-runtime"),Ke=(0,fe.createContext)(null);function Q(){return(0,fe.useContext)(Ke)}var qn={};function cr(e="atlas"){return qn[e]?.getState()}function yt({children:e,name:t="atlas",existing:n,atlasStoreConfig:o}){let a=nr(),i=(0,fe.useContext)(Ke),r=(0,fe.useMemo)(()=>n||i||sr({events:a,...o||{}}),[a,n,i]),s=(0,ur.useStore)(r,l=>l.mode);return(0,fe.useEffect)(()=>{let l=t;return l&&(qn[l]=r),()=>{l&&delete qn[l]}},[r,t]),(0,$n.jsx)(Ke.Provider,{value:r,children:(0,$n.jsx)(lr.ModeContext.Provider,{value:s||"explore",children:e})})}var St=require("@atlas-viewer/atlas"),Ar=require("react");var vt=require("react"),ja=require("react/jsx-runtime");function Ya(){return{default:{backgroundColor:"rgba(0,0,0,0)",borderWidth:"2px",borderColor:"rgba(252,0,98, .5)"},highlighted:{backgroundColor:"rgba(75, 103, 225, 0.4)",borderWidth:"1px",borderColor:"rgba(75,103,225,0.99)"},hidden:{borderWidth:"0px",borderColor:"rgba(0,0,0,0)",backgroundColor:"rgba(0,0,0,0)",hidden:!0}}}var dr=(0,vt.createContext)(Ya());dr.displayName="AnnotationStyle";function mr(){return(0,vt.useContext)(dr)}var gr=require("@iiif/helpers/annotation-targets"),hr=require("react");var Qe=require("react"),pr=require("zustand"),Ga=(0,pr.create)()((e,t)=>{let n=new Map,o=()=>Math.random().toString(36).substring(2,15),a=i=>{let r=n.get(i);if(r)return r;let s=o();return n.set(i,s),s};return{stylesheets:{},loading:[],errors:[],async parseStylesheet(i){let{loadStylesheet:r,setStylesheet:s}=t();if(!i)return null;if(typeof i=="string")return i.startsWith("http")?{id:i,type:"CssStylesheet",value:await r(i)}:{id:s(i),type:"CssStylesheet",value:i};if(i.type==="CssStylesheet"){let l=i.id;if("value"in i){let u=Array.isArray(i.value)?i.value.join(`
2
2
  `):i.value;if(u)return{id:s(u,l),type:"CssStylesheet",value:u}}if("id"in i&&i.id){let u=await r(i.id);return{id:i.id,type:"CssStylesheet",value:u}}}return null},async loadStylesheet(i){if(t().loading.includes(i))return"";try{let s=await fetch(i);if(!s.ok)throw new Error(`Failed to load stylesheet from ${i}`);let l=await s.text();return e(u=>({stylesheets:{...u.stylesheets,[i]:l}})),l}catch(s){return e(l=>({errors:[...l.errors,{url:i,error:s}]})),""}},setStylesheet(i,r){let s=r||a(i);return e(l=>({stylesheets:{...l.stylesheets,[s]:i}})),s}}});function fr(e){let[t,n]=(0,Qe.useState)(""),{loading:o,errors:a,stylesheets:i,parseStylesheet:r}=Ga();return(0,Qe.useEffect)(()=>{e&&r(e).then(l=>{l?.id&&n(l.id)})},[e,r]),[(0,Qe.useMemo)(()=>{let l={};return t&&i[t]&&(l[t]=i[t]),l},[t,i]),{id:t,stylesheets:i,loading:o,errors:a}]}function Ft(e={},t=[]){let{id:n,selector:o}=e,a=re(),i=k(),r=n||a.annotation,s=E(m=>r?m.iiif.entities.Annotation[r]:void 0,[r]),[l]=fr(s?.stylesheet),u=E(m=>s&&s.body?s.body.map(c=>c?c.type==="SpecificResource"?{...c,source:i.get(c)}:c?m.iiif.entities[c.type][c.id]:null:null).filter(Boolean):[],[s]);return(0,hr.useMemo)(()=>{if(!s)return;let m={...s,body:u,target:(0,gr.expandTarget)(s.target,{typeMap:i.getState().iiif.mapping,loadedStylesheets:l})};return o?o(m):m},[s,o,u,l,...t])}var yr=require("react");function T(e={},t=[]){let{id:n,selector:o}=e,a=re(),i=n||a.canvas,r=E(s=>i?s.iiif.entities.Canvas[i]:void 0,[i]);return(0,yr.useMemo)(()=>{if(r)return o?o(r):r},[r,o,...t])}var Wn=require("react"),vr=require("@iiif/helpers/events");function qt(e,t){let n=k(),o=(0,Wn.useMemo)(()=>(0,vr.createEventsHelper)(n),[n]),a=E(()=>e&&e.id?n.getResourceMeta(e.id,"eventManager"):null,[e]);return(0,Wn.useMemo)(()=>e?o.getListenersAsProps(e,t):{},[a,e,n,t])}var Sr=require("react"),xr=require("@iiif/helpers/styles");function Xe(e,t){let n=k(),o=(0,Sr.useMemo)(()=>(0,xr.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 Cr=require("react");var $t=require("@atlas-viewer/atlas"),me=require("react"),O=require("react/jsx-runtime");function br({handleSize:e,resizable:t,onSave:n,children:o,maintainAspectRatio:a,disableCardinalControls:i,aspectRatio:r,...s}){let l=typeof e>"u"?a?12:8:e,{portalRef:u,mode:m,mouseEvent:c,isEditing:d}=(0,$t.useResizeWorldItem)({x:s.x||0,y:s.y||0,width:s.width,height:s.height,aspectRatio:r,maintainAspectRatio:a},n),p=(0,me.useMemo)(()=>c("translate"),[c]),f=(0,me.useMemo)(()=>c("east"),[c]),h=(0,me.useMemo)(()=>c("west"),[c]),v=(0,me.useMemo)(()=>c("south"),[c]),S=(0,me.useMemo)(()=>c("north"),[c]),g=(0,me.useMemo)(()=>c("south-east"),[c]),y=(0,me.useMemo)(()=>c("south-west"),[c]),b=(0,me.useMemo)(()=>c("north-east"),[c]),x=(0,me.useMemo)(()=>c("north-west"),[c]),C=m==="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:d?"none":C?"initial":"none"};return(0,O.jsx)(O.Fragment,{children:(0,O.jsxs)("world-object",{...s,children:[o,C&&t?(0,O.jsx)($t.HTMLPortal,{ref:u,target:{x:0,y:0,height:s.height,width:s.width},relative:!0,interactive:!1,children:C&&t?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)("div",{onMouseDown:p,onTouchStart:p,style:{display:"block",width:"100%",height:"100%",cursor:"move",border:"1px solid rgba(255,255,255, .7)",outline:"2px solid rgba(155,155,155, .7)",boxSizing:"border-box",pointerEvents:d?"none":C?"initial":"none"}}),a?null:(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)("div",{title:"east",onTouchStart:f,onMouseDown:f,style:{...R,cursor:"e-resize",height:l*2,width:l,right:0,top:"50%",opacity:i?0:1,transform:`translate(${l/2}px, -${l}px)`}}),(0,O.jsx)("div",{title:"west",onMouseDown:h,style:{...R,cursor:"w-resize",position:"absolute",height:l*2,width:l,left:0,top:"50%",opacity:i?0:1,transform:`translate(-${l/2}px, -${l}px)`}}),(0,O.jsx)("div",{title:"north",onMouseDown:S,style:{...R,cursor:"n-resize",position:"absolute",height:l,width:l*2,left:"50%",top:0,opacity:i?0:1,transform:`translate(-${l}px, -${l/2}px)`}}),(0,O.jsx)("div",{title:"south",onMouseDown:v,style:{...R,cursor:"s-resize",position:"absolute",height:l,width:l*2,left:"50%",bottom:0,opacity:i?0:1,transform:`translate(-${l}px, ${l/2}px)`}})]}),(0,O.jsx)("div",{title:"north-east",onMouseDown:b,style:{...R,cursor:"ne-resize",position:"absolute",height:l,width:l,right:0,top:0,transform:`translate(${l/2}px, -${l/2}px)`}}),(0,O.jsx)("div",{title:"south-east",onMouseDown:g,style:{...R,cursor:"se-resize",position:"absolute",height:l,width:l,bottom:0,right:0,transform:`translate(${l/2}px, ${l/2}px)`}}),(0,O.jsx)("div",{title:"south-west",onMouseDown:y,style:{...R,cursor:"sw-resize",position:"absolute",height:l,width:l,bottom:0,left:0,transform:`translate(-${l/2}px, ${l/2}px)`}}),(0,O.jsx)("div",{title:"north-west",onMouseDown:x,style:{...R,cursor:"nw-resize",position:"absolute",height:l,width:l,top:0,left:0,transform:`translate(-${l/2}px, -${l/2}px)`}})]}):null}):null]})})}var Un=require("react/jsx-runtime");function Rr({id:e,interactive:t,region:n,onClick:o,onHover:a,onSave:i,aspectRatio:r,maintainAspectRatio:s,disableCardinalControls:l,isEditing:u,style:m={backgroundColor:"rgba(0,0,0,.5)"}}){let c=(0,Cr.useCallback)(d=>{u&&i?.({id:n.id,x:n.x,y:n.y,height:n.height,width:n.width,...d})},[i,u,n.id,n.x,n.y,n.height,n.width]);return(0,Un.jsx)(br,{id:e,x:n.x,y:n.y,width:n.width,aspectRatio:r,height:n.height,resizable:u,onSave:c,maintainAspectRatio:s,disableCardinalControls:l,children:(0,Un.jsx)("box",{interactive:t,onClick:d=>{d.preventDefault(),d.stopPropagation(),o?.(n)},relativeStyle:!0,onMouseEnter:()=>{a?.(n)},target:{x:0,y:0,width:n.width,height:n.height},style:m})})}var Pr=require("react/jsx-runtime"),Ze=({id:e,style:t,className:n,interactive:o,targetId:a,ignoreTargetId:i})=>{let r=Ft({id:e}),s=Xe(r,"atlas"),l=Xe(r,"html"),u=qt(r,["atlas"]),m=T(),c=mr(),d=(0,Ar.useMemo)(()=>(0,St.mergeStyles)((0,St.mergeStyles)((0,St.mergeStyles)((0,St.mergeStyles)(t,s),r?.motivation?.includes("highlighting")?c.highlighted:c.default),r?.target?.selector?.boxStyle||{})),[t,s,c,r?.motivation,r?.target]),p=a||m?.id;return m&&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,Pr.jsx)(Rr,{id:r.id,isEditing:!0,region:r.target.selector.spatial,style:d,className:l?.className||n,interactive:!!(l?.href||o),href:l?.href||null,title:l?.title||null,hrefTarget:l?.target||null,onClick:()=>{},...u}):null};var Ir=require("react");var Tr=require("react");function wr(e={},t=[]){let{id:n,selector:o}=e,a=re(),i=n||a.annotationPage,r=E(s=>i?s.iiif.entities.AnnotationPage[i]:void 0,[i]);return(0,Tr.useMemo)(()=>{if(r)return o?o(r):r},[r,...t])}var _n=require("react/jsx-runtime"),Ve=({className:e,page:t,targetId:n,ignoreTargetId:o})=>{let a=wr({id:t.id})||t,i=Xe(a,"atlas"),r=Xe(a,"html");return E(s=>a.id?s.iiif.entities.AnnotationPage[a.id]:null,[]),(0,_n.jsx)(Ir.Fragment,{children:a.items?.map(s=>(0,_n.jsx)(Ze,{id:s.id,style:i,className:r?.className||e,targetId:n,ignoreTargetId:o},s.id))})};var xt=require("react"),Wt=require("react/jsx-runtime"),Ka=(0,xt.createContext)(null),Qa=(0,xt.createContext)(null),Xa=(0,xt.createContext)(null);function Ut({actions:e,state:t,children:n,currentTime:o,progress:a,element:i}){return(0,Wt.jsx)(Xa.Provider,{value:{currentTime:o,progress:a,element:i},children:(0,Wt.jsx)(Qa.Provider,{value:e,children:(0,Wt.jsx)(Ka.Provider,{value:t,children:n})})})}var Mr=require("react");var kr=require("@iiif/helpers");function _t(){let e=q(),t=T();return(0,Mr.useMemo)(()=>{if(!e||!t||!e.start)return null;let n=(0,kr.expandTarget)(e.start);return!n||n.source.id!==t.id||!n||!n.selector||n.selector.type!=="TemporalSelector"?null:n.selector.temporal},[e,t])}var L=require("react");function Er(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function Za(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 Yn(e){let t=Math.round(e);return`${Math.floor(t/60)}:${`${t%60}`.padStart(2,"0")}`}function Je(e){let[t,n]=(0,L.useReducer)(Za,Er(e.duration));(0,L.useEffect)(()=>{n({type:"RESET",state:Er(e.duration)})},[e.duration]);let o=(0,L.useRef)(null),a=(0,L.useRef)(null),i=(0,L.useRef)(null),r=(0,L.useRef)(!1),s=(0,L.useCallback)(()=>{a.current&&o.current&&(a.current.innerHTML=Yn(o.current.currentTime),i.current&&(i.current.style.width=`${o.current.currentTime/e.duration*100}%`),r.current!==o.current.muted&&(r.current=o.current.muted,n(o.current.muted?{type:"MUTE"}:{type:"UNMUTE"})))},[e.duration]),l=(0,L.useCallback)(()=>{o.current&&(n({type:"PLAY_REQUESTED"}),o.current.play().then(()=>{n({type:"PLAY"})}),s())},[s]),u=(0,L.useCallback)(()=>{o.current&&(o.current.duration>0&&o.current.paused?l():m())},[s]),m=(0,L.useCallback)(()=>{o.current&&(o.current.pause(),n({type:"PAUSE"}),s())},[s]),c=(0,L.useCallback)(()=>{o.current&&(o.current.muted=!o.current.muted,n(o.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),d=(0,L.useCallback)(()=>{o.current&&(o.current.muted=!0,n({type:"MUTE"}))},[]),p=(0,L.useCallback)(()=>{o.current&&(o.current.muted=!1,n({type:"UNMUTE"}))},[]),f=(0,L.useCallback)(S=>{o.current&&(o.current.muted=!1,o.current.volume=S/100,n({type:"SET_VOLUME",volume:S}))},[]),h=(0,L.useCallback)(S=>{o.current&&(o.current.currentTime=Math.max(0,Math.min(S*e.duration,e.duration)),s())},[]),v=(0,L.useCallback)(S=>{if(o.current){let g=typeof S=="function"?S(o.current.currentTime):S;o.current.currentTime=Math.max(0,Math.min(g,e.duration)),s()}},[]);return(0,L.useEffect)(()=>{let S=setInterval(()=>{s()},350);return()=>clearInterval(S)},[s,e.duration]),(0,L.useEffect)(()=>{let S=()=>{n({type:"FINISHED"})},g=o.current;return g?.addEventListener("ended",S),()=>g?.removeEventListener("ended",S)},[]),[{element:o,currentTime:a,progress:i},t,{play:l,pause:m,playPause:u,mute:d,unmute:p,toggleMute:c,setVolume:f,setDurationPercent:h,setTime:v}]}var Ne=require("react"),jn=(0,Ne.createContext)(()=>{}),Gn=(0,Ne.createContext)(()=>{});function j(e,t,n,o,a=[]){let i=(0,Ne.useContext)(e==="portal"?Gn:jn);(0,Ne.useEffect)(()=>(e!=="none"&&i(t,n,o),()=>{i(t,null)}),[t,e,i,...a])}var jt=require("react/jsx-runtime");function Kn({media:e,startTime:t,children:n}){let[{element:o,currentTime:a,progress:i},r,s]=Je({duration:e.duration}),l=t?`${e.url}#t=${t}`:e.url;return(0,jt.jsxs)(Ut,{state:r,actions:s,currentTime:a,progress:i,element:o,children:[(0,jt.jsx)("audio",{ref:o,src:l}),n]},e.url)}function Yt({media:e,mediaControlsDeps:t,audioCopmonent:n=Kn,children:o}){let a=_t();return j("portal","audio",n,{media:e,startTime:a?a.startTime:null,children:o},[e,a,...t||[]]),null}var Gt=require("react"),Le=(0,Gt.createContext)(null);Le.displayName="Strategy";function z(){let e=(0,Gt.useContext)(Le);if(!e)throw new Error("useStrategy must be used within a StrategyProvider");return e}var Ce=require("react/jsx-runtime");function Qn({model:e}){return(0,Ce.jsxs)(Ce.Fragment,{children:[(0,Ce.jsx)("style",{children:`
3
3
  .model-container {
4
4
  position: absolute;
@@ -1 +1 @@
1
- import{$b as a}from"./chunk-RZMYSBUB.js";import"./chunk-P7XHGETS.js";export{a as CanvasPanel};
1
+ import{$b as a}from"./chunk-W674L2PN.js";import"./chunk-P7XHGETS.js";export{a as CanvasPanel};
@@ -1,4 +1,4 @@
1
- import{c as fn,l as gn}from"./chunk-P7XHGETS.js";import{forwardRef as _r,useImperativeHandle as ru,useMemo as iu}from"react";import jr,{useContext as Kr,useMemo as Yr}from"react";import{jsx as Qr}from"react/jsx-runtime";var Gr={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},_e=jr.createContext(Gr),j=()=>Kr(_e);function ae({value:e,children:t}){let n=j(),o=Yr(()=>({...n,...e}),[e,n]);return Qr(_e.Provider,{value:o,children:t})}import{jsx as Xr}from"react/jsx-runtime";function ne({canvas:e,children:t}){return Xr(ae,{value:{canvas:e},children:t})}import Zr,{useState as Jr}from"react";import{Vault as hn,globalVault as ei}from"@iiif/helpers/vault";import{jsx as yn}from"react/jsx-runtime";var ue=Zr.createContext({vault:null,setVaultInstance:e=>{}});function he({vault:e,vaultOptions:t,useGlobal:n,resources:o,children:s}){let[i,r]=Jr(()=>e||(n?ei(t):t?new hn(t):new hn));return yn(ue.Provider,{value:{vault:i,setVaultInstance:r},children:yn(ae,{value:o||{},children:s})})}import{useContext as ri}from"react";import ii from"react";import{useContext as ti}from"react";var M=()=>{let{vault:e}=ti(ue);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};import{useEffect as ni,useState as oi}from"react";function k(e,t=[]){let n=M(),[o,s]=oi(()=>e(n.getState(),n));return ni(()=>n.subscribe(i=>e(i,n),i=>{s(i)},!1),t),o}var ye=ii.createContext([]);function je(){let e=ri(ye);return k(t=>e.map(n=>t.iiif.entities.Canvas[n]).filter(Boolean),[e])}import{globalVault as ai}from"@iiif/helpers/vault";import{useContext as si}from"react";function ve(e){let t=si(ue);return e||(t&&t.vault?t.vault:ai())}import{useMemo as li}from"react";function O(e={},t=[]){let{id:n,selector:o}=e,s=j(),i=M(),r=n||s.manifest,a=k(l=>r?l.iiif.entities.Manifest[r]:void 0,[r]);return li(()=>{if(a)return o?o(a):a},[a,o,...t])}import{useContext as Vi}from"react";import{createContext as Ni,useMemo as Li}from"react";import{useEffect as ui,useMemo as ci,useState as Ct}from"react";function vn(e,{noCache:t=!1}={}){let n=typeof e=="string"?e:e.id,o=ve(),[s,i]=Ct(n),[r,a]=Ct(void 0),l=ci(()=>o.get(n,{skipSelfReturn:!0})||void 0,[n,o]),[u,d]=Ct(l);return ui(()=>{(async()=>{try{let c=l&&!t?l:await o.load(n),m=c?c.id||c["@id"]:null;c&&s!==m&&i(m),d(c)}catch(c){a(c)}})()},[n,t]),{isLoaded:!!u,id:s,requestId:n,error:r,resource:u,cached:!!(u&&u===l)}}function Sn(e,t){let{id:n,isLoaded:o,error:s,resource:i,requestId:r,cached:a}=vn(e,t);return{id:n,isLoaded:o,error:s,manifest:i,requestId:r,cached:a}}import{jsx as di}from"react/jsx-runtime";function xn({manifest:e,children:t}){return di(ae,{value:{manifest:e},children:t})}import{jsx as mi}from"react/jsx-runtime";function bn({range:e,children:t}){return mi(ae,{value:{range:e},children:t})}function pi(e,t){for(let n of t.items){if(n.type==="Canvas")return n;if(n.type==="SpecificResource")return n.source;if(n.type==="Range"){let o=pi(e,e.get(n));if(o)return o}}return null}function Rt(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(...Rt(e,e.get(o))),o.type==="SpecificResource"){let s=typeof o.source=="string"?o.source:o.source.id;n.push({id:s,type:"Canvas"})}return n}function rc(e,t,n){for(let o of t.structures){let s=Cn(e,e.get(o),n);if(s)return s}return null}function Cn(e,t,n){for(let o of t.items){let s=o?.source?.id?.split("#")[0];if(o.type==="SpecificResource"&&o.source===n||o.type==="SpecificResource"&&o.source?.type==="Canvas"&&n===s)return t;if(o.type==="Range"){let i=Cn(e,e.get(o),n);if(i)return i}}return null}function sc(e,t,n,o=!1){let s=t.behavior,i=n?e.get(n):null;if(!i)return[];let r=i.behavior,a=o?!1:s.includes("paged"),l=a?!1:s.includes("continuous"),u=a||l?!1:s.includes("individuals"),d=r.includes("facing-pages"),c=r.includes("non-paged");if(d||c||u||o)return[{id:i.id,type:"Canvas"}];let[m,p]=At(e,t);if(l)return m;let g=m.findIndex(h=>h.id===n);if(g===-1)return[];for(let h of p)if(h.includes(g))return h.map(S=>m[S]);return[{id:i.id,type:"Canvas"}]}function At(e,t,{disablePaging:n,skipNonPaged:o}={}){let s=t.behavior,i=s.includes("paged"),r=i?!1:s.includes("continuous"),a=i||r?!1:s.includes("individuals"),l=t.type==="Manifest"?t.items:Rt(e,t);if(r)return[l,[l.map((g,h)=>h)]];if(a||!i||n)return[l,l.map((g,h)=>[h])];let u=[],d=[],c=()=>{d.length&&(u.push([...d]),d=[])},m=0,p=!1;for(let g=0;g<l.length;g++){let h=e.get(l[g]);if(h.behavior.includes("non-paged")){g===m&&m++,o||(c(),u.push([g]),c());continue}if(g===m||h.behavior.includes("facing-pages")){d.length&&(p=!0),c(),u.push([g]),c();continue}if(d.push(g),p){c(),p=!1;continue}d.length>1&&c()}return d.length&&c(),[l,u]}import{useCallback as Ke,useMemo as gi,useRef as hi,useState as yi}from"react";import{useMemo as fi}from"react";function Rn(e={},t=[]){let{id:n,selector:o}=e,s=j(),i=n||s.range,r=k(a=>i?a.iiif.entities.Range[i]:void 0,[i]);return fi(()=>{if(r)return o?o(r):r},[r,o,...t])}function An({startCanvas:e,disablePaging:t}){let n=M(),o=O(),s=Rn(),[i,r]=yi(void 0),a=s||o;if(!a)throw new Error("Nothing selected");let[l,u]=gi(()=>At(n,a,{disablePaging:t}),[n,a,t]),d=hi(u);if(d.current!==u){let S=d.current[i][0],v=u.findIndex(f=>f.includes(S));d.current=u,r(v)}let c=Ke(h=>{let S=u.findIndex(v=>v.includes(h));r(S===-1?0:S)},[l,u]),m=Ke(h=>{let S=l.findIndex(v=>v.id===h);S!==-1?c(S):r(0)},[l,u]),p=Ke(()=>{r(h=>h>=u.length-1?h:h+1)},[u]),g=Ke(()=>{r(h=>h<=0?0:h-1)},[u]);return typeof i>"u"&&(e?m(e):r(0)),{visibleItems:u[i]?.map(h=>l[h].id)||[],cursor:i,items:l,sequence:u,hasPrevious:i>0,hasNext:i<u.length-1,setSequenceIndex:r,setCanvasIndex:c,setCanvasId:m,next:p,previous:g}}import{createContext as Tt,useContext as zn,useEffect as Si,useMemo as xi}from"react";import{useStore as Ve}from"zustand";import{createStore as wn}from"zustand/vanilla";function xc(e){let t=e.service||e.services||[];for(let n of t)if(n.type==="AuthProbeService2")return!0;return!1}function K(e,t,n){let o=t.findIndex(r=>r.service.id===e);if(o===-1)return t;let s=[...t],i=n(s[o]);return i===s[o]?t:(s[o]=i,s)}var Tn=()=>wn((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(s=>s.type==="AuthAccessTokenService2");if(!o)throw new Error("Token service not found");e(()=>({authItems:K(n.id,t().authItems,s=>({...s,isPending:!0}))})),Pn(n.service).then(()=>{Pt(o).then(s=>{let i=s.expiresIn,r=Date.now()+i*1e3;e(()=>({authItems:K(n.id,t().authItems,a=>({...a,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:r}}))}))}).catch(s=>{e(()=>({authItems:K(n.id,t().authItems,i=>({...i,isLoggedIn:!1,isPending:!1,error:s.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 s=`${o.id}?origin=${kn()}`,i=window.open(s);e(()=>({authItems:K(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 s=n.service.find(a=>a.type==="AuthAccessTokenService2"),i=n;if(t().authItems.find(a=>a.service.id===n.id)){e(()=>({authItems:K(n.id,t().authItems,a=>({...a,instances:a.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(!s)throw new Error("Token service not found");Pt(s).then(a=>{e(()=>({authItems:K(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:K(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:a.message}))}))})}if(n.profile==="kiosk"){if(!s)throw new Error("Token service not found");e(()=>({authItems:K(n.id,t().authItems,a=>({...a,isPending:!0}))})),Pn(i).then(()=>{Pt(s).then(a=>{e(()=>({authItems:K(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:K(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,error:a.message}))}))})})}n.profile},removeService:(n,o)=>{let s=t().currentAuth===t().authItems.findIndex(r=>r.service.id===n.id),i=t().currentAuth;if(s){let r=t().authItems.find(l=>l.service.id===n.id);r&&r.instances>1||(i=t().authItems.findIndex(u=>u.service.id!==n.id&&u.instances>0))}e(()=>({authItems:K(n.id,t().authItems,r=>({...r,instances:r.instances-1})),currentAuth:i}))}})),In=(e,t)=>wn((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 s=o().service?.id;if(!s){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(s,{headers:i?{Authorization:`Bearer ${o().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(a=>a.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(s){n({token:s})}}));function Mn(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 s=o.service.filter(i=>i.type==="AuthAccessService2");s[0]&&(n.services.access=s[0])}return n}async function Pt(e,{strict:t=!0}={}){return new Promise((n,o)=>{let s=Math.random().toString(36).substring(7),i=`${e.id}?messageId=${s}&origin=${window.location.origin}`,r=u=>{let d=u.data;if(d.messageId===s){if(t&&d.type!=="AuthAccessToken2"){a(),o("Invalid response, expected type=AuthAccessToken2");return}if(!d.accessToken){a(),o("Invalid response, expected accessToken");return}a(),n(d)}},a=()=>window.removeEventListener("message",r),l=document.createElement("iframe");l.src=i,l.style.display="none",document.body.appendChild(l),window.addEventListener("message",r)})}function kn(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 Pn(e){let t=`${e.id}?origin=${kn()}`,n=window.open(t);if(!n)throw new Error("Failed to open window");return new Promise((o,s)=>{let i=setInterval(()=>{n.closed&&(clearInterval(i),o())},500)})}import{useEffect as En,useMemo as Vn}from"react";import{useStore as vi}from"zustand";function Nn(e){let t=Vn(()=>Mn(e),[e]),n=Ln(t.services.access?.id),o=Vn(()=>In(t.services.probe,n),[t.services.probe]),s=vi(o);return En(()=>{s.status==="unknown"&&!n&&s.probe()},[t.services.probe,s.status]),En(()=>{n&&(s.setToken(n),s.probe())},[n]),[e,s,t.hasAuth]}import{jsx as Ye}from"react/jsx-runtime";var Se=Tt(null),bi=Tt(null);bi.displayName="CurrentAuth";var Ci=Tt(null);Ci.displayName="AuthActions";function On({children:e}){let t=xi(()=>Tn(),[]);return Ye(Se.Provider,{value:t,children:e})}function Bn(){return!!zn(Se)}function Ne(){let e=zn(Se);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function Ri(){let e=Ne();return Ve(e,n=>({login:n.login,logout:n.logout,nextAuth:n.nextAuth,previousAuth:n.previousAuth,setAuth:n.setAuth,addService:n.addService,removeService:n.removeService}))}function Hc(){let e=Ne();return Ve(e,t=>t)}function Ai(e){let t=Ne();return Ve(t,o=>o.authItems.find(s=>s.service.id===e))}function Ln(e){let t=Ne();return Ve(t,o=>o.authItems.find(s=>s.id===e)?.session?.token)}function Dc(e){let t=Ne();return Ve(t,o=>{let s=o.authItems.find(i=>i.service.id===e);return!s||!s.isLoggedIn||!s.session?null:s.session?.token||null})}function Pi(e){let t=Ri(),n=Ai(e.service.id);return Si(()=>(t?.addService(e.service,e.probeId),()=>{t?.removeService(e.service,e.probeId)}),[e.service]),n?(n.error||!n.isLoggedIn,e.children):null}function wt(){return null}function Hn(e){let[t,n,o]=Nn(e.resource),s=e.fallbackComponent||wt,i=e.loadingComponent||wt,r=e.errorComponent||wt,a=n.service,l=null;if(!o||!a)return e.children(t);let u=a.service.filter(d=>d.type==="AuthAccessService2");n.status==="error"&&(l=Ye(r,{resource:e.resource,error:n.error||"",heading:n.errorHeading,note:n.errorNote,extra:e.extra})),(n.status==="unknown"||n.status==="probing")&&(l=Ye(i,{})),n.status==="success"&&(l=e.children(t));for(let d of u)l=Ye(Pi,{service:d,probeId:a.id,children:l},d.id);return l}import{createContext as Mi,useContext as Yc,useMemo as ki}from"react";import{createStore as wi}from"zustand/vanilla";var Ti=e=>e.id||e["@id"];function Ii(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 Dn=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?Ti(t):void 0,o=null;return wi((s,i)=>({service:t,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!t,hasAutocomplete:t?!!Ii(t):!1,errorMessage:"",search(r,a={}){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),s({loading:!0}),fetch(`${n}?${l.toString()}`,{signal:o.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...a.headers||{}}}).then(async u=>{if(!o?.signal.aborted)if(u.ok){let d=await u.json();s({resources:d.resources,error:!1,errorMessage:""})}else s({resources:[],error:!0,errorMessage:u.statusText})})},clearSearch(){s({resources:[],error:!1,errorMessage:""})},highlightResult(r){let a=i().resources.find(l=>l["@id"]===r);s({highlight:a})},nextResult(){let r=i().resources,a=i().highlight;if(!a){s({highlight:r[0]||null});return}let l=r.findIndex(u=>u["@id"]===a["@id"]);if(l===-1){s({highlight:r[0]||null});return}s({highlight:r[l+1]||r[0]||null})},previousResult(){let r=i().resources,a=i().highlight;if(!a){s({highlight:r[r.length-1]||null});return}let l=r.findIndex(u=>u["@id"]===a["@id"]);if(l===-1){s({highlight:r[r.length-1]||null});return}if(l===0){s({highlight:r[r.length-1]||null});return}s({highlight:r[l-1]||r[r.length-1]||null})}}))};import{useStore as Jc}from"zustand";function qn(){let e=O();return e?e.service.find(t=>t.profile==="SearchService1"||t.profile==="http://iiif.io/api/search/1/search"):void 0}import{jsx as It}from"react/jsx-runtime";var xe=Mi(null);xe.displayName="Search";function Fn(e){let t=qn();return e.store?It(xe.Provider,{value:e.store,children:e.children}):It(Ei,{service:t,children:e.children})}function Ei({service:e,children:t}){let n=ki(()=>Dn(e),[e]);return It(xe.Provider,{value:n,children:t})}import{jsx as W}from"react/jsx-runtime";var Le=()=>{},ze=Ni({setCurrentCanvasId:Le,setCurrentCanvasIndex:Le,nextCanvas:Le,previousCanvas:Le,items:[],sequence:[],setSequenceIndex:Le,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function zi(e){let t=O(),{cursor:n,visibleItems:o,next:s,sequence:i,items:r,setCanvasIndex:a,setCanvasId:l,previous:u,setSequenceIndex:d,hasNext:c,hasPrevious:m}=An({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),p=Li(()=>({sequence:i,items:r,setCurrentCanvasId:l,nextCanvas:s,previousCanvas:u,totalCanvases:r.length,setCurrentCanvasIndex:a,setSequenceIndex:d,currentSequenceIndex:n,hasNext:c,hasPrevious:m}),[i,r,l,s,u,r,a,d,n]);return t?o.length===0?null:W(ze.Provider,{value:p,children:W(ye.Provider,{value:o,children:W(ne,{canvas:o[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),W("div",{children:"Sorry, something went wrong."}))}function $n(e){let t=ve(e.vault),n=Sn(e.manifest);if(!n)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),W("div",{children:"Sorry, something went wrong."});if(n.error)return W("div",{children:n.error.toString()});if(!n.isLoaded)return W("div",{children:"Loading..."});let o=W(zi,{...e,children:e.children});return W(he,{vault:t,children:W(xn,{manifest:n.id,children:W(On,{children:W(Fn,{children:e.rangeId?W(bn,{range:e.rangeId,children:o}):o})})})})}function Ge(){return Vi(ze)}import{ModeContext as _i}from"@atlas-viewer/atlas";import{createContext as ji,useContext as Gn,useEffect as Ki,useMemo as Yi}from"react";import{useStore as Gi}from"zustand";import Oi from"mitt";import{createContext as Bi,useContext as Wn,useEffect as Hi}from"react";import{jsx as qi}from"react/jsx-runtime";var Di=Oi(),Mt=Bi(Di);function Td({children:e,emitter:t}){return qi(Mt.Provider,{value:t,children:e})}function Un(){return Wn(Mt)}function _n(e,t,n=[]){let o=Wn(Mt);Hi(()=>{let s=i=>{t(i)};return o.on(e,s),()=>{o.off(e,s)}},[o,e,...n])}import{createHelper as $i}from"polygon-editor";import{createStore as Wi}from"zustand/vanilla";function kt(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])),s=Math.min(...e.map(i=>i[1]));for(let i of e)if(i[0]!==n&&i[0]!==t&&i[1]!==s&&i[1]!==o||i[0]<n||i[0]>t||i[1]<s||i[1]>o)return!1;return!0}function be(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])),s=Math.max(0,...e.points.map(i=>i[1]));return{x:t,y:n,width:o-t,height:s-n}}return null}function Fi(e){return e.type==="SvgSelector"}function Vd(e){return e.type==="BoxSelector"}function Et(e,t){if(Fi(e)){let r=e.svgShape==="polyline";if(!e.points||e.points.length===0)return null;if(t){let{width:a,height:l}=t;return{type:"SvgSelector",value:`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${a} ${l}" width="${a}" height="${l}"><${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(a=>a.join(",")).join(" ")}${r?" Z":""}' /></g></svg>`}}if(!e.spatial)return null;let{x:n,y:o,width:s,height:i}=e.spatial||{};return!s||!i?null:{type:"FragmentSelector",value:`xywh=${~~n},${~~o},${~~s},${~~i}`}}function Vt(e,t){if(!e||!e.points.length)return null;if(kt(e.points)){let n=e.points.map(l=>l[0]),o=e.points.map(l=>l[1]),s=Math.min(...n),i=Math.min(...o),r=Math.max(...n)-s,a=Math.max(...o)-i;return Et({type:"BoxSelector",spatial:{x:s,y:i,width:r,height:a}},t)}return Et({type:"SvgSelector",points:e.points,svgShape:e.open?"polygon":"polyline"},t)}function jn(e){if(e.type==="polygon"&&!e.noBox&&e.points&&kt(e.points)){let n=be({open:!1,points:e.points||[]});return jn({...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:be({points:e.points||[],open:!1}),metadata:{},arguments:e.arguments||{},target:Vt({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:Vt({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 Ui={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 Kn({events:e,enabledTools:t,keyboardShortcutMapping:n,keyboardShortcutsEnabled:o=!1,debug:s}){let i=Wi((a,l)=>{let u=null,c=$i({emitter:e,keyboardShortcutsEnabled:o,keyboardShortcutMapping:n,enabledTools:t,customSetState:m=>{s&&console.log("partial state",m),a(p=>({polygonState:{...p.polygonState,...m}}))}},m=>{a(p=>p.tool.requestId?{polygon:{...m,id:p.tool.requestId}}:{polygon:{id:void 0,points:[],open:!0}}),e.emit("atlas.polygon-update",m)});return{mode:"explore",tool:{enabled:!1,requestId:null,canvasId:null},runtime:null,requestType:null,requests:{},history:c.history,polygon:null,validRequestIds:[],metadata:{},stableViewport:null,canvasRelativePositions:{},canvasViewports:{},polygons:c,polygonState:Ui,setMetadata:(m,p)=>{let g=p||l().tool.requestId;g&&a(h=>({metadata:{...h.metadata,[g]:{...h.metadata[g]||{},...m}}}))},setToolCanvasId:m=>{a(p=>({tool:{...p.tool,canvasId:m}}))},switchTool:{pointer(){a({mode:"sketch"}),r.tools.setTool("pointer")},hand(){a({mode:"explore"}),r.tools.setTool("hand")},draw(){a({mode:"sketch"}),r.tools.setTool("pencil")},pen(){a({mode:"sketch"}),r.tools.setTool("pen")},line(){a({mode:"sketch"}),r.tools.setTool("line")},lineBox(){a({mode:"sketch"}),r.tools.setTool("lineBox")},box(){a({mode:"sketch"}),r.tools.setTool("box")},triangle(){a({mode:"sketch"}),r.tools.setTool("stamp"),r.stamps.triangle()},hexagon(){a({mode:"sketch"}),r.tools.setTool("stamp"),r.stamps.hexagon()},circle(){a({mode:"sketch"}),r.tools.setTool("stamp"),r.stamps.circle()},remove(){let m=l();m.tool.requestId&&(c.setShape({points:[],open:!0}),m.cancelRequest(m.tool.requestId))}},reset:()=>{let m=l();m.tool.requestId&&m.cancelRequest(m.tool.requestId)},setPolygonState:m=>a({polygonState:typeof m=="function"?m(l().polygonState):m}),getRequestId:()=>{let m=Math.random().toString(36).slice(2);return a(p=>({validRequestIds:[...p.validRequestIds,m]})),{requestId:m,clear:()=>{l().tool.requestId,a(p=>({tool:p.tool.requestId===m?{enabled:!1,requestId:null,canvasId:null}:p.tool,validRequestIds:p.validRequestIds.filter(g=>g!==m)}))}}},cancelRequest:m=>{let p=m||l().tool.requestId;p&&(a(g=>({mode:"explore",tool:g.tool.requestId===p?{enabled:!1,requestId:null,canvasId:null}:g.tool,validRequestIds:g.validRequestIds.filter(h=>h!==p)})),e.emit("atlas.request-cancelled",{id:p}))},requestAnnotation:async(m,p)=>{let h={...l().requests,[p.requestId]:m},S=jn(m);s&&console.log("requestAnnotation",{response:S,request:m});try{let{points:v=[],open:f=!0}=S.polygon||{},{requestId:y,canvasId:x=null,toolId:b}=p,C=b,R=l(),A=R.validRequestIds.includes(y),N=S.requestType;return s&&console.log("setting points",{requestType:N,points:v,open:f}),!A||R.tool.enabled?null:(c.setShape({id:y,points:v,open:f}),N==="polygon"&&(C=C||"pen",c.tools.setTool("pen")),N==="draw"&&(C=C||"draw",c.tools.setTool("pencil")),N==="box"&&(C=C||"box",c.tools.setTool("box")),N==="target"?(C=C||"box",c.tools.setTool("box"),c.lockAspectRatio(),c.tools.lockToolSwitching(),c.tools.setCanDeselect(!1),c.tools.setCanDelete(!1)):(c.tools.unlockToolSwitching(),c.tools.setCanDeselect(!0),c.tools.setCanDelete(!0)),m.bounds&&c.setBounds(m.bounds),e.emit("atlas.annotation-request",{id:y}),a({polygon:{id:y,points:v,open:f},mode:"sketch",requestType:N,tool:{enabled:!0,requestId:y,canvasId:x},requests:h}),C?R.switchTool[C]?.():v.length===0&&R.switchTool.box(),(typeof m.selectByDefault>"u"&&v.length&&N==="box"||m.selectByDefault)&&R.switchTool.pointer(),new Promise(X=>{let T=_=>{_.id===y&&(a(P=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(P.requests).filter(([I])=>I!==y))})),e.off("atlas.request-cancelled",T),e.off("atlas.annotation-completed",z),X(null))},z=_=>{_.id===y&&(a(P=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(P.requests).filter(([I])=>I!==y))})),e.off("atlas.annotation-completed",z),e.off("atlas.request-cancelled",T),X(_))};e.on("atlas.request-cancelled",T),e.on("atlas.annotation-completed",z)}))}catch(v){return console.error(v),null}},completeRequest:m=>{let p=l().tool.requestId;if(typeof m=="string"&&m&&m!==p)return;let g=p?l().requests[p]?.arguments||{}:{},h=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:Vt(v,S),canvasId:l().tool.canvasId,boundingBox:be(v),metadata:h,arguments:{...g}}),c.setShape(null))},setAtlasRuntime:m=>{u=m,e.emit("atlas.ready",{runtime:m}),r.setScale(1/u._lastGoodScale),u.world.addLayoutSubscriber((p,g)=>{(p==="event-activation"||p==="zoom-to"||p==="go-home")&&u?._lastGoodScale&&!Number.isNaN(u._lastGoodScale)&&r.setScale(1/u._lastGoodScale)}),a({runtime:u})},clearAtlasRuntime:()=>{u=null,a({stableViewport:null,runtime:null})},setCanvasRelativePosition:(m,p)=>{a(g=>({canvasRelativePositions:{...g.canvasRelativePositions,[m]:p}}))},clearCanvasRelativePosition:m=>{a(p=>{let g={...p.canvasRelativePositions};return delete g[m],{canvasRelativePositions:g}})},changeMode:m=>{a({mode:m})},nudgeLeft:m=>{if(!u)return;let p=u.getViewport(),g=m??p.width*.1;u.world.gotoRegion({x:p.x-g,y:p.y,width:p.width,height:p.height,nudge:!0})},nudgeRight:m=>{if(!u)return;let p=u.getViewport(),g=m??p.width*.1;u.world.gotoRegion({x:p.x+g,y:p.y,width:p.width,height:p.height,nudge:!0})},nudgeUp:m=>{if(!u)return;let p=u.getViewport(),g=m??p.height*.1;u.world.gotoRegion({x:p.x,y:p.y-g,width:p.width,height:p.height,nudge:!0})},nudgeDown:m=>{if(!u)return;let p=u.getViewport(),g=m??p.height*.1;u.world.gotoRegion({x:p.x,y:p.y+g,width:p.width,height:p.height,nudge:!0})},zoomIn:()=>{u?.world?.zoomIn()},zoomOut:()=>{u?.world?.zoomOut()},goHome:()=>{u?.world?.goHome()},goToRegion:m=>{u?.world?.gotoRegion(m)},getRuntime:()=>u}}),r=i.getState().polygons;return e.on("atlas.annotation-request",()=>{r.clock.start((a,l,u)=>{e.emit("atlas.polygon-render",{state:a,slowState:l,dt:u})},a=>{typeof a=="object"?i.setState({polygonState:a}):i.setState(l=>({polygonState:a(l.polygonState)}))})}),e.on("atlas.annotation-completed",()=>{r.clock.stop()}),e.on("atlas.request-cancelled",()=>{r.clock.stop()}),i}import{jsx as Yn}from"react/jsx-runtime";var Ce=ji(null);function D(){return Gn(Ce)}var Nt={};function Qn(e="atlas"){return Nt[e]?.getState()}function Oe({children:e,name:t="atlas",existing:n,atlasStoreConfig:o}){let s=Un(),i=Gn(Ce),r=Yi(()=>n||i||Kn({events:s,...o||{}}),[s,n,i]),a=Gi(r,l=>l.mode);return Ki(()=>{let l=t;return l&&(Nt[l]=r),()=>{l&&delete Nt[l]}},[r,t]),Yn(Ce.Provider,{value:r,children:Yn(_i.Provider,{value:a||"explore",children:e})})}import{mergeStyles as Ze}from"@atlas-viewer/atlas";import{useMemo as fa}from"react";import{createContext as Qi,useContext as Xi,useMemo as Zi}from"react";import{jsx as Ji}from"react/jsx-runtime";function Xn(){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 Lt=Qi(Xn());Lt.displayName="AnnotationStyle";function Zn(){return Xi(Lt)}function Gd({theme:e,children:t}){let n=Zi(()=>e||Xn(),[e]);return Ji(Lt.Provider,{value:n,children:t})}import{expandTarget as ia}from"@iiif/helpers/annotation-targets";import{useMemo as aa}from"react";import{useEffect as ea,useMemo as ta,useState as na}from"react";import{create as oa}from"zustand";var ra=oa()((e,t)=>{let n=new Map,o=()=>Math.random().toString(36).substring(2,15),s=i=>{let r=n.get(i);if(r)return r;let a=o();return n.set(i,a),a};return{stylesheets:{},loading:[],errors:[],async parseStylesheet(i){let{loadStylesheet:r,setStylesheet:a}=t();if(!i)return null;if(typeof i=="string")return i.startsWith("http")?{id:i,type:"CssStylesheet",value:await r(i)}:{id:a(i),type:"CssStylesheet",value:i};if(i.type==="CssStylesheet"){let l=i.id;if("value"in i){let u=Array.isArray(i.value)?i.value.join(`
1
+ import{c as fn,l as gn}from"./chunk-P7XHGETS.js";import{forwardRef as _r,useImperativeHandle as ru,useMemo as iu}from"react";import jr,{useContext as Kr,useMemo as Yr}from"react";import{jsx as Qr}from"react/jsx-runtime";var Gr={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},_e=jr.createContext(Gr),j=()=>Kr(_e);function ae({value:e,children:t}){let n=j(),o=Yr(()=>({...n,...e}),[e,n]);return Qr(_e.Provider,{value:o,children:t})}import{jsx as Xr}from"react/jsx-runtime";function ne({canvas:e,children:t}){return Xr(ae,{value:{canvas:e},children:t})}import Zr,{useState as Jr}from"react";import{Vault as hn,globalVault as ei}from"@iiif/helpers/vault";import{jsx as yn}from"react/jsx-runtime";var ue=Zr.createContext({vault:null,setVaultInstance:e=>{}});function he({vault:e,vaultOptions:t,useGlobal:n,resources:o,children:s}){let[i,r]=Jr(()=>e||(n?ei(t):t?new hn(t):new hn));return yn(ue.Provider,{value:{vault:i,setVaultInstance:r},children:yn(ae,{value:o||{},children:s})})}import{useContext as ri}from"react";import ii from"react";import{useContext as ti}from"react";var M=()=>{let{vault:e}=ti(ue);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};import{useEffect as ni,useState as oi}from"react";function k(e,t=[]){let n=M(),[o,s]=oi(()=>e(n.getState(),n));return ni(()=>n.subscribe(i=>e(i,n),i=>{s(i)},!1),t),o}var ye=ii.createContext([]);function je(){let e=ri(ye);return k(t=>e.map(n=>t.iiif.entities.Canvas[n]).filter(Boolean),[e])}import{globalVault as ai}from"@iiif/helpers/vault";import{useContext as si}from"react";function ve(e){let t=si(ue);return e||(t&&t.vault?t.vault:ai())}import{useMemo as li}from"react";function O(e={},t=[]){let{id:n,selector:o}=e,s=j(),i=M(),r=n||s.manifest,a=k(l=>r?l.iiif.entities.Manifest[r]:void 0,[r]);return li(()=>{if(a)return o?o(a):a},[a,o,...t])}import{useContext as Vi}from"react";import{createContext as Ni,useMemo as Li}from"react";import{useEffect as ui,useMemo as ci,useState as Ct}from"react";function vn(e,{noCache:t=!1}={}){let n=typeof e=="string"?e:e.id,o=ve(),[s,i]=Ct(n),[r,a]=Ct(void 0),l=ci(()=>o.get(n,{skipSelfReturn:!0})||void 0,[n,o]),[u,d]=Ct(l);return ui(()=>{(async()=>{try{let c=l&&!t?l:await o.load(n),m=c?c.id||c["@id"]:null;c&&s!==m&&i(m),d(c)}catch(c){a(c)}})()},[n,t]),{isLoaded:!!u,id:s,requestId:n,error:r,resource:u,cached:!!(u&&u===l)}}function Sn(e,t){let{id:n,isLoaded:o,error:s,resource:i,requestId:r,cached:a}=vn(e,t);return{id:n,isLoaded:o,error:s,manifest:i,requestId:r,cached:a}}import{jsx as di}from"react/jsx-runtime";function xn({manifest:e,children:t}){return di(ae,{value:{manifest:e},children:t})}import{jsx as mi}from"react/jsx-runtime";function bn({range:e,children:t}){return mi(ae,{value:{range:e},children:t})}function pi(e,t){for(let n of t.items){if(n.type==="Canvas")return n;if(n.type==="SpecificResource")return n.source;if(n.type==="Range"){let o=pi(e,e.get(n));if(o)return o}}return null}function Rt(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(...Rt(e,e.get(o))),o.type==="SpecificResource"){let s=typeof o.source=="string"?o.source:o.source.id;n.push({id:s,type:"Canvas"})}return n}function rc(e,t,n){for(let o of t.structures){let s=Cn(e,e.get(o),n);if(s)return s}return null}function Cn(e,t,n){for(let o of t.items){let s=o?.source?.id?.split("#")[0];if(o.type==="SpecificResource"&&o.source===n||o.type==="SpecificResource"&&o.source?.type==="Canvas"&&n===s)return t;if(o.type==="Range"){let i=Cn(e,e.get(o),n);if(i)return i}}return null}function sc(e,t,n,o=!1){let s=t.behavior,i=n?e.get(n):null;if(!i)return[];let r=i.behavior,a=o?!1:s.includes("paged"),l=a?!1:s.includes("continuous"),u=a||l?!1:s.includes("individuals"),d=r.includes("facing-pages"),c=r.includes("non-paged");if(d||c||u||o)return[{id:i.id,type:"Canvas"}];let[m,p]=At(e,t);if(l)return m;let g=m.findIndex(h=>h.id===n);if(g===-1)return[];for(let h of p)if(h.includes(g))return h.map(S=>m[S]);return[{id:i.id,type:"Canvas"}]}function At(e,t,{disablePaging:n,skipNonPaged:o}={}){let s=t.behavior,i=s.includes("paged"),r=i?!1:s.includes("continuous"),a=i||r?!1:s.includes("individuals"),l=t.type==="Manifest"?t.items:Rt(e,t);if(r)return[l,[l.map((g,h)=>h)]];if(a||!i||n)return[l,l.map((g,h)=>[h])];let u=[],d=[],c=()=>{d.length&&(u.push([...d]),d=[])},m=0,p=!1;for(let g=0;g<l.length;g++){let h=e.get(l[g]);if(h.behavior.includes("non-paged")){g===m&&m++,o||(c(),u.push([g]),c());continue}if(g===m||h.behavior.includes("facing-pages")){d.length&&(p=!0),c(),u.push([g]),c();continue}if(d.push(g),p){c(),p=!1;continue}d.length>1&&c()}return d.length&&c(),[l,u]}import{useCallback as Ke,useMemo as gi,useRef as hi,useState as yi}from"react";import{useMemo as fi}from"react";function Rn(e={},t=[]){let{id:n,selector:o}=e,s=j(),i=n||s.range,r=k(a=>i?a.iiif.entities.Range[i]:void 0,[i]);return fi(()=>{if(r)return o?o(r):r},[r,o,...t])}function An({startCanvas:e,disablePaging:t}){let n=M(),o=O(),s=Rn(),[i,r]=yi(void 0),a=s||o;if(!a)throw new Error("Nothing selected");let[l,u]=gi(()=>At(n,a,{disablePaging:t}),[n,a,t]),d=hi(u);if(d.current!==u){let S=d.current[i][0],v=u.findIndex(f=>f.includes(S));d.current=u,r(v)}let c=Ke(h=>{let S=u.findIndex(v=>v.includes(h));r(S===-1?0:S)},[l,u]),m=Ke(h=>{let S=l.findIndex(v=>v.id===h);S!==-1?c(S):r(0)},[l,u]),p=Ke(()=>{r(h=>h>=u.length-1?h:h+1)},[u]),g=Ke(()=>{r(h=>h<=0?0:h-1)},[u]);return typeof i>"u"&&(e?m(e):r(0)),{visibleItems:u[i]?.map(h=>l[h].id)||[],cursor:i,items:l,sequence:u,hasPrevious:i>0,hasNext:i<u.length-1,setSequenceIndex:r,setCanvasIndex:c,setCanvasId:m,next:p,previous:g}}import{createContext as Tt,useContext as zn,useEffect as Si,useMemo as xi}from"react";import{useStore as Ve}from"zustand";import{createStore as wn}from"zustand/vanilla";function xc(e){let t=e.service||e.services||[];for(let n of t)if(n.type==="AuthProbeService2")return!0;return!1}function K(e,t,n){let o=t.findIndex(r=>r.service.id===e);if(o===-1)return t;let s=[...t],i=n(s[o]);return i===s[o]?t:(s[o]=i,s)}var Tn=()=>wn((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(s=>s.type==="AuthAccessTokenService2");if(!o)throw new Error("Token service not found");e(()=>({authItems:K(n.id,t().authItems,s=>({...s,isPending:!0}))})),Pn(n.service).then(()=>{Pt(o).then(s=>{let i=s.expiresIn,r=Date.now()+i*1e3;e(()=>({authItems:K(n.id,t().authItems,a=>({...a,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:r}}))}))}).catch(s=>{e(()=>({authItems:K(n.id,t().authItems,i=>({...i,isLoggedIn:!1,isPending:!1,error:s.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 s=`${o.id}?origin=${kn()}`,i=window.open(s);e(()=>({authItems:K(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 s=n.service.find(a=>a.type==="AuthAccessTokenService2"),i=n;if(t().authItems.find(a=>a.service.id===n.id)){e(()=>({authItems:K(n.id,t().authItems,a=>({...a,instances:a.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(!s)throw new Error("Token service not found");Pt(s).then(a=>{e(()=>({authItems:K(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:K(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:a.message}))}))})}if(n.profile==="kiosk"){if(!s)throw new Error("Token service not found");e(()=>({authItems:K(n.id,t().authItems,a=>({...a,isPending:!0}))})),Pn(i).then(()=>{Pt(s).then(a=>{e(()=>({authItems:K(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:K(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,error:a.message}))}))})})}n.profile},removeService:(n,o)=>{let s=t().currentAuth===t().authItems.findIndex(r=>r.service.id===n.id),i=t().currentAuth;if(s){let r=t().authItems.find(l=>l.service.id===n.id);r&&r.instances>1||(i=t().authItems.findIndex(u=>u.service.id!==n.id&&u.instances>0))}e(()=>({authItems:K(n.id,t().authItems,r=>({...r,instances:r.instances-1})),currentAuth:i}))}})),In=(e,t)=>wn((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 s=o().service?.id;if(!s){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(s,{headers:i?{Authorization:`Bearer ${o().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(a=>a.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(s){n({token:s})}}));function Mn(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 s=o.service.filter(i=>i.type==="AuthAccessService2");s[0]&&(n.services.access=s[0])}return n}async function Pt(e,{strict:t=!0}={}){return new Promise((n,o)=>{let s=Math.random().toString(36).substring(7),i=`${e.id}?messageId=${s}&origin=${window.location.origin}`,r=u=>{let d=u.data;if(d.messageId===s){if(t&&d.type!=="AuthAccessToken2"){a(),o("Invalid response, expected type=AuthAccessToken2");return}if(!d.accessToken){a(),o("Invalid response, expected accessToken");return}a(),n(d)}},a=()=>window.removeEventListener("message",r),l=document.createElement("iframe");l.src=i,l.style.display="none",document.body.appendChild(l),window.addEventListener("message",r)})}function kn(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 Pn(e){let t=`${e.id}?origin=${kn()}`,n=window.open(t);if(!n)throw new Error("Failed to open window");return new Promise((o,s)=>{let i=setInterval(()=>{n.closed&&(clearInterval(i),o())},500)})}import{useEffect as En,useMemo as Vn}from"react";import{useStore as vi}from"zustand";function Nn(e){let t=Vn(()=>Mn(e),[e]),n=Ln(t.services.access?.id),o=Vn(()=>In(t.services.probe,n),[t.services.probe]),s=vi(o);return En(()=>{s.status==="unknown"&&!n&&s.probe()},[t.services.probe,s.status]),En(()=>{n&&(s.setToken(n),s.probe())},[n]),[e,s,t.hasAuth]}import{jsx as Ye}from"react/jsx-runtime";var Se=Tt(null),bi=Tt(null);bi.displayName="CurrentAuth";var Ci=Tt(null);Ci.displayName="AuthActions";function On({children:e}){let t=xi(()=>Tn(),[]);return Ye(Se.Provider,{value:t,children:e})}function Bn(){return!!zn(Se)}function Ne(){let e=zn(Se);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function Ri(){let e=Ne();return Ve(e,n=>({login:n.login,logout:n.logout,nextAuth:n.nextAuth,previousAuth:n.previousAuth,setAuth:n.setAuth,addService:n.addService,removeService:n.removeService}))}function Hc(){let e=Ne();return Ve(e,t=>t)}function Ai(e){let t=Ne();return Ve(t,o=>o.authItems.find(s=>s.service.id===e))}function Ln(e){let t=Ne();return Ve(t,o=>o.authItems.find(s=>s.id===e)?.session?.token)}function Dc(e){let t=Ne();return Ve(t,o=>{let s=o.authItems.find(i=>i.service.id===e);return!s||!s.isLoggedIn||!s.session?null:s.session?.token||null})}function Pi(e){let t=Ri(),n=Ai(e.service.id);return Si(()=>(t?.addService(e.service,e.probeId),()=>{t?.removeService(e.service,e.probeId)}),[e.service]),n?(n.error||!n.isLoggedIn,e.children):null}function wt(){return null}function Hn(e){let[t,n,o]=Nn(e.resource),s=e.fallbackComponent||wt,i=e.loadingComponent||wt,r=e.errorComponent||wt,a=n.service,l=null;if(!o||!a)return e.children(t);let u=a.service.filter(d=>d.type==="AuthAccessService2");n.status==="error"&&(l=Ye(r,{resource:e.resource,error:n.error||"",heading:n.errorHeading,note:n.errorNote,extra:e.extra})),(n.status==="unknown"||n.status==="probing")&&(l=Ye(i,{})),n.status==="success"&&(l=e.children(t));for(let d of u)l=Ye(Pi,{service:d,probeId:a.id,children:l},d.id);return l}import{createContext as Mi,useContext as Yc,useMemo as ki}from"react";import{createStore as wi}from"zustand/vanilla";var Ti=e=>e.id||e["@id"];function Ii(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 Dn=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?Ti(t):void 0,o=null;return wi((s,i)=>({service:t,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!t,hasAutocomplete:t?!!Ii(t):!1,errorMessage:"",search(r,a={}){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),s({loading:!0}),fetch(`${n}?${l.toString()}`,{signal:o.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...a.headers||{}}}).then(async u=>{if(!o?.signal.aborted)if(u.ok){let d=await u.json();s({resources:d.resources,error:!1,errorMessage:""})}else s({resources:[],error:!0,errorMessage:u.statusText})})},clearSearch(){s({resources:[],error:!1,errorMessage:""})},highlightResult(r){let a=i().resources.find(l=>l["@id"]===r);s({highlight:a})},nextResult(){let r=i().resources,a=i().highlight;if(!a){s({highlight:r[0]||null});return}let l=r.findIndex(u=>u["@id"]===a["@id"]);if(l===-1){s({highlight:r[0]||null});return}s({highlight:r[l+1]||r[0]||null})},previousResult(){let r=i().resources,a=i().highlight;if(!a){s({highlight:r[r.length-1]||null});return}let l=r.findIndex(u=>u["@id"]===a["@id"]);if(l===-1){s({highlight:r[r.length-1]||null});return}if(l===0){s({highlight:r[r.length-1]||null});return}s({highlight:r[l-1]||r[r.length-1]||null})}}))};import{useStore as Jc}from"zustand";function qn(){let e=O();return e?e.service.find(t=>t.profile==="SearchService1"||t.profile==="http://iiif.io/api/search/1/search"):void 0}import{jsx as It}from"react/jsx-runtime";var xe=Mi(null);xe.displayName="Search";function Fn(e){let t=qn();return e.store?It(xe.Provider,{value:e.store,children:e.children}):It(Ei,{service:t,children:e.children})}function Ei({service:e,children:t}){let n=ki(()=>Dn(e),[e]);return It(xe.Provider,{value:n,children:t})}import{jsx as W}from"react/jsx-runtime";var Le=()=>{},ze=Ni({setCurrentCanvasId:Le,setCurrentCanvasIndex:Le,nextCanvas:Le,previousCanvas:Le,items:[],sequence:[],setSequenceIndex:Le,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function zi(e){let t=O(),{cursor:n,visibleItems:o,next:s,sequence:i,items:r,setCanvasIndex:a,setCanvasId:l,previous:u,setSequenceIndex:d,hasNext:c,hasPrevious:m}=An({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),p=Li(()=>({sequence:i,items:r,setCurrentCanvasId:l,nextCanvas:s,previousCanvas:u,totalCanvases:r.length,setCurrentCanvasIndex:a,setSequenceIndex:d,currentSequenceIndex:n,hasNext:c,hasPrevious:m}),[i,r,l,s,u,r,a,d,n]);return t?o.length===0?null:W(ze.Provider,{value:p,children:W(ye.Provider,{value:o,children:W(ne,{canvas:o[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),W("div",{children:"Sorry, something went wrong."}))}function $n(e){let t=ve(e.vault),n=Sn(e.manifest);if(!n)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),W("div",{children:"Sorry, something went wrong."});if(n.error)return W("div",{children:n.error.toString()});if(!n.isLoaded)return W("div",{children:"Loading..."});let o=W(zi,{...e,children:e.children});return W(he,{vault:t,children:W(xn,{manifest:n.id,children:W(On,{children:W(Fn,{children:e.rangeId?W(bn,{range:e.rangeId,children:o}):o})})})})}function Ge(){return Vi(ze)}import{ModeContext as _i}from"@atlas-viewer/atlas";import{createContext as ji,useContext as Gn,useEffect as Ki,useMemo as Yi}from"react";import{useStore as Gi}from"zustand";import Oi from"mitt";import{createContext as Bi,useContext as Wn,useEffect as Hi}from"react";import{jsx as qi}from"react/jsx-runtime";var Di=Oi(),Mt=Bi(Di);function Td({children:e,emitter:t}){return qi(Mt.Provider,{value:t,children:e})}function Un(){return Wn(Mt)}function _n(e,t,n=[]){let o=Wn(Mt);Hi(()=>{let s=i=>{t(i)};return o.on(e,s),()=>{o.off(e,s)}},[o,e,...n])}import{createHelper as $i}from"polygon-editor";import{createStore as Wi}from"zustand/vanilla";function kt(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])),s=Math.min(...e.map(i=>i[1]));for(let i of e)if(i[0]!==n&&i[0]!==t&&i[1]!==s&&i[1]!==o||i[0]<n||i[0]>t||i[1]<s||i[1]>o)return!1;return!0}function be(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])),s=Math.max(0,...e.points.map(i=>i[1]));return{x:t,y:n,width:o-t,height:s-n}}return null}function Fi(e){return e.type==="SvgSelector"}function Vd(e){return e.type==="BoxSelector"}function Et(e,t){if(Fi(e)){let r=e.svgShape==="polyline";if(!e.points||e.points.length===0)return null;if(t){let{width:a,height:l}=t;return{type:"SvgSelector",value:`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${a} ${l}" width="${a}" height="${l}"><${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(a=>a.join(",")).join(" ")}${r?" Z":""}' /></g></svg>`}}if(!e.spatial)return null;let{x:n,y:o,width:s,height:i}=e.spatial||{};return!s||!i?null:{type:"FragmentSelector",value:`xywh=${~~n},${~~o},${~~s},${~~i}`}}function Vt(e,t){if(!e||!e.points.length)return null;if(kt(e.points)){let n=e.points.map(l=>l[0]),o=e.points.map(l=>l[1]),s=Math.min(...n),i=Math.min(...o),r=Math.max(...n)-s,a=Math.max(...o)-i;return Et({type:"BoxSelector",spatial:{x:s,y:i,width:r,height:a}},t)}return Et({type:"SvgSelector",points:e.points,svgShape:e.open?"polygon":"polyline"},t)}function jn(e){if(e.type==="polygon"&&!e.noBox&&e.points&&kt(e.points)){let n=be({open:!1,points:e.points||[]});return jn({...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:be({points:e.points||[],open:!1}),metadata:{},arguments:e.arguments||{},target:Vt({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:Vt({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 Ui={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 Kn({events:e,enabledTools:t,keyboardShortcutMapping:n,keyboardShortcutsEnabled:o=!1,debug:s}){let i=Wi((a,l)=>{let u=null,c=$i({emitter:e,keyboardShortcutsEnabled:o,keyboardShortcutMapping:n,enabledTools:t,customSetState:m=>{s&&console.log("partial state",m),a(p=>({polygonState:{...p.polygonState,...m}}))}},m=>{a(p=>p.tool.requestId?{polygon:{...m,id:p.tool.requestId}}:{polygon:{id:void 0,points:[],open:!0}}),e.emit("atlas.polygon-update",m)});return{mode:"explore",tool:{enabled:!1,requestId:null,canvasId:null},runtime:null,requestType:null,requests:{},history:c.history,polygon:null,validRequestIds:[],metadata:{},stableViewport:null,canvasRelativePositions:{},canvasViewports:{},polygons:c,polygonState:Ui,setMetadata:(m,p)=>{let g=p||l().tool.requestId;g&&a(h=>({metadata:{...h.metadata,[g]:{...h.metadata[g]||{},...m}}}))},setToolCanvasId:m=>{a(p=>({tool:{...p.tool,canvasId:m}}))},switchTool:{pointer(){a({mode:"sketch"}),r.tools.setTool("pointer")},hand(){a({mode:"explore"}),r.tools.setTool("hand")},draw(){a({mode:"sketch"}),r.tools.setTool("pencil")},pen(){a({mode:"sketch"}),r.tools.setTool("pen")},line(){a({mode:"sketch"}),r.tools.setTool("line")},lineBox(){a({mode:"sketch"}),r.tools.setTool("lineBox")},box(){a({mode:"sketch"}),r.tools.setTool("box")},triangle(){a({mode:"sketch"}),r.tools.setTool("stamp"),r.stamps.triangle()},hexagon(){a({mode:"sketch"}),r.tools.setTool("stamp"),r.stamps.hexagon()},circle(){a({mode:"sketch"}),r.tools.setTool("stamp"),r.stamps.circle()},remove(){let m=l();m.tool.requestId&&(c.setShape({points:[],open:!0}),m.cancelRequest(m.tool.requestId))}},reset:()=>{let m=l();m.tool.requestId&&m.cancelRequest(m.tool.requestId)},setPolygonState:m=>a({polygonState:typeof m=="function"?m(l().polygonState):m}),getRequestId:()=>{let m=Math.random().toString(36).slice(2);return a(p=>({validRequestIds:[...p.validRequestIds,m]})),{requestId:m,clear:()=>{l().tool.requestId,a(p=>({tool:p.tool.requestId===m?{enabled:!1,requestId:null,canvasId:null}:p.tool,validRequestIds:p.validRequestIds.filter(g=>g!==m)}))}}},cancelRequest:m=>{let p=m||l().tool.requestId;p&&(a(g=>({mode:"explore",tool:g.tool.requestId===p?{enabled:!1,requestId:null,canvasId:null}:g.tool,validRequestIds:g.validRequestIds.filter(h=>h!==p)})),e.emit("atlas.request-cancelled",{id:p}))},requestAnnotation:async(m,p)=>{let h={...l().requests,[p.requestId]:m},S=jn(m);s&&console.log("requestAnnotation",{response:S,request:m});try{let{points:v=[],open:f=!0}=S.polygon||{},{requestId:y,canvasId:x=null,toolId:b}=p,C=b,R=l(),A=R.validRequestIds.includes(y),N=S.requestType;return s&&console.log("setting points",{requestType:N,points:v,open:f}),!A||R.tool.enabled?null:(c.setShape({id:y,points:v,open:f}),N==="polygon"&&(C=C||"pen",c.tools.setTool("pen")),N==="draw"&&(C=C||"draw",c.tools.setTool("pencil")),N==="box"&&(C=C||"box",c.tools.setTool("box")),N==="target"?(C=C||"box",c.tools.setTool("box"),c.lockAspectRatio(),c.tools.lockToolSwitching(),c.tools.setCanDeselect(!1),c.tools.setCanDelete(!1)):(c.tools.unlockToolSwitching(),c.tools.setCanDeselect(!0),c.tools.setCanDelete(!0)),m.bounds&&c.setBounds(m.bounds),e.emit("atlas.annotation-request",{id:y}),a({polygon:{id:y,points:v,open:f},mode:"sketch",requestType:N,tool:{enabled:!0,requestId:y,canvasId:x},requests:h}),C?R.switchTool[C]?.():v.length===0&&R.switchTool.box(),(typeof m.selectByDefault>"u"&&v.length&&N==="box"||m.selectByDefault)&&R.switchTool.pointer(),new Promise(X=>{let T=_=>{_.id===y&&(a(P=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(P.requests).filter(([I])=>I!==y))})),e.off("atlas.request-cancelled",T),e.off("atlas.annotation-completed",z),X(null))},z=_=>{_.id===y&&(a(P=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(P.requests).filter(([I])=>I!==y))})),e.off("atlas.annotation-completed",z),e.off("atlas.request-cancelled",T),X(_))};e.on("atlas.request-cancelled",T),e.on("atlas.annotation-completed",z)}))}catch(v){return console.error(v),null}},completeRequest:m=>{let p=l().tool.requestId;if(typeof m=="string"&&m&&m!==p)return;let g=p?l().requests[p]?.arguments||{}:{},h=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:Vt(v,S),canvasId:l().tool.canvasId,boundingBox:be(v),metadata:h,arguments:{...g}}),c.setShape(null))},setAtlasRuntime:m=>{u=m,e.emit("atlas.ready",{runtime:m}),r.setScale(1/u._lastGoodScale),u.world.addLayoutSubscriber((p,g)=>{(p==="event-activation"||p==="zoom-to"||p==="go-home")&&u?._lastGoodScale&&!Number.isNaN(u._lastGoodScale)&&r.setScale(1/u._lastGoodScale)}),a({runtime:u})},clearAtlasRuntime:()=>{u=null,a({stableViewport:null,runtime:null})},setCanvasRelativePosition:(m,p)=>{a(g=>({canvasRelativePositions:{...g.canvasRelativePositions,[m]:p}}))},clearCanvasRelativePosition:m=>{a(p=>{let g={...p.canvasRelativePositions};return delete g[m],{canvasRelativePositions:g}})},changeMode:m=>{a({mode:m})},nudgeLeft:m=>{if(!u)return;let p=u.getViewport(),g=m??p.width*.1;u.world.gotoRegion({x:p.x-g,y:p.y,width:p.width,height:p.height,nudge:!0})},nudgeRight:m=>{if(!u)return;let p=u.getViewport(),g=m??p.width*.1;u.world.gotoRegion({x:p.x+g,y:p.y,width:p.width,height:p.height,nudge:!0})},nudgeUp:m=>{if(!u)return;let p=u.getViewport(),g=m??p.height*.1;u.world.gotoRegion({x:p.x,y:p.y-g,width:p.width,height:p.height,nudge:!0})},nudgeDown:m=>{if(!u)return;let p=u.getViewport(),g=m??p.height*.1;u.world.gotoRegion({x:p.x,y:p.y+g,width:p.width,height:p.height,nudge:!0})},zoomIn:()=>{u?.world?.zoomIn()},zoomOut:()=>{u?.world?.zoomOut()},goHome:()=>{u?.world?.goHome()},goToRegion:m=>{u?.world?.gotoRegion(m)},getRuntime:()=>u}}),r=i.getState().polygons;return e.on("atlas.annotation-request",()=>{r.clock.start((a,l,u)=>{e.emit("atlas.polygon-render",{state:a,slowState:l,dt:u})},a=>{typeof a=="object"?i.setState({polygonState:a}):i.setState(l=>({polygonState:a(l.polygonState)}))})}),e.on("atlas.annotation-completed",()=>{r.clock.stop()}),e.on("atlas.request-cancelled",()=>{r.clock.stop()}),i}import{jsx as Yn}from"react/jsx-runtime";var Ce=ji(null);function D(){return Gn(Ce)}var Nt={};function Qn(e="atlas"){return Nt[e]?.getState()}function Oe({children:e,name:t="atlas",existing:n,atlasStoreConfig:o}){let s=Un(),i=Gn(Ce),r=Yi(()=>n||i||Kn({events:s,...o||{}}),[s,n,i]),a=Gi(r,l=>l.mode);return Ki(()=>{let l=t;return l&&(Nt[l]=r),()=>{l&&delete Nt[l]}},[r,t]),Yn(Ce.Provider,{value:r,children:Yn(_i.Provider,{value:a||"explore",children:e})})}import{mergeStyles as Ze}from"@atlas-viewer/atlas";import{useMemo as fa}from"react";import{createContext as Qi,useContext as Xi,useMemo as Zi}from"react";import{jsx as Ji}from"react/jsx-runtime";function Xn(){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 Lt=Qi(Xn());Lt.displayName="AnnotationStyle";function Zn(){return Xi(Lt)}function Gd({theme:e,children:t}){let n=Zi(()=>e||Xn(),[e]);return Ji(Lt.Provider,{value:n,children:t})}import{expandTarget as ia}from"@iiif/helpers/annotation-targets";import{useMemo as aa}from"react";import{useEffect as ea,useMemo as ta,useState as na}from"react";import{create as oa}from"zustand";var ra=oa()((e,t)=>{let n=new Map,o=()=>Math.random().toString(36).substring(2,15),s=i=>{let r=n.get(i);if(r)return r;let a=o();return n.set(i,a),a};return{stylesheets:{},loading:[],errors:[],async parseStylesheet(i){let{loadStylesheet:r,setStylesheet:a}=t();if(!i)return null;if(typeof i=="string")return i.startsWith("http")?{id:i,type:"CssStylesheet",value:await r(i)}:{id:a(i),type:"CssStylesheet",value:i};if(i.type==="CssStylesheet"){let l=i.id;if("value"in i){let u=Array.isArray(i.value)?i.value.join(`
2
2
  `):i.value;if(u)return{id:a(u,l),type:"CssStylesheet",value:u}}if("id"in i&&i.id){let u=await r(i.id);return{id:i.id,type:"CssStylesheet",value:u}}}return null},async loadStylesheet(i){if(t().loading.includes(i))return"";try{let a=await fetch(i);if(!a.ok)throw new Error(`Failed to load stylesheet from ${i}`);let l=await a.text();return e(u=>({stylesheets:{...u.stylesheets,[i]:l}})),l}catch(a){return e(l=>({errors:[...l.errors,{url:i,error:a}]})),""}},setStylesheet(i,r){let a=r||s(i);return e(l=>({stylesheets:{...l.stylesheets,[a]:i}})),a}}});function Jn(e){let[t,n]=na(""),{loading:o,errors:s,stylesheets:i,parseStylesheet:r}=ra();return ea(()=>{e&&r(e).then(l=>{l?.id&&n(l.id)})},[e,r]),[ta(()=>{let l={};return t&&i[t]&&(l[t]=i[t]),l},[t,i]),{id:t,stylesheets:i,loading:o,errors:s}]}function Qe(e={},t=[]){let{id:n,selector:o}=e,s=j(),i=M(),r=n||s.annotation,a=k(d=>r?d.iiif.entities.Annotation[r]:void 0,[r]),[l]=Jn(a?.stylesheet),u=k(d=>a&&a.body?a.body.map(c=>c?c.type==="SpecificResource"?{...c,source:i.get(c)}:c?d.iiif.entities[c.type][c.id]:null:null).filter(Boolean):[],[a]);return aa(()=>{if(!a)return;let d={...a,body:u,target:ia(a.target,{typeMap:i.getState().iiif.mapping,loadedStylesheets:l})};return o?o(d):d},[a,o,u,l,...t])}import{useMemo as sa}from"react";function w(e={},t=[]){let{id:n,selector:o}=e,s=j(),i=n||s.canvas,r=k(a=>i?a.iiif.entities.Canvas[i]:void 0,[i]);return sa(()=>{if(r)return o?o(r):r},[r,o,...t])}import{useMemo as eo}from"react";import{createEventsHelper as la}from"@iiif/helpers/events";function Xe(e,t){let n=M(),o=eo(()=>la(n),[n]),s=k(()=>e&&e.id?n.getResourceMeta(e.id,"eventManager"):null,[e]);return eo(()=>e?o.getListenersAsProps(e,t):{},[s,e,n,t])}import{useMemo as ua}from"react";import{createStylesHelper as ca}from"@iiif/helpers/styles";function Re(e,t){let n=M(),o=ua(()=>ca(n),[n]);return k(()=>{if(!e)return null;let s=o.getAppliedStyles(e.id);return s?t?s[t]:s:void 0},[e,t])}import{useCallback as pa}from"react";import{HTMLPortal as da,useResizeWorldItem as ma}from"@atlas-viewer/atlas";import{useMemo as oe}from"react";import{Fragment as zt,jsx as Y,jsxs as Ot}from"react/jsx-runtime";function to({handleSize:e,resizable:t,onSave:n,children:o,maintainAspectRatio:s,disableCardinalControls:i,aspectRatio:r,...a}){let l=typeof e>"u"?s?12:8:e,{portalRef:u,mode:d,mouseEvent:c,isEditing:m}=ma({x:a.x||0,y:a.y||0,width:a.width,height:a.height,aspectRatio:r,maintainAspectRatio:s},n),p=oe(()=>c("translate"),[c]),g=oe(()=>c("east"),[c]),h=oe(()=>c("west"),[c]),S=oe(()=>c("south"),[c]),v=oe(()=>c("north"),[c]),f=oe(()=>c("south-east"),[c]),y=oe(()=>c("south-west"),[c]),x=oe(()=>c("north-east"),[c]),b=oe(()=>c("north-west"),[c]),C=d==="sketch",R={zIndex:999,boxShadow:"0px 2px 3px 0 rgba(0,0,0,0.2)",outline:"2px solid rgba(155,155,155,.7)",borderRadius:s||i?"50%":2,position:"absolute",background:"#fff",pointerEvents:m?"none":C?"initial":"none"};return Y(zt,{children:Ot("world-object",{...a,children:[o,C&&t?Y(da,{ref:u,target:{x:0,y:0,height:a.height,width:a.width},relative:!0,interactive:!1,children:C&&t?Ot(zt,{children:[Y("div",{onMouseDown:p,onTouchStart:p,style:{display:"block",width:"100%",height:"100%",cursor:"move",border:"1px solid rgba(255,255,255, .7)",outline:"2px solid rgba(155,155,155, .7)",boxSizing:"border-box",pointerEvents:m?"none":C?"initial":"none"}}),s?null:Ot(zt,{children:[Y("div",{title:"east",onTouchStart:g,onMouseDown:g,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)`}}),Y("div",{title:"west",onMouseDown:h,style:{...R,cursor:"w-resize",position:"absolute",height:l*2,width:l,left:0,top:"50%",opacity:i?0:1,transform:`translate(-${l/2}px, -${l}px)`}}),Y("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)`}}),Y("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)`}})]}),Y("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)`}}),Y("div",{title:"south-east",onMouseDown:f,style:{...R,cursor:"se-resize",position:"absolute",height:l,width:l,bottom:0,right:0,transform:`translate(${l/2}px, ${l/2}px)`}}),Y("div",{title:"south-west",onMouseDown:y,style:{...R,cursor:"sw-resize",position:"absolute",height:l,width:l,bottom:0,left:0,transform:`translate(-${l/2}px, ${l/2}px)`}}),Y("div",{title:"north-west",onMouseDown:b,style:{...R,cursor:"nw-resize",position:"absolute",height:l,width:l,top:0,left:0,transform:`translate(-${l/2}px, -${l/2}px)`}})]}):null}):null]})})}import{jsx as no}from"react/jsx-runtime";function oo({id:e,interactive:t,region:n,onClick:o,onHover:s,onSave:i,aspectRatio:r,maintainAspectRatio:a,disableCardinalControls:l,isEditing:u,style:d={backgroundColor:"rgba(0,0,0,.5)"}}){let c=pa(m=>{u&&i?.({id:n.id,x:n.x,y:n.y,height:n.height,width:n.width,...m})},[i,u,n.id,n.x,n.y,n.height,n.width]);return no(to,{id:e,x:n.x,y:n.y,width:n.width,aspectRatio:r,height:n.height,resizable:u,onSave:c,maintainAspectRatio:a,disableCardinalControls:l,children:no("box",{interactive:t,onClick:m=>{m.preventDefault(),m.stopPropagation(),o?.(n)},relativeStyle:!0,onMouseEnter:()=>{s?.(n)},target:{x:0,y:0,width:n.width,height:n.height},style:d})})}import{jsx as ga}from"react/jsx-runtime";var Ae=({id:e,style:t,className:n,interactive:o,targetId:s,ignoreTargetId:i})=>{let r=Qe({id:e}),a=Re(r,"atlas"),l=Re(r,"html"),u=Xe(r,["atlas"]),d=w(),c=Zn(),m=fa(()=>Ze(Ze(Ze(Ze(t,a),r?.motivation?.includes("highlighting")?c.highlighted:c.default),r?.target?.selector?.boxStyle||{})),[t,a,c,r?.motivation,r?.target]),p=s||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)?ga(oo,{id:r.id,isEditing:!0,region:r.target.selector.spatial,style:m,className:l?.className||n,interactive:!!(l?.href||o),href:l?.href||null,title:l?.title||null,hrefTarget:l?.target||null,onClick:()=>{},...u}):null};import{Fragment as ya}from"react";import{useMemo as ha}from"react";function ro(e={},t=[]){let{id:n,selector:o}=e,s=j(),i=n||s.annotationPage,r=k(a=>i?a.iiif.entities.AnnotationPage[i]:void 0,[i]);return ha(()=>{if(r)return o?o(r):r},[r,...t])}import{jsx as io}from"react/jsx-runtime";var ce=({className:e,page:t,targetId:n,ignoreTargetId:o})=>{let s=ro({id:t.id})||t,i=Re(s,"atlas"),r=Re(s,"html");return k(a=>s.id?a.iiif.entities.AnnotationPage[s.id]:null,[]),io(ya,{children:s.items?.map(a=>io(Ae,{id:a.id,style:i,className:r?.className||e,targetId:n,ignoreTargetId:o},a.id))})};import{createContext as Ht,useContext as Dt}from"react";import{jsx as Bt}from"react/jsx-runtime";var ao=Ht(null),so=Ht(null),lo=Ht(null);function Jm(){let e=Dt(ao);if(!e)throw new Error("Ctx not found");return e}function ep(){let e=Dt(so);if(!e)throw new Error("Ctx not found");return e}function tp(){let e=Dt(lo);if(!e)throw new Error("Ctx not found");return e}function Je({actions:e,state:t,children:n,currentTime:o,progress:s,element:i}){return Bt(lo.Provider,{value:{currentTime:o,progress:s,element:i},children:Bt(so.Provider,{value:e,children:Bt(ao.Provider,{value:t,children:n})})})}import{useMemo as va}from"react";import{expandTarget as Sa}from"@iiif/helpers";function et(){let e=O(),t=w();return va(()=>{if(!e||!t||!e.start)return null;let n=Sa(e.start);return!n||n.source.id!==t.id||!n||!n.selector||n.selector.type!=="TemporalSelector"?null:n.selector.temporal},[e,t])}import{useCallback as Z,useEffect as qt,useReducer as xa,useRef as tt}from"react";function uo(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function ba(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 Ft(e){let t=Math.round(e);return`${Math.floor(t/60)}:${`${t%60}`.padStart(2,"0")}`}function Pe(e){let[t,n]=xa(ba,uo(e.duration));qt(()=>{n({type:"RESET",state:uo(e.duration)})},[e.duration]);let o=tt(null),s=tt(null),i=tt(null),r=tt(!1),a=Z(()=>{s.current&&o.current&&(s.current.innerHTML=Ft(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=Z(()=>{o.current&&(n({type:"PLAY_REQUESTED"}),o.current.play().then(()=>{n({type:"PLAY"})}),a())},[a]),u=Z(()=>{o.current&&(o.current.duration>0&&o.current.paused?l():d())},[a]),d=Z(()=>{o.current&&(o.current.pause(),n({type:"PAUSE"}),a())},[a]),c=Z(()=>{o.current&&(o.current.muted=!o.current.muted,n(o.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),m=Z(()=>{o.current&&(o.current.muted=!0,n({type:"MUTE"}))},[]),p=Z(()=>{o.current&&(o.current.muted=!1,n({type:"UNMUTE"}))},[]),g=Z(v=>{o.current&&(o.current.muted=!1,o.current.volume=v/100,n({type:"SET_VOLUME",volume:v}))},[]),h=Z(v=>{o.current&&(o.current.currentTime=Math.max(0,Math.min(v*e.duration,e.duration)),a())},[]),S=Z(v=>{if(o.current){let f=typeof v=="function"?v(o.current.currentTime):v;o.current.currentTime=Math.max(0,Math.min(f,e.duration)),a()}},[]);return qt(()=>{let v=setInterval(()=>{a()},350);return()=>clearInterval(v)},[a,e.duration]),qt(()=>{let v=()=>{n({type:"FINISHED"})},f=o.current;return f?.addEventListener("ended",v),()=>f?.removeEventListener("ended",v)},[]),[{element:o,currentTime:s,progress:i},t,{play:l,pause:d,playPause:u,mute:m,unmute:p,toggleMute:c,setVolume:g,setDurationPercent:h,setTime:S}]}import{createContext as co,useContext as Ca,useEffect as Ra}from"react";var $t=co(()=>{}),Wt=co(()=>{});function H(e,t,n,o,s=[]){let i=Ca(e==="portal"?Wt:$t);Ra(()=>(e!=="none"&&i(t,n,o),()=>{i(t,null)}),[t,e,i,...s])}import{jsx as Aa,jsxs as Pa}from"react/jsx-runtime";function Ut({media:e,startTime:t,children:n}){let[{element:o,currentTime:s,progress:i},r,a]=Pe({duration:e.duration}),l=t?`${e.url}#t=${t}`:e.url;return Pa(Je,{state:r,actions:a,currentTime:s,progress:i,element:o,children:[Aa("audio",{ref:o,src:l}),n]},e.url)}function nt({media:e,mediaControlsDeps:t,audioCopmonent:n=Ut,children:o}){let s=et();return H("portal","audio",n,{media:e,startTime:s?s.startTime:null,children:o},[e,s,...t||[]]),null}import{createContext as wa,useContext as Ta}from"react";var de=wa(null);de.displayName="Strategy";function E(){let e=Ta(de);if(!e)throw new Error("useStrategy must be used within a StrategyProvider");return e}import{Fragment as Ia,jsx as _t,jsxs as Ma}from"react/jsx-runtime";function jt({model:e}){return Ma(Ia,{children:[_t("style",{children:`
3
3
  .model-container {
4
4
  position: absolute;