react-iiif-vault 1.3.6 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- "use strict";var no=Object.create;var Qe=Object.defineProperty;var ro=Object.getOwnPropertyDescriptor;var oo=Object.getOwnPropertyNames;var io=Object.getPrototypeOf,ao=Object.prototype.hasOwnProperty;var so=(e,t)=>{for(var n in t)Qe(e,n,{get:t[n],enumerable:!0})},Xt=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of oo(t))!ao.call(e,o)&&o!==n&&Qe(e,o,{get:()=>t[o],enumerable:!(r=ro(t,o))||r.enumerable});return e};var Y=(e,t,n)=>(n=e!=null?no(io(e)):{},Xt(t||!e||!e.__esModule?Qe(n,"default",{value:e,enumerable:!0}):n,e)),uo=e=>Xt(Qe({},"__esModule",{value:!0}),e);var Wo={};so(Wo,{CanvasPanel:()=>z});module.exports=uo(Wo);var We=require("react");var O=Y(require("react"),1),it=require("@atlas-viewer/atlas"),er=require("react-error-boundary");var re=require("react");var pe=Y(require("react"),1),en=require("react/jsx-runtime"),co={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},Ge=pe.default.createContext(co),B=()=>(0,pe.useContext)(Ge);function te({value:e,children:t}){let n=B(),r=(0,pe.useMemo)(()=>({...n,...e}),[e,n]);return(0,en.jsx)(Ge.Provider,{value:r,children:t})}var Ze=Y(require("react"),1),Ve=require("@iiif/helpers/vault");var Et=require("react/jsx-runtime"),ue=Ze.default.createContext({vault:null,setVaultInstance:e=>{}});function ge({vault:e,vaultOptions:t,useGlobal:n,resources:r,children:o}){let[s,i]=(0,Ze.useState)(()=>e||(n?(0,Ve.globalVault)(t):t?new Ve.Vault(t):new Ve.Vault));return(0,Et.jsx)(ue.Provider,{value:{vault:s,setVaultInstance:i},children:(0,Et.jsx)(te,{value:r||{},children:o})})}var Ln=require("react"),nt=require("react");var tn=require("@iiif/helpers/vault"),nn=require("react");function he(e){let t=(0,nn.useContext)(ue);return e||(t&&t.vault?t.vault:(0,tn.globalVault)())}var ne=require("react");function rn(e,{noCache:t=!1}={}){let n=typeof e=="string"?e:e.id,r=he(),[o,s]=(0,ne.useState)(n),[i,a]=(0,ne.useState)(void 0),u=(0,ne.useMemo)(()=>r.get(n,{skipSelfReturn:!0})||void 0,[n,r]),[c,l]=(0,ne.useState)(u);return(0,ne.useEffect)(()=>{(async()=>{try{let d=u&&!t?u:await r.load(n),m=d?d.id||d["@id"]:null;d&&o!==m&&s(m),l(d)}catch(d){a(d)}})()},[n,t]),{isLoaded:!!c,id:o,requestId:n,error:i,resource:c,cached:!!(c&&c===u)}}function on(e,t){let{id:n,isLoaded:r,error:o,resource:s,requestId:i,cached:a}=rn(e,t);return{id:n,isLoaded:r,error:o,manifest:s,requestId:i,cached:a}}var sn=require("react/jsx-runtime");function an({manifest:e,children:t}){return(0,sn.jsx)(te,{value:{manifest:e},children:t})}var un=require("react/jsx-runtime");function Q({canvas:e,children:t}){return(0,un.jsx)(te,{value:{canvas:e},children:t})}var ln=require("react"),dn=Y(require("react"),1);var cn=require("react"),T=()=>{let{vault:e}=(0,cn.useContext)(ue);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};var Je=require("react");function I(e,t=[]){let n=T(),[r,o]=(0,Je.useState)(()=>e(n.getState(),n));return(0,Je.useEffect)(()=>n.subscribe(s=>e(s,n),s=>{o(s)},!1),t),r}var ve=dn.default.createContext([]);function Xe(){let e=(0,ln.useContext)(ve);return I(t=>e.map(n=>t.iiif.entities.Canvas[n]).filter(Boolean),[e])}var mn=require("react");function L(e={},t=[]){let{id:n,selector:r}=e,o=B(),s=T(),i=n||o.manifest,a=I(u=>i?u.iiif.entities.Manifest[i]:void 0,[i]);return(0,mn.useMemo)(()=>{if(a)return r?r(a):a},[a,r,...t])}var pn=require("react/jsx-runtime");function fn({range:e,children:t}){return(0,pn.jsx)(te,{value:{range:e},children:t})}function Vt(e,t){let n=[];for(let r of t.items)if(r.type==="SpecificResource"&&r.source?.type==="Canvas"&&(r.source.id.indexOf("#")!==-1?n.push({id:r.source.id.split("#")[0],type:"Canvas"}):n.push(r.source)),r.type==="Range"&&n.push(...Vt(e,e.get(r))),r.type==="SpecificResource"){let o=typeof r.source=="string"?r.source:r.source.id;n.push({id:o,type:"Canvas"})}return n}function gn(e,t,{disablePaging:n,skipNonPaged:r}={}){let o=t.behavior,s=o.includes("paged"),i=s?!1:o.includes("continuous"),a=s||i?!1:o.includes("individuals"),u=t.type==="Manifest"?t.items:Vt(e,t);if(i)return[u,[u.map((y,h)=>h)]];if(a||!s||n)return[u,u.map((y,h)=>[h])];let c=[],l=[],d=()=>{l.length&&(c.push([...l]),l=[])},m=0,S=!1;for(let y=0;y<u.length;y++){let h=e.get(u[y]);if(h.behavior.includes("non-paged")){y===m&&m++,r||(d(),c.push([y]),d());continue}if(y===m||h.behavior.includes("facing-pages")){l.length&&(S=!0),d(),c.push([y]),d();continue}if(l.push(y),S){d(),S=!1;continue}l.length>1&&d()}return l.length&&d(),[u,c]}var q=require("react");var hn=require("react");function vn(e={},t=[]){let{id:n,selector:r}=e,o=B(),s=n||o.range,i=I(a=>s?a.iiif.entities.Range[s]:void 0,[s]);return(0,hn.useMemo)(()=>{if(i)return r?r(i):i},[i,r,...t])}function yn({startCanvas:e,disablePaging:t}){let n=T(),r=L(),o=vn(),[s,i]=(0,q.useState)(void 0),a=o||r;if(!a)throw new Error("Nothing selected");let[u,c]=(0,q.useMemo)(()=>gn(n,a,{disablePaging:t}),[n,a,t]),l=(0,q.useRef)(c);if(l.current!==c){let b=l.current[s][0],g=c.findIndex(C=>C.includes(b));l.current=c,i(g)}let d=(0,q.useCallback)(h=>{let b=c.findIndex(g=>g.includes(h));i(b===-1?0:b)},[u,c]),m=(0,q.useCallback)(h=>{let b=u.findIndex(g=>g.id===h);b!==-1?d(b):i(0)},[u,c]),S=(0,q.useCallback)(()=>{i(h=>h>=c.length-1?h:h+1)},[c]),y=(0,q.useCallback)(()=>{i(h=>h<=0?0:h-1)},[c]);return typeof s>"u"&&(e?m(e):i(0)),{visibleItems:c[s]?.map(h=>u[h].id)||[],cursor:s,items:u,sequence:c,hasPrevious:s>0,hasNext:s<c.length-1,setSequenceIndex:i,setCanvasIndex:d,setCanvasId:m,next:S,previous:y}}var K=require("react"),et=require("zustand");var Nt=require("zustand/vanilla");function _(e,t,n){let r=t.findIndex(i=>i.service.id===e);if(r===-1)return t;let o=[...t],s=n(o[r]);return s===o[r]?t:(o[r]=s,o)}var xn=()=>(0,Nt.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 r=n.service.service.find(o=>o.type==="AuthAccessTokenService2");if(!r)throw new Error("Token service not found");e(()=>({authItems:_(n.id,t().authItems,o=>({...o,isPending:!0}))})),Sn(n.service).then(()=>{kt(r).then(o=>{let s=o.expiresIn,i=Date.now()+s*1e3;e(()=>({authItems:_(n.id,t().authItems,a=>({...a,isLoggedIn:!0,isPending:!1,session:{token:o.accessToken,expires:i}}))}))}).catch(o=>{e(()=>({authItems:_(n.id,t().authItems,s=>({...s,isLoggedIn:!1,isPending:!1,error:o.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 r=n.service.service.find(i=>i.type==="AuthLogoutService2");if(!r)return;let o=`${r.id}?origin=${bn()}`,s=window.open(o);e(()=>({authItems:_(n.id,t().authItems,i=>({...i,isLoggedIn:!1,session:null,isPending:!1}))}))},nextAuth:()=>{let n=t().authItems.length,r=t().currentAuth+1;r>=n||e(()=>({currentAuth:r}))},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,r)=>{if(!n.service)return;let o=n.service.find(a=>a.type==="AuthAccessTokenService2"),s=n;if(t().authItems.find(a=>a.service.id===n.id)){e(()=>({authItems:_(n.id,t().authItems,a=>({...a,instances:a.instances+1}))}));return}if(e(()=>({currentAuth:s.profile==="active"?0:t().currentAuth,authItems:[{id:n.id,type:n.profile,service:n,probeId:r,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...t().authItems]})),n.profile==="external"){if(!o)throw new Error("Token service not found");kt(o).then(a=>{e(()=>({authItems:_(n.id,t().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:_(n.id,t().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:a.message}))}))})}if(n.profile==="kiosk"){if(!o)throw new Error("Token service not found");e(()=>({authItems:_(n.id,t().authItems,a=>({...a,isPending:!0}))})),Sn(s).then(()=>{kt(o).then(a=>{e(()=>({authItems:_(n.id,t().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:_(n.id,t().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,error:a.message}))}))})})}n.profile},removeService:(n,r)=>{let o=t().currentAuth===t().authItems.findIndex(i=>i.service.id===n.id),s=t().currentAuth;if(o){let i=t().authItems.find(u=>u.service.id===n.id);i&&i.instances>1||(s=t().authItems.findIndex(c=>c.service.id!==n.id&&c.instances>0))}e(()=>({authItems:_(n.id,t().authItems,i=>({...i,instances:i.instances-1})),currentAuth:s}))}})),Cn=(e,t)=>(0,Nt.createStore)((n,r)=>({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(!r().service)return;let o=r().service?.id;if(!o){n({status:"error",error:"Service ID not found",errorHeading:{en:["Service ID not found"]}});return}n({status:"probing"});let s=r().token;try{let i=await fetch(o,{headers:s?{Authorization:`Bearer ${r().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(a=>a.json());if(i.status===200)n({status:"success",shouldDisplayResource:!0,error:null,errorHeading:null,errorNote:null,shouldSubstitute:!1,shouldRedirect:!1});else if(i.status<400&&i.status>=300){if(!i.location)throw new Error("Redirect location not found");n({status:"error",shouldDisplayResource:!1,shouldRedirect:!0,redirectResource:i.location||null})}else if(i.status===401)n({status:"error",shouldDisplayResource:!1,shouldRedirect:!1,shouldSubstitute:!!i.substitute,substituteResource:i.substitute||null,error:"Unauthorized",errorHeading:i.heading||{en:["Unauthorized"]},errorNote:i.note||null});else throw new Error("Unknown error")}catch(i){n({status:"error",error:i.message,errorHeading:{en:["Unknown error"]}})}},setToken(o){n({token:o})}}));function An(e){let t=e.service||e.services||[],n={hasAuth:!1,services:{}};for(let r of t)if(r.type==="AuthProbeService2"){n.services.probe=r,n.hasAuth=!0;let o=r.service.filter(s=>s.type==="AuthAccessService2");o[0]&&(n.services.access=o[0])}return n}async function kt(e,{strict:t=!0}={}){return new Promise((n,r)=>{let o=Math.random().toString(36).substring(7),s=`${e.id}?messageId=${o}&origin=${window.location.origin}`,i=c=>{let l=c.data;if(l.messageId===o){if(t&&l.type!=="AuthAccessToken2"){a(),r("Invalid response, expected type=AuthAccessToken2");return}if(!l.accessToken){a(),r("Invalid response, expected accessToken");return}a(),n(l)}},a=()=>window.removeEventListener("message",i),u=document.createElement("iframe");u.src=s,u.style.display="none",document.body.appendChild(u),window.addEventListener("message",i)})}function bn(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 Sn(e){let t=`${e.id}?origin=${bn()}`,n=window.open(t);if(!n)throw new Error("Failed to open window");return new Promise((r,o)=>{let s=setInterval(()=>{n.closed&&(clearInterval(s),r())},500)})}var ye=require("react");var Pn=require("zustand");function Rn(e){let t=(0,ye.useMemo)(()=>An(e),[e]),n=Tn(t.services.access?.id),r=(0,ye.useMemo)(()=>Cn(t.services.probe,n),[t.services.probe]),o=(0,Pn.useStore)(r);return(0,ye.useEffect)(()=>{o.status==="unknown"&&!n&&o.probe()},[t.services.probe,o.status]),(0,ye.useEffect)(()=>{n&&(o.setToken(n),o.probe())},[n]),[e,o,t.hasAuth]}var ke=require("react/jsx-runtime"),Se=(0,K.createContext)(null),lo=(0,K.createContext)(null);lo.displayName="CurrentAuth";var mo=(0,K.createContext)(null);mo.displayName="AuthActions";function In({children:e}){let t=(0,K.useMemo)(()=>xn(),[]);return(0,ke.jsx)(Se.Provider,{value:t,children:e})}function wn(){return!!(0,K.useContext)(Se)}function zt(){let e=(0,K.useContext)(Se);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function fo(){let e=zt();return(0,et.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 po(e){let t=zt();return(0,et.useStore)(t,r=>r.authItems.find(o=>o.service.id===e))}function Tn(e){let t=zt();return(0,et.useStore)(t,r=>r.authItems.find(o=>o.id===e)?.session?.token)}function go(e){let t=fo(),n=po(e.service.id);return(0,K.useEffect)(()=>(t?.addService(e.service,e.probeId),()=>{t?.removeService(e.service,e.probeId)}),[e.service]),n?(n.error||!n.isLoggedIn,e.children):null}function Lt(){return null}function Mn(e){let[t,n,r]=Rn(e.resource),o=e.fallbackComponent||Lt,s=e.loadingComponent||Lt,i=e.errorComponent||Lt,a=n.service,u=null;if(!r||!a)return e.children(t);let c=a.service.filter(l=>l.type==="AuthAccessService2");n.status==="error"&&(u=(0,ke.jsx)(i,{resource:e.resource,error:n.error||"",heading:n.errorHeading,note:n.errorNote,extra:e.extra})),(n.status==="unknown"||n.status==="probing")&&(u=(0,ke.jsx)(s,{})),n.status==="success"&&(u=e.children(t));for(let l of c)u=(0,ke.jsx)(go,{service:l,probeId:a.id,children:u},l.id);return u}var Ne=require("react");var En=require("zustand/vanilla"),ho=e=>e.id||e["@id"];function vo(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 Vn=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?ho(t):void 0,r=null;return(0,En.createStore)((o,s)=>({service:t,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!t,hasAutocomplete:t?!!vo(t):!1,errorMessage:"",search(i,a={}){if(!n)throw new Error("No search service found.");r&&!r.signal.aborted&&r.abort(),r=new AbortController;let u=new URLSearchParams;i.q&&u.set("q",i.q),i.motivation&&u.set("motivation",i.motivation),i.date&&u.set("date",i.date),i.user&&u.set("user",i.user),o({loading:!0}),fetch(`${n}?${u.toString()}`,{signal:r.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...a.headers||{}}}).then(async c=>{if(!r?.signal.aborted)if(c.ok){let l=await c.json();o({resources:l.resources,error:!1,errorMessage:""})}else o({resources:[],error:!0,errorMessage:c.statusText})})},clearSearch(){o({resources:[],error:!1,errorMessage:""})},highlightResult(i){let a=s().resources.find(u=>u["@id"]===i);o({highlight:a})},nextResult(){let i=s().resources,a=s().highlight;if(!a){o({highlight:i[0]||null});return}let u=i.findIndex(c=>c["@id"]===a["@id"]);if(u===-1){o({highlight:i[0]||null});return}o({highlight:i[u+1]||i[0]||null})},previousResult(){let i=s().resources,a=s().highlight;if(!a){o({highlight:i[i.length-1]||null});return}let u=i.findIndex(c=>c["@id"]===a["@id"]);if(u===-1){o({highlight:i[i.length-1]||null});return}if(u===0){o({highlight:i[i.length-1]||null});return}o({highlight:i[u-1]||i[i.length-1]||null})}}))};var yo=require("zustand");function kn(){let e=L();return e?e.service.find(t=>t.profile==="SearchService1"||t.profile==="http://iiif.io/api/search/1/search"):void 0}var tt=require("react/jsx-runtime"),xe=(0,Ne.createContext)(null);xe.displayName="Search";function Nn(e){let t=kn();return e.store?(0,tt.jsx)(xe.Provider,{value:e.store,children:e.children}):(0,tt.jsx)(So,{service:t,children:e.children})}function So({service:e,children:t}){let n=(0,Ne.useMemo)(()=>Vn(e),[e]);return(0,tt.jsx)(xe.Provider,{value:n,children:t})}var F=require("react/jsx-runtime"),Le=()=>{},ze=(0,nt.createContext)({setCurrentCanvasId:Le,setCurrentCanvasIndex:Le,nextCanvas:Le,previousCanvas:Le,items:[],sequence:[],setSequenceIndex:Le,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function xo(e){let t=L(),{cursor:n,visibleItems:r,next:o,sequence:s,items:i,setCanvasIndex:a,setCanvasId:u,previous:c,setSequenceIndex:l,hasNext:d,hasPrevious:m}=yn({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),S=(0,nt.useMemo)(()=>({sequence:s,items:i,setCurrentCanvasId:u,nextCanvas:o,previousCanvas:c,totalCanvases:i.length,setCurrentCanvasIndex:a,setSequenceIndex:l,currentSequenceIndex:n,hasNext:d,hasPrevious:m}),[s,i,u,o,c,i,a,l,n]);return t?r.length===0?null:(0,F.jsx)(ze.Provider,{value:S,children:(0,F.jsx)(ve.Provider,{value:r,children:(0,F.jsx)(Q,{canvas:r[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,F.jsx)("div",{children:"Sorry, something went wrong."}))}function zn(e){let t=he(e.vault),n=on(e.manifest);if(!n)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,F.jsx)("div",{children:"Sorry, something went wrong."});if(n.error)return(0,F.jsx)("div",{children:n.error.toString()});if(!n.isLoaded)return(0,F.jsx)("div",{children:"Loading..."});let r=(0,F.jsx)(xo,{...e,children:e.children});return(0,F.jsx)(ge,{vault:t,children:(0,F.jsx)(an,{manifest:n.id,children:(0,F.jsx)(In,{children:(0,F.jsx)(Nn,{children:e.rangeId?(0,F.jsx)(fn,{range:e.rangeId,children:r}):r})})})})}function On(){return(0,Ln.useContext)(ze)}var Hn=Y(require("react"),1),Ot=require("react"),Fn=Y(require("mitt"),1),Ao=require("react/jsx-runtime"),Co=(0,Fn.default)(),Oe=(0,Ot.createContext)({emitter:Co});Oe.displayName="Events";function Dn(){return Hn.default.useContext(Oe).emitter}var ce=require("react/jsx-runtime");function Un(){return{VaultContext:(0,re.useContext)(ue),ResourceContext:(0,re.useContext)(Ge),SimpleViewerReactContext:(0,re.useContext)(ze),VisibleCanvasReactContext:(0,re.useContext)(ve),AuthRContext:(0,re.useContext)(Se),SearchReactContext:(0,re.useContext)(xe),ReactEventContext:(0,re.useContext)(Oe)}}function $n(e){return(0,ce.jsx)(ge,{vault:e.bridge.VaultContext.vault||void 0,resources:e.bridge.ResourceContext,children:(0,ce.jsx)(ve.Provider,{value:e.bridge.VisibleCanvasReactContext,children:(0,ce.jsx)(ze.Provider,{value:e.bridge.SimpleViewerReactContext,children:(0,ce.jsx)(Oe.Provider,{value:e.bridge.ReactEventContext,children:(0,ce.jsx)(Se.Provider,{value:e.bridge.AuthRContext,children:(0,ce.jsx)(xe.Provider,{value:e.bridge.SearchReactContext,children:e.children})})})})})})}var Ce=require("react");var G=require("react");var rt=require("@iiif/helpers/vault/actions");var Bn=require("react");function qn(){let t=T().getStore();return(0,Bn.useMemo)(()=>n=>t.dispatch(n),[t])}function _n(e){return typeof e!="string"&&e&&e.bindToVault}function Kn(){let e=T(),t=(0,G.useRef)([]),n=qn(),r=(0,G.useMemo)(()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);(0,G.useLayoutEffect)(()=>{let a={id:r,type:"AnnotationPage",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],rendering:[],service:[]};n(rt.entityActions.importEntities({entities:{AnnotationPage:{[a.id]:a}}}))},[r]);let o=I(a=>r&&a.iiif.entities.AnnotationPage[r]||null,[r]),s=(0,G.useCallback)((a,u)=>{if(r){if(_n(a)){let d=a;d.__vault||d.bindToVault(e),a=typeof d.source=="string"?d.source:d.source.id,t.current[a]=d}else typeof a!="string"&&(a=a.id);let c=e.get({id:r,type:"AnnotationPage"}),l=e.get({id:a,type:"Annotation"});c&&l&&(c.items.find(d=>d.id===l.id)||n(rt.entityActions.addReference({id:r,type:"AnnotationPage",key:"items",reference:{id:a,type:"Annotation"},index:u})))}},[r]),i=(0,G.useCallback)(a=>{r&&(_n(a)?a=typeof a.source=="string"?a.source:a.source.id:typeof a!="string"&&(a=a.id),t.current[a]&&t.current[a].beforeRemove(),e.get({id:r,type:"AnnotationPage"})&&n(rt.entityActions.removeReference({id:r,type:"AnnotationPage",key:"items",reference:{id:a,type:"Annotation"}})))},[r]);return[o,{addAnnotation:s,removeAnnotation:i}]}var Qn=require("react/jsx-runtime"),Wn=(0,Ce.createContext)(null);function jn(){let e=(0,Ce.useContext)(Wn);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function Yn({children:e}){let[t,{addAnnotation:n,removeAnnotation:r}]=Kn();return(0,Qn.jsx)(Wn.Provider,{value:(0,Ce.useMemo)(()=>({fullPage:t,addAnnotation:n,removeAnnotation:r}),[t]),children:e})}var Ae=require("react/jsx-runtime");function Gn({width:e,style:t,height:n,error:r,resetErrorBoundary:o}){return(0,Ae.jsxs)("div",{style:{width:e,height:n,minHeight:500,...t||{},background:"#f9f9f9"},children:[(0,Ae.jsx)("h3",{children:"Error occurred"}),(0,Ae.jsx)("p",{children:r.message}),(0,Ae.jsx)("button",{onClick:o,children:"Reset"})]})}var ot=require("react"),He=(0,ot.createContext)(null);function Zn(){return(0,ot.useContext)(He)}var le=require("react"),Ht=(0,le.createContext)(()=>{}),Ft=(0,le.createContext)(()=>{});function U(e,t,n,r,o=[]){let s=(0,le.useContext)(e==="portal"?Ft:Ht);(0,le.useEffect)(()=>(e!=="none"&&s(t,n,r),()=>{s(t,null)}),[t,e,s,...o])}var be=require("react");var Jn=require("react");function E(e={},t=[]){let{id:n,selector:r}=e,o=B(),s=n||o.canvas,i=I(a=>s?a.iiif.entities.Canvas[s]:void 0,[s]);return(0,Jn.useMemo)(()=>{if(i)return r?r(i):i},[i,r,...t])}var Dt=(0,be.createContext)(()=>{});function Xn(e){let t=E(),n=(0,be.useContext)(Dt);(0,be.useEffect)(()=>t&&t.id?(n(t.id,e),()=>n(t.id,-1)):()=>{},[t,e])}var k=require("react/jsx-runtime");function tr({children:e,errorFallback:t,outerContainerProps:n={},worldScale:r,...o}){let[s,i]=(0,O.useState)(),a=Un(),u=t||Gn,[c,l]=(0,O.useState)({}),d=Object.entries(c),[m,S]=(0,O.useState)({}),y=Object.entries(m),[h,b]=(0,O.useState)({}),g=(0,O.useMemo)(()=>r||Math.max(...Object.values(h)),[h]),C=(0,O.useMemo)(()=>({maxOverZoom:g||1,...o.runtimeOptions||{}}),[g,o.runtimeOptions]),f=(0,O.useCallback)((x,P)=>{b(A=>{if(P===-1){let{[x]:X,...p}=A;return p}return{...A,[x]:P}})},[]),v=(0,O.useCallback)((x,P,A)=>{l(({[x]:X,...p})=>P?{...p,[x]:{element:P,props:A}}:p)},[]),w=(0,O.useCallback)((x,P,A)=>{S(({[x]:X,...p})=>P?{...p,[x]:{element:P,props:A}}:p)},[]);return(0,k.jsxs)(er.ErrorBoundary,{resetKeys:[],fallbackRender:x=>(0,k.jsx)(u,{...o,...x}),children:[(0,k.jsx)(it.AtlasAuto,{...o,containerProps:{style:{position:"relative"},...o.containerProps||{}},htmlChildren:(0,k.jsx)(k.Fragment,{children:d.map(([x,{element:P,props:A}])=>(0,k.jsx)(O.default.Fragment,{children:(0,k.jsx)(P,{...A||{}})},x))}),onCreated:x=>{i(x),o.onCreated&&o.onCreated(x)},runtimeOptions:C,children:(0,k.jsx)(He.Provider,{value:s,children:(0,k.jsx)(Dt.Provider,{value:f,children:(0,k.jsx)(Ht.Provider,{value:v,children:(0,k.jsx)(Ft.Provider,{value:w,children:(0,k.jsx)($n,{bridge:a,children:(0,k.jsx)(it.ModeContext.Provider,{value:o.mode||"explore",children:(0,k.jsx)(Yn,{children:e})})})})})})})}),(0,k.jsx)("div",{children:y.map(([x,{element:P,props:A}])=>(0,k.jsx)(O.default.Fragment,{children:(0,k.jsx)(P,{...A||{}})},x))})]})}var ut=require("@atlas-viewer/atlas");var Ut=require("react"),nr=require("@iiif/helpers/events");function at(e,t){let n=T(),r=(0,Ut.useMemo)(()=>(0,nr.createEventsHelper)(n),[n]),o=I(()=>e&&e.id?n.getResourceMeta(e.id,"eventManager"):null,[e]);return(0,Ut.useMemo)(()=>e?r.getListenersAsProps(e,t):{},[o,e,n,t])}var rr=require("react"),or=require("@iiif/helpers/styles");function Pe(e,t){let n=T(),r=(0,rr.useMemo)(()=>(0,or.createStylesHelper)(n),[n]);return I(()=>{if(!e)return null;let o=r.getAppliedStyles(e.id);return o?t?o[t]:o:void 0},[e,t])}var sr=require("react");var ir=require("react");var ar=require("@iiif/helpers/annotation-targets");function st(e={},t=[]){let{id:n,selector:r}=e,o=B(),s=T(),i=n||o.annotation,a=I(c=>i?c.iiif.entities.Annotation[i]:void 0,[i]),u=I(c=>a&&a.body?a.body.map(l=>l?l.type==="SpecificResource"?{...l,source:s.get(l)}:l?c.iiif.entities[l.type][l.id]:null:null).filter(Boolean):[],[a]);return(0,ir.useMemo)(()=>{if(!a)return;let c={...a,body:u,target:(0,ar.expandTarget)(a.target,{typeMap:s.getState().iiif.mapping})};return r?r(c):c},[a,r,u,...t])}var ur=require("react/jsx-runtime"),ct=({id:e,style:t,className:n,interactive:r})=>{let o=st({id:e}),s=Pe(o,"atlas"),i=Pe(o,"html"),a=at(o,["atlas"]),u=E(),c=(0,sr.useMemo)(()=>(0,ut.mergeStyles)(t,s),[t,s]);return u&&o&&o.target&&o.target.selector&&o.target.selector.type==="BoxSelector"&&o.target.source&&(o.target.source.id===u.id||o.target.source===u.id)?(0,ur.jsx)(ut.RegionHighlight,{id:o.id,isEditing:!0,region:o.target.selector.spatial,style:c,className:i?.className||n,interactive:!!(i?.href||r),href:i?.href||null,title:i?.title||null,hrefTarget:i?.target||null,onClick:()=>{},...a}):null};var dr=require("react");var cr=require("react");function lr(e={},t=[]){let{id:n,selector:r}=e,o=B(),s=n||o.annotationPage,i=I(a=>s?a.iiif.entities.AnnotationPage[s]:void 0,[s]);return(0,cr.useMemo)(()=>{if(i)return r?r(i):i},[i,...t])}var $t=require("react/jsx-runtime"),Fe=({className:e,page:t})=>{let n=lr({id:t.id})||t,r=Pe(n,"atlas"),o=Pe(n,"html");return I(s=>n.id?s.iiif.entities.AnnotationPage[n.id]:null,[]),(0,$t.jsx)(dr.Fragment,{children:n.items?.map(s=>(0,$t.jsx)(ct,{id:s.id,style:r,className:o?.className||e},s.id))})};var Xr=require("@iiif/helpers/styles");var $e=require("react");var Ue=require("@atlas-viewer/atlas");var W=Y(require("react"),1),oe=require("react/jsx-runtime"),bo=W.default.createContext("en"),Po=W.default.createContext({}),Ro=W.default.createContext(null);function To(){return W.default.useContext(Ro)}function fr(){return W.default.useContext(bo)}function Io(){return W.default.useContext(Po)}function mr(e){return e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):e}function wo({as:e,language:t,children:n,viewingDirection:r,...o}){let s=fr();return(0,W.useMemo)(()=>mr(s)===mr(t),[s,t])?e?(0,oe.jsx)(e,{...o,children:n}):(0,oe.jsx)("span",{...o,children:n}):e?(0,oe.jsx)(e,{...o,lang:t,dir:r,children:n}):(0,oe.jsx)("span",{...o,lang:t,dir:r,children:n})}function Mo(e,t,n){if(t.length===0)return;if(t.length===1)return t[0];if(t.indexOf(e)!==-1)return e;let r=e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):null;if(r&&t.indexOf(r)!==-1)return r;for(let o of n)if(t.indexOf(o)!==-1)return o;return t.indexOf("none")!==-1?"none":t.indexOf("@none")!==-1?"@none":t[0]}var Eo=(e,t=[])=>{let n=fr();return(0,W.useMemo)(()=>{let r=e();return Mo(n,r,[])},[n,...t])};function Bt(e,t,n,r){return t?n?n(e[t]||t,r||"none"):e[t]||t:""}function Vo(e,t,n=`
2
- `,r={}){let o=To(),s=Eo(()=>Object.keys(e||{}),[e]);return[(0,W.useMemo)(()=>{if(!e)return Bt(r,t,o)||"";if(typeof e=="string")return Bt(r,e,o);let i=s?e[s]:void 0;return i?typeof i=="string"?i:i.map(a=>Bt(r,a,o,s)).join(n):""},[s,t,e]),s]}function De({as:e,defaultText:t,enableDangerouslySetInnerHTML:n,children:r,separator:o,...s}){let i=Io(),[a,u]=Vo(r,t,o,i);return u?(0,oe.jsx)(wo,{...s,as:e,language:u,title:n?void 0:a,dangerouslySetInnerHTML:n?{__html:a}:void 0,children:n?void 0:a}):e?(0,oe.jsx)(e,{...s,children:a}):(0,oe.jsx)("span",{...s,title:n?void 0:a,dangerouslySetInnerHTML:n?{__html:a}:void 0,children:n?void 0:a})}var gr=require("@iiif/parser/image-3");var lt=Y(require("react"),1),pr=require("@atlas-viewer/iiif-image-api"),ko=lt.default.createContext(new pr.ImageServiceLoader);function Re(){return(0,lt.useContext)(ko)}var $=require("react/jsx-runtime");function No({resource:e,heading:t,note:n,extra:r}){return r?(0,$.jsx)(Ue.HTMLPortal,{target:{x:0,y:0,width:r.target?.spatial.width,height:r.target?.spatial.height},backgroundColor:"#333",relative:!0,children:(0,$.jsx)("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:(0,$.jsxs)("div",{children:[(0,$.jsx)(De,{children:t||"Not authorised"}),n&&(0,$.jsx)("p",{children:(0,$.jsx)(De,{children:n})}),(0,$.jsx)("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}function hr({image:e,thumbnail:t,crop:n,enableSizes:r,enableThumbnail:o,renderOptions:s}){let i=wn(),a=Re(),u=e.service?(0,gr.canonicalServiceUrl)(e.service.id||e.service["@id"]||""):void 0,c=u?!!a.imageServices[u]:void 0,l=t&&t.type==="fixed"&&t.id&&!t.id.includes("/full/full/")&&!t.id.includes("/max/")?t:void 0;if(c===!1)return null;if(!i){let d=e.service,m=d.width||e.width||0,S=d.height||e.height||0;return(0,$.jsx)(Ue.TileSet,{enableThumbnail:o,renderOptions:s,tiles:{id:d.id||d["@id"]||"unknown",height:S,width:m,imageService:d,thumbnail:l},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:n})}return(0,$.jsx)(Mn,{resource:e.service,errorComponent:No,extra:e,children:d=>{let m=d.width||e.width||0,S=d.height||e.height||0;return(0,$.jsx)(Ue.TileSet,{enableThumbnail:o,renderOptions:s,tiles:{id:d.id||d["@id"]||"unknown",height:S,width:m,imageService:d,thumbnail:l},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:n})}},e.id)}var de=require("react/jsx-runtime");function Te({id:e,image:t,thumbnail:n,isStatic:r,x:o=0,y:s=0,children:i,selector:a,onClick:u,enableSizes:c}){let l=(0,$e.useMemo)(()=>{if(!(!a||a.spatial.x===0&&a.spatial.y===0))return a.spatial},[a]);return(0,de.jsx)("world-object",{x:o+t.target.spatial.x,y:s+t.target.spatial.y,width:t.target.spatial.width,height:t.target.spatial.height,onClick:u,children:t.service?(0,de.jsxs)($e.Fragment,{children:[(0,de.jsx)(hr,{image:t,thumbnail:n,crop:l,enableSizes:c}),i]},"service"):(0,de.jsxs)($e.Fragment,{children:[(0,de.jsx)("world-image",{onClick:u,uri:t.id,target:{x:0,y:0,width:t.target.spatial.width,height:t.target.spatial.height},display:t.width&&t.height?{width:t.width,height:t.height}:void 0,crop:l}),i]},"no-service")},e+(t.service?"server":"no-service"))}var j=require("react");var Ie=require("react");var vr=require("@iiif/helpers");function dt(e,t){let{selector:n,source:r}=(0,vr.expandTarget)(t);if(r.id!==e.id)return[null,r];let o={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}};return[n?n.type==="TemporalSelector"?{type:"TemporalBoxSelector",temporal:n.temporal,spatial:o.spatial}:n:null,r]}var yr={makeChoice:()=>{}},mt={type:"unknown"},M=e=>({type:"unknown",reason:e,annotations:{pages:[]}}),Sr=(e,t)=>({type:"empty",width:e,height:t,annotations:{pages:[]},image:null,images:[]});var Be=require("react");function Lo(e,t){let n=e?.iiif?.meta[t];return n?n.annotationPageManager:null}function xr(e,t){return I(n=>{let r=[];if(!e)return r;let o=Object.keys(n.iiif.entities.AnnotationPage);for(let s of o)if(!t||t.indexOf(s)!==-1){let i=Lo(n,s);i&&i.views&&i.views[e]&&r.push(s)}return r},[e,t])}function Cr({canvas:e,manifest:t,all:n,canvases:r}){let o=[];if(t)for(let s of t.annotations)o.indexOf(s.id)===-1&&o.push(s.id);if(n){if(r&&r.length)for(let s of r)for(let i of s.annotations)o.indexOf(i.id)===-1&&o.push(i.id)}else if(e)for(let s of e.annotations)o.indexOf(s.id)===-1&&o.push(s.id);return o}function zo(e,t){let n=e?.iiif?.meta[t];return n?n.annotationPageManager:null}function Ar(e,t={}){let n=T(),r=L(),o=E(),s=Xe(),i=(0,Be.useMemo)(()=>Cr({all:t.all,manifest:r,canvas:o,canvases:s}),[t.all,o,s,r]),a=xr(e,t.all?void 0:i),u=(0,Be.useCallback)(l=>{e&&n.setMetaValue([l,"annotationPageManager","views"],d=>d&&!d[e]?d:{...d||{},[e]:!1})},[e,n]),c=(0,Be.useCallback)((l,d={})=>{if(!e)return;let m=n.getState(),S=[];if(d?.deselectOthers){let y=Object.keys(m.iiif.entities.AnnotationPage);for(let h of y){let b=zo(m,h);b&&b.views&&b.views[e]&&S.push(h)}}for(let y of S)u(y);n.setMetaValue([l,"annotationPageManager","views"],y=>y&&y[e]?y:{...y||{},[e]:!0})},[e,u,n]);return{availablePageIds:i,enabledPageIds:a,setPageEnabled:c,setPageDisabled:u}}function br(e,t){return I((n,r)=>r.get(e.map(o=>({id:o,type:t}))),[e,t])}var ie=require("react");function Pr(){let e=Re(),[t,n]=(0,ie.useState)({}),r=(0,ie.useRef)(!1);return(0,ie.useEffect)(()=>()=>{r.current=!0},[]),[(0,ie.useCallback)((s,{height:i,width:a})=>{if(s){let u=s.id||s["@id"],c=e.loadServiceSync({id:u,width:s.width||a,height:s.height||i,source:s});c?s=c:t[u]||(r.current||n(l=>({...l,[u]:"loading"})),e.loadService({id:u,width:s.width||a,height:s.height||i}).then(()=>{r.current||n(l=>({...l,[u]:"done"}))}))}return s},[e,t]),t]}var me=require("react");function Rr(e={}){let t=st(),n=E(e.canvasId?{id:e.canvasId}:void 0);return I((r,o)=>{if(!n)return[];if(t&&e.enableSingleAnnotation)return[t];let s=o.get(n.items),i=[];for(let a of s)i.push(...o.get(a.items));return i},[n])}var Tr=require("@iiif/helpers/painting-annotations");function Ir(e,t=[]){let n=T(),r=(0,me.useMemo)(()=>(0,Tr.createPaintingAnnotationsHelper)(n),[]),o=Rr({enableSingleAnnotation:e?.enableSingleAnnotation}),[s,i]=(0,me.useState)(e?.defaultChoices||[]),a=(0,me.useMemo)(()=>r.getPaintables(o,s),[n,o,s,...t]),c={makeChoice:(0,me.useCallback)((l,{deselectOthers:d=!0,deselect:m=!1}={})=>{a.choice&&i(S=>{if(m){let h=S.filter(b=>b!==l);if(h.length===0){let b=a.items[0].resource.id;return b?[b]:[]}return h}if(d)return[l];let y=[...S];if(y.length===0&&a.items.length){let h=a.items[0].resource.id;h&&y.push(h)}return S.indexOf(l)!==-1?S:[...S,l]})},[a.choice])};return[a,c]}var Oo=["model/gltf-binary"];function wr(e,t){let r=t.items[0].resource;return r.format?Oo.indexOf(r.format)===-1?M(`3D format: ${r.format} is unsupported`):{type:"3d-model",model:r}:M("Unknown format")}function Mr(e,t){if(!e.duration)return M("No duration on canvas");if(t.items.length>1)return M("Only one audio source supported");let n=t.items[0]?.resource;return n?n.format?{type:"media",media:{annotationId:t.items[0].annotationId,duration:e.duration,url:n.id,type:"Sound",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:n.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},annotations:{pages:[]}}:M("Audio does not have format"):M("Unknown audio")}var Er=require("@atlas-viewer/iiif-image-api");var qt=require("@iiif/helpers/annotation-targets");function ft(e,t,n){let r=[];for(let o of t.items){let s=o.resource&&o.resource.type==="SpecificResource"?o.resource.source:o.resource;if(!s.id)return M("No resource Identifier");let i;if(s.service){let h=(0,Er.getImageServices)(s);h[0]&&(i=n(h[0],e))}let a={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}},[u,c]=dt(e,o.target),l=e.id?.split("?")[0]||"";if(!(c.id===e.id||decodeURIComponent(c.id||"")===(e.id||"")||c.id===l||decodeURIComponent(c.id||"")===l))continue;let d=o.resource.width&&o.resource.height?{type:"BoxSelector",spatial:{x:0,y:0,width:o.resource.width,height:o.resource.height}}:void 0,m=o.resource.type==="SpecificResource"?(0,qt.expandTarget)(o.resource):null;if(o.selector){let h=(0,qt.expandTarget)({type:"SpecificResource",source:o.resource,selector:o.selector});h&&(m=h)}let S=m&&m.selector&&(m.selector.type==="BoxSelector"||m.selector.type==="TemporalBoxSelector")?{type:"BoxSelector",spatial:{x:m.selector.spatial.x,y:m.selector.spatial.y,width:m.selector.spatial.width,height:m.selector.spatial.height}}:void 0;i&&!i.id&&(i.id=i["@id"]);let y={id:s.id,type:"Image",annotationId:o.annotationId,width:Number(u||S?s.width:e.width),height:Number(u||S?s.height:e.height),service:i,sizes:i&&i.sizes?i.sizes:s.width&&s.height?[{width:s.width,height:s.height}]:[],target:u&&u.type!=="PointSelector"?u:a,selector:S||{type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}}};r.push(y)}return{type:"images",image:r[0],images:r,choice:t.choice}}function Vr(e,t={},n){let r=e.language||n||"none";switch(e.type){case"TextualBody":{typeof e.value<"u"&&(t[r]=[e.value]);break}case"List":case"Composite":case"Choice":e.items&&e.items.forEach(o=>Vr(o,t,r))}return t}function pt(e,t){let n=[];return t.items.forEach(r=>{if(r.resource){let[o]=dt(e,r.target);n.push({type:"Text",annotationId:r.annotationId,text:Vr(r.resource),target:o})}}),{type:"textual-content",items:n}}var gt=require("@iiif/helpers"),Ho=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function ht(e,t){let n=t.items.filter(l=>l.type==="video"),r=!1;if(e.duration||(r=!0),n.length>1)return M("Only one video source supported");let o=n[0]?.resource,s=!!(o.service||[]).find(l=>(l.profile||"").includes("youtube.com"));if(!s&&r)return M("Video does not have duration");if(!o)return M("Unknown video");if((!o.format||o.format==="text/html")&&!s)return M("Video does not have format");let i=t.items[0],a={annotationId:t.items[0].annotationId,duration:e.duration,url:o.id,type:"Video",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:o.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},u=(0,gt.expandTarget)(i.target);u.selector&&u.selector.type==="TemporalBoxSelector"&&(a.target=u.selector);let{selector:c}=(0,gt.parseSelector)(i.selector);if(c===null){let l=a.target.temporal.startTime,m=(a.target.temporal.endTime||e.duration)-l;a.selector={type:"TemporalSelector",temporal:{startTime:0,endTime:m}}}else c.type==="TemporalSelector"&&(a.selector=c);if(s){a.type="VideoYouTube";let l=o.id.match(Ho);if(!l[1])return M("Video is not known youtube video");a.youTubeId=l[1]}return{type:"media",media:a,annotations:{pages:[]}}}function kr(e,t,n){let r={type:"complex-timeline",items:[],keyframes:[],duration:e.duration||0},o={type:"complex-choice",items:[]};function s(u){u.choice&&(u.choice.type==="complex-choice"?o.items.push(...u.choice.items):o.items.push(u.choice))}for(let u of t.items){if(u.type==="image"){let c=ft(e,{choice:null,allChoices:null,types:["image"],items:[u]},n);if(c.type==="images"){s(c),r.items.push(c.image);let l={id:c.image.annotationId,type:"enter",resourceType:"image",time:c.image.target?.temporal?.startTime||0};r.keyframes.push(l);let d={id:c.image.annotationId,type:"exit",resourceType:"image",time:c.image.target?.temporal?.endTime||e.duration||0};r.keyframes.push(d)}}if(u.type==="textualbody"){let c=pt(e,{choice:null,allChoices:null,types:["textualbody"],items:[u]});if(c.type==="textual-content"){s(c);let l=c.items[0];r.items.push(l);let d=l.target,m={id:l.annotationId,type:"enter",resourceType:"text",time:d.temporal?.startTime||0};r.keyframes.push(m);let S={id:l.annotationId,type:"exit",resourceType:"text",time:d.temporal?.endTime||e.duration||0};r.keyframes.push(S)}}if(u.type==="video"){let c=ht(e,{choice:null,allChoices:null,types:["video"],items:[u]});if(c.type==="media"){s(c);let l=c.media;r.items.push(l);let d={id:l.annotationId,type:"enter",resourceType:"video",time:l.target?.temporal?.startTime||0};r.keyframes.push(d);let m={id:l.annotationId,type:"exit",resourceType:"video",time:l.target?.temporal?.endTime||e.duration||0};r.keyframes.push(m)}}}r.keyframes.sort((u,c)=>u.time-c.time);let i=[],a=[];for(let u of r.keyframes){if(u.resourceType==="image"||u.resourceType==="text"){a.push(u);continue}if(u.type==="enter"){i.length===0&&(u.isPrime=!0),i.push(u),a.push(u);continue}if(u.type==="exit"&&(a.push(u),i=i.filter(c=>c.id!==u.id),i.length!==0)){let c=i[0],l={id:c.id,type:"change",isPrime:!0,resourceType:c.resourceType,time:u.time};a.push(l)}}return r.keyframes=a,o.items.length&&(r.choice=o),r}function Nr({canvas:e,paintables:t,supports:n,loadImageService:r}){if(!e)return mt;if(t.types.length===0)return n.indexOf("empty")!==-1?Sr(e.width,e.height):mt;if(t.types.length!==1)if(t.types.length===2&&t.types.indexOf("text")!==-1)t.types=t.types.filter(s=>s!=="text");else return n.indexOf("complex-timeline")===-1?M("Complex timeline not supported"):kr(e,t,r);let o=t.types[0];return o==="image"?n.indexOf("images")===-1?M("Image not supported"):ft(e,t,r):o==="Model"||o==="model"?n.indexOf("3d-model")===-1?M("3D not supported"):wr(e,t):o==="textualbody"?n.indexOf("textual-content")===-1?M("Textual content not supported"):pt(e,t):o==="sound"||o==="audio"?n.indexOf("media")===-1?M("Media not supported"):Mr(e,t):o==="video"?n.indexOf("media")===-1?M("Media not supported"):ht(e,t):mt}function Lr(e){let t=L(),n=E(),r=T(),o=Dn(),s=e?.emitter||o,[i,a]=Pr(),{enabledPageIds:u}=Ar(e?.annotationPageManagerId||t?.id||n?.id,{all:!1}),c=br(u,"AnnotationPage"),l=e?.strategies||["empty","images","media","textual-content","complex-timeline"],[d,m]=Ir(e,[a]);(0,Ie.useEffect)(()=>{let y=h=>{m.makeChoice(h.choiceId,{deselectOthers:h.deselectOthers,deselect:h.deselect})};return s.on("make-choice",y),()=>{s.off("make-choice",y)}},[]);let S=(0,Ie.useMemo)(()=>Nr({canvas:n,paintables:d,supports:l,loadImageService:i}),[n,d,r,m.makeChoice]);return(0,Ie.useEffect)(()=>{let y=d.allChoices,h={canvasId:n?.id,manifestId:t?.id};y&&s.emit("choice-change",{choice:y,partOf:h})},[n?.id,d.allChoices]),(0,Ie.useMemo)(()=>S.type==="unknown"?[S,yr]:[{...S,annotations:{pages:c}},m],[S,c])}var ae=require("react");var zr=require("react"),Or=(e,t=[])=>{let n=T();(0,zr.useEffect)(()=>{e(n)},[n,...t])};var Hr=require("@iiif/helpers/thumbnail");function vt(e,t,{canvasId:n,manifestId:r}={}){let o=T(),s=Re(),i=(0,ae.useMemo)(()=>(0,Hr.createThumbnailHelper)(o,{imageServiceLoader:s}),[o,s]),[a,u]=(0,ae.useState)(),c=L(r?{id:r}:void 0),l=E(n?{id:n}:void 0),d=l||c,m=(0,ae.useRef)(!1);if((0,ae.useEffect)(()=>(m.current=!1,()=>{m.current=!0}),[]),!d)throw new Error("Must be called under a manifest or canvas context.");return Or(S=>{i.getBestThumbnailAtSize(d,e,t).then(y=>{y.best&&!m.current&&u(y.best)})},[d]),a}var V=require("react");function Fo(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function Do(e,t){switch(t.type){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 _t(e){let t=Math.round(e);return`${Math.floor(t/60)}:${`${t%60}`.padStart(2,"0")}`}function we(e){let[t,n]=(0,V.useReducer)(Do,Fo(e.duration)),r=(0,V.useRef)(null),o=(0,V.useRef)(null),s=(0,V.useRef)(null),i=(0,V.useRef)(!1),a=(0,V.useCallback)(()=>{o.current&&r.current&&(o.current.innerHTML=_t(r.current.currentTime),s.current&&(s.current.style.width=`${r.current.currentTime/e.duration*100}%`),i.current!==r.current.muted&&(i.current=r.current.muted,n(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"})))},[e.duration]),u=(0,V.useCallback)(()=>{r.current&&(n({type:"PLAY_REQUESTED"}),r.current.play().then(()=>{n({type:"PLAY"})}),a())},[a]),c=(0,V.useCallback)(()=>{r.current&&(r.current.duration>0&&r.current.paused?u():l())},[a]),l=(0,V.useCallback)(()=>{r.current&&(r.current.pause(),n({type:"PAUSE"}),a())},[a]),d=(0,V.useCallback)(()=>{r.current&&(r.current.muted=!r.current.muted,n(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),m=(0,V.useCallback)(()=>{r.current&&(r.current.muted=!0,n({type:"MUTE"}))},[]),S=(0,V.useCallback)(()=>{r.current&&(r.current.muted=!1,n({type:"UNMUTE"}))},[]),y=(0,V.useCallback)(g=>{r.current&&(r.current.muted=!1,r.current.volume=g/100,n({type:"SET_VOLUME",volume:g}))},[]),h=(0,V.useCallback)(g=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(g*e.duration,e.duration)),a())},[]),b=(0,V.useCallback)(g=>{if(r.current){let C=typeof g=="function"?g(r.current.currentTime):g;r.current.currentTime=Math.max(0,Math.min(C,e.duration)),a()}},[]);return(0,V.useEffect)(()=>{let g=setInterval(()=>{a()},350);return()=>clearInterval(g)},[a,e.duration]),(0,V.useEffect)(()=>{let g=()=>{n({type:"FINISHED"})},C=r.current;return C?.addEventListener("ended",g),()=>C?.removeEventListener("ended",g)},[]),[{element:r,currentTime:o,progress:s},t,{play:u,pause:l,playPause:c,mute:m,unmute:S,toggleMute:d,setVolume:y,setDurationPercent:h,setTime:b}]}var qe=require("react"),yt=require("react/jsx-runtime"),Uo=(0,qe.createContext)(null),$o=(0,qe.createContext)(null),Bo=(0,qe.createContext)(null);function St({actions:e,state:t,children:n,currentTime:r,progress:o,element:s}){return(0,yt.jsx)(Bo.Provider,{value:{currentTime:r,progress:o,element:s},children:(0,yt.jsx)($o.Provider,{value:e,children:(0,yt.jsx)(Uo.Provider,{value:t,children:n})})})}var Fr=require("react");var Dr=require("@iiif/helpers");function xt(){let e=L(),t=E();return(0,Fr.useMemo)(()=>{if(!e||!t||!e.start)return null;let n=(0,Dr.expandTarget)(e.start);return!n||n.source.id!==t.id||!n||!n.selector||n.selector.type!=="TemporalSelector"?null:n.selector.temporal},[e,t])}var At=require("react/jsx-runtime");function Kt({media:e,startTime:t,children:n}){let[{element:r,currentTime:o,progress:s},i,a]=we({duration:e.duration}),u=t?`${e.url}#t=${t}`:e.url;return(0,At.jsxs)(St,{state:i,actions:a,currentTime:o,progress:s,element:r,children:[(0,At.jsx)("audio",{ref:r,src:u}),n]})}function Ct({media:e,mediaControlsDeps:t,children:n}){let r=xt();return U("portal","audio",Kt,{media:e,startTime:r?r.startTime:null,children:n},[e,r,...t||[]]),null}var _e=require("react/jsx-runtime");function Wt({element:e,media:t,startTime:n,playPause:r,poster:o}){let s="div",i=n?`${t.url}#t=${n}`:t.url;return(0,_e.jsxs)(s,{className:"video-container",part:"video-container",onClick:r,children:[(0,_e.jsx)("style",{children:`
1
+ "use strict";var io=Object.create;var Qe=Object.defineProperty;var ao=Object.getOwnPropertyDescriptor;var so=Object.getOwnPropertyNames;var uo=Object.getPrototypeOf,co=Object.prototype.hasOwnProperty;var lo=(e,n)=>{for(var t in n)Qe(e,t,{get:n[t],enumerable:!0})},en=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of so(n))!co.call(e,o)&&o!==t&&Qe(e,o,{get:()=>n[o],enumerable:!(r=ao(n,o))||r.enumerable});return e};var Q=(e,n,t)=>(t=e!=null?io(uo(e)):{},en(n||!e||!e.__esModule?Qe(t,"default",{value:e,enumerable:!0}):t,e)),mo=e=>en(Qe({},"__esModule",{value:!0}),e);var Zo={};lo(Zo,{CanvasPanel:()=>O});module.exports=mo(Zo);var We=require("react");var H=Q(require("react"),1),it=require("@atlas-viewer/atlas"),rr=require("react-error-boundary");var W=require("react");var ge=Q(require("react"),1),tn=require("react/jsx-runtime"),fo={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},Ge=ge.default.createContext(fo),q=()=>(0,ge.useContext)(Ge);function ne({value:e,children:n}){let t=q(),r=(0,ge.useMemo)(()=>({...t,...e}),[e,t]);return(0,tn.jsx)(Ge.Provider,{value:r,children:n})}var Ze=Q(require("react"),1),ke=require("@iiif/helpers/vault");var Vt=require("react/jsx-runtime"),ue=Ze.default.createContext({vault:null,setVaultInstance:e=>{}});function he({vault:e,vaultOptions:n,useGlobal:t,resources:r,children:o}){let[s,i]=(0,Ze.useState)(()=>e||(t?(0,ke.globalVault)(n):n?new ke.Vault(n):new ke.Vault));return(0,Vt.jsx)(ue.Provider,{value:{vault:s,setVaultInstance:i},children:(0,Vt.jsx)(ne,{value:r||{},children:o})})}var zn=require("react"),nt=require("react");var nn=require("@iiif/helpers/vault"),rn=require("react");function ye(e){let n=(0,rn.useContext)(ue);return e||(n&&n.vault?n.vault:(0,nn.globalVault)())}var re=require("react");function on(e,{noCache:n=!1}={}){let t=typeof e=="string"?e:e.id,r=ye(),[o,s]=(0,re.useState)(t),[i,a]=(0,re.useState)(void 0),u=(0,re.useMemo)(()=>r.get(t,{skipSelfReturn:!0})||void 0,[t,r]),[l,c]=(0,re.useState)(u);return(0,re.useEffect)(()=>{(async()=>{try{let d=u&&!n?u:await r.load(t),f=d?d.id||d["@id"]:null;d&&o!==f&&s(f),c(d)}catch(d){a(d)}})()},[t,n]),{isLoaded:!!l,id:o,requestId:t,error:i,resource:l,cached:!!(l&&l===u)}}function an(e,n){let{id:t,isLoaded:r,error:o,resource:s,requestId:i,cached:a}=on(e,n);return{id:t,isLoaded:r,error:o,manifest:s,requestId:i,cached:a}}var un=require("react/jsx-runtime");function sn({manifest:e,children:n}){return(0,un.jsx)(ne,{value:{manifest:e},children:n})}var cn=require("react/jsx-runtime");function Z({canvas:e,children:n}){return(0,cn.jsx)(ne,{value:{canvas:e},children:n})}var dn=require("react"),mn=Q(require("react"),1);var ln=require("react"),T=()=>{let{vault:e}=(0,ln.useContext)(ue);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};var Je=require("react");function I(e,n=[]){let t=T(),[r,o]=(0,Je.useState)(()=>e(t.getState(),t));return(0,Je.useEffect)(()=>t.subscribe(s=>e(s,t),s=>{o(s)},!1),n),r}var ve=mn.default.createContext([]);function Xe(){let e=(0,dn.useContext)(ve);return I(n=>e.map(t=>n.iiif.entities.Canvas[t]).filter(Boolean),[e])}var fn=require("react");function z(e={},n=[]){let{id:t,selector:r}=e,o=q(),s=T(),i=t||o.manifest,a=I(u=>i?u.iiif.entities.Manifest[i]:void 0,[i]);return(0,fn.useMemo)(()=>{if(a)return r?r(a):a},[a,r,...n])}var gn=require("react/jsx-runtime");function pn({range:e,children:n}){return(0,gn.jsx)(ne,{value:{range:e},children:n})}function kt(e,n){let t=[];for(let r of n.items)if(r.type==="SpecificResource"&&r.source?.type==="Canvas"&&(r.source.id.indexOf("#")!==-1?t.push({id:r.source.id.split("#")[0],type:"Canvas"}):t.push(r.source)),r.type==="Range"&&t.push(...kt(e,e.get(r))),r.type==="SpecificResource"){let o=typeof r.source=="string"?r.source:r.source.id;t.push({id:o,type:"Canvas"})}return t}function hn(e,n,{disablePaging:t,skipNonPaged:r}={}){let o=n.behavior,s=o.includes("paged"),i=s?!1:o.includes("continuous"),a=s||i?!1:o.includes("individuals"),u=n.type==="Manifest"?n.items:kt(e,n);if(i)return[u,[u.map((v,g)=>g)]];if(a||!s||t)return[u,u.map((v,g)=>[g])];let l=[],c=[],d=()=>{c.length&&(l.push([...c]),c=[])},f=0,p=!1;for(let v=0;v<u.length;v++){let g=e.get(u[v]);if(g.behavior.includes("non-paged")){v===f&&f++,r||(d(),l.push([v]),d());continue}if(v===f||g.behavior.includes("facing-pages")){c.length&&(p=!0),d(),l.push([v]),d();continue}if(c.push(v),p){d(),p=!1;continue}c.length>1&&d()}return c.length&&d(),[u,l]}var _=require("react");var yn=require("react");function vn(e={},n=[]){let{id:t,selector:r}=e,o=q(),s=t||o.range,i=I(a=>s?a.iiif.entities.Range[s]:void 0,[s]);return(0,yn.useMemo)(()=>{if(i)return r?r(i):i},[i,r,...n])}function Sn({startCanvas:e,disablePaging:n}){let t=T(),r=z(),o=vn(),[s,i]=(0,_.useState)(void 0),a=o||r;if(!a)throw new Error("Nothing selected");let[u,l]=(0,_.useMemo)(()=>hn(t,a,{disablePaging:n}),[t,a,n]),c=(0,_.useRef)(l);if(c.current!==l){let P=c.current[s][0],y=l.findIndex(S=>S.includes(P));c.current=l,i(y)}let d=(0,_.useCallback)(g=>{let P=l.findIndex(y=>y.includes(g));i(P===-1?0:P)},[u,l]),f=(0,_.useCallback)(g=>{let P=u.findIndex(y=>y.id===g);P!==-1?d(P):i(0)},[u,l]),p=(0,_.useCallback)(()=>{i(g=>g>=l.length-1?g:g+1)},[l]),v=(0,_.useCallback)(()=>{i(g=>g<=0?0:g-1)},[l]);return typeof s>"u"&&(e?f(e):i(0)),{visibleItems:l[s]?.map(g=>u[g].id)||[],cursor:s,items:u,sequence:l,hasPrevious:s>0,hasNext:s<l.length-1,setSequenceIndex:i,setCanvasIndex:d,setCanvasId:f,next:p,previous:v}}var K=require("react"),et=require("zustand");var Lt=require("zustand/vanilla");function j(e,n,t){let r=n.findIndex(i=>i.service.id===e);if(r===-1)return n;let o=[...n],s=t(o[r]);return s===o[r]?n:(o[r]=s,o)}var Cn=()=>(0,Lt.createStore)((e,n)=>({currentAuth:-1,authItems:[],login:()=>{let t=n().authItems[n().currentAuth];if(!t||t.isPending||t.isLoggedIn)return;if(t.type!=="active")throw new Error("Cannot login to non-active service");let r=t.service.service.find(o=>o.type==="AuthAccessTokenService2");if(!r)throw new Error("Token service not found");e(()=>({authItems:j(t.id,n().authItems,o=>({...o,isPending:!0}))})),xn(t.service).then(()=>{Nt(r).then(o=>{let s=o.expiresIn,i=Date.now()+s*1e3;e(()=>({authItems:j(t.id,n().authItems,a=>({...a,isLoggedIn:!0,isPending:!1,session:{token:o.accessToken,expires:i}}))}))}).catch(o=>{e(()=>({authItems:j(t.id,n().authItems,s=>({...s,isLoggedIn:!1,isPending:!1,error:o.message}))}))})})},logout:()=>{let t=n().authItems[n().currentAuth];if(!t||t.isPending||!t.isLoggedIn)return;if(t.type!=="active")throw new Error("Cannot logout of non-active service");let r=t.service.service.find(i=>i.type==="AuthLogoutService2");if(!r)return;let o=`${r.id}?origin=${Pn()}`,s=window.open(o);e(()=>({authItems:j(t.id,n().authItems,i=>({...i,isLoggedIn:!1,session:null,isPending:!1}))}))},nextAuth:()=>{let t=n().authItems.length,r=n().currentAuth+1;r>=t||e(()=>({currentAuth:r}))},previousAuth:()=>{let t=n().currentAuth-1;t<0||e(()=>({currentAuth:t}))},setAuth:t=>{t!==-1&&(t<0||t>=n().authItems.length)||e(()=>({currentAuth:t}))},addService:(t,r)=>{if(!t.service)return;let o=t.service.find(a=>a.type==="AuthAccessTokenService2"),s=t;if(n().authItems.find(a=>a.service.id===t.id)){e(()=>({authItems:j(t.id,n().authItems,a=>({...a,instances:a.instances+1}))}));return}if(e(()=>({currentAuth:s.profile==="active"?0:n().currentAuth,authItems:[{id:t.id,type:t.profile,service:t,probeId:r,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...n().authItems]})),t.profile==="external"){if(!o)throw new Error("Token service not found");Nt(o).then(a=>{e(()=>({authItems:j(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:j(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:a.message}))}))})}if(t.profile==="kiosk"){if(!o)throw new Error("Token service not found");e(()=>({authItems:j(t.id,n().authItems,a=>({...a,isPending:!0}))})),xn(s).then(()=>{Nt(o).then(a=>{e(()=>({authItems:j(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:j(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,error:a.message}))}))})})}t.profile},removeService:(t,r)=>{let o=n().currentAuth===n().authItems.findIndex(i=>i.service.id===t.id),s=n().currentAuth;if(o){let i=n().authItems.find(u=>u.service.id===t.id);i&&i.instances>1||(s=n().authItems.findIndex(l=>l.service.id!==t.id&&l.instances>0))}e(()=>({authItems:j(t.id,n().authItems,i=>({...i,instances:i.instances-1})),currentAuth:s}))}})),An=(e,n)=>(0,Lt.createStore)((t,r)=>({service:e,status:e?"unknown":"success",shouldRedirect:!1,redirectResource:null,shouldSubstitute:!1,substituteResource:null,error:null,errorHeading:null,errorNote:null,shouldDisplayResource:!1,token:n||null,async probe(){if(!r().service)return;let o=r().service?.id;if(!o){t({status:"error",error:"Service ID not found",errorHeading:{en:["Service ID not found"]}});return}t({status:"probing"});let s=r().token;try{let i=await fetch(o,{headers:s?{Authorization:`Bearer ${r().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(a=>a.json());if(i.status===200)t({status:"success",shouldDisplayResource:!0,error:null,errorHeading:null,errorNote:null,shouldSubstitute:!1,shouldRedirect:!1});else if(i.status<400&&i.status>=300){if(!i.location)throw new Error("Redirect location not found");t({status:"error",shouldDisplayResource:!1,shouldRedirect:!0,redirectResource:i.location||null})}else if(i.status===401)t({status:"error",shouldDisplayResource:!1,shouldRedirect:!1,shouldSubstitute:!!i.substitute,substituteResource:i.substitute||null,error:"Unauthorized",errorHeading:i.heading||{en:["Unauthorized"]},errorNote:i.note||null});else throw new Error("Unknown error")}catch(i){t({status:"error",error:i.message,errorHeading:{en:["Unknown error"]}})}},setToken(o){t({token:o})}}));function bn(e){let n=e.service||e.services||[],t={hasAuth:!1,services:{}};for(let r of n)if(r.type==="AuthProbeService2"){t.services.probe=r,t.hasAuth=!0;let o=r.service.filter(s=>s.type==="AuthAccessService2");o[0]&&(t.services.access=o[0])}return t}async function Nt(e,{strict:n=!0}={}){return new Promise((t,r)=>{let o=Math.random().toString(36).substring(7),s=`${e.id}?messageId=${o}&origin=${window.location.origin}`,i=l=>{let c=l.data;if(c.messageId===o){if(n&&c.type!=="AuthAccessToken2"){a(),r("Invalid response, expected type=AuthAccessToken2");return}if(!c.accessToken){a(),r("Invalid response, expected accessToken");return}a(),t(c)}},a=()=>window.removeEventListener("message",i),u=document.createElement("iframe");u.src=s,u.style.display="none",document.body.appendChild(u),window.addEventListener("message",i)})}function Pn(e){let n=window.location;if(e){let t=document.createElement("a");return t.href=e,t.protocol+"//"+t.hostname+(t.port?":"+t.port:"")}return n.protocol+"//"+n.hostname+(n.port?":"+n.port:"")}async function xn(e){let n=`${e.id}?origin=${Pn()}`,t=window.open(n);if(!t)throw new Error("Failed to open window");return new Promise((r,o)=>{let s=setInterval(()=>{t.closed&&(clearInterval(s),r())},500)})}var Se=require("react");var Rn=require("zustand");function Tn(e){let n=(0,Se.useMemo)(()=>bn(e),[e]),t=In(n.services.access?.id),r=(0,Se.useMemo)(()=>An(n.services.probe,t),[n.services.probe]),o=(0,Rn.useStore)(r);return(0,Se.useEffect)(()=>{o.status==="unknown"&&!t&&o.probe()},[n.services.probe,o.status]),(0,Se.useEffect)(()=>{t&&(o.setToken(t),o.probe())},[t]),[e,o,n.hasAuth]}var Ne=require("react/jsx-runtime"),xe=(0,K.createContext)(null),po=(0,K.createContext)(null);po.displayName="CurrentAuth";var go=(0,K.createContext)(null);go.displayName="AuthActions";function Mn({children:e}){let n=(0,K.useMemo)(()=>Cn(),[]);return(0,Ne.jsx)(xe.Provider,{value:n,children:e})}function wn(){return!!(0,K.useContext)(xe)}function Ot(){let e=(0,K.useContext)(xe);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function ho(){let e=Ot();return(0,et.useStore)(e,t=>({login:t.login,logout:t.logout,nextAuth:t.nextAuth,previousAuth:t.previousAuth,setAuth:t.setAuth,addService:t.addService,removeService:t.removeService}))}function yo(e){let n=Ot();return(0,et.useStore)(n,r=>r.authItems.find(o=>o.service.id===e))}function In(e){let n=Ot();return(0,et.useStore)(n,r=>r.authItems.find(o=>o.id===e)?.session?.token)}function vo(e){let n=ho(),t=yo(e.service.id);return(0,K.useEffect)(()=>(n?.addService(e.service,e.probeId),()=>{n?.removeService(e.service,e.probeId)}),[e.service]),t?(t.error||!t.isLoggedIn,e.children):null}function zt(){return null}function En(e){let[n,t,r]=Tn(e.resource),o=e.fallbackComponent||zt,s=e.loadingComponent||zt,i=e.errorComponent||zt,a=t.service,u=null;if(!r||!a)return e.children(n);let l=a.service.filter(c=>c.type==="AuthAccessService2");t.status==="error"&&(u=(0,Ne.jsx)(i,{resource:e.resource,error:t.error||"",heading:t.errorHeading,note:t.errorNote,extra:e.extra})),(t.status==="unknown"||t.status==="probing")&&(u=(0,Ne.jsx)(s,{})),t.status==="success"&&(u=e.children(n));for(let c of l)u=(0,Ne.jsx)(vo,{service:c,probeId:a.id,children:u},c.id);return u}var Le=require("react");var Vn=require("zustand/vanilla"),So=e=>e.id||e["@id"];function xo(e){return(Array.isArray(e.service)?e.service:[e.service]).find(t=>t.profile==="http://iiif.io/api/search/0/autocomplete"||t.profile==="http://iiif.io/api/search/1/autocomplete"||t.profile==="AutoCompleteService1")}var kn=e=>{let n;typeof e=="string"?n={"@context":"http://iiif.io/api/search/1/context.json",profile:"http://iiif.io/api/search/1/search","@id":e,id:e,service:[]}:n=e;let t=n?So(n):void 0,r=null;return(0,Vn.createStore)((o,s)=>({service:n,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!n,hasAutocomplete:n?!!xo(n):!1,errorMessage:"",search(i,a={}){if(!t)throw new Error("No search service found.");r&&!r.signal.aborted&&r.abort(),r=new AbortController;let u=new URLSearchParams;i.q&&u.set("q",i.q),i.motivation&&u.set("motivation",i.motivation),i.date&&u.set("date",i.date),i.user&&u.set("user",i.user),o({loading:!0}),fetch(`${t}?${u.toString()}`,{signal:r.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...a.headers||{}}}).then(async l=>{if(!r?.signal.aborted)if(l.ok){let c=await l.json();o({resources:c.resources,error:!1,errorMessage:""})}else o({resources:[],error:!0,errorMessage:l.statusText})})},clearSearch(){o({resources:[],error:!1,errorMessage:""})},highlightResult(i){let a=s().resources.find(u=>u["@id"]===i);o({highlight:a})},nextResult(){let i=s().resources,a=s().highlight;if(!a){o({highlight:i[0]||null});return}let u=i.findIndex(l=>l["@id"]===a["@id"]);if(u===-1){o({highlight:i[0]||null});return}o({highlight:i[u+1]||i[0]||null})},previousResult(){let i=s().resources,a=s().highlight;if(!a){o({highlight:i[i.length-1]||null});return}let u=i.findIndex(l=>l["@id"]===a["@id"]);if(u===-1){o({highlight:i[i.length-1]||null});return}if(u===0){o({highlight:i[i.length-1]||null});return}o({highlight:i[u-1]||i[i.length-1]||null})}}))};var Co=require("zustand");function Nn(){let e=z();return e?e.service.find(n=>n.profile==="SearchService1"||n.profile==="http://iiif.io/api/search/1/search"):void 0}var tt=require("react/jsx-runtime"),Ce=(0,Le.createContext)(null);Ce.displayName="Search";function Ln(e){let n=Nn();return e.store?(0,tt.jsx)(Ce.Provider,{value:e.store,children:e.children}):(0,tt.jsx)(Ao,{service:n,children:e.children})}function Ao({service:e,children:n}){let t=(0,Le.useMemo)(()=>kn(e),[e]);return(0,tt.jsx)(Ce.Provider,{value:t,children:n})}var D=require("react/jsx-runtime"),ze=()=>{},Oe=(0,nt.createContext)({setCurrentCanvasId:ze,setCurrentCanvasIndex:ze,nextCanvas:ze,previousCanvas:ze,items:[],sequence:[],setSequenceIndex:ze,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function bo(e){let n=z(),{cursor:t,visibleItems:r,next:o,sequence:s,items:i,setCanvasIndex:a,setCanvasId:u,previous:l,setSequenceIndex:c,hasNext:d,hasPrevious:f}=Sn({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),p=(0,nt.useMemo)(()=>({sequence:s,items:i,setCurrentCanvasId:u,nextCanvas:o,previousCanvas:l,totalCanvases:i.length,setCurrentCanvasIndex:a,setSequenceIndex:c,currentSequenceIndex:t,hasNext:d,hasPrevious:f}),[s,i,u,o,l,i,a,c,t]);return n?r.length===0?null:(0,D.jsx)(Oe.Provider,{value:p,children:(0,D.jsx)(ve.Provider,{value:r,children:(0,D.jsx)(Z,{canvas:r[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,D.jsx)("div",{children:"Sorry, something went wrong."}))}function On(e){let n=ye(e.vault),t=an(e.manifest);if(!t)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,D.jsx)("div",{children:"Sorry, something went wrong."});if(t.error)return(0,D.jsx)("div",{children:t.error.toString()});if(!t.isLoaded)return(0,D.jsx)("div",{children:"Loading..."});let r=(0,D.jsx)(bo,{...e,children:e.children});return(0,D.jsx)(he,{vault:n,children:(0,D.jsx)(sn,{manifest:t.id,children:(0,D.jsx)(Mn,{children:(0,D.jsx)(Ln,{children:e.rangeId?(0,D.jsx)(pn,{range:e.rangeId,children:r}):r})})})})}function Hn(){return(0,zn.useContext)(Oe)}var Fn=Q(require("react"),1),Ht=require("react"),Dn=Q(require("mitt"),1),Ro=require("react/jsx-runtime"),Po=(0,Dn.default)(),He=(0,Ht.createContext)({emitter:Po});He.displayName="Events";function Bn(){return Fn.default.useContext(He).emitter}var Un=Q(require("react"),1),J=require("react/jsx-runtime"),To=Un.default.createContext({});function $n(){let e=(0,W.useContext)(To),n=Object.keys(e),t={};for(let r of n)e[r].Provider&&(t[r]={value:(0,W.useContext)(e[r]),Provider:e[r].Provider});return t}function Io(e){let n=Object.keys(e),t=e.children;for(let r of n){if(r==="children")continue;let{value:o,Provider:s}=e[r];t=(0,J.jsx)(s,{value:o,children:t})}return t}function qn(){return{VaultContext:(0,W.useContext)(ue),ResourceContext:(0,W.useContext)(Ge),SimpleViewerReactContext:(0,W.useContext)(Oe),VisibleCanvasReactContext:(0,W.useContext)(ve),AuthRContext:(0,W.useContext)(xe),SearchReactContext:(0,W.useContext)(Ce),ReactEventContext:(0,W.useContext)(He)}}function _n(e){return(0,J.jsx)(he,{vault:e.bridge.VaultContext.vault||void 0,resources:e.bridge.ResourceContext,children:(0,J.jsx)(ve.Provider,{value:e.bridge.VisibleCanvasReactContext,children:(0,J.jsx)(Oe.Provider,{value:e.bridge.SimpleViewerReactContext,children:(0,J.jsx)(He.Provider,{value:e.bridge.ReactEventContext,children:(0,J.jsx)(xe.Provider,{value:e.bridge.AuthRContext,children:(0,J.jsx)(Ce.Provider,{value:e.bridge.SearchReactContext,children:e.custom?(0,J.jsx)(Io,{...e.custom,children:e.children}):e.children})})})})})})}var Ae=require("react");var X=require("react");var rt=require("@iiif/helpers/vault/actions");var jn=require("react");function Kn(){let n=T().getStore();return(0,jn.useMemo)(()=>t=>n.dispatch(t),[n])}function Wn(e){return typeof e!="string"&&e&&e.bindToVault}function Yn(){let e=T(),n=(0,X.useRef)([]),t=Kn(),r=(0,X.useMemo)(()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);(0,X.useLayoutEffect)(()=>{let a={id:r,type:"AnnotationPage",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],rendering:[],service:[]};t(rt.entityActions.importEntities({entities:{AnnotationPage:{[a.id]:a}}}))},[r]);let o=I(a=>r&&a.iiif.entities.AnnotationPage[r]||null,[r]),s=(0,X.useCallback)((a,u)=>{if(r){if(Wn(a)){let d=a;d.__vault||d.bindToVault(e),a=typeof d.source=="string"?d.source:d.source.id,n.current[a]=d}else typeof a!="string"&&(a=a.id);let l=e.get({id:r,type:"AnnotationPage"}),c=e.get({id:a,type:"Annotation"});l&&c&&(l.items.find(d=>d.id===c.id)||t(rt.entityActions.addReference({id:r,type:"AnnotationPage",key:"items",reference:{id:a,type:"Annotation"},index:u})))}},[r]),i=(0,X.useCallback)(a=>{r&&(Wn(a)?a=typeof a.source=="string"?a.source:a.source.id:typeof a!="string"&&(a=a.id),n.current[a]&&n.current[a].beforeRemove(),e.get({id:r,type:"AnnotationPage"})&&t(rt.entityActions.removeReference({id:r,type:"AnnotationPage",key:"items",reference:{id:a,type:"Annotation"}})))},[r]);return[o,{addAnnotation:s,removeAnnotation:i}]}var Jn=require("react/jsx-runtime"),Qn=(0,Ae.createContext)(null);function Gn(){let e=(0,Ae.useContext)(Qn);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function Zn({children:e}){let[n,{addAnnotation:t,removeAnnotation:r}]=Yn();return(0,Jn.jsx)(Qn.Provider,{value:(0,Ae.useMemo)(()=>({fullPage:n,addAnnotation:t,removeAnnotation:r}),[n]),children:e})}var be=require("react/jsx-runtime");function Xn({width:e,style:n,height:t,error:r,resetErrorBoundary:o}){return(0,be.jsxs)("div",{style:{width:e,height:t,minHeight:500,...n||{},background:"#f9f9f9"},children:[(0,be.jsx)("h3",{children:"Error occurred"}),(0,be.jsx)("p",{children:r.message}),(0,be.jsx)("button",{onClick:o,children:"Reset"})]})}var ot=require("react"),Fe=(0,ot.createContext)(null);function er(){return(0,ot.useContext)(Fe)}var ce=require("react"),Ft=(0,ce.createContext)(()=>{}),Dt=(0,ce.createContext)(()=>{});function U(e,n,t,r,o=[]){let s=(0,ce.useContext)(e==="portal"?Dt:Ft);(0,ce.useEffect)(()=>(e!=="none"&&s(n,t,r),()=>{s(n,null)}),[n,e,s,...o])}var Pe=require("react");var tr=require("react");function E(e={},n=[]){let{id:t,selector:r}=e,o=q(),s=t||o.canvas,i=I(a=>s?a.iiif.entities.Canvas[s]:void 0,[s]);return(0,tr.useMemo)(()=>{if(i)return r?r(i):i},[i,r,...n])}var Bt=(0,Pe.createContext)(()=>{});function nr(e){let n=E(),t=(0,Pe.useContext)(Bt);(0,Pe.useEffect)(()=>n&&n.id?(t(n.id,e),()=>t(n.id,-1)):()=>{},[n,e])}var k=require("react/jsx-runtime");function or({children:e,errorFallback:n,outerContainerProps:t={},worldScale:r,...o}){let[s,i]=(0,H.useState)(),a=$n(),u=qn(),l=n||Xn,[c,d]=(0,H.useState)({}),f=Object.entries(c),[p,v]=(0,H.useState)({}),g=Object.entries(p),[P,y]=(0,H.useState)({}),S=(0,H.useMemo)(()=>r||Math.max(...Object.values(P)),[P]),m=(0,H.useMemo)(()=>({maxOverZoom:S||1,...o.runtimeOptions||{}}),[S,o.runtimeOptions]),A=(0,H.useCallback)((b,x)=>{y(L=>{if(x===-1){let{[b]:me,...h}=L;return h}return{...L,[b]:x}})},[]),C=(0,H.useCallback)((b,x,L)=>{d(({[b]:me,...h})=>x?{...h,[b]:{element:x,props:L}}:h)},[]),M=(0,H.useCallback)((b,x,L)=>{v(({[b]:me,...h})=>x?{...h,[b]:{element:x,props:L}}:h)},[]);return(0,k.jsxs)(rr.ErrorBoundary,{resetKeys:[],fallbackRender:b=>(0,k.jsx)(l,{...o,...b}),children:[(0,k.jsx)(it.AtlasAuto,{...o,containerProps:{style:{position:"relative"},...o.containerProps||{}},htmlChildren:(0,k.jsx)(k.Fragment,{children:f.map(([b,{element:x,props:L}])=>(0,k.jsx)(H.default.Fragment,{children:(0,k.jsx)(x,{...L||{}})},b))}),onCreated:b=>{i(b),o.onCreated&&o.onCreated(b)},runtimeOptions:m,children:(0,k.jsx)(Fe.Provider,{value:s,children:(0,k.jsx)(Bt.Provider,{value:A,children:(0,k.jsx)(Ft.Provider,{value:C,children:(0,k.jsx)(Dt.Provider,{value:M,children:(0,k.jsx)(_n,{bridge:u,custom:a,children:(0,k.jsx)(it.ModeContext.Provider,{value:o.mode||"explore",children:(0,k.jsx)(Zn,{children:e})})})})})})})}),(0,k.jsx)("div",{children:g.map(([b,{element:x,props:L}])=>(0,k.jsx)(H.default.Fragment,{children:(0,k.jsx)(x,{...L||{}})},b))})]})}var ut=require("@atlas-viewer/atlas");var Ut=require("react"),ir=require("@iiif/helpers/events");function at(e,n){let t=T(),r=(0,Ut.useMemo)(()=>(0,ir.createEventsHelper)(t),[t]),o=I(()=>e&&e.id?t.getResourceMeta(e.id,"eventManager"):null,[e]);return(0,Ut.useMemo)(()=>e?r.getListenersAsProps(e,n):{},[o,e,t,n])}var ar=require("react"),sr=require("@iiif/helpers/styles");function Re(e,n){let t=T(),r=(0,ar.useMemo)(()=>(0,sr.createStylesHelper)(t),[t]);return I(()=>{if(!e)return null;let o=r.getAppliedStyles(e.id);return o?n?o[n]:o:void 0},[e,n])}var lr=require("react");var ur=require("react");var cr=require("@iiif/helpers/annotation-targets");function st(e={},n=[]){let{id:t,selector:r}=e,o=q(),s=T(),i=t||o.annotation,a=I(l=>i?l.iiif.entities.Annotation[i]:void 0,[i]),u=I(l=>a&&a.body?a.body.map(c=>c?c.type==="SpecificResource"?{...c,source:s.get(c)}:c?l.iiif.entities[c.type][c.id]:null:null).filter(Boolean):[],[a]);return(0,ur.useMemo)(()=>{if(!a)return;let l={...a,body:u,target:(0,cr.expandTarget)(a.target,{typeMap:s.getState().iiif.mapping})};return r?r(l):l},[a,r,u,...n])}var dr=require("react/jsx-runtime"),ct=({id:e,style:n,className:t,interactive:r})=>{let o=st({id:e}),s=Re(o,"atlas"),i=Re(o,"html"),a=at(o,["atlas"]),u=E(),l=(0,lr.useMemo)(()=>(0,ut.mergeStyles)(n,s),[n,s]);return u&&o&&o.target&&o.target.selector&&o.target.selector.type==="BoxSelector"&&o.target.source&&(o.target.source.id===u.id||o.target.source===u.id)?(0,dr.jsx)(ut.RegionHighlight,{id:o.id,isEditing:!0,region:o.target.selector.spatial,style:l,className:i?.className||t,interactive:!!(i?.href||r),href:i?.href||null,title:i?.title||null,hrefTarget:i?.target||null,onClick:()=>{},...a}):null};var pr=require("react");var mr=require("react");function fr(e={},n=[]){let{id:t,selector:r}=e,o=q(),s=t||o.annotationPage,i=I(a=>s?a.iiif.entities.AnnotationPage[s]:void 0,[s]);return(0,mr.useMemo)(()=>{if(i)return r?r(i):i},[i,...n])}var $t=require("react/jsx-runtime"),De=({className:e,page:n})=>{let t=fr({id:n.id})||n,r=Re(t,"atlas"),o=Re(t,"html");return I(s=>t.id?s.iiif.entities.AnnotationPage[t.id]:null,[]),(0,$t.jsx)(pr.Fragment,{children:t.items?.map(s=>(0,$t.jsx)(ct,{id:s.id,style:r,className:o?.className||e},s.id))})};var no=require("@iiif/helpers/styles");var $e=require("react");var Ue=require("@atlas-viewer/atlas");var Y=Q(require("react"),1),oe=require("react/jsx-runtime"),Mo=Y.default.createContext("en"),wo=Y.default.createContext({}),Eo=Y.default.createContext(null);function Vo(){return Y.default.useContext(Eo)}function hr(){return Y.default.useContext(Mo)}function ko(){return Y.default.useContext(wo)}function gr(e){return e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):e}function No({as:e,language:n,children:t,viewingDirection:r,...o}){let s=hr();return(0,Y.useMemo)(()=>gr(s)===gr(n),[s,n])?e?(0,oe.jsx)(e,{...o,children:t}):(0,oe.jsx)("span",{...o,children:t}):e?(0,oe.jsx)(e,{...o,lang:n,dir:r,children:t}):(0,oe.jsx)("span",{...o,lang:n,dir:r,children:t})}function Lo(e,n,t){if(n.length===0)return;if(n.length===1)return n[0];if(n.indexOf(e)!==-1)return e;let r=e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):null;if(r&&n.indexOf(r)!==-1)return r;for(let o of t)if(n.indexOf(o)!==-1)return o;return n.indexOf("none")!==-1?"none":n.indexOf("@none")!==-1?"@none":n[0]}var zo=(e,n=[])=>{let t=hr();return(0,Y.useMemo)(()=>{let r=e();return Lo(t,r,[])},[t,...n])};function qt(e,n,t,r){return n?t?t(e[n]||n,r||"none"):e[n]||n:""}function Oo(e,n,t=`
2
+ `,r={}){let o=Vo(),s=zo(()=>Object.keys(e||{}),[e]);return[(0,Y.useMemo)(()=>{if(!e)return qt(r,n,o)||"";if(typeof e=="string")return qt(r,e,o);let i=s?e[s]:void 0;return i?typeof i=="string"?i:i.map(a=>qt(r,a,o,s)).join(t):""},[s,n,e]),s]}function Be({as:e,defaultText:n,enableDangerouslySetInnerHTML:t,children:r,separator:o,...s}){let i=ko(),[a,u]=Oo(r,n,o,i);return u?(0,oe.jsx)(No,{...s,as:e,language:u,title:t?void 0:a,dangerouslySetInnerHTML:t?{__html:a}:void 0,children:t?void 0:a}):e?(0,oe.jsx)(e,{...s,children:a}):(0,oe.jsx)("span",{...s,title:t?void 0:a,dangerouslySetInnerHTML:t?{__html:a}:void 0,children:t?void 0:a})}var vr=require("@iiif/parser/image-3");var lt=Q(require("react"),1),yr=require("@atlas-viewer/iiif-image-api"),Ho=lt.default.createContext(new yr.ImageServiceLoader);function Te(){return(0,lt.useContext)(Ho)}var $=require("react/jsx-runtime");function Fo({resource:e,heading:n,note:t,extra:r}){return r?(0,$.jsx)(Ue.HTMLPortal,{target:{x:0,y:0,width:r.target?.spatial.width,height:r.target?.spatial.height},backgroundColor:"#333",relative:!0,children:(0,$.jsx)("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:(0,$.jsxs)("div",{children:[(0,$.jsx)(Be,{children:n||"Not authorised"}),t&&(0,$.jsx)("p",{children:(0,$.jsx)(Be,{children:t})}),(0,$.jsx)("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}function Sr({image:e,thumbnail:n,crop:t,enableSizes:r,enableThumbnail:o,renderOptions:s}){let i=wn(),a=Te(),u=e.service?(0,vr.canonicalServiceUrl)(e.service.id||e.service["@id"]||""):void 0,l=u?!!a.imageServices[u]:void 0,c=n&&n.type==="fixed"&&n.id&&!n.id.includes("/full/full/")&&!n.id.includes("/max/")?n:void 0;if(l===!1)return null;if(!i){let d=e.service,f=d.width||e.width||0,p=d.height||e.height||0;return(0,$.jsx)(Ue.TileSet,{enableThumbnail:o,renderOptions:s,tiles:{id:d.id||d["@id"]||"unknown",height:p,width:f,imageService:d,thumbnail:c},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:t})}return(0,$.jsx)(En,{resource:e.service,errorComponent:Fo,extra:e,children:d=>{let f=d.width||e.width||0,p=d.height||e.height||0;return(0,$.jsx)(Ue.TileSet,{enableThumbnail:o,renderOptions:s,tiles:{id:d.id||d["@id"]||"unknown",height:p,width:f,imageService:d,thumbnail:c},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:t})}},e.id)}var le=require("react/jsx-runtime");function Ie({id:e,image:n,thumbnail:t,isStatic:r,x:o=0,y:s=0,children:i,selector:a,onClick:u,enableSizes:l}){let c=(0,$e.useMemo)(()=>{if(!(!a||a.spatial.x===0&&a.spatial.y===0))return a.spatial},[a]);return(0,le.jsx)("world-object",{x:o+n.target.spatial.x,y:s+n.target.spatial.y,width:n.target.spatial.width,height:n.target.spatial.height,onClick:u,children:n.service?(0,le.jsxs)($e.Fragment,{children:[(0,le.jsx)(Sr,{image:n,thumbnail:t,crop:c,enableSizes:l}),i]},"service"):(0,le.jsxs)($e.Fragment,{children:[(0,le.jsx)("world-image",{onClick:u,uri:n.id,target:{x:0,y:0,width:n.target.spatial.width,height:n.target.spatial.height},display:n.width&&n.height?{width:n.width,height:n.height}:void 0,crop:c}),i]},"no-service")},e+(n.service?"server":"no-service"))}var G=require("react");var Me=require("react");var xr=require("@iiif/helpers");function dt(e,n){let{selector:t,source:r}=(0,xr.expandTarget)(n);if(r.id!==e.id)return[null,r];let o={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}};return[t?t.type==="TemporalSelector"?{type:"TemporalBoxSelector",temporal:t.temporal,spatial:o.spatial}:t:null,r]}var Cr={makeChoice:()=>{}},mt={type:"unknown"},w=e=>({type:"unknown",reason:e,annotations:{pages:[]}}),Ar=(e,n)=>({type:"empty",width:e,height:n,annotations:{pages:[]},image:null,images:[]});var qe=require("react");function Do(e,n){let t=e?.iiif?.meta[n];return t?t.annotationPageManager:null}function br(e,n){return I(t=>{let r=[];if(!e)return r;let o=Object.keys(t.iiif.entities.AnnotationPage);for(let s of o)if(!n||n.indexOf(s)!==-1){let i=Do(t,s);i&&i.views&&i.views[e]&&r.push(s)}return r},[e,n])}function Pr({canvas:e,manifest:n,all:t,canvases:r}){let o=[];if(n)for(let s of n.annotations)o.indexOf(s.id)===-1&&o.push(s.id);if(t){if(r&&r.length)for(let s of r)for(let i of s.annotations)o.indexOf(i.id)===-1&&o.push(i.id)}else if(e)for(let s of e.annotations)o.indexOf(s.id)===-1&&o.push(s.id);return o}function Bo(e,n){let t=e?.iiif?.meta[n];return t?t.annotationPageManager:null}function Rr(e,n={}){let t=T(),r=z(),o=E(),s=Xe(),i=(0,qe.useMemo)(()=>Pr({all:n.all,manifest:r,canvas:o,canvases:s}),[n.all,o,s,r]),a=br(e,n.all?void 0:i),u=(0,qe.useCallback)(c=>{e&&t.setMetaValue([c,"annotationPageManager","views"],d=>d&&!d[e]?d:{...d||{},[e]:!1})},[e,t]),l=(0,qe.useCallback)((c,d={})=>{if(!e)return;let f=t.getState(),p=[];if(d?.deselectOthers){let v=Object.keys(f.iiif.entities.AnnotationPage);for(let g of v){let P=Bo(f,g);P&&P.views&&P.views[e]&&p.push(g)}}for(let v of p)u(v);t.setMetaValue([c,"annotationPageManager","views"],v=>v&&v[e]?v:{...v||{},[e]:!0})},[e,u,t]);return{availablePageIds:i,enabledPageIds:a,setPageEnabled:l,setPageDisabled:u}}function Tr(e,n){return I((t,r)=>r.get(e.map(o=>({id:o,type:n}))),[e,n])}var ie=require("react");function Ir(){let e=Te(),[n,t]=(0,ie.useState)({}),r=(0,ie.useRef)(!1);return(0,ie.useEffect)(()=>()=>{r.current=!0},[]),[(0,ie.useCallback)((s,{height:i,width:a})=>{if(s){let u=s.id||s["@id"],l=e.loadServiceSync({id:u,width:s.width||a,height:s.height||i,source:s});l?s=l:n[u]||(r.current||t(c=>({...c,[u]:"loading"})),e.loadService({id:u,width:s.width||a,height:s.height||i}).then(()=>{r.current||t(c=>({...c,[u]:"done"}))}))}return s},[e,n]),n]}var de=require("react");function Mr(e={}){let n=st(),t=E(e.canvasId?{id:e.canvasId}:void 0);return I((r,o)=>{if(!t)return[];if(n&&e.enableSingleAnnotation)return[n];let s=o.get(t.items),i=[];for(let a of s)i.push(...o.get(a.items));return i},[t])}var wr=require("@iiif/helpers/painting-annotations");function Er(e,n=[]){let t=T(),r=(0,de.useMemo)(()=>(0,wr.createPaintingAnnotationsHelper)(t),[]),o=Mr({enableSingleAnnotation:e?.enableSingleAnnotation}),[s,i]=(0,de.useState)(e?.defaultChoices||[]),a=(0,de.useMemo)(()=>r.getPaintables(o,s),[t,o,s,...n]),l={makeChoice:(0,de.useCallback)((c,{deselectOthers:d=!0,deselect:f=!1}={})=>{a.choice&&i(p=>{if(f){let g=p.filter(P=>P!==c);if(g.length===0){let P=a.items[0].resource.id;return P?[P]:[]}return g}if(d)return[c];let v=[...p];if(v.length===0&&a.items.length){let g=a.items[0].resource.id;g&&v.push(g)}return p.indexOf(c)!==-1?p:[...p,c]})},[a.choice])};return[a,l]}var Uo=["model/gltf-binary"];function Vr(e,n){let r=n.items[0].resource;return r.format?Uo.indexOf(r.format)===-1?w(`3D format: ${r.format} is unsupported`):{type:"3d-model",model:r}:w("Unknown format")}function kr(e,n){if(!e.duration)return w("No duration on canvas");if(n.items.length>1)return w("Only one audio source supported");let t=n.items[0]?.resource;return t?t.format?{type:"media",media:{annotationId:n.items[0].annotationId,duration:e.duration,url:t.id,type:"Sound",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:t.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},annotations:{pages:[]}}:w("Audio does not have format"):w("Unknown audio")}var Nr=require("@atlas-viewer/iiif-image-api");var _t=require("@iiif/helpers/annotation-targets");function ft(e,n,t){let r=[];for(let o of n.items){let s=o.resource&&o.resource.type==="SpecificResource"?o.resource.source:o.resource;if(!s.id)return w("No resource Identifier");let i;if(s.service){let g=(0,Nr.getImageServices)(s);g[0]&&(i=t(g[0],e))}let a={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}},[u,l]=dt(e,o.target),c=e.id?.split("?")[0]||"";if(!(l.id===e.id||decodeURIComponent(l.id||"")===(e.id||"")||l.id===c||decodeURIComponent(l.id||"")===c))continue;let d=o.resource.width&&o.resource.height?{type:"BoxSelector",spatial:{x:0,y:0,width:o.resource.width,height:o.resource.height}}:void 0,f=o.resource.type==="SpecificResource"?(0,_t.expandTarget)(o.resource):null;if(o.selector){let g=(0,_t.expandTarget)({type:"SpecificResource",source:o.resource,selector:o.selector});g&&(f=g)}let p=f&&f.selector&&(f.selector.type==="BoxSelector"||f.selector.type==="TemporalBoxSelector")?{type:"BoxSelector",spatial:{x:f.selector.spatial.x,y:f.selector.spatial.y,width:f.selector.spatial.width,height:f.selector.spatial.height}}:void 0;i&&!i.id&&(i.id=i["@id"]);let v={id:s.id,type:"Image",annotationId:o.annotationId,width:Number(u||p?s.width:e.width),height:Number(u||p?s.height:e.height),service:i,sizes:i&&i.sizes?i.sizes:s.width&&s.height?[{width:s.width,height:s.height}]:[],target:u&&u.type!=="PointSelector"?u:a,selector:p||{type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}}};r.push(v)}return{type:"images",image:r[0],images:r,choice:n.choice}}function Lr(e,n={},t){let r=e.language||t||"none";switch(e.type){case"TextualBody":{typeof e.value<"u"&&(n[r]=[e.value]);break}case"List":case"Composite":case"Choice":e.items&&e.items.forEach(o=>Lr(o,n,r))}return n}function pt(e,n){let t=[];return n.items.forEach(r=>{if(r.resource){let[o]=dt(e,r.target);t.push({type:"Text",annotationId:r.annotationId,text:Lr(r.resource),target:o})}}),{type:"textual-content",items:t}}var gt=require("@iiif/helpers"),$o=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function ht(e,n,t){let r=n.items.filter(p=>p.type==="video"),o=!1;if(e.duration||(o=!0),r.length>1)return w("Only one video source supported");let s=r[0]?.resource,i=!!(s.service||[]).find(p=>(p.profile||"").includes("youtube.com"));if(!i&&o)return w("Video does not have duration");if(!s)return w("Unknown video");if((!s.format||s.format==="text/html")&&!i)return w("Video does not have format");let a=[],u=t.get(e.annotations);for(let p of u){let v=t.get(p.items);for(let g of v)if((g.motivation?Array.isArray(g.motivation||"")?g.motivation:[g.motivation]:[]).includes("supplementing")){let y=t.get(g.body);for(let S of y){let m=S;if(m.type==="Choice")for(let A of m.items){let C=t.get(A);C.format==="text/vtt"&&a.push({id:C.id,type:"Text",format:"text/vtt",label:C.label,language:C.language})}else m.format==="text/vtt"&&a.push({id:m.id,type:"Text",format:"text/vtt",label:m.label,language:m.language})}}}let l=n.items[0],c={annotationId:n.items[0].annotationId,duration:e.duration,url:s.id,type:"Video",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:s.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},d=(0,gt.expandTarget)(l.target);d.selector&&d.selector.type==="TemporalBoxSelector"&&(c.target=d.selector);let{selector:f}=(0,gt.parseSelector)(l.selector);if(f===null){let p=c.target.temporal.startTime,g=(c.target.temporal.endTime||e.duration)-p;c.selector={type:"TemporalSelector",temporal:{startTime:0,endTime:g}}}else f.type==="TemporalSelector"&&(c.selector=f);if(i){c.type="VideoYouTube";let p=s.id.match($o);if(!p[1])return w("Video is not known youtube video");c.youTubeId=p[1]}return{type:"media",media:c,annotations:{pages:[]},captions:a}}function zr(e,n,t,r){let o={type:"complex-timeline",items:[],keyframes:[],duration:e.duration||0},s={type:"complex-choice",items:[]};function i(l){l.choice&&(l.choice.type==="complex-choice"?s.items.push(...l.choice.items):s.items.push(l.choice))}for(let l of n.items){if(l.type==="image"){let c=ft(e,{choice:null,allChoices:null,types:["image"],items:[l]},t);if(c.type==="images"){i(c),o.items.push(c.image);let d={id:c.image.annotationId,type:"enter",resourceType:"image",time:c.image.target?.temporal?.startTime||0};o.keyframes.push(d);let f={id:c.image.annotationId,type:"exit",resourceType:"image",time:c.image.target?.temporal?.endTime||e.duration||0};o.keyframes.push(f)}}if(l.type==="textualbody"){let c=pt(e,{choice:null,allChoices:null,types:["textualbody"],items:[l]});if(c.type==="textual-content"){i(c);let d=c.items[0];o.items.push(d);let f=d.target,p={id:d.annotationId,type:"enter",resourceType:"text",time:f.temporal?.startTime||0};o.keyframes.push(p);let v={id:d.annotationId,type:"exit",resourceType:"text",time:f.temporal?.endTime||e.duration||0};o.keyframes.push(v)}}if(l.type==="video"){let c=ht(e,{choice:null,allChoices:null,types:["video"],items:[l]},r);if(c.type==="media"){i(c);let d=c.media;o.items.push(d);let f={id:d.annotationId,type:"enter",resourceType:"video",time:d.target?.temporal?.startTime||0};o.keyframes.push(f);let p={id:d.annotationId,type:"exit",resourceType:"video",time:d.target?.temporal?.endTime||e.duration||0};o.keyframes.push(p)}}}o.keyframes.sort((l,c)=>l.time-c.time);let a=[],u=[];for(let l of o.keyframes){if(l.resourceType==="image"||l.resourceType==="text"){u.push(l);continue}if(l.type==="enter"){a.length===0&&(l.isPrime=!0),a.push(l),u.push(l);continue}if(l.type==="exit"&&(u.push(l),a=a.filter(c=>c.id!==l.id),a.length!==0)){let c=a[0],d={id:c.id,type:"change",isPrime:!0,resourceType:c.resourceType,time:l.time};u.push(d)}}return o.keyframes=u,s.items.length&&(o.choice=s),o}function Or({canvas:e,paintables:n,supports:t,loadImageService:r,vault:o}){if(!e)return mt;if(n.types.length===0)return t.indexOf("empty")!==-1?Ar(e.width,e.height):mt;if(n.types.length!==1)if(n.types.length===2&&n.types.indexOf("text")!==-1)n.types=n.types.filter(i=>i!=="text");else return t.indexOf("complex-timeline")===-1?w("Complex timeline not supported"):zr(e,n,r,o);let s=n.types[0];return s==="image"?t.indexOf("images")===-1?w("Image not supported"):ft(e,n,r):s==="Model"||s==="model"?t.indexOf("3d-model")===-1?w("3D not supported"):Vr(e,n):s==="textualbody"?t.indexOf("textual-content")===-1?w("Textual content not supported"):pt(e,n):s==="sound"||s==="audio"?t.indexOf("media")===-1?w("Media not supported"):kr(e,n):s==="video"?t.indexOf("media")===-1?w("Media not supported"):ht(e,n,o):mt}function Hr(e){let n=z(),t=E(),r=T(),o=Bn(),s=e?.emitter||o,[i,a]=Ir(),{enabledPageIds:u}=Rr(e?.annotationPageManagerId||n?.id||t?.id,{all:!1}),l=Tr(u,"AnnotationPage"),c=e?.strategies||["empty","images","media","textual-content","complex-timeline"],[d,f]=Er(e,[a]);(0,Me.useEffect)(()=>{let v=g=>{f.makeChoice(g.choiceId,{deselectOthers:g.deselectOthers,deselect:g.deselect})};return s.on("make-choice",v),()=>{s.off("make-choice",v)}},[]);let p=(0,Me.useMemo)(()=>Or({canvas:t,paintables:d,supports:c,loadImageService:i,vault:r}),[t,d,r,f.makeChoice]);return(0,Me.useEffect)(()=>{let v=d.allChoices,g={canvasId:t?.id,manifestId:n?.id};v&&s.emit("choice-change",{choice:v,partOf:g})},[t?.id,d.allChoices]),(0,Me.useMemo)(()=>p.type==="unknown"?[p,Cr]:[{...p,annotations:{pages:l}},f],[p,l])}var ae=require("react");var Fr=require("react"),Dr=(e,n=[])=>{let t=T();(0,Fr.useEffect)(()=>{e(t)},[t,...n])};var Br=require("@iiif/helpers/thumbnail");function yt(e,n,{canvasId:t,manifestId:r}={}){let o=T(),s=Te(),i=(0,ae.useMemo)(()=>(0,Br.createThumbnailHelper)(o,{imageServiceLoader:s}),[o,s]),[a,u]=(0,ae.useState)(),l=z(r?{id:r}:void 0),c=E(t?{id:t}:void 0),d=c||l,f=(0,ae.useRef)(!1);if((0,ae.useEffect)(()=>(f.current=!1,()=>{f.current=!0}),[]),!d)throw new Error("Must be called under a manifest or canvas context.");return Dr(p=>{i.getBestThumbnailAtSize(d,e,n).then(v=>{v.best&&!f.current&&u(v.best)})},[d]),a}var V=require("react");function qo(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function _o(e,n){switch(n.type){case"FINISHED":return{...e,isFinished:!0,isPlaying:!1,playRequested:!1};case"PLAY_PAUSE":return{...e,isFinished:!1,isPlaying:!e.isPlaying};case"PLAY_REQUESTED":return{...e,isFinished:!1,playRequested:!0};case"PAUSE":return{...e,isPlaying:!1};case"PLAY":return{...e,isFinished:!1,playRequested:!1,isPlaying:!0};case"MUTE":return{...e,isMuted:!0};case"SET_VOLUME":return{...e,volume:n.volume,isMuted:n.volume===0};case"TOGGLE_MUTE":return{...e,isMuted:!e.isMuted};case"UNMUTE":return{...e,isMuted:!1}}return e}function jt(e){let n=Math.round(e);return`${Math.floor(n/60)}:${`${n%60}`.padStart(2,"0")}`}function we(e){let[n,t]=(0,V.useReducer)(_o,qo(e.duration)),r=(0,V.useRef)(null),o=(0,V.useRef)(null),s=(0,V.useRef)(null),i=(0,V.useRef)(!1),a=(0,V.useCallback)(()=>{o.current&&r.current&&(o.current.innerHTML=jt(r.current.currentTime),s.current&&(s.current.style.width=`${r.current.currentTime/e.duration*100}%`),i.current!==r.current.muted&&(i.current=r.current.muted,t(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"})))},[e.duration]),u=(0,V.useCallback)(()=>{r.current&&(t({type:"PLAY_REQUESTED"}),r.current.play().then(()=>{t({type:"PLAY"})}),a())},[a]),l=(0,V.useCallback)(()=>{r.current&&(r.current.duration>0&&r.current.paused?u():c())},[a]),c=(0,V.useCallback)(()=>{r.current&&(r.current.pause(),t({type:"PAUSE"}),a())},[a]),d=(0,V.useCallback)(()=>{r.current&&(r.current.muted=!r.current.muted,t(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),f=(0,V.useCallback)(()=>{r.current&&(r.current.muted=!0,t({type:"MUTE"}))},[]),p=(0,V.useCallback)(()=>{r.current&&(r.current.muted=!1,t({type:"UNMUTE"}))},[]),v=(0,V.useCallback)(y=>{r.current&&(r.current.muted=!1,r.current.volume=y/100,t({type:"SET_VOLUME",volume:y}))},[]),g=(0,V.useCallback)(y=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(y*e.duration,e.duration)),a())},[]),P=(0,V.useCallback)(y=>{if(r.current){let S=typeof y=="function"?y(r.current.currentTime):y;r.current.currentTime=Math.max(0,Math.min(S,e.duration)),a()}},[]);return(0,V.useEffect)(()=>{let y=setInterval(()=>{a()},350);return()=>clearInterval(y)},[a,e.duration]),(0,V.useEffect)(()=>{let y=()=>{t({type:"FINISHED"})},S=r.current;return S?.addEventListener("ended",y),()=>S?.removeEventListener("ended",y)},[]),[{element:r,currentTime:o,progress:s},n,{play:u,pause:c,playPause:l,mute:f,unmute:p,toggleMute:d,setVolume:v,setDurationPercent:g,setTime:P}]}var _e=require("react"),vt=require("react/jsx-runtime"),jo=(0,_e.createContext)(null),Ko=(0,_e.createContext)(null),Wo=(0,_e.createContext)(null);function St({actions:e,state:n,children:t,currentTime:r,progress:o,element:s}){return(0,vt.jsx)(Wo.Provider,{value:{currentTime:r,progress:o,element:s},children:(0,vt.jsx)(Ko.Provider,{value:e,children:(0,vt.jsx)(jo.Provider,{value:n,children:t})})})}var Ur=require("react");var $r=require("@iiif/helpers");function xt(){let e=z(),n=E();return(0,Ur.useMemo)(()=>{if(!e||!n||!e.start)return null;let t=(0,$r.expandTarget)(e.start);return!t||t.source.id!==n.id||!t||!t.selector||t.selector.type!=="TemporalSelector"?null:t.selector.temporal},[e,n])}var At=require("react/jsx-runtime");function Kt({media:e,startTime:n,children:t}){let[{element:r,currentTime:o,progress:s},i,a]=we({duration:e.duration}),u=n?`${e.url}#t=${n}`:e.url;return(0,At.jsxs)(St,{state:i,actions:a,currentTime:o,progress:s,element:r,children:[(0,At.jsx)("audio",{ref:r,src:u}),t]})}function Ct({media:e,mediaControlsDeps:n,audioCopmonent:t=Kt,children:r}){let o=xt();return U("portal","audio",t,{media:e,startTime:o?o.startTime:null,children:r},[e,o,...n||[]]),null}var je=require("react/jsx-runtime");function Wt({element:e,media:n,startTime:t,playPause:r,poster:o}){let s="div",i=t?`${n.url}#t=${t}`:n.url;return(0,je.jsxs)(s,{className:"video-container",part:"video-container",onClick:r,children:[(0,je.jsx)("style",{children:`
3
3
  .video-container {
4
4
  position: absolute;
5
5
  top: 0;
@@ -12,7 +12,7 @@
12
12
  justify-content: center;
13
13
  pointer-events: visible;
14
14
  }
15
- `}),(0,_e.jsx)("video",{poster:o,ref:e,src:i,style:{width:"100%",objectFit:"contain"}})]})}function bt({media:e,mediaControlsDeps:t,children:n,videoComponent:r=Wt}){let o=E(),s=xt(),i=o&&o.placeholderCanvas&&o.placeholderCanvas.id||void 0,a=vt({},!1,{canvasId:i}),[{element:u,currentTime:c,progress:l},d,m]=we({duration:e.duration});return U("overlay","video-element",r,{element:u,media:e,playPause:m.playPause,poster:a?.id,startTime:s?s.startTime:null},[a]),U("portal","custom-controls",St,{state:d,actions:m,currentTime:c,progress:l,element:u,children:n},[c,d,e,...t||[]]),null}var se=require("react/jsx-runtime");function jt({model:e}){return(0,se.jsxs)(se.Fragment,{children:[(0,se.jsx)("style",{children:`
15
+ `}),(0,je.jsx)("video",{poster:o,ref:e,src:i,style:{width:"100%",objectFit:"contain"}})]})}function bt({media:e,mediaControlsDeps:n,children:t,videoComponent:r=Wt,captions:o}){let s=E(),i=xt(),a=s&&s.placeholderCanvas&&s.placeholderCanvas.id||void 0,u=yt({},!1,{canvasId:a}),[{element:l,currentTime:c,progress:d},f,p]=we({duration:e.duration});return U("overlay","video-element",r,{element:l,media:e,playPause:p.playPause,poster:u?.id,canvas:s,startTime:i?i.startTime:null,captions:o},[u]),U("portal","custom-controls",St,{state:f,actions:p,currentTime:c,progress:d,element:l,children:t},[c,f,e,...n||[]]),null}var se=require("react/jsx-runtime");function Yt({model:e}){return(0,se.jsxs)(se.Fragment,{children:[(0,se.jsx)("style",{children:`
16
16
  .model-container {
17
17
  position: absolute;
18
18
  top: 0;
@@ -25,7 +25,7 @@
25
25
  justify-content: center;
26
26
  pointer-events: visible;
27
27
  }
28
- `}),(0,se.jsx)("div",{className:"model-container",children:(0,se.jsx)("model-viewer",{"interaction-prompt":"none",style:{width:"100%",height:"100%"},"camera-controls":"","ar-status":"not-presenting",src:e.id})})]})}function Pt({model:e,name:t}){return U("overlay",`model-${t}`,jt,{model:e},[e]),null}var Ur=require("react/jsx-runtime");function Rt({style:e}){let t=E();return!t||!t.height||!t.width?null:(0,Ur.jsx)("box",{interactive:!1,target:{x:0,y:0,width:Number(t.width),height:Number(t.height)},style:e})}var Yt=require("react/jsx-runtime");function Tt(e){let t=E();return!t||!t.placeholderCanvas?null:(0,Yt.jsx)(Q,{canvas:t.placeholderCanvas.id,children:(0,Yt.jsx)(Me,{renderViewerControls:e.renderViewerControls})})}var $r=require("react"),Ke=require("react/jsx-runtime");function qo({element:e,media:t,playPause:n}){let r=(0,$r.useRef)(null);return t.youTubeId?(0,Ke.jsxs)("div",{className:"video-container",part:"video-container",onClick:n,children:[(0,Ke.jsx)("style",{children:`
28
+ `}),(0,se.jsx)("div",{className:"model-container",children:(0,se.jsx)("model-viewer",{"interaction-prompt":"none",style:{width:"100%",height:"100%"},"camera-controls":"","ar-status":"not-presenting",src:e.id})})]})}function Pt({model:e,name:n}){return U("overlay",`model-${n}`,Yt,{model:e},[e]),null}var qr=require("react/jsx-runtime");function Rt({style:e}){let n=E();return!n||!n.height||!n.width?null:(0,qr.jsx)("box",{interactive:!1,target:{x:0,y:0,width:Number(n.width),height:Number(n.height)},style:e})}var Qt=require("react/jsx-runtime");function Tt(e){let n=E();return!n||!n.placeholderCanvas?null:(0,Qt.jsx)(Z,{canvas:n.placeholderCanvas.id,children:(0,Qt.jsx)(Ee,{renderViewerControls:e.renderViewerControls})})}var _r=require("react"),Ke=require("react/jsx-runtime");function Yo({element:e,media:n,playPause:t}){let r=(0,_r.useRef)(null);return n.youTubeId?(0,Ke.jsxs)("div",{className:"video-container",part:"video-container",onClick:t,children:[(0,Ke.jsx)("style",{children:`
29
29
  .video-container {
30
30
  position: absolute;
31
31
  top: 0;
@@ -43,4 +43,4 @@
43
43
  width: 100%;
44
44
  object-fit: contain;
45
45
  }
46
- `}),(0,Ke.jsx)("iframe",{className:"video-yt",ref:r,src:`https://www.youtube.com/embed/${t.youTubeId}?enablejsapi=1&origin=${window.location.host}`,referrerPolicy:"no-referrer",sandbox:"allow-scripts allow-same-origin allow-presentation"})]}):null}function Br({media:e,mediaControlsDeps:t,children:n}){let[{element:r,currentTime:o,progress:s},i,a]=we({duration:e.duration});return U("overlay","video-element",qo,{element:r,media:e,playPause:a.playPause}),null}var wt=require("react");var _r=Y(require("mitt"),1);var Kr=require("zustand/vanilla");function qr({currentKeyFrameIndex:e,keyframes:t,targetTime:n,currentTime:r}){if(r<=n){let o=t.findIndex(a=>a.time>n);if(o===-1)return[e,[]];let s={},i=t.slice(e,o);for(let a of i)a.type==="enter"&&(s[a.id]=a),a.type==="exit"&&(s[a.id]?delete s[a.id]:s[a.id]=a);return[o,Object.values(s)]}return[e,[]]}function Wr({complexTimeline:e,startTime:t=0}){let n=(0,_r.default)(),r={},o={progress:null,currentTime:null},s=0,i=null,a=0,u=null;function c(){let C=b.getState().visibleElements,f=r,v=[],w=Object.keys(f);for(let x of w){let P=f[x],A=C[x];P&&A&&v.push(P)}return v}function l(){return Object.keys(r).map(C=>r[C])}function d(g){o.currentTime&&(o.currentTime.innerHTML=_t(g),o.progress&&(o.progress.style.width=`${g/e.duration*100}%`))}let m=()=>{let g=b.getState(),C=g.currentPrime;if(!C)return;let f=r,v=g.visibleElements,w=Object.keys(f);for(let x of w){let P=f[x],A=v[x];if(P&&x!==C.id&&A){let X=a-A.time*1e3;Math.abs(a-A.time*1e3-P.currentTime*1e3)>300&&(P.currentTime=X/1e3)}}},S=(g=0)=>{let C=g-s,f=b.getState();if(f.isPlaying){let v=f.currentPrime;if(v){let A=r[v.id];A&&(A.paused?a+=C:a=(v.time+A.currentTime)*1e3)}else a+=C;let w=a/1e3;if(w>f.duration){b.getState().setTime(0),b.setState({isPlaying:!1}),y(),d(0);return}d(w);let[x,P]=qr({currentTime:w,currentKeyFrameIndex:f.nextKeyframeIndex,keyframes:f.complexTimeline.keyframes,targetTime:w});P.length&&f.applyKeyframes(x,P)}s=g,i=requestAnimationFrame(S)},y=()=>{i&&cancelAnimationFrame(i)},h=(g,C)=>{},b=(0,Kr.createStore)((g,C)=>({complexTimeline:e,elements:{},visibleElements:{},isBuffering:!1,bufferMap:{},isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,isReady:!1,volume:100,duration:e.duration,clockStartRequests:0,clockStartTime:0,primeTime:0,currentPrime:null,clockRunning:!1,nextKeyframeIndex:0,startClock:()=>{C().clockRunning||(S(),u=setInterval(m,500)),g({clockRunning:!0,clockStartRequests:C().clockStartRequests+1})},applyKeyframes(f,v){let w=C(),x={...w.visibleElements},P=w.currentPrime;for(let A of v)A.type==="enter"&&(x[A.id]=A,n.emit("complex-timeline.enter",{id:A.id})),A.type==="exit"&&(x[A.id]=null,n.emit("complex-timeline.exit",{id:A.id})),A.isPrime&&(P=A);g({nextKeyframeIndex:f,visibleElements:x,currentPrime:P})},stopClock:()=>{let f=C().clockStartRequests;if(f!==0){if(f===1){y(),u&&clearInterval(u),g({clockRunning:!1,clockStartRequests:0});return}g({clockStartRequests:f-1})}},setElement:(f,v)=>{r[f]=v;let w=Object.keys(r),x=C().complexTimeline;h(v,f),x.items.filter(A=>A.type!=="Image"&&A.type!=="Text").every(A=>w.includes(A.annotationId))&&!C().isReady&&(n.emit("complex-timeline.ready",{complexTimeline:x}),g({isReady:!0}))},removeElement:f=>{delete r[f]},mute(){for(let f of l())f.muted=!0;g({isMuted:!0})},unmute(){for(let f of l())f.muted=!1;g({isMuted:!1})},play(){if(!C().isPlaying){for(let v of c())v.play();g({isPlaying:!0})}},pause(){if(C().isPlaying){for(let v of c())v.pause();g({isPlaying:!1})}},playPause(){let f=C();f.isPlaying?f.pause():f.play()},setDurationPercent(f){let w=C().duration*f;C().setTime(w)},setTime(f){let v=C(),w=a/1e3,x=typeof f=="function"?f(w):f,P=v.nextKeyframeIndex;if(w>x){g({visibleElements:{},currentPrime:null});let D=Object.keys(v.visibleElements);for(let ee of D)n.emit("complex-timeline.exit",{id:ee});w=0,P=0}let[A,X]=qr({currentTime:w,currentKeyFrameIndex:P,keyframes:v.complexTimeline.keyframes,targetTime:x});v.applyKeyframes(A,X),a=x*1e3;let je=b.getState().visibleElements,Ye=r,Mt=Object.keys(je);for(let D of Mt){let ee=je[D];if(ee){let fe=Ye[D];fe&&(fe.currentTime=(a-ee.time*1e3)/1e3)}}d(x)},setVolume(f){for(let v of l())v.volume=Math.min(1,Math.max(0,f/100));g({volume:f})},toggleMute(){let f=C();f.isMuted?(f.unmute(),g({isMuted:!1})):(f.mute(),g({isMuted:!0}))},clearProgressElement(){o.progress=null},setProgressElement(f){o.progress=f},setCurrentTimeElement(f){o.currentTime=f},clearCurrentTimeElement(){o.currentTime=null}}));return n.on("complex-timeline.enter",g=>{let C=b.getState(),f=g.id,v=r[f];v&&C.isPlaying&&v.play()}),n.on("complex-timeline.exit",g=>{let C=b.getState(),f=g.id,v=r[f];v&&(v.currentTime=0,v.pause())}),b.getState().setTime(t),{store:b,emitter:n}}var Zr=require("@atlas-viewer/atlas");var Gt=require("zustand");var Qt=require("react"),_o=require("zustand"),Qr=require("react/jsx-runtime"),jr=(0,Qt.createContext)(null);jr.displayName="ComplexTimeline";function Yr({children:e,store:t}){return(0,Qr.jsx)(jr.Provider,{value:t,children:e})}var Gr=require("@atlas-viewer/atlas");var Z=require("react/jsx-runtime");function It({strategy:e,onClickPaintingAnnotation:t}){return(0,Z.jsx)(Z.Fragment,{children:e.items.map((n,r)=>(0,Z.jsx)(Z.Fragment,{children:(0,Z.jsx)(Gr.HTMLPortal,{onClick:t?o=>{o.stopPropagation(),t(n.annotationId,n,o)}:void 0,target:n.target?.spatial||void 0,children:(0,Z.jsx)("div",{"data-textual-content":!0,children:(0,Z.jsx)(De,{enableDangerouslySetInnerHTML:!0,children:n.text})})},r)}))})}var J=require("react/jsx-runtime");function Jr({strategy:e,children:t}){let{store:n}=(0,wt.useMemo)(()=>Wr({complexTimeline:e}),[e]),r=(0,Gt.useStore)(n,i=>i.isReady),o=(0,Gt.useStore)(n,i=>i.visibleElements);function s(i){return a=>{a&&n.getState().setElement(i,a)}}return(0,wt.useLayoutEffect)(()=>{if(r){let{startClock:i,stopClock:a}=n.getState();return i(),()=>{a()}}},[e,r]),U("portal","custom-controls",Yr,{store:n,children:t},[r]),(0,J.jsxs)(J.Fragment,{children:[e.items.map(i=>i.type!=="Image"||!o[i.annotationId]?null:(0,J.jsx)(Te,{image:i,id:i.annotationId},i.id)),e.items.map((i,a)=>i.type!=="Text"||!o[i.annotationId]?null:(0,J.jsx)(It,{strategy:{type:"textual-content",items:[i]}},a)),e.items.map((i,a)=>i.type!=="Video"||!i.target.spatial?null:(0,J.jsx)(Zr.HTMLPortal,{target:i.target.spatial,children:(0,J.jsx)("video",{ref:s(i.annotationId),src:i.url,style:{height:"100%",width:"100%",opacity:o[i.annotationId]?1:0}})},a))]})}var R=require("react/jsx-runtime");function Me({x:e,y:t,onChoiceChange:n,registerActions:r,defaultChoices:o,isStatic:s,renderViewerControls:i,renderMediaControls:a,renderComplexTimelineControls:u,viewControlsDeps:c,mediaControlsDeps:l,strategies:d,throwOnUnknown:m,backgroundStyle:S,alwaysShowBackground:y,keepCanvasScale:h=!1,enableSizes:b=!1,enableYouTube:g=!0,onClickPaintingAnnotation:C,children:f}){let v=E(),w=at(v,["deep-zoom"]),[x]=jn(),P=Zn(),A=T(),X=(0,j.useMemo)(()=>(0,Xr.createStylesHelper)(A),[A]),[p,je]=Lr({strategies:d||["images"],defaultChoices:o?.map(({id:N})=>N)}),Ye=p.type==="images"?p.choice:void 0,Mt=(0,j.useMemo)(()=>h?1:Math.max(1,...p.type==="images"?p.images.map(N=>(N.width||0)/N.target?.spatial.width):[]),[h,p]);Xn(Mt),(0,j.useEffect)(()=>{r&&r(je)},[p.annotations]),(0,j.useEffect)(()=>{if(o)for(let N of o)typeof N.opacity<"u"&&X.applyStyles({id:N.id},"atlas",{opacity:N.opacity})},[o]),(0,j.useLayoutEffect)(()=>{n&&n(Ye)},[Ye]),U(P&&(p.type==="images"||p.type==="empty"||p.type==="textual-content"&&i)?"overlay":"none",`canvas-portal-controls-${v?.id}`,He.Provider,i?{value:P||null,children:i(p)}:{},[v,P,p,...c||[]]);let D=vt({maxWidth:256,maxHeight:256});if(!v)return null;let ee=v.accompanyingCanvas,fe=v.placeholderCanvas,Ee=D&&D.type==="fixed"?(0,R.jsx)("world-object",{height:v.height,width:v.width,x:e,y:t,children:(0,R.jsx)("world-image",{uri:D.id,target:{x:0,y:0,width:v.width,height:v.height},display:D.width&&D.height?{width:D.width,height:D.height}:void 0,crop:void 0})}):null;if(p.type==="unknown"){if(Ee)return Ee;if(m)throw new Error(p.reason||"Unknown image strategy");return null}let Zt=(0,R.jsxs)(j.Fragment,{children:[x?(0,R.jsx)(Fe,{page:x}):null,p.annotations&&p.annotations.pages?p.annotations.pages.map(N=>(0,R.jsx)(Fe,{page:N},N.id)):null,f]}),eo=p.type==="images"?p.images.length:0,jo=p.type==="media"&&p.media.type==="Video"&&fe?(0,R.jsx)(Tt,{renderViewerControls:i}):null;return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)("world-object",{height:v.height,width:v.width,x:e,y:t,...w,children:[p.type==="empty"||y?(0,R.jsx)(Rt,{style:S}):null,p.type==="complex-timeline"?(0,R.jsx)(Jr,{strategy:p,children:u?u(p):null}):null,p.type==="textual-content"?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(It,{strategy:p,onClickPaintingAnnotation:C}),Zt]}):null,p.type==="images"?(0,R.jsxs)(R.Fragment,{children:[p.images.map((N,Jt)=>(0,R.jsx)(Te,{isStatic:s,image:N,id:N.id,thumbnail:Jt===0?D:void 0,selector:N.selector,enableSizes:b,onClick:C?to=>{C(N.annotationId,N,to)}:void 0},N.id+Jt)),Zt]}):null,p.type==="3d-model"?(0,R.jsx)(Pt,{model:p.model}):null,p.type==="media"?(0,R.jsx)(R.Fragment,{children:p.media.type==="Sound"?(0,R.jsxs)(Ct,{media:p.media,mediaControlsDeps:l,children:[Ee,a?a(p):null]}):p.media.type==="Video"?(0,R.jsxs)(bt,{media:p.media,mediaControlsDeps:l,children:[Ee,a?a(p):null]}):p.media.type==="VideoYouTube"&&g?(0,R.jsxs)(Br,{media:p.media,mediaControlsDeps:l,children:[Ee,a?a(p):null]}):null}):null]},`${v.id}/${p.type}/${eo}`),p.type==="media"&&p.media.type==="Sound"&&ee?(0,R.jsx)(Q,{canvas:ee.id,children:(0,R.jsx)(Me,{renderViewerControls:i})}):null,p.type==="media"&&p.media.type==="Sound"&&fe&&!ee?(0,R.jsx)(Q,{canvas:fe.id,children:(0,R.jsx)(Me,{renderViewerControls:i})}):null]})}var H=require("react/jsx-runtime"),Ko=(0,We.forwardRef)(function(t,n){let r=L(),o=Xe(),s=On(),{ViewerControls:i,MediaControls:a,ComplexTimelineControls:u}=t.components||{};if((0,We.useImperativeHandle)(n,()=>s,[s]),!r)return(0,H.jsx)("div",{});let c=0;return(0,H.jsxs)(H.Fragment,{children:[t.header,(0,H.jsx)(z.Viewer,{height:t.height,mode:t.mode,renderPreset:t.renderPreset,runtimeOptions:t.runtimeOptions,children:o.map((l,d)=>{let m=c;return c+=l.width+(t.spacing||0),(0,H.jsx)(Q,{canvas:l.id,children:(0,H.jsx)(z.RenderCanvas,{strategies:["3d-model","media","images","empty","textual-content","complex-timeline"],renderViewerControls:d===0&&i?()=>(0,H.jsx)(i,{}):void 0,renderMediaControls:d===0&&a?()=>(0,H.jsx)(a,{}):void 0,renderComplexTimelineControls:d===0&&u?()=>(0,H.jsx)(u,{}):void 0,x:m,...t.canvasProps||{},children:t.annotations},l.id)},l.id)})},t.reuseAtlas?"":s.currentSequenceIndex),t.children]})}),z=(0,We.forwardRef)(function({children:t,height:n,annotations:r,canvasProps:o,spacing:s,header:i,components:a,mode:u,reuseAtlas:c,renderPreset:l,runtimeOptions:d,...m},S){let y=he();return(0,H.jsx)(ge,{vault:y,children:(0,H.jsx)(zn,{...m,children:(0,H.jsx)(Ko,{ref:S,height:n,components:a,spacing:s,canvasProps:o,annotations:r,header:i,mode:u,reuseAtlas:c,renderPreset:l,runtimeOptions:d,children:t})})})});z.RenderImage=Te;z.RenderCanvas=Me;z.RenderAnnotationPage=Fe;z.RenderAnnotation=ct;z.Viewer=tr;z.CanvasBackground=Rt;z.Audio=Ct;z.Video=bt;z.Model=Pt;z.AudioHTML=Kt;z.VideoHTML=Wt;z.ModelHTML=jt;z.PlaceholderCanvas=Tt;
46
+ `}),(0,Ke.jsx)("iframe",{className:"video-yt",ref:r,src:`https://www.youtube.com/embed/${n.youTubeId}?enablejsapi=1&origin=${window.location.host}`,referrerPolicy:"no-referrer",sandbox:"allow-scripts allow-same-origin allow-presentation"})]}):null}function jr({media:e,mediaControlsDeps:n,children:t}){let[{element:r,currentTime:o,progress:s},i,a]=we({duration:e.duration});return U("overlay","video-element",Yo,{element:r,media:e,playPause:a.playPause}),null}var Mt=require("react");var Wr=Q(require("mitt"),1);var Yr=require("zustand/vanilla");function Kr({currentKeyFrameIndex:e,keyframes:n,targetTime:t,currentTime:r}){if(r<=t){let o=n.findIndex(a=>a.time>t);if(o===-1)return[e,[]];let s={},i=n.slice(e,o);for(let a of i)a.type==="enter"&&(s[a.id]=a),a.type==="exit"&&(s[a.id]?delete s[a.id]:s[a.id]=a);return[o,Object.values(s)]}return[e,[]]}function Qr({complexTimeline:e,startTime:n=0}){let t=(0,Wr.default)(),r={},o={progress:null,currentTime:null},s=0,i=null,a=0,u=null;function l(){let S=P.getState().visibleElements,m=r,A=[],C=Object.keys(m);for(let M of C){let b=m[M],x=S[M];b&&x&&A.push(b)}return A}function c(){return Object.keys(r).map(S=>r[S])}function d(y){o.currentTime&&(o.currentTime.innerHTML=jt(y),o.progress&&(o.progress.style.width=`${y/e.duration*100}%`))}let f=()=>{let y=P.getState(),S=y.currentPrime;if(!S)return;let m=r,A=y.visibleElements,C=Object.keys(m);for(let M of C){let b=m[M],x=A[M];if(b&&M!==S.id&&x){let L=a-x.time*1e3;Math.abs(a-x.time*1e3-b.currentTime*1e3)>300&&(b.currentTime=L/1e3)}}},p=(y=0)=>{let S=y-s,m=P.getState();if(m.isPlaying){let A=m.currentPrime;if(A){let x=r[A.id];x&&(x.paused?a+=S:a=(A.time+x.currentTime)*1e3)}else a+=S;let C=a/1e3;if(C>m.duration){P.getState().setTime(0),P.setState({isPlaying:!1}),v(),d(0);return}d(C);let[M,b]=Kr({currentTime:C,currentKeyFrameIndex:m.nextKeyframeIndex,keyframes:m.complexTimeline.keyframes,targetTime:C});b.length&&m.applyKeyframes(M,b)}s=y,i=requestAnimationFrame(p)},v=()=>{i&&cancelAnimationFrame(i)},g=(y,S)=>{},P=(0,Yr.createStore)((y,S)=>({complexTimeline:e,elements:{},visibleElements:{},isBuffering:!1,bufferMap:{},isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,isReady:!1,volume:100,duration:e.duration,clockStartRequests:0,clockStartTime:0,primeTime:0,currentPrime:null,clockRunning:!1,nextKeyframeIndex:0,startClock:()=>{S().clockRunning||(p(),u=setInterval(f,500)),y({clockRunning:!0,clockStartRequests:S().clockStartRequests+1})},applyKeyframes(m,A){let C=S(),M={...C.visibleElements},b=C.currentPrime;for(let x of A)x.type==="enter"&&(M[x.id]=x,t.emit("complex-timeline.enter",{id:x.id})),x.type==="exit"&&(M[x.id]=null,t.emit("complex-timeline.exit",{id:x.id})),x.isPrime&&(b=x);y({nextKeyframeIndex:m,visibleElements:M,currentPrime:b})},stopClock:()=>{let m=S().clockStartRequests;if(m!==0){if(m===1){v(),u&&clearInterval(u),y({clockRunning:!1,clockStartRequests:0});return}y({clockStartRequests:m-1})}},setElement:(m,A)=>{r[m]=A;let C=Object.keys(r),M=S().complexTimeline;g(A,m),M.items.filter(x=>x.type!=="Image"&&x.type!=="Text").every(x=>C.includes(x.annotationId))&&!S().isReady&&(t.emit("complex-timeline.ready",{complexTimeline:M}),y({isReady:!0}))},removeElement:m=>{delete r[m]},mute(){for(let m of c())m.muted=!0;y({isMuted:!0})},unmute(){for(let m of c())m.muted=!1;y({isMuted:!1})},play(){if(!S().isPlaying){for(let A of l())A.play();y({isPlaying:!0})}},pause(){if(S().isPlaying){for(let A of l())A.pause();y({isPlaying:!1})}},playPause(){let m=S();m.isPlaying?m.pause():m.play()},setDurationPercent(m){let C=S().duration*m;S().setTime(C)},setTime(m){let A=S(),C=a/1e3,M=typeof m=="function"?m(C):m,b=A.nextKeyframeIndex;if(C>M){y({visibleElements:{},currentPrime:null});let fe=Object.keys(A.visibleElements);for(let B of fe)t.emit("complex-timeline.exit",{id:B});C=0,b=0}let[x,L]=Kr({currentTime:C,currentKeyFrameIndex:b,keyframes:A.complexTimeline.keyframes,targetTime:M});A.applyKeyframes(x,L),a=M*1e3;let h=P.getState().visibleElements,wt=r,Ye=Object.keys(h);for(let fe of Ye){let B=h[fe];if(B){let pe=wt[fe];pe&&(pe.currentTime=(a-B.time*1e3)/1e3)}}d(M)},setVolume(m){for(let A of c())A.volume=Math.min(1,Math.max(0,m/100));y({volume:m})},toggleMute(){let m=S();m.isMuted?(m.unmute(),y({isMuted:!1})):(m.mute(),y({isMuted:!0}))},clearProgressElement(){o.progress=null},setProgressElement(m){o.progress=m},setCurrentTimeElement(m){o.currentTime=m},clearCurrentTimeElement(){o.currentTime=null}}));return t.on("complex-timeline.enter",y=>{let S=P.getState(),m=y.id,A=r[m];A&&S.isPlaying&&A.play()}),t.on("complex-timeline.exit",y=>{let S=P.getState(),m=y.id,A=r[m];A&&(A.currentTime=0,A.pause())}),P.getState().setTime(n),{store:P,emitter:t}}var eo=require("@atlas-viewer/atlas");var Zt=require("zustand");var Gt=require("react"),Qo=require("zustand"),Jr=require("react/jsx-runtime"),Gr=(0,Gt.createContext)(null);Gr.displayName="ComplexTimeline";function Zr({children:e,store:n}){return(0,Jr.jsx)(Gr.Provider,{value:n,children:e})}var Xr=require("@atlas-viewer/atlas");var ee=require("react/jsx-runtime");function It({strategy:e,onClickPaintingAnnotation:n}){return(0,ee.jsx)(ee.Fragment,{children:e.items.map((t,r)=>(0,ee.jsx)(ee.Fragment,{children:(0,ee.jsx)(Xr.HTMLPortal,{onClick:n?o=>{o.stopPropagation(),n(t.annotationId,t,o)}:void 0,target:t.target?.spatial||void 0,children:(0,ee.jsx)("div",{"data-textual-content":!0,children:(0,ee.jsx)(Be,{enableDangerouslySetInnerHTML:!0,children:t.text})})},r)}))})}var te=require("react/jsx-runtime");function to({strategy:e,children:n}){let{store:t}=(0,Mt.useMemo)(()=>Qr({complexTimeline:e}),[e]),r=(0,Zt.useStore)(t,i=>i.isReady),o=(0,Zt.useStore)(t,i=>i.visibleElements);function s(i){return a=>{a&&t.getState().setElement(i,a)}}return(0,Mt.useLayoutEffect)(()=>{if(r){let{startClock:i,stopClock:a}=t.getState();return i(),()=>{a()}}},[e,r]),U("portal","custom-controls",Zr,{store:t,children:n},[r]),(0,te.jsxs)(te.Fragment,{children:[e.items.map(i=>i.type!=="Image"||!o[i.annotationId]?null:(0,te.jsx)(Ie,{image:i,id:i.annotationId},i.id)),e.items.map((i,a)=>i.type!=="Text"||!o[i.annotationId]?null:(0,te.jsx)(It,{strategy:{type:"textual-content",items:[i]}},a)),e.items.map((i,a)=>i.type!=="Video"||!i.target.spatial?null:(0,te.jsx)(eo.HTMLPortal,{target:i.target.spatial,children:(0,te.jsx)("video",{ref:s(i.annotationId),src:i.url,style:{height:"100%",width:"100%",opacity:o[i.annotationId]?1:0}})},a))]})}var R=require("react/jsx-runtime");function Ee({x:e,y:n,onChoiceChange:t,registerActions:r,defaultChoices:o,isStatic:s,renderViewerControls:i,renderMediaControls:a,renderComplexTimelineControls:u,viewControlsDeps:l,mediaControlsDeps:c,strategies:d,throwOnUnknown:f,backgroundStyle:p,alwaysShowBackground:v,keepCanvasScale:g=!1,enableSizes:P=!1,enableYouTube:y=!0,onClickPaintingAnnotation:S,components:m={},children:A}){let C=E(),M=at(C,["deep-zoom"]),[b]=Gn(),x=er(),L=T(),me=(0,G.useMemo)(()=>(0,no.createStylesHelper)(L),[L]),[h,wt]=Hr({strategies:d||["images"],defaultChoices:o?.map(({id:N})=>N)}),Ye=h.type==="images"?h.choice:void 0,fe=(0,G.useMemo)(()=>g?1:Math.max(1,...h.type==="images"?h.images.map(N=>(N.width||0)/N.target?.spatial.width):[]),[g,h]);nr(fe),(0,G.useEffect)(()=>{r&&r(wt)},[h.annotations]),(0,G.useEffect)(()=>{if(o)for(let N of o)typeof N.opacity<"u"&&me.applyStyles({id:N.id},"atlas",{opacity:N.opacity})},[o]),(0,G.useLayoutEffect)(()=>{t&&t(Ye)},[Ye]),U(x&&(h.type==="images"||h.type==="empty"||h.type==="textual-content"&&i)?"overlay":"none",`canvas-portal-controls-${C?.id}`,Fe.Provider,i?{value:x||null,children:i(h)}:{},[C,x,h,...l||[]]);let B=yt({maxWidth:256,maxHeight:256});if(!C)return null;let pe=C.accompanyingCanvas,Et=C.placeholderCanvas,Ve=B&&B.type==="fixed"?(0,R.jsx)("world-object",{height:C.height,width:C.width,x:e,y:n,children:(0,R.jsx)("world-image",{uri:B.id,target:{x:0,y:0,width:C.width,height:C.height},display:B.width&&B.height?{width:B.width,height:B.height}:void 0,crop:void 0})}):null;if(h.type==="unknown"){if(Ve)return Ve;if(f)throw new Error(h.reason||"Unknown image strategy");return null}let Jt=(0,R.jsxs)(G.Fragment,{children:[b?(0,R.jsx)(De,{page:b}):null,h.annotations&&h.annotations.pages?h.annotations.pages.map(N=>(0,R.jsx)(De,{page:N},N.id)):null,A]}),ro=h.type==="images"?h.images.length:0,Jo=h.type==="media"&&h.media.type==="Video"&&Et?(0,R.jsx)(Tt,{renderViewerControls:i}):null;return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)("world-object",{height:C.height,width:C.width,x:e,y:n,...M,children:[h.type==="empty"||v?(0,R.jsx)(Rt,{style:p}):null,h.type==="complex-timeline"?(0,R.jsx)(to,{strategy:h,children:u?u(h):null}):null,h.type==="textual-content"?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(It,{strategy:h,onClickPaintingAnnotation:S}),Jt]}):null,h.type==="images"?(0,R.jsxs)(R.Fragment,{children:[h.images.map((N,Xt)=>(0,R.jsx)(Ie,{isStatic:s,image:N,id:N.id,thumbnail:Xt===0?B:void 0,selector:N.selector,enableSizes:P,onClick:S?oo=>{S(N.annotationId,N,oo)}:void 0},N.id+Xt)),Jt]}):null,h.type==="3d-model"?(0,R.jsx)(Pt,{model:h.model}):null,h.type==="media"?(0,R.jsx)(R.Fragment,{children:h.media.type==="Sound"?(0,R.jsxs)(Ct,{media:h.media,mediaControlsDeps:c,audioCopmonent:m.Audio,children:[Ve,a?a(h):null]}):h.media.type==="Video"?(0,R.jsxs)(bt,{captions:h.captions,media:h.media,mediaControlsDeps:c,videoComponent:m.Video,children:[Ve,a?a(h):null]}):h.media.type==="VideoYouTube"&&y?(0,R.jsxs)(jr,{media:h.media,mediaControlsDeps:c,children:[Ve,a?a(h):null]}):null}):null]},`${C.id}/${h.type}/${ro}`),h.type==="media"&&h.media.type==="Sound"&&pe?(0,R.jsx)(Z,{canvas:pe.id,children:(0,R.jsx)(Ee,{renderViewerControls:i})}):null,h.type==="media"&&h.media.type==="Sound"&&Et&&!pe?(0,R.jsx)(Z,{canvas:Et.id,children:(0,R.jsx)(Ee,{renderViewerControls:i})}):null]})}var F=require("react/jsx-runtime"),Go=(0,We.forwardRef)(function(n,t){let r=z(),o=Xe(),s=Hn(),{ViewerControls:i,MediaControls:a,ComplexTimelineControls:u}=n.components||{};if((0,We.useImperativeHandle)(t,()=>s,[s]),!r)return(0,F.jsx)("div",{});let l=0;return(0,F.jsxs)(F.Fragment,{children:[n.header,(0,F.jsx)(O.Viewer,{height:n.height,mode:n.mode,renderPreset:n.renderPreset,runtimeOptions:n.runtimeOptions,children:o.map((c,d)=>{let f=l;return l+=c.width+(n.spacing||0),(0,F.jsx)(Z,{canvas:c.id,children:(0,F.jsx)(O.RenderCanvas,{strategies:["3d-model","media","images","empty","textual-content","complex-timeline"],renderViewerControls:d===0&&i?()=>(0,F.jsx)(i,{}):void 0,renderMediaControls:d===0&&a?()=>(0,F.jsx)(a,{}):void 0,renderComplexTimelineControls:d===0&&u?()=>(0,F.jsx)(u,{}):void 0,x:f,...n.canvasProps||{},children:n.annotations},c.id)},c.id)})},n.reuseAtlas?"":s.currentSequenceIndex),n.children]})}),O=(0,We.forwardRef)(function({children:n,height:t,annotations:r,canvasProps:o,spacing:s,header:i,components:a,mode:u,reuseAtlas:l,renderPreset:c,runtimeOptions:d,...f},p){let v=ye();return(0,F.jsx)(he,{vault:v,children:(0,F.jsx)(On,{...f,children:(0,F.jsx)(Go,{ref:p,height:t,components:a,spacing:s,canvasProps:o,annotations:r,header:i,mode:u,reuseAtlas:l,renderPreset:c,runtimeOptions:d,children:n})})})});O.RenderImage=Ie;O.RenderCanvas=Ee;O.RenderAnnotationPage=De;O.RenderAnnotation=ct;O.Viewer=or;O.CanvasBackground=Rt;O.Audio=Ct;O.Video=bt;O.Model=Pt;O.AudioHTML=Kt;O.VideoHTML=Wt;O.ModelHTML=Yt;O.PlaceholderCanvas=Tt;
@@ -1,10 +1,10 @@
1
1
  import 'react';
2
- export { C as CanvasPanel } from './index-B6kdyv-j.cjs';
2
+ export { C as CanvasPanel } from './index-BAYQ0qVx.cjs';
3
3
  import '@atlas-viewer/atlas';
4
4
  import 'react/jsx-runtime';
5
5
  import '@iiif/presentation-3';
6
6
  import '@iiif/presentation-3-normalized';
7
- import './useRenderingStrategy-2EaRC2Nc.cjs';
7
+ import './useRenderingStrategy-DkjxMKJV.cjs';
8
8
  import '@iiif/helpers';
9
9
  import '@iiif/helpers/annotation-targets';
10
10
  import 'mitt';
@@ -1,10 +1,10 @@
1
1
  import 'react';
2
- export { C as CanvasPanel } from './index-D1lST-Xy.js';
2
+ export { C as CanvasPanel } from './index-CnXzAuQK.js';
3
3
  import '@atlas-viewer/atlas';
4
4
  import 'react/jsx-runtime';
5
5
  import '@iiif/presentation-3';
6
6
  import '@iiif/presentation-3-normalized';
7
- import './useRenderingStrategy-2EaRC2Nc.js';
7
+ import './useRenderingStrategy-DkjxMKJV.js';
8
8
  import '@iiif/helpers';
9
9
  import '@iiif/helpers/annotation-targets';
10
10
  import 'mitt';
@@ -1 +1 @@
1
- import{Pa as a}from"./chunk-HGERM6K7.js";import"./chunk-UFC4ZSNV.js";export{a as CanvasPanel};
1
+ import{Sa as a}from"./chunk-7KUFVAUD.js";import"./chunk-CCTBCLBV.js";export{a as CanvasPanel};
@@ -0,0 +1,48 @@
1
+ import{c as yt,l as xt}from"./chunk-CCTBCLBV.js";import{forwardRef as nr,useImperativeHandle as Ui}from"react";import ln,{useCallback as rt,useMemo as dn,useState as Te}from"react";import{AtlasAuto as Ao,ModeContext as Po}from"@atlas-viewer/atlas";import{ErrorBoundary as bo}from"react-error-boundary";import{useContext as D,useMemo as to}from"react";import ir,{useContext as ar,useMemo as sr}from"react";import{jsx as cr}from"react/jsx-runtime";var ur={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},Ae=ir.createContext(ur),F=()=>ar(Ae);function Y({value:e,children:n}){let t=F(),r=sr(()=>({...t,...e}),[e,t]);return cr(Ae.Provider,{value:r,children:n})}import lr,{useState as dr}from"react";import{Vault as St,globalVault as mr}from"@iiif/helpers/vault";import{jsx as Ct}from"react/jsx-runtime";var W=lr.createContext({vault:null,setVaultInstance:e=>{}});function ee({vault:e,vaultOptions:n,useGlobal:t,resources:r,children:o}){let[s,i]=dr(()=>e||(t?mr(n):n?new St(n):new St));return Ct(W.Provider,{value:{vault:s,setVaultInstance:i},children:Ct(Y,{value:r||{},children:o})})}import{useContext as jr}from"react";import{createContext as Kr,useMemo as Yr}from"react";import{globalVault as fr}from"@iiif/helpers/vault";import{useContext as pr}from"react";function te(e){let n=pr(W);return e||(n&&n.vault?n.vault:fr())}import{useEffect as gr,useMemo as vr,useState as _e}from"react";function At(e,{noCache:n=!1}={}){let t=typeof e=="string"?e:e.id,r=te(),[o,s]=_e(t),[i,a]=_e(void 0),u=vr(()=>r.get(t,{skipSelfReturn:!0})||void 0,[t,r]),[l,c]=_e(u);return gr(()=>{(async()=>{try{let d=u&&!n?u:await r.load(t),v=d?d.id||d["@id"]:null;d&&o!==v&&s(v),c(d)}catch(d){a(d)}})()},[t,n]),{isLoaded:!!l,id:o,requestId:t,error:i,resource:l,cached:!!(l&&l===u)}}function Pt(e,n){let{id:t,isLoaded:r,error:o,resource:s,requestId:i,cached:a}=At(e,n);return{id:t,isLoaded:r,error:o,manifest:s,requestId:i,cached:a}}import{jsx as hr}from"react/jsx-runtime";function bt({manifest:e,children:n}){return hr(Y,{value:{manifest:e},children:n})}import{jsx as yr}from"react/jsx-runtime";function _({canvas:e,children:n}){return yr(Y,{value:{canvas:e},children:n})}import{useContext as Ar}from"react";import Pr from"react";import{useContext as xr}from"react";var R=()=>{let{vault:e}=xr(W);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};import{useEffect as Sr,useState as Cr}from"react";function T(e,n=[]){let t=R(),[r,o]=Cr(()=>e(t.getState(),t));return Sr(()=>t.subscribe(s=>e(s,t),s=>{o(s)},!1),n),r}var ne=Pr.createContext([]);function Pe(){let e=Ar(ne);return T(n=>e.map(t=>n.iiif.entities.Canvas[t]).filter(Boolean),[e])}import{useMemo as br}from"react";function V(e={},n=[]){let{id:t,selector:r}=e,o=F(),s=R(),i=t||o.manifest,a=T(u=>i?u.iiif.entities.Manifest[i]:void 0,[i]);return br(()=>{if(a)return r?r(a):a},[a,r,...n])}import{jsx as Rr}from"react/jsx-runtime";function Rt({range:e,children:n}){return Rr(Y,{value:{range:e},children:n})}function Tr(e,n){for(let t of n.items){if(t.type==="Canvas")return t;if(t.type==="SpecificResource")return t.source;if(t.type==="Range"){let r=Tr(e,e.get(t));if(r)return r}}return null}function je(e,n){let t=[];for(let r of n.items)if(r.type==="SpecificResource"&&r.source?.type==="Canvas"&&(r.source.id.indexOf("#")!==-1?t.push({id:r.source.id.split("#")[0],type:"Canvas"}):t.push(r.source)),r.type==="Range"&&t.push(...je(e,e.get(r))),r.type==="SpecificResource"){let o=typeof r.source=="string"?r.source:r.source.id;t.push({id:o,type:"Canvas"})}return t}function Ua(e,n,t){for(let r of n.structures){let o=Tt(e,e.get(r),t);if(o)return o}return null}function Tt(e,n,t){for(let r of n.items){let o=r?.source?.id?.split("#")[0];if(r.type==="SpecificResource"&&r.source===t||r.type==="SpecificResource"&&r.source?.type==="Canvas"&&t===o)return n;if(r.type==="Range"){let s=Tt(e,e.get(r),t);if(s)return s}}return null}function _a(e,n,t,r=!1){let o=n.behavior,s=t?e.get(t):null;if(!s)return[];let i=s.behavior,a=r?!1:o.includes("paged"),u=a?!1:o.includes("continuous"),l=a||u?!1:o.includes("individuals"),c=i.includes("facing-pages"),d=i.includes("non-paged");if(c||d||l||r)return[{id:s.id,type:"Canvas"}];let[v,x]=Ke(e,n);if(u)return v;let h=v.findIndex(g=>g.id===t);if(h===-1)return[];for(let g of x)if(g.includes(h))return g.map(A=>v[A]);return[{id:s.id,type:"Canvas"}]}function Ke(e,n,{disablePaging:t,skipNonPaged:r}={}){let o=n.behavior,s=o.includes("paged"),i=s?!1:o.includes("continuous"),a=s||i?!1:o.includes("individuals"),u=n.type==="Manifest"?n.items:je(e,n);if(i)return[u,[u.map((h,g)=>g)]];if(a||!s||t)return[u,u.map((h,g)=>[g])];let l=[],c=[],d=()=>{c.length&&(l.push([...c]),c=[])},v=0,x=!1;for(let h=0;h<u.length;h++){let g=e.get(u[h]);if(g.behavior.includes("non-paged")){h===v&&v++,r||(d(),l.push([h]),d());continue}if(h===v||g.behavior.includes("facing-pages")){c.length&&(x=!0),d(),l.push([h]),d();continue}if(c.push(h),x){d(),x=!1;continue}c.length>1&&d()}return c.length&&d(),[u,l]}import{useCallback as be,useMemo as Mr,useRef as wr,useState as Er}from"react";import{useMemo as Ir}from"react";function It(e={},n=[]){let{id:t,selector:r}=e,o=F(),s=t||o.range,i=T(a=>s?a.iiif.entities.Range[s]:void 0,[s]);return Ir(()=>{if(i)return r?r(i):i},[i,r,...n])}function Mt({startCanvas:e,disablePaging:n}){let t=R(),r=V(),o=It(),[s,i]=Er(void 0),a=o||r;if(!a)throw new Error("Nothing selected");let[u,l]=Mr(()=>Ke(t,a,{disablePaging:n}),[t,a,n]),c=wr(l);if(c.current!==l){let A=c.current[s][0],p=l.findIndex(S=>S.includes(A));c.current=l,i(p)}let d=be(g=>{let A=l.findIndex(p=>p.includes(g));i(A===-1?0:A)},[u,l]),v=be(g=>{let A=u.findIndex(p=>p.id===g);A!==-1?d(A):i(0)},[u,l]),x=be(()=>{i(g=>g>=l.length-1?g:g+1)},[l]),h=be(()=>{i(g=>g<=0?0:g-1)},[l]);return typeof s>"u"&&(e?v(e):i(0)),{visibleItems:l[s]?.map(g=>u[g].id)||[],cursor:s,items:u,sequence:l,hasPrevious:s>0,hasNext:s<l.length-1,setSequenceIndex:i,setCanvasIndex:d,setCanvasId:v,next:x,previous:h}}import{createContext as We,useContext as $t,useEffect as kr,useMemo as Nr}from"react";import{useStore as fe}from"zustand";import{createStore as Et}from"zustand/vanilla";function rs(e){let n=e.service||e.services||[];for(let t of n)if(t.type==="AuthProbeService2")return!0;return!1}function $(e,n,t){let r=n.findIndex(i=>i.service.id===e);if(r===-1)return n;let o=[...n],s=t(o[r]);return s===o[r]?n:(o[r]=s,o)}var Vt=()=>Et((e,n)=>({currentAuth:-1,authItems:[],login:()=>{let t=n().authItems[n().currentAuth];if(!t||t.isPending||t.isLoggedIn)return;if(t.type!=="active")throw new Error("Cannot login to non-active service");let r=t.service.service.find(o=>o.type==="AuthAccessTokenService2");if(!r)throw new Error("Token service not found");e(()=>({authItems:$(t.id,n().authItems,o=>({...o,isPending:!0}))})),wt(t.service).then(()=>{Ye(r).then(o=>{let s=o.expiresIn,i=Date.now()+s*1e3;e(()=>({authItems:$(t.id,n().authItems,a=>({...a,isLoggedIn:!0,isPending:!1,session:{token:o.accessToken,expires:i}}))}))}).catch(o=>{e(()=>({authItems:$(t.id,n().authItems,s=>({...s,isLoggedIn:!1,isPending:!1,error:o.message}))}))})})},logout:()=>{let t=n().authItems[n().currentAuth];if(!t||t.isPending||!t.isLoggedIn)return;if(t.type!=="active")throw new Error("Cannot logout of non-active service");let r=t.service.service.find(i=>i.type==="AuthLogoutService2");if(!r)return;let o=`${r.id}?origin=${Lt()}`,s=window.open(o);e(()=>({authItems:$(t.id,n().authItems,i=>({...i,isLoggedIn:!1,session:null,isPending:!1}))}))},nextAuth:()=>{let t=n().authItems.length,r=n().currentAuth+1;r>=t||e(()=>({currentAuth:r}))},previousAuth:()=>{let t=n().currentAuth-1;t<0||e(()=>({currentAuth:t}))},setAuth:t=>{t!==-1&&(t<0||t>=n().authItems.length)||e(()=>({currentAuth:t}))},addService:(t,r)=>{if(!t.service)return;let o=t.service.find(a=>a.type==="AuthAccessTokenService2"),s=t;if(n().authItems.find(a=>a.service.id===t.id)){e(()=>({authItems:$(t.id,n().authItems,a=>({...a,instances:a.instances+1}))}));return}if(e(()=>({currentAuth:s.profile==="active"?0:n().currentAuth,authItems:[{id:t.id,type:t.profile,service:t,probeId:r,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...n().authItems]})),t.profile==="external"){if(!o)throw new Error("Token service not found");Ye(o).then(a=>{e(()=>({authItems:$(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:$(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:a.message}))}))})}if(t.profile==="kiosk"){if(!o)throw new Error("Token service not found");e(()=>({authItems:$(t.id,n().authItems,a=>({...a,isPending:!0}))})),wt(s).then(()=>{Ye(o).then(a=>{e(()=>({authItems:$(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:$(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,error:a.message}))}))})})}t.profile},removeService:(t,r)=>{let o=n().currentAuth===n().authItems.findIndex(i=>i.service.id===t.id),s=n().currentAuth;if(o){let i=n().authItems.find(u=>u.service.id===t.id);i&&i.instances>1||(s=n().authItems.findIndex(l=>l.service.id!==t.id&&l.instances>0))}e(()=>({authItems:$(t.id,n().authItems,i=>({...i,instances:i.instances-1})),currentAuth:s}))}})),kt=(e,n)=>Et((t,r)=>({service:e,status:e?"unknown":"success",shouldRedirect:!1,redirectResource:null,shouldSubstitute:!1,substituteResource:null,error:null,errorHeading:null,errorNote:null,shouldDisplayResource:!1,token:n||null,async probe(){if(!r().service)return;let o=r().service?.id;if(!o){t({status:"error",error:"Service ID not found",errorHeading:{en:["Service ID not found"]}});return}t({status:"probing"});let s=r().token;try{let i=await fetch(o,{headers:s?{Authorization:`Bearer ${r().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(a=>a.json());if(i.status===200)t({status:"success",shouldDisplayResource:!0,error:null,errorHeading:null,errorNote:null,shouldSubstitute:!1,shouldRedirect:!1});else if(i.status<400&&i.status>=300){if(!i.location)throw new Error("Redirect location not found");t({status:"error",shouldDisplayResource:!1,shouldRedirect:!0,redirectResource:i.location||null})}else if(i.status===401)t({status:"error",shouldDisplayResource:!1,shouldRedirect:!1,shouldSubstitute:!!i.substitute,substituteResource:i.substitute||null,error:"Unauthorized",errorHeading:i.heading||{en:["Unauthorized"]},errorNote:i.note||null});else throw new Error("Unknown error")}catch(i){t({status:"error",error:i.message,errorHeading:{en:["Unknown error"]}})}},setToken(o){t({token:o})}}));function Nt(e){let n=e.service||e.services||[],t={hasAuth:!1,services:{}};for(let r of n)if(r.type==="AuthProbeService2"){t.services.probe=r,t.hasAuth=!0;let o=r.service.filter(s=>s.type==="AuthAccessService2");o[0]&&(t.services.access=o[0])}return t}async function Ye(e,{strict:n=!0}={}){return new Promise((t,r)=>{let o=Math.random().toString(36).substring(7),s=`${e.id}?messageId=${o}&origin=${window.location.origin}`,i=l=>{let c=l.data;if(c.messageId===o){if(n&&c.type!=="AuthAccessToken2"){a(),r("Invalid response, expected type=AuthAccessToken2");return}if(!c.accessToken){a(),r("Invalid response, expected accessToken");return}a(),t(c)}},a=()=>window.removeEventListener("message",i),u=document.createElement("iframe");u.src=s,u.style.display="none",document.body.appendChild(u),window.addEventListener("message",i)})}function Lt(e){let n=window.location;if(e){let t=document.createElement("a");return t.href=e,t.protocol+"//"+t.hostname+(t.port?":"+t.port:"")}return n.protocol+"//"+n.hostname+(n.port?":"+n.port:"")}async function wt(e){let n=`${e.id}?origin=${Lt()}`,t=window.open(n);if(!t)throw new Error("Failed to open window");return new Promise((r,o)=>{let s=setInterval(()=>{t.closed&&(clearInterval(s),r())},500)})}import{useEffect as zt,useMemo as Ot}from"react";import{useStore as Vr}from"zustand";function Ht(e){let n=Ot(()=>Nt(e),[e]),t=Ft(n.services.access?.id),r=Ot(()=>kt(n.services.probe,t),[n.services.probe]),o=Vr(r);return zt(()=>{o.status==="unknown"&&!t&&o.probe()},[n.services.probe,o.status]),zt(()=>{t&&(o.setToken(t),o.probe())},[t]),[e,o,n.hasAuth]}import{jsx as Re}from"react/jsx-runtime";var re=We(null),Lr=We(null);Lr.displayName="CurrentAuth";var zr=We(null);zr.displayName="AuthActions";function Dt({children:e}){let n=Nr(()=>Vt(),[]);return Re(re.Provider,{value:n,children:e})}function Ut(){return!!$t(re)}function pe(){let e=$t(re);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function Or(){let e=pe();return fe(e,t=>({login:t.login,logout:t.logout,nextAuth:t.nextAuth,previousAuth:t.previousAuth,setAuth:t.setAuth,addService:t.addService,removeService:t.removeService}))}function Cs(){let e=pe();return fe(e,n=>n)}function Hr(e){let n=pe();return fe(n,r=>r.authItems.find(o=>o.service.id===e))}function Ft(e){let n=pe();return fe(n,r=>r.authItems.find(o=>o.id===e)?.session?.token)}function As(e){let n=pe();return fe(n,r=>{let o=r.authItems.find(s=>s.service.id===e);return!o||!o.isLoggedIn||!o.session?null:o.session?.token||null})}function Fr(e){let n=Or(),t=Hr(e.service.id);return kr(()=>(n?.addService(e.service,e.probeId),()=>{n?.removeService(e.service,e.probeId)}),[e.service]),t?(t.error||!t.isLoggedIn,e.children):null}function Qe(){return null}function qt(e){let[n,t,r]=Ht(e.resource),o=e.fallbackComponent||Qe,s=e.loadingComponent||Qe,i=e.errorComponent||Qe,a=t.service,u=null;if(!r||!a)return e.children(n);let l=a.service.filter(c=>c.type==="AuthAccessService2");t.status==="error"&&(u=Re(i,{resource:e.resource,error:t.error||"",heading:t.errorHeading,note:t.errorNote,extra:e.extra})),(t.status==="unknown"||t.status==="probing")&&(u=Re(s,{})),t.status==="success"&&(u=e.children(n));for(let c of l)u=Re(Fr,{service:c,probeId:a.id,children:u},c.id);return u}import{createContext as qr,useContext as Vs,useMemo as Br}from"react";import{createStore as $r}from"zustand/vanilla";var Dr=e=>e.id||e["@id"];function Ur(e){return(Array.isArray(e.service)?e.service:[e.service]).find(t=>t.profile==="http://iiif.io/api/search/0/autocomplete"||t.profile==="http://iiif.io/api/search/1/autocomplete"||t.profile==="AutoCompleteService1")}var Bt=e=>{let n;typeof e=="string"?n={"@context":"http://iiif.io/api/search/1/context.json",profile:"http://iiif.io/api/search/1/search","@id":e,id:e,service:[]}:n=e;let t=n?Dr(n):void 0,r=null;return $r((o,s)=>({service:n,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!n,hasAutocomplete:n?!!Ur(n):!1,errorMessage:"",search(i,a={}){if(!t)throw new Error("No search service found.");r&&!r.signal.aborted&&r.abort(),r=new AbortController;let u=new URLSearchParams;i.q&&u.set("q",i.q),i.motivation&&u.set("motivation",i.motivation),i.date&&u.set("date",i.date),i.user&&u.set("user",i.user),o({loading:!0}),fetch(`${t}?${u.toString()}`,{signal:r.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...a.headers||{}}}).then(async l=>{if(!r?.signal.aborted)if(l.ok){let c=await l.json();o({resources:c.resources,error:!1,errorMessage:""})}else o({resources:[],error:!0,errorMessage:l.statusText})})},clearSearch(){o({resources:[],error:!1,errorMessage:""})},highlightResult(i){let a=s().resources.find(u=>u["@id"]===i);o({highlight:a})},nextResult(){let i=s().resources,a=s().highlight;if(!a){o({highlight:i[0]||null});return}let u=i.findIndex(l=>l["@id"]===a["@id"]);if(u===-1){o({highlight:i[0]||null});return}o({highlight:i[u+1]||i[0]||null})},previousResult(){let i=s().resources,a=s().highlight;if(!a){o({highlight:i[i.length-1]||null});return}let u=i.findIndex(l=>l["@id"]===a["@id"]);if(u===-1){o({highlight:i[i.length-1]||null});return}if(u===0){o({highlight:i[i.length-1]||null});return}o({highlight:i[u-1]||i[i.length-1]||null})}}))};import{useStore as Os}from"zustand";function _t(){let e=V();return e?e.service.find(n=>n.profile==="SearchService1"||n.profile==="http://iiif.io/api/search/1/search"):void 0}import{jsx as Ge}from"react/jsx-runtime";var oe=qr(null);oe.displayName="Search";function jt(e){let n=_t();return e.store?Ge(oe.Provider,{value:e.store,children:e.children}):Ge(_r,{service:n,children:e.children})}function _r({service:e,children:n}){let t=Br(()=>Bt(e),[e]);return Ge(oe.Provider,{value:t,children:n})}import{jsx as O}from"react/jsx-runtime";var ge=()=>{},ve=Kr({setCurrentCanvasId:ge,setCurrentCanvasIndex:ge,nextCanvas:ge,previousCanvas:ge,items:[],sequence:[],setSequenceIndex:ge,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function Qr(e){let n=V(),{cursor:t,visibleItems:r,next:o,sequence:s,items:i,setCanvasIndex:a,setCanvasId:u,previous:l,setSequenceIndex:c,hasNext:d,hasPrevious:v}=Mt({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),x=Yr(()=>({sequence:s,items:i,setCurrentCanvasId:u,nextCanvas:o,previousCanvas:l,totalCanvases:i.length,setCurrentCanvasIndex:a,setSequenceIndex:c,currentSequenceIndex:t,hasNext:d,hasPrevious:v}),[s,i,u,o,l,i,a,c,t]);return n?r.length===0?null:O(ve.Provider,{value:x,children:O(ne.Provider,{value:r,children:O(_,{canvas:r[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),O("div",{children:"Sorry, something went wrong."}))}function Kt(e){let n=te(e.vault),t=Pt(e.manifest);if(!t)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),O("div",{children:"Sorry, something went wrong."});if(t.error)return O("div",{children:t.error.toString()});if(!t.isLoaded)return O("div",{children:"Loading..."});let r=O(Qr,{...e,children:e.children});return O(ee,{vault:n,children:O(bt,{manifest:t.id,children:O(Dt,{children:O(jt,{children:e.rangeId?O(Rt,{range:e.rangeId,children:r}):r})})})})}function Yt(){return jr(ve)}import Wr from"react";import{createContext as Gr,useMemo as Zr}from"react";import Jr from"mitt";import{jsx as eo}from"react/jsx-runtime";var Xr=Jr(),ie=Gr({emitter:Xr});ie.displayName="Events";function Qt(){return Wr.useContext(ie).emitter}function fu({emitter:e,children:n}){return eo(ie.Provider,{value:Zr(()=>({emitter:e}),[e]),children:n})}import no from"react";import{jsx as j}from"react/jsx-runtime";var Ze=no.createContext({});function Wt(){let e=D(Ze),n=Object.keys(e),t={};for(let r of n)e[r].Provider&&(t[r]={value:D(e[r]),Provider:e[r].Provider});return t}function ro(e){let n=Object.keys(e),t=e.children;for(let r of n){if(r==="children")continue;let{value:o,Provider:s}=e[r];t=j(s,{value:o,children:t})}return t}function Iu(e){let n=D(Ze),t=to(()=>({...n,...e.providers}),[e.providers]);return j(Ze.Provider,{value:t,children:e.children})}function Gt(){return{VaultContext:D(W),ResourceContext:D(Ae),SimpleViewerReactContext:D(ve),VisibleCanvasReactContext:D(ne),AuthRContext:D(re),SearchReactContext:D(oe),ReactEventContext:D(ie)}}function Zt(e){return j(ee,{vault:e.bridge.VaultContext.vault||void 0,resources:e.bridge.ResourceContext,children:j(ne.Provider,{value:e.bridge.VisibleCanvasReactContext,children:j(ve.Provider,{value:e.bridge.SimpleViewerReactContext,children:j(ie.Provider,{value:e.bridge.ReactEventContext,children:j(re.Provider,{value:e.bridge.AuthRContext,children:j(oe.Provider,{value:e.bridge.SearchReactContext,children:e.custom?j(ro,{...e.custom,children:e.children}):e.children})})})})})})}import{createContext as uo,useContext as co,useMemo as lo}from"react";import{useCallback as Xt,useLayoutEffect as io,useMemo as ao,useRef as so}from"react";import{entityActions as Je}from"@iiif/helpers/vault/actions";import{useMemo as oo}from"react";function Jt(){let n=R().getStore();return oo(()=>t=>n.dispatch(t),[n])}function en(e){return typeof e!="string"&&e&&e.bindToVault}function tn(){let e=R(),n=so([]),t=Jt(),r=ao(()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);io(()=>{let a={id:r,type:"AnnotationPage",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],rendering:[],service:[]};t(Je.importEntities({entities:{AnnotationPage:{[a.id]:a}}}))},[r]);let o=T(a=>r&&a.iiif.entities.AnnotationPage[r]||null,[r]),s=Xt((a,u)=>{if(r){if(en(a)){let d=a;d.__vault||d.bindToVault(e),a=typeof d.source=="string"?d.source:d.source.id,n.current[a]=d}else typeof a!="string"&&(a=a.id);let l=e.get({id:r,type:"AnnotationPage"}),c=e.get({id:a,type:"Annotation"});l&&c&&(l.items.find(d=>d.id===c.id)||t(Je.addReference({id:r,type:"AnnotationPage",key:"items",reference:{id:a,type:"Annotation"},index:u})))}},[r]),i=Xt(a=>{r&&(en(a)?a=typeof a.source=="string"?a.source:a.source.id:typeof a!="string"&&(a=a.id),n.current[a]&&n.current[a].beforeRemove(),e.get({id:r,type:"AnnotationPage"})&&t(Je.removeReference({id:r,type:"AnnotationPage",key:"items",reference:{id:a,type:"Annotation"}})))},[r]);return[o,{addAnnotation:s,removeAnnotation:i}]}import{jsx as mo}from"react/jsx-runtime";var nn=uo(null);function rn(){let e=co(nn);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function on({children:e}){let[n,{addAnnotation:t,removeAnnotation:r}]=tn();return mo(nn.Provider,{value:lo(()=>({fullPage:n,addAnnotation:t,removeAnnotation:r}),[n]),children:e})}import{jsx as Xe,jsxs as fo}from"react/jsx-runtime";function an({width:e,style:n,height:t,error:r,resetErrorBoundary:o}){return fo("div",{style:{width:e,height:t,minHeight:500,...n||{},background:"#f9f9f9"},children:[Xe("h3",{children:"Error occurred"}),Xe("p",{children:r.message}),Xe("button",{onClick:o,children:"Reset"})]})}import{createContext as po,useContext as go}from"react";var he=po(null);function sn(){return go(he)}import{createContext as un,useContext as vo,useEffect as ho}from"react";var et=un(()=>{}),tt=un(()=>{});function H(e,n,t,r,o=[]){let s=vo(e==="portal"?tt:et);ho(()=>(e!=="none"&&s(n,t,r),()=>{s(n,null)}),[n,e,s,...o])}import{createContext as xo,useContext as So,useEffect as Co}from"react";import{useMemo as yo}from"react";function M(e={},n=[]){let{id:t,selector:r}=e,o=F(),s=t||o.canvas,i=T(a=>s?a.iiif.entities.Canvas[s]:void 0,[s]);return yo(()=>{if(i)return r?r(i):i},[i,r,...n])}var nt=xo(()=>{});function cn(e){let n=M(),t=So(nt);Co(()=>n&&n.id?(t(n.id,e),()=>t(n.id,-1)):()=>{},[n,e])}import{Fragment as Ro,jsx as k,jsxs as To}from"react/jsx-runtime";function mn({children:e,errorFallback:n,outerContainerProps:t={},worldScale:r,...o}){let[s,i]=Te(),a=Wt(),u=Gt(),l=n||an,[c,d]=Te({}),v=Object.entries(c),[x,h]=Te({}),g=Object.entries(x),[A,p]=Te({}),S=dn(()=>r||Math.max(...Object.values(A)),[A]),m=dn(()=>({maxOverZoom:S||1,...o.runtimeOptions||{}}),[S,o.runtimeOptions]),P=rt((C,y)=>{p(E=>{if(y===-1){let{[C]:Z,...f}=E;return f}return{...E,[C]:y}})},[]),b=rt((C,y,E)=>{d(({[C]:Z,...f})=>y?{...f,[C]:{element:y,props:E}}:f)},[]),I=rt((C,y,E)=>{h(({[C]:Z,...f})=>y?{...f,[C]:{element:y,props:E}}:f)},[]);return To(bo,{resetKeys:[],fallbackRender:C=>k(l,{...o,...C}),children:[k(Ao,{...o,containerProps:{style:{position:"relative"},...o.containerProps||{}},htmlChildren:k(Ro,{children:v.map(([C,{element:y,props:E}])=>k(ln.Fragment,{children:k(y,{...E||{}})},C))}),onCreated:C=>{i(C),o.onCreated&&o.onCreated(C)},runtimeOptions:m,children:k(he.Provider,{value:s,children:k(nt.Provider,{value:P,children:k(et.Provider,{value:b,children:k(tt.Provider,{value:I,children:k(Zt,{bridge:u,custom:a,children:k(Po.Provider,{value:o.mode||"explore",children:k(on,{children:e})})})})})})})}),k("div",{children:g.map(([C,{element:y,props:E}])=>k(ln.Fragment,{children:k(y,{...E||{}})},C))})]})}import{mergeStyles as ko,RegionHighlight as No}from"@atlas-viewer/atlas";import{useMemo as fn}from"react";import{createEventsHelper as Io}from"@iiif/helpers/events";function Ie(e,n){let t=R(),r=fn(()=>Io(t),[t]),o=T(()=>e&&e.id?t.getResourceMeta(e.id,"eventManager"):null,[e]);return fn(()=>e?r.getListenersAsProps(e,n):{},[o,e,t,n])}import{useMemo as Mo}from"react";import{createStylesHelper as wo}from"@iiif/helpers/styles";function ae(e,n){let t=R(),r=Mo(()=>wo(t),[t]);return T(()=>{if(!e)return null;let o=r.getAppliedStyles(e.id);return o?n?o[n]:o:void 0},[e,n])}import{useMemo as Lo}from"react";import{useMemo as Eo}from"react";import{expandTarget as Vo}from"@iiif/helpers/annotation-targets";function Me(e={},n=[]){let{id:t,selector:r}=e,o=F(),s=R(),i=t||o.annotation,a=T(l=>i?l.iiif.entities.Annotation[i]:void 0,[i]),u=T(l=>a&&a.body?a.body.map(c=>c?c.type==="SpecificResource"?{...c,source:s.get(c)}:c?l.iiif.entities[c.type][c.id]:null:null).filter(Boolean):[],[a]);return Eo(()=>{if(!a)return;let l={...a,body:u,target:Vo(a.target,{typeMap:s.getState().iiif.mapping})};return r?r(l):l},[a,r,u,...n])}import{jsx as zo}from"react/jsx-runtime";var we=({id:e,style:n,className:t,interactive:r})=>{let o=Me({id:e}),s=ae(o,"atlas"),i=ae(o,"html"),a=Ie(o,["atlas"]),u=M(),l=Lo(()=>ko(n,s),[n,s]);return u&&o&&o.target&&o.target.selector&&o.target.selector.type==="BoxSelector"&&o.target.source&&(o.target.source.id===u.id||o.target.source===u.id)?zo(No,{id:o.id,isEditing:!0,region:o.target.selector.spatial,style:l,className:i?.className||t,interactive:!!(i?.href||r),href:i?.href||null,title:i?.title||null,hrefTarget:i?.target||null,onClick:()=>{},...a}):null};import{Fragment as Ho}from"react";import{useMemo as Oo}from"react";function pn(e={},n=[]){let{id:t,selector:r}=e,o=F(),s=t||o.annotationPage,i=T(a=>s?a.iiif.entities.AnnotationPage[s]:void 0,[s]);return Oo(()=>{if(i)return r?r(i):i},[i,...n])}import{jsx as gn}from"react/jsx-runtime";var ye=({className:e,page:n})=>{let t=pn({id:n.id})||n,r=ae(t,"atlas"),o=ae(t,"html");return T(s=>t.id?s.iiif.entities.AnnotationPage[t.id]:null,[]),gn(Ho,{children:t.items?.map(s=>gn(we,{id:s.id,style:r,className:o?.className||e},s.id))})};import{createStylesHelper as Fi}from"@iiif/helpers/styles";import{Fragment as Rn,useMemo as Wo}from"react";import{HTMLPortal as jo,TileSet as Pn}from"@atlas-viewer/atlas";import se,{useMemo as ot}from"react";import{jsx as U}from"react/jsx-runtime";var hn=se.createContext("en"),yn=se.createContext({}),xn=se.createContext(null);function cl(e){return U(yn.Provider,{value:e.translations,children:e.children})}function ll(e){return U(hn.Provider,{value:e.language,children:e.children})}function dl(e){return U(xn.Provider,{value:e.convert,children:e.children})}function Sn(){return se.useContext(xn)}function it(){return se.useContext(hn)}function Cn(){return se.useContext(yn)}function vn(e){return e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):e}function Fo({as:e,language:n,children:t,viewingDirection:r,...o}){let s=it();return ot(()=>vn(s)===vn(n),[s,n])?e?U(e,{...o,children:t}):U("span",{...o,children:t}):e?U(e,{...o,lang:n,dir:r,children:t}):U("span",{...o,lang:n,dir:r,children:t})}function An(e,n,t){if(n.length===0)return;if(n.length===1)return n[0];if(n.indexOf(e)!==-1)return e;let r=e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):null;if(r&&n.indexOf(r)!==-1)return r;for(let o of t)if(n.indexOf(o)!==-1)return o;return n.indexOf("none")!==-1?"none":n.indexOf("@none")!==-1?"@none":n[0]}var $o=(e,n=[])=>{let t=it();return ot(()=>{let r=e();return An(t,r,[])},[t,...n])};function G(e,n,t,r){return n?t?t(e[n]||n,r||"none"):e[n]||n:""}function Do(e,n,t=`
2
+ `,r={}){let o=Sn(),s=$o(()=>Object.keys(e||{}),[e]);return[ot(()=>{if(!e)return G(r,n,o)||"";if(typeof e=="string")return G(r,e,o);let i=s?e[s]:void 0;return i?typeof i=="string"?i:i.map(a=>G(r,a,o,s)).join(t):""},[s,n,e]),s]}function ml(){let e=it(),n=Cn(),t=Sn();return function(o,s="",i=`
3
+ `,a=n){let u=Object.keys(o||{}),l=An(e,u,[]);if(!o)return G(a,s,t)||"";if(typeof o=="string")return G(a,o,t);let c=l?o[l]:void 0;return c?typeof c=="string"?G(a,c,t,l):c.map(d=>G(a,d,t,l)).join(typeof i<"u"?i:`
4
+ `):""}}function xe({as:e,defaultText:n,enableDangerouslySetInnerHTML:t,children:r,separator:o,...s}){let i=Cn(),[a,u]=Do(r,n,o,i);return u?U(Fo,{...s,as:e,language:u,title:t?void 0:a,dangerouslySetInnerHTML:t?{__html:a}:void 0,children:t?void 0:a}):e?U(e,{...s,children:a}):U("span",{...s,title:t?void 0:a,dangerouslySetInnerHTML:t?{__html:a}:void 0,children:t?void 0:a})}import{canonicalServiceUrl as Ko}from"@iiif/parser/image-3";import Uo,{useContext as qo}from"react";import{ImageServiceLoader as Bo}from"@atlas-viewer/iiif-image-api";var _o=Uo.createContext(new Bo);function ue(){return qo(_o)}import{jsx as K,jsxs as Qo}from"react/jsx-runtime";function Yo({resource:e,heading:n,note:t,extra:r}){return r?K(jo,{target:{x:0,y:0,width:r.target?.spatial.width,height:r.target?.spatial.height},backgroundColor:"#333",relative:!0,children:K("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:Qo("div",{children:[K(xe,{children:n||"Not authorised"}),t&&K("p",{children:K(xe,{children:t})}),K("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}function bn({image:e,thumbnail:n,crop:t,enableSizes:r,enableThumbnail:o,renderOptions:s}){let i=Ut(),a=ue(),u=e.service?Ko(e.service.id||e.service["@id"]||""):void 0,l=u?!!a.imageServices[u]:void 0,c=n&&n.type==="fixed"&&n.id&&!n.id.includes("/full/full/")&&!n.id.includes("/max/")?n:void 0;if(l===!1)return null;if(!i){let d=e.service,v=d.width||e.width||0,x=d.height||e.height||0;return K(Pn,{enableThumbnail:o,renderOptions:s,tiles:{id:d.id||d["@id"]||"unknown",height:x,width:v,imageService:d,thumbnail:c},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:t})}return K(qt,{resource:e.service,errorComponent:Yo,extra:e,children:d=>{let v=d.width||e.width||0,x=d.height||e.height||0;return K(Pn,{enableThumbnail:o,renderOptions:s,tiles:{id:d.id||d["@id"]||"unknown",height:x,width:v,imageService:d,thumbnail:c},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:t})}},e.id)}import{jsx as at,jsxs as Tn}from"react/jsx-runtime";function ce({id:e,image:n,thumbnail:t,isStatic:r,x:o=0,y:s=0,children:i,selector:a,onClick:u,enableSizes:l}){let c=Wo(()=>{if(!(!a||a.spatial.x===0&&a.spatial.y===0))return a.spatial},[a]);return at("world-object",{x:o+n.target.spatial.x,y:s+n.target.spatial.y,width:n.target.spatial.width,height:n.target.spatial.height,onClick:u,children:n.service?Tn(Rn,{children:[at(bn,{image:n,thumbnail:t,crop:c,enableSizes:l}),i]},"service"):Tn(Rn,{children:[at("world-image",{onClick:u,uri:n.id,target:{x:0,y:0,width:n.target.spatial.width,height:n.target.spatial.height},display:n.width&&n.height?{width:n.width,height:n.height}:void 0,crop:c}),i]},"no-service")},e+(n.service?"server":"no-service"))}import{Fragment as $i,useEffect as er,useLayoutEffect as Di,useMemo as tr}from"react";import{useEffect as On,useMemo as Hn}from"react";import{useCallback as wn,useMemo as Zo}from"react";function Go(e,n){let t=e?.iiif?.meta[n];return t?t.annotationPageManager:null}function In(e,n){return T(t=>{let r=[];if(!e)return r;let o=Object.keys(t.iiif.entities.AnnotationPage);for(let s of o)if(!n||n.indexOf(s)!==-1){let i=Go(t,s);i&&i.views&&i.views[e]&&r.push(s)}return r},[e,n])}function Mn({canvas:e,manifest:n,all:t,canvases:r}){let o=[];if(n)for(let s of n.annotations)o.indexOf(s.id)===-1&&o.push(s.id);if(t){if(r&&r.length)for(let s of r)for(let i of s.annotations)o.indexOf(i.id)===-1&&o.push(i.id)}else if(e)for(let s of e.annotations)o.indexOf(s.id)===-1&&o.push(s.id);return o}function Jo(e,n){let t=e?.iiif?.meta[n];return t?t.annotationPageManager:null}function En(e,n={}){let t=R(),r=V(),o=M(),s=Pe(),i=Zo(()=>Mn({all:n.all,manifest:r,canvas:o,canvases:s}),[n.all,o,s,r]),a=In(e,n.all?void 0:i),u=wn(c=>{e&&t.setMetaValue([c,"annotationPageManager","views"],d=>d&&!d[e]?d:{...d||{},[e]:!1})},[e,t]),l=wn((c,d={})=>{if(!e)return;let v=t.getState(),x=[];if(d?.deselectOthers){let h=Object.keys(v.iiif.entities.AnnotationPage);for(let g of h){let A=Jo(v,g);A&&A.views&&A.views[e]&&x.push(g)}}for(let h of x)u(h);t.setMetaValue([c,"annotationPageManager","views"],h=>h&&h[e]?h:{...h||{},[e]:!0})},[e,u,t]);return{availablePageIds:i,enabledPageIds:a,setPageEnabled:l,setPageDisabled:u}}function Vn(e,n){return T((t,r)=>r.get(e.map(o=>({id:o,type:n}))),[e,n])}import{useCallback as Xo,useEffect as ei,useRef as ti,useState as ni}from"react";function kn(){let e=ue(),[n,t]=ni({}),r=ti(!1);return ei(()=>()=>{r.current=!0},[]),[Xo((s,{height:i,width:a})=>{if(s){let u=s.id||s["@id"],l=e.loadServiceSync({id:u,width:s.width||a,height:s.height||i,source:s});l?s=l:n[u]||(r.current||t(c=>({...c,[u]:"loading"})),e.loadService({id:u,width:s.width||a,height:s.height||i}).then(()=>{r.current||t(c=>({...c,[u]:"done"}))}))}return s},[e,n]),n]}import{useCallback as ri,useMemo as Ln,useState as oi}from"react";function Nn(e={}){let n=Me(),t=M(e.canvasId?{id:e.canvasId}:void 0);return T((r,o)=>{if(!t)return[];if(n&&e.enableSingleAnnotation)return[n];let s=o.get(t.items),i=[];for(let a of s)i.push(...o.get(a.items));return i},[t])}import{createPaintingAnnotationsHelper as ii}from"@iiif/helpers/painting-annotations";function zn(e,n=[]){let t=R(),r=Ln(()=>ii(t),[]),o=Nn({enableSingleAnnotation:e?.enableSingleAnnotation}),[s,i]=oi(e?.defaultChoices||[]),a=Ln(()=>r.getPaintables(o,s),[t,o,s,...n]),l={makeChoice:ri((c,{deselectOthers:d=!0,deselect:v=!1}={})=>{a.choice&&i(x=>{if(v){let g=x.filter(A=>A!==c);if(g.length===0){let A=a.items[0].resource.id;return A?[A]:[]}return g}if(d)return[c];let h=[...x];if(h.length===0&&a.items.length){let g=a.items[0].resource.id;g&&h.push(g)}return x.indexOf(c)!==-1?x:[...x,c]})},[a.choice])};return[a,l]}function Fn(e){let n=V(),t=M(),r=R(),o=Qt(),s=e?.emitter||o,[i,a]=kn(),{enabledPageIds:u}=En(e?.annotationPageManagerId||n?.id||t?.id,{all:!1}),l=Vn(u,"AnnotationPage"),c=e?.strategies||["empty","images","media","textual-content","complex-timeline"],[d,v]=zn(e,[a]);On(()=>{let h=g=>{v.makeChoice(g.choiceId,{deselectOthers:g.deselectOthers,deselect:g.deselect})};return s.on("make-choice",h),()=>{s.off("make-choice",h)}},[]);let x=Hn(()=>xt({canvas:t,paintables:d,supports:c,loadImageService:i,vault:r}),[t,d,r,v.makeChoice]);return On(()=>{let h=d.allChoices,g={canvasId:t?.id,manifestId:n?.id};h&&s.emit("choice-change",{choice:h,partOf:g})},[t?.id,d.allChoices]),Hn(()=>x.type==="unknown"?[x,yt]:[{...x,annotations:{pages:l}},v],[x,l])}import{useEffect as si,useMemo as ui,useRef as ci,useState as li}from"react";import{useEffect as ai}from"react";var $n=(e,n=[])=>{let t=R();ai(()=>{e(t)},[t,...n])};import{createThumbnailHelper as di}from"@iiif/helpers/thumbnail";function Ee(e,n,{canvasId:t,manifestId:r}={}){let o=R(),s=ue(),i=ui(()=>di(o,{imageServiceLoader:s}),[o,s]),[a,u]=li(),l=V(r?{id:r}:void 0),c=M(t?{id:t}:void 0),d=c||l,v=ci(!1);if(si(()=>(v.current=!1,()=>{v.current=!0}),[]),!d)throw new Error("Must be called under a manifest or canvas context.");return $n(x=>{i.getBestThumbnailAtSize(d,e,n).then(h=>{h.best&&!v.current&&u(h.best)})},[d]),a}import{useCallback as q,useEffect as Dn,useReducer as mi,useRef as Ve}from"react";function fi(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function pi(e,n){switch(n.type){case"FINISHED":return{...e,isFinished:!0,isPlaying:!1,playRequested:!1};case"PLAY_PAUSE":return{...e,isFinished:!1,isPlaying:!e.isPlaying};case"PLAY_REQUESTED":return{...e,isFinished:!1,playRequested:!0};case"PAUSE":return{...e,isPlaying:!1};case"PLAY":return{...e,isFinished:!1,playRequested:!1,isPlaying:!0};case"MUTE":return{...e,isMuted:!0};case"SET_VOLUME":return{...e,volume:n.volume,isMuted:n.volume===0};case"TOGGLE_MUTE":return{...e,isMuted:!e.isMuted};case"UNMUTE":return{...e,isMuted:!1}}return e}function st(e){let n=Math.round(e);return`${Math.floor(n/60)}:${`${n%60}`.padStart(2,"0")}`}function le(e){let[n,t]=mi(pi,fi(e.duration)),r=Ve(null),o=Ve(null),s=Ve(null),i=Ve(!1),a=q(()=>{o.current&&r.current&&(o.current.innerHTML=st(r.current.currentTime),s.current&&(s.current.style.width=`${r.current.currentTime/e.duration*100}%`),i.current!==r.current.muted&&(i.current=r.current.muted,t(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"})))},[e.duration]),u=q(()=>{r.current&&(t({type:"PLAY_REQUESTED"}),r.current.play().then(()=>{t({type:"PLAY"})}),a())},[a]),l=q(()=>{r.current&&(r.current.duration>0&&r.current.paused?u():c())},[a]),c=q(()=>{r.current&&(r.current.pause(),t({type:"PAUSE"}),a())},[a]),d=q(()=>{r.current&&(r.current.muted=!r.current.muted,t(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),v=q(()=>{r.current&&(r.current.muted=!0,t({type:"MUTE"}))},[]),x=q(()=>{r.current&&(r.current.muted=!1,t({type:"UNMUTE"}))},[]),h=q(p=>{r.current&&(r.current.muted=!1,r.current.volume=p/100,t({type:"SET_VOLUME",volume:p}))},[]),g=q(p=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(p*e.duration,e.duration)),a())},[]),A=q(p=>{if(r.current){let S=typeof p=="function"?p(r.current.currentTime):p;r.current.currentTime=Math.max(0,Math.min(S,e.duration)),a()}},[]);return Dn(()=>{let p=setInterval(()=>{a()},350);return()=>clearInterval(p)},[a,e.duration]),Dn(()=>{let p=()=>{t({type:"FINISHED"})},S=r.current;return S?.addEventListener("ended",p),()=>S?.removeEventListener("ended",p)},[]),[{element:r,currentTime:o,progress:s},n,{play:u,pause:c,playPause:l,mute:v,unmute:x,toggleMute:d,setVolume:h,setDurationPercent:g,setTime:A}]}import{createContext as ct,useContext as lt}from"react";import{jsx as ut}from"react/jsx-runtime";var Un=ct(null),qn=ct(null),Bn=ct(null);function kd(){let e=lt(Un);if(!e)throw new Error("Ctx not found");return e}function Nd(){let e=lt(qn);if(!e)throw new Error("Ctx not found");return e}function Ld(){let e=lt(Bn);if(!e)throw new Error("Ctx not found");return e}function ke({actions:e,state:n,children:t,currentTime:r,progress:o,element:s}){return ut(Bn.Provider,{value:{currentTime:r,progress:o,element:s},children:ut(qn.Provider,{value:e,children:ut(Un.Provider,{value:n,children:t})})})}import{useMemo as gi}from"react";import{expandTarget as vi}from"@iiif/helpers";function Ne(){let e=V(),n=M();return gi(()=>{if(!e||!n||!e.start)return null;let t=vi(e.start);return!t||t.source.id!==n.id||!t||!t.selector||t.selector.type!=="TemporalSelector"?null:t.selector.temporal},[e,n])}import{jsx as hi,jsxs as yi}from"react/jsx-runtime";function dt({media:e,startTime:n,children:t}){let[{element:r,currentTime:o,progress:s},i,a]=le({duration:e.duration}),u=n?`${e.url}#t=${n}`:e.url;return yi(ke,{state:i,actions:a,currentTime:o,progress:s,element:r,children:[hi("audio",{ref:r,src:u}),t]})}function Le({media:e,mediaControlsDeps:n,audioCopmonent:t=dt,children:r}){let o=Ne();return H("portal","audio",t,{media:e,startTime:o?o.startTime:null,children:r},[e,o,...n||[]]),null}import{jsx as _n,jsxs as xi}from"react/jsx-runtime";function mt({element:e,media:n,startTime:t,playPause:r,poster:o}){let s="div",i=t?`${n.url}#t=${t}`:n.url;return xi(s,{className:"video-container",part:"video-container",onClick:r,children:[_n("style",{children:`
5
+ .video-container {
6
+ position: absolute;
7
+ top: 0;
8
+ bottom: 0;
9
+ left: 0;
10
+ right: 0;
11
+ background: #000;
12
+ z-index: 13;
13
+ display: flex;
14
+ justify-content: center;
15
+ pointer-events: visible;
16
+ }
17
+ `}),_n("video",{poster:o,ref:e,src:i,style:{width:"100%",objectFit:"contain"}})]})}function ze({media:e,mediaControlsDeps:n,children:t,videoComponent:r=mt,captions:o}){let s=M(),i=Ne(),a=s&&s.placeholderCanvas&&s.placeholderCanvas.id||void 0,u=Ee({},!1,{canvasId:a}),[{element:l,currentTime:c,progress:d},v,x]=le({duration:e.duration});return H("overlay","video-element",r,{element:l,media:e,playPause:x.playPause,poster:u?.id,canvas:s,startTime:i?i.startTime:null,captions:o},[u]),H("portal","custom-controls",ke,{state:v,actions:x,currentTime:c,progress:d,element:l,children:t},[c,v,e,...n||[]]),null}import{Fragment as Si,jsx as ft,jsxs as Ci}from"react/jsx-runtime";function pt({model:e}){return Ci(Si,{children:[ft("style",{children:`
18
+ .model-container {
19
+ position: absolute;
20
+ top: 0;
21
+ bottom: 0;
22
+ left: 0;
23
+ right: 0;
24
+ background: #000;
25
+ z-index: 13;
26
+ display: flex;
27
+ justify-content: center;
28
+ pointer-events: visible;
29
+ }
30
+ `}),ft("div",{className:"model-container",children:ft("model-viewer",{"interaction-prompt":"none",style:{width:"100%",height:"100%"},"camera-controls":"","ar-status":"not-presenting",src:e.id})})]})}function Oe({model:e,name:n}){return H("overlay",`model-${n}`,pt,{model:e},[e]),null}import{jsx as Ai}from"react/jsx-runtime";function He({style:e}){let n=M();return!n||!n.height||!n.width?null:Ai("box",{interactive:!1,target:{x:0,y:0,width:Number(n.width),height:Number(n.height)},style:e})}import{jsx as jn}from"react/jsx-runtime";function Fe(e){let n=M();return!n||!n.placeholderCanvas?null:jn(_,{canvas:n.placeholderCanvas.id,children:jn(de,{renderViewerControls:e.renderViewerControls})})}import{useRef as Pi}from"react";import{jsx as Kn,jsxs as Ri}from"react/jsx-runtime";function bi({element:e,media:n,playPause:t}){let r=Pi(null);return n.youTubeId?Ri("div",{className:"video-container",part:"video-container",onClick:t,children:[Kn("style",{children:`
31
+ .video-container {
32
+ position: absolute;
33
+ top: 0;
34
+ bottom: 0;
35
+ left: 0;
36
+ right: 0;
37
+ background: #000;
38
+ z-index: 13;
39
+ display: flex;
40
+ justify-content: center;
41
+ pointer-events: visible;
42
+ }
43
+ .video-yt {
44
+ border: none;
45
+ width: 100%;
46
+ object-fit: contain;
47
+ }
48
+ `}),Kn("iframe",{className:"video-yt",ref:r,src:`https://www.youtube.com/embed/${n.youTubeId}?enablejsapi=1&origin=${window.location.host}`,referrerPolicy:"no-referrer",sandbox:"allow-scripts allow-same-origin allow-presentation"})]}):null}function Yn({media:e,mediaControlsDeps:n,children:t}){let[{element:r,currentTime:o,progress:s},i,a]=le({duration:e.duration});return H("overlay","video-element",bi,{element:r,media:e,playPause:a.playPause}),null}import{useLayoutEffect as Ni,useMemo as Li}from"react";import Ti from"mitt";import{createStore as Ii}from"zustand/vanilla";function Qn({currentKeyFrameIndex:e,keyframes:n,targetTime:t,currentTime:r}){if(r<=t){let o=n.findIndex(a=>a.time>t);if(o===-1)return[e,[]];let s={},i=n.slice(e,o);for(let a of i)a.type==="enter"&&(s[a.id]=a),a.type==="exit"&&(s[a.id]?delete s[a.id]:s[a.id]=a);return[o,Object.values(s)]}return[e,[]]}function Wn({complexTimeline:e,startTime:n=0}){let t=Ti(),r={},o={progress:null,currentTime:null},s=0,i=null,a=0,u=null;function l(){let S=A.getState().visibleElements,m=r,P=[],b=Object.keys(m);for(let I of b){let C=m[I],y=S[I];C&&y&&P.push(C)}return P}function c(){return Object.keys(r).map(S=>r[S])}function d(p){o.currentTime&&(o.currentTime.innerHTML=st(p),o.progress&&(o.progress.style.width=`${p/e.duration*100}%`))}let v=()=>{let p=A.getState(),S=p.currentPrime;if(!S)return;let m=r,P=p.visibleElements,b=Object.keys(m);for(let I of b){let C=m[I],y=P[I];if(C&&I!==S.id&&y){let E=a-y.time*1e3;Math.abs(a-y.time*1e3-C.currentTime*1e3)>300&&(C.currentTime=E/1e3)}}},x=(p=0)=>{let S=p-s,m=A.getState();if(m.isPlaying){let P=m.currentPrime;if(P){let y=r[P.id];y&&(y.paused?a+=S:a=(P.time+y.currentTime)*1e3)}else a+=S;let b=a/1e3;if(b>m.duration){A.getState().setTime(0),A.setState({isPlaying:!1}),h(),d(0);return}d(b);let[I,C]=Qn({currentTime:b,currentKeyFrameIndex:m.nextKeyframeIndex,keyframes:m.complexTimeline.keyframes,targetTime:b});C.length&&m.applyKeyframes(I,C)}s=p,i=requestAnimationFrame(x)},h=()=>{i&&cancelAnimationFrame(i)},g=(p,S)=>{},A=Ii((p,S)=>({complexTimeline:e,elements:{},visibleElements:{},isBuffering:!1,bufferMap:{},isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,isReady:!1,volume:100,duration:e.duration,clockStartRequests:0,clockStartTime:0,primeTime:0,currentPrime:null,clockRunning:!1,nextKeyframeIndex:0,startClock:()=>{S().clockRunning||(x(),u=setInterval(v,500)),p({clockRunning:!0,clockStartRequests:S().clockStartRequests+1})},applyKeyframes(m,P){let b=S(),I={...b.visibleElements},C=b.currentPrime;for(let y of P)y.type==="enter"&&(I[y.id]=y,t.emit("complex-timeline.enter",{id:y.id})),y.type==="exit"&&(I[y.id]=null,t.emit("complex-timeline.exit",{id:y.id})),y.isPrime&&(C=y);p({nextKeyframeIndex:m,visibleElements:I,currentPrime:C})},stopClock:()=>{let m=S().clockStartRequests;if(m!==0){if(m===1){h(),u&&clearInterval(u),p({clockRunning:!1,clockStartRequests:0});return}p({clockStartRequests:m-1})}},setElement:(m,P)=>{r[m]=P;let b=Object.keys(r),I=S().complexTimeline;g(P,m),I.items.filter(y=>y.type!=="Image"&&y.type!=="Text").every(y=>b.includes(y.annotationId))&&!S().isReady&&(t.emit("complex-timeline.ready",{complexTimeline:I}),p({isReady:!0}))},removeElement:m=>{delete r[m]},mute(){for(let m of c())m.muted=!0;p({isMuted:!0})},unmute(){for(let m of c())m.muted=!1;p({isMuted:!1})},play(){if(!S().isPlaying){for(let P of l())P.play();p({isPlaying:!0})}},pause(){if(S().isPlaying){for(let P of l())P.pause();p({isPlaying:!1})}},playPause(){let m=S();m.isPlaying?m.pause():m.play()},setDurationPercent(m){let b=S().duration*m;S().setTime(b)},setTime(m){let P=S(),b=a/1e3,I=typeof m=="function"?m(b):m,C=P.nextKeyframeIndex;if(b>I){p({visibleElements:{},currentPrime:null});let J=Object.keys(P.visibleElements);for(let z of J)t.emit("complex-timeline.exit",{id:z});b=0,C=0}let[y,E]=Qn({currentTime:b,currentKeyFrameIndex:C,keyframes:P.complexTimeline.keyframes,targetTime:I});P.applyKeyframes(y,E),a=I*1e3;let f=A.getState().visibleElements,qe=r,Ce=Object.keys(f);for(let J of Ce){let z=f[J];if(z){let X=qe[J];X&&(X.currentTime=(a-z.time*1e3)/1e3)}}d(I)},setVolume(m){for(let P of c())P.volume=Math.min(1,Math.max(0,m/100));p({volume:m})},toggleMute(){let m=S();m.isMuted?(m.unmute(),p({isMuted:!1})):(m.mute(),p({isMuted:!0}))},clearProgressElement(){o.progress=null},setProgressElement(m){o.progress=m},setCurrentTimeElement(m){o.currentTime=m},clearCurrentTimeElement(){o.currentTime=null}}));return t.on("complex-timeline.enter",p=>{let S=A.getState(),m=p.id,P=r[m];P&&S.isPlaying&&P.play()}),t.on("complex-timeline.exit",p=>{let S=A.getState(),m=p.id,P=r[m];P&&(P.currentTime=0,P.pause())}),A.getState().setTime(n),{store:A,emitter:t}}import{HTMLPortal as zi}from"@atlas-viewer/atlas";import{useStore as Jn}from"zustand";import{createContext as Mi,useContext as wi}from"react";import{useStore as Ei}from"zustand";import{jsx as Vi}from"react/jsx-runtime";var gt=Mi(null);gt.displayName="ComplexTimeline";function Gn({children:e,store:n}){return Vi(gt.Provider,{value:n,children:e})}function Mm(e){let n=wi(gt);if(!n)throw new Error("useComplexTimeline must be used within a ComplexTimelineProvider");return Ei(n,e)}import{HTMLPortal as ki}from"@atlas-viewer/atlas";import{Fragment as Zn,jsx as Se}from"react/jsx-runtime";function $e({strategy:e,onClickPaintingAnnotation:n}){return Se(Zn,{children:e.items.map((t,r)=>Se(Zn,{children:Se(ki,{onClick:n?o=>{o.stopPropagation(),n(t.annotationId,t,o)}:void 0,target:t.target?.spatial||void 0,children:Se("div",{"data-textual-content":!0,children:Se(xe,{enableDangerouslySetInnerHTML:!0,children:t.text})})},r)}))})}import{Fragment as Oi,jsx as De,jsxs as Hi}from"react/jsx-runtime";function Xn({strategy:e,children:n}){let{store:t}=Li(()=>Wn({complexTimeline:e}),[e]),r=Jn(t,i=>i.isReady),o=Jn(t,i=>i.visibleElements);function s(i){return a=>{a&&t.getState().setElement(i,a)}}return Ni(()=>{if(r){let{startClock:i,stopClock:a}=t.getState();return i(),()=>{a()}}},[e,r]),H("portal","custom-controls",Gn,{store:t,children:n},[r]),Hi(Oi,{children:[e.items.map(i=>i.type!=="Image"||!o[i.annotationId]?null:De(ce,{image:i,id:i.annotationId},i.id)),e.items.map((i,a)=>i.type!=="Text"||!o[i.annotationId]?null:De($e,{strategy:{type:"textual-content",items:[i]}},a)),e.items.map((i,a)=>i.type!=="Video"||!i.target.spatial?null:De(zi,{target:i.target.spatial,children:De("video",{ref:s(i.annotationId),src:i.url,style:{height:"100%",width:"100%",opacity:o[i.annotationId]?1:0}})},a))]})}import{Fragment as Ue,jsx as N,jsxs as Q}from"react/jsx-runtime";function de({x:e,y:n,onChoiceChange:t,registerActions:r,defaultChoices:o,isStatic:s,renderViewerControls:i,renderMediaControls:a,renderComplexTimelineControls:u,viewControlsDeps:l,mediaControlsDeps:c,strategies:d,throwOnUnknown:v,backgroundStyle:x,alwaysShowBackground:h,keepCanvasScale:g=!1,enableSizes:A=!1,enableYouTube:p=!0,onClickPaintingAnnotation:S,components:m={},children:P}){let b=M(),I=Ie(b,["deep-zoom"]),[C]=rn(),y=sn(),E=R(),Z=tr(()=>Fi(E),[E]),[f,qe]=Fn({strategies:d||["images"],defaultChoices:o?.map(({id:w})=>w)}),Ce=f.type==="images"?f.choice:void 0,J=tr(()=>g?1:Math.max(1,...f.type==="images"?f.images.map(w=>(w.width||0)/w.target?.spatial.width):[]),[g,f]);cn(J),er(()=>{r&&r(qe)},[f.annotations]),er(()=>{if(o)for(let w of o)typeof w.opacity<"u"&&Z.applyStyles({id:w.id},"atlas",{opacity:w.opacity})},[o]),Di(()=>{t&&t(Ce)},[Ce]),H(y&&(f.type==="images"||f.type==="empty"||f.type==="textual-content"&&i)?"overlay":"none",`canvas-portal-controls-${b?.id}`,he.Provider,i?{value:y||null,children:i(f)}:{},[b,y,f,...l||[]]);let z=Ee({maxWidth:256,maxHeight:256});if(!b)return null;let X=b.accompanyingCanvas,Be=b.placeholderCanvas,me=z&&z.type==="fixed"?N("world-object",{height:b.height,width:b.width,x:e,y:n,children:N("world-image",{uri:z.id,target:{x:0,y:0,width:b.width,height:b.height},display:z.width&&z.height?{width:z.width,height:z.height}:void 0,crop:void 0})}):null;if(f.type==="unknown"){if(me)return me;if(v)throw new Error(f.reason||"Unknown image strategy");return null}let vt=Q($i,{children:[C?N(ye,{page:C}):null,f.annotations&&f.annotations.pages?f.annotations.pages.map(w=>N(ye,{page:w},w.id)):null,P]}),rr=f.type==="images"?f.images.length:0,ji=f.type==="media"&&f.media.type==="Video"&&Be?N(Fe,{renderViewerControls:i}):null;return Q(Ue,{children:[Q("world-object",{height:b.height,width:b.width,x:e,y:n,...I,children:[f.type==="empty"||h?N(He,{style:x}):null,f.type==="complex-timeline"?N(Xn,{strategy:f,children:u?u(f):null}):null,f.type==="textual-content"?Q(Ue,{children:[N($e,{strategy:f,onClickPaintingAnnotation:S}),vt]}):null,f.type==="images"?Q(Ue,{children:[f.images.map((w,ht)=>N(ce,{isStatic:s,image:w,id:w.id,thumbnail:ht===0?z:void 0,selector:w.selector,enableSizes:A,onClick:S?or=>{S(w.annotationId,w,or)}:void 0},w.id+ht)),vt]}):null,f.type==="3d-model"?N(Oe,{model:f.model}):null,f.type==="media"?N(Ue,{children:f.media.type==="Sound"?Q(Le,{media:f.media,mediaControlsDeps:c,audioCopmonent:m.Audio,children:[me,a?a(f):null]}):f.media.type==="Video"?Q(ze,{captions:f.captions,media:f.media,mediaControlsDeps:c,videoComponent:m.Video,children:[me,a?a(f):null]}):f.media.type==="VideoYouTube"&&p?Q(Yn,{media:f.media,mediaControlsDeps:c,children:[me,a?a(f):null]}):null}):null]},`${b.id}/${f.type}/${rr}`),f.type==="media"&&f.media.type==="Sound"&&X?N(_,{canvas:X.id,children:N(de,{renderViewerControls:i})}):null,f.type==="media"&&f.media.type==="Sound"&&Be&&!X?N(_,{canvas:Be.id,children:N(de,{renderViewerControls:i})}):null]})}import{Fragment as Bi,jsx as B,jsxs as _i}from"react/jsx-runtime";var qi=nr(function(n,t){let r=V(),o=Pe(),s=Yt(),{ViewerControls:i,MediaControls:a,ComplexTimelineControls:u}=n.components||{};if(Ui(t,()=>s,[s]),!r)return B("div",{});let l=0;return _i(Bi,{children:[n.header,B(L.Viewer,{height:n.height,mode:n.mode,renderPreset:n.renderPreset,runtimeOptions:n.runtimeOptions,children:o.map((c,d)=>{let v=l;return l+=c.width+(n.spacing||0),B(_,{canvas:c.id,children:B(L.RenderCanvas,{strategies:["3d-model","media","images","empty","textual-content","complex-timeline"],renderViewerControls:d===0&&i?()=>B(i,{}):void 0,renderMediaControls:d===0&&a?()=>B(a,{}):void 0,renderComplexTimelineControls:d===0&&u?()=>B(u,{}):void 0,x:v,...n.canvasProps||{},children:n.annotations},c.id)},c.id)})},n.reuseAtlas?"":s.currentSequenceIndex),n.children]})}),L=nr(function({children:n,height:t,annotations:r,canvasProps:o,spacing:s,header:i,components:a,mode:u,reuseAtlas:l,renderPreset:c,runtimeOptions:d,...v},x){let h=te();return B(ee,{vault:h,children:B(Kt,{...v,children:B(qi,{ref:x,height:t,components:a,spacing:s,canvasProps:o,annotations:r,header:i,mode:u,reuseAtlas:l,renderPreset:c,runtimeOptions:d,children:n})})})});L.RenderImage=ce;L.RenderCanvas=de;L.RenderAnnotationPage=ye;L.RenderAnnotation=we;L.Viewer=mn;L.CanvasBackground=He;L.Audio=Le;L.Video=ze;L.Model=Oe;L.AudioHTML=dt;L.VideoHTML=mt;L.ModelHTML=pt;L.PlaceholderCanvas=Fe;export{Ae as a,F as b,Y as c,W as d,ee as e,te as f,At as g,Pt as h,bt as i,_ as j,R as k,T as l,ne as m,Pe as n,V as o,Rt as p,Tr as q,je as r,Ua as s,Tt as t,_a as u,Ke as v,It as w,Mt as x,rs as y,Vt as z,kt as A,Nt as B,Ye as C,wt as D,re as E,Lr as F,zr as G,Dt as H,Ut as I,pe as J,Or as K,Cs as L,Hr as M,Ft as N,As as O,qt as P,_t as Q,ve as R,Qr as S,Kt as T,Yt as U,Xr as V,ie as W,Qt as X,fu as Y,Wt as Z,ro as _,Iu as $,Gt as aa,Zt as ba,Jt as ca,tn as da,rn as ea,on as fa,he as ga,sn as ha,M as ia,Ie as ja,ae as ka,Me as la,pn as ma,cl as na,ll as oa,dl as pa,Sn as qa,it as ra,Cn as sa,Fo as ta,$o as ua,Do as va,ml as wa,xe as xa,_o as ya,ue as za,Mn as Aa,En as Ba,Vn as Ca,kn as Da,Nn as Ea,zn as Fa,Fn as Ga,$n as Ha,Ee as Ia,st as Ja,le as Ka,kd as La,Nd as Ma,Ld as Na,ke as Oa,Ne as Pa,Gn as Qa,Mm as Ra,L as Sa};
@@ -0,0 +1 @@
1
+ import{expandTarget as D}from"@iiif/helpers";function _(e){return e.type==="SpecificResource"?[e.source,{selector:e.selector}]:[e,{selector:null}]}function x(e,o){let{selector:n,source:s}=D(o);if(s.id!==e.id)return[null,s];let t={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}};return[n?n.type==="TemporalSelector"?{type:"TemporalBoxSelector",temporal:n.temporal,spatial:t.spatial}:n:null,s]}var K={makeChoice:()=>{}},T={type:"unknown"},m=e=>({type:"unknown",reason:e,annotations:{pages:[]}}),w=(e,o)=>({type:"empty",width:e,height:o,annotations:{pages:[]},image:null,images:[]});var A=["model/gltf-binary"];function v(e,o){let s=o.items[0].resource;return s.format?A.indexOf(s.format)===-1?m(`3D format: ${s.format} is unsupported`):{type:"3d-model",model:s}:m("Unknown format")}import{getImageServices as O}from"@atlas-viewer/iiif-image-api";import{expandTarget as P}from"@iiif/helpers/annotation-targets";function C(e,o,n){let s=[];for(let t of o.items){let a=t.resource&&t.resource.type==="SpecificResource"?t.resource.source:t.resource;if(!a.id)return m("No resource Identifier");let c;if(a.service){let g=O(a);g[0]&&(c=n(g[0],e))}let y={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}},[u,i]=x(e,t.target),r=e.id?.split("?")[0]||"";if(!(i.id===e.id||decodeURIComponent(i.id||"")===(e.id||"")||i.id===r||decodeURIComponent(i.id||"")===r))continue;let l=t.resource.width&&t.resource.height?{type:"BoxSelector",spatial:{x:0,y:0,width:t.resource.width,height:t.resource.height}}:void 0,p=t.resource.type==="SpecificResource"?P(t.resource):null;if(t.selector){let g=P({type:"SpecificResource",source:t.resource,selector:t.selector});g&&(p=g)}let d=p&&p.selector&&(p.selector.type==="BoxSelector"||p.selector.type==="TemporalBoxSelector")?{type:"BoxSelector",spatial:{x:p.selector.spatial.x,y:p.selector.spatial.y,width:p.selector.spatial.width,height:p.selector.spatial.height}}:void 0;c&&!c.id&&(c.id=c["@id"]);let f={id:a.id,type:"Image",annotationId:t.annotationId,width:Number(u||d?a.width:e.width),height:Number(u||d?a.height:e.height),service:c,sizes:c&&c.sizes?c.sizes:a.width&&a.height?[{width:a.width,height:a.height}]:[],target:u&&u.type!=="PointSelector"?u:y,selector:d||{type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}}};s.push(f)}return{type:"images",image:s[0],images:s,choice:o.choice}}function k(e,o={},n){let s=e.language||n||"none";switch(e.type){case"TextualBody":{typeof e.value<"u"&&(o[s]=[e.value]);break}case"List":case"Composite":case"Choice":e.items&&e.items.forEach(t=>k(t,o,s))}return o}function I(e,o){let n=[];return o.items.forEach(s=>{if(s.resource){let[t]=x(e,s.target);n.push({type:"Text",annotationId:s.annotationId,text:k(s.resource),target:t})}}),{type:"textual-content",items:n}}import{expandTarget as U,parseSelector as W}from"@iiif/helpers";var L=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function b(e,o,n){let s=o.items.filter(d=>d.type==="video"),t=!1;if(e.duration||(t=!0),s.length>1)return m("Only one video source supported");let a=s[0]?.resource,c=!!(a.service||[]).find(d=>(d.profile||"").includes("youtube.com"));if(!c&&t)return m("Video does not have duration");if(!a)return m("Unknown video");if((!a.format||a.format==="text/html")&&!c)return m("Video does not have format");let y=[],u=n.get(e.annotations);for(let d of u){let f=n.get(d.items);for(let g of f)if((g.motivation?Array.isArray(g.motivation||"")?g.motivation:[g.motivation]:[]).includes("supplementing")){let V=n.get(g.body);for(let z of V){let h=z;if(h.type==="Choice")for(let B of h.items){let S=n.get(B);S.format==="text/vtt"&&y.push({id:S.id,type:"Text",format:"text/vtt",label:S.label,language:S.language})}else h.format==="text/vtt"&&y.push({id:h.id,type:"Text",format:"text/vtt",label:h.label,language:h.language})}}}let i=o.items[0],r={annotationId:o.items[0].annotationId,duration:e.duration,url:a.id,type:"Video",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:a.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},l=U(i.target);l.selector&&l.selector.type==="TemporalBoxSelector"&&(r.target=l.selector);let{selector:p}=W(i.selector);if(p===null){let d=r.target.temporal.startTime,g=(r.target.temporal.endTime||e.duration)-d;r.selector={type:"TemporalSelector",temporal:{startTime:0,endTime:g}}}else p.type==="TemporalSelector"&&(r.selector=p);if(c){r.type="VideoYouTube";let d=a.id.match(L);if(!d[1])return m("Video is not known youtube video");r.youTubeId=d[1]}return{type:"media",media:r,annotations:{pages:[]},captions:y}}function R(e,o,n,s){let t={type:"complex-timeline",items:[],keyframes:[],duration:e.duration||0},a={type:"complex-choice",items:[]};function c(i){i.choice&&(i.choice.type==="complex-choice"?a.items.push(...i.choice.items):a.items.push(i.choice))}for(let i of o.items){if(i.type==="image"){let r=C(e,{choice:null,allChoices:null,types:["image"],items:[i]},n);if(r.type==="images"){c(r),t.items.push(r.image);let l={id:r.image.annotationId,type:"enter",resourceType:"image",time:r.image.target?.temporal?.startTime||0};t.keyframes.push(l);let p={id:r.image.annotationId,type:"exit",resourceType:"image",time:r.image.target?.temporal?.endTime||e.duration||0};t.keyframes.push(p)}}if(i.type==="textualbody"){let r=I(e,{choice:null,allChoices:null,types:["textualbody"],items:[i]});if(r.type==="textual-content"){c(r);let l=r.items[0];t.items.push(l);let p=l.target,d={id:l.annotationId,type:"enter",resourceType:"text",time:p.temporal?.startTime||0};t.keyframes.push(d);let f={id:l.annotationId,type:"exit",resourceType:"text",time:p.temporal?.endTime||e.duration||0};t.keyframes.push(f)}}if(i.type==="video"){let r=b(e,{choice:null,allChoices:null,types:["video"],items:[i]},s);if(r.type==="media"){c(r);let l=r.media;t.items.push(l);let p={id:l.annotationId,type:"enter",resourceType:"video",time:l.target?.temporal?.startTime||0};t.keyframes.push(p);let d={id:l.annotationId,type:"exit",resourceType:"video",time:l.target?.temporal?.endTime||e.duration||0};t.keyframes.push(d)}}}t.keyframes.sort((i,r)=>i.time-r.time);let y=[],u=[];for(let i of t.keyframes){if(i.resourceType==="image"||i.resourceType==="text"){u.push(i);continue}if(i.type==="enter"){y.length===0&&(i.isPrime=!0),y.push(i),u.push(i);continue}if(i.type==="exit"&&(u.push(i),y=y.filter(r=>r.id!==i.id),y.length!==0)){let r=y[0],l={id:r.id,type:"change",isPrime:!0,resourceType:r.resourceType,time:i.time};u.push(l)}}return t.keyframes=u,a.items.length&&(t.choice=a),t}function N(e,o){if(!e.duration)return m("No duration on canvas");if(o.items.length>1)return m("Only one audio source supported");let n=o.items[0]?.resource;return n?n.format?{type:"media",media:{annotationId:o.items[0].annotationId,duration:e.duration,url:n.id,type:"Sound",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:n.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},annotations:{pages:[]}}:m("Audio does not have format"):m("Unknown audio")}function xe({canvas:e,paintables:o,supports:n,loadImageService:s,vault:t}){if(!e)return T;if(o.types.length===0)return n.indexOf("empty")!==-1?w(e.width,e.height):T;if(o.types.length!==1)if(o.types.length===2&&o.types.indexOf("text")!==-1)o.types=o.types.filter(c=>c!=="text");else return n.indexOf("complex-timeline")===-1?m("Complex timeline not supported"):R(e,o,s,t);let a=o.types[0];return a==="image"?n.indexOf("images")===-1?m("Image not supported"):C(e,o,s):a==="Model"||a==="model"?n.indexOf("3d-model")===-1?m("3D not supported"):v(e,o):a==="textualbody"?n.indexOf("textual-content")===-1?m("Textual content not supported"):I(e,o):a==="sound"||a==="audio"?n.indexOf("media")===-1?m("Media not supported"):N(e,o):a==="video"?n.indexOf("media")===-1?m("Media not supported"):b(e,o,t):T}export{_ as a,x as b,K as c,T as d,m as e,w as f,v as g,C as h,I as i,b as j,R as k,xe as l};