react-iiif-vault 2.0.0 → 2.0.2

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