react-iiif-vault 2.0.19 → 4.0.0

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