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