react-iiif-vault 1.1.0 → 1.2.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 Rr=Object.create;var He=Object.defineProperty;var Pr=Object.getOwnPropertyDescriptor;var br=Object.getOwnPropertyNames;var Ir=Object.getPrototypeOf,wr=Object.prototype.hasOwnProperty;var Tr=(e,t)=>{for(var n in t)He(e,n,{get:t[n],enumerable:!0})},Lt=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of br(t))!wr.call(e,o)&&o!==n&&He(e,o,{get:()=>t[o],enumerable:!(r=Pr(t,o))||r.enumerable});return e};var ie=(e,t,n)=>(n=e!=null?Rr(Ir(e)):{},Lt(t||!e||!e.__esModule?He(n,"default",{value:e,enumerable:!0}):n,e)),Mr=e=>Lt(He({},"__esModule",{value:!0}),e);var ao={};Tr(ao,{CanvasPanel:()=>V});module.exports=Mr(ao);var ze=require("react");var M=ie(require("react"),1),Ge=require("@atlas-viewer/atlas"),Vn=require("react-error-boundary");var ee=require("react");var ae=ie(require("react"),1),zt=require("react/jsx-runtime"),Vr={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},De=ae.default.createContext(Vr),O=()=>(0,ae.useContext)(De);function Y({value:e,children:t}){let n=O(),r=(0,ae.useMemo)(()=>({...n,...e}),[e,n]);return(0,zt.jsx)(De.Provider,{value:r,children:t})}var Ue=ie(require("react"),1),Ae=require("@iiif/helpers/vault");var pt=require("react/jsx-runtime"),X=Ue.default.createContext({vault:null,setVaultInstance:e=>{}});function se({vault:e,vaultOptions:t,useGlobal:n,resources:r,children:o}){let[s,i]=(0,Ue.useState)(()=>e||(n?(0,Ae.globalVault)(t):t?new Ae.Vault(t):new Ae.Vault));return(0,pt.jsx)(X.Provider,{value:{vault:s,setVaultInstance:i},children:(0,pt.jsx)(Y,{value:r||{},children:o})})}var fn=require("react"),je=require("react");var Ot=require("@iiif/helpers/vault"),Ft=require("react");function ue(e){let t=(0,Ft.useContext)(X);return e||(t&&t.vault?t.vault:(0,Ot.globalVault)())}var Q=require("react");function Ht(e,{noCache:t=!1}={}){let n=typeof e=="string"?e:e.id,r=ue(),[o,s]=(0,Q.useState)(n),[i,a]=(0,Q.useState)(void 0),u=(0,Q.useMemo)(()=>r.get(n,{skipSelfReturn:!0})||void 0,[n,r]),[c,l]=(0,Q.useState)(u);return(0,Q.useEffect)(()=>{(async()=>{try{let d=u&&!t?u:await r.load(n),g=d?d.id||d["@id"]:null;d&&o!==g&&s(g),l(d)}catch(d){a(d)}})()},[n,t]),{isLoaded:!!c,id:o,requestId:n,error:i,resource:c,cached:!!(c&&c===u)}}function Dt(e,t){let{id:n,isLoaded:r,error:o,resource:s,requestId:i,cached:a}=Ht(e,t);return{id:n,isLoaded:r,error:o,manifest:s,requestId:i,cached:a}}var Bt=require("react/jsx-runtime");function Ut({manifest:e,children:t}){return(0,Bt.jsx)(Y,{value:{manifest:e},children:t})}var _t=require("react/jsx-runtime");function ce({canvas:e,children:t}){return(0,_t.jsx)(Y,{value:{canvas:e},children:t})}var $t=require("react"),Wt=ie(require("react"),1);var qt=require("react"),h=()=>{let{vault:e}=(0,qt.useContext)(X);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};var Be=require("react");function y(e,t=[]){let n=h(),[r,o]=(0,Be.useState)(()=>e(n.getState(),n));return(0,Be.useEffect)(()=>n.subscribe(s=>e(s,n),s=>{o(s)},!1),t),r}var le=Wt.default.createContext([]);function _e(){let e=(0,$t.useContext)(le);return y(t=>e.map(n=>t.iiif.entities.Canvas[n]).filter(Boolean),[e])}var jt=require("react");function k(e={},t=[]){let{id:n,selector:r}=e,o=O(),s=h(),i=n||o.manifest,a=y(u=>i?u.iiif.entities.Manifest[i]:void 0,[i]);return(0,jt.useMemo)(()=>{if(a)return r?r(a):a},[a,r,...t])}var Qt=require("react/jsx-runtime");function Yt({range:e,children:t}){return(0,Qt.jsx)(Y,{value:{range:e},children:t})}function gt(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(...gt(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 Gt(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:gt(e,t);if(i)return[u,[u.map((f,p)=>p)]];if(a||!s||n)return[u,u.map((f,p)=>[p])];let c=[],l=[],d=()=>{l.length&&(c.push([...l]),l=[])},g=0,S=!1;for(let f=0;f<u.length;f++){let p=e.get(u[f]);if(p.behavior.includes("non-paged")){f===g&&g++,r||(d(),c.push([f]),d());continue}if(f===g||p.behavior.includes("facing-pages")){l.length&&(S=!0),d(),c.push([f]),d();continue}if(l.push(f),S){d(),S=!1;continue}l.length>1&&d()}return l.length&&d(),[u,c]}var F=require("react");var Zt=require("react");function Kt(e={},t=[]){let{id:n,selector:r}=e,o=O(),s=n||o.range,i=y(a=>s?a.iiif.entities.Range[s]:void 0,[s]);return(0,Zt.useMemo)(()=>{if(i)return r?r(i):i},[i,r,...t])}function Jt({startCanvas:e,disablePaging:t}){let n=h(),r=k(),o=Kt(),[s,i]=(0,F.useState)(void 0),a=o||r;if(!a)throw new Error("Nothing selected");let[u,c]=(0,F.useMemo)(()=>Gt(n,a,{disablePaging:t}),[n,a,t]),l=(0,F.useRef)(c);if(l.current!==c){let R=l.current[s][0],x=c.findIndex(W=>W.includes(R));l.current=c,i(x)}let d=(0,F.useCallback)(p=>{let R=c.findIndex(x=>x.includes(p));i(R===-1?0:R)},[u,c]),g=(0,F.useCallback)(p=>{let R=u.findIndex(x=>x.id===p);R!==-1?d(R):i(0)},[u,c]),S=(0,F.useCallback)(()=>{i(p=>p>=c.length-1?p:p+1)},[c]),f=(0,F.useCallback)(()=>{i(p=>p<=0?0:p-1)},[c]);return typeof s>"u"&&(e?g(e):i(0)),{visibleItems:c[s]?.map(p=>u[p].id)||[],cursor:s,items:u,sequence:c,hasPrevious:s>0,hasNext:s<c.length-1,setSequenceIndex:i,setCanvasIndex:d,setCanvasId:g,next:S,previous:f}}var D=require("react");var de=require("react");var vt=require("zustand/vanilla");function H(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 Xt=()=>(0,vt.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:H(n.id,t().authItems,o=>({...o,isPending:!0}))})),ht(n.service).then(()=>{qe(r).then(o=>{let s=o.expiresIn,i=Date.now()+s*1e3;e(()=>({authItems:H(n.id,t().authItems,a=>({...a,isLoggedIn:!0,isPending:!1,session:{token:o.accessToken,expires:i}}))}))}).catch(o=>{e(()=>({authItems:H(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=${nn()}`,s=window.open(o);e(()=>({authItems:H(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:H(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");qe(o).then(a=>{e(()=>({authItems:H(n.id,t().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:H(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:H(n.id,t().authItems,a=>({...a,isPending:!0}))})),ht(s).then(()=>{qe(o).then(a=>{e(()=>({authItems:H(n.id,t().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:H(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:H(n.id,t().authItems,i=>({...i,instances:i.instances-1})),currentAuth:s}))}})),en=(e,t)=>(0,vt.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 tn(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 qe(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 nn(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 ht(e){let t=`${e.id}?origin=${nn()}`,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 rn=require("zustand");function on(e){let t=(0,de.useMemo)(()=>tn(e),[e]),n=an(t.services.access?.id);console.log("probe auth service");let r=(0,de.useMemo)(()=>en(t.services.probe,n),[t.services.probe]),o=(0,rn.useStore)(r);return(0,de.useEffect)(()=>{o.status==="unknown"&&!n&&o.probe()},[t.services.probe,o.status]),(0,de.useEffect)(()=>{n&&(o.setToken(n),o.probe())},[n]),[e,o,t.hasAuth]}var $e=require("zustand"),Ce=require("react/jsx-runtime"),Re=(0,D.createContext)(null),Nr=(0,D.createContext)(null);Nr.displayName="CurrentAuth";var kr=(0,D.createContext)(null);kr.displayName="AuthActions";function sn({children:e}){let t=(0,D.useMemo)(()=>Xt(),[]);return console.log("authStateStore",t),(0,Ce.jsx)(Re.Provider,{value:t,children:e})}function St(){let e=(0,D.useContext)(Re);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function Er(){let e=St();return(0,$e.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 Lr(e){let t=St();return(0,$e.useStore)(t,r=>r.authItems.find(o=>o.service.id===e))}function an(e){let t=St();return(0,$e.useStore)(t,r=>r.authItems.find(o=>o.id===e)?.session?.token)}function zr(e){let t=Er(),n=Lr(e.service.id);return(0,D.useEffect)(()=>(console.log("add service",e.service,e.probeId),t?.addService(e.service,e.probeId),()=>{t?.removeService(e.service,e.probeId)}),[e.service]),n?(n.error||!n.isLoggedIn,e.children):null}function yt(){return null}function un(e){let[t,n,r]=on(e.resource),o=e.fallbackComponent||yt,s=e.loadingComponent||yt,i=e.errorComponent||yt,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,Ce.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,Ce.jsx)(s,{})),n.status==="success"&&(u=e.children(t));for(let l of c)u=(0,Ce.jsx)(zr,{service:l,probeId:a.id,children:u},l.id);return u}var Pe=require("react");var cn=require("zustand/vanilla"),Or=e=>e.id||e["@id"];function Fr(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 ln=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?Or(t):void 0,r=null;return(0,cn.createStore)((o,s)=>({service:t,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!t,hasAutocomplete:t?!!Fr(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 Hr=require("zustand");function dn(){let e=k();return e?e.service.find(t=>t.profile==="SearchService1"||t.profile==="http://iiif.io/api/search/1/search"):void 0}var We=require("react/jsx-runtime"),me=(0,Pe.createContext)(null);me.displayName="Search";function mn(e){let t=dn();return e.store?(0,We.jsx)(me.Provider,{value:e.store,children:e.children}):(0,We.jsx)(Dr,{service:t,children:e.children})}function Dr({service:e,children:t}){let n=(0,Pe.useMemo)(()=>ln(e),[e]);return(0,We.jsx)(me.Provider,{value:n,children:t})}var E=require("react/jsx-runtime"),be=()=>{},Ie=(0,je.createContext)({setCurrentCanvasId:be,setCurrentCanvasIndex:be,nextCanvas:be,previousCanvas:be,items:[],sequence:[],setSequenceIndex:be,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function Ur(e){let t=k(),{cursor:n,visibleItems:r,next:o,sequence:s,items:i,setCanvasIndex:a,setCanvasId:u,previous:c,setSequenceIndex:l,hasNext:d,hasPrevious:g}=Jt({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),S=(0,je.useMemo)(()=>({sequence:s,items:i,setCurrentCanvasId:u,nextCanvas:o,previousCanvas:c,totalCanvases:i.length,setCurrentCanvasIndex:a,setSequenceIndex:l,currentSequenceIndex:n,hasNext:d,hasPrevious:g}),[s,i,u,o,c,i,a,l,n]);return t?r.length===0?null:(0,E.jsx)(Ie.Provider,{value:S,children:(0,E.jsx)(le.Provider,{value:r,children:(0,E.jsx)(ce,{canvas:r[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,E.jsx)("div",{children:"Sorry, something went wrong."}))}function pn(e){let t=ue(e.vault),n=Dt(e.manifest);if(!n)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,E.jsx)("div",{children:"Sorry, something went wrong."});if(n.error)return(0,E.jsx)("div",{children:n.error.toString()});if(!n.isLoaded)return(0,E.jsx)("div",{children:"Loading..."});let r=(0,E.jsx)(Ur,{...e,children:e.children});return(0,E.jsx)(se,{vault:t,children:(0,E.jsx)(Ut,{manifest:n.id,children:(0,E.jsx)(sn,{children:(0,E.jsx)(mn,{children:e.rangeId?(0,E.jsx)(Yt,{range:e.rangeId,children:r}):r})})})})}function gn(){return(0,fn.useContext)(Ie)}var fe=require("react/jsx-runtime");function hn(){return{VaultContext:(0,ee.useContext)(X),ResourceContext:(0,ee.useContext)(De),SimpleViewerReactContext:(0,ee.useContext)(Ie),VisibleCanvasReactContext:(0,ee.useContext)(le),AuthRContext:(0,ee.useContext)(Re),SearchReactContext:(0,ee.useContext)(me)}}function vn(e){return(0,fe.jsx)(se,{vault:e.bridge.VaultContext.vault||void 0,resources:e.bridge.ResourceContext,children:(0,fe.jsx)(le.Provider,{value:e.bridge.VisibleCanvasReactContext,children:(0,fe.jsx)(Ie.Provider,{value:e.bridge.SimpleViewerReactContext,children:(0,fe.jsx)(Re.Provider,{value:e.bridge.AuthRContext,children:(0,fe.jsx)(me.Provider,{value:e.bridge.SearchReactContext,children:e.children})})})})})}var pe=require("react");var $=require("react");var Ye=require("@iiif/helpers/vault/actions");var yn=require("react");function Sn(){let t=h().getStore();return(0,yn.useMemo)(()=>n=>t.dispatch(n),[t])}function xn(e){return typeof e!="string"&&e&&e.bindToVault}function An(){let e=h(),t=(0,$.useRef)([]),n=Sn(),r=(0,$.useMemo)(()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);(0,$.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(Ye.entityActions.importEntities({entities:{AnnotationPage:{[a.id]:a}}}))},[r]);let o=y(a=>r&&a.iiif.entities.AnnotationPage[r]||null,[r]),s=(0,$.useCallback)((a,u)=>{if(r){if(xn(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(Ye.entityActions.addReference({id:r,type:"AnnotationPage",key:"items",reference:{id:a,type:"Annotation"},index:u})))}},[r]),i=(0,$.useCallback)(a=>{r&&(xn(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(Ye.entityActions.removeReference({id:r,type:"AnnotationPage",key:"items",reference:{id:a,type:"Annotation"}})))},[r]);return[o,{addAnnotation:s,removeAnnotation:i}]}var bn=require("react/jsx-runtime"),Cn=(0,pe.createContext)(null);function Rn(){let e=(0,pe.useContext)(Cn);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function Pn({children:e}){let[t,{addAnnotation:n,removeAnnotation:r}]=An();return(0,bn.jsx)(Cn.Provider,{value:(0,pe.useMemo)(()=>({fullPage:t,addAnnotation:n,removeAnnotation:r}),[t]),children:e})}var ge=require("react/jsx-runtime");function In({width:e,style:t,height:n,error:r,resetErrorBoundary:o}){return(0,ge.jsxs)("div",{style:{width:e,height:n,minHeight:500,...t||{},background:"#f9f9f9"},children:[(0,ge.jsx)("h3",{children:"Error occurred"}),(0,ge.jsx)("p",{children:r.message}),(0,ge.jsx)("button",{onClick:o,children:"Reset"})]})}var Qe=require("react"),we=(0,Qe.createContext)(null);function wn(){return(0,Qe.useContext)(we)}var te=require("react"),xt=(0,te.createContext)(()=>{}),At=(0,te.createContext)(()=>{});function U(e,t,n,r,o=[]){let s=(0,te.useContext)(e==="portal"?At:xt);(0,te.useEffect)(()=>(e!=="none"&&s(t,n,r),()=>{s(t,null)}),[t,e,s,...o])}var he=require("react");var Tn=require("react");function w(e={},t=[]){let{id:n,selector:r}=e,o=O(),s=n||o.canvas,i=y(a=>s?a.iiif.entities.Canvas[s]:void 0,[s]);return(0,Tn.useMemo)(()=>{if(i)return r?r(i):i},[i,r,...t])}var Ct=(0,he.createContext)(()=>{});function Mn(e){let t=w(),n=(0,he.useContext)(Ct);(0,he.useEffect)(()=>t&&t.id?(n(t.id,e),()=>n(t.id,-1)):()=>{},[t,e])}var I=require("react/jsx-runtime");function Nn({children:e,errorFallback:t,outerContainerProps:n={},worldScale:r,...o}){let[s,i]=(0,M.useState)(),a=hn(),u=t||In,[c,l]=(0,M.useState)({}),d=Object.entries(c),[g,S]=(0,M.useState)({}),f=Object.entries(g),[p,R]=(0,M.useState)({}),x=(0,M.useMemo)(()=>r||Math.max(...Object.values(p)),[p]),W=(0,M.useMemo)(()=>({maxOverZoom:x||1,...o.runtimeOptions||{}}),[x,o.runtimeOptions]),N=(0,M.useCallback)((P,T)=>{R(z=>{if(T===-1){let{[P]:m,...q}=z;return q}return{...z,[P]:T}})},[]),ft=(0,M.useCallback)((P,T,z)=>{l(({[P]:m,...q})=>T?{...q,[P]:{element:T,props:z}}:q)},[]),Oe=(0,M.useCallback)((P,T,z)=>{S(({[P]:m,...q})=>T?{...q,[P]:{element:T,props:z}}:q)},[]);return(0,I.jsxs)(Vn.ErrorBoundary,{resetKeys:[],fallbackRender:P=>(0,I.jsx)(u,{...o,...P}),children:[(0,I.jsx)(Ge.AtlasAuto,{...o,containerProps:{style:{position:"relative"},...o.containerProps||{}},htmlChildren:(0,I.jsx)(I.Fragment,{children:d.map(([P,{element:T,props:z}])=>(0,I.jsx)(M.default.Fragment,{children:(0,I.jsx)(T,{...z||{}})},P))}),onCreated:P=>{i(P),o.onCreated&&o.onCreated(P)},runtimeOptions:W,children:(0,I.jsx)(we.Provider,{value:s,children:(0,I.jsx)(Ct.Provider,{value:N,children:(0,I.jsx)(xt.Provider,{value:ft,children:(0,I.jsx)(At.Provider,{value:Oe,children:(0,I.jsx)(vn,{bridge:a,children:(0,I.jsx)(Ge.ModeContext.Provider,{value:o.mode||"explore",children:(0,I.jsx)(Pn,{children:e})})})})})})})}),(0,I.jsx)("div",{children:f.map(([P,{element:T,props:z}])=>(0,I.jsx)(M.default.Fragment,{children:(0,I.jsx)(T,{...z||{}})},P))})]})}var Je=require("@atlas-viewer/atlas");var Rt=require("react"),kn=require("@iiif/helpers/events");function Ze(e,t){let n=h(),r=(0,Rt.useMemo)(()=>(0,kn.createEventsHelper)(n),[n]),o=y(()=>e&&e.id?n.getResourceMeta(e.id,"eventManager"):null,[e]);return(0,Rt.useMemo)(()=>e?r.getListenersAsProps(e,t):{},[o,e,n,t])}var En=require("react"),Ln=require("@iiif/helpers/styles");function ve(e,t){let n=h(),r=(0,En.useMemo)(()=>(0,Ln.createStylesHelper)(n),[n]);return y(()=>{if(!e)return null;let o=r.getAppliedStyles(e.id);return o?t?o[t]:o:void 0},[e,t])}var Fn=require("react");var zn=require("react");var On=require("@iiif/helpers/annotation-targets");function Ke(e={},t=[]){let{id:n,selector:r}=e,o=O(),s=h(),i=n||o.annotation,a=y(c=>i?c.iiif.entities.Annotation[i]:void 0,[i]),u=y(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,zn.useMemo)(()=>{if(!a)return;let c={...a,body:u,target:(0,On.expandTarget)(a.target,{typeMap:s.getState().iiif.mapping})};return r?r(c):c},[a,r,u,...t])}var Hn=require("react/jsx-runtime"),Xe=({id:e,style:t,className:n,interactive:r})=>{let o=Ke({id:e}),s=ve(o,"atlas"),i=ve(o,"html"),a=Ze(o,["atlas"]),u=w(),c=(0,Fn.useMemo)(()=>(0,Je.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,Hn.jsx)(Je.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 Bn=require("react");var Dn=require("react");function Un(e={},t=[]){let{id:n,selector:r}=e,o=O(),s=n||o.annotationPage,i=y(a=>s?a.iiif.entities.AnnotationPage[s]:void 0,[s]);return(0,Dn.useMemo)(()=>{if(i)return r?r(i):i},[i,...t])}var Pt=require("react/jsx-runtime"),Te=({className:e,page:t})=>{let n=Un({id:t.id})||t,r=ve(n,"atlas"),o=ve(n,"html");return y(s=>n.id?s.iiif.entities.AnnotationPage[n.id]:null,[]),(0,Pt.jsx)(Bn.Fragment,{children:n.items?.map(s=>(0,Pt.jsx)(Xe,{id:s.id,style:r,className:o?.className||e},s.id))})};var Sr=require("@iiif/helpers/styles");var Ve=require("react");var et=require("@atlas-viewer/atlas");var ne=ie(require("react"),1),G=require("react/jsx-runtime"),Br=ne.default.createContext("en");function qn(){return ne.default.useContext(Br)}function _n(e){return e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):e}function _r({as:e,language:t,children:n,viewingDirection:r,...o}){let s=qn();return(0,ne.useMemo)(()=>_n(s)===_n(t),[s,t])?e?(0,G.jsx)(e,{...o,children:n}):(0,G.jsx)("span",{...o,children:n}):e?(0,G.jsx)(e,{...o,lang:t,dir:r,children:n}):(0,G.jsx)("span",{...o,lang:t,dir:r,children:n})}function qr(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 $r=(e,t=[])=>{let n=qn();return(0,ne.useMemo)(()=>{let r=e();return qr(n,r,[])},[n,...t])};function Wr(e,t,n=`
2
- `){let r=$r(()=>Object.keys(e||{}),[e]);return[(0,ne.useMemo)(()=>{if(!e)return t||"";if(typeof e=="string")return e;let o=r?e[r]:void 0;return o?typeof o=="string"?o:o.join(n):""},[r,t,e]),r]}function Me({as:e,defaultText:t,enableDangerouslySetInnerHTML:n,children:r,separator:o,...s}){let[i,a]=Wr(r,t,o);return a?(0,G.jsx)(_r,{...s,as:e,language:a,title:n?void 0:i,dangerouslySetInnerHTML:n?{__html:i}:void 0,children:n?void 0:i}):e?(0,G.jsx)(e,{...s,children:i}):(0,G.jsx)("span",{...s,title:n?void 0:i,dangerouslySetInnerHTML:n?{__html:i}:void 0,children:n?void 0:i})}var B=require("react/jsx-runtime");function jr({resource:e,heading:t,note:n,extra:r}){return r?(0,B.jsx)(et.HTMLPortal,{target:{x:0,y:0,width:r.target?.spatial.width,height:r.target?.spatial.height},backgroundColor:"#333",relative:!0,children:(0,B.jsx)("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:(0,B.jsxs)("div",{children:[(0,B.jsx)(Me,{children:t||"Not authorised"}),n&&(0,B.jsx)("p",{children:(0,B.jsx)(Me,{children:n})}),(0,B.jsx)("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}function $n({image:e,thumbnail:t,crop:n,enableSizes:r}){return(0,B.jsx)(un,{resource:e.service,errorComponent:jr,extra:e,children:o=>{let s=o.width||e.width||0,i=o.height||e.height||0;return(0,B.jsx)(et.TileSet,{tiles:{id:o.id||o["@id"]||"unknown",height:i,width:s,imageService:o},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:n})}},e.id)}var re=require("react/jsx-runtime");function tt({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,Ve.useMemo)(()=>{if(!(!a||a.spatial.x===0&&a.spatial.y===0))return a.spatial},[a]);return(0,re.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,re.jsxs)(Ve.Fragment,{children:[(0,re.jsx)($n,{image:t,thumbnail:n,crop:l,enableSizes:c}),i]},"service"):(0,re.jsxs)(Ve.Fragment,{children:[(0,re.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 _=require("react"),xr=require("@atlas-viewer/atlas");var It=require("react");var Wn=require("@iiif/helpers");function nt(e,t){let{selector:n,source:r}=(0,Wn.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 jn={makeChoice:()=>{}},rt={type:"unknown"},A=e=>({type:"unknown",reason:e,annotations:{pages:[]}}),Yn=(e,t)=>({type:"empty",width:e,height:t,annotations:{pages:[]},image:null,images:[]});var Ne=require("react");function Yr(e,t){let n=e?.iiif?.meta[t];return n?n.annotationPageManager:null}function Qn(e,t){return y(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=Yr(n,s);i&&i.views&&i.views[e]&&r.push(s)}return r},[e,t])}function Gn({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 Qr(e,t){let n=e?.iiif?.meta[t];return n?n.annotationPageManager:null}function Zn(e,t={}){let n=h(),r=k(),o=w(),s=_e(),i=(0,Ne.useMemo)(()=>Gn({all:t.all,manifest:r,canvas:o,canvases:s}),[t.all,o,s,r]),a=Qn(e,t.all?void 0:i),u=(0,Ne.useCallback)(l=>{e&&n.setMetaValue([l,"annotationPageManager","views"],d=>d&&!d[e]?d:{...d||{},[e]:!1})},[e,n]),c=(0,Ne.useCallback)((l,d={})=>{if(!e)return;let g=n.getState(),S=[];if(d?.deselectOthers){let f=Object.keys(g.iiif.entities.AnnotationPage);for(let p of f){let R=Qr(g,p);R&&R.views&&R.views[e]&&S.push(p)}}for(let f of S)u(f);n.setMetaValue([l,"annotationPageManager","views"],f=>f&&f[e]?f:{...f||{},[e]:!0})},[e,u,n]);return{availablePageIds:i,enabledPageIds:a,setPageEnabled:c,setPageDisabled:u}}function Kn(e,t){return y((n,r)=>r.get(e.map(o=>({id:o,type:t}))),[e,t])}var Z=require("react");var ot=ie(require("react"),1),Jn=require("@atlas-viewer/iiif-image-api"),Gr=ot.default.createContext(new Jn.ImageServiceLoader);function it(){return(0,ot.useContext)(Gr)}function Xn(){let e=it(),[t,n]=(0,Z.useState)({}),r=(0,Z.useRef)(!1);return(0,Z.useEffect)(()=>()=>{r.current=!0},[]),[(0,Z.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 oe=require("react");function er(e={}){let t=Ke(),n=w(e.canvasId?{id:e.canvasId}:void 0);return y((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 nr(e,t=[]){let n=h(),r=(0,oe.useMemo)(()=>(0,tr.createPaintingAnnotationsHelper)(n),[]),o=er({enableSingleAnnotation:e?.enableSingleAnnotation}),[s,i]=(0,oe.useState)(e?.defaultChoices||[]),a=(0,oe.useMemo)(()=>r.getPaintables(o,s),[n,o,s,...t]),c={makeChoice:(0,oe.useCallback)((l,{deselectOthers:d=!0,deselect:g=!1}={})=>{if(a.choice){if(a.choice.type!=="single-choice")throw new Error("Complex choice not supported yet");i(S=>{if(g){let p=S.filter(R=>R!==l);if(p.length===0){let R=a.items[0].resource.id;return R?[R]:[]}return p}if(d)return[l];let f=[...S];if(f.length===0&&a.items.length){let p=a.items[0].resource.id;p&&f.push(p)}return S.indexOf(l)!==-1?S:[...S,l]})}},[a.choice])};return[a,c]}var Zr=["model/gltf-binary"];function rr(e,t){let r=t.items[0].resource;return r.format?Zr.indexOf(r.format)===-1?A(`3D format: ${r.format} is unsupported`):{type:"3d-model",model:r}:A("Unknown format")}function or(e,t){if(!e.duration)return A("No duration on canvas");if(t.items.length>1)return A("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:[]}}:A("Audio does not have format"):A("Unknown audio")}var ir=require("@atlas-viewer/iiif-image-api");var bt=require("@iiif/helpers/annotation-targets");function ar(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 A("No resource Identifier");let i;if(s.service){let f=(0,ir.getImageServices)(s);f[0]&&(i=n(f[0],e))}let a={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}},[u,c]=nt(e,o.target);if(!(c.id===e.id||decodeURIComponent(c.id||"")===(e.id||"")))continue;let l=o.resource.width&&o.resource.height?{type:"BoxSelector",spatial:{x:0,y:0,width:o.resource.width,height:o.resource.height}}:void 0,d=o.resource.type==="SpecificResource"?(0,bt.expandTarget)(o.resource):null;if(o.selector){let f=(0,bt.expandTarget)({type:"SpecificResource",source:o.resource,selector:o.selector});f&&(d=f)}let g=d&&d.selector&&(d.selector.type==="BoxSelector"||d.selector.type==="TemporalBoxSelector")?{type:"BoxSelector",spatial:{x:d.selector.spatial.x,y:d.selector.spatial.y,width:d.selector.spatial.width,height:d.selector.spatial.height}}:void 0;i&&!i.id&&(i.id=i["@id"]);let S={id:s.id,type:"Image",annotationId:o.annotationId,width:Number(u||g?s.width:e.width),height:Number(u||g?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:g};r.push(S)}return{type:"images",image:r[0],images:r,choice:t.choice}}function sr(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=>sr(o,t,r))}return t}function ur(e,t){let n=[];return t.items.forEach(r=>{if(r.resource){let[o]=nt(e,r.target);n.push({annotationId:r.annotationId,text:sr(r.resource),target:o})}}),{type:"textual-content",items:n}}var Kr=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function cr(e,t){let n=t.items.filter(a=>a.type==="video"),r=!1;if(e.duration||(r=!0),n.length>1)return A("Only one video source supported");let o=n[0]?.resource,s=!!(o.service||[]).find(a=>(a.profile||"").includes("youtube.com"));if(!s&&r)return A("Video does not have duration");if(!o)return A("Unknown video");if((!o.format||o.format==="text/html")&&!s)return A("Video does not have format");let i={annotationId:t.items[0].annotationId,duration:e.duration,url:o.id,type:"Video",items:[],target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:o.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}};if(s){i.type="VideoYouTube";let a=o.id.match(Kr);if(!a[1])return A("Video is not known youtube video");i.youTubeId=a[1]}return{type:"media",media:i,annotations:{pages:[]}}}function lr({canvas:e,paintables:t,supports:n,loadImageService:r}){if(!e)return console.log("No canvas"),rt;if(t.types.length===0)return n.indexOf("empty")!==-1?Yn(e.width,e.height):(console.log("No paintables"),rt);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?A("Complex timeline not supported"):A("ComplexTimelineStrategy not yet supported");let o=t.types[0];return o==="image"?n.indexOf("images")===-1?A("Image not supported"):ar(e,t,r):o==="Model"||o==="model"?n.indexOf("3d-model")===-1?A("3D not supported"):rr(e,t):o==="textualbody"?n.indexOf("textual-content")===-1?A("Textual content not supported"):ur(e,t):o==="sound"||o==="audio"?n.indexOf("media")===-1?A("Media not supported"):or(e,t):o==="video"?n.indexOf("media")===-1?A("Media not supported"):cr(e,t):rt}function dr(e){let t=k(),n=w(),r=h(),[o,s]=Xn(),{enabledPageIds:i}=Zn(e?.annotationPageManagerId||t?.id||n?.id,{all:!1}),a=Kn(i,"AnnotationPage"),u=e?.strategies||["empty","images","media","textual-content","complex-timeline"],[c,l]=nr(e,[s]),d=(0,It.useMemo)(()=>lr({canvas:n,paintables:c,supports:u,loadImageService:o}),[n,c,r,l.makeChoice]);return(0,It.useMemo)(()=>d.type==="unknown"?[d,jn]:[{...d,annotations:{pages:a}},l],[d,a])}var K=require("react");var mr=require("react"),fr=(e,t=[])=>{let n=h();(0,mr.useEffect)(()=>{e(n)},[n,...t])};var pr=require("@iiif/helpers/thumbnail");function gr(e,t,{canvasId:n,manifestId:r}={}){let o=h(),s=it(),i=(0,K.useMemo)(()=>(0,pr.createThumbnailHelper)(o,{imageServiceLoader:s}),[o,s]),[a,u]=(0,K.useState)(),c=k(r?{id:r}:void 0),l=w(n?{id:n}:void 0),d=l||c,g=(0,K.useRef)(!1);if((0,K.useEffect)(()=>(g.current=!1,()=>{g.current=!0}),[]),!d)throw new Error("Must be called under a manifest or canvas context.");return fr(S=>{i.getBestThumbnailAtSize(d,e,t).then(f=>{f.best&&!g.current&&u(f.best)})},[d]),a}var b=require("react");function Jr(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function Xr(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 eo(e){let t=Math.round(e);return`${Math.floor(t/60)}:${`${t%60}`.padStart(2,"0")}`}function ye(e){let[t,n]=(0,b.useReducer)(Xr,Jr(e.duration)),r=(0,b.useRef)(null),o=(0,b.useRef)(null),s=(0,b.useRef)(null),i=(0,b.useRef)(!1),a=(0,b.useCallback)(()=>{o.current&&r.current&&(o.current.innerHTML=eo(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,b.useCallback)(()=>{r.current&&(n({type:"PLAY_REQUESTED"}),r.current.play().then(()=>{n({type:"PLAY"})}),a())},[a]),c=(0,b.useCallback)(()=>{r.current&&(r.current.duration>0&&r.current.paused?u():l())},[a]),l=(0,b.useCallback)(()=>{r.current&&(r.current.pause(),n({type:"PAUSE"}),a())},[a]),d=(0,b.useCallback)(()=>{r.current&&(r.current.muted=!r.current.muted,n(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),g=(0,b.useCallback)(()=>{r.current&&(r.current.muted=!0,n({type:"MUTE"}))},[]),S=(0,b.useCallback)(()=>{r.current&&(r.current.muted=!1,n({type:"UNMUTE"}))},[]),f=(0,b.useCallback)(x=>{r.current&&(r.current.muted=!1,r.current.volume=x/100,n({type:"SET_VOLUME",volume:x}))},[]),p=(0,b.useCallback)(x=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(x*e.duration,e.duration)),a())},[]),R=(0,b.useCallback)(x=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(x,e.duration)),a())},[]);return(0,b.useEffect)(()=>{let x=setInterval(()=>{a()},350);return()=>clearInterval(x)},[a,e.duration]),(0,b.useEffect)(()=>{let x=()=>{n({type:"FINISHED"})},W=r.current;return W?.addEventListener("ended",x),()=>W?.removeEventListener("ended",x)},[]),[{element:r,currentTime:o,progress:s},t,{play:u,pause:l,playPause:c,mute:g,unmute:S,toggleMute:d,setVolume:f,setDurationPercent:p,setTime:R}]}var ke=require("react"),at=require("react/jsx-runtime"),to=(0,ke.createContext)(null),no=(0,ke.createContext)(null),ro=(0,ke.createContext)(null);function st({actions:e,state:t,children:n,currentTime:r,progress:o,element:s}){return(0,at.jsx)(ro.Provider,{value:{currentTime:r,progress:o,element:s},children:(0,at.jsx)(no.Provider,{value:e,children:(0,at.jsx)(to.Provider,{value:t,children:n})})})}var ct=require("react/jsx-runtime");function wt({media:e,children:t}){let[{element:n,currentTime:r,progress:o},s,i]=ye({duration:e.duration});return(0,ct.jsxs)(st,{state:s,actions:i,currentTime:r,progress:o,element:n,children:[(0,ct.jsx)("audio",{ref:n,src:e.url}),t]})}function ut({media:e,mediaControlsDeps:t,children:n}){return U("portal","audio",wt,{media:e,children:n},[e,...t||[]]),null}var Ee=require("react/jsx-runtime");function Tt({element:e,media:t,playPause:n}){return(0,Ee.jsxs)("div",{className:"video-container",part:"video-container",onClick:n,children:[(0,Ee.jsx)("style",{children:`
1
+ "use strict";var br=Object.create;var De=Object.defineProperty;var Ir=Object.getOwnPropertyDescriptor;var wr=Object.getOwnPropertyNames;var Tr=Object.getPrototypeOf,Mr=Object.prototype.hasOwnProperty;var Vr=(e,t)=>{for(var n in t)De(e,n,{get:t[n],enumerable:!0})},zt=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of wr(t))!Mr.call(e,o)&&o!==n&&De(e,o,{get:()=>t[o],enumerable:!(r=Ir(t,o))||r.enumerable});return e};var ie=(e,t,n)=>(n=e!=null?br(Tr(e)):{},zt(t||!e||!e.__esModule?De(n,"default",{value:e,enumerable:!0}):n,e)),Nr=e=>zt(De({},"__esModule",{value:!0}),e);var lo={};Vr(lo,{CanvasPanel:()=>V});module.exports=Nr(lo);var Oe=require("react");var M=ie(require("react"),1),Ze=require("@atlas-viewer/atlas"),kn=require("react-error-boundary");var te=require("react");var ae=ie(require("react"),1),Ot=require("react/jsx-runtime"),kr={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},Ue=ae.default.createContext(kr),H=()=>(0,ae.useContext)(Ue);function Q({value:e,children:t}){let n=H(),r=(0,ae.useMemo)(()=>({...n,...e}),[e,n]);return(0,Ot.jsx)(Ue.Provider,{value:r,children:t})}var Be=ie(require("react"),1),Ce=require("@iiif/helpers/vault");var pt=require("react/jsx-runtime"),ee=Be.default.createContext({vault:null,setVaultInstance:e=>{}});function se({vault:e,vaultOptions:t,useGlobal:n,resources:r,children:o}){let[i,a]=(0,Be.useState)(()=>e||(n?(0,Ce.globalVault)(t):t?new Ce.Vault(t):new Ce.Vault));return(0,pt.jsx)(ee.Provider,{value:{vault:i,setVaultInstance:a},children:(0,pt.jsx)(Q,{value:r||{},children:o})})}var gn=require("react"),Ye=require("react");var Ft=require("@iiif/helpers/vault"),Ht=require("react");function ue(e){let t=(0,Ht.useContext)(ee);return e||(t&&t.vault?t.vault:(0,Ft.globalVault)())}var G=require("react");function Dt(e,{noCache:t=!1}={}){let n=typeof e=="string"?e:e.id,r=ue(),[o,i]=(0,G.useState)(n),[a,s]=(0,G.useState)(void 0),u=(0,G.useMemo)(()=>r.get(n,{skipSelfReturn:!0})||void 0,[n,r]),[c,l]=(0,G.useState)(u);return(0,G.useEffect)(()=>{(async()=>{try{let d=u&&!t?u:await r.load(n),g=d?d.id||d["@id"]:null;d&&o!==g&&i(g),l(d)}catch(d){s(d)}})()},[n,t]),{isLoaded:!!c,id:o,requestId:n,error:a,resource:c,cached:!!(c&&c===u)}}function Ut(e,t){let{id:n,isLoaded:r,error:o,resource:i,requestId:a,cached:s}=Dt(e,t);return{id:n,isLoaded:r,error:o,manifest:i,requestId:a,cached:s}}var _t=require("react/jsx-runtime");function Bt({manifest:e,children:t}){return(0,_t.jsx)(Q,{value:{manifest:e},children:t})}var qt=require("react/jsx-runtime");function ce({canvas:e,children:t}){return(0,qt.jsx)(Q,{value:{canvas:e},children:t})}var Wt=require("react"),jt=ie(require("react"),1);var $t=require("react"),h=()=>{let{vault:e}=(0,$t.useContext)(ee);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};var _e=require("react");function y(e,t=[]){let n=h(),[r,o]=(0,_e.useState)(()=>e(n.getState(),n));return(0,_e.useEffect)(()=>n.subscribe(i=>e(i,n),i=>{o(i)},!1),t),r}var le=jt.default.createContext([]);function qe(){let e=(0,Wt.useContext)(le);return y(t=>e.map(n=>t.iiif.entities.Canvas[n]).filter(Boolean),[e])}var Yt=require("react");function k(e={},t=[]){let{id:n,selector:r}=e,o=H(),i=h(),a=n||o.manifest,s=y(u=>a?u.iiif.entities.Manifest[a]:void 0,[a]);return(0,Yt.useMemo)(()=>{if(s)return r?r(s):s},[s,r,...t])}var Gt=require("react/jsx-runtime");function Qt({range:e,children:t}){return(0,Gt.jsx)(Q,{value:{range:e},children:t})}function gt(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(...gt(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 Zt(e,t,{disablePaging:n,skipNonPaged:r}={}){let o=t.behavior,i=o.includes("paged"),a=i?!1:o.includes("continuous"),s=i||a?!1:o.includes("individuals"),u=t.type==="Manifest"?t.items:gt(e,t);if(a)return[u,[u.map((f,p)=>p)]];if(s||!i||n)return[u,u.map((f,p)=>[p])];let c=[],l=[],d=()=>{l.length&&(c.push([...l]),l=[])},g=0,S=!1;for(let f=0;f<u.length;f++){let p=e.get(u[f]);if(p.behavior.includes("non-paged")){f===g&&g++,r||(d(),c.push([f]),d());continue}if(f===g||p.behavior.includes("facing-pages")){l.length&&(S=!0),d(),c.push([f]),d();continue}if(l.push(f),S){d(),S=!1;continue}l.length>1&&d()}return l.length&&d(),[u,c]}var D=require("react");var Kt=require("react");function Jt(e={},t=[]){let{id:n,selector:r}=e,o=H(),i=n||o.range,a=y(s=>i?s.iiif.entities.Range[i]:void 0,[i]);return(0,Kt.useMemo)(()=>{if(a)return r?r(a):a},[a,r,...t])}function Xt({startCanvas:e,disablePaging:t}){let n=h(),r=k(),o=Jt(),[i,a]=(0,D.useState)(void 0),s=o||r;if(!s)throw new Error("Nothing selected");let[u,c]=(0,D.useMemo)(()=>Zt(n,s,{disablePaging:t}),[n,s,t]),l=(0,D.useRef)(c);if(l.current!==c){let R=l.current[i][0],x=c.findIndex(j=>j.includes(R));l.current=c,a(x)}let d=(0,D.useCallback)(p=>{let R=c.findIndex(x=>x.includes(p));a(R===-1?0:R)},[u,c]),g=(0,D.useCallback)(p=>{let R=u.findIndex(x=>x.id===p);R!==-1?d(R):a(0)},[u,c]),S=(0,D.useCallback)(()=>{a(p=>p>=c.length-1?p:p+1)},[c]),f=(0,D.useCallback)(()=>{a(p=>p<=0?0:p-1)},[c]);return typeof i>"u"&&(e?g(e):a(0)),{visibleItems:c[i]?.map(p=>u[p].id)||[],cursor:i,items:u,sequence:c,hasPrevious:i>0,hasNext:i<c.length-1,setSequenceIndex:a,setCanvasIndex:d,setCanvasId:g,next:S,previous:f}}var O=require("react");var de=require("react");var vt=require("zustand/vanilla");function U(e,t,n){let r=t.findIndex(a=>a.service.id===e);if(r===-1)return t;let o=[...t],i=n(o[r]);return i===o[r]?t:(o[r]=i,o)}var en=()=>(0,vt.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:U(n.id,t().authItems,o=>({...o,isPending:!0}))})),ht(n.service).then(()=>{$e(r).then(o=>{let i=o.expiresIn,a=Date.now()+i*1e3;e(()=>({authItems:U(n.id,t().authItems,s=>({...s,isLoggedIn:!0,isPending:!1,session:{token:o.accessToken,expires:a}}))}))}).catch(o=>{e(()=>({authItems:U(n.id,t().authItems,i=>({...i,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(a=>a.type==="AuthLogoutService2");if(!r)return;let o=`${r.id}?origin=${rn()}`,i=window.open(o);e(()=>({authItems:U(n.id,t().authItems,a=>({...a,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(s=>s.type==="AuthAccessTokenService2"),i=n;if(t().authItems.find(s=>s.service.id===n.id)){e(()=>({authItems:U(n.id,t().authItems,s=>({...s,instances:s.instances+1}))}));return}if(e(()=>({currentAuth:i.profile==="active"?0:t().currentAuth,authItems:[{id:n.id,type:n.profile,service:n,probeId: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");$e(o).then(s=>{e(()=>({authItems:U(n.id,t().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:U(n.id,t().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:s.message}))}))})}if(n.profile==="kiosk"){if(!o)throw new Error("Token service not found");e(()=>({authItems:U(n.id,t().authItems,s=>({...s,isPending:!0}))})),ht(i).then(()=>{$e(o).then(s=>{e(()=>({authItems:U(n.id,t().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:U(n.id,t().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,error:s.message}))}))})})}n.profile},removeService:(n,r)=>{let o=t().currentAuth===t().authItems.findIndex(a=>a.service.id===n.id),i=t().currentAuth;if(o){let a=t().authItems.find(u=>u.service.id===n.id);a&&a.instances>1||(i=t().authItems.findIndex(c=>c.service.id!==n.id&&c.instances>0))}e(()=>({authItems:U(n.id,t().authItems,a=>({...a,instances:a.instances-1})),currentAuth:i}))}})),tn=(e,t)=>(0,vt.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 i=r().token;try{let a=await fetch(o,{headers:i?{Authorization:`Bearer ${r().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(s=>s.json());if(a.status===200)n({status:"success",shouldDisplayResource:!0,error:null,errorHeading:null,errorNote:null,shouldSubstitute:!1,shouldRedirect:!1});else if(a.status<400&&a.status>=300){if(!a.location)throw new Error("Redirect location not found");n({status:"error",shouldDisplayResource:!1,shouldRedirect:!0,redirectResource:a.location||null})}else if(a.status===401)n({status:"error",shouldDisplayResource:!1,shouldRedirect:!1,shouldSubstitute:!!a.substitute,substituteResource:a.substitute||null,error:"Unauthorized",errorHeading:a.heading||{en:["Unauthorized"]},errorNote:a.note||null});else throw new Error("Unknown error")}catch(a){n({status:"error",error:a.message,errorHeading:{en:["Unknown error"]}})}},setToken(o){n({token:o})}}));function nn(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(i=>i.type==="AuthAccessService2");o[0]&&(n.services.access=o[0])}return n}async function $e(e,{strict:t=!0}={}){return new Promise((n,r)=>{let o=Math.random().toString(36).substring(7),i=`${e.id}?messageId=${o}&origin=${window.location.origin}`,a=c=>{let l=c.data;if(l.messageId===o){if(t&&l.type!=="AuthAccessToken2"){s(),r("Invalid response, expected type=AuthAccessToken2");return}if(!l.accessToken){s(),r("Invalid response, expected accessToken");return}s(),n(l)}},s=()=>window.removeEventListener("message",a),u=document.createElement("iframe");u.src=i,u.style.display="none",document.body.appendChild(u),window.addEventListener("message",a)})}function rn(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 ht(e){let t=`${e.id}?origin=${rn()}`,n=window.open(t);if(!n)throw new Error("Failed to open window");return new Promise((r,o)=>{let i=setInterval(()=>{n.closed&&(clearInterval(i),r())},500)})}var on=require("zustand");function an(e){let t=(0,de.useMemo)(()=>nn(e),[e]),n=sn(t.services.access?.id),r=(0,de.useMemo)(()=>tn(t.services.probe,n),[t.services.probe]),o=(0,on.useStore)(r);return(0,de.useEffect)(()=>{o.status==="unknown"&&!n&&o.probe()},[t.services.probe,o.status]),(0,de.useEffect)(()=>{n&&(o.setToken(n),o.probe())},[n]),[e,o,t.hasAuth]}var We=require("zustand"),Re=require("react/jsx-runtime"),me=(0,O.createContext)(null),Er=(0,O.createContext)(null);Er.displayName="CurrentAuth";var Lr=(0,O.createContext)(null);Lr.displayName="AuthActions";function un({children:e}){let t=(0,O.useMemo)(()=>en(),[]);return(0,Re.jsx)(me.Provider,{value:t,children:e})}function cn(){return!!(0,O.useContext)(me)}function St(){let e=(0,O.useContext)(me);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function zr(){let e=St();return(0,We.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 Or(e){let t=St();return(0,We.useStore)(t,r=>r.authItems.find(o=>o.service.id===e))}function sn(e){let t=St();return(0,We.useStore)(t,r=>r.authItems.find(o=>o.id===e)?.session?.token)}function Fr(e){let t=zr(),n=Or(e.service.id);return(0,O.useEffect)(()=>(t?.addService(e.service,e.probeId),()=>{t?.removeService(e.service,e.probeId)}),[e.service]),n?(n.error||!n.isLoggedIn,e.children):null}function yt(){return null}function ln(e){let[t,n,r]=an(e.resource),o=e.fallbackComponent||yt,i=e.loadingComponent||yt,a=e.errorComponent||yt,s=n.service,u=null;if(!r||!s)return e.children(t);let c=s.service.filter(l=>l.type==="AuthAccessService2");n.status==="error"&&(u=(0,Re.jsx)(a,{resource:e.resource,error:n.error||"",heading:n.errorHeading,note:n.errorNote,extra:e.extra})),(n.status==="unknown"||n.status==="probing")&&(u=(0,Re.jsx)(i,{})),n.status==="success"&&(u=e.children(t));for(let l of c)u=(0,Re.jsx)(Fr,{service:l,probeId:s.id,children:u},l.id);return u}var Pe=require("react");var dn=require("zustand/vanilla"),Hr=e=>e.id||e["@id"];function Dr(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 mn=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?Hr(t):void 0,r=null;return(0,dn.createStore)((o,i)=>({service:t,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!t,hasAutocomplete:t?!!Dr(t):!1,errorMessage:"",search(a,s={}){if(!n)throw new Error("No search service found.");r&&!r.signal.aborted&&r.abort(),r=new AbortController;let u=new URLSearchParams;a.q&&u.set("q",a.q),a.motivation&&u.set("motivation",a.motivation),a.date&&u.set("date",a.date),a.user&&u.set("user",a.user),o({loading:!0}),fetch(`${n}?${u.toString()}`,{signal:r.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...s.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(a){let s=i().resources.find(u=>u["@id"]===a);o({highlight:s})},nextResult(){let a=i().resources,s=i().highlight;if(!s){o({highlight:a[0]||null});return}let u=a.findIndex(c=>c["@id"]===s["@id"]);if(u===-1){o({highlight:a[0]||null});return}o({highlight:a[u+1]||a[0]||null})},previousResult(){let a=i().resources,s=i().highlight;if(!s){o({highlight:a[a.length-1]||null});return}let u=a.findIndex(c=>c["@id"]===s["@id"]);if(u===-1){o({highlight:a[a.length-1]||null});return}if(u===0){o({highlight:a[a.length-1]||null});return}o({highlight:a[u-1]||a[a.length-1]||null})}}))};var Ur=require("zustand");function fn(){let e=k();return e?e.service.find(t=>t.profile==="SearchService1"||t.profile==="http://iiif.io/api/search/1/search"):void 0}var je=require("react/jsx-runtime"),fe=(0,Pe.createContext)(null);fe.displayName="Search";function pn(e){let t=fn();return e.store?(0,je.jsx)(fe.Provider,{value:e.store,children:e.children}):(0,je.jsx)(Br,{service:t,children:e.children})}function Br({service:e,children:t}){let n=(0,Pe.useMemo)(()=>mn(e),[e]);return(0,je.jsx)(fe.Provider,{value:n,children:t})}var E=require("react/jsx-runtime"),be=()=>{},Ie=(0,Ye.createContext)({setCurrentCanvasId:be,setCurrentCanvasIndex:be,nextCanvas:be,previousCanvas:be,items:[],sequence:[],setSequenceIndex:be,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function _r(e){let t=k(),{cursor:n,visibleItems:r,next:o,sequence:i,items:a,setCanvasIndex:s,setCanvasId:u,previous:c,setSequenceIndex:l,hasNext:d,hasPrevious:g}=Xt({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),S=(0,Ye.useMemo)(()=>({sequence:i,items:a,setCurrentCanvasId:u,nextCanvas:o,previousCanvas:c,totalCanvases:a.length,setCurrentCanvasIndex:s,setSequenceIndex:l,currentSequenceIndex:n,hasNext:d,hasPrevious:g}),[i,a,u,o,c,a,s,l,n]);return t?r.length===0?null:(0,E.jsx)(Ie.Provider,{value:S,children:(0,E.jsx)(le.Provider,{value:r,children:(0,E.jsx)(ce,{canvas:r[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,E.jsx)("div",{children:"Sorry, something went wrong."}))}function hn(e){let t=ue(e.vault),n=Ut(e.manifest);if(!n)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,E.jsx)("div",{children:"Sorry, something went wrong."});if(n.error)return(0,E.jsx)("div",{children:n.error.toString()});if(!n.isLoaded)return(0,E.jsx)("div",{children:"Loading..."});let r=(0,E.jsx)(_r,{...e,children:e.children});return(0,E.jsx)(se,{vault:t,children:(0,E.jsx)(Bt,{manifest:n.id,children:(0,E.jsx)(un,{children:(0,E.jsx)(pn,{children:e.rangeId?(0,E.jsx)(Qt,{range:e.rangeId,children:r}):r})})})})}function vn(){return(0,gn.useContext)(Ie)}var pe=require("react/jsx-runtime");function yn(){return{VaultContext:(0,te.useContext)(ee),ResourceContext:(0,te.useContext)(Ue),SimpleViewerReactContext:(0,te.useContext)(Ie),VisibleCanvasReactContext:(0,te.useContext)(le),AuthRContext:(0,te.useContext)(me),SearchReactContext:(0,te.useContext)(fe)}}function Sn(e){return(0,pe.jsx)(se,{vault:e.bridge.VaultContext.vault||void 0,resources:e.bridge.ResourceContext,children:(0,pe.jsx)(le.Provider,{value:e.bridge.VisibleCanvasReactContext,children:(0,pe.jsx)(Ie.Provider,{value:e.bridge.SimpleViewerReactContext,children:(0,pe.jsx)(me.Provider,{value:e.bridge.AuthRContext,children:(0,pe.jsx)(fe.Provider,{value:e.bridge.SearchReactContext,children:e.children})})})})})}var ge=require("react");var $=require("react");var Qe=require("@iiif/helpers/vault/actions");var xn=require("react");function An(){let t=h().getStore();return(0,xn.useMemo)(()=>n=>t.dispatch(n),[t])}function Cn(e){return typeof e!="string"&&e&&e.bindToVault}function Rn(){let e=h(),t=(0,$.useRef)([]),n=An(),r=(0,$.useMemo)(()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);(0,$.useLayoutEffect)(()=>{let s={id:r,type:"AnnotationPage",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],rendering:[],service:[]};n(Qe.entityActions.importEntities({entities:{AnnotationPage:{[s.id]:s}}}))},[r]);let o=y(s=>r&&s.iiif.entities.AnnotationPage[r]||null,[r]),i=(0,$.useCallback)((s,u)=>{if(r){if(Cn(s)){let d=s;d.__vault||d.bindToVault(e),s=typeof d.source=="string"?d.source:d.source.id,t.current[s]=d}else typeof s!="string"&&(s=s.id);let c=e.get({id:r,type:"AnnotationPage"}),l=e.get({id:s,type:"Annotation"});c&&l&&(c.items.find(d=>d.id===l.id)||n(Qe.entityActions.addReference({id:r,type:"AnnotationPage",key:"items",reference:{id:s,type:"Annotation"},index:u})))}},[r]),a=(0,$.useCallback)(s=>{r&&(Cn(s)?s=typeof s.source=="string"?s.source:s.source.id:typeof s!="string"&&(s=s.id),t.current[s]&&t.current[s].beforeRemove(),e.get({id:r,type:"AnnotationPage"})&&n(Qe.entityActions.removeReference({id:r,type:"AnnotationPage",key:"items",reference:{id:s,type:"Annotation"}})))},[r]);return[o,{addAnnotation:i,removeAnnotation:a}]}var wn=require("react/jsx-runtime"),Pn=(0,ge.createContext)(null);function bn(){let e=(0,ge.useContext)(Pn);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function In({children:e}){let[t,{addAnnotation:n,removeAnnotation:r}]=Rn();return(0,wn.jsx)(Pn.Provider,{value:(0,ge.useMemo)(()=>({fullPage:t,addAnnotation:n,removeAnnotation:r}),[t]),children:e})}var he=require("react/jsx-runtime");function Tn({width:e,style:t,height:n,error:r,resetErrorBoundary:o}){return(0,he.jsxs)("div",{style:{width:e,height:n,minHeight:500,...t||{},background:"#f9f9f9"},children:[(0,he.jsx)("h3",{children:"Error occurred"}),(0,he.jsx)("p",{children:r.message}),(0,he.jsx)("button",{onClick:o,children:"Reset"})]})}var Ge=require("react"),we=(0,Ge.createContext)(null);function Mn(){return(0,Ge.useContext)(we)}var ne=require("react"),xt=(0,ne.createContext)(()=>{}),At=(0,ne.createContext)(()=>{});function B(e,t,n,r,o=[]){let i=(0,ne.useContext)(e==="portal"?At:xt);(0,ne.useEffect)(()=>(e!=="none"&&i(t,n,r),()=>{i(t,null)}),[t,e,i,...o])}var ve=require("react");var Vn=require("react");function w(e={},t=[]){let{id:n,selector:r}=e,o=H(),i=n||o.canvas,a=y(s=>i?s.iiif.entities.Canvas[i]:void 0,[i]);return(0,Vn.useMemo)(()=>{if(a)return r?r(a):a},[a,r,...t])}var Ct=(0,ve.createContext)(()=>{});function Nn(e){let t=w(),n=(0,ve.useContext)(Ct);(0,ve.useEffect)(()=>t&&t.id?(n(t.id,e),()=>n(t.id,-1)):()=>{},[t,e])}var I=require("react/jsx-runtime");function En({children:e,errorFallback:t,outerContainerProps:n={},worldScale:r,...o}){let[i,a]=(0,M.useState)(),s=yn(),u=t||Tn,[c,l]=(0,M.useState)({}),d=Object.entries(c),[g,S]=(0,M.useState)({}),f=Object.entries(g),[p,R]=(0,M.useState)({}),x=(0,M.useMemo)(()=>r||Math.max(...Object.values(p)),[p]),j=(0,M.useMemo)(()=>({maxOverZoom:x||1,...o.runtimeOptions||{}}),[x,o.runtimeOptions]),N=(0,M.useCallback)((P,T)=>{R(z=>{if(T===-1){let{[P]:m,...q}=z;return q}return{...z,[P]:T}})},[]),ft=(0,M.useCallback)((P,T,z)=>{l(({[P]:m,...q})=>T?{...q,[P]:{element:T,props:z}}:q)},[]),Fe=(0,M.useCallback)((P,T,z)=>{S(({[P]:m,...q})=>T?{...q,[P]:{element:T,props:z}}:q)},[]);return(0,I.jsxs)(kn.ErrorBoundary,{resetKeys:[],fallbackRender:P=>(0,I.jsx)(u,{...o,...P}),children:[(0,I.jsx)(Ze.AtlasAuto,{...o,containerProps:{style:{position:"relative"},...o.containerProps||{}},htmlChildren:(0,I.jsx)(I.Fragment,{children:d.map(([P,{element:T,props:z}])=>(0,I.jsx)(M.default.Fragment,{children:(0,I.jsx)(T,{...z||{}})},P))}),onCreated:P=>{a(P),o.onCreated&&o.onCreated(P)},runtimeOptions:j,children:(0,I.jsx)(we.Provider,{value:i,children:(0,I.jsx)(Ct.Provider,{value:N,children:(0,I.jsx)(xt.Provider,{value:ft,children:(0,I.jsx)(At.Provider,{value:Fe,children:(0,I.jsx)(Sn,{bridge:s,children:(0,I.jsx)(Ze.ModeContext.Provider,{value:o.mode||"explore",children:(0,I.jsx)(In,{children:e})})})})})})})}),(0,I.jsx)("div",{children:f.map(([P,{element:T,props:z}])=>(0,I.jsx)(M.default.Fragment,{children:(0,I.jsx)(T,{...z||{}})},P))})]})}var Xe=require("@atlas-viewer/atlas");var Rt=require("react"),Ln=require("@iiif/helpers/events");function Ke(e,t){let n=h(),r=(0,Rt.useMemo)(()=>(0,Ln.createEventsHelper)(n),[n]),o=y(()=>e&&e.id?n.getResourceMeta(e.id,"eventManager"):null,[e]);return(0,Rt.useMemo)(()=>e?r.getListenersAsProps(e,t):{},[o,e,n,t])}var zn=require("react"),On=require("@iiif/helpers/styles");function ye(e,t){let n=h(),r=(0,zn.useMemo)(()=>(0,On.createStylesHelper)(n),[n]);return y(()=>{if(!e)return null;let o=r.getAppliedStyles(e.id);return o?t?o[t]:o:void 0},[e,t])}var Dn=require("react");var Fn=require("react");var Hn=require("@iiif/helpers/annotation-targets");function Je(e={},t=[]){let{id:n,selector:r}=e,o=H(),i=h(),a=n||o.annotation,s=y(c=>a?c.iiif.entities.Annotation[a]:void 0,[a]),u=y(c=>s&&s.body?s.body.map(l=>l?l.type==="SpecificResource"?{...l,source:i.get(l)}:l?c.iiif.entities[l.type][l.id]:null:null).filter(Boolean):[],[s]);return(0,Fn.useMemo)(()=>{if(!s)return;let c={...s,body:u,target:(0,Hn.expandTarget)(s.target,{typeMap:i.getState().iiif.mapping})};return r?r(c):c},[s,r,u,...t])}var Un=require("react/jsx-runtime"),et=({id:e,style:t,className:n,interactive:r})=>{let o=Je({id:e}),i=ye(o,"atlas"),a=ye(o,"html"),s=Ke(o,["atlas"]),u=w(),c=(0,Dn.useMemo)(()=>(0,Xe.mergeStyles)(t,i),[t,i]);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,Un.jsx)(Xe.RegionHighlight,{id:o.id,isEditing:!0,region:o.target.selector.spatial,style:c,className:a?.className||n,interactive:!!(a?.href||r),href:a?.href||null,title:a?.title||null,hrefTarget:a?.target||null,onClick:()=>{},...s}):null};var qn=require("react");var Bn=require("react");function _n(e={},t=[]){let{id:n,selector:r}=e,o=H(),i=n||o.annotationPage,a=y(s=>i?s.iiif.entities.AnnotationPage[i]:void 0,[i]);return(0,Bn.useMemo)(()=>{if(a)return r?r(a):a},[a,...t])}var Pt=require("react/jsx-runtime"),Te=({className:e,page:t})=>{let n=_n({id:t.id})||t,r=ye(n,"atlas"),o=ye(n,"html");return y(i=>n.id?i.iiif.entities.AnnotationPage[n.id]:null,[]),(0,Pt.jsx)(qn.Fragment,{children:n.items?.map(i=>(0,Pt.jsx)(et,{id:i.id,style:r,className:o?.className||e},i.id))})};var Ar=require("@iiif/helpers/styles");var Ne=require("react");var Ve=require("@atlas-viewer/atlas");var W=ie(require("react"),1),Z=require("react/jsx-runtime"),qr=W.default.createContext("en"),$r=W.default.createContext({});function Wn(){return W.default.useContext(qr)}function Wr(){return W.default.useContext($r)}function $n(e){return e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):e}function jr({as:e,language:t,children:n,viewingDirection:r,...o}){let i=Wn();return(0,W.useMemo)(()=>$n(i)===$n(t),[i,t])?e?(0,Z.jsx)(e,{...o,children:n}):(0,Z.jsx)("span",{...o,children:n}):e?(0,Z.jsx)(e,{...o,lang:t,dir:r,children:n}):(0,Z.jsx)("span",{...o,lang:t,dir:r,children:n})}function Yr(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 Qr=(e,t=[])=>{let n=Wn();return(0,W.useMemo)(()=>{let r=e();return Yr(n,r,[])},[n,...t])};function bt(e,t){return t?e[t]||t:""}function Gr(e,t,n=`
2
+ `,r={}){let o=Qr(()=>Object.keys(e||{}),[e]);return[(0,W.useMemo)(()=>{if(!e)return bt(r,t)||"";if(typeof e=="string")return bt(r,e);let i=o?e[o]:void 0;return i?typeof i=="string"?i:i.map(a=>bt(r,a)).join(n):""},[o,t,e]),o]}function Me({as:e,defaultText:t,enableDangerouslySetInnerHTML:n,children:r,separator:o,...i}){let a=Wr(),[s,u]=Gr(r,t,o,a);return u?(0,Z.jsx)(jr,{...i,as:e,language:u,title:n?void 0:s,dangerouslySetInnerHTML:n?{__html:s}:void 0,children:n?void 0:s}):e?(0,Z.jsx)(e,{...i,children:s}):(0,Z.jsx)("span",{...i,title:n?void 0:s,dangerouslySetInnerHTML:n?{__html:s}:void 0,children:n?void 0:s})}var F=require("react/jsx-runtime");function Zr({resource:e,heading:t,note:n,extra:r}){return r?(0,F.jsx)(Ve.HTMLPortal,{target:{x:0,y:0,width:r.target?.spatial.width,height:r.target?.spatial.height},backgroundColor:"#333",relative:!0,children:(0,F.jsx)("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:(0,F.jsxs)("div",{children:[(0,F.jsx)(Me,{children:t||"Not authorised"}),n&&(0,F.jsx)("p",{children:(0,F.jsx)(Me,{children:n})}),(0,F.jsx)("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}function jn({image:e,thumbnail:t,crop:n,enableSizes:r}){if(!cn()){let i=e.service,a=i.width||e.width||0,s=i.height||e.height||0;return(0,F.jsx)(Ve.TileSet,{tiles:{id:i.id||i["@id"]||"unknown",height:s,width:a,imageService:i},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:n})}return(0,F.jsx)(ln,{resource:e.service,errorComponent:Zr,extra:e,children:i=>{let a=i.width||e.width||0,s=i.height||e.height||0;return(0,F.jsx)(Ve.TileSet,{tiles:{id:i.id||i["@id"]||"unknown",height:s,width:a,imageService:i},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:n})}},e.id)}var re=require("react/jsx-runtime");function tt({id:e,image:t,thumbnail:n,isStatic:r,x:o=0,y:i=0,children:a,selector:s,onClick:u,enableSizes:c}){let l=(0,Ne.useMemo)(()=>{if(!(!s||s.spatial.x===0&&s.spatial.y===0))return s.spatial},[s]);return(0,re.jsx)("world-object",{x:o+t.target.spatial.x,y:i+t.target.spatial.y,width:t.target.spatial.width,height:t.target.spatial.height,onClick:u,children:t.service?(0,re.jsxs)(Ne.Fragment,{children:[(0,re.jsx)(jn,{image:t,thumbnail:n,crop:l,enableSizes:c}),a]},"service"):(0,re.jsxs)(Ne.Fragment,{children:[(0,re.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}),a]},"no-service")},e+(t.service?"server":"no-service"))}var _=require("react"),Cr=require("@atlas-viewer/atlas");var wt=require("react");var Yn=require("@iiif/helpers");function nt(e,t){let{selector:n,source:r}=(0,Yn.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 Qn={makeChoice:()=>{}},rt={type:"unknown"},A=e=>({type:"unknown",reason:e,annotations:{pages:[]}}),Gn=(e,t)=>({type:"empty",width:e,height:t,annotations:{pages:[]},image:null,images:[]});var ke=require("react");function Kr(e,t){let n=e?.iiif?.meta[t];return n?n.annotationPageManager:null}function Zn(e,t){return y(n=>{let r=[];if(!e)return r;let o=Object.keys(n.iiif.entities.AnnotationPage);for(let i of o)if(!t||t.indexOf(i)!==-1){let a=Kr(n,i);a&&a.views&&a.views[e]&&r.push(i)}return r},[e,t])}function Kn({canvas:e,manifest:t,all:n,canvases:r}){let o=[];if(t)for(let i of t.annotations)o.indexOf(i.id)===-1&&o.push(i.id);if(n){if(r&&r.length)for(let i of r)for(let a of i.annotations)o.indexOf(a.id)===-1&&o.push(a.id)}else if(e)for(let i of e.annotations)o.indexOf(i.id)===-1&&o.push(i.id);return o}function Jr(e,t){let n=e?.iiif?.meta[t];return n?n.annotationPageManager:null}function Jn(e,t={}){let n=h(),r=k(),o=w(),i=qe(),a=(0,ke.useMemo)(()=>Kn({all:t.all,manifest:r,canvas:o,canvases:i}),[t.all,o,i,r]),s=Zn(e,t.all?void 0:a),u=(0,ke.useCallback)(l=>{e&&n.setMetaValue([l,"annotationPageManager","views"],d=>d&&!d[e]?d:{...d||{},[e]:!1})},[e,n]),c=(0,ke.useCallback)((l,d={})=>{if(!e)return;let g=n.getState(),S=[];if(d?.deselectOthers){let f=Object.keys(g.iiif.entities.AnnotationPage);for(let p of f){let R=Jr(g,p);R&&R.views&&R.views[e]&&S.push(p)}}for(let f of S)u(f);n.setMetaValue([l,"annotationPageManager","views"],f=>f&&f[e]?f:{...f||{},[e]:!0})},[e,u,n]);return{availablePageIds:a,enabledPageIds:s,setPageEnabled:c,setPageDisabled:u}}function Xn(e,t){return y((n,r)=>r.get(e.map(o=>({id:o,type:t}))),[e,t])}var K=require("react");var ot=ie(require("react"),1),er=require("@atlas-viewer/iiif-image-api"),Xr=ot.default.createContext(new er.ImageServiceLoader);function it(){return(0,ot.useContext)(Xr)}function tr(){let e=it(),[t,n]=(0,K.useState)({}),r=(0,K.useRef)(!1);return(0,K.useEffect)(()=>()=>{r.current=!0},[]),[(0,K.useCallback)((i,{height:a,width:s})=>{if(i){let u=i.id||i["@id"],c=e.loadServiceSync({id:u,width:i.width||s,height:i.height||a,source:i});c?i=c:t[u]||(r.current||n(l=>({...l,[u]:"loading"})),e.loadService({id:u,width:i.width||s,height:i.height||a}).then(()=>{r.current||n(l=>({...l,[u]:"done"}))}))}return i},[e,t]),t]}var oe=require("react");function nr(e={}){let t=Je(),n=w(e.canvasId?{id:e.canvasId}:void 0);return y((r,o)=>{if(!n)return[];if(t&&e.enableSingleAnnotation)return[t];let i=o.get(n.items),a=[];for(let s of i)a.push(...o.get(s.items));return a},[n])}var rr=require("@iiif/helpers/painting-annotations");function or(e,t=[]){let n=h(),r=(0,oe.useMemo)(()=>(0,rr.createPaintingAnnotationsHelper)(n),[]),o=nr({enableSingleAnnotation:e?.enableSingleAnnotation}),[i,a]=(0,oe.useState)(e?.defaultChoices||[]),s=(0,oe.useMemo)(()=>r.getPaintables(o,i),[n,o,i,...t]),c={makeChoice:(0,oe.useCallback)((l,{deselectOthers:d=!0,deselect:g=!1}={})=>{if(s.choice){if(s.choice.type!=="single-choice")throw new Error("Complex choice not supported yet");a(S=>{if(g){let p=S.filter(R=>R!==l);if(p.length===0){let R=s.items[0].resource.id;return R?[R]:[]}return p}if(d)return[l];let f=[...S];if(f.length===0&&s.items.length){let p=s.items[0].resource.id;p&&f.push(p)}return S.indexOf(l)!==-1?S:[...S,l]})}},[s.choice])};return[s,c]}var eo=["model/gltf-binary"];function ir(e,t){let r=t.items[0].resource;return r.format?eo.indexOf(r.format)===-1?A(`3D format: ${r.format} is unsupported`):{type:"3d-model",model:r}:A("Unknown format")}function ar(e,t){if(!e.duration)return A("No duration on canvas");if(t.items.length>1)return A("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:[]}}:A("Audio does not have format"):A("Unknown audio")}var sr=require("@atlas-viewer/iiif-image-api");var It=require("@iiif/helpers/annotation-targets");function ur(e,t,n){let r=[];for(let o of t.items){let i=o.resource&&o.resource.type==="SpecificResource"?o.resource.source:o.resource;if(!i.id)return A("No resource Identifier");let a;if(i.service){let f=(0,sr.getImageServices)(i);f[0]&&(a=n(f[0],e))}let s={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}},[u,c]=nt(e,o.target);if(!(c.id===e.id||decodeURIComponent(c.id||"")===(e.id||"")))continue;let l=o.resource.width&&o.resource.height?{type:"BoxSelector",spatial:{x:0,y:0,width:o.resource.width,height:o.resource.height}}:void 0,d=o.resource.type==="SpecificResource"?(0,It.expandTarget)(o.resource):null;if(o.selector){let f=(0,It.expandTarget)({type:"SpecificResource",source:o.resource,selector:o.selector});f&&(d=f)}let g=d&&d.selector&&(d.selector.type==="BoxSelector"||d.selector.type==="TemporalBoxSelector")?{type:"BoxSelector",spatial:{x:d.selector.spatial.x,y:d.selector.spatial.y,width:d.selector.spatial.width,height:d.selector.spatial.height}}:void 0;a&&!a.id&&(a.id=a["@id"]);let S={id:i.id,type:"Image",annotationId:o.annotationId,width:Number(u||g?i.width:e.width),height:Number(u||g?i.height:e.height),service:a,sizes:a&&a.sizes?a.sizes:i.width&&i.height?[{width:i.width,height:i.height}]:[],target:u&&u.type!=="PointSelector"?u:s,selector:g};r.push(S)}return{type:"images",image:r[0],images:r,choice:t.choice}}function cr(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=>cr(o,t,r))}return t}function lr(e,t){let n=[];return t.items.forEach(r=>{if(r.resource){let[o]=nt(e,r.target);n.push({annotationId:r.annotationId,text:cr(r.resource),target:o})}}),{type:"textual-content",items:n}}var to=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function dr(e,t){let n=t.items.filter(s=>s.type==="video"),r=!1;if(e.duration||(r=!0),n.length>1)return A("Only one video source supported");let o=n[0]?.resource,i=!!(o.service||[]).find(s=>(s.profile||"").includes("youtube.com"));if(!i&&r)return A("Video does not have duration");if(!o)return A("Unknown video");if((!o.format||o.format==="text/html")&&!i)return A("Video does not have format");let a={annotationId:t.items[0].annotationId,duration:e.duration,url:o.id,type:"Video",items:[],target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:o.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}};if(i){a.type="VideoYouTube";let s=o.id.match(to);if(!s[1])return A("Video is not known youtube video");a.youTubeId=s[1]}return{type:"media",media:a,annotations:{pages:[]}}}function mr({canvas:e,paintables:t,supports:n,loadImageService:r}){if(!e)return rt;if(t.types.length===0)return n.indexOf("empty")!==-1?Gn(e.width,e.height):rt;if(t.types.length!==1)if(t.types.length===2&&t.types.indexOf("text")!==-1)t.types=t.types.filter(i=>i!=="text");else return n.indexOf("complex-timeline")===-1?A("Complex timeline not supported"):A("ComplexTimelineStrategy not yet supported");let o=t.types[0];return o==="image"?n.indexOf("images")===-1?A("Image not supported"):ur(e,t,r):o==="Model"||o==="model"?n.indexOf("3d-model")===-1?A("3D not supported"):ir(e,t):o==="textualbody"?n.indexOf("textual-content")===-1?A("Textual content not supported"):lr(e,t):o==="sound"||o==="audio"?n.indexOf("media")===-1?A("Media not supported"):ar(e,t):o==="video"?n.indexOf("media")===-1?A("Media not supported"):dr(e,t):rt}function fr(e){let t=k(),n=w(),r=h(),[o,i]=tr(),{enabledPageIds:a}=Jn(e?.annotationPageManagerId||t?.id||n?.id,{all:!1}),s=Xn(a,"AnnotationPage"),u=e?.strategies||["empty","images","media","textual-content","complex-timeline"],[c,l]=or(e,[i]),d=(0,wt.useMemo)(()=>mr({canvas:n,paintables:c,supports:u,loadImageService:o}),[n,c,r,l.makeChoice]);return(0,wt.useMemo)(()=>d.type==="unknown"?[d,Qn]:[{...d,annotations:{pages:s}},l],[d,s])}var J=require("react");var pr=require("react"),gr=(e,t=[])=>{let n=h();(0,pr.useEffect)(()=>{e(n)},[n,...t])};var hr=require("@iiif/helpers/thumbnail");function vr(e,t,{canvasId:n,manifestId:r}={}){let o=h(),i=it(),a=(0,J.useMemo)(()=>(0,hr.createThumbnailHelper)(o,{imageServiceLoader:i}),[o,i]),[s,u]=(0,J.useState)(),c=k(r?{id:r}:void 0),l=w(n?{id:n}:void 0),d=l||c,g=(0,J.useRef)(!1);if((0,J.useEffect)(()=>(g.current=!1,()=>{g.current=!0}),[]),!d)throw new Error("Must be called under a manifest or canvas context.");return gr(S=>{a.getBestThumbnailAtSize(d,e,t).then(f=>{f.best&&!g.current&&u(f.best)})},[d]),s}var b=require("react");function no(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function ro(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 oo(e){let t=Math.round(e);return`${Math.floor(t/60)}:${`${t%60}`.padStart(2,"0")}`}function Se(e){let[t,n]=(0,b.useReducer)(ro,no(e.duration)),r=(0,b.useRef)(null),o=(0,b.useRef)(null),i=(0,b.useRef)(null),a=(0,b.useRef)(!1),s=(0,b.useCallback)(()=>{o.current&&r.current&&(o.current.innerHTML=oo(r.current.currentTime),i.current&&(i.current.style.width=`${r.current.currentTime/e.duration*100}%`),a.current!==r.current.muted&&(a.current=r.current.muted,n(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"})))},[e.duration]),u=(0,b.useCallback)(()=>{r.current&&(n({type:"PLAY_REQUESTED"}),r.current.play().then(()=>{n({type:"PLAY"})}),s())},[s]),c=(0,b.useCallback)(()=>{r.current&&(r.current.duration>0&&r.current.paused?u():l())},[s]),l=(0,b.useCallback)(()=>{r.current&&(r.current.pause(),n({type:"PAUSE"}),s())},[s]),d=(0,b.useCallback)(()=>{r.current&&(r.current.muted=!r.current.muted,n(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),g=(0,b.useCallback)(()=>{r.current&&(r.current.muted=!0,n({type:"MUTE"}))},[]),S=(0,b.useCallback)(()=>{r.current&&(r.current.muted=!1,n({type:"UNMUTE"}))},[]),f=(0,b.useCallback)(x=>{r.current&&(r.current.muted=!1,r.current.volume=x/100,n({type:"SET_VOLUME",volume:x}))},[]),p=(0,b.useCallback)(x=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(x*e.duration,e.duration)),s())},[]),R=(0,b.useCallback)(x=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(x,e.duration)),s())},[]);return(0,b.useEffect)(()=>{let x=setInterval(()=>{s()},350);return()=>clearInterval(x)},[s,e.duration]),(0,b.useEffect)(()=>{let x=()=>{n({type:"FINISHED"})},j=r.current;return j?.addEventListener("ended",x),()=>j?.removeEventListener("ended",x)},[]),[{element:r,currentTime:o,progress:i},t,{play:u,pause:l,playPause:c,mute:g,unmute:S,toggleMute:d,setVolume:f,setDurationPercent:p,setTime:R}]}var Ee=require("react"),at=require("react/jsx-runtime"),io=(0,Ee.createContext)(null),ao=(0,Ee.createContext)(null),so=(0,Ee.createContext)(null);function st({actions:e,state:t,children:n,currentTime:r,progress:o,element:i}){return(0,at.jsx)(so.Provider,{value:{currentTime:r,progress:o,element:i},children:(0,at.jsx)(ao.Provider,{value:e,children:(0,at.jsx)(io.Provider,{value:t,children:n})})})}var ct=require("react/jsx-runtime");function Tt({media:e,children:t}){let[{element:n,currentTime:r,progress:o},i,a]=Se({duration:e.duration});return(0,ct.jsxs)(st,{state:i,actions:a,currentTime:r,progress:o,element:n,children:[(0,ct.jsx)("audio",{ref:n,src:e.url}),t]})}function ut({media:e,mediaControlsDeps:t,children:n}){return B("portal","audio",Tt,{media:e,children:n},[e,...t||[]]),null}var Le=require("react/jsx-runtime");function Mt({element:e,media:t,playPause:n}){return(0,Le.jsxs)("div",{className:"video-container",part:"video-container",onClick:n,children:[(0,Le.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,Ee.jsx)("video",{ref:e,src:t.url,style:{width:"100%",objectFit:"contain"}})]})}function lt({media:e,mediaControlsDeps:t,children:n}){let[{element:r,currentTime:o,progress:s},i,a]=ye({duration:e.duration});return U("overlay","video-element",Tt,{element:r,media:e,playPause:a.playPause}),U("portal","custom-controls",st,{state:i,actions:a,currentTime:o,progress:s,element:r,children:n},[o,i,e,...t||[]]),null}var J=require("react/jsx-runtime");function Mt({model:e}){return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)("style",{children:`
15
+ `}),(0,Le.jsx)("video",{ref:e,src:t.url,style:{width:"100%",objectFit:"contain"}})]})}function lt({media:e,mediaControlsDeps:t,children:n}){let[{element:r,currentTime:o,progress:i},a,s]=Se({duration:e.duration});return B("overlay","video-element",Mt,{element:r,media:e,playPause:s.playPause}),B("portal","custom-controls",st,{state:a,actions:s,currentTime:o,progress:i,element:r,children:n},[o,a,e,...t||[]]),null}var X=require("react/jsx-runtime");function Vt({model:e}){return(0,X.jsxs)(X.Fragment,{children:[(0,X.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,J.jsx)("div",{className:"model-container",children:(0,J.jsx)("model-viewer",{"interaction-prompt":"none",style:{width:"100%",height:"100%"},"camera-controls":"","ar-status":"not-presenting",src:e.id})})]})}function dt({model:e,name:t}){return U("overlay",`model-${t}`,Mt,{model:e},[e]),null}var hr=require("react/jsx-runtime");function mt({style:e}){let t=w();return!t||!t.height||!t.width?null:(0,hr.jsx)("box",{interactive:!1,target:{x:0,y:0,width:Number(t.width),height:Number(t.height)},style:e})}var vr=require("react"),Le=require("react/jsx-runtime");function oo({element:e,media:t,playPause:n}){let r=(0,vr.useRef)(null);return t.youTubeId?(0,Le.jsxs)("div",{className:"video-container",part:"video-container",onClick:n,children:[(0,Le.jsx)("style",{children:`
28
+ `}),(0,X.jsx)("div",{className:"model-container",children:(0,X.jsx)("model-viewer",{"interaction-prompt":"none",style:{width:"100%",height:"100%"},"camera-controls":"","ar-status":"not-presenting",src:e.id})})]})}function dt({model:e,name:t}){return B("overlay",`model-${t}`,Vt,{model:e},[e]),null}var yr=require("react/jsx-runtime");function mt({style:e}){let t=w();return!t||!t.height||!t.width?null:(0,yr.jsx)("box",{interactive:!1,target:{x:0,y:0,width:Number(t.width),height:Number(t.height)},style:e})}var Sr=require("react"),ze=require("react/jsx-runtime");function uo({element:e,media:t,playPause:n}){let r=(0,Sr.useRef)(null);return t.youTubeId?(0,ze.jsxs)("div",{className:"video-container",part:"video-container",onClick:n,children:[(0,ze.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,Le.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 yr({media:e,mediaControlsDeps:t,children:n}){let[{element:r,currentTime:o,progress:s},i,a]=ye({duration:e.duration});return U("overlay","video-element",oo,{element:r,media:e,playPause:a.playPause}),null}var v=require("react/jsx-runtime");function Vt({x:e,y:t,onChoiceChange:n,registerActions:r,defaultChoices:o,isStatic:s,renderViewerControls:i,renderMediaControls:a,viewControlsDeps:u,mediaControlsDeps:c,strategies:l,throwOnUnknown:d,backgroundStyle:g,alwaysShowBackground:S,keepCanvasScale:f=!1,enableSizes:p=!1,enableYouTube:R=!0,onClickPaintingAnnotation:x,children:W}){let N=w(),ft=Ze(N,["deep-zoom"]),[Oe]=Rn(),P=wn(),T=h(),z=(0,_.useMemo)(()=>(0,Sr.createStylesHelper)(T),[T]),[m,q]=dr({strategies:l||["images"],defaultChoices:o?.map(({id:C})=>C)}),Nt=m.type==="images"?m.choice:void 0,Ar=(0,_.useMemo)(()=>f?1:Math.max(1,...m.type==="images"?m.images.map(C=>(C.width||0)/C.target?.spatial.width):[]),[f,m]);Mn(Ar),(0,_.useEffect)(()=>{r&&r(q)},[m.annotations]),(0,_.useEffect)(()=>{if(o)for(let C of o)typeof C.opacity<"u"&&z.applyStyles({id:C.id},"atlas",{opacity:C.opacity})},[o]),(0,_.useLayoutEffect)(()=>{n&&n(Nt)},[Nt]),U(P&&(m.type==="images"||m.type==="empty"||m.type==="textual-content"&&i)?"overlay":"none",`canvas-portal-controls-${N?.id}`,we.Provider,i?{value:P||null,children:i(m)}:{},[N,P,m,...u||[]]);let j=gr({maxWidth:256,maxHeight:256});if(!N)return null;let kt=N.accompanyingCanvas,Se=j&&j.type==="fixed"?(0,v.jsx)("world-object",{height:N.height,width:N.width,x:e,y:t,children:(0,v.jsx)("world-image",{uri:j.id,target:{x:0,y:0,width:N.width,height:N.height},display:j.width&&j.height?{width:j.width,height:j.height}:void 0,crop:void 0})}):null;if(m.type==="unknown"){if(Se)return Se;if(d)throw new Error(m.reason||"Unknown image strategy");return null}let Et=(0,v.jsxs)(_.Fragment,{children:[Oe?(0,v.jsx)(Te,{page:Oe}):null,m.annotations&&m.annotations.pages?m.annotations.pages.map(C=>(0,v.jsx)(Te,{page:C},C.id)):null,W]}),Cr=m.type==="images"?m.images.length:0;return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)("world-object",{height:N.height,width:N.width,x:e,y:t,...ft,children:[m.type==="empty"||S?(0,v.jsx)(mt,{style:g}):null,m.type==="textual-content"?m.items.map((C,Fe)=>(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(xr.HTMLPortal,{onClick:x?xe=>{xe.stopPropagation(),x(C.annotationId,C,xe)}:void 0,target:C.target?.spatial||void 0,children:(0,v.jsx)("div",{"data-textual-content":!0,children:(0,v.jsx)(Me,{enableDangerouslySetInnerHTML:!0,children:C.text})})},Fe),Et]})):null,m.type==="images"?(0,v.jsxs)(v.Fragment,{children:[m.images.map((C,Fe)=>(0,v.jsx)(tt,{isStatic:s,image:C,id:C.id,thumbnail:Fe===0?j:void 0,selector:C.selector,enableSizes:p,onClick:x?xe=>{xe.stopPropagation(),x(C.annotationId,C,xe)}:void 0},C.id+Fe)),Et]}):null,m.type==="3d-model"?(0,v.jsx)(dt,{model:m.model}):null,m.type==="media"?(0,v.jsx)(v.Fragment,{children:m.media.type==="Sound"?(0,v.jsxs)(ut,{media:m.media,mediaControlsDeps:c,children:[Se,a?a(m):null]}):m.media.type==="Video"?(0,v.jsxs)(lt,{media:m.media,mediaControlsDeps:c,children:[Se,a?a(m):null]}):m.media.type==="VideoYouTube"&&R?(0,v.jsxs)(yr,{media:m.media,mediaControlsDeps:c,children:[Se,a?a(m):null]}):null}):null]},`${N.id}/${m.type}/${Cr}`),m.type==="media"&&m.media.type==="Sound"&&kt?(0,v.jsx)(ce,{canvas:kt.id,children:(0,v.jsx)(Vt,{renderViewerControls:i})}):null]})}var L=require("react/jsx-runtime"),io=(0,ze.forwardRef)(function(t,n){let r=k(),o=_e(),s=gn(),{ViewerControls:i,MediaControls:a}=t.components||{};if((0,ze.useImperativeHandle)(n,()=>s,[s]),!r)return(0,L.jsx)("div",{});let u=0;return(0,L.jsxs)(L.Fragment,{children:[t.header,(0,L.jsx)(V.Viewer,{height:t.height,mode:t.mode,children:o.map((c,l)=>{let d=u;return u+=c.width+(t.spacing||0),(0,L.jsx)(ce,{canvas:c.id,children:(0,L.jsx)(V.RenderCanvas,{strategies:["3d-model","media","images","empty","textual-content"],renderViewerControls:l===0&&i?()=>(0,L.jsx)(i,{}):void 0,renderMediaControls:l===0&&a?()=>(0,L.jsx)(a,{}):void 0,x:d,...t.canvasProps||{},children:t.annotations},c.id)},c.id)})},t.reuseAtlas?"":s.currentSequenceIndex),t.children]})}),V=(0,ze.forwardRef)(function({children:t,height:n,annotations:r,canvasProps:o,spacing:s,header:i,components:a,mode:u,reuseAtlas:c,...l},d){let g=ue();return(0,L.jsx)(se,{vault:g,children:(0,L.jsx)(pn,{...l,children:(0,L.jsx)(io,{ref:d,height:n,components:a,spacing:s,canvasProps:o,annotations:r,header:i,mode:u,reuseAtlas:c,children:t})})})});V.RenderImage=tt;V.RenderCanvas=Vt;V.RenderAnnotationPage=Te;V.RenderAnnotation=Xe;V.Viewer=Nn;V.CanvasBackground=mt;V.Audio=ut;V.Video=lt;V.Model=dt;V.AudioHTML=wt;V.VideoHTML=Tt;V.ModelHTML=Mt;
46
+ `}),(0,ze.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 xr({media:e,mediaControlsDeps:t,children:n}){let[{element:r,currentTime:o,progress:i},a,s]=Se({duration:e.duration});return B("overlay","video-element",uo,{element:r,media:e,playPause:s.playPause}),null}var v=require("react/jsx-runtime");function Nt({x:e,y:t,onChoiceChange:n,registerActions:r,defaultChoices:o,isStatic:i,renderViewerControls:a,renderMediaControls:s,viewControlsDeps:u,mediaControlsDeps:c,strategies:l,throwOnUnknown:d,backgroundStyle:g,alwaysShowBackground:S,keepCanvasScale:f=!1,enableSizes:p=!1,enableYouTube:R=!0,onClickPaintingAnnotation:x,children:j}){let N=w(),ft=Ke(N,["deep-zoom"]),[Fe]=bn(),P=Mn(),T=h(),z=(0,_.useMemo)(()=>(0,Ar.createStylesHelper)(T),[T]),[m,q]=fr({strategies:l||["images"],defaultChoices:o?.map(({id:C})=>C)}),kt=m.type==="images"?m.choice:void 0,Rr=(0,_.useMemo)(()=>f?1:Math.max(1,...m.type==="images"?m.images.map(C=>(C.width||0)/C.target?.spatial.width):[]),[f,m]);Nn(Rr),(0,_.useEffect)(()=>{r&&r(q)},[m.annotations]),(0,_.useEffect)(()=>{if(o)for(let C of o)typeof C.opacity<"u"&&z.applyStyles({id:C.id},"atlas",{opacity:C.opacity})},[o]),(0,_.useLayoutEffect)(()=>{n&&n(kt)},[kt]),B(P&&(m.type==="images"||m.type==="empty"||m.type==="textual-content"&&a)?"overlay":"none",`canvas-portal-controls-${N?.id}`,we.Provider,a?{value:P||null,children:a(m)}:{},[N,P,m,...u||[]]);let Y=vr({maxWidth:256,maxHeight:256});if(!N)return null;let Et=N.accompanyingCanvas,xe=Y&&Y.type==="fixed"?(0,v.jsx)("world-object",{height:N.height,width:N.width,x:e,y:t,children:(0,v.jsx)("world-image",{uri:Y.id,target:{x:0,y:0,width:N.width,height:N.height},display:Y.width&&Y.height?{width:Y.width,height:Y.height}:void 0,crop:void 0})}):null;if(m.type==="unknown"){if(xe)return xe;if(d)throw new Error(m.reason||"Unknown image strategy");return null}let Lt=(0,v.jsxs)(_.Fragment,{children:[Fe?(0,v.jsx)(Te,{page:Fe}):null,m.annotations&&m.annotations.pages?m.annotations.pages.map(C=>(0,v.jsx)(Te,{page:C},C.id)):null,j]}),Pr=m.type==="images"?m.images.length:0;return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)("world-object",{height:N.height,width:N.width,x:e,y:t,...ft,children:[m.type==="empty"||S?(0,v.jsx)(mt,{style:g}):null,m.type==="textual-content"?m.items.map((C,He)=>(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(Cr.HTMLPortal,{onClick:x?Ae=>{Ae.stopPropagation(),x(C.annotationId,C,Ae)}:void 0,target:C.target?.spatial||void 0,children:(0,v.jsx)("div",{"data-textual-content":!0,children:(0,v.jsx)(Me,{enableDangerouslySetInnerHTML:!0,children:C.text})})},He),Lt]})):null,m.type==="images"?(0,v.jsxs)(v.Fragment,{children:[m.images.map((C,He)=>(0,v.jsx)(tt,{isStatic:i,image:C,id:C.id,thumbnail:He===0?Y:void 0,selector:C.selector,enableSizes:p,onClick:x?Ae=>{Ae.stopPropagation(),x(C.annotationId,C,Ae)}:void 0},C.id+He)),Lt]}):null,m.type==="3d-model"?(0,v.jsx)(dt,{model:m.model}):null,m.type==="media"?(0,v.jsx)(v.Fragment,{children:m.media.type==="Sound"?(0,v.jsxs)(ut,{media:m.media,mediaControlsDeps:c,children:[xe,s?s(m):null]}):m.media.type==="Video"?(0,v.jsxs)(lt,{media:m.media,mediaControlsDeps:c,children:[xe,s?s(m):null]}):m.media.type==="VideoYouTube"&&R?(0,v.jsxs)(xr,{media:m.media,mediaControlsDeps:c,children:[xe,s?s(m):null]}):null}):null]},`${N.id}/${m.type}/${Pr}`),m.type==="media"&&m.media.type==="Sound"&&Et?(0,v.jsx)(ce,{canvas:Et.id,children:(0,v.jsx)(Nt,{renderViewerControls:a})}):null]})}var L=require("react/jsx-runtime"),co=(0,Oe.forwardRef)(function(t,n){let r=k(),o=qe(),i=vn(),{ViewerControls:a,MediaControls:s}=t.components||{};if((0,Oe.useImperativeHandle)(n,()=>i,[i]),!r)return(0,L.jsx)("div",{});let u=0;return(0,L.jsxs)(L.Fragment,{children:[t.header,(0,L.jsx)(V.Viewer,{height:t.height,mode:t.mode,children:o.map((c,l)=>{let d=u;return u+=c.width+(t.spacing||0),(0,L.jsx)(ce,{canvas:c.id,children:(0,L.jsx)(V.RenderCanvas,{strategies:["3d-model","media","images","empty","textual-content"],renderViewerControls:l===0&&a?()=>(0,L.jsx)(a,{}):void 0,renderMediaControls:l===0&&s?()=>(0,L.jsx)(s,{}):void 0,x:d,...t.canvasProps||{},children:t.annotations},c.id)},c.id)})},t.reuseAtlas?"":i.currentSequenceIndex),t.children]})}),V=(0,Oe.forwardRef)(function({children:t,height:n,annotations:r,canvasProps:o,spacing:i,header:a,components:s,mode:u,reuseAtlas:c,...l},d){let g=ue();return(0,L.jsx)(se,{vault:g,children:(0,L.jsx)(hn,{...l,children:(0,L.jsx)(co,{ref:d,height:n,components:s,spacing:i,canvasProps:o,annotations:r,header:a,mode:u,reuseAtlas:c,children:t})})})});V.RenderImage=tt;V.RenderCanvas=Nt;V.RenderAnnotationPage=Te;V.RenderAnnotation=et;V.Viewer=En;V.CanvasBackground=mt;V.Audio=ut;V.Video=lt;V.Model=dt;V.AudioHTML=Tt;V.VideoHTML=Mt;V.ModelHTML=Vt;
@@ -1 +1 @@
1
- import{Ja as a}from"./chunk-HEVA2EDS.js";import"./chunk-YSH2CIKG.js";export{a as CanvasPanel};
1
+ import{Ma as a}from"./chunk-K3CE2M2P.js";import"./chunk-DXFXJCXN.js";export{a as CanvasPanel};
@@ -0,0 +1 @@
1
+ import{expandTarget as w}from"@iiif/helpers";function W(e){return e.type==="SpecificResource"?[e.source,{selector:e.selector}]:[e,{selector:null}]}function c(e,r){let{selector:o,source:i}=w(r);if(i.id!==e.id)return[null,i];let t={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}};return[o?o.type==="TemporalSelector"?{type:"TemporalBoxSelector",temporal:o.temporal,spatial:t.spatial}:o:null,i]}var k={makeChoice:()=>{}},l={type:"unknown"},n=e=>({type:"unknown",reason:e,annotations:{pages:[]}}),y=(e,r)=>({type:"empty",width:e,height:r,annotations:{pages:[]},image:null,images:[]});var P=["model/gltf-binary"];function S(e,r){let i=r.items[0].resource;return i.format?P.indexOf(i.format)===-1?n(`3D format: ${i.format} is unsupported`):{type:"3d-model",model:i}:n("Unknown format")}import{getImageServices as b}from"@atlas-viewer/iiif-image-api";import{expandTarget as h}from"@iiif/helpers/annotation-targets";function x(e,r,o){let i=[];for(let t of r.items){let a=t.resource&&t.resource.type==="SpecificResource"?t.resource.source:t.resource;if(!a.id)return n("No resource Identifier");let s;if(a.service){let u=b(a);u[0]&&(s=o(u[0],e))}let p={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}},[d,f]=c(e,t.target);if(!(f.id===e.id||decodeURIComponent(f.id||"")===(e.id||"")))continue;let z=t.resource.width&&t.resource.height?{type:"BoxSelector",spatial:{x:0,y:0,width:t.resource.width,height:t.resource.height}}:void 0,m=t.resource.type==="SpecificResource"?h(t.resource):null;if(t.selector){let u=h({type:"SpecificResource",source:t.resource,selector:t.selector});u&&(m=u)}let g=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;s&&!s.id&&(s.id=s["@id"]);let v={id:a.id,type:"Image",annotationId:t.annotationId,width:Number(d||g?a.width:e.width),height:Number(d||g?a.height:e.height),service:s,sizes:s&&s.sizes?s.sizes:a.width&&a.height?[{width:a.width,height:a.height}]:[],target:d&&d.type!=="PointSelector"?d:p,selector:g};i.push(v)}return{type:"images",image:i[0],images:i,choice:r.choice}}function T(e,r={},o){let i=e.language||o||"none";switch(e.type){case"TextualBody":{typeof e.value<"u"&&(r[i]=e.value);break}case"List":case"Composite":case"Choice":e.items&&e.items.forEach(t=>T(t,r,i))}return r}function I(e,r){let o=[];return r.items.forEach(i=>{if(i.resource){let[t]=c(e,i.target);o.push({annotationId:i.annotationId,text:T(i.resource),target:t})}}),{type:"textual-content",items:o}}var N=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function C(e,r){let o=r.items.filter(p=>p.type==="video"),i=!1;if(e.duration||(i=!0),o.length>1)return n("Only one video source supported");let t=o[0]?.resource,a=!!(t.service||[]).find(p=>(p.profile||"").includes("youtube.com"));if(!a&&i)return n("Video does not have duration");if(!t)return n("Unknown video");if((!t.format||t.format==="text/html")&&!a)return n("Video does not have format");let s={annotationId:r.items[0].annotationId,duration:e.duration,url:t.id,type:"Video",items:[],target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:t.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}};if(a){s.type="VideoYouTube";let p=t.id.match(N);if(!p[1])return n("Video is not known youtube video");s.youTubeId=p[1]}return{type:"media",media:s,annotations:{pages:[]}}}function R(e,r){if(!e.duration)return n("No duration on canvas");if(r.items.length>1)return n("Only one audio source supported");let o=r.items[0]?.resource;return o?o.format?{type:"media",media:{annotationId:r.items[0].annotationId,duration:e.duration,url:o.id,type:"Sound",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:o.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},annotations:{pages:[]}}:n("Audio does not have format"):n("Unknown audio")}function te({canvas:e,paintables:r,supports:o,loadImageService:i}){if(!e)return l;if(r.types.length===0)return o.indexOf("empty")!==-1?y(e.width,e.height):l;if(r.types.length!==1)if(r.types.length===2&&r.types.indexOf("text")!==-1)r.types=r.types.filter(a=>a!=="text");else return o.indexOf("complex-timeline")===-1?n("Complex timeline not supported"):n("ComplexTimelineStrategy not yet supported");let t=r.types[0];return t==="image"?o.indexOf("images")===-1?n("Image not supported"):x(e,r,i):t==="Model"||t==="model"?o.indexOf("3d-model")===-1?n("3D not supported"):S(e,r):t==="textualbody"?o.indexOf("textual-content")===-1?n("Textual content not supported"):I(e,r):t==="sound"||t==="audio"?o.indexOf("media")===-1?n("Media not supported"):R(e,r):t==="video"?o.indexOf("media")===-1?n("Media not supported"):C(e,r):l}export{W as a,c as b,k as c,l as d,n as e,y as f,S as g,x as h,I as i,C as j,te as k};
@@ -0,0 +1,48 @@
1
+ import{c as dt,k as ft}from"./chunk-DXFXJCXN.js";import{forwardRef as On,useImperativeHandle as Jo}from"react";import Jt,{useCallback as Ze,useMemo as Xt,useState as Ce}from"react";import{AtlasAuto as jr,ModeContext as Yr}from"@atlas-viewer/atlas";import{ErrorBoundary as Qr}from"react-error-boundary";import{useContext as re}from"react";import Dn,{useContext as Un,useMemo as _n}from"react";import{jsx as Bn}from"react/jsx-runtime";var qn={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},Se=Dn.createContext(qn),k=()=>Un(Se);function q({value:e,children:n}){let t=k(),r=_n(()=>({...t,...e}),[e,t]);return Bn(Se.Provider,{value:r,children:n})}import $n,{useState as jn}from"react";import{Vault as mt,globalVault as Yn}from"@iiif/helpers/vault";import{jsx as pt}from"react/jsx-runtime";var $=$n.createContext({vault:null,setVaultInstance:e=>{}});function G({vault:e,vaultOptions:n,useGlobal:t,resources:r,children:o}){let[i,a]=jn(()=>e||(t?Yn(n):n?new mt(n):new mt));return pt($.Provider,{value:{vault:i,setVaultInstance:a},children:pt(q,{value:r||{},children:o})})}import{useContext as Pr}from"react";import{createContext as Rr,useMemo as Ir}from"react";import{globalVault as Qn}from"@iiif/helpers/vault";import{useContext as Wn}from"react";function Z(e){let n=Wn($);return e||(n&&n.vault?n.vault:Qn())}import{useEffect as Gn,useMemo as Zn,useState as Fe}from"react";function gt(e,{noCache:n=!1}={}){let t=typeof e=="string"?e:e.id,r=Z(),[o,i]=Fe(t),[a,s]=Fe(void 0),u=Zn(()=>r.get(t,{skipSelfReturn:!0})||void 0,[t,r]),[c,l]=Fe(u);return Gn(()=>{(async()=>{try{let f=u&&!n?u:await r.load(t),d=f?f.id||f["@id"]:null;f&&o!==d&&i(d),l(f)}catch(f){s(f)}})()},[t,n]),{isLoaded:!!c,id:o,requestId:t,error:a,resource:c,cached:!!(c&&c===u)}}function ht(e,n){let{id:t,isLoaded:r,error:o,resource:i,requestId:a,cached:s}=gt(e,n);return{id:t,isLoaded:r,error:o,manifest:i,requestId:a,cached:s}}import{jsx as Kn}from"react/jsx-runtime";function vt({manifest:e,children:n}){return Kn(q,{value:{manifest:e},children:n})}import{jsx as Jn}from"react/jsx-runtime";function K({canvas:e,children:n}){return Jn(q,{value:{canvas:e},children:n})}import{useContext as nr}from"react";import rr from"react";import{useContext as Xn}from"react";var y=()=>{let{vault:e}=Xn($);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};import{useEffect as er,useState as tr}from"react";function S(e,n=[]){let t=y(),[r,o]=tr(()=>e(t.getState(),t));return er(()=>t.subscribe(i=>e(i,t),i=>{o(i)},!1),n),r}var J=rr.createContext([]);function Ae(){let e=nr(J);return S(n=>e.map(t=>n.iiif.entities.Canvas[t]).filter(Boolean),[e])}import{useMemo as or}from"react";function w(e={},n=[]){let{id:t,selector:r}=e,o=k(),i=y(),a=t||o.manifest,s=S(u=>a?u.iiif.entities.Manifest[a]:void 0,[a]);return or(()=>{if(s)return r?r(s):s},[s,r,...n])}import{jsx as ir}from"react/jsx-runtime";function yt({range:e,children:n}){return ir(q,{value:{range:e},children:n})}function ar(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=ar(e,e.get(t));if(r)return r}}return null}function He(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(...He(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 Zi(e,n,t){for(let r of n.structures){let o=St(e,e.get(r),t);if(o)return o}return null}function St(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 i=St(e,e.get(r),t);if(i)return i}}return null}function Xi(e,n,t,r=!1){let o=n.behavior,i=t?e.get(t):null;if(!i)return[];let a=i.behavior,s=r?!1:o.includes("paged"),u=s?!1:o.includes("continuous"),c=s||u?!1:o.includes("individuals"),l=a.includes("facing-pages"),f=a.includes("non-paged");if(l||f||c||r)return[{id:i.id,type:"Canvas"}];let[d,v]=De(e,n);if(u)return d;let m=d.findIndex(p=>p.id===t);if(m===-1)return[];for(let p of v)if(p.includes(m))return p.map(g=>d[g]);return[{id:i.id,type:"Canvas"}]}function De(e,n,{disablePaging:t,skipNonPaged:r}={}){let o=n.behavior,i=o.includes("paged"),a=i?!1:o.includes("continuous"),s=i||a?!1:o.includes("individuals"),u=n.type==="Manifest"?n.items:He(e,n);if(a)return[u,[u.map((m,p)=>p)]];if(s||!i||t)return[u,u.map((m,p)=>[p])];let c=[],l=[],f=()=>{l.length&&(c.push([...l]),l=[])},d=0,v=!1;for(let m=0;m<u.length;m++){let p=e.get(u[m]);if(p.behavior.includes("non-paged")){m===d&&d++,r||(f(),c.push([m]),f());continue}if(m===d||p.behavior.includes("facing-pages")){l.length&&(v=!0),f(),c.push([m]),f();continue}if(l.push(m),v){f(),v=!1;continue}l.length>1&&f()}return l.length&&f(),[u,c]}import{useCallback as xe,useMemo as ur,useRef as cr,useState as lr}from"react";import{useMemo as sr}from"react";function At(e={},n=[]){let{id:t,selector:r}=e,o=k(),i=t||o.range,a=S(s=>i?s.iiif.entities.Range[i]:void 0,[i]);return sr(()=>{if(a)return r?r(a):a},[a,r,...n])}function xt({startCanvas:e,disablePaging:n}){let t=y(),r=w(),o=At(),[i,a]=lr(void 0),s=o||r;if(!s)throw new Error("Nothing selected");let[u,c]=ur(()=>De(t,s,{disablePaging:n}),[t,s,n]),l=cr(c);if(l.current!==c){let g=l.current[i][0],A=c.findIndex(U=>U.includes(g));l.current=c,a(A)}let f=xe(p=>{let g=c.findIndex(A=>A.includes(p));a(g===-1?0:g)},[u,c]),d=xe(p=>{let g=u.findIndex(A=>A.id===p);g!==-1?f(g):a(0)},[u,c]),v=xe(()=>{a(p=>p>=c.length-1?p:p+1)},[c]),m=xe(()=>{a(p=>p<=0?0:p-1)},[c]);return typeof i>"u"&&(e?d(e):a(0)),{visibleItems:c[i]?.map(p=>u[p].id)||[],cursor:i,items:u,sequence:c,hasPrevious:i>0,hasNext:i<c.length-1,setSequenceIndex:a,setCanvasIndex:f,setCanvasId:d,next:v,previous:m}}import{createContext as qe,useContext as Q,useEffect as fr,useMemo as _e,useReducer as mr}from"react";import{useEffect as wt,useMemo as Mt}from"react";import{createStore as Ct}from"zustand/vanilla";function fa(e){let n=e.service||e.services||[];for(let t of n)if(t.type==="AuthProbeService2")return!0;return!1}function E(e,n,t){let r=n.findIndex(a=>a.service.id===e);if(r===-1)return n;let o=[...n],i=t(o[r]);return i===o[r]?n:(o[r]=i,o)}var bt=()=>Ct((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:E(t.id,n().authItems,o=>({...o,isPending:!0}))})),ue(t.service).then(()=>{j(r).then(o=>{let i=o.expiresIn,a=Date.now()+i*1e3;e(()=>({authItems:E(t.id,n().authItems,s=>({...s,isLoggedIn:!0,isPending:!1,session:{token:o.accessToken,expires:a}}))}))}).catch(o=>{e(()=>({authItems:E(t.id,n().authItems,i=>({...i,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(a=>a.type==="AuthLogoutService2");if(!r)return;let o=`${r.id}?origin=${It()}`,i=window.open(o);e(()=>({authItems:E(t.id,n().authItems,a=>({...a,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(s=>s.type==="AuthAccessTokenService2"),i=t;if(n().authItems.find(s=>s.service.id===t.id)){e(()=>({authItems:E(t.id,n().authItems,s=>({...s,instances:s.instances+1}))}));return}if(e(()=>({currentAuth:i.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");j(o).then(s=>{e(()=>({authItems:E(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:E(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:s.message}))}))})}if(t.profile==="kiosk"){if(!o)throw new Error("Token service not found");e(()=>({authItems:E(t.id,n().authItems,s=>({...s,isPending:!0}))})),ue(i).then(()=>{j(o).then(s=>{e(()=>({authItems:E(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:E(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,error:s.message}))}))})})}t.profile},removeService:(t,r)=>{let o=n().currentAuth===n().authItems.findIndex(a=>a.service.id===t.id),i=n().currentAuth;if(o){let a=n().authItems.find(u=>u.service.id===t.id);a&&a.instances>1||(i=n().authItems.findIndex(c=>c.service.id!==t.id&&c.instances>0))}e(()=>({authItems:E(t.id,n().authItems,a=>({...a,instances:a.instances-1})),currentAuth:i}))}})),Pt=(e,n)=>Ct((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 i=r().token;try{let a=await fetch(o,{headers:i?{Authorization:`Bearer ${r().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(s=>s.json());if(a.status===200)t({status:"success",shouldDisplayResource:!0,error:null,errorHeading:null,errorNote:null,shouldSubstitute:!1,shouldRedirect:!1});else if(a.status<400&&a.status>=300){if(!a.location)throw new Error("Redirect location not found");t({status:"error",shouldDisplayResource:!1,shouldRedirect:!0,redirectResource:a.location||null})}else if(a.status===401)t({status:"error",shouldDisplayResource:!1,shouldRedirect:!1,shouldSubstitute:!!a.substitute,substituteResource:a.substitute||null,error:"Unauthorized",errorHeading:a.heading||{en:["Unauthorized"]},errorNote:a.note||null});else throw new Error("Unknown error")}catch(a){t({status:"error",error:a.message,errorHeading:{en:["Unknown error"]}})}},setToken(o){t({token:o})}}));function Rt(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(i=>i.type==="AuthAccessService2");o[0]&&(t.services.access=o[0])}return t}async function j(e,{strict:n=!0}={}){return new Promise((t,r)=>{let o=Math.random().toString(36).substring(7),i=`${e.id}?messageId=${o}&origin=${window.location.origin}`,a=c=>{let l=c.data;if(l.messageId===o){if(n&&l.type!=="AuthAccessToken2"){s(),r("Invalid response, expected type=AuthAccessToken2");return}if(!l.accessToken){s(),r("Invalid response, expected accessToken");return}s(),t(l)}},s=()=>window.removeEventListener("message",a),u=document.createElement("iframe");u.src=i,u.style.display="none",document.body.appendChild(u),window.addEventListener("message",a)})}function It(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 ue(e){let n=`${e.id}?origin=${It()}`,t=window.open(n);if(!t)throw new Error("Failed to open window");return new Promise((r,o)=>{let i=setInterval(()=>{t.closed&&(clearInterval(i),r())},500)})}import{useStore as dr}from"zustand";function Tt(e){let n=Mt(()=>Rt(e),[e]),t=Vt(n.services.access?.id),r=Mt(()=>Pt(n.services.probe,t),[n.services.probe]),o=dr(r);return wt(()=>{o.status==="unknown"&&!t&&o.probe()},[n.services.probe,o.status]),wt(()=>{t&&(o.setToken(t),o.probe())},[t]),[e,o,n.hasAuth]}import{useStore as ce}from"zustand";import{jsx as X}from"react/jsx-runtime";var ee=qe(null),te=qe(null);te.displayName="CurrentAuth";var Be=qe(null);Be.displayName="AuthActions";function Y(e,n,t){let r=n.authItems.findIndex(a=>a.service.id===e);if(r===-1)return n;let o=[...n.authItems],i=t(o[r]);return i===o[r]?n:(o[r]=i,{...n,authItems:o})}function pr(e,n){switch(n.type){case"login.start":return Y(n.payload.id,e,t=>({...t,isPending:!0}));case"login.success":return Y(n.payload.id,e,t=>({...t,isLoggedIn:!0,isPending:!1,session:{token:n.payload.token,expires:n.payload.expires}}));case"login.error":return Y(n.payload.id,e,t=>({...t,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:n.payload.error}));case"session.expire":return Y(n.payload.id,e,t=>({...t,isPending:!1,isLoggedIn:!1,session:null}));case"logout":return Y(n.payload.id,e,t=>({...t,isLoggedIn:!1,session:null,isPending:!1}));case"service.add":return e.authItems.find(r=>r.service.id===n.payload.service.id)?Y(n.payload.service.id,e,r=>({...r,instances:r.instances+1})):{...e,currentAuth:n.payload.service.profile==="active"?0:e.currentAuth,authItems:[{id:n.payload.service.id,type:n.payload.service.profile,service:n.payload.service,probeId:n.payload.probeId,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...e.authItems]};case"service.remove":{let t=e.currentAuth===e.authItems.findIndex(o=>o.service.id===n.payload.id),r=e.currentAuth;if(t){let o=e.authItems.find(a=>a.service.id===n.payload.id);o&&o.instances>1||(r=e.authItems.findIndex(s=>s.service.id!==n.payload.id&&s.instances>0))}return{...Y(n.payload.id,e,o=>({...o,instances:o.instances-1})),currentAuth:r}}case"list.next":{let t=e.authItems.length,r=e.currentAuth+1;return r>=t?e:{...e,currentAuth:r}}case"list.previous":{let t=e.currentAuth-1;return t<0?e:{...e,currentAuth:t}}case"list.set":return n.payload!==-1&&(n.payload<0||n.payload>=e.authItems.length)?e:{...e,currentAuth:n.payload};default:return e}}function Nt({children:e}){let n=_e(()=>bt(),[]);return X(ee.Provider,{value:n,children:e})}function Va({children:e}){let[n,t]=mr(pr,{currentAuth:-1,authItems:[]}),r=(d,v)=>{if(!d.service)return;let m=d.service.find(g=>g.type==="AuthAccessTokenService2"),p=d;if(t({type:"service.add",payload:{service:d,probeId:v}}),d.profile==="external"){if(!m)throw new Error("Token service not found");j(m).then(g=>{t({type:"login.success",payload:{id:d.id,token:g.accessToken,expires:g.expiresIn}})}).catch(g=>{t({type:"login.error",payload:{id:d.id,error:g.message}})})}if(d.profile==="kiosk"){if(!m)throw new Error("Token service not found");t({type:"login.start",payload:{id:d.id}}),ue(p).then(()=>{j(m).then(g=>{t({type:"login.success",payload:{id:d.id,token:g.accessToken,expires:g.expiresIn}})}).catch(g=>{t({type:"login.error",payload:{id:d.id,error:g.message}})})}).catch(g=>{t({type:"login.error",payload:{id:d.id,error:g.message}})})}d.profile},o=d=>{t({type:"service.remove",payload:d})},i=()=>{let d=n.authItems[n.currentAuth];if(!d||d.isPending||d.isLoggedIn)return;if(d.type!=="active")throw new Error("Cannot login to non-active service");let v=d.service.service.find(m=>m.type==="AuthAccessTokenService2");if(!v)throw new Error("Token service not found");t({type:"login.start",payload:{id:d.id}}),ue(d.service).then(()=>{j(v).then(m=>{let p=m.expiresIn,g=Date.now()+p*1e3;t({type:"login.success",payload:{id:d.id,token:m.accessToken,expires:g}})}).catch(m=>{t({type:"login.error",payload:{id:d.id,error:m.message}})})})},a=()=>{let d=n.authItems[n.currentAuth];if(!d||d.isPending||!d.isLoggedIn)return;if(d.type!=="active")throw new Error("Cannot logout of non-active service");let v=d.service.service.find(g=>g.type==="AuthLogoutService2");if(!v)return;let m=`${v.id}?origin=${window.location.origin}`,p=window.open(m);t({type:"logout",payload:{id:d.id}})},s=()=>{},u=()=>{},c=d=>{},l=_e(()=>({addService:r,removeService:o}),[]),f=_e(()=>({...n,login:i,logout:a,nextAuth:s,previousAuth:u,setAuth:c}),[n]);return X(te.Provider,{value:f,children:X(Be.Provider,{value:l,children:e})})}function kt(){return!!Q(ee)}function le(){let e=Q(ee);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function gr(){let e=le();return ce(e,t=>({login:t.login,logout:t.logout,nextAuth:t.nextAuth,previousAuth:t.previousAuth,setAuth:t.setAuth,addService:t.addService,removeService:t.removeService}))}function Na(){let e=le();return ce(e,n=>n)}function hr(e){let n=le();return ce(n,r=>r.authItems.find(o=>o.service.id===e))}function Vt(e){let n=le();return ce(n,r=>r.authItems.find(o=>o.id===e)?.session?.token)}function ka(e){let n=le();return ce(n,r=>{let o=r.authItems.find(i=>i.service.id===e);return!o||!o.isLoggedIn||!o.session?null:o.session?.token||null})}function Ea(){let e=Q(te);if(!e)throw new Error("useCurrentAuth must be used within a AuthProvider");return e}function La(e){let n=Q(te);return n&&n.authItems.find(t=>t.service.id===e)||null}function za(e){let n=Q(te);return!n||!e?null:n.authItems.find(t=>t.id===e)?.session?.token||null}function Oa(e){let n=Q(te);if(!e||!n)return null;let t=n.authItems.find(r=>r.service.id===e);return!t||!t.isLoggedIn||!t.session?null:t.session?.token||null}function Fa(){return Q(Be)}function vr(e){let n=gr(),t=hr(e.service.id);return fr(()=>(n?.addService(e.service,e.probeId),()=>{n?.removeService(e.service,e.probeId)}),[e.service]),t?(t.error||!t.isLoggedIn,e.children):null}function Ue(){return null}function Et(e){let[n,t,r]=Tt(e.resource),o=e.fallbackComponent||Ue,i=e.loadingComponent||Ue,a=e.errorComponent||Ue,s=t.service,u=null;if(!r||!s)return e.children(n);let c=s.service.filter(l=>l.type==="AuthAccessService2");t.status==="error"&&(u=X(a,{resource:e.resource,error:t.error||"",heading:t.errorHeading,note:t.errorNote,extra:e.extra})),(t.status==="unknown"||t.status==="probing")&&(u=X(i,{})),t.status==="success"&&(u=e.children(n));for(let l of c)u=X(vr,{service:l,probeId:s.id,children:u},l.id);return u}import{createContext as xr,useContext as Ya,useMemo as Cr}from"react";import{createStore as yr}from"zustand/vanilla";var Sr=e=>e.id||e["@id"];function Ar(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 Lt=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?Sr(n):void 0,r=null;return yr((o,i)=>({service:n,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!n,hasAutocomplete:n?!!Ar(n):!1,errorMessage:"",search(a,s={}){if(!t)throw new Error("No search service found.");r&&!r.signal.aborted&&r.abort(),r=new AbortController;let u=new URLSearchParams;a.q&&u.set("q",a.q),a.motivation&&u.set("motivation",a.motivation),a.date&&u.set("date",a.date),a.user&&u.set("user",a.user),o({loading:!0}),fetch(`${t}?${u.toString()}`,{signal:r.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...s.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(a){let s=i().resources.find(u=>u["@id"]===a);o({highlight:s})},nextResult(){let a=i().resources,s=i().highlight;if(!s){o({highlight:a[0]||null});return}let u=a.findIndex(c=>c["@id"]===s["@id"]);if(u===-1){o({highlight:a[0]||null});return}o({highlight:a[u+1]||a[0]||null})},previousResult(){let a=i().resources,s=i().highlight;if(!s){o({highlight:a[a.length-1]||null});return}let u=a.findIndex(c=>c["@id"]===s["@id"]);if(u===-1){o({highlight:a[a.length-1]||null});return}if(u===0){o({highlight:a[a.length-1]||null});return}o({highlight:a[u-1]||a[a.length-1]||null})}}))};import{useStore as Ka}from"zustand";function zt(){let e=w();return e?e.service.find(n=>n.profile==="SearchService1"||n.profile==="http://iiif.io/api/search/1/search"):void 0}import{jsx as $e}from"react/jsx-runtime";var ne=xr(null);ne.displayName="Search";function Ot(e){let n=zt();return e.store?$e(ne.Provider,{value:e.store,children:e.children}):$e(br,{service:n,children:e.children})}function br({service:e,children:n}){let t=Cr(()=>Lt(e),[e]);return $e(ne.Provider,{value:t,children:n})}import{jsx as T}from"react/jsx-runtime";var de=()=>{},fe=Rr({setCurrentCanvasId:de,setCurrentCanvasIndex:de,nextCanvas:de,previousCanvas:de,items:[],sequence:[],setSequenceIndex:de,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function wr(e){let n=w(),{cursor:t,visibleItems:r,next:o,sequence:i,items:a,setCanvasIndex:s,setCanvasId:u,previous:c,setSequenceIndex:l,hasNext:f,hasPrevious:d}=xt({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),v=Ir(()=>({sequence:i,items:a,setCurrentCanvasId:u,nextCanvas:o,previousCanvas:c,totalCanvases:a.length,setCurrentCanvasIndex:s,setSequenceIndex:l,currentSequenceIndex:t,hasNext:f,hasPrevious:d}),[i,a,u,o,c,a,s,l,t]);return n?r.length===0?null:T(fe.Provider,{value:v,children:T(J.Provider,{value:r,children:T(K,{canvas:r[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),T("div",{children:"Sorry, something went wrong."}))}function Ft(e){let n=Z(e.vault),t=ht(e.manifest);if(!t)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),T("div",{children:"Sorry, something went wrong."});if(t.error)return T("div",{children:t.error.toString()});if(!t.isLoaded)return T("div",{children:"Loading..."});let r=T(wr,{...e,children:e.children});return T(G,{vault:n,children:T(vt,{manifest:t.id,children:T(Nt,{children:T(Ot,{children:e.rangeId?T(yt,{range:e.rangeId,children:r}):r})})})})}function Ht(){return Pr(fe)}import{jsx as me}from"react/jsx-runtime";function Dt(){return{VaultContext:re($),ResourceContext:re(Se),SimpleViewerReactContext:re(fe),VisibleCanvasReactContext:re(J),AuthRContext:re(ee),SearchReactContext:re(ne)}}function Ut(e){return me(G,{vault:e.bridge.VaultContext.vault||void 0,resources:e.bridge.ResourceContext,children:me(J.Provider,{value:e.bridge.VisibleCanvasReactContext,children:me(fe.Provider,{value:e.bridge.SimpleViewerReactContext,children:me(ee.Provider,{value:e.bridge.AuthRContext,children:me(ne.Provider,{value:e.bridge.SearchReactContext,children:e.children})})})})})}import{createContext as kr,useContext as Er,useMemo as Lr}from"react";import{useCallback as qt,useLayoutEffect as Tr,useMemo as Vr,useRef as Nr}from"react";import{entityActions as je}from"@iiif/helpers/vault/actions";import{useMemo as Mr}from"react";function _t(){let n=y().getStore();return Mr(()=>t=>n.dispatch(t),[n])}function Bt(e){return typeof e!="string"&&e&&e.bindToVault}function $t(){let e=y(),n=Nr([]),t=_t(),r=Vr(()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);Tr(()=>{let s={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:{[s.id]:s}}}))},[r]);let o=S(s=>r&&s.iiif.entities.AnnotationPage[r]||null,[r]),i=qt((s,u)=>{if(r){if(Bt(s)){let f=s;f.__vault||f.bindToVault(e),s=typeof f.source=="string"?f.source:f.source.id,n.current[s]=f}else typeof s!="string"&&(s=s.id);let c=e.get({id:r,type:"AnnotationPage"}),l=e.get({id:s,type:"Annotation"});c&&l&&(c.items.find(f=>f.id===l.id)||t(je.addReference({id:r,type:"AnnotationPage",key:"items",reference:{id:s,type:"Annotation"},index:u})))}},[r]),a=qt(s=>{r&&(Bt(s)?s=typeof s.source=="string"?s.source:s.source.id:typeof s!="string"&&(s=s.id),n.current[s]&&n.current[s].beforeRemove(),e.get({id:r,type:"AnnotationPage"})&&t(je.removeReference({id:r,type:"AnnotationPage",key:"items",reference:{id:s,type:"Annotation"}})))},[r]);return[o,{addAnnotation:i,removeAnnotation:a}]}import{jsx as zr}from"react/jsx-runtime";var jt=kr(null);function Yt(){let e=Er(jt);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function Qt({children:e}){let[n,{addAnnotation:t,removeAnnotation:r}]=$t();return zr(jt.Provider,{value:Lr(()=>({fullPage:n,addAnnotation:t,removeAnnotation:r}),[n]),children:e})}import{jsx as Ye,jsxs as Or}from"react/jsx-runtime";function Wt({width:e,style:n,height:t,error:r,resetErrorBoundary:o}){return Or("div",{style:{width:e,height:t,minHeight:500,...n||{},background:"#f9f9f9"},children:[Ye("h3",{children:"Error occurred"}),Ye("p",{children:r.message}),Ye("button",{onClick:o,children:"Reset"})]})}import{createContext as Fr,useContext as Hr}from"react";var pe=Fr(null);function Gt(){return Hr(pe)}import{createContext as Zt,useContext as Dr,useEffect as Ur}from"react";var Qe=Zt(()=>{}),We=Zt(()=>{});function L(e,n,t,r,o=[]){let i=Dr(e==="portal"?We:Qe);Ur(()=>(e!=="none"&&i(n,t,r),()=>{i(n,null)}),[n,e,i,...o])}import{createContext as qr,useContext as Br,useEffect as $r}from"react";import{useMemo as _r}from"react";function b(e={},n=[]){let{id:t,selector:r}=e,o=k(),i=t||o.canvas,a=S(s=>i?s.iiif.entities.Canvas[i]:void 0,[i]);return _r(()=>{if(a)return r?r(a):a},[a,r,...n])}var Ge=qr(()=>{});function Kt(e){let n=b(),t=Br(Ge);$r(()=>n&&n.id?(t(n.id,e),()=>t(n.id,-1)):()=>{},[n,e])}import{Fragment as Wr,jsx as R,jsxs as Gr}from"react/jsx-runtime";function en({children:e,errorFallback:n,outerContainerProps:t={},worldScale:r,...o}){let[i,a]=Ce(),s=Dt(),u=n||Wt,[c,l]=Ce({}),f=Object.entries(c),[d,v]=Ce({}),m=Object.entries(d),[p,g]=Ce({}),A=Xt(()=>r||Math.max(...Object.values(p)),[p]),U=Xt(()=>({maxOverZoom:A||1,...o.runtimeOptions||{}}),[A,o.runtimeOptions]),I=Ze((C,P)=>{g(N=>{if(P===-1){let{[C]:h,...O}=N;return O}return{...N,[C]:P}})},[]),Oe=Ze((C,P,N)=>{l(({[C]:h,...O})=>P?{...O,[C]:{element:P,props:N}}:O)},[]),ve=Ze((C,P,N)=>{v(({[C]:h,...O})=>P?{...O,[C]:{element:P,props:N}}:O)},[]);return Gr(Qr,{resetKeys:[],fallbackRender:C=>R(u,{...o,...C}),children:[R(jr,{...o,containerProps:{style:{position:"relative"},...o.containerProps||{}},htmlChildren:R(Wr,{children:f.map(([C,{element:P,props:N}])=>R(Jt.Fragment,{children:R(P,{...N||{}})},C))}),onCreated:C=>{a(C),o.onCreated&&o.onCreated(C)},runtimeOptions:U,children:R(pe.Provider,{value:i,children:R(Ge.Provider,{value:I,children:R(Qe.Provider,{value:Oe,children:R(We.Provider,{value:ve,children:R(Ut,{bridge:s,children:R(Yr.Provider,{value:o.mode||"explore",children:R(Qt,{children:e})})})})})})})}),R("div",{children:m.map(([C,{element:P,props:N}])=>R(Jt.Fragment,{children:R(P,{...N||{}})},C))})]})}import{mergeStyles as to,RegionHighlight as no}from"@atlas-viewer/atlas";import{useMemo as tn}from"react";import{createEventsHelper as Zr}from"@iiif/helpers/events";function be(e,n){let t=y(),r=tn(()=>Zr(t),[t]),o=S(()=>e&&e.id?t.getResourceMeta(e.id,"eventManager"):null,[e]);return tn(()=>e?r.getListenersAsProps(e,n):{},[o,e,t,n])}import{useMemo as Kr}from"react";import{createStylesHelper as Jr}from"@iiif/helpers/styles";function oe(e,n){let t=y(),r=Kr(()=>Jr(t),[t]);return S(()=>{if(!e)return null;let o=r.getAppliedStyles(e.id);return o?n?o[n]:o:void 0},[e,n])}import{useMemo as ro}from"react";import{useMemo as Xr}from"react";import{expandTarget as eo}from"@iiif/helpers/annotation-targets";function Pe(e={},n=[]){let{id:t,selector:r}=e,o=k(),i=y(),a=t||o.annotation,s=S(c=>a?c.iiif.entities.Annotation[a]:void 0,[a]),u=S(c=>s&&s.body?s.body.map(l=>l?l.type==="SpecificResource"?{...l,source:i.get(l)}:l?c.iiif.entities[l.type][l.id]:null:null).filter(Boolean):[],[s]);return Xr(()=>{if(!s)return;let c={...s,body:u,target:eo(s.target,{typeMap:i.getState().iiif.mapping})};return r?r(c):c},[s,r,u,...n])}import{jsx as oo}from"react/jsx-runtime";var Re=({id:e,style:n,className:t,interactive:r})=>{let o=Pe({id:e}),i=oe(o,"atlas"),a=oe(o,"html"),s=be(o,["atlas"]),u=b(),c=ro(()=>to(n,i),[n,i]);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)?oo(no,{id:o.id,isEditing:!0,region:o.target.selector.spatial,style:c,className:a?.className||t,interactive:!!(a?.href||r),href:a?.href||null,title:a?.title||null,hrefTarget:a?.target||null,onClick:()=>{},...s}):null};import{Fragment as ao}from"react";import{useMemo as io}from"react";function nn(e={},n=[]){let{id:t,selector:r}=e,o=k(),i=t||o.annotationPage,a=S(s=>i?s.iiif.entities.AnnotationPage[i]:void 0,[i]);return io(()=>{if(a)return r?r(a):a},[a,...n])}import{jsx as rn}from"react/jsx-runtime";var ge=({className:e,page:n})=>{let t=nn({id:n.id})||n,r=oe(t,"atlas"),o=oe(t,"html");return S(i=>t.id?i.iiif.entities.AnnotationPage[t.id]:null,[]),rn(ao,{children:t.items?.map(i=>rn(Re,{id:i.id,style:r,className:o?.className||e},i.id))})};import{createStylesHelper as Wo}from"@iiif/helpers/styles";import{Fragment as fn,useMemo as po}from"react";import{HTMLPortal as lo,TileSet as ln}from"@atlas-viewer/atlas";import Ie,{useMemo as Ke}from"react";import{jsx as F}from"react/jsx-runtime";var an=Ie.createContext("en"),sn=Ie.createContext({});function fc(e){return F(sn.Provider,{value:e.translations,children:e.children})}function mc(e){return F(an.Provider,{value:e.language,children:e.children})}function Je(){return Ie.useContext(an)}function un(){return Ie.useContext(sn)}function on(e){return e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):e}function so({as:e,language:n,children:t,viewingDirection:r,...o}){let i=Je();return Ke(()=>on(i)===on(n),[i,n])?e?F(e,{...o,children:t}):F("span",{...o,children:t}):e?F(e,{...o,lang:n,dir:r,children:t}):F("span",{...o,lang:n,dir:r,children:t})}function cn(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 uo=(e,n=[])=>{let t=Je();return Ke(()=>{let r=e();return cn(t,r,[])},[t,...n])};function W(e,n){return n?e[n]||n:""}function co(e,n,t=`
2
+ `,r={}){let o=uo(()=>Object.keys(e||{}),[e]);return[Ke(()=>{if(!e)return W(r,n)||"";if(typeof e=="string")return W(r,e);let i=o?e[o]:void 0;return i?typeof i=="string"?i:i.map(a=>W(r,a)).join(t):""},[o,n,e]),o]}function pc(){let e=Je(),n=un();return function(r,o="",i=`
3
+ `,a=n){let s=Object.keys(r||{}),u=cn(e,s,[]);if(!r)return W(a,o)||"";if(typeof r=="string")return W(a,r);let c=u?r[u]:void 0;return c?typeof c=="string"?W(a,c):c.map(l=>W(a,l)).join(typeof i<"u"?i:`
4
+ `):""}}function he({as:e,defaultText:n,enableDangerouslySetInnerHTML:t,children:r,separator:o,...i}){let a=un(),[s,u]=co(r,n,o,a);return u?F(so,{...i,as:e,language:u,title:t?void 0:s,dangerouslySetInnerHTML:t?{__html:s}:void 0,children:t?void 0:s}):e?F(e,{...i,children:s}):F("span",{...i,title:t?void 0:s,dangerouslySetInnerHTML:t?{__html:s}:void 0,children:t?void 0:s})}import{jsx as H,jsxs as mo}from"react/jsx-runtime";function fo({resource:e,heading:n,note:t,extra:r}){return r?H(lo,{target:{x:0,y:0,width:r.target?.spatial.width,height:r.target?.spatial.height},backgroundColor:"#333",relative:!0,children:H("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:mo("div",{children:[H(he,{children:n||"Not authorised"}),t&&H("p",{children:H(he,{children:t})}),H("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}function dn({image:e,thumbnail:n,crop:t,enableSizes:r}){if(!kt()){let i=e.service,a=i.width||e.width||0,s=i.height||e.height||0;return H(ln,{tiles:{id:i.id||i["@id"]||"unknown",height:s,width:a,imageService:i},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:t})}return H(Et,{resource:e.service,errorComponent:fo,extra:e,children:i=>{let a=i.width||e.width||0,s=i.height||e.height||0;return H(ln,{tiles:{id:i.id||i["@id"]||"unknown",height:s,width:a,imageService:i},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:t})}},e.id)}import{jsx as Xe,jsxs as mn}from"react/jsx-runtime";function we({id:e,image:n,thumbnail:t,isStatic:r,x:o=0,y:i=0,children:a,selector:s,onClick:u,enableSizes:c}){let l=po(()=>{if(!(!s||s.spatial.x===0&&s.spatial.y===0))return s.spatial},[s]);return Xe("world-object",{x:o+n.target.spatial.x,y:i+n.target.spatial.y,width:n.target.spatial.width,height:n.target.spatial.height,onClick:u,children:n.service?mn(fn,{children:[Xe(dn,{image:n,thumbnail:t,crop:l,enableSizes:c}),a]},"service"):mn(fn,{children:[Xe("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:l}),a]},"no-service")},e+(n.service?"server":"no-service"))}import{Fragment as Go,useEffect as Ln,useLayoutEffect as Zo,useMemo as zn}from"react";import{HTMLPortal as Ko}from"@atlas-viewer/atlas";import{useMemo as bn}from"react";import{useCallback as hn,useMemo as ho}from"react";function go(e,n){let t=e?.iiif?.meta[n];return t?t.annotationPageManager:null}function pn(e,n){return S(t=>{let r=[];if(!e)return r;let o=Object.keys(t.iiif.entities.AnnotationPage);for(let i of o)if(!n||n.indexOf(i)!==-1){let a=go(t,i);a&&a.views&&a.views[e]&&r.push(i)}return r},[e,n])}function gn({canvas:e,manifest:n,all:t,canvases:r}){let o=[];if(n)for(let i of n.annotations)o.indexOf(i.id)===-1&&o.push(i.id);if(t){if(r&&r.length)for(let i of r)for(let a of i.annotations)o.indexOf(a.id)===-1&&o.push(a.id)}else if(e)for(let i of e.annotations)o.indexOf(i.id)===-1&&o.push(i.id);return o}function vo(e,n){let t=e?.iiif?.meta[n];return t?t.annotationPageManager:null}function vn(e,n={}){let t=y(),r=w(),o=b(),i=Ae(),a=ho(()=>gn({all:n.all,manifest:r,canvas:o,canvases:i}),[n.all,o,i,r]),s=pn(e,n.all?void 0:a),u=hn(l=>{e&&t.setMetaValue([l,"annotationPageManager","views"],f=>f&&!f[e]?f:{...f||{},[e]:!1})},[e,t]),c=hn((l,f={})=>{if(!e)return;let d=t.getState(),v=[];if(f?.deselectOthers){let m=Object.keys(d.iiif.entities.AnnotationPage);for(let p of m){let g=vo(d,p);g&&g.views&&g.views[e]&&v.push(p)}}for(let m of v)u(m);t.setMetaValue([l,"annotationPageManager","views"],m=>m&&m[e]?m:{...m||{},[e]:!0})},[e,u,t]);return{availablePageIds:a,enabledPageIds:s,setPageEnabled:c,setPageDisabled:u}}function yn(e,n){return S((t,r)=>r.get(e.map(o=>({id:o,type:n}))),[e,n])}import{useCallback as Co,useEffect as bo,useRef as Po,useState as Ro}from"react";import yo,{useContext as So}from"react";import{ImageServiceLoader as Ao}from"@atlas-viewer/iiif-image-api";var xo=yo.createContext(new Ao);function Me(){return So(xo)}function Sn(){let e=Me(),[n,t]=Ro({}),r=Po(!1);return bo(()=>()=>{r.current=!0},[]),[Co((i,{height:a,width:s})=>{if(i){let u=i.id||i["@id"],c=e.loadServiceSync({id:u,width:i.width||s,height:i.height||a,source:i});c?i=c:n[u]||(r.current||t(l=>({...l,[u]:"loading"})),e.loadService({id:u,width:i.width||s,height:i.height||a}).then(()=>{r.current||t(l=>({...l,[u]:"done"}))}))}return i},[e,n]),n]}import{useCallback as Io,useMemo as xn,useState as wo}from"react";function An(e={}){let n=Pe(),t=b(e.canvasId?{id:e.canvasId}:void 0);return S((r,o)=>{if(!t)return[];if(n&&e.enableSingleAnnotation)return[n];let i=o.get(t.items),a=[];for(let s of i)a.push(...o.get(s.items));return a},[t])}import{createPaintingAnnotationsHelper as Mo}from"@iiif/helpers/painting-annotations";function Cn(e,n=[]){let t=y(),r=xn(()=>Mo(t),[]),o=An({enableSingleAnnotation:e?.enableSingleAnnotation}),[i,a]=wo(e?.defaultChoices||[]),s=xn(()=>r.getPaintables(o,i),[t,o,i,...n]),c={makeChoice:Io((l,{deselectOthers:f=!0,deselect:d=!1}={})=>{if(s.choice){if(s.choice.type!=="single-choice")throw new Error("Complex choice not supported yet");a(v=>{if(d){let p=v.filter(g=>g!==l);if(p.length===0){let g=s.items[0].resource.id;return g?[g]:[]}return p}if(f)return[l];let m=[...v];if(m.length===0&&s.items.length){let p=s.items[0].resource.id;p&&m.push(p)}return v.indexOf(l)!==-1?v:[...v,l]})}},[s.choice])};return[s,c]}function Pn(e){let n=w(),t=b(),r=y(),[o,i]=Sn(),{enabledPageIds:a}=vn(e?.annotationPageManagerId||n?.id||t?.id,{all:!1}),s=yn(a,"AnnotationPage"),u=e?.strategies||["empty","images","media","textual-content","complex-timeline"],[c,l]=Cn(e,[i]),f=bn(()=>ft({canvas:t,paintables:c,supports:u,loadImageService:o}),[t,c,r,l.makeChoice]);return bn(()=>f.type==="unknown"?[f,dt]:[{...f,annotations:{pages:s}},l],[f,s])}import{useEffect as Vo,useMemo as No,useRef as ko,useState as Eo}from"react";import{useEffect as To}from"react";var Rn=(e,n=[])=>{let t=y();To(()=>{e(t)},[t,...n])};import{createThumbnailHelper as Lo}from"@iiif/helpers/thumbnail";function In(e,n,{canvasId:t,manifestId:r}={}){let o=y(),i=Me(),a=No(()=>Lo(o,{imageServiceLoader:i}),[o,i]),[s,u]=Eo(),c=w(r?{id:r}:void 0),l=b(t?{id:t}:void 0),f=l||c,d=ko(!1);if(Vo(()=>(d.current=!1,()=>{d.current=!0}),[]),!f)throw new Error("Must be called under a manifest or canvas context.");return Rn(v=>{a.getBestThumbnailAtSize(f,e,n).then(m=>{m.best&&!d.current&&u(m.best)})},[f]),s}import{useCallback as z,useEffect as wn,useReducer as zo,useRef as Te}from"react";function Oo(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function Fo(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 Ho(e){let n=Math.round(e);return`${Math.floor(n/60)}:${`${n%60}`.padStart(2,"0")}`}function ie(e){let[n,t]=zo(Fo,Oo(e.duration)),r=Te(null),o=Te(null),i=Te(null),a=Te(!1),s=z(()=>{o.current&&r.current&&(o.current.innerHTML=Ho(r.current.currentTime),i.current&&(i.current.style.width=`${r.current.currentTime/e.duration*100}%`),a.current!==r.current.muted&&(a.current=r.current.muted,t(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"})))},[e.duration]),u=z(()=>{r.current&&(t({type:"PLAY_REQUESTED"}),r.current.play().then(()=>{t({type:"PLAY"})}),s())},[s]),c=z(()=>{r.current&&(r.current.duration>0&&r.current.paused?u():l())},[s]),l=z(()=>{r.current&&(r.current.pause(),t({type:"PAUSE"}),s())},[s]),f=z(()=>{r.current&&(r.current.muted=!r.current.muted,t(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),d=z(()=>{r.current&&(r.current.muted=!0,t({type:"MUTE"}))},[]),v=z(()=>{r.current&&(r.current.muted=!1,t({type:"UNMUTE"}))},[]),m=z(A=>{r.current&&(r.current.muted=!1,r.current.volume=A/100,t({type:"SET_VOLUME",volume:A}))},[]),p=z(A=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(A*e.duration,e.duration)),s())},[]),g=z(A=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(A,e.duration)),s())},[]);return wn(()=>{let A=setInterval(()=>{s()},350);return()=>clearInterval(A)},[s,e.duration]),wn(()=>{let A=()=>{t({type:"FINISHED"})},U=r.current;return U?.addEventListener("ended",A),()=>U?.removeEventListener("ended",A)},[]),[{element:r,currentTime:o,progress:i},n,{play:u,pause:l,playPause:c,mute:d,unmute:v,toggleMute:f,setVolume:m,setDurationPercent:p,setTime:g}]}import{createContext as tt,useContext as nt}from"react";import{jsx as et}from"react/jsx-runtime";var Mn=tt(null),Tn=tt(null),Vn=tt(null);function El(){let e=nt(Mn);if(!e)throw new Error("Ctx not found");return e}function Ll(){let e=nt(Tn);if(!e)throw new Error("Ctx not found");return e}function zl(){let e=nt(Vn);if(!e)throw new Error("Ctx not found");return e}function Ve({actions:e,state:n,children:t,currentTime:r,progress:o,element:i}){return et(Vn.Provider,{value:{currentTime:r,progress:o,element:i},children:et(Tn.Provider,{value:e,children:et(Mn.Provider,{value:n,children:t})})})}import{jsx as Do,jsxs as Uo}from"react/jsx-runtime";function rt({media:e,children:n}){let[{element:t,currentTime:r,progress:o},i,a]=ie({duration:e.duration});return Uo(Ve,{state:i,actions:a,currentTime:r,progress:o,element:t,children:[Do("audio",{ref:t,src:e.url}),n]})}function Ne({media:e,mediaControlsDeps:n,children:t}){return L("portal","audio",rt,{media:e,children:t},[e,...n||[]]),null}import{jsx as Nn,jsxs as _o}from"react/jsx-runtime";function ot({element:e,media:n,playPause:t}){return _o("div",{className:"video-container",part:"video-container",onClick:t,children:[Nn("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
+ `}),Nn("video",{ref:e,src:n.url,style:{width:"100%",objectFit:"contain"}})]})}function ke({media:e,mediaControlsDeps:n,children:t}){let[{element:r,currentTime:o,progress:i},a,s]=ie({duration:e.duration});return L("overlay","video-element",ot,{element:r,media:e,playPause:s.playPause}),L("portal","custom-controls",Ve,{state:a,actions:s,currentTime:o,progress:i,element:r,children:t},[o,a,e,...n||[]]),null}import{Fragment as qo,jsx as it,jsxs as Bo}from"react/jsx-runtime";function at({model:e}){return Bo(qo,{children:[it("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
+ `}),it("div",{className:"model-container",children:it("model-viewer",{"interaction-prompt":"none",style:{width:"100%",height:"100%"},"camera-controls":"","ar-status":"not-presenting",src:e.id})})]})}function Ee({model:e,name:n}){return L("overlay",`model-${n}`,at,{model:e},[e]),null}import{jsx as $o}from"react/jsx-runtime";function Le({style:e}){let n=b();return!n||!n.height||!n.width?null:$o("box",{interactive:!1,target:{x:0,y:0,width:Number(n.width),height:Number(n.height)},style:e})}import{useRef as jo}from"react";import{jsx as kn,jsxs as Qo}from"react/jsx-runtime";function Yo({element:e,media:n,playPause:t}){let r=jo(null);return n.youTubeId?Qo("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 En({media:e,mediaControlsDeps:n,children:t}){let[{element:r,currentTime:o,progress:i},a,s]=ie({duration:e.duration});return L("overlay","video-element",Yo,{element:r,media:e,playPause:s.playPause}),null}import{Fragment as ze,jsx as V,jsxs as B}from"react/jsx-runtime";function st({x:e,y:n,onChoiceChange:t,registerActions:r,defaultChoices:o,isStatic:i,renderViewerControls:a,renderMediaControls:s,viewControlsDeps:u,mediaControlsDeps:c,strategies:l,throwOnUnknown:f,backgroundStyle:d,alwaysShowBackground:v,keepCanvasScale:m=!1,enableSizes:p=!1,enableYouTube:g=!0,onClickPaintingAnnotation:A,children:U}){let I=b(),Oe=be(I,["deep-zoom"]),[ve]=Yt(),C=Gt(),P=y(),N=zn(()=>Wo(P),[P]),[h,O]=Pn({strategies:l||["images"],defaultChoices:o?.map(({id:x})=>x)}),ut=h.type==="images"?h.choice:void 0,Fn=zn(()=>m?1:Math.max(1,...h.type==="images"?h.images.map(x=>(x.width||0)/x.target?.spatial.width):[]),[m,h]);Kt(Fn),Ln(()=>{r&&r(O)},[h.annotations]),Ln(()=>{if(o)for(let x of o)typeof x.opacity<"u"&&N.applyStyles({id:x.id},"atlas",{opacity:x.opacity})},[o]),Zo(()=>{t&&t(ut)},[ut]),L(C&&(h.type==="images"||h.type==="empty"||h.type==="textual-content"&&a)?"overlay":"none",`canvas-portal-controls-${I?.id}`,pe.Provider,a?{value:C||null,children:a(h)}:{},[I,C,h,...u||[]]);let _=In({maxWidth:256,maxHeight:256});if(!I)return null;let ct=I.accompanyingCanvas,ae=_&&_.type==="fixed"?V("world-object",{height:I.height,width:I.width,x:e,y:n,children:V("world-image",{uri:_.id,target:{x:0,y:0,width:I.width,height:I.height},display:_.width&&_.height?{width:_.width,height:_.height}:void 0,crop:void 0})}):null;if(h.type==="unknown"){if(ae)return ae;if(f)throw new Error(h.reason||"Unknown image strategy");return null}let lt=B(Go,{children:[ve?V(ge,{page:ve}):null,h.annotations&&h.annotations.pages?h.annotations.pages.map(x=>V(ge,{page:x},x.id)):null,U]}),Hn=h.type==="images"?h.images.length:0;return B(ze,{children:[B("world-object",{height:I.height,width:I.width,x:e,y:n,...Oe,children:[h.type==="empty"||v?V(Le,{style:d}):null,h.type==="textual-content"?h.items.map((x,ye)=>B(ze,{children:[V(Ko,{onClick:A?se=>{se.stopPropagation(),A(x.annotationId,x,se)}:void 0,target:x.target?.spatial||void 0,children:V("div",{"data-textual-content":!0,children:V(he,{enableDangerouslySetInnerHTML:!0,children:x.text})})},ye),lt]})):null,h.type==="images"?B(ze,{children:[h.images.map((x,ye)=>V(we,{isStatic:i,image:x,id:x.id,thumbnail:ye===0?_:void 0,selector:x.selector,enableSizes:p,onClick:A?se=>{se.stopPropagation(),A(x.annotationId,x,se)}:void 0},x.id+ye)),lt]}):null,h.type==="3d-model"?V(Ee,{model:h.model}):null,h.type==="media"?V(ze,{children:h.media.type==="Sound"?B(Ne,{media:h.media,mediaControlsDeps:c,children:[ae,s?s(h):null]}):h.media.type==="Video"?B(ke,{media:h.media,mediaControlsDeps:c,children:[ae,s?s(h):null]}):h.media.type==="VideoYouTube"&&g?B(En,{media:h.media,mediaControlsDeps:c,children:[ae,s?s(h):null]}):null}):null]},`${I.id}/${h.type}/${Hn}`),h.type==="media"&&h.media.type==="Sound"&&ct?V(K,{canvas:ct.id,children:V(st,{renderViewerControls:a})}):null]})}import{Fragment as ei,jsx as D,jsxs as ti}from"react/jsx-runtime";var Xo=On(function(n,t){let r=w(),o=Ae(),i=Ht(),{ViewerControls:a,MediaControls:s}=n.components||{};if(Jo(t,()=>i,[i]),!r)return D("div",{});let u=0;return ti(ei,{children:[n.header,D(M.Viewer,{height:n.height,mode:n.mode,children:o.map((c,l)=>{let f=u;return u+=c.width+(n.spacing||0),D(K,{canvas:c.id,children:D(M.RenderCanvas,{strategies:["3d-model","media","images","empty","textual-content"],renderViewerControls:l===0&&a?()=>D(a,{}):void 0,renderMediaControls:l===0&&s?()=>D(s,{}):void 0,x:f,...n.canvasProps||{},children:n.annotations},c.id)},c.id)})},n.reuseAtlas?"":i.currentSequenceIndex),n.children]})}),M=On(function({children:n,height:t,annotations:r,canvasProps:o,spacing:i,header:a,components:s,mode:u,reuseAtlas:c,...l},f){let d=Z();return D(G,{vault:d,children:D(Ft,{...l,children:D(Xo,{ref:f,height:t,components:s,spacing:i,canvasProps:o,annotations:r,header:a,mode:u,reuseAtlas:c,children:n})})})});M.RenderImage=we;M.RenderCanvas=st;M.RenderAnnotationPage=ge;M.RenderAnnotation=Re;M.Viewer=en;M.CanvasBackground=Le;M.Audio=Ne;M.Video=ke;M.Model=Ee;M.AudioHTML=rt;M.VideoHTML=ot;M.ModelHTML=at;export{Se as a,k as b,q as c,$ as d,G as e,Z as f,gt as g,ht as h,vt as i,K as j,y as k,S as l,J as m,Ae as n,w as o,yt as p,ar as q,He as r,Zi as s,St as t,Xi as u,De as v,At as w,xt as x,fa as y,bt as z,Pt as A,Rt as B,j as C,ue as D,ee as E,te as F,Be as G,Nt as H,Va as I,kt as J,le as K,gr as L,Na as M,hr as N,Vt as O,ka as P,Ea as Q,La as R,za as S,Oa as T,Fa as U,Et as V,zt as W,fe as X,wr as Y,Ft as Z,Ht as _,Dt as $,Ut as aa,_t as ba,$t as ca,Yt as da,Qt as ea,pe as fa,Gt as ga,b as ha,be as ia,oe as ja,Pe as ka,nn as la,fc as ma,mc as na,Je as oa,un as pa,so as qa,uo as ra,co as sa,pc as ta,he as ua,gn as va,vn as wa,yn as xa,xo as ya,Me as za,Sn as Aa,An as Ba,Cn as Ca,Pn as Da,Rn as Ea,In as Fa,Ho as Ga,ie as Ha,El as Ia,Ll as Ja,zl as Ka,Ve as La,M as Ma};