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