react-iiif-vault 1.5.10 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.d.ts +1015 -494
- package/dist/bundle.global.js +54 -87
- package/dist/canvas-panel.cjs +5 -5
- package/dist/canvas-panel.d.cts +8 -5
- package/dist/canvas-panel.d.ts +8 -5
- package/dist/canvas-panel.js +1 -1
- package/dist/chunk-JX3DXSPO.js +48 -0
- package/dist/index-CawyvZZf.d.cts +643 -0
- package/dist/index-yy_738ck.d.ts +643 -0
- package/dist/index.cjs +7 -7
- package/dist/index.d.cts +478 -378
- package/dist/index.d.ts +478 -378
- package/dist/index.js +1 -1
- package/dist/{useRenderingStrategy-BiuSDiXu.d.ts → useRenderingStrategy-PvoNjiMV.d.cts} +10 -10
- package/dist/{useRenderingStrategy-BiuSDiXu.d.cts → useRenderingStrategy-PvoNjiMV.d.ts} +10 -10
- package/dist/{utils-CvRzsfRK.d.cts → utils-BVhGgVd5.d.cts} +18 -18
- package/dist/{utils-C-h4SU3S.d.ts → utils-DyrEcegR.d.ts} +18 -18
- package/dist/utils.d.cts +2 -2
- package/dist/utils.d.ts +2 -2
- package/package.json +6 -5
- package/dist/chunk-2ATWK7I4.js +0 -48
- package/dist/index-BJveLrlu.d.cts +0 -214
- package/dist/index-CrfymD6m.d.ts +0 -214
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import{c as Jt,l as en}from"./chunk-XNDN34SQ.js";import{forwardRef as Sr,useImperativeHandle as fl,useMemo as gl}from"react";import xr,{useContext as Cr,useMemo as br}from"react";import{jsx as Ar}from"react/jsx-runtime";var Rr={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},ze=xr.createContext(Rr),_=()=>Cr(ze);function re({value:e,children:t}){let n=_(),o=br(()=>({...n,...e}),[e,n]);return Ar(ze.Provider,{value:o,children:t})}import{jsx as Pr}from"react/jsx-runtime";function ee({canvas:e,children:t}){return Pr(re,{value:{canvas:e},children:t})}import Tr,{useState as Ir}from"react";import{Vault as tn,globalVault as wr}from"@iiif/helpers/vault";import{jsx as nn}from"react/jsx-runtime";var ae=Tr.createContext({vault:null,setVaultInstance:e=>{}});function de({vault:e,vaultOptions:t,useGlobal:n,resources:o,children:r}){let[a,i]=Ir(()=>e||(n?wr(t):t?new tn(t):new tn));return nn(ae.Provider,{value:{vault:a,setVaultInstance:i},children:nn(re,{value:o||{},children:r})})}import{useContext as Vr}from"react";import Nr from"react";import{useContext as Mr}from"react";var w=()=>{let{vault:e}=Mr(ae);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};import{useEffect as kr,useState as Er}from"react";function M(e,t=[]){let n=w(),[o,r]=Er(()=>e(n.getState(),n));return kr(()=>n.subscribe(a=>e(a,n),a=>{r(a)},!1),t),o}var me=Nr.createContext([]);function Be(){let e=Vr(me);return M(t=>e.map(n=>t.iiif.entities.Canvas[n]).filter(Boolean),[e])}import{globalVault as Lr}from"@iiif/helpers/vault";import{useContext as Or}from"react";function pe(e){let t=Or(ae);return e||(t&&t.vault?t.vault:Lr())}import{useMemo as zr}from"react";function z(e={},t=[]){let{id:n,selector:o}=e,r=_(),a=w(),i=n||r.manifest,s=M(l=>i?l.iiif.entities.Manifest[i]:void 0,[i]);return zr(()=>{if(s)return o?o(s):s},[s,o,...t])}import{useContext as ai}from"react";import{createContext as si,useMemo as li}from"react";import{useEffect as Br,useMemo as Hr,useState as mt}from"react";function on(e,{noCache:t=!1}={}){let n=typeof e=="string"?e:e.id,o=pe(),[r,a]=mt(n),[i,s]=mt(void 0),l=Hr(()=>o.get(n,{skipSelfReturn:!0})||void 0,[n,o]),[u,m]=mt(l);return Br(()=>{(async()=>{try{let f=l&&!t?l:await o.load(n),p=f?f.id||f["@id"]:null;f&&r!==p&&a(p),m(f)}catch(f){s(f)}})()},[n,t]),{isLoaded:!!u,id:r,requestId:n,error:i,resource:u,cached:!!(u&&u===l)}}function rn(e,t){let{id:n,isLoaded:o,error:r,resource:a,requestId:i,cached:s}=on(e,t);return{id:n,isLoaded:o,error:r,manifest:a,requestId:i,cached:s}}import{jsx as qr}from"react/jsx-runtime";function an({manifest:e,children:t}){return qr(re,{value:{manifest:e},children:t})}import{jsx as Dr}from"react/jsx-runtime";function sn({range:e,children:t}){return Dr(re,{value:{range:e},children:t})}function Fr(e,t){for(let n of t.items){if(n.type==="Canvas")return n;if(n.type==="SpecificResource")return n.source;if(n.type==="Range"){let o=Fr(e,e.get(n));if(o)return o}}return null}function pt(e,t){let n=[];for(let o of t.items)if(o.type==="SpecificResource"&&o.source?.type==="Canvas"&&(o.source.id.indexOf("#")!==-1?n.push({id:o.source.id.split("#")[0],type:"Canvas"}):n.push(o.source)),o.type==="Range"&&n.push(...pt(e,e.get(o))),o.type==="SpecificResource"){let r=typeof o.source=="string"?o.source:o.source.id;n.push({id:r,type:"Canvas"})}return n}function fu(e,t,n){for(let o of t.structures){let r=ln(e,e.get(o),n);if(r)return r}return null}function ln(e,t,n){for(let o of t.items){let r=o?.source?.id?.split("#")[0];if(o.type==="SpecificResource"&&o.source===n||o.type==="SpecificResource"&&o.source?.type==="Canvas"&&n===r)return t;if(o.type==="Range"){let a=ln(e,e.get(o),n);if(a)return a}}return null}function vu(e,t,n,o=!1){let r=t.behavior,a=n?e.get(n):null;if(!a)return[];let i=a.behavior,s=o?!1:r.includes("paged"),l=s?!1:r.includes("continuous"),u=s||l?!1:r.includes("individuals"),m=i.includes("facing-pages"),f=i.includes("non-paged");if(m||f||u||o)return[{id:a.id,type:"Canvas"}];let[p,h]=ft(e,t);if(l)return p;let y=p.findIndex(d=>d.id===n);if(y===-1)return[];for(let d of h)if(d.includes(y))return d.map(S=>p[S]);return[{id:a.id,type:"Canvas"}]}function ft(e,t,{disablePaging:n,skipNonPaged:o}={}){let r=t.behavior,a=r.includes("paged"),i=a?!1:r.includes("continuous"),s=a||i?!1:r.includes("individuals"),l=t.type==="Manifest"?t.items:pt(e,t);if(i)return[l,[l.map((y,d)=>d)]];if(s||!a||n)return[l,l.map((y,d)=>[d])];let u=[],m=[],f=()=>{m.length&&(u.push([...m]),m=[])},p=0,h=!1;for(let y=0;y<l.length;y++){let d=e.get(l[y]);if(d.behavior.includes("non-paged")){y===p&&p++,o||(f(),u.push([y]),f());continue}if(y===p||d.behavior.includes("facing-pages")){m.length&&(h=!0),f(),u.push([y]),f();continue}if(m.push(y),h){f(),h=!1;continue}m.length>1&&f()}return m.length&&f(),[l,u]}import{useCallback as He,useMemo as Ur,useRef as Wr,useState as _r}from"react";import{useMemo as $r}from"react";function un(e={},t=[]){let{id:n,selector:o}=e,r=_(),a=n||r.range,i=M(s=>a?s.iiif.entities.Range[a]:void 0,[a]);return $r(()=>{if(i)return o?o(i):i},[i,o,...t])}function cn({startCanvas:e,disablePaging:t}){let n=w(),o=z(),r=un(),[a,i]=_r(void 0),s=r||o;if(!s)throw new Error("Nothing selected");let[l,u]=Ur(()=>ft(n,s,{disablePaging:t}),[n,s,t]),m=Wr(u);if(m.current!==u){let S=m.current[a][0],v=u.findIndex(c=>c.includes(S));m.current=u,i(v)}let f=He(d=>{let S=u.findIndex(v=>v.includes(d));i(S===-1?0:S)},[l,u]),p=He(d=>{let S=l.findIndex(v=>v.id===d);S!==-1?f(S):i(0)},[l,u]),h=He(()=>{i(d=>d>=u.length-1?d:d+1)},[u]),y=He(()=>{i(d=>d<=0?0:d-1)},[u]);return typeof a>"u"&&(e?p(e):i(0)),{visibleItems:u[a]?.map(d=>l[d].id)||[],cursor:a,items:l,sequence:u,hasPrevious:a>0,hasNext:a<u.length-1,setSequenceIndex:i,setCanvasIndex:f,setCanvasId:p,next:h,previous:y}}import{createContext as vt,useContext as Cn,useEffect as Kr,useMemo as Yr}from"react";import{useStore as Te}from"zustand";import{createStore as mn}from"zustand/vanilla";function ku(e){let t=e.service||e.services||[];for(let n of t)if(n.type==="AuthProbeService2")return!0;return!1}function j(e,t,n){let o=t.findIndex(i=>i.service.id===e);if(o===-1)return t;let r=[...t],a=n(r[o]);return a===r[o]?t:(r[o]=a,r)}var pn=()=>mn((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 o=n.service.service.find(r=>r.type==="AuthAccessTokenService2");if(!o)throw new Error("Token service not found");e(()=>({authItems:j(n.id,t().authItems,r=>({...r,isPending:!0}))})),dn(n.service).then(()=>{gt(o).then(r=>{let a=r.expiresIn,i=Date.now()+a*1e3;e(()=>({authItems:j(n.id,t().authItems,s=>({...s,isLoggedIn:!0,isPending:!1,session:{token:r.accessToken,expires:i}}))}))}).catch(r=>{e(()=>({authItems:j(n.id,t().authItems,a=>({...a,isLoggedIn:!1,isPending:!1,error:r.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 o=n.service.service.find(i=>i.type==="AuthLogoutService2");if(!o)return;let r=`${o.id}?origin=${hn()}`,a=window.open(r);e(()=>({authItems:j(n.id,t().authItems,i=>({...i,isLoggedIn:!1,session:null,isPending:!1}))}))},nextAuth:()=>{let n=t().authItems.length,o=t().currentAuth+1;o>=n||e(()=>({currentAuth:o}))},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,o)=>{if(!n.service)return;let r=n.service.find(s=>s.type==="AuthAccessTokenService2"),a=n;if(t().authItems.find(s=>s.service.id===n.id)){e(()=>({authItems:j(n.id,t().authItems,s=>({...s,instances:s.instances+1}))}));return}if(e(()=>({currentAuth:a.profile==="active"?0:t().currentAuth,authItems:[{id:n.id,type:n.profile,service:n,probeId:o,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...t().authItems]})),n.profile==="external"){if(!r)throw new Error("Token service not found");gt(r).then(s=>{e(()=>({authItems:j(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:j(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:s.message}))}))})}if(n.profile==="kiosk"){if(!r)throw new Error("Token service not found");e(()=>({authItems:j(n.id,t().authItems,s=>({...s,isPending:!0}))})),dn(a).then(()=>{gt(r).then(s=>{e(()=>({authItems:j(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:j(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,error:s.message}))}))})})}n.profile},removeService:(n,o)=>{let r=t().currentAuth===t().authItems.findIndex(i=>i.service.id===n.id),a=t().currentAuth;if(r){let i=t().authItems.find(l=>l.service.id===n.id);i&&i.instances>1||(a=t().authItems.findIndex(u=>u.service.id!==n.id&&u.instances>0))}e(()=>({authItems:j(n.id,t().authItems,i=>({...i,instances:i.instances-1})),currentAuth:a}))}})),fn=(e,t)=>mn((n,o)=>({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(!o().service)return;let r=o().service?.id;if(!r){n({status:"error",error:"Service ID not found",errorHeading:{en:["Service ID not found"]}});return}n({status:"probing"});let a=o().token;try{let i=await fetch(r,{headers:a?{Authorization:`Bearer ${o().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(s=>s.json());if(i.status===200)n({status:"success",shouldDisplayResource:!0,error:null,errorHeading:null,errorNote:null,shouldSubstitute:!1,shouldRedirect:!1});else if(i.status<400&&i.status>=300){if(!i.location)throw new Error("Redirect location not found");n({status:"error",shouldDisplayResource:!1,shouldRedirect:!0,redirectResource:i.location||null})}else if(i.status===401)n({status:"error",shouldDisplayResource:!1,shouldRedirect:!1,shouldSubstitute:!!i.substitute,substituteResource:i.substitute||null,error:"Unauthorized",errorHeading:i.heading||{en:["Unauthorized"]},errorNote:i.note||null});else throw new Error("Unknown error")}catch(i){n({status:"error",error:i.message,errorHeading:{en:["Unknown error"]}})}},setToken(r){n({token:r})}}));function gn(e){let t=e.service||e.services||[],n={hasAuth:!1,services:{}};for(let o of t)if(o.type==="AuthProbeService2"){n.services.probe=o,n.hasAuth=!0;let r=o.service.filter(a=>a.type==="AuthAccessService2");r[0]&&(n.services.access=r[0])}return n}async function gt(e,{strict:t=!0}={}){return new Promise((n,o)=>{let r=Math.random().toString(36).substring(7),a=`${e.id}?messageId=${r}&origin=${window.location.origin}`,i=u=>{let m=u.data;if(m.messageId===r){if(t&&m.type!=="AuthAccessToken2"){s(),o("Invalid response, expected type=AuthAccessToken2");return}if(!m.accessToken){s(),o("Invalid response, expected accessToken");return}s(),n(m)}},s=()=>window.removeEventListener("message",i),l=document.createElement("iframe");l.src=a,l.style.display="none",document.body.appendChild(l),window.addEventListener("message",i)})}function hn(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 dn(e){let t=`${e.id}?origin=${hn()}`,n=window.open(t);if(!n)throw new Error("Failed to open window");return new Promise((o,r)=>{let a=setInterval(()=>{n.closed&&(clearInterval(a),o())},500)})}import{useEffect as vn,useMemo as yn}from"react";import{useStore as jr}from"zustand";function Sn(e){let t=yn(()=>gn(e),[e]),n=xn(t.services.access?.id),o=yn(()=>fn(t.services.probe,n),[t.services.probe]),r=jr(o);return vn(()=>{r.status==="unknown"&&!n&&r.probe()},[t.services.probe,r.status]),vn(()=>{n&&(r.setToken(n),r.probe())},[n]),[e,r,t.hasAuth]}import{jsx as qe}from"react/jsx-runtime";var fe=vt(null),Gr=vt(null);Gr.displayName="CurrentAuth";var Qr=vt(null);Qr.displayName="AuthActions";function bn({children:e}){let t=Yr(()=>pn(),[]);return qe(fe.Provider,{value:t,children:e})}function Rn(){return!!Cn(fe)}function Ie(){let e=Cn(fe);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function Xr(){let e=Ie();return Te(e,n=>({login:n.login,logout:n.logout,nextAuth:n.nextAuth,previousAuth:n.previousAuth,setAuth:n.setAuth,addService:n.addService,removeService:n.removeService}))}function Yu(){let e=Ie();return Te(e,t=>t)}function Zr(e){let t=Ie();return Te(t,o=>o.authItems.find(r=>r.service.id===e))}function xn(e){let t=Ie();return Te(t,o=>o.authItems.find(r=>r.id===e)?.session?.token)}function Gu(e){let t=Ie();return Te(t,o=>{let r=o.authItems.find(a=>a.service.id===e);return!r||!r.isLoggedIn||!r.session?null:r.session?.token||null})}function Jr(e){let t=Xr(),n=Zr(e.service.id);return Kr(()=>(t?.addService(e.service,e.probeId),()=>{t?.removeService(e.service,e.probeId)}),[e.service]),n?(n.error||!n.isLoggedIn,e.children):null}function ht(){return null}function An(e){let[t,n,o]=Sn(e.resource),r=e.fallbackComponent||ht,a=e.loadingComponent||ht,i=e.errorComponent||ht,s=n.service,l=null;if(!o||!s)return e.children(t);let u=s.service.filter(m=>m.type==="AuthAccessService2");n.status==="error"&&(l=qe(i,{resource:e.resource,error:n.error||"",heading:n.errorHeading,note:n.errorNote,extra:e.extra})),(n.status==="unknown"||n.status==="probing")&&(l=qe(a,{})),n.status==="success"&&(l=e.children(t));for(let m of u)l=qe(Jr,{service:m,probeId:s.id,children:l},m.id);return l}import{createContext as oi,useContext as rc,useMemo as ri}from"react";import{createStore as ei}from"zustand/vanilla";var ti=e=>e.id||e["@id"];function ni(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?ti(t):void 0,o=null;return ei((r,a)=>({service:t,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!t,hasAutocomplete:t?!!ni(t):!1,errorMessage:"",search(i,s={}){if(!n)throw new Error("No search service found.");o&&!o.signal.aborted&&o.abort(),o=new AbortController;let l=new URLSearchParams;i.q&&l.set("q",i.q),i.motivation&&l.set("motivation",i.motivation),i.date&&l.set("date",i.date),i.user&&l.set("user",i.user),r({loading:!0}),fetch(`${n}?${l.toString()}`,{signal:o.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...s.headers||{}}}).then(async u=>{if(!o?.signal.aborted)if(u.ok){let m=await u.json();r({resources:m.resources,error:!1,errorMessage:""})}else r({resources:[],error:!0,errorMessage:u.statusText})})},clearSearch(){r({resources:[],error:!1,errorMessage:""})},highlightResult(i){let s=a().resources.find(l=>l["@id"]===i);r({highlight:s})},nextResult(){let i=a().resources,s=a().highlight;if(!s){r({highlight:i[0]||null});return}let l=i.findIndex(u=>u["@id"]===s["@id"]);if(l===-1){r({highlight:i[0]||null});return}r({highlight:i[l+1]||i[0]||null})},previousResult(){let i=a().resources,s=a().highlight;if(!s){r({highlight:i[i.length-1]||null});return}let l=i.findIndex(u=>u["@id"]===s["@id"]);if(l===-1){r({highlight:i[i.length-1]||null});return}if(l===0){r({highlight:i[i.length-1]||null});return}r({highlight:i[l-1]||i[i.length-1]||null})}}))};import{useStore as uc}from"zustand";function Tn(){let e=z();return e?e.service.find(t=>t.profile==="SearchService1"||t.profile==="http://iiif.io/api/search/1/search"):void 0}import{jsx as yt}from"react/jsx-runtime";var ge=oi(null);ge.displayName="Search";function In(e){let t=Tn();return e.store?yt(ge.Provider,{value:e.store,children:e.children}):yt(ii,{service:t,children:e.children})}function ii({service:e,children:t}){let n=ri(()=>Pn(e),[e]);return yt(ge.Provider,{value:n,children:t})}import{jsx as $}from"react/jsx-runtime";var we=()=>{},Me=si({setCurrentCanvasId:we,setCurrentCanvasIndex:we,nextCanvas:we,previousCanvas:we,items:[],sequence:[],setSequenceIndex:we,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function ui(e){let t=z(),{cursor:n,visibleItems:o,next:r,sequence:a,items:i,setCanvasIndex:s,setCanvasId:l,previous:u,setSequenceIndex:m,hasNext:f,hasPrevious:p}=cn({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),h=li(()=>({sequence:a,items:i,setCurrentCanvasId:l,nextCanvas:r,previousCanvas:u,totalCanvases:i.length,setCurrentCanvasIndex:s,setSequenceIndex:m,currentSequenceIndex:n,hasNext:f,hasPrevious:p}),[a,i,l,r,u,i,s,m,n]);return t?o.length===0?null:$(Me.Provider,{value:h,children:$(me.Provider,{value:o,children:$(ee,{canvas:o[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),$("div",{children:"Sorry, something went wrong."}))}function wn(e){let t=pe(e.vault),n=rn(e.manifest);if(!n)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),$("div",{children:"Sorry, something went wrong."});if(n.error)return $("div",{children:n.error.toString()});if(!n.isLoaded)return $("div",{children:"Loading..."});let o=$(ui,{...e,children:e.children});return $(de,{vault:t,children:$(an,{manifest:n.id,children:$(bn,{children:$(In,{children:e.rangeId?$(sn,{range:e.rangeId,children:o}):o})})})})}function De(){return ai(Me)}import{ModeContext as Si}from"@atlas-viewer/atlas";import{createContext as xi,useContext as On,useEffect as Ci,useMemo as bi}from"react";import{useStore as Ri}from"zustand";import ci from"mitt";import{createContext as di,useContext as Mn,useEffect as mi}from"react";import{jsx as fi}from"react/jsx-runtime";var pi=ci(),St=di(pi);function Bc({children:e,emitter:t}){return fi(St.Provider,{value:t,children:e})}function kn(){return Mn(St)}function En(e,t,n=[]){let o=Mn(St);mi(()=>{let r=a=>{t(a)};return o.on(e,r),()=>{o.off(e,r)}},[o,e,...n])}import{createHelper as hi}from"polygon-editor";import{createStore as vi}from"zustand/vanilla";function xt(e){let t=Math.max(...e.map(a=>a[0])),n=Math.min(...e.map(a=>a[0])),o=Math.max(...e.map(a=>a[1])),r=Math.min(...e.map(a=>a[1]));for(let a of e)if(a[0]!==n&&a[0]!==t&&a[1]!==r&&a[1]!==o||a[0]<n||a[0]>t||a[1]<r||a[1]>o)return!1;return!0}function he(e){if(!e)return null;if(e.points.length>2){let t=Math.min(...e.points.map(a=>a[0])),n=Math.min(...e.points.map(a=>a[1])),o=Math.max(0,...e.points.map(a=>a[0])),r=Math.max(0,...e.points.map(a=>a[1]));return{x:t,y:n,width:o-t,height:r-n}}return null}function gi(e){return e.type==="SvgSelector"}function $c(e){return e.type==="BoxSelector"}function Ct(e,t){if(gi(e)){let i=e.svgShape==="polyline";if(!e.points||e.points.length===0)return null;if(t){let{width:s,height:l}=t;return{type:"SvgSelector",value:`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${s} ${l}" width="${s}" height="${l}"><${i?"polygon":"polyline"} points="${e.points.map(m=>m.join(",")).join(" ")}" /></svg>`}}return{type:"SvgSelector",value:`<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><g><path d='M${e.points.map(s=>s.join(",")).join(" ")}${i?" Z":""}' /></g></svg>`}}if(!e.spatial)return null;let{x:n,y:o,width:r,height:a}=e.spatial||{};return!r||!a?null:{type:"FragmentSelector",value:`xywh=${~~n},${~~o},${~~r},${~~a}`}}function bt(e,t){if(!e||!e.points.length)return null;if(xt(e.points)){let n=e.points.map(l=>l[0]),o=e.points.map(l=>l[1]),r=Math.min(...n),a=Math.min(...o),i=Math.max(...n)-r,s=Math.max(...o)-a;return Ct({type:"BoxSelector",spatial:{x:r,y:a,width:i,height:s}},t)}return Ct({type:"SvgSelector",points:e.points,svgShape:e.open?"polygon":"polyline"},t)}function Vn(e){if(e.type==="polygon"&&!e.noBox&&e.points&&xt(e.points)){let n=he({open:!1,points:e.points||[]});return Vn({...e,type:"box",selector:n})}if(e.type==="polygon"||e.type==="draw")return{polygon:{points:e.points||[],open:e.open||!1},requestType:e.type,boundingBox:he({points:e.points||[],open:!1}),metadata:{},arguments:e.arguments||{},target:bt({points:e.points||[],open:!1},e.bounds)};let t=e.selector;if(t){let n=[[t.x,t.y],[t.x+t.width,t.y],[t.x+t.width,t.y+t.height],[t.x,t.y+t.height]];return{polygon:{points:n,open:!1},requestType:e.type,boundingBox:t,metadata:{},target:bt({points:n,open:!1},e.bounds),arguments:e.arguments||{}}}return{polygon:{points:[],open:!1},requestType:e.type,boundingBox:null,target:null,metadata:{},arguments:e.arguments||{}}}var yi={shapeId:null,noShape:!0,transitioning:!1,actionIntentType:null,transitionIntentType:null,selectedPoints:[],hasClosestLine:!1,lastCreationTool:null,modifiers:{Alt:!1,Shift:!1,Meta:!1,proximity:0},bounds:null,showBoundingBox:!1,currentModifiers:{},validIntentKeys:{},pointerInsideShape:!1,closestPoint:null,transitionModifiers:null,selectedStamp:null,bezierLines:[],boxMode:!1,fixedAspectRatio:!1,cursor:"",enabledTools:["pointer","pen","box","lineBox","stamp","hand","line","pencil"],canDelete:!0,canDeselect:!0,isToolSwitchingLocked:!1,currentTool:"box",snapEnabled:!1,snapToPoints:!1,snapToLines:!1,snapToIntersections:!1,snapToGrid:!1,snapToParallel:!1};function Nn({events:e,enabledTools:t,keyboardShortcutMapping:n,keyboardShortcutsEnabled:o=!1,debug:r}){let a=vi((s,l)=>{let u=null,f=hi({emitter:e,keyboardShortcutsEnabled:o,keyboardShortcutMapping:n,enabledTools:t,customSetState:p=>{r&&console.log("partial state",p),s(h=>({polygonState:{...h.polygonState,...p}}))}},p=>{s(h=>h.tool.requestId?{polygon:{...p,id:h.tool.requestId}}:{polygon:{id:void 0,points:[],open:!0}}),e.emit("atlas.polygon-update",p)});return{mode:"explore",tool:{enabled:!1,requestId:null,canvasId:null},requestType:null,requests:{},history:f.history,polygon:null,validRequestIds:[],metadata:{},stableViewport:null,canvasRelativePositions:{},canvasViewports:{},polygons:f,polygonState:yi,setMetadata:(p,h)=>{let y=h||l().tool.requestId;y&&s(d=>({metadata:{...d.metadata,[y]:{...d.metadata[y]||{},...p}}}))},setToolCanvasId:p=>{s(h=>({tool:{...h.tool,canvasId:p}}))},switchTool:{pointer(){s({mode:"sketch"}),i.tools.setTool("pointer")},hand(){s({mode:"explore"}),i.tools.setTool("hand")},draw(){s({mode:"sketch"}),i.tools.setTool("pencil")},pen(){s({mode:"sketch"}),i.tools.setTool("pen")},line(){s({mode:"sketch"}),i.tools.setTool("line")},lineBox(){s({mode:"sketch"}),i.tools.setTool("lineBox")},box(){s({mode:"sketch"}),i.tools.setTool("box")},triangle(){s({mode:"sketch"}),i.tools.setTool("stamp"),i.stamps.triangle()},hexagon(){s({mode:"sketch"}),i.tools.setTool("stamp"),i.stamps.hexagon()},circle(){s({mode:"sketch"}),i.tools.setTool("stamp"),i.stamps.circle()},remove(){let p=l();p.tool.requestId&&(f.setShape({points:[],open:!0}),p.cancelRequest(p.tool.requestId))}},reset:()=>{let p=l();p.tool.requestId&&p.cancelRequest(p.tool.requestId)},setPolygonState:p=>s({polygonState:typeof p=="function"?p(l().polygonState):p}),getRequestId:()=>{let p=Math.random().toString(36).slice(2);return s(h=>({validRequestIds:[...h.validRequestIds,p]})),{requestId:p,clear:()=>{l().tool.requestId,s(h=>({tool:h.tool.requestId===p?{enabled:!1,requestId:null,canvasId:null}:h.tool,validRequestIds:h.validRequestIds.filter(y=>y!==p)}))}}},cancelRequest:p=>{let h=p||l().tool.requestId;h&&(s(y=>({mode:"explore",tool:y.tool.requestId===h?{enabled:!1,requestId:null,canvasId:null}:y.tool,validRequestIds:y.validRequestIds.filter(d=>d!==h)})),e.emit("atlas.request-cancelled",{id:h}))},requestAnnotation:async(p,h)=>{let d={...l().requests,[h.requestId]:p},S=Vn(p);r&&console.log("requestAnnotation",{response:S,request:p});try{let{points:v=[],open:c=!0}=S.polygon||{},{requestId:g,canvasId:x=null,toolId:C}=h,R=C,I=l(),P=I.validRequestIds.includes(g),L=S.requestType;return r&&console.log("setting points",{requestType:L,points:v,open:c}),!P||I.tool.enabled?null:(f.setShape({id:g,points:v,open:c}),L==="polygon"&&(R=R||"pen",f.tools.setTool("pen")),L==="draw"&&(R=R||"draw",f.tools.setTool("pencil")),L==="box"&&(R=R||"box",f.tools.setTool("box")),L==="target"?(R=R||"box",f.tools.setTool("box"),f.lockAspectRatio(),f.tools.lockToolSwitching(),f.tools.setCanDeselect(!1),f.tools.setCanDelete(!1)):(f.tools.unlockToolSwitching(),f.tools.setCanDeselect(!0),f.tools.setCanDelete(!0)),p.bounds&&f.setBounds(p.bounds),e.emit("atlas.annotation-request",{id:g}),s({polygon:{id:g,points:v,open:c},mode:"sketch",requestType:L,tool:{enabled:!0,requestId:g,canvasId:x},requests:d}),R?I.switchTool[R]?.():v.length===0&&I.switchTool.box(),(typeof p.selectByDefault>"u"&&v.length&&L==="box"||p.selectByDefault)&&I.switchTool.pointer(),new Promise(oe=>{let T=k=>{k.id===g&&(s(E=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(E.requests).filter(([H])=>H!==g))})),e.off("atlas.request-cancelled",T),e.off("atlas.annotation-completed",b),oe(null))},b=k=>{k.id===g&&(s(E=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(E.requests).filter(([H])=>H!==g))})),e.off("atlas.annotation-completed",b),e.off("atlas.request-cancelled",T),oe(k))};e.on("atlas.request-cancelled",T),e.on("atlas.annotation-completed",b)}))}catch(v){return console.error(v),null}},completeRequest:p=>{let h=l().tool.requestId;if(typeof p=="string"&&p&&p!==h)return;let y=h?l().requests[h]?.arguments||{}:{},d=h?l().metadata[h]||{}:{},S=l().polygonState.bounds,v=l().polygon;v&&(e.emit("atlas.annotation-completed",{id:v.id,polygon:v,requestType:l().requestType,target:bt(v,S),canvasId:l().tool.canvasId,boundingBox:he(v),metadata:d,arguments:{...y}}),f.setShape(null))},setAtlasRuntime:p=>{u=p,e.emit("atlas.ready",{runtime:p}),i.setScale(1/u._lastGoodScale),u.world.addLayoutSubscriber((h,y)=>{(h==="event-activation"||h==="zoom-to"||h==="go-home")&&u?._lastGoodScale&&!Number.isNaN(u._lastGoodScale)&&i.setScale(1/u._lastGoodScale)})},clearAtlasRuntime:()=>{u=null,s({stableViewport:null})},setCanvasRelativePosition:(p,h)=>{s(y=>({canvasRelativePositions:{...y.canvasRelativePositions,[p]:h}}))},clearCanvasRelativePosition:p=>{s(h=>{let y={...h.canvasRelativePositions};return delete y[p],{canvasRelativePositions:y}})},changeMode:p=>{s({mode:p})},nudgeLeft:()=>{},nudgeRight:()=>{},nudgeUp:()=>{},nudgeDown:()=>{},zoomIn:()=>{u?.world?.zoomIn()},zoomOut:()=>{u?.world?.zoomOut()},goHome:()=>{u?.world?.goHome()}}}),i=a.getState().polygons;return e.on("atlas.annotation-request",()=>{i.clock.start((s,l,u)=>{e.emit("atlas.polygon-render",{state:s,slowState:l,dt:u})},s=>{typeof s=="object"?a.setState({polygonState:s}):a.setState(l=>({polygonState:s(l.polygonState)}))})}),e.on("atlas.annotation-completed",()=>{i.clock.stop()}),e.on("atlas.request-cancelled",()=>{i.clock.stop()}),a}import{jsx as Ln}from"react/jsx-runtime";var ve=xi(null);function D(){return On(ve)}var Rt={};function zn(e="atlas"){return Rt[e]?.getState()}function ke({children:e,name:t="atlas",existing:n,atlasStoreConfig:o}){let r=kn(),a=On(ve),i=bi(()=>n||a||Nn({events:r,...o||{}}),[r,n,a]),s=Ri(i,l=>l.mode);return Ci(()=>{let l=t;return l&&(Rt[l]=i),()=>{l&&delete Rt[l]}},[i,t]),Ln(ve.Provider,{value:i,children:Ln(Si.Provider,{value:s||"explore",children:e})})}import{mergeStyles as ki,RegionHighlight as Ei}from"@atlas-viewer/atlas";import{useMemo as Bn}from"react";import{createEventsHelper as Ai}from"@iiif/helpers/events";function Fe(e,t){let n=w(),o=Bn(()=>Ai(n),[n]),r=M(()=>e&&e.id?n.getResourceMeta(e.id,"eventManager"):null,[e]);return Bn(()=>e?o.getListenersAsProps(e,t):{},[r,e,n,t])}import{useMemo as Pi}from"react";import{createStylesHelper as Ti}from"@iiif/helpers/styles";function ye(e,t){let n=w(),o=Pi(()=>Ti(n),[n]);return M(()=>{if(!e)return null;let r=o.getAppliedStyles(e.id);return r?t?r[t]:r:void 0},[e,t])}import{useMemo as Vi}from"react";import{useMemo as Ii}from"react";import{expandTarget as wi}from"@iiif/helpers/annotation-targets";function $e(e={},t=[]){let{id:n,selector:o}=e,r=_(),a=w(),i=n||r.annotation,s=M(u=>i?u.iiif.entities.Annotation[i]:void 0,[i]),l=M(u=>s&&s.body?s.body.map(m=>m?m.type==="SpecificResource"?{...m,source:a.get(m)}:m?u.iiif.entities[m.type][m.id]:null:null).filter(Boolean):[],[s]);return Ii(()=>{if(!s)return;let u={...s,body:l,target:wi(s.target,{typeMap:a.getState().iiif.mapping})};return o?o(u):u},[s,o,l,...t])}import{useMemo as Mi}from"react";function A(e={},t=[]){let{id:n,selector:o}=e,r=_(),a=n||r.canvas,i=M(s=>a?s.iiif.entities.Canvas[a]:void 0,[a]);return Mi(()=>{if(i)return o?o(i):i},[i,o,...t])}import{jsx as Ni}from"react/jsx-runtime";var Ue=({id:e,style:t,className:n,interactive:o})=>{let r=$e({id:e}),a=ye(r,"atlas"),i=ye(r,"html"),s=Fe(r,["atlas"]),l=A(),u=Vi(()=>ki(t,a),[t,a]);return l&&r&&r.target&&r.target.selector&&r.target.selector.type==="BoxSelector"&&r.target.source&&(r.target.source.id===l.id||r.target.source===l.id)?Ni(Ei,{id:r.id,isEditing:!0,region:r.target.selector.spatial,style:u,className:i?.className||n,interactive:!!(i?.href||o),href:i?.href||null,title:i?.title||null,hrefTarget:i?.target||null,onClick:()=>{},...s}):null};import{Fragment as Oi}from"react";import{useMemo as Li}from"react";function Hn(e={},t=[]){let{id:n,selector:o}=e,r=_(),a=n||r.annotationPage,i=M(s=>a?s.iiif.entities.AnnotationPage[a]:void 0,[a]);return Li(()=>{if(i)return o?o(i):i},[i,...t])}import{jsx as qn}from"react/jsx-runtime";var Ee=({className:e,page:t})=>{let n=Hn({id:t.id})||t,o=ye(n,"atlas"),r=ye(n,"html");return M(a=>n.id?a.iiif.entities.AnnotationPage[n.id]:null,[]),qn(Oi,{children:n.items?.map(a=>qn(Ue,{id:a.id,style:o,className:r?.className||e},a.id))})};import{createContext as Pt,useContext as Tt}from"react";import{jsx as At}from"react/jsx-runtime";var Dn=Pt(null),Fn=Pt(null),$n=Pt(null);function Qd(){let e=Tt(Dn);if(!e)throw new Error("Ctx not found");return e}function Xd(){let e=Tt(Fn);if(!e)throw new Error("Ctx not found");return e}function Zd(){let e=Tt($n);if(!e)throw new Error("Ctx not found");return e}function We({actions:e,state:t,children:n,currentTime:o,progress:r,element:a}){return At($n.Provider,{value:{currentTime:o,progress:r,element:a},children:At(Fn.Provider,{value:e,children:At(Dn.Provider,{value:t,children:n})})})}import{useMemo as zi}from"react";import{expandTarget as Bi}from"@iiif/helpers";function _e(){let e=z(),t=A();return zi(()=>{if(!e||!t||!e.start)return null;let n=Bi(e.start);return!n||n.source.id!==t.id||!n||!n.selector||n.selector.type!=="TemporalSelector"?null:n.selector.temporal},[e,t])}import{useCallback as Q,useEffect as It,useReducer as Hi,useRef as je}from"react";function Un(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function qi(e,t){switch(t.type){case"RESET":return t.state;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 wt(e){let t=Math.round(e);return`${Math.floor(t/60)}:${`${t%60}`.padStart(2,"0")}`}function Se(e){let[t,n]=Hi(qi,Un(e.duration));It(()=>{n({type:"RESET",state:Un(e.duration)})},[e.duration]);let o=je(null),r=je(null),a=je(null),i=je(!1),s=Q(()=>{r.current&&o.current&&(r.current.innerHTML=wt(o.current.currentTime),a.current&&(a.current.style.width=`${o.current.currentTime/e.duration*100}%`),i.current!==o.current.muted&&(i.current=o.current.muted,n(o.current.muted?{type:"MUTE"}:{type:"UNMUTE"})))},[e.duration]),l=Q(()=>{o.current&&(n({type:"PLAY_REQUESTED"}),o.current.play().then(()=>{n({type:"PLAY"})}),s())},[s]),u=Q(()=>{o.current&&(o.current.duration>0&&o.current.paused?l():m())},[s]),m=Q(()=>{o.current&&(o.current.pause(),n({type:"PAUSE"}),s())},[s]),f=Q(()=>{o.current&&(o.current.muted=!o.current.muted,n(o.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),p=Q(()=>{o.current&&(o.current.muted=!0,n({type:"MUTE"}))},[]),h=Q(()=>{o.current&&(o.current.muted=!1,n({type:"UNMUTE"}))},[]),y=Q(v=>{o.current&&(o.current.muted=!1,o.current.volume=v/100,n({type:"SET_VOLUME",volume:v}))},[]),d=Q(v=>{o.current&&(o.current.currentTime=Math.max(0,Math.min(v*e.duration,e.duration)),s())},[]),S=Q(v=>{if(o.current){let c=typeof v=="function"?v(o.current.currentTime):v;o.current.currentTime=Math.max(0,Math.min(c,e.duration)),s()}},[]);return It(()=>{let v=setInterval(()=>{s()},350);return()=>clearInterval(v)},[s,e.duration]),It(()=>{let v=()=>{n({type:"FINISHED"})},c=o.current;return c?.addEventListener("ended",v),()=>c?.removeEventListener("ended",v)},[]),[{element:o,currentTime:r,progress:a},t,{play:l,pause:m,playPause:u,mute:p,unmute:h,toggleMute:f,setVolume:y,setDurationPercent:d,setTime:S}]}import{createContext as Wn,useContext as Di,useEffect as Fi}from"react";var Mt=Wn(()=>{}),kt=Wn(()=>{});function q(e,t,n,o,r=[]){let a=Di(e==="portal"?kt:Mt);Fi(()=>(e!=="none"&&a(t,n,o),()=>{a(t,null)}),[t,e,a,...r])}import{jsx as $i,jsxs as Ui}from"react/jsx-runtime";function Et({media:e,startTime:t,children:n}){let[{element:o,currentTime:r,progress:a},i,s]=Se({duration:e.duration}),l=t?`${e.url}#t=${t}`:e.url;return Ui(We,{state:i,actions:s,currentTime:r,progress:a,element:o,children:[$i("audio",{ref:o,src:l}),n]},e.url)}function Ke({media:e,mediaControlsDeps:t,audioCopmonent:n=Et,children:o}){let r=_e();return q("portal","audio",n,{media:e,startTime:r?r.startTime:null,children:o},[e,r,...t||[]]),null}import{createContext as Wi,useContext as _i}from"react";var se=Wi(null);se.displayName="Strategy";function V(){let e=_i(se);if(!e)throw new Error("useStrategy must be used within a StrategyProvider");return e}import{Fragment as ji,jsx as Vt,jsxs as Ki}from"react/jsx-runtime";function Nt({model:e}){return Ki(ji,{children:[Vt("style",{children:`
|
|
2
|
+
.model-container {
|
|
3
|
+
position: absolute;
|
|
4
|
+
top: 0;
|
|
5
|
+
bottom: 0;
|
|
6
|
+
left: 0;
|
|
7
|
+
right: 0;
|
|
8
|
+
background: #000;
|
|
9
|
+
z-index: 13;
|
|
10
|
+
display: flex;
|
|
11
|
+
justify-content: center;
|
|
12
|
+
pointer-events: visible;
|
|
13
|
+
}
|
|
14
|
+
`}),Vt("div",{className:"model-container",children:Vt("model-viewer",{"interaction-prompt":"none",style:{width:"100%",height:"100%"},"camera-controls":"","ar-status":"not-presenting",src:e.id})})]})}function Ye({model:e,name:t}){return q("overlay",`model-${t}`,Nt,{model:e},[e]),null}import{jsx as Yi}from"react/jsx-runtime";function _n(){let{strategy:e}=V();return e.type!=="3d-model"?null:Yi(Ye,{model:e.model})}import{createContext as Gi,useContext as Qi}from"react";var Ge=Gi(null);Ge.displayName="Controls";function F(){let e=Qi(Ge);if(!e)throw new Error("useStrategy must be used within a StrategyProvider");return e}import{Fragment as Xi,jsx as Qe,jsxs as Zi}from"react/jsx-runtime";function jn(){let{strategy:e}=V(),{renderViewerControls:t,viewControlsDeps:n}=F(),o=A(),r=o?.accompanyingCanvas,a=o?.placeholderCanvas;return Zi(Xi,{children:[e.type==="media"&&e.media.type==="Sound"&&r?Qe(ee,{canvas:r.id,children:Qe(le,{renderViewerControls:t,viewControlsDeps:n})}):null,e.type==="media"&&e.media.type==="Sound"&&a&&!r?Qe(ee,{canvas:a.id,children:Qe(le,{renderViewerControls:t,viewControlsDeps:n})}):null]})}import{createContext as oa,useContext as ra,useMemo as ia}from"react";import{useCallback as Yn,useLayoutEffect as ea,useMemo as ta,useRef as na}from"react";import{entityActions as Lt}from"@iiif/helpers/vault/actions";import{useMemo as Ji}from"react";function Kn(){let t=w().getStore();return Ji(()=>n=>t.dispatch(n),[t])}function Gn(e){return typeof e!="string"&&e&&e.bindToVault}function Qn(){let e=w(),t=na([]),n=Kn(),o=ta(()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);ea(()=>{let s={id:o,type:"AnnotationPage",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],rendering:[],service:[]};n(Lt.importEntities({entities:{AnnotationPage:{[s.id]:s}}}))},[o]);let r=M(s=>o&&s.iiif.entities.AnnotationPage[o]||null,[o]),a=Yn((s,l)=>{if(o){if(Gn(s)){let f=s;f.__vault||f.bindToVault(e),s=typeof f.source=="string"?f.source:f.source.id,t.current[s]=f}else typeof s!="string"&&(s=s.id);let u=e.get({id:o,type:"AnnotationPage"}),m=e.get({id:s,type:"Annotation"});u&&m&&(u.items.find(f=>f.id===m.id)||n(Lt.addReference({id:o,type:"AnnotationPage",key:"items",reference:{id:s,type:"Annotation"},index:l})))}},[o]),i=Yn(s=>{o&&(Gn(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:o,type:"AnnotationPage"})&&n(Lt.removeReference({id:o,type:"AnnotationPage",key:"items",reference:{id:s,type:"Annotation"}})))},[o]);return[r,{addAnnotation:a,removeAnnotation:i}]}import{jsx as aa}from"react/jsx-runtime";var Xn=oa(null);function Zn(){let e=ra(Xn);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function Jn({children:e}){let[t,{addAnnotation:n,removeAnnotation:o}]=Qn();return aa(Xn.Provider,{value:ia(()=>({fullPage:t,addAnnotation:n,removeAnnotation:o}),[t]),children:e})}import{Fragment as sa,jsx as eo,jsxs as la}from"react/jsx-runtime";function to({children:e}){let{strategy:t}=V(),[n]=Zn();return t.type!=="images"?null:la(sa,{children:[n?eo(Ee,{page:n}):null,t.annotations&&t.annotations.pages?t.annotations.pages.map(o=>eo(Ee,{page:o},o.id)):null,e]})}import{useEffect as fa,useMemo as ga,useRef as ha,useState as va}from"react";import{useEffect as ua}from"react";var no=(e,t=[])=>{let n=w();ua(()=>{e(n)},[n,...t])};import ca,{useContext as da}from"react";import{ImageServiceLoader as ma}from"@iiif/helpers/image-service";var pa=ca.createContext(new ma);function oo(){return da(pa)}import{createThumbnailHelper as ya}from"@iiif/helpers/thumbnail";function xe(e,t,{canvasId:n,manifestId:o}={}){let r=w(),a=oo(),i=ga(()=>ya(r,{imageServiceLoader:a}),[r,a]),[s,l]=va(),u=z(o?{id:o}:void 0),m=A(n?{id:n}:void 0),f=m||u,p=ha(!1);if(fa(()=>(p.current=!1,()=>{p.current=!0}),[]),!f)throw new Error("Must be called under a manifest or canvas context.");return no(h=>{i.getBestThumbnailAtSize(f,e,t).then(y=>{y.best&&!p.current&&l(y.best)})},[f]),s}import{jsx as ro}from"react/jsx-runtime";function Ce({x:e=0,y:t=0}){let n=A(),o=xe({maxWidth:256,maxHeight:256});return!n||!o||o.type!=="fixed"?null:ro("world-object",{height:n.height,width:n.width,x:e,y:t,children:ro("world-image",{uri:o.id,target:{x:0,y:0,width:n.width,height:n.height},display:o.width&&o.height?{width:o.width,height:o.height}:void 0,crop:void 0})})}import{Fragment as xa,jsx as io,jsxs as Sa}from"react/jsx-runtime";function ao({as:e}){let{strategy:t}=V(),{renderMediaControls:n,mediaControlsDeps:o}=F();return t.type!=="media"||t.media.type!=="Sound"?null:io(xa,{children:Sa(Ke,{media:t.media,mediaControlsDeps:o,audioCopmonent:e,children:[io(Ce,{}),n?n(t):null]},t.media.url)})}import{useLayoutEffect as Da,useMemo as Fa}from"react";import Ca from"mitt";import{createStore as ba}from"zustand/vanilla";function so({currentKeyFrameIndex:e,keyframes:t,targetTime:n,currentTime:o}){if(o<=n){let r=t.findIndex(s=>s.time>n);if(r===-1)return[e,[]];let a={},i=t.slice(e,r);for(let s of i)s.type==="enter"&&(a[s.id]=s),s.type==="exit"&&(a[s.id]?delete a[s.id]:a[s.id]=s);return[r,Object.values(a)]}return[e,[]]}function lo({complexTimeline:e,startTime:t=0}){let n=Ca(),o={},r={progress:null,currentTime:null},a=0,i=null,s=0,l=null;function u(){let c=S.getState().visibleElements,g=o,x=[],C=Object.keys(g);for(let R of C){let I=g[R],P=c[R];I&&P&&x.push(I)}return x}function m(){return Object.keys(o).map(c=>o[c])}function f(v){r.currentTime&&(r.currentTime.innerHTML=wt(v),r.progress&&(r.progress.style.width=`${v/e.duration*100}%`))}let p=()=>{let v=S.getState(),c=v.currentPrime;if(!c)return;let g=o,x=v.visibleElements,C=Object.keys(g);for(let R of C){let I=g[R],P=x[R];if(I&&R!==c.id&&P){let L=s-P.time*1e3;Math.abs(s-P.time*1e3-I.currentTime*1e3)>300&&(I.currentTime=L/1e3)}}},h=(v=0)=>{let c=v-a,g=S.getState();if(g.isPlaying){let x=g.currentPrime;if(x){let P=o[x.id];P&&(P.paused?s+=c:s=(x.time+P.currentTime)*1e3)}else s+=c;let C=s/1e3;if(C>g.duration){S.getState().setTime(0),S.setState({isPlaying:!1}),y(),f(0);return}f(C);let[R,I]=so({currentTime:C,currentKeyFrameIndex:g.nextKeyframeIndex,keyframes:g.complexTimeline.keyframes,targetTime:C});I.length&&g.applyKeyframes(R,I)}a=v,i=requestAnimationFrame(h)},y=()=>{i&&cancelAnimationFrame(i)},d=(v,c)=>{},S=ba((v,c)=>({complexTimeline:e,elements:{},visibleElements:{},isBuffering:!1,bufferMap:{},isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,isReady:!1,volume:100,duration:e.duration,clockStartRequests:0,clockStartTime:0,primeTime:0,currentPrime:null,clockRunning:!1,nextKeyframeIndex:0,startClock:()=>{c().clockRunning||(h(),l=setInterval(p,500)),v({clockRunning:!0,clockStartRequests:c().clockStartRequests+1})},applyKeyframes(g,x){let C=c(),R={...C.visibleElements},I=C.currentPrime;for(let P of x)P.type==="enter"&&(R[P.id]=P,n.emit("complex-timeline.enter",{id:P.id})),P.type==="exit"&&(R[P.id]=null,n.emit("complex-timeline.exit",{id:P.id})),P.isPrime&&(I=P);v({nextKeyframeIndex:g,visibleElements:R,currentPrime:I})},stopClock:()=>{let g=c().clockStartRequests;if(g!==0){if(g===1){y(),l&&clearInterval(l),v({clockRunning:!1,clockStartRequests:0});return}v({clockStartRequests:g-1})}},setElement:(g,x)=>{o[g]=x;let C=Object.keys(o),R=c().complexTimeline;d(x,g),R.items.filter(P=>P.type!=="Image"&&P.type!=="Text").every(P=>C.includes(P.annotationId))&&!c().isReady&&(n.emit("complex-timeline.ready",{complexTimeline:R}),v({isReady:!0}))},removeElement:g=>{delete o[g]},mute(){for(let g of m())g.muted=!0;v({isMuted:!0})},unmute(){for(let g of m())g.muted=!1;v({isMuted:!1})},play(){if(!c().isPlaying){for(let x of u())x.play();v({isPlaying:!0})}},pause(){if(c().isPlaying){for(let x of u())x.pause();v({isPlaying:!1})}},playPause(){let g=c();g.isPlaying?g.pause():g.play()},setDurationPercent(g){let C=c().duration*g;c().setTime(C)},setTime(g){let x=c(),C=s/1e3,R=typeof g=="function"?g(C):g,I=x.nextKeyframeIndex;if(C>R){v({visibleElements:{},currentPrime:null});let E=Object.keys(x.visibleElements);for(let H of E)n.emit("complex-timeline.exit",{id:H});C=0,I=0}let[P,L]=so({currentTime:C,currentKeyFrameIndex:I,keyframes:x.complexTimeline.keyframes,targetTime:R});x.applyKeyframes(P,L),s=R*1e3;let T=S.getState().visibleElements,b=o,k=Object.keys(T);for(let E of k){let H=T[E];if(H){let G=b[E];G&&(G.currentTime=(s-H.time*1e3)/1e3)}}f(R)},setVolume(g){for(let x of m())x.volume=Math.min(1,Math.max(0,g/100));v({volume:g})},toggleMute(){let g=c();g.isMuted?(g.unmute(),v({isMuted:!1})):(g.mute(),v({isMuted:!0}))},clearProgressElement(){r.progress=null},setProgressElement(g){r.progress=g},setCurrentTimeElement(g){r.currentTime=g},clearCurrentTimeElement(){r.currentTime=null}}));return n.on("complex-timeline.enter",v=>{let c=S.getState(),g=v.id,x=o[g];x&&c.isPlaying&&x.play()}),n.on("complex-timeline.exit",v=>{let c=S.getState(),g=v.id,x=o[g];x&&(x.currentTime=0,x.pause())}),S.getState().setTime(t),{store:S,emitter:n}}import{HTMLPortal as $a}from"@atlas-viewer/atlas";import{Fragment as Co,useMemo as bo}from"react";import{HTMLPortal as Ea}from"@atlas-viewer/atlas";import{getId as Va}from"@iiif/parser/image-3";import Ra,{useContext as Aa}from"react";import{imageServices as Pa}from"@iiif/helpers/image-service";import{useStore as Xe}from"zustand";var uo=Ra.createContext(Pa.store);uo.displayName="ImageServicesHelper";function Ze(){return Aa(uo)}function co(e){let t=Ze();return Xe(t,({loaded:n})=>n[e])}function Je(){let e=Ze();return Xe(e,({loadServiceSync:t})=>t)}function mo(){let e=Ze();return Xe(e,({loaded:t})=>t)}function Lp(){let e=Ze();return Xe(e,({loadService:t})=>t)}import be,{useMemo as Ot}from"react";import{jsx as X}from"react/jsx-runtime";var fo=be.createContext("en"),go=be.createContext({}),ho=be.createContext(null);function Hp(e){return X(go.Provider,{value:e.translations,children:e.children})}function qp(e){return X(fo.Provider,{value:e.language,children:e.children})}function Dp(e){return X(ho.Provider,{value:e.convert,children:e.children})}function vo(){return be.useContext(ho)}function zt(){return be.useContext(fo)}function yo(){return be.useContext(go)}function po(e){return e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):e}function Ta({as:e,language:t,children:n,viewingDirection:o,...r}){let a=zt();return Ot(()=>po(a)===po(t),[a,t])?e?X(e,{...r,children:n}):X("span",{...r,children:n}):e?X(e,{...r,lang:t,dir:o,children:n}):X("span",{...r,lang:t,dir:o,children:n})}function So(e,t,n){if(t.length===0)return;if(t.length===1)return t[0];if(t.indexOf(e)!==-1)return e;let o=e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):null;if(o&&t.indexOf(o)!==-1)return o;for(let r of n)if(t.indexOf(r)!==-1)return r;return t.indexOf("none")!==-1?"none":t.indexOf("@none")!==-1?"@none":t[0]}var Ia=(e,t=[])=>{let n=zt();return Ot(()=>{let o=e();return So(n,o,[])},[n,...t])};function ue(e,t,n,o){return t?n?n(e[t]||t,o||"none"):e[t]||t:""}function wa(e,t,n=`
|
|
15
|
+
`,o={}){let r=vo(),a=Ia(()=>Object.keys(e||{}),[e]);return[Ot(()=>{if(!e)return ue(o,t,r)||"";if(typeof e=="string")return ue(o,e,r);let i=a?e[a]:void 0;return i?typeof i=="string"?i:i.map(s=>ue(o,s,r,a)).join(n):""},[a,t,e]),a]}function Fp(){let e=zt(),t=yo(),n=vo();return function(r,a="",i=`
|
|
16
|
+
`,s=t){let l=Object.keys(r||{}),u=So(e,l,[]);if(!r)return ue(s,a,n)||"";if(typeof r=="string")return ue(s,r,n);let m=u?r[u]:void 0;return m?typeof m=="string"?ue(s,m,n,u):m.map(f=>ue(s,f,n,u)).join(typeof i<"u"?i:`
|
|
17
|
+
`):""}}function Ve({as:e,defaultText:t,enableDangerouslySetInnerHTML:n,children:o,separator:r,...a}){let i=yo(),[s,l]=wa(o,t,r,i);return l?X(Ta,{...a,as:e,language:l,title:n?void 0:s,dangerouslySetInnerHTML:n?{__html:s}:void 0,children:n?void 0:s}):e?X(e,{...a,children:s}):X("span",{...a,title:n?void 0:s,dangerouslySetInnerHTML:n?{__html:s}:void 0,children:n?void 0:s})}import{isImageServiceLevel as Ma}from"@iiif/parser/image-3";import{useMemo as Bt}from"react";import{jsx as et,jsxs as ka}from"react/jsx-runtime";var Ht=e=>{let t=e.format||"jpg",n=e.width/(e.crop?.width||e.tiles.width),o=e.tiles.imageService.sizes||[],r=e.enableThumbnail,a=e.enableSizes,i=Bt(()=>{let u=e.tiles.imageService.id||e.tiles.imageService["@id"];return u?.endsWith("/info.json")?u.slice(0,-1*10):u},[e.tiles.imageService.id,e.tiles.imageService["@id"]]),s=Bt(()=>{let u=e.tiles.imageService.tiles||[];if(!u.length){let m=e.width,f=[1],p=1;for(;Math.pow(2,p)<m;)p=p*2,f.push(p);return(e.tiles.imageService.maxArea||e.tiles.imageService.maxWidth||e.tiles.imageService.maxHeight)&&Ma(2,e.tiles.imageService)?[{width:256,height:256,scaleFactors:f}]:[]}return u},[e.tiles.imageService,e.width]),l=Bt(()=>{let u=e.tiles.imageService;return(u?u["@context"]?Array.isArray(u["@context"])?u["@context"]:[u["@context"]]:[]:[]).indexOf("http://iiif.io/api/image/3/context.json")!==-1},[e.tiles.imageService.id,e.tiles.imageService]);return et("world-object",{rotation:e.rotation,scale:n,height:e.crop?.height||e.tiles.height,width:e.crop?.width||e.tiles.width,x:e.x,y:e.y,onClick:e.onClick,children:ka("composite-image",{id:e.tiles.imageService.id,width:e.crop?.width||e.tiles.width,height:e.crop?.height||e.tiles.height,crop:e.crop,renderOptions:e.renderOptions,children:[r&&e.tiles.thumbnail?et("world-image",{priority:!0,uri:e.tiles.thumbnail.id,target:{width:e.tiles.width,height:e.tiles.height},display:{width:e.tiles.thumbnail.width,height:e.tiles.thumbnail.height},crop:e.crop}):null,a&&o.map((u,m)=>et("world-image",{uri:`${i}/full/${u.width},${l?u.height:""}/0/default.${t}`,target:{width:e.tiles.width,height:e.tiles.height},display:{width:u.width,height:u.height},crop:e.crop},m)),s.map(u=>(u.scaleFactors||[]).map(m=>et("tiled-image",{uri:e.tiles.imageService.id,display:{width:e.tiles.width,height:e.tiles.height},format:t,tile:u,scaleFactor:m,crop:e.crop,version3:l},`${e.tiles.imageService.id}-tile-${m}`)))]},e.tiles.imageService.id)},e.tiles.imageService.id)};import{jsx as te,jsxs as La}from"react/jsx-runtime";function Na({resource:e,heading:t,note:n,extra:o}){return o?te(Ea,{target:{x:0,y:0,width:o.target?.spatial.width,height:o.target?.spatial.height},backgroundColor:"#333",relative:!0,children:te("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:La("div",{children:[te(Ve,{children:t||"Not authorised"}),n&&te("p",{children:te(Ve,{children:n})}),te("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}function xo({image:e,thumbnail:t,crop:n,enableSizes:o,enableThumbnail:r,renderOptions:a,rotation:i}){let s=Rn(),l=Va(e.service),u=co(l),m=Je(),f=u?.service;m(e.service,e);let p=f&&u?.status==="done",h=(f?.preferredFormats||[])[0],y=t&&t.type==="fixed"&&t.id&&!t.id.includes("/full/full/")&&!t.id.includes("/max/")?t:void 0;if(p===!1)return null;if(!s){let d=e.service,S=d.width||e.width||0,v=d.height||e.height||0,c=0,g=0,x=e.target?.spatial.width||S,C=e.target?.spatial.height||v;return(i===90||i===270)&&([x,C]=[C,x],C>x?g=-(C-x)/2:c=-(x-C)/2),te(Ht,{enableThumbnail:r,renderOptions:a,rotation:i,tiles:{id:d.id||d["@id"]||"unknown",height:v,width:S,imageService:d,thumbnail:y},enableSizes:o,x:c,y:g,format:h,width:x,height:C,crop:n})}return te(An,{resource:e.service,errorComponent:Na,extra:e,children:d=>{let S=d.width||e.width||0,v=d.height||e.height||0,c=0,g=0,x=e.target?.spatial.width||S,C=e.target?.spatial.height||v;return(i===90||i===270)&&([x,C]=[C,x],C<x?(g=-(C-x)/2,c=(x-C)/2):(g=(C-x)/2,c=-(x-C)/2)),te(Ht,{enableThumbnail:r,renderOptions:a,tiles:{id:d.id||d["@id"]||"unknown",height:v,width:S,imageService:d,thumbnail:y},rotation:i,format:h,enableSizes:o,x:c,y:g,width:x,height:C,crop:n})}},e.id)}import{jsx as qt,jsxs as Ro}from"react/jsx-runtime";function Re({id:e,image:t,thumbnail:n,isStatic:o,x:r=0,y:a=0,children:i,selector:s,onClick:l,enableSizes:u}){let m=bo(()=>{if(!(!s||s.spatial.x===0&&s.spatial.y===0))return s.spatial},[s]),f=bo(()=>{let c=Array.isArray(t.annotation.body)?t.annotation.body?.[0]:t.annotation.body;if(c&&c.selector?.type==="ImageApiSelector")return Number(c.selector.rotation)},[t]),p=r+t.target.spatial.x,h=a+t.target.spatial.y,y=t.target.spatial.width,d=t.target.spatial.height,S=t.target.spatial.width,v=t.target.spatial.height;return(f===90||f===270)&&([y,d]=[d,y],[S,v]=[v,S]),qt("world-object",{x:p,y:h,width:y,height:d,onClick:l,rotation:f,children:t.service?Ro(Co,{children:[qt(xo,{image:t,thumbnail:n,crop:m,enableSizes:u,rotation:f}),i]},"service"):Ro(Co,{children:[qt("world-image",{onClick:l,uri:t.id,target:{x:0,y:0,width:S,height:v},display:S&&v?{width:S,height:v}:void 0,crop:m}),i]},"no-service")},e+(t.service?"server":"no-service"))}import{useStore as To}from"zustand";import{createContext as Oa,useContext as za}from"react";import{useStore as Ba}from"zustand";import{jsx as Ha}from"react/jsx-runtime";var Dt=Oa(null);Dt.displayName="ComplexTimeline";function Ao({children:e,store:t}){return Ha(Dt.Provider,{value:t,children:e})}function mf(e){let t=za(Dt);if(!t)throw new Error("useComplexTimeline must be used within a ComplexTimelineProvider");return Ba(t,e)}import{HTMLPortal as qa}from"@atlas-viewer/atlas";import{Fragment as Po,jsx as Ne}from"react/jsx-runtime";function tt({strategy:e,onClickPaintingAnnotation:t}){return Ne(Po,{children:e.items.map((n,o)=>Ne(Po,{children:Ne(qa,{onClick:t?r=>{r.stopPropagation(),t(n.annotationId,n,r)}:void 0,target:n.target?.spatial||void 0,children:Ne("div",{"data-textual-content":!0,children:Ne(Ve,{enableDangerouslySetInnerHTML:!0,children:n.text})})},o)}))})}import{Fragment as Ua,jsx as nt,jsxs as Wa}from"react/jsx-runtime";function Io({strategy:e,children:t}){let{store:n}=Fa(()=>lo({complexTimeline:e}),[e]),o=To(n,i=>i.isReady),r=To(n,i=>i.visibleElements);function a(i){return s=>{s&&n.getState().setElement(i,s)}}return Da(()=>{if(o){let{startClock:i,stopClock:s}=n.getState();return i(),()=>{s()}}},[e,o]),q("portal","custom-controls",Ao,{store:n,children:t},[o]),Wa(Ua,{children:[e.items.map(i=>i.type!=="Image"||!r[i.annotationId]?null:nt(Re,{image:i,id:i.annotationId},i.id)),e.items.map((i,s)=>i.type!=="Text"||!r[i.annotationId]?null:nt(tt,{strategy:{type:"textual-content",items:[i]}},s)),e.items.map((i,s)=>i.type!=="Video"||!i.target.spatial?null:nt($a,{target:i.target.spatial,children:nt("video",{ref:a(i.annotationId),src:i.url,style:{height:"100%",width:"100%",opacity:r[i.annotationId]?1:0}})},s))]})}import{jsx as _a}from"react/jsx-runtime";function wo(){let{strategy:e}=V(),{renderComplexTimelineControls:t}=F();return e.type!=="complex-timeline"?null:_a(Io,{strategy:e,children:t?t(e):null})}import{jsx as ja}from"react/jsx-runtime";function ot({style:e}){let t=A();return!t||!t.height||!t.width?null:ja("box",{interactive:!1,target:{x:0,y:0,width:Number(t.width),height:Number(t.height)},style:e})}import{jsx as Ka}from"react/jsx-runtime";function Mo({backgroundStyle:e,alwaysShowBackground:t}){let{strategy:n}=V();return n.type!=="empty"&&!t?null:Ka(ot,{style:e})}import{createContext as Ya,useContext as Ga}from"react";var ce=Ya(null);function rt(){return Ga(ce)}import{Fragment as Xa,jsx as Qa,jsxs as Za}from"react/jsx-runtime";function ko({isStatic:e=!1,enableSizes:t=!1,onClickPaintingAnnotation:n,children:o}){let{strategy:r}=V(),{renderViewerControls:a,viewControlsDeps:i}=F(),s=A(),l=rt(),u=xe({maxWidth:256,maxHeight:256});return q(l&&r.type==="images"&&a?"overlay":"none",`canvas-portal-controls-${s?.id}`,ce.Provider,a?{value:l||null,children:a(r)}:{},[s,l,r,...i||[]]),r.type!=="images"?null:Za(Xa,{children:[r.images.map((m,f)=>Qa(Re,{isStatic:e,image:m,id:m.id,thumbnail:f===0?u:void 0,selector:m.selector,enableSizes:t,onClick:n?p=>{n(m.annotationId,m,p)}:void 0},m.id+f)),o]})}import{Fragment as es,jsx as Ja,jsxs as ts}from"react/jsx-runtime";function Eo({onClickPaintingAnnotation:e,children:t}){let{strategy:n}=V(),{renderViewerControls:o,viewControlsDeps:r}=F(),a=rt(),i=A();return q(a&&n.type==="textual-content"&&o?"overlay":"none",`canvas-portal-controls-${i?.id}`,ce.Provider,o?{value:a||null,children:o(n)}:{},[i,a,n,...r||[]]),n.type!=="textual-content"?null:ts(es,{children:[Ja(tt,{strategy:n,onClickPaintingAnnotation:e}),t]})}import{jsx as Vo,jsxs as ns}from"react/jsx-runtime";function Ft({element:e,media:t,startTime:n,playPause:o,poster:r}){let a="div",i=n?`${t.url}#t=${n}`:t.url;return ns(a,{className:"video-container",part:"video-container",onClick:o,children:[Vo("style",{children:`
|
|
18
|
+
.video-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
|
+
`}),Vo("video",{poster:r,ref:e,src:i,style:{width:"100%",objectFit:"contain"}})]})}function it({media:e,mediaControlsDeps:t,children:n,videoComponent:o=Ft,captions:r}){let a=A(),i=_e(),s=a&&a.placeholderCanvas&&a.placeholderCanvas.id||void 0,l=xe({},!1,{canvasId:s}),[{element:u,currentTime:m,progress:f},p,h]=Se({duration:e.duration});return q("overlay","video-element",o,{element:u,media:e,playPause:h.playPause,poster:l?.id,canvas:a,startTime:i?i.startTime:null,captions:r},[l]),q("portal","custom-controls",We,{state:p,actions:h,currentTime:m,progress:f,element:u,children:n},[m,p,e,...t||[]]),null}import{jsx as os,jsxs as rs}from"react/jsx-runtime";function No({as:e}){let{strategy:t}=V(),{renderMediaControls:n,mediaControlsDeps:o}=F();return t.type!=="media"||t.media.type!=="Video"?null:rs(it,{captions:t.captions,media:t.media,mediaControlsDeps:o,videoComponent:e,children:[os(Ce,{}),n?n(t):null]},t.media.url)}import{useRef as is}from"react";import{jsx as Lo,jsxs as ss}from"react/jsx-runtime";function as({element:e,media:t,playPause:n}){let o=is(null);return t.youTubeId?ss("div",{className:"video-container",part:"video-container",onClick:n,children:[Lo("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
|
+
`}),Lo("iframe",{className:"video-yt",ref:o,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 Oo({media:e,mediaControlsDeps:t,children:n}){let[{element:o,currentTime:r,progress:a},i,s]=Se({duration:e.duration});return q("overlay","video-element",as,{element:o,media:e,playPause:s.playPause}),null}import{jsx as ls,jsxs as us}from"react/jsx-runtime";function zo(){let{strategy:e}=V(),{renderMediaControls:t,mediaControlsDeps:n}=F();return e.type!=="media"||e.media.type!=="VideoYouTube"?null:us(Oo,{media:e.media,mediaControlsDeps:n,children:[ls(Ce,{}),t?t(e):null]})}import{startTransition as Ds,useMemo as Fs}from"react";import{useStore as J}from"zustand";import{HTMLPortal as ps,useAtlas as fs}from"@atlas-viewer/atlas";import{useCallback as Wt,useEffect as _t}from"react";import{createSvgHelpers as cs}from"polygon-editor";import{useEffect as ds,useRef as Z,useState as Ho}from"react";import{useStore as $t}from"zustand";function Bo(e){let t=D(),n=$t(t,a=>a.polygons),o=$t(t,a=>a.polygonState),r=$t(t,a=>a.polygon);return En("atlas.polygon-render",({state:a,slowState:i,dt:s})=>{e(a,i,s)}),{currentShape:r,state:o,helper:n}}import{Fragment as Ut,jsx as N,jsxs as Ae}from"react/jsx-runtime";var ne=cs(),ms={shapeFill:"#ffffff33",shapeStroke:"#000",lineStroke:"#000",ghostLineStroke:"#0F0",activeLineStroke:"#4D7EEA",boundingBoxDottedStroke:"#0007",boundingBoxStroke:"#fffA",controlFill:"#fff"};function qo(e){let{image:t}=e,n={...ms,...e.theme||{}},o=Z(),r=Z(),a=Z(),i=Z(),s=Z(),l=Z(),u=Z(),m=Z(),f=Z(),p=Z(),[h,y]=Ho(null),[d,S]=Ho(!1),{helper:v,state:c,currentShape:g}=Bo((T,b)=>{if(T.closestLineIndex,ne.updateTransitionBoundingBox(a.current,T,b),ne.updateBoundingBoxPolygon(o.current,T,b),ne.updateBoundingBoxPolygon(r.current,T,b),ne.updateTransitionShape(u.current,T,b),ne.updateClosestLinePointTransform(s.current,T,b),ne.updateSelectBox(i.current,T,b),ne.updatePointLine(m.current,T,b),ne.updateDrawPreview(l.current,T,b,3),ne.updateLineBox(f.current,T),y(T.transitionDirection),S(T.transitionRotate),T.closestLineIndex!==-1&&p.current){let k=T.polygon,E=k.points[T.closestLineIndex],H=k.points[(T.closestLineIndex+1)%k.points.length];E&&H&&p.current.setAttribute("points",`${E[0]},${E[1]} ${H[0]},${H[1]}`)}});ds(()=>{let T=()=>{v.modifiers.reset()};return document.addEventListener("mouseleave",T),()=>{document.removeEventListener("mouseleave",T)}},[]);let x=Ae(Ut,{children:[Ae("marker",{id:"dot",viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:"5",markerHeight:"5",children:[N("circle",{cx:"5",cy:"5",r:"5",fill:n.lineStroke,className:"marker"}),N("circle",{cx:"5",cy:"5",r:"3",fill:n.controlFill})]}),N("marker",{id:"newdot",viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:"5",markerHeight:"5",children:N("circle",{cx:"5",cy:"5",r:"5",fill:n.activeLineStroke,className:"marker"})}),Ae("marker",{id:"selected",viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:"5",markerHeight:"5",children:[N("circle",{cx:"5",cy:"5",r:"5",fill:n.lineStroke}),N("circle",{cx:"5",cy:"5",r:"3",fill:n.activeLineStroke})]}),Ae("marker",{id:"resizer",viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:"6",markerHeight:"6",children:[N("rect",{width:"10",height:"10",fill:n.lineStroke}),N("rect",{x:"1",y:"1",width:"8",height:"8",fill:n.controlFill})]})]}),C=g?g.open?"polyline":"polygon":null,R=!c.showBoundingBox&&c.closestPoint!==null&&c.actionIntentType==="select-point",I=c.actionIntentType==="add-open-point",P=c.transitionIntentType==="split-line",L=c.transitioning&&c.selectedStamp&&c.transitionIntentType==="stamp-shape",oe=g&&C?Ae(Ut,{children:[N(C,{fill:(!c.transitioning||c.transitionIntentType==="select-multiple-points")&&!g.open?n.shapeFill:"none",strokeWidth:L||c.showBoundingBox&&c.boxMode||c.transitioning&&c.transitionIntentType==="split-line"||c.transitioning&&c.transitionIntentType==="move-point"?0:2,stroke:n.shapeStroke,points:g.points.map(T=>T.join(",")).join(" "),vectorEffect:"non-scaling-stroke",markerStart:c.showBoundingBox?void 0:c.boxMode?"url(#resizer)":"url(#dot)",markerMid:c.showBoundingBox?void 0:c.boxMode?"url(#resizer)":"url(#dot)",markerEnd:c.showBoundingBox?void 0:c.boxMode?"url(#resizer)":"url(#dot)",style:{pointerEvents:"none"},opacity:c.transitioning&&c.transitionIntentType==="move-shape"?0:1}),c.currentTool==="lineBox"&&c.actionIntentType==="close-line-box"?N("polygon",{fill:n.shapeFill,ref:f,stroke:n.lineStroke,strokeWidth:2,vectorEffect:"non-scaling-stroke"}):null,c.transitionIntentType==="draw-shape"&&c.transitioning?N("polyline",{ref:l,fill:"none",stroke:n.activeLineStroke,strokeWidth:2,vectorEffect:"non-scaling-stroke"}):null,!(c.transitioning&&c.transitionIntentType==="move-point")&&!(c.transitioning&&c.transitionIntentType==="stamp-shape")&&!c.showBoundingBox&&c.selectedPoints&&c.selectedPoints.length?N("polyline",{strokeWidth:2,vectorEffect:"non-scaling-stroke",stroke:"transparent",markerStart:"url(#selected)",markerMid:"url(#selected)",markerEnd:"url(#selected)",fill:"transparent",points:g.points.filter((T,b)=>c.selectedPoints?.includes(b)).map(T=>T.join(",")).join(" "),opacity:c.transitioning&&c.transitionIntentType==="move-shape"?0:1}):null,R&&!c.transitioning&&c.closestPoint!==null&&g.points[c.closestPoint]?N("polyline",{strokeWidth:2,vectorEffect:"non-scaling-stroke",stroke:"transparent",markerStart:"url(#selected)",markerMid:"url(#selected)",markerEnd:"url(#selected)",fill:n.activeLineStroke,points:`${g.points[c.closestPoint][0]},${g.points[c.closestPoint][1]}`,opacity:c.transitioning&&c.transitionIntentType==="move-shape"?0:1}):null,!c.transitioning&&(c.actionIntentType==="add-open-point"||c.actionIntentType==="close-shape"||c.actionIntentType==="close-shape-line")?N("polyline",{stroke:n.activeLineStroke,ref:m,strokeWidth:c.actionIntentType==="add-open-point"?1:2,vectorEffect:"non-scaling-stroke"}):null,c.hasClosestLine&&!c.showBoundingBox&&!c.transitioning&&c.currentTool!=="box"&&c.transitionIntentType==="split-line"?N("g",{children:N("polyline",{ref:p,vectorEffect:"non-scaling-stroke",fill:"transparent",stroke:n.activeLineStroke,strokeWidth:3})}):null,c.hasClosestLine&&!c.showBoundingBox&&!c.transitioning&&c.currentTool!=="box"&&c.transitionIntentType==="split-line"?N("g",{ref:s,children:N("polyline",{markerStart:"url(#newdot)",points:"0,0 1,1",vectorEffect:"non-scaling-stroke",stroke:"transparent",fill:"transparent",strokeWidth:2})}):null,c.transitioning?N(C,{ref:u,fill:g.open?"none":n.shapeFill,stroke:c.transitionIntentType==="stamp-shape"?n.activeLineStroke:n.shapeStroke,vectorEffect:"non-scaling-stroke",strokeWidth:(g.open,2)}):null,c.transitioning&&c.transitionIntentType==="select-multiple-points"?N("rect",{ref:i,fill:"rgba(255, 255, 255, .3)",strokeWidth:1,stroke:"rgba(0,0,0,.2)",vectorEffect:"non-scaling-stroke"}):null,c.showBoundingBox&&!L?Ae(Ut,{children:[N("polygon",{ref:o,strokeWidth:2,stroke:n.boundingBoxStroke,fill:"none",markerStart:"url(#resizer)",markerMid:"url(#resizer)",markerEnd:"url(#resizer)",vectorEffect:"non-scaling-stroke"}),N("polygon",{ref:r,strokeWidth:2,stroke:n.boundingBoxDottedStroke,fill:"none",strokeDasharray:"4 4",markerStart:"url(#resizer)",markerMid:"url(#resizer)",markerEnd:"url(#resizer)",vectorEffect:"non-scaling-stroke"})]}):null]}):null;return{currentTool:v.state.slowState.currentTool,setCurrentTool:v.tools.setTool,helper:v,currentShape:g,state:c,isAddingPoint:I,isSplitting:P,isStamping:L,isHoveringPoint:R,transitionDirection:h,transitionRotate:d,defs:x,editor:oe}}import{jsx as Le,jsxs as gs}from"react/jsx-runtime";function Do(e){let t=fs(),{image:n}=e,{helper:o,defs:r,editor:a,state:i,transitionDirection:s,isSplitting:l,transitionRotate:u,isHoveringPoint:m,isAddingPoint:f}=qo({image:e.image,theme:e.theme}),p=Wt(d=>{d.button!==2&&o.pointer([[~~d.atlas.x,~~d.atlas.y]])},[o]),h=Wt(d=>{d.button!==2&&o.pointerDown()},[o]),y=Wt(d=>{d.button!==2&&o.pointerUp()},[o]);return _t(()=>{let d=S=>{o.key.up(S.key)};return document.addEventListener("keyup",d),()=>{document.removeEventListener("keyup",d)}},[o]),_t(()=>{let d=S=>{S.target&&["INPUT","TEXTAREA"].includes(S.target.tagName)||S.target?.isContentEditable||document.activeElement&&(document.activeElement instanceof HTMLInputElement||document.activeElement instanceof HTMLTextAreaElement||document.activeElement.isContentEditable)||o.key.down(S.key)};return document.addEventListener("keydown",d),()=>{document.removeEventListener("keydown",d)}},[o]),_t(()=>{let d=[];return s&&d.push(`atlas-cursor-${s}`),i.actionIntentType==="cut-line"&&i.modifiers?.Shift&&d.push("atlas-cursor-cut"),(m||i.transitionIntentType==="move-shape"||i.transitionIntentType==="move-point")&&d.push("atlas-cursor-move"),f&&d.push("atlas-cursor-crosshair"),l&&d.push("atlas-cursor-copy"),u&&d.push("atlas-cursor-rotate"),i.transitionIntentType==="draw-shape"&&d.push("atlas-cursor-draw"),t?.canvas&&t.canvas.classList.add(...d),()=>{t?.canvas&&t.canvas.classList.remove(...d)}},[t?.canvas,f,m,l,i.modifiers?.Shift,i.actionIntentType,i.transitionIntentType,s,u]),Le("world-object",{height:n.height,width:n.width,onMouseMove:p,onMouseDown:h,onMouseUp:y,onMouseLeave:o.blur,children:Le(ps,{relative:!0,interactive:!1,children:Le("div",{className:"absolute top-0 right-0 left-0 bottom-0",children:gs("svg",{width:"100%",height:"100%",viewBox:`0 0 ${n.width} ${n.height}`,tabIndex:-1,children:[Le("title",{children:"Annotation Editor"}),Le("defs",{children:r}),a]})})})})}import{useCallback as Os}from"react";import{create as zs}from"zustand";import{HTMLPortal as Ps}from"@atlas-viewer/atlas";import{autoUpdate as Ts,flip as Is,offset as ws,shift as Ms,useDismiss as ks,useFloating as Es,useInteractions as Vs}from"@floating-ui/react";import{createPortal as Ns}from"react-dom";import bs,{useContext as U,useMemo as Rs}from"react";import hs from"react";import{createContext as vs,useMemo as ys}from"react";import Ss from"mitt";import{jsx as Cs}from"react/jsx-runtime";var xs=Ss(),Pe=vs({emitter:xs});Pe.displayName="Events";function Fo(){return hs.useContext(Pe).emitter}function Zg({emitter:e,children:t}){return Cs(Pe.Provider,{value:ys(()=>({emitter:e}),[e]),children:t})}import{jsx as W}from"react/jsx-runtime";var Oe=bs.createContext({});function at(){let e=U(Oe),t=Object.keys(e),n={};for(let o of t)e[o].Provider&&(n[o]={value:U(e[o]),Provider:e[o].Provider});return n}function As(e){let t=Object.keys(e),n=e.children;for(let o of t){if(o==="children")continue;let{value:r,Provider:a}=e[o];n=W(a,{value:r,children:n})}return n}function dh(e){let t=U(Oe),n=Rs(()=>({...t,...e.providers}),[e.providers]);return W(Oe.Provider,{value:n,children:e.children})}function st(){return{VaultContext:U(ae),ResourceContext:U(ze),SimpleViewerReactContext:U(Me),VisibleCanvasReactContext:U(me),AuthRContext:U(fe),SearchReactContext:U(ge),ReactEventContext:U(Pe),ContextBridgeReactContext:U(Oe),StrategyReactContext:U(se),AtlasStoreReactContext:U(ve)}}function lt(e){return W(de,{vault:e.bridge.VaultContext.vault||void 0,resources:e.bridge.ResourceContext,children:W(me.Provider,{value:e.bridge.VisibleCanvasReactContext,children:W(Me.Provider,{value:e.bridge.SimpleViewerReactContext,children:W(Pe.Provider,{value:e.bridge.ReactEventContext,children:W(ve.Provider,{value:e.bridge.AtlasStoreReactContext,children:W(fe.Provider,{value:e.bridge.AuthRContext,children:W(ge.Provider,{value:e.bridge.SearchReactContext,children:W(Oe.Provider,{value:e.bridge.ContextBridgeReactContext,children:W(se.Provider,{value:e.bridge.StrategyReactContext,children:e.custom?W(As,{...e.custom,children:e.children}):e.children})})})})})})})})})}import{jsx as jt,jsxs as Ls}from"react/jsx-runtime";function ut({annotation:e,target:t,children:n,dismissable:o,isOpen:r,onOpenChange:a,placement:i}){let s=st(),l=at(),{refs:u,floatingStyles:m,context:f}=Es({open:r,onOpenChange:a,nodeId:e.id,placement:i||"bottom",middleware:[ws(10),Ms(),Is({mainAxis:!0})],whileElementsMounted:Ts}),p=ks(f),{getReferenceProps:h,getFloatingProps:y}=Vs([o?p:null].filter(d=>d!==null));return Ls(Ps,{relative:!0,target:t,interactive:!1,children:[jt("div",{ref:u.setReference,...h(),style:{position:"absolute",top:0,left:0,right:0,bottom:0,pointerEvents:"none"}}),Ns(jt(lt,{bridge:s,custom:l,children:jt("div",{ref:u.setFloating,style:m,...y(),children:n})}),document.getElementById("atlas-floating-ui"))]})}import{Fragment as Hs,jsx as $o}from"react/jsx-runtime";var Bs=zs()(e=>({isMenuOpen:!1,menuPosition:{x:0,y:0},setMenuPosition(t){e({menuPosition:t})},toggle(t){e(n=>({isMenuOpen:!n.isMenuOpen,menuPosition:t}))},open(t){e({isMenuOpen:!0,menuPosition:t})},setIsMenuOpen(t){e(typeof t=="function"?n=>({isMenuOpen:t(n.isMenuOpen)}):{isMenuOpen:t})},close(){e({isMenuOpen:!1})}}));function ct(e,t,n){let{isMenuOpen:o,setIsMenuOpen:r,close:a,open:i,menuPosition:s,setMenuPosition:l,toggle:u}=Bs(),m=Os(h=>{n&&(h.preventDefault(),h.stopPropagation(),u(h.atlas))},[u,n]);return[$o(Hs,{children:n&&o&&$o(ut,{dismissable:!0,placement:"bottom-start",isOpen:o,onOpenChange:r,annotation:{id:e},target:{x:s.x,y:s.y,height:1,width:1},children:o&&n({canvasId:t,position:s,close:()=>r(!1)})})}),{onContextMenu:m},{open:i,close:a,toggle:u,isMenuOpen:o,setIsMenuOpen:r,menuPosition:s,setMenuPosition:l}]}import{useStore as qs}from"zustand";function Uo(){let e=D();return qs(e,t=>t.tool.requestId&&t.requests[t.tool.requestId]||null)}import{Fragment as Wo,jsx as ie,jsxs as Kt}from"react/jsx-runtime";function _o({theme:e,renderContextMenu:t,children:n}){let o=D(),r=A(),a=J(o,C=>C.polygon),i=J(o,C=>C.polygonState.currentTool),s=J(o,C=>C.mode),l=J(o,C=>C.changeMode),u=J(o,C=>C.polygonState.transitioning),{enabled:m,requestId:f}=J(o,C=>C.tool),p=Fs(()=>he(a),[a]),h=Uo(),[y,d]=ct("editing-annotation",r?.id,t),S=h?.annotationPopup||n||ie($s,{}),v=h?.svgTheme||e,c=()=>{l("sketch")};if(!m||!r||!f||!a)return null;let g=p&&a.id&&!u&&(i==="pointer"||i==="hand"||!a.open)?ie(ut,{annotation:a,target:p,children:S}):null,x="shape";return s==="explore"?Kt(Wo,{children:[ie(x,{id:`shape-${a.id}`,points:a.points,open:a.open,onClick:c,relativeStyle:!0,target:{x:0,y:0,width:r.width,height:r.height},style:{":hover":{backgroundColor:"rgba(0,0,0,0.2)"},backgroundColor:"rgba(0,0,0,0)",borderWidth:"4px",borderColor:"rgba(255, 255, 255, .4)"},...d}),ie(x,{id:`shape-${a.id}`,points:a.points,open:a.open,onClick:c,relativeStyle:!0,target:{x:0,y:0,width:r.width,height:r.height},style:{backgroundColor:"rgba(0,0,0,0)",borderWidth:"2px",borderColor:"rgba(0, 0, 0, .4)"}}),g]}):Kt(Wo,{children:[t?ie(x,{id:`shape-${a.id}`,points:a.points,open:a.open,target:{x:0,y:0,width:r.width,height:r.height},...d}):null,ie(Do,{image:r,theme:v}),g,y]})}function $s(){let e=D(),t=J(e,i=>i.changeMode),n=J(e,i=>i.mode),o=J(e,i=>i.completeRequest),r=J(e,i=>i.tool),a=()=>{Ds(()=>{o()})};return r.enabled?Kt("div",{className:"svg-tools-container animate-fadeIn",children:[n!=="sketch"&&ie("button",{className:"svg-tools-button",onClick:()=>{t("sketch")},children:"Edit"}),ie("button",{className:"svg-tools-button",onClick:a,children:"Save"})]}):null}import{useEffect as Yt,useMemo as Gt}from"react";import{useEffect as tr,useMemo as nr}from"react";import{useCallback as Yo,useMemo as Ws}from"react";function Us(e,t){let n=e?.iiif?.meta[t];return n?n.annotationPageManager:null}function jo(e,t){return M(n=>{let o=[];if(!e)return o;let r=Object.keys(n.iiif.entities.AnnotationPage);for(let a of r)if(!t||t.indexOf(a)!==-1){let i=Us(n,a);i&&i.views&&i.views[e]&&o.push(a)}return o},[e,t])}function Ko({canvas:e,manifest:t,all:n,canvases:o}){let r=[];if(t)for(let a of t.annotations)r.indexOf(a.id)===-1&&r.push(a.id);if(n){if(o&&o.length)for(let a of o)for(let i of a.annotations)r.indexOf(i.id)===-1&&r.push(i.id)}else if(e)for(let a of e.annotations)r.indexOf(a.id)===-1&&r.push(a.id);return r}function _s(e,t){let n=e?.iiif?.meta[t];return n?n.annotationPageManager:null}function Go(e,t={}){let n=w(),o=z(),r=A(),a=Be(),i=Ws(()=>Ko({all:t.all,manifest:o,canvas:r,canvases:a}),[t.all,r,a,o]),s=jo(e,t.all?void 0:i),l=Yo(m=>{e&&n.setMetaValue([m,"annotationPageManager","views"],f=>f&&!f[e]?f:{...f||{},[e]:!1})},[e,n]),u=Yo((m,f={})=>{if(!e)return;let p=n.getState(),h=[];if(f?.deselectOthers){let y=Object.keys(p.iiif.entities.AnnotationPage);for(let d of y){let S=_s(p,d);S&&S.views&&S.views[e]&&h.push(d)}}for(let y of h)l(y);n.setMetaValue([m,"annotationPageManager","views"],y=>y&&y[e]?y:{...y||{},[e]:!0})},[e,l,n]);return{availablePageIds:i,enabledPageIds:s,setPageEnabled:u,setPageDisabled:l}}function Qo(e,t){return M((n,o)=>o.get(e.map(r=>({id:r,type:t}))),[e,t])}import js from"mitt";import{useCallback as Ks}from"react";import{createStore as Ys}from"zustand";var Gs=Ys((e,t)=>({loaded:{},setLoaded:(n,o="done")=>{e(r=>({loaded:{...r.loaded,[n]:o}}))}})),Qs=js();Qs.on("loaded",e=>{Gs.getState().setLoaded(e.imageServiceId)});function Xo(){let e=Je(),t=mo();return[Ks((o,{height:r,width:a})=>o&&e(o,{height:r,width:a},!0),[e]),t]}import{useCallback as Xs,useMemo as Jo,useState as Zs}from"react";function Zo(e={}){let t=$e(),n=A(e.canvasId?{id:e.canvasId}:void 0);return M((o,r)=>{if(!n)return[];if(t&&e.enableSingleAnnotation)return[t];let a=r.get(n.items),i=[];for(let s of a)i.push(...r.get(s.items));return i},[n])}import{createPaintingAnnotationsHelper as Js}from"@iiif/helpers/painting-annotations";function er(e,t=[]){let n=w(),o=Jo(()=>Js(n),[]),r=Zo({enableSingleAnnotation:e?.enableSingleAnnotation}),[a,i]=Zs(e?.defaultChoices||[]),s=Jo(()=>o.getPaintables(r,a),[n,r,a,...t]),u={makeChoice:Xs((m,{deselectOthers:f=!0,deselect:p=!1}={})=>{s.choice&&i(h=>{if(p){let d=h.filter(S=>S!==m);if(d.length===0){let S=s.items[0].resource.id;return S?[S]:[]}return d}if(f)return[m];let y=[...h];if(y.length===0&&s.items.length){let d=s.items[0].resource.id;d&&y.push(d)}return h.indexOf(m)!==-1?h:[...h,m]})},[s.choice])};return[s,u]}function or(e){let t=z(),n=A(),o=w(),r=Fo(),a=e?.emitter||r,[i,s]=Xo(),{enabledPageIds:l}=Go(e?.annotationPageManagerId||t?.id||n?.id,{all:!1}),u=Qo(l,"AnnotationPage"),m=e?.strategies||["empty","images","media","textual-content","complex-timeline"],[f,p]=er(e,[s]);tr(()=>{let y=d=>{p.makeChoice(d.choiceId,{deselectOthers:d.deselectOthers,deselect:d.deselect})};return a.on("make-choice",y),()=>{a.off("make-choice",y)}},[]);let h=nr(()=>en({canvas:n,paintables:f,supports:m,loadImageService:i,vault:o}),[n,f,o,p.makeChoice]);return tr(()=>{let y=f.allChoices,d={canvasId:n?.id,manifestId:t?.id};y&&a.emit("choice-change",{choice:y,partOf:d})},[n?.id,f.allChoices]),nr(()=>h.type==="unknown"?[h,Jt]:[{...h,annotations:{pages:u}},p],[h,u])}import{createStylesHelper as el}from"@iiif/helpers";import{jsx as rr}from"react/jsx-runtime";function ir({strategies:e,registerActions:t,defaultChoices:n,onChoiceChange:o,mediaControlsDeps:r,renderMediaControls:a,renderViewerControls:i,viewControlsDeps:s,renderComplexTimelineControls:l,complexTimelineControlsDeps:u,throwOnUnknown:m,children:f}){let p=A(),h=w(),y=Gt(()=>el(h),[h]),[d,S]=or({strategies:e||["images"],defaultChoices:n?.map(({id:x})=>x)}),v="choice"in d?d.choice:void 0;if(Yt(()=>{t&&t(S)},[d.annotations]),Yt(()=>{o&&o(v)},[v]),Yt(()=>{if(n)for(let x of n)typeof x.opacity<"u"&&y.applyStyles({id:x.id},"atlas",{opacity:x.opacity})},[n]),d.type==="unknown"&&m)throw new Error(d.reason||"Unknown strategy");let c=Gt(()=>({renderMediaControls:a,mediaControlsDeps:r||[],renderViewerControls:i,viewControlsDeps:s||[],renderComplexTimelineControls:l,complexTimelineControlsDeps:u||[]}),[r,a,i,s,l,u]),g=Gt(()=>({strategy:d,actions:S,choices:"choice"in d?d.choice:[]}),[d,p]);return rr(Ge.Provider,{value:c,children:rr(se.Provider,{value:g,children:f})})}import{useEffect as sr,useMemo as rl}from"react";import{useStore as lr}from"zustand";import{createContext as tl,useContext as nl,useEffect as ol}from"react";var Qt=tl(()=>{});function ar(e){let t=A(),n=nl(Qt);ol(()=>t&&t.id?(n(t.id,e),()=>n(t.id,-1)):()=>{},[t,e])}import{jsxs as il}from"react/jsx-runtime";function ur({x:e=0,y:t=0,keepCanvasScale:n=!0,renderContextMenu:o,children:r}){let{strategy:a}=V(),i=A(),s=D(),l=Fe(i,["deep-zoom"]),u=lr(s,d=>d.setCanvasRelativePosition),m=lr(s,d=>d.clearCanvasRelativePosition),[f,p]=ct(`context-menu/${i?.id}`,i?.id,o),h=rl(()=>n?1:Math.max(1,...a.type==="images"?a.images.map(d=>(d.width||0)/d.target?.spatial.width):[]),[n,a]);sr(()=>{if(i)return u(i.id,{x:e,y:t,width:i.width,height:i.height}),()=>{m(i.id)}},[e,t,i,m,u]),sr(()=>{i&&s.getState().reset()},[s,i]),ar(h);let y=a.type==="images"?a.images.length:0;return i?il("world-object",{height:i.height,width:i.width,scale:h,x:e,y:t,...p,...l,children:[f,r]},`${i.id}/${a.type}/${y}`):null}import{jsx as K,jsxs as cr}from"react/jsx-runtime";function le({x:e,y:t,onChoiceChange:n,registerActions:o,defaultChoices:r,isStatic:a,renderViewerControls:i,renderMediaControls:s,renderComplexTimelineControls:l,complexTimelineControlsDeps:u,viewControlsDeps:m,mediaControlsDeps:f,strategies:p,throwOnUnknown:h,backgroundStyle:y,alwaysShowBackground:d,keepCanvasScale:S=!1,enableSizes:v=!1,enableYouTube:c=!0,onClickPaintingAnnotation:g,components:x={},children:C,annotationPopup:R,svgTheme:I,renderContextMenu:P,renderAnnotationContextMenu:L}){return cr(ir,{throwOnUnknown:h,onChoiceChange:n,registerActions:o,strategies:p,defaultChoices:r,mediaControlsDeps:f,renderMediaControls:s,renderViewerControls:i,renderComplexTimelineControls:l,complexTimelineControlsDeps:u,viewControlsDeps:m,children:[cr(ur,{keepCanvasScale:S,x:e,y:t,renderContextMenu:P,children:[K(Mo,{alwaysShowBackground:d,backgroundStyle:y}),K(wo,{}),K(Eo,{}),K(ko,{isStatic:a,enableSizes:v,onClickPaintingAnnotation:g}),K(to,{}),K(_n,{}),K(ao,{as:x.Audio}),K(No,{as:x.Video}),c?K(zo,{}):null,K(_o,{theme:I,renderContextMenu:L,children:R}),C]}),K(jn,{})]})}import{jsx as dr}from"react/jsx-runtime";function mr(e){let t=A();return!t||!t.placeholderCanvas?null:dr(ee,{canvas:t.placeholderCanvas.id,children:dr(le,{renderViewerControls:e.renderViewerControls})})}import{AtlasAuto as ul}from"@atlas-viewer/atlas";import gr,{useCallback as Zt,useMemo as hr,useState as dt}from"react";import{ErrorBoundary as cl}from"react-error-boundary";import{useStore as vr}from"zustand";import{useEffect as al,useMemo as sl}from"react";function pr(e,t=2e3){let{currentSequenceIndex:n,sequence:o,items:r}=De(),a=A(),i=sl(()=>{let l=o[n]||[];return l.length===0&&a?[{id:a.id,type:"Canvas"}]:l.map(u=>r[u])},[o,n,a,r]),s=D();al(()=>{let u=setInterval(()=>{if(e&&t!==-1){let m={x:e.x,y:e.y,width:e.width,height:e.height},f=s.getState().canvasRelativePositions,p={};for(let h of i){let y=f[h.id];if(y){let d=y.x,S=y.y,v=y.width,c=y.height,g={x:Math.max(d,m.x),y:Math.max(S,m.y),width:Math.min(d+v,m.x+m.width)-Math.max(d,m.x),height:Math.min(S+c,m.y+m.height)-Math.max(S,m.y)};g.width<=0||g.height<=0||(p[h.id]={x:g.x-y.x,y:g.y-y.y,width:g.width,height:g.height}),s.setState({canvasViewports:p})}}}},t);return()=>{clearTimeout(u)}},[i,e,s,t])}import{jsx as Xt,jsxs as ll}from"react/jsx-runtime";function fr({width:e,style:t,height:n,error:o,resetErrorBoundary:r}){return ll("div",{style:{width:e,height:n,minHeight:500,...t||{},background:"#f9f9f9"},children:[Xt("h3",{children:"Error occurred"}),Xt("p",{children:o.message}),Xt("button",{type:"button",onClick:r,children:"Reset"})]})}import{Fragment as ml,jsx as O,jsxs as pl}from"react/jsx-runtime";function yr(e){let t=D();return O(ke,{name:e.name,existing:t,children:O(dl,{...e})})}function dl({name:e,children:t,errorFallback:n,outerContainerProps:o={},worldScale:r,updateViewportTimeout:a,...i}){let s=D(),l=vr(s,b=>b.mode),u=vr(s,b=>b.setAtlasRuntime),[m,f]=dt(),p=at(),h=st(),y=n||fr,[d,S]=dt({}),v=Object.entries(d),[c,g]=dt({}),x=Object.entries(c),[C,R]=dt({}),I=hr(()=>r||Math.max(...Object.values(C)),[C]),P=hr(()=>({maxOverZoom:I||1,...i.runtimeOptions||{}}),[I,i.runtimeOptions]);pr(m?.runtime,a);let L=Zt((b,k)=>{R(E=>{if(k===-1){let{[b]:H,...G}=E;return G}return{...E,[b]:k}})},[]),oe=Zt((b,k,E)=>{S(({[b]:H,...G})=>k?{...G,[b]:{element:k,props:E}}:G)},[]),T=Zt((b,k,E)=>{g(({[b]:H,...G})=>k?{...G,[b]:{element:k,props:E}}:G)},[]);return pl(cl,{resetKeys:[],fallbackRender:b=>O(y,{...i,...b}),children:[O(ul,{...i,mode:l,containerProps:{style:{position:"relative"},...i.containerProps||{}},htmlChildren:O(ml,{children:v.map(([b,{element:k,props:E}])=>O(gr.Fragment,{children:O(k,{...E||{}})},b))}),onCreated:b=>{f(b),u(b.runtime),i.onCreated&&i.onCreated(b)},runtimeOptions:P,children:O(ke,{name:e,existing:s,children:O(ce.Provider,{value:m,children:O(Qt.Provider,{value:L,children:O(Mt.Provider,{value:oe,children:O(kt.Provider,{value:T,children:O(lt,{bridge:h,custom:p,children:O(Jn,{children:t})})})})})})})}),O("div",{children:x.map(([b,{element:k,props:E}])=>O(gr.Fragment,{children:O(k,{...E||{}})},b))}),O("div",{id:"atlas-floating-ui",style:{position:"relative",zIndex:999999}})]})}import{Fragment as vl,jsx as Y,jsxs as yl}from"react/jsx-runtime";var hl=Sr(function(t,n){let o=z(),r=Be(),a=De(),{ViewerControls:i,MediaControls:s,ComplexTimelineControls:l}=t.components||{};if(fl(n,()=>a,[a]),!o)return Y("div",{});let u=0,m=o.viewingDirection==="top-to-bottom",f=o.viewingDirection==="bottom-to-top",p=o.viewingDirection==="left-to-right",h=o.viewingDirection==="right-to-left",d=o.behavior.includes("continuous")?0:t.spacing||0,S=f||h,v=gl(()=>S?[...r].reverse():r,[r,S]);return yl(vl,{children:[t.header,Y(B.Viewer,{height:t.height,mode:t.mode,renderPreset:t.renderPreset,runtimeOptions:t.runtimeOptions,updateViewportTimeout:t.updateViewportTimeout,children:v.map((c,g)=>{let x=0,C=0;return m?(x=u,u+=c.width+d):(C=u,u+=c.height+d),Y(ee,{canvas:c.id,children:Y(B.RenderCanvas,{strategies:["3d-model","media","images","empty","textual-content","complex-timeline"],renderViewerControls:g===0&&i?()=>Y(i,{}):void 0,renderMediaControls:g===0&&s?()=>Y(s,{}):void 0,annotationPopup:t.annotationPopup,renderContextMenu:t.renderContextMenu,keepCanvasScale:t.keepCanvasScale,renderComplexTimelineControls:g===0&&l?()=>Y(l,{}):void 0,renderAnnotationContextMenu:t.renderAnnotationContextMenu,x,y:C,svgTheme:t.svgTheme,...t.canvasProps||{},children:t.annotations},c.id)},c.id)})},t.reuseAtlas?"":a.currentSequenceIndex),t.children]})}),B=Sr(function({children:t,height:n,annotations:o,canvasProps:r,spacing:a,header:i,components:s,mode:l,reuseAtlas:u,renderPreset:m,runtimeOptions:f,annotationPopup:p,name:h,svgTheme:y,updateViewportTimeout:d,renderContextMenu:S,keepCanvasScale:v,renderAnnotationContextMenu:c,...g},x){let C=pe();return Y(ke,{name:h,children:Y(de,{vault:C,children:Y(wn,{...g,children:Y(hl,{ref:x,height:n,components:s,spacing:a,canvasProps:r,annotations:o,header:i,mode:l,reuseAtlas:u,renderPreset:m,runtimeOptions:f,annotationPopup:p,svgTheme:y,updateViewportTimeout:d,renderContextMenu:S,keepCanvasScale:v,renderAnnotationContextMenu:c,children:t})})})})});B.RenderImage=Re;B.RenderCanvas=le;B.RenderAnnotationPage=Ee;B.RenderAnnotation=Ue;B.Viewer=yr;B.CanvasBackground=ot;B.Audio=Ke;B.Video=it;B.Model=Ye;B.AudioHTML=Et;B.VideoHTML=Ft;B.ModelHTML=Nt;B.PlaceholderCanvas=mr;B.getAtlasStoreByName=zn;export{ze as a,_ as b,re as c,ee as d,ae as e,de as f,w as g,M as h,me as i,Be as j,pe as k,z as l,on as m,rn as n,an as o,sn as p,Fr as q,pt as r,fu as s,ln as t,vu as u,ft as v,un as w,cn as x,ku as y,pn as z,fn as A,gn as B,gt as C,dn as D,fe as E,Gr as F,Qr as G,bn as H,Rn as I,Ie as J,Xr as K,Yu as L,Zr as M,xn as N,Gu as O,An as P,Tn as Q,Me as R,ui as S,wn as T,De as U,St as V,Bc as W,kn as X,En as Y,xt as Z,he as _,gi as $,$c as aa,Ct as ba,bt as ca,Vn as da,Nn as ea,ve as fa,D as ga,zn as ha,ke as ia,Fe as ja,ye as ka,$e as la,A as ma,Ue as na,Hn as oa,Ee as pa,Qd as qa,Xd as ra,Zd as sa,We as ta,_e as ua,wt as va,Se as wa,q as xa,se as ya,V as za,_n as Aa,Ge as Ba,F as Ca,jn as Da,Kn as Ea,Qn as Fa,Zn as Ga,Jn as Ha,to as Ia,no as Ja,pa as Ka,oo as La,xe as Ma,Ce as Na,ao as Oa,Je as Pa,Lp as Qa,Hp as Ra,qp as Sa,Dp as Ta,vo as Ua,zt as Va,yo as Wa,Ta as Xa,Ia as Ya,wa as Za,Fp as _a,Ve as $a,Re as ab,Ao as bb,mf as cb,wo as db,Mo as eb,ce as fb,rt as gb,ko as hb,Eo as ib,No as jb,zo as kb,Bo as lb,ms as mb,qo as nb,xs as ob,Pe as pb,Fo as qb,Zg as rb,at as sb,As as tb,dh as ub,st as vb,lt as wb,Bs as xb,ct as yb,Uo as zb,_o as Ab,$s as Bb,Ko as Cb,Go as Db,Qo as Eb,Xo as Fb,Zo as Gb,er as Hb,or as Ib,ir as Jb,ur as Kb,fr as Lb,yr as Mb,B as Nb};
|