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