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