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