react-iiif-vault 2.0.5 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.d.ts +2 -1
- package/dist/bundle.global.js +24 -24
- package/dist/canvas-panel.cjs +6 -6
- package/dist/canvas-panel.d.cts +2 -2
- package/dist/canvas-panel.d.ts +2 -2
- package/dist/canvas-panel.js +1 -1
- package/dist/chunk-FBET7GLW.js +1 -0
- package/dist/{chunk-SNWQWQTN.js → chunk-I5SAOKMU.js} +2 -2
- package/dist/{index-Btmqi4an.d.cts → index-Bxw5USbW.d.cts} +1 -1
- package/dist/{index-Cxmpcndt.d.ts → index-kvJxjxZG.d.ts} +1 -1
- package/dist/index.cjs +8 -8
- package/dist/index.d.cts +7 -7
- package/dist/index.d.ts +7 -7
- package/dist/index.js +1 -1
- package/dist/{useRenderingStrategy-CHg8UC3-.d.cts → useRenderingStrategy-Bg8-k9-n.d.cts} +1 -0
- package/dist/{useRenderingStrategy-CHg8UC3-.d.ts → useRenderingStrategy-Bg8-k9-n.d.ts} +1 -0
- package/dist/{utils-B4O1xptf.d.ts → utils-CHozUicY.d.ts} +1 -1
- package/dist/{utils-C0dpk-mp.d.cts → utils-CMAqRpk_.d.cts} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.d.cts +2 -2
- package/dist/utils.d.ts +2 -2
- package/dist/utils.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-223VJXTE.js +0 -1
package/dist/canvas-panel.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import '@atlas-viewer/atlas';
|
|
2
2
|
import 'react';
|
|
3
|
-
export { g as CanvasPanel, C as CanvasPanelProps } from './index-
|
|
3
|
+
export { g as CanvasPanel, C as CanvasPanelProps } from './index-kvJxjxZG.js';
|
|
4
4
|
import 'react/jsx-runtime';
|
|
5
5
|
import 'zustand';
|
|
6
6
|
import 'mitt';
|
|
@@ -9,6 +9,6 @@ import '@iiif/helpers/vault';
|
|
|
9
9
|
import '@iiif/presentation-3';
|
|
10
10
|
import 'zustand/vanilla';
|
|
11
11
|
import '@iiif/presentation-3-normalized';
|
|
12
|
-
import './useRenderingStrategy-
|
|
12
|
+
import './useRenderingStrategy-Bg8-k9-n.js';
|
|
13
13
|
import '@iiif/helpers';
|
|
14
14
|
import '@iiif/helpers/annotation-targets';
|
package/dist/canvas-panel.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ub as a}from"./chunk-
|
|
1
|
+
import{Ub as a}from"./chunk-I5SAOKMU.js";import"./chunk-FBET7GLW.js";export{a as CanvasPanel};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{expandTarget as L}from"@iiif/helpers";function J(e){return e.type==="SpecificResource"?[e.source,{selector:e.selector}]:[e,{selector:null}]}function I(e,t){let{selector:o,source:r}=L(t);if(r.id!==e.id)return[null,r];let i={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}};return[o?o.type==="TemporalSelector"?{type:"TemporalBoxSelector",temporal:o.temporal,spatial:i.spatial}:o:null,r]}var K={makeChoice:()=>{}},b={type:"unknown"},c=e=>({type:"unknown",reason:e,annotations:{pages:[]}}),z=(e,t)=>({type:"empty",width:e,height:t,annotations:{pages:[]},image:null,images:[]});var W=["model/gltf-binary"];function v(e,t){let o=t.items[0],r=o.resource;return r.format?W.indexOf(r.format)===-1?c(`3D format: ${r.format} is unsupported`):{type:"3d-model",model:r,annotationId:o.annotationId,annotation:o.annotation}:c("Unknown format")}import{expandTarget as A}from"@iiif/helpers/annotation-targets";import{getImageServices as E}from"@iiif/parser/image-3";function h(e){return e.replace(/^http:/,"https:")}function w(e,t,o){let r=[],i=[];for(let a of t.items){let l=a.resource&&a.resource.type==="SpecificResource"?a.resource.source:a.resource;if(!l.id)return c("No resource Identifier");let u;if(l.service){let S=E(l);S[0]&&(u=o(S[0],e))}let d={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}},[y,n]=I(e,a.target),m=e.id?.split("?")[0]||"";if(!(h(n.id||"")===h(e.id)||h(decodeURIComponent(n.id||""))===h(e.id||"")||h(n.id||"")===h(m)||h(decodeURIComponent(n.id||""))===h(m)))continue;let s=a.resource.width&&a.resource.height?{type:"BoxSelector",spatial:{x:0,y:0,width:a.resource.width,height:a.resource.height}}:void 0,p=a.resource.type==="SpecificResource"?A(a.resource):null;if(a.selector){let S=A({type:"SpecificResource",source:a.resource,selector:a.selector});S&&(p=S)}let f=p&&p.selector&&(p.selector.type==="BoxSelector"||p.selector.type==="TemporalBoxSelector")?{type:"BoxSelector",spatial:{x:p.selector.spatial.x,y:p.selector.spatial.y,width:p.selector.spatial.width,height:p.selector.spatial.height}}:void 0;u&&!u.id&&(u.id=u["@id"]);let g={id:l.id,type:"Image",annotationId:a.annotationId,annotation:a.annotation,width:Number(y||f?l.width:e.width),height:Number(y||f?l.height:e.height),service:u,sizes:u&&u.sizes?u.sizes:l.width&&l.height?[{width:l.width,height:l.height}]:[],target:y&&y.type!=="PointSelector"?y:d,selector:f||{type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}},annotationPages:a.resource.annotations||[]};r.push(g)}return{type:"images",image:r[0],images:r,choice:t.choice}}function B(e,t={},o){let r=e.language||o||"none";switch(e.type){case"TextualBody":{typeof e.value<"u"&&(t[r]=[e.value]);break}case"List":case"Composite":case"Choice":e.items&&e.items.forEach(i=>B(i,t,r))}return t}function V(e,t){let o=[];return t.items.forEach(r=>{if(r.resource){let[i]=I(e,r.target);o.push({type:"Text",annotationId:r.annotationId,annotation:r.annotation,text:B(r.resource),target:i})}}),{type:"textual-content",items:o}}import{expandTarget as Y,parseSelector as F}from"@iiif/helpers";var q=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function k(e,t,o,r=!1){let i=t.items.filter(g=>g.type==="video"),a=i[0],l=!1,u=!1;if(e.duration||(u=!0),i.length>1||!a)return c("Only one video source supported");let d=i[0]?.resource,y=!!(d.service||[]).find(g=>(g.profile||"").includes("youtube.com"));if(!y&&u)return c("Video does not have duration");if(!d)return c("Unknown video");if((!d.format||d.format==="text/html")&&!y)return c("Video does not have format");let n=[],m=o.get(e.annotations||[]);for(let g of m){let S=o.get(g.items||[]);for(let x of S)if((x.motivation?Array.isArray(x.motivation||"")?x.motivation:[x.motivation]:[]).includes("supplementing")){let M=o.get(x.body||[]);for(let O of M){let T=O;if(T.type==="Choice")for(let U of T.items){let C=o.get(U);C.format==="text/vtt"&&n.push({id:C.id,type:"Text",format:"text/vtt",label:C.label,language:C.language})}else T.format==="text/vtt"&&n.push({id:T.id,type:"Text",format:"text/vtt",label:T.label,language:T.language})}}}let s={annotationId:a.annotationId,annotation:a.annotation,duration:e.duration,url:d.id,type:"Video",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:d.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},p=Y(a.target);p.selector&&p.selector.type==="TemporalBoxSelector"&&(s.target=p.selector);let{selector:f}=F(a.selector);if(f===null){let g=s.target.temporal.startTime,x=(s.target.temporal.endTime||e.duration)-g;s.selector={type:"TemporalSelector",temporal:{startTime:0,endTime:x}}}else f.type==="TemporalSelector"&&(s.selector=f);if(r&&!s.target.spatial&&(l=!0,s.target={type:"TemporalBoxSelector",temporal:s.target.temporal,spatial:{x:e.width/2,y:e.height/2,width:e.width/2,height:e.height/2}}),y){s.type="VideoYouTube";let g=d.id.match(q);if(!g[1])return c("Video is not known youtube video");s.youTubeId=g[1]}return{type:"media",media:s,annotations:{pages:[]},noSpatial:l,captions:n}}import{expandTarget as G}from"@iiif/helpers";function P(e,t){let o=t.items,r=o[0];if(o.length===0||!r)return c("No audio");if(!e.duration)return c("No duration on canvas");if(o.length>1)return c("Only one audio source supported");let i=r.resource;return i?("format"in i||(i.format="audio/mpeg"),{type:"media",media:{annotationId:r.annotationId,annotation:r.annotation,duration:e.duration,url:i.id,type:"Sound",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:i.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},annotations:{pages:[]}}):c("Unknown audio")}function D(e,t,o,r){let i={type:"complex-timeline",items:[],keyframes:[],highlights:[],duration:e.duration||0},a={type:"complex-choice",items:[]},l=r.get(e.annotations);function u(n){n.choice&&(n.choice.type==="complex-choice"?a.items.push(...n.choice.items):a.items.push(n.choice))}for(let n of t.items){if(n.type==="image"){let m=w(e,{choice:null,allChoices:null,types:["image"],items:[n]},o);if(m.type==="images"){if(!m.image)continue;u(m),i.items.push(m.image);let s={id:m.image.annotationId,type:"enter",resourceType:"image",time:m.image.target?.temporal?.startTime||0};i.keyframes.push(s);let p={id:m.image.annotationId,type:"exit",resourceType:"image",time:m.image.target?.temporal?.endTime||e.duration||0};i.keyframes.push(p)}}if(n.type==="textualbody"){let m=V(e,{choice:null,allChoices:null,types:["textualbody"],items:[n]});if(m.type==="textual-content"){u(m);let s=m.items[0];i.items.push(s);let p=s.target,f={id:s.annotationId,type:"enter",resourceType:"text",time:p.temporal?.startTime||0};i.keyframes.push(f);let g={id:s.annotationId,type:"exit",resourceType:"text",time:p.temporal?.endTime||e.duration||0};i.keyframes.push(g)}}if(n.type==="video"){let m=k(e,{choice:null,allChoices:null,types:["video"],items:[n]},r,!0);if(m.type==="media"){u(m);let s=m.media;i.items.push(s);let p={id:s.annotationId,type:"enter",resourceType:"video",time:s.target?.temporal?.startTime||0};i.keyframes.push(p);let f={id:s.annotationId,type:"exit",resourceType:"video",time:s.target?.temporal?.endTime||e.duration||0};i.keyframes.push(f)}}if(n.type==="audio"||n.type==="sound"){let m=P(e,{choice:null,allChoices:null,types:["audio"],items:[n]});if(m.type==="media"){u(m);let s=m.media;i.items.push(s);let p={id:s.annotationId,type:"enter",resourceType:"audio",time:s.target?.temporal?.startTime||0};i.keyframes.push(p);let f={id:s.annotationId,type:"exit",resourceType:"audio",time:s.target?.temporal?.endTime||e.duration||0};i.keyframes.push(f)}}}for(let n of l)for(let m of n.items){let s=r.get(m),p=G(s.target,{typeMap:r.getState?.().iiif.mapping});if(p.selector?.temporal){let f={id:s.id,type:"enter",resourceType:"highlight",time:p.selector.temporal.startTime||0};i.keyframes.push(f);let g={id:s.id,type:"exit",resourceType:"highlight",time:p.selector.temporal.endTime||e.duration||0};i.keyframes.push(g)}i.highlights.push({annotation:s,target:p})}i.keyframes.sort((n,m)=>n.time-m.time);let d=[],y=[];for(let n of i.keyframes){if(n.resourceType==="image"||n.resourceType==="text"||n.resourceType==="highlight"){y.push(n);continue}if(n.type==="enter"){d.length===0&&(n.isPrime=!0),d.push(n),y.push(n);continue}if(n.type==="exit"&&(y.push(n),d=d.filter(m=>m.id!==n.id),d.length!==0)){let m=d[0],s={id:m.id,type:"change",isPrime:!0,resourceType:m.resourceType,time:n.time};y.push(s)}}return i.keyframes=y,a.items.length&&(i.choice=a),i}var N={},R={get(e){return e},setMetaValue([e,t,o],r){let i=R.getResourceMeta(e,t),a=i?i[o]:void 0,l=typeof r=="function"?r(a):r;N[e]={...N[e]||{},[t]:{...(N[e]||{})[t]||{},[o]:l}}},getResourceMeta:(e,t)=>{let o=N[e];if(o)return t?o[t]:o},async load(e){let t=typeof e=="string"?e:e.id;return fetch(t).then(o=>o.json())},requestStatus(e){}};function ve({canvas:e,paintables:t,supports:o,loadImageService:r,vault:i=R}){if(!e)return b;if(t.types.length===0)return o.indexOf("empty")!==-1?z(e.width,e.height):b;if(t.types.length!==1)if(t.types.length===2&&t.types.indexOf("text")!==-1)t.types=t.types.filter(l=>l!=="text");else return o.indexOf("complex-timeline")===-1?c("Complex timeline not supported"):D(e,t,r,i);let a=t.types[0];return a==="image"?o.indexOf("images")===-1?c("Image not supported"):w(e,t,r):a==="Model"||a==="model"?o.indexOf("3d-model")===-1?c("3D not supported"):v(e,t):a==="textualbody"?o.indexOf("textual-content")===-1?c("Textual content not supported"):V(e,t):a==="sound"||a==="audio"?o.indexOf("media")===-1?c("Media not supported"):P(e,t):a==="video"?o.indexOf("media")===-1?c("Media not supported"):k(e,t,i):b}export{J as a,I as b,K as c,b as d,c as e,z as f,v as g,w as h,V as i,k as j,D as k,ve as l};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as ln,l as un}from"./chunk-223VJXTE.js";import{forwardRef as Vr,useImperativeHandle as Ol,useMemo as Bl}from"react";import Nr,{useContext as Lr,useMemo as zr}from"react";import{jsx as Br}from"react/jsx-runtime";var Or={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},$e=Nr.createContext(Or),_=()=>Lr($e);function ie({value:e,children:t}){let n=_(),o=zr(()=>({...n,...e}),[e,n]);return Br($e.Provider,{value:o,children:t})}import{jsx as Hr}from"react/jsx-runtime";function ee({canvas:e,children:t}){return Hr(ie,{value:{canvas:e},children:t})}import Dr,{useState as qr}from"react";import{Vault as cn,globalVault as $r}from"@iiif/helpers/vault";import{jsx as dn}from"react/jsx-runtime";var le=Dr.createContext({vault:null,setVaultInstance:e=>{}});function ge({vault:e,vaultOptions:t,useGlobal:n,resources:o,children:s}){let[i,r]=qr(()=>e||(n?$r(t):t?new cn(t):new cn));return dn(le.Provider,{value:{vault:i,setVaultInstance:r},children:dn(ie,{value:o||{},children:s})})}import{useContext as _r}from"react";import jr from"react";import{useContext as Fr}from"react";var M=()=>{let{vault:e}=Fr(le);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};import{useEffect as Wr,useState as Ur}from"react";function k(e,t=[]){let n=M(),[o,s]=Ur(()=>e(n.getState(),n));return Wr(()=>n.subscribe(i=>e(i,n),i=>{s(i)},!1),t),o}var he=jr.createContext([]);function Fe(){let e=_r(he);return k(t=>e.map(n=>t.iiif.entities.Canvas[n]).filter(Boolean),[e])}import{globalVault as Kr}from"@iiif/helpers/vault";import{useContext as Yr}from"react";function ye(e){let t=Yr(le);return e||(t&&t.vault?t.vault:Kr())}import{useMemo as Gr}from"react";function B(e={},t=[]){let{id:n,selector:o}=e,s=_(),i=M(),r=n||s.manifest,a=k(l=>r?l.iiif.entities.Manifest[r]:void 0,[r]);return Gr(()=>{if(a)return o?o(a):a},[a,o,...t])}import{useContext as Si}from"react";import{createContext as xi,useMemo as Ci}from"react";import{useEffect as Qr,useMemo as Xr,useState as yt}from"react";function mn(e,{noCache:t=!1}={}){let n=typeof e=="string"?e:e.id,o=ye(),[s,i]=yt(n),[r,a]=yt(void 0),l=Xr(()=>o.get(n,{skipSelfReturn:!0})||void 0,[n,o]),[u,f]=yt(l);return Qr(()=>{(async()=>{try{let c=l&&!t?l:await o.load(n),m=c?c.id||c["@id"]:null;c&&s!==m&&i(m),f(c)}catch(c){a(c)}})()},[n,t]),{isLoaded:!!u,id:s,requestId:n,error:r,resource:u,cached:!!(u&&u===l)}}function pn(e,t){let{id:n,isLoaded:o,error:s,resource:i,requestId:r,cached:a}=mn(e,t);return{id:n,isLoaded:o,error:s,manifest:i,requestId:r,cached:a}}import{jsx as Zr}from"react/jsx-runtime";function fn({manifest:e,children:t}){return Zr(ie,{value:{manifest:e},children:t})}import{jsx as Jr}from"react/jsx-runtime";function gn({range:e,children:t}){return Jr(ie,{value:{range:e},children:t})}function ei(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=ei(e,e.get(n));if(o)return o}}return null}function vt(e,t){let n=[];for(let o of t.items)if(o.type==="SpecificResource"&&o.source?.type==="Canvas"&&(o.source.id.indexOf("#")!==-1?n.push({id:o.source.id.split("#")[0],type:"Canvas"}):n.push(o.source)),o.type==="Range"&&n.push(...vt(e,e.get(o))),o.type==="SpecificResource"){let s=typeof o.source=="string"?o.source:o.source.id;n.push({id:s,type:"Canvas"})}return n}function Ou(e,t,n){for(let o of t.structures){let s=hn(e,e.get(o),n);if(s)return s}return null}function hn(e,t,n){for(let o of t.items){let s=o?.source?.id?.split("#")[0];if(o.type==="SpecificResource"&&o.source===n||o.type==="SpecificResource"&&o.source?.type==="Canvas"&&n===s)return t;if(o.type==="Range"){let i=hn(e,e.get(o),n);if(i)return i}}return null}function Du(e,t,n,o=!1){let s=t.behavior,i=n?e.get(n):null;if(!i)return[];let r=i.behavior,a=o?!1:s.includes("paged"),l=a?!1:s.includes("continuous"),u=a||l?!1:s.includes("individuals"),f=r.includes("facing-pages"),c=r.includes("non-paged");if(f||c||u||o)return[{id:i.id,type:"Canvas"}];let[m,h]=St(e,t);if(l)return m;let v=m.findIndex(p=>p.id===n);if(v===-1)return[];for(let p of h)if(p.includes(v))return p.map(S=>m[S]);return[{id:i.id,type:"Canvas"}]}function St(e,t,{disablePaging:n,skipNonPaged:o}={}){let s=t.behavior,i=s.includes("paged"),r=i?!1:s.includes("continuous"),a=i||r?!1:s.includes("individuals"),l=t.type==="Manifest"?t.items:vt(e,t);if(r)return[l,[l.map((v,p)=>p)]];if(a||!i||n)return[l,l.map((v,p)=>[p])];let u=[],f=[],c=()=>{f.length&&(u.push([...f]),f=[])},m=0,h=!1;for(let v=0;v<l.length;v++){let p=e.get(l[v]);if(p.behavior.includes("non-paged")){v===m&&m++,o||(c(),u.push([v]),c());continue}if(v===m||p.behavior.includes("facing-pages")){f.length&&(h=!0),c(),u.push([v]),c();continue}if(f.push(v),h){c(),h=!1;continue}f.length>1&&c()}return f.length&&c(),[l,u]}import{useCallback as We,useMemo as ni,useRef as oi,useState as ri}from"react";import{useMemo as ti}from"react";function yn(e={},t=[]){let{id:n,selector:o}=e,s=_(),i=n||s.range,r=k(a=>i?a.iiif.entities.Range[i]:void 0,[i]);return ti(()=>{if(r)return o?o(r):r},[r,o,...t])}function vn({startCanvas:e,disablePaging:t}){let n=M(),o=B(),s=yn(),[i,r]=ri(void 0),a=s||o;if(!a)throw new Error("Nothing selected");let[l,u]=ni(()=>St(n,a,{disablePaging:t}),[n,a,t]),f=oi(u);if(f.current!==u){let S=f.current[i][0],y=u.findIndex(d=>d.includes(S));f.current=u,r(y)}let c=We(p=>{let S=u.findIndex(y=>y.includes(p));r(S===-1?0:S)},[l,u]),m=We(p=>{let S=l.findIndex(y=>y.id===p);S!==-1?c(S):r(0)},[l,u]),h=We(()=>{r(p=>p>=u.length-1?p:p+1)},[u]),v=We(()=>{r(p=>p<=0?0:p-1)},[u]);return typeof i>"u"&&(e?m(e):r(0)),{visibleItems:u[i]?.map(p=>l[p].id)||[],cursor:i,items:l,sequence:u,hasPrevious:i>0,hasNext:i<u.length-1,setSequenceIndex:r,setCanvasIndex:c,setCanvasId:m,next:h,previous:v}}import{createContext as bt,useContext as Mn,useEffect as ai,useMemo as si}from"react";import{useStore as Ve}from"zustand";import{createStore as xn}from"zustand/vanilla";function Zu(e){let t=e.service||e.services||[];for(let n of t)if(n.type==="AuthProbeService2")return!0;return!1}function j(e,t,n){let o=t.findIndex(r=>r.service.id===e);if(o===-1)return t;let s=[...t],i=n(s[o]);return i===s[o]?t:(s[o]=i,s)}var Cn=()=>xn((e,t)=>({currentAuth:-1,authItems:[],login:()=>{let n=t().authItems[t().currentAuth];if(!n||n.isPending||n.isLoggedIn)return;if(n.type!=="active")throw new Error("Cannot login to non-active service");let o=n.service.service.find(s=>s.type==="AuthAccessTokenService2");if(!o)throw new Error("Token service not found");e(()=>({authItems:j(n.id,t().authItems,s=>({...s,isPending:!0}))})),Sn(n.service).then(()=>{xt(o).then(s=>{let i=s.expiresIn,r=Date.now()+i*1e3;e(()=>({authItems:j(n.id,t().authItems,a=>({...a,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:r}}))}))}).catch(s=>{e(()=>({authItems:j(n.id,t().authItems,i=>({...i,isLoggedIn:!1,isPending:!1,error:s.message}))}))})})},logout:()=>{let n=t().authItems[t().currentAuth];if(!n||n.isPending||!n.isLoggedIn)return;if(n.type!=="active")throw new Error("Cannot logout of non-active service");let o=n.service.service.find(r=>r.type==="AuthLogoutService2");if(!o)return;let s=`${o.id}?origin=${An()}`,i=window.open(s);e(()=>({authItems:j(n.id,t().authItems,r=>({...r,isLoggedIn:!1,session:null,isPending:!1}))}))},nextAuth:()=>{let n=t().authItems.length,o=t().currentAuth+1;o>=n||e(()=>({currentAuth:o}))},previousAuth:()=>{let n=t().currentAuth-1;n<0||e(()=>({currentAuth:n}))},setAuth:n=>{n!==-1&&(n<0||n>=t().authItems.length)||e(()=>({currentAuth:n}))},addService:(n,o)=>{if(!n.service)return;let s=n.service.find(a=>a.type==="AuthAccessTokenService2"),i=n;if(t().authItems.find(a=>a.service.id===n.id)){e(()=>({authItems:j(n.id,t().authItems,a=>({...a,instances:a.instances+1}))}));return}if(e(()=>({currentAuth:i.profile==="active"?0:t().currentAuth,authItems:[{id:n.id,type:n.profile,service:n,probeId:o,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...t().authItems]})),n.profile==="external"){if(!s)throw new Error("Token service not found");xt(s).then(a=>{e(()=>({authItems:j(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:j(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:a.message}))}))})}if(n.profile==="kiosk"){if(!s)throw new Error("Token service not found");e(()=>({authItems:j(n.id,t().authItems,a=>({...a,isPending:!0}))})),Sn(i).then(()=>{xt(s).then(a=>{e(()=>({authItems:j(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:j(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,error:a.message}))}))})})}n.profile},removeService:(n,o)=>{let s=t().currentAuth===t().authItems.findIndex(r=>r.service.id===n.id),i=t().currentAuth;if(s){let r=t().authItems.find(l=>l.service.id===n.id);r&&r.instances>1||(i=t().authItems.findIndex(u=>u.service.id!==n.id&&u.instances>0))}e(()=>({authItems:j(n.id,t().authItems,r=>({...r,instances:r.instances-1})),currentAuth:i}))}})),bn=(e,t)=>xn((n,o)=>({service:e,status:e?"unknown":"success",shouldRedirect:!1,redirectResource:null,shouldSubstitute:!1,substituteResource:null,error:null,errorHeading:null,errorNote:null,shouldDisplayResource:!1,token:t||null,async probe(){if(!o().service)return;let s=o().service?.id;if(!s){n({status:"error",error:"Service ID not found",errorHeading:{en:["Service ID not found"]}});return}n({status:"probing"});let i=o().token;try{let r=await fetch(s,{headers:i?{Authorization:`Bearer ${o().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(a=>a.json());if(r.status===200)n({status:"success",shouldDisplayResource:!0,error:null,errorHeading:null,errorNote:null,shouldSubstitute:!1,shouldRedirect:!1});else if(r.status<400&&r.status>=300){if(!r.location)throw new Error("Redirect location not found");n({status:"error",shouldDisplayResource:!1,shouldRedirect:!0,redirectResource:r.location||null})}else if(r.status===401)n({status:"error",shouldDisplayResource:!1,shouldRedirect:!1,shouldSubstitute:!!r.substitute,substituteResource:r.substitute||null,error:"Unauthorized",errorHeading:r.heading||{en:["Unauthorized"]},errorNote:r.note||null});else throw new Error("Unknown error")}catch(r){n({status:"error",error:r.message,errorHeading:{en:["Unknown error"]}})}},setToken(s){n({token:s})}}));function Rn(e){let t=e.service||e.services||[],n={hasAuth:!1,services:{}};for(let o of t)if(o.type==="AuthProbeService2"){n.services.probe=o,n.hasAuth=!0;let s=o.service.filter(i=>i.type==="AuthAccessService2");s[0]&&(n.services.access=s[0])}return n}async function xt(e,{strict:t=!0}={}){return new Promise((n,o)=>{let s=Math.random().toString(36).substring(7),i=`${e.id}?messageId=${s}&origin=${window.location.origin}`,r=u=>{let f=u.data;if(f.messageId===s){if(t&&f.type!=="AuthAccessToken2"){a(),o("Invalid response, expected type=AuthAccessToken2");return}if(!f.accessToken){a(),o("Invalid response, expected accessToken");return}a(),n(f)}},a=()=>window.removeEventListener("message",r),l=document.createElement("iframe");l.src=i,l.style.display="none",document.body.appendChild(l),window.addEventListener("message",r)})}function An(e){let t=window.location;if(e){let n=document.createElement("a");return n.href=e,n.protocol+"//"+n.hostname+(n.port?":"+n.port:"")}return t.protocol+"//"+t.hostname+(t.port?":"+t.port:"")}async function Sn(e){let t=`${e.id}?origin=${An()}`,n=window.open(t);if(!n)throw new Error("Failed to open window");return new Promise((o,s)=>{let i=setInterval(()=>{n.closed&&(clearInterval(i),o())},500)})}import{useEffect as Pn,useMemo as Tn}from"react";import{useStore as ii}from"zustand";function wn(e){let t=Tn(()=>Rn(e),[e]),n=In(t.services.access?.id),o=Tn(()=>bn(t.services.probe,n),[t.services.probe]),s=ii(o);return Pn(()=>{s.status==="unknown"&&!n&&s.probe()},[t.services.probe,s.status]),Pn(()=>{n&&(s.setToken(n),s.probe())},[n]),[e,s,t.hasAuth]}import{jsx as Ue}from"react/jsx-runtime";var ve=bt(null),li=bt(null);li.displayName="CurrentAuth";var ui=bt(null);ui.displayName="AuthActions";function kn({children:e}){let t=si(()=>Cn(),[]);return Ue(ve.Provider,{value:t,children:e})}function En(){return!!Mn(ve)}function Ne(){let e=Mn(ve);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function ci(){let e=Ne();return Ve(e,n=>({login:n.login,logout:n.logout,nextAuth:n.nextAuth,previousAuth:n.previousAuth,setAuth:n.setAuth,addService:n.addService,removeService:n.removeService}))}function hc(){let e=Ne();return Ve(e,t=>t)}function di(e){let t=Ne();return Ve(t,o=>o.authItems.find(s=>s.service.id===e))}function In(e){let t=Ne();return Ve(t,o=>o.authItems.find(s=>s.id===e)?.session?.token)}function yc(e){let t=Ne();return Ve(t,o=>{let s=o.authItems.find(i=>i.service.id===e);return!s||!s.isLoggedIn||!s.session?null:s.session?.token||null})}function mi(e){let t=ci(),n=di(e.service.id);return ai(()=>(t?.addService(e.service,e.probeId),()=>{t?.removeService(e.service,e.probeId)}),[e.service]),n?(n.error||!n.isLoggedIn,e.children):null}function Ct(){return null}function Vn(e){let[t,n,o]=wn(e.resource),s=e.fallbackComponent||Ct,i=e.loadingComponent||Ct,r=e.errorComponent||Ct,a=n.service,l=null;if(!o||!a)return e.children(t);let u=a.service.filter(f=>f.type==="AuthAccessService2");n.status==="error"&&(l=Ue(r,{resource:e.resource,error:n.error||"",heading:n.errorHeading,note:n.errorNote,extra:e.extra})),(n.status==="unknown"||n.status==="probing")&&(l=Ue(i,{})),n.status==="success"&&(l=e.children(t));for(let f of u)l=Ue(mi,{service:f,probeId:a.id,children:l},f.id);return l}import{createContext as hi,useContext as Tc,useMemo as yi}from"react";import{createStore as pi}from"zustand/vanilla";var fi=e=>e.id||e["@id"];function gi(e){return(Array.isArray(e.service)?e.service:[e.service]).find(n=>n.profile==="http://iiif.io/api/search/0/autocomplete"||n.profile==="http://iiif.io/api/search/1/autocomplete"||n.profile==="AutoCompleteService1")}var Nn=e=>{let t;typeof e=="string"?t={"@context":"http://iiif.io/api/search/1/context.json",profile:"http://iiif.io/api/search/1/search","@id":e,id:e,service:[]}:t=e;let n=t?fi(t):void 0,o=null;return pi((s,i)=>({service:t,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!t,hasAutocomplete:t?!!gi(t):!1,errorMessage:"",search(r,a={}){if(!n)throw new Error("No search service found.");o&&!o.signal.aborted&&o.abort(),o=new AbortController;let l=new URLSearchParams;r.q&&l.set("q",r.q),r.motivation&&l.set("motivation",r.motivation),r.date&&l.set("date",r.date),r.user&&l.set("user",r.user),s({loading:!0}),fetch(`${n}?${l.toString()}`,{signal:o.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...a.headers||{}}}).then(async u=>{if(!o?.signal.aborted)if(u.ok){let f=await u.json();s({resources:f.resources,error:!1,errorMessage:""})}else s({resources:[],error:!0,errorMessage:u.statusText})})},clearSearch(){s({resources:[],error:!1,errorMessage:""})},highlightResult(r){let a=i().resources.find(l=>l["@id"]===r);s({highlight:a})},nextResult(){let r=i().resources,a=i().highlight;if(!a){s({highlight:r[0]||null});return}let l=r.findIndex(u=>u["@id"]===a["@id"]);if(l===-1){s({highlight:r[0]||null});return}s({highlight:r[l+1]||r[0]||null})},previousResult(){let r=i().resources,a=i().highlight;if(!a){s({highlight:r[r.length-1]||null});return}let l=r.findIndex(u=>u["@id"]===a["@id"]);if(l===-1){s({highlight:r[r.length-1]||null});return}if(l===0){s({highlight:r[r.length-1]||null});return}s({highlight:r[l-1]||r[r.length-1]||null})}}))};import{useStore as Ec}from"zustand";function Ln(){let e=B();return e?e.service.find(t=>t.profile==="SearchService1"||t.profile==="http://iiif.io/api/search/1/search"):void 0}import{jsx as Rt}from"react/jsx-runtime";var Se=hi(null);Se.displayName="Search";function zn(e){let t=Ln();return e.store?Rt(Se.Provider,{value:e.store,children:e.children}):Rt(vi,{service:t,children:e.children})}function vi({service:e,children:t}){let n=yi(()=>Nn(e),[e]);return Rt(Se.Provider,{value:n,children:t})}import{jsx as F}from"react/jsx-runtime";var Le=()=>{},ze=xi({setCurrentCanvasId:Le,setCurrentCanvasIndex:Le,nextCanvas:Le,previousCanvas:Le,items:[],sequence:[],setSequenceIndex:Le,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function bi(e){let t=B(),{cursor:n,visibleItems:o,next:s,sequence:i,items:r,setCanvasIndex:a,setCanvasId:l,previous:u,setSequenceIndex:f,hasNext:c,hasPrevious:m}=vn({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),h=Ci(()=>({sequence:i,items:r,setCurrentCanvasId:l,nextCanvas:s,previousCanvas:u,totalCanvases:r.length,setCurrentCanvasIndex:a,setSequenceIndex:f,currentSequenceIndex:n,hasNext:c,hasPrevious:m}),[i,r,l,s,u,r,a,f,n]);return t?o.length===0?null:F(ze.Provider,{value:h,children:F(he.Provider,{value:o,children:F(ee,{canvas:o[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),F("div",{children:"Sorry, something went wrong."}))}function On(e){let t=ye(e.vault),n=pn(e.manifest);if(!n)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),F("div",{children:"Sorry, something went wrong."});if(n.error)return F("div",{children:n.error.toString()});if(!n.isLoaded)return F("div",{children:"Loading..."});let o=F(bi,{...e,children:e.children});return F(ge,{vault:t,children:F(fn,{manifest:n.id,children:F(kn,{children:F(zn,{children:e.rangeId?F(gn,{range:e.rangeId,children:o}):o})})})})}function _e(){return Si(ze)}import{ModeContext as Vi}from"@atlas-viewer/atlas";import{createContext as Ni,useContext as Wn,useEffect as Li,useMemo as zi}from"react";import{useStore as Oi}from"zustand";import Ri from"mitt";import{createContext as Ai,useContext as Bn,useEffect as Pi}from"react";import{jsx as wi}from"react/jsx-runtime";var Ti=Ri(),At=Ai(Ti);function id({children:e,emitter:t}){return wi(At.Provider,{value:t,children:e})}function Hn(){return Bn(At)}function Dn(e,t,n=[]){let o=Bn(At);Pi(()=>{let s=i=>{t(i)};return o.on(e,s),()=>{o.off(e,s)}},[o,e,...n])}import{createHelper as Mi}from"polygon-editor";import{createStore as ki}from"zustand/vanilla";function Pt(e){let t=Math.max(...e.map(i=>i[0])),n=Math.min(...e.map(i=>i[0])),o=Math.max(...e.map(i=>i[1])),s=Math.min(...e.map(i=>i[1]));for(let i of e)if(i[0]!==n&&i[0]!==t&&i[1]!==s&&i[1]!==o||i[0]<n||i[0]>t||i[1]<s||i[1]>o)return!1;return!0}function xe(e){if(!e)return null;if(e.points.length>2){let t=Math.min(...e.points.map(i=>i[0])),n=Math.min(...e.points.map(i=>i[1])),o=Math.max(0,...e.points.map(i=>i[0])),s=Math.max(0,...e.points.map(i=>i[1]));return{x:t,y:n,width:o-t,height:s-n}}return null}function Ii(e){return e.type==="SvgSelector"}function cd(e){return e.type==="BoxSelector"}function Tt(e,t){if(Ii(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(f=>f.join(",")).join(" ")}" /></svg>`}}return{type:"SvgSelector",value:`<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><g><path d='M${e.points.map(a=>a.join(",")).join(" ")}${r?" Z":""}' /></g></svg>`}}if(!e.spatial)return null;let{x:n,y:o,width:s,height:i}=e.spatial||{};return!s||!i?null:{type:"FragmentSelector",value:`xywh=${~~n},${~~o},${~~s},${~~i}`}}function wt(e,t){if(!e||!e.points.length)return null;if(Pt(e.points)){let n=e.points.map(l=>l[0]),o=e.points.map(l=>l[1]),s=Math.min(...n),i=Math.min(...o),r=Math.max(...n)-s,a=Math.max(...o)-i;return Tt({type:"BoxSelector",spatial:{x:s,y:i,width:r,height:a}},t)}return Tt({type:"SvgSelector",points:e.points,svgShape:e.open?"polygon":"polyline"},t)}function qn(e){if(e.type==="polygon"&&!e.noBox&&e.points&&Pt(e.points)){let n=xe({open:!1,points:e.points||[]});return qn({...e,type:"box",selector:n})}if(e.type==="polygon"||e.type==="draw")return{polygon:{points:e.points||[],open:e.open||!1},requestType:e.type,boundingBox:xe({points:e.points||[],open:!1}),metadata:{},arguments:e.arguments||{},target:wt({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:wt({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 Ei={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 $n({events:e,enabledTools:t,keyboardShortcutMapping:n,keyboardShortcutsEnabled:o=!1,debug:s}){let i=ki((a,l)=>{let u=null,c=Mi({emitter:e,keyboardShortcutsEnabled:o,keyboardShortcutMapping:n,enabledTools:t,customSetState:m=>{s&&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:c.history,polygon:null,validRequestIds:[],metadata:{},stableViewport:null,canvasRelativePositions:{},canvasViewports:{},polygons:c,polygonState:Ei,setMetadata:(m,h)=>{let v=h||l().tool.requestId;v&&a(p=>({metadata:{...p.metadata,[v]:{...p.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&&(c.setShape({points:[],open:!0}),m.cancelRequest(m.tool.requestId))}},reset:()=>{let m=l();m.tool.requestId&&m.cancelRequest(m.tool.requestId)},setPolygonState:m=>a({polygonState:typeof m=="function"?m(l().polygonState):m}),getRequestId:()=>{let m=Math.random().toString(36).slice(2);return a(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(p=>p!==h)})),e.emit("atlas.request-cancelled",{id:h}))},requestAnnotation:async(m,h)=>{let p={...l().requests,[h.requestId]:m},S=qn(m);s&&console.log("requestAnnotation",{response:S,request:m});try{let{points:y=[],open:d=!0}=S.polygon||{},{requestId:g,canvasId:x=null,toolId:C}=h,b=C,R=l(),P=R.validRequestIds.includes(g),L=S.requestType;return s&&console.log("setting points",{requestType:L,points:y,open:d}),!P||R.tool.enabled?null:(c.setShape({id:g,points:y,open:d}),L==="polygon"&&(b=b||"pen",c.tools.setTool("pen")),L==="draw"&&(b=b||"draw",c.tools.setTool("pencil")),L==="box"&&(b=b||"box",c.tools.setTool("box")),L==="target"?(b=b||"box",c.tools.setTool("box"),c.lockAspectRatio(),c.tools.lockToolSwitching(),c.tools.setCanDeselect(!1),c.tools.setCanDelete(!1)):(c.tools.unlockToolSwitching(),c.tools.setCanDeselect(!0),c.tools.setCanDelete(!0)),m.bounds&&c.setBounds(m.bounds),e.emit("atlas.annotation-request",{id:g}),a({polygon:{id:g,points:y,open:d},mode:"sketch",requestType:L,tool:{enabled:!0,requestId:g,canvasId:x},requests:p}),b?R.switchTool[b]?.():y.length===0&&R.switchTool.box(),(typeof m.selectByDefault>"u"&&y.length&&L==="box"||m.selectByDefault)&&R.switchTool.pointer(),new Promise(re=>{let w=T=>{T.id===g&&(a(I=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(I.requests).filter(([E])=>E!==g))})),e.off("atlas.request-cancelled",w),e.off("atlas.annotation-completed",z),re(null))},z=T=>{T.id===g&&(a(I=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(I.requests).filter(([E])=>E!==g))})),e.off("atlas.annotation-completed",z),e.off("atlas.request-cancelled",w),re(T))};e.on("atlas.request-cancelled",w),e.on("atlas.annotation-completed",z)}))}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||{}:{},p=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:wt(y,S),canvasId:l().tool.canvasId,boundingBox:xe(y),metadata:p,arguments:{...v}}),c.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=i.getState().polygons;return e.on("atlas.annotation-request",()=>{r.clock.start((a,l,u)=>{e.emit("atlas.polygon-render",{state:a,slowState:l,dt:u})},a=>{typeof a=="object"?i.setState({polygonState:a}):i.setState(l=>({polygonState:a(l.polygonState)}))})}),e.on("atlas.annotation-completed",()=>{r.clock.stop()}),e.on("atlas.request-cancelled",()=>{r.clock.stop()}),i}import{jsx as Fn}from"react/jsx-runtime";var Ce=Ni(null);function q(){return Wn(Ce)}var It={};function Un(e="atlas"){return It[e]?.getState()}function Oe({children:e,name:t="atlas",existing:n,atlasStoreConfig:o}){let s=Hn(),i=Wn(Ce),r=zi(()=>n||i||$n({events:s,...o||{}}),[s,n,i]),a=Oi(r,l=>l.mode);return Li(()=>{let l=t;return l&&(It[l]=r),()=>{l&&delete It[l]}},[r,t]),Fn(Ce.Provider,{value:r,children:Fn(Vi.Provider,{value:a||"explore",children:e})})}import{mergeStyles as Ye}from"@atlas-viewer/atlas";import{useMemo as ta}from"react";import{createContext as Bi,useContext as Hi,useMemo as Di}from"react";import{jsx as qi}from"react/jsx-runtime";function _n(){return{default:{backgroundColor:"rgba(0,0,0,0)",borderWidth:"2px",borderColor:"rgba(252,0,98, .5)"},highlighted:{backgroundColor:"rgba(75, 103, 225, 0.4)",borderWidth:"1px",borderColor:"rgba(75,103,225,0.99)"},hidden:{borderWidth:"0px",borderColor:"rgba(0,0,0,0)",backgroundColor:"rgba(0,0,0,0)",hidden:!0}}}var Mt=Bi(_n());Mt.displayName="AnnotationStyle";function jn(){return Hi(Mt)}function wd({theme:e,children:t}){let n=Di(()=>e||_n(),[e]);return qi(Mt.Provider,{value:n,children:t})}import{expandTarget as ji}from"@iiif/helpers/annotation-targets";import{useMemo as Ki}from"react";import{useEffect as $i,useMemo as Fi,useState as Wi}from"react";import{create as Ui}from"zustand";var _i=Ui()((e,t)=>{let n=new Map,o=()=>Math.random().toString(36).substring(2,15),s=i=>{let r=n.get(i);if(r)return r;let a=o();return n.set(i,a),a};return{stylesheets:{},loading:[],errors:[],async parseStylesheet(i){let{loadStylesheet:r,setStylesheet:a}=t();if(!i)return null;if(typeof i=="string")return i.startsWith("http")?{id:i,type:"CssStylesheet",value:await r(i)}:{id:a(i),type:"CssStylesheet",value:i};if(i.type==="CssStylesheet"){let l=i.id;if("value"in i){let u=Array.isArray(i.value)?i.value.join(`
|
|
1
|
+
import{c as ln,l as un}from"./chunk-FBET7GLW.js";import{forwardRef as Vr,useImperativeHandle as Ol,useMemo as Bl}from"react";import Nr,{useContext as Lr,useMemo as zr}from"react";import{jsx as Br}from"react/jsx-runtime";var Or={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},$e=Nr.createContext(Or),_=()=>Lr($e);function ie({value:e,children:t}){let n=_(),o=zr(()=>({...n,...e}),[e,n]);return Br($e.Provider,{value:o,children:t})}import{jsx as Hr}from"react/jsx-runtime";function ee({canvas:e,children:t}){return Hr(ie,{value:{canvas:e},children:t})}import Dr,{useState as qr}from"react";import{Vault as cn,globalVault as $r}from"@iiif/helpers/vault";import{jsx as dn}from"react/jsx-runtime";var le=Dr.createContext({vault:null,setVaultInstance:e=>{}});function ge({vault:e,vaultOptions:t,useGlobal:n,resources:o,children:s}){let[i,r]=qr(()=>e||(n?$r(t):t?new cn(t):new cn));return dn(le.Provider,{value:{vault:i,setVaultInstance:r},children:dn(ie,{value:o||{},children:s})})}import{useContext as _r}from"react";import jr from"react";import{useContext as Fr}from"react";var M=()=>{let{vault:e}=Fr(le);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};import{useEffect as Wr,useState as Ur}from"react";function k(e,t=[]){let n=M(),[o,s]=Ur(()=>e(n.getState(),n));return Wr(()=>n.subscribe(i=>e(i,n),i=>{s(i)},!1),t),o}var he=jr.createContext([]);function Fe(){let e=_r(he);return k(t=>e.map(n=>t.iiif.entities.Canvas[n]).filter(Boolean),[e])}import{globalVault as Kr}from"@iiif/helpers/vault";import{useContext as Yr}from"react";function ye(e){let t=Yr(le);return e||(t&&t.vault?t.vault:Kr())}import{useMemo as Gr}from"react";function B(e={},t=[]){let{id:n,selector:o}=e,s=_(),i=M(),r=n||s.manifest,a=k(l=>r?l.iiif.entities.Manifest[r]:void 0,[r]);return Gr(()=>{if(a)return o?o(a):a},[a,o,...t])}import{useContext as Si}from"react";import{createContext as xi,useMemo as Ci}from"react";import{useEffect as Qr,useMemo as Xr,useState as yt}from"react";function mn(e,{noCache:t=!1}={}){let n=typeof e=="string"?e:e.id,o=ye(),[s,i]=yt(n),[r,a]=yt(void 0),l=Xr(()=>o.get(n,{skipSelfReturn:!0})||void 0,[n,o]),[u,f]=yt(l);return Qr(()=>{(async()=>{try{let c=l&&!t?l:await o.load(n),m=c?c.id||c["@id"]:null;c&&s!==m&&i(m),f(c)}catch(c){a(c)}})()},[n,t]),{isLoaded:!!u,id:s,requestId:n,error:r,resource:u,cached:!!(u&&u===l)}}function pn(e,t){let{id:n,isLoaded:o,error:s,resource:i,requestId:r,cached:a}=mn(e,t);return{id:n,isLoaded:o,error:s,manifest:i,requestId:r,cached:a}}import{jsx as Zr}from"react/jsx-runtime";function fn({manifest:e,children:t}){return Zr(ie,{value:{manifest:e},children:t})}import{jsx as Jr}from"react/jsx-runtime";function gn({range:e,children:t}){return Jr(ie,{value:{range:e},children:t})}function ei(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=ei(e,e.get(n));if(o)return o}}return null}function vt(e,t){let n=[];for(let o of t.items)if(o.type==="SpecificResource"&&o.source?.type==="Canvas"&&(o.source.id.indexOf("#")!==-1?n.push({id:o.source.id.split("#")[0],type:"Canvas"}):n.push(o.source)),o.type==="Range"&&n.push(...vt(e,e.get(o))),o.type==="SpecificResource"){let s=typeof o.source=="string"?o.source:o.source.id;n.push({id:s,type:"Canvas"})}return n}function Ou(e,t,n){for(let o of t.structures){let s=hn(e,e.get(o),n);if(s)return s}return null}function hn(e,t,n){for(let o of t.items){let s=o?.source?.id?.split("#")[0];if(o.type==="SpecificResource"&&o.source===n||o.type==="SpecificResource"&&o.source?.type==="Canvas"&&n===s)return t;if(o.type==="Range"){let i=hn(e,e.get(o),n);if(i)return i}}return null}function Du(e,t,n,o=!1){let s=t.behavior,i=n?e.get(n):null;if(!i)return[];let r=i.behavior,a=o?!1:s.includes("paged"),l=a?!1:s.includes("continuous"),u=a||l?!1:s.includes("individuals"),f=r.includes("facing-pages"),c=r.includes("non-paged");if(f||c||u||o)return[{id:i.id,type:"Canvas"}];let[m,h]=St(e,t);if(l)return m;let v=m.findIndex(p=>p.id===n);if(v===-1)return[];for(let p of h)if(p.includes(v))return p.map(S=>m[S]);return[{id:i.id,type:"Canvas"}]}function St(e,t,{disablePaging:n,skipNonPaged:o}={}){let s=t.behavior,i=s.includes("paged"),r=i?!1:s.includes("continuous"),a=i||r?!1:s.includes("individuals"),l=t.type==="Manifest"?t.items:vt(e,t);if(r)return[l,[l.map((v,p)=>p)]];if(a||!i||n)return[l,l.map((v,p)=>[p])];let u=[],f=[],c=()=>{f.length&&(u.push([...f]),f=[])},m=0,h=!1;for(let v=0;v<l.length;v++){let p=e.get(l[v]);if(p.behavior.includes("non-paged")){v===m&&m++,o||(c(),u.push([v]),c());continue}if(v===m||p.behavior.includes("facing-pages")){f.length&&(h=!0),c(),u.push([v]),c();continue}if(f.push(v),h){c(),h=!1;continue}f.length>1&&c()}return f.length&&c(),[l,u]}import{useCallback as We,useMemo as ni,useRef as oi,useState as ri}from"react";import{useMemo as ti}from"react";function yn(e={},t=[]){let{id:n,selector:o}=e,s=_(),i=n||s.range,r=k(a=>i?a.iiif.entities.Range[i]:void 0,[i]);return ti(()=>{if(r)return o?o(r):r},[r,o,...t])}function vn({startCanvas:e,disablePaging:t}){let n=M(),o=B(),s=yn(),[i,r]=ri(void 0),a=s||o;if(!a)throw new Error("Nothing selected");let[l,u]=ni(()=>St(n,a,{disablePaging:t}),[n,a,t]),f=oi(u);if(f.current!==u){let S=f.current[i][0],y=u.findIndex(d=>d.includes(S));f.current=u,r(y)}let c=We(p=>{let S=u.findIndex(y=>y.includes(p));r(S===-1?0:S)},[l,u]),m=We(p=>{let S=l.findIndex(y=>y.id===p);S!==-1?c(S):r(0)},[l,u]),h=We(()=>{r(p=>p>=u.length-1?p:p+1)},[u]),v=We(()=>{r(p=>p<=0?0:p-1)},[u]);return typeof i>"u"&&(e?m(e):r(0)),{visibleItems:u[i]?.map(p=>l[p].id)||[],cursor:i,items:l,sequence:u,hasPrevious:i>0,hasNext:i<u.length-1,setSequenceIndex:r,setCanvasIndex:c,setCanvasId:m,next:h,previous:v}}import{createContext as bt,useContext as Mn,useEffect as ai,useMemo as si}from"react";import{useStore as Ve}from"zustand";import{createStore as xn}from"zustand/vanilla";function Zu(e){let t=e.service||e.services||[];for(let n of t)if(n.type==="AuthProbeService2")return!0;return!1}function j(e,t,n){let o=t.findIndex(r=>r.service.id===e);if(o===-1)return t;let s=[...t],i=n(s[o]);return i===s[o]?t:(s[o]=i,s)}var Cn=()=>xn((e,t)=>({currentAuth:-1,authItems:[],login:()=>{let n=t().authItems[t().currentAuth];if(!n||n.isPending||n.isLoggedIn)return;if(n.type!=="active")throw new Error("Cannot login to non-active service");let o=n.service.service.find(s=>s.type==="AuthAccessTokenService2");if(!o)throw new Error("Token service not found");e(()=>({authItems:j(n.id,t().authItems,s=>({...s,isPending:!0}))})),Sn(n.service).then(()=>{xt(o).then(s=>{let i=s.expiresIn,r=Date.now()+i*1e3;e(()=>({authItems:j(n.id,t().authItems,a=>({...a,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:r}}))}))}).catch(s=>{e(()=>({authItems:j(n.id,t().authItems,i=>({...i,isLoggedIn:!1,isPending:!1,error:s.message}))}))})})},logout:()=>{let n=t().authItems[t().currentAuth];if(!n||n.isPending||!n.isLoggedIn)return;if(n.type!=="active")throw new Error("Cannot logout of non-active service");let o=n.service.service.find(r=>r.type==="AuthLogoutService2");if(!o)return;let s=`${o.id}?origin=${An()}`,i=window.open(s);e(()=>({authItems:j(n.id,t().authItems,r=>({...r,isLoggedIn:!1,session:null,isPending:!1}))}))},nextAuth:()=>{let n=t().authItems.length,o=t().currentAuth+1;o>=n||e(()=>({currentAuth:o}))},previousAuth:()=>{let n=t().currentAuth-1;n<0||e(()=>({currentAuth:n}))},setAuth:n=>{n!==-1&&(n<0||n>=t().authItems.length)||e(()=>({currentAuth:n}))},addService:(n,o)=>{if(!n.service)return;let s=n.service.find(a=>a.type==="AuthAccessTokenService2"),i=n;if(t().authItems.find(a=>a.service.id===n.id)){e(()=>({authItems:j(n.id,t().authItems,a=>({...a,instances:a.instances+1}))}));return}if(e(()=>({currentAuth:i.profile==="active"?0:t().currentAuth,authItems:[{id:n.id,type:n.profile,service:n,probeId:o,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...t().authItems]})),n.profile==="external"){if(!s)throw new Error("Token service not found");xt(s).then(a=>{e(()=>({authItems:j(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:j(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:a.message}))}))})}if(n.profile==="kiosk"){if(!s)throw new Error("Token service not found");e(()=>({authItems:j(n.id,t().authItems,a=>({...a,isPending:!0}))})),Sn(i).then(()=>{xt(s).then(a=>{e(()=>({authItems:j(n.id,t().authItems,l=>({...l,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:j(n.id,t().authItems,l=>({...l,isLoggedIn:!1,isPending:!1,error:a.message}))}))})})}n.profile},removeService:(n,o)=>{let s=t().currentAuth===t().authItems.findIndex(r=>r.service.id===n.id),i=t().currentAuth;if(s){let r=t().authItems.find(l=>l.service.id===n.id);r&&r.instances>1||(i=t().authItems.findIndex(u=>u.service.id!==n.id&&u.instances>0))}e(()=>({authItems:j(n.id,t().authItems,r=>({...r,instances:r.instances-1})),currentAuth:i}))}})),bn=(e,t)=>xn((n,o)=>({service:e,status:e?"unknown":"success",shouldRedirect:!1,redirectResource:null,shouldSubstitute:!1,substituteResource:null,error:null,errorHeading:null,errorNote:null,shouldDisplayResource:!1,token:t||null,async probe(){if(!o().service)return;let s=o().service?.id;if(!s){n({status:"error",error:"Service ID not found",errorHeading:{en:["Service ID not found"]}});return}n({status:"probing"});let i=o().token;try{let r=await fetch(s,{headers:i?{Authorization:`Bearer ${o().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(a=>a.json());if(r.status===200)n({status:"success",shouldDisplayResource:!0,error:null,errorHeading:null,errorNote:null,shouldSubstitute:!1,shouldRedirect:!1});else if(r.status<400&&r.status>=300){if(!r.location)throw new Error("Redirect location not found");n({status:"error",shouldDisplayResource:!1,shouldRedirect:!0,redirectResource:r.location||null})}else if(r.status===401)n({status:"error",shouldDisplayResource:!1,shouldRedirect:!1,shouldSubstitute:!!r.substitute,substituteResource:r.substitute||null,error:"Unauthorized",errorHeading:r.heading||{en:["Unauthorized"]},errorNote:r.note||null});else throw new Error("Unknown error")}catch(r){n({status:"error",error:r.message,errorHeading:{en:["Unknown error"]}})}},setToken(s){n({token:s})}}));function Rn(e){let t=e.service||e.services||[],n={hasAuth:!1,services:{}};for(let o of t)if(o.type==="AuthProbeService2"){n.services.probe=o,n.hasAuth=!0;let s=o.service.filter(i=>i.type==="AuthAccessService2");s[0]&&(n.services.access=s[0])}return n}async function xt(e,{strict:t=!0}={}){return new Promise((n,o)=>{let s=Math.random().toString(36).substring(7),i=`${e.id}?messageId=${s}&origin=${window.location.origin}`,r=u=>{let f=u.data;if(f.messageId===s){if(t&&f.type!=="AuthAccessToken2"){a(),o("Invalid response, expected type=AuthAccessToken2");return}if(!f.accessToken){a(),o("Invalid response, expected accessToken");return}a(),n(f)}},a=()=>window.removeEventListener("message",r),l=document.createElement("iframe");l.src=i,l.style.display="none",document.body.appendChild(l),window.addEventListener("message",r)})}function An(e){let t=window.location;if(e){let n=document.createElement("a");return n.href=e,n.protocol+"//"+n.hostname+(n.port?":"+n.port:"")}return t.protocol+"//"+t.hostname+(t.port?":"+t.port:"")}async function Sn(e){let t=`${e.id}?origin=${An()}`,n=window.open(t);if(!n)throw new Error("Failed to open window");return new Promise((o,s)=>{let i=setInterval(()=>{n.closed&&(clearInterval(i),o())},500)})}import{useEffect as Pn,useMemo as Tn}from"react";import{useStore as ii}from"zustand";function wn(e){let t=Tn(()=>Rn(e),[e]),n=In(t.services.access?.id),o=Tn(()=>bn(t.services.probe,n),[t.services.probe]),s=ii(o);return Pn(()=>{s.status==="unknown"&&!n&&s.probe()},[t.services.probe,s.status]),Pn(()=>{n&&(s.setToken(n),s.probe())},[n]),[e,s,t.hasAuth]}import{jsx as Ue}from"react/jsx-runtime";var ve=bt(null),li=bt(null);li.displayName="CurrentAuth";var ui=bt(null);ui.displayName="AuthActions";function kn({children:e}){let t=si(()=>Cn(),[]);return Ue(ve.Provider,{value:t,children:e})}function En(){return!!Mn(ve)}function Ne(){let e=Mn(ve);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function ci(){let e=Ne();return Ve(e,n=>({login:n.login,logout:n.logout,nextAuth:n.nextAuth,previousAuth:n.previousAuth,setAuth:n.setAuth,addService:n.addService,removeService:n.removeService}))}function hc(){let e=Ne();return Ve(e,t=>t)}function di(e){let t=Ne();return Ve(t,o=>o.authItems.find(s=>s.service.id===e))}function In(e){let t=Ne();return Ve(t,o=>o.authItems.find(s=>s.id===e)?.session?.token)}function yc(e){let t=Ne();return Ve(t,o=>{let s=o.authItems.find(i=>i.service.id===e);return!s||!s.isLoggedIn||!s.session?null:s.session?.token||null})}function mi(e){let t=ci(),n=di(e.service.id);return ai(()=>(t?.addService(e.service,e.probeId),()=>{t?.removeService(e.service,e.probeId)}),[e.service]),n?(n.error||!n.isLoggedIn,e.children):null}function Ct(){return null}function Vn(e){let[t,n,o]=wn(e.resource),s=e.fallbackComponent||Ct,i=e.loadingComponent||Ct,r=e.errorComponent||Ct,a=n.service,l=null;if(!o||!a)return e.children(t);let u=a.service.filter(f=>f.type==="AuthAccessService2");n.status==="error"&&(l=Ue(r,{resource:e.resource,error:n.error||"",heading:n.errorHeading,note:n.errorNote,extra:e.extra})),(n.status==="unknown"||n.status==="probing")&&(l=Ue(i,{})),n.status==="success"&&(l=e.children(t));for(let f of u)l=Ue(mi,{service:f,probeId:a.id,children:l},f.id);return l}import{createContext as hi,useContext as Tc,useMemo as yi}from"react";import{createStore as pi}from"zustand/vanilla";var fi=e=>e.id||e["@id"];function gi(e){return(Array.isArray(e.service)?e.service:[e.service]).find(n=>n.profile==="http://iiif.io/api/search/0/autocomplete"||n.profile==="http://iiif.io/api/search/1/autocomplete"||n.profile==="AutoCompleteService1")}var Nn=e=>{let t;typeof e=="string"?t={"@context":"http://iiif.io/api/search/1/context.json",profile:"http://iiif.io/api/search/1/search","@id":e,id:e,service:[]}:t=e;let n=t?fi(t):void 0,o=null;return pi((s,i)=>({service:t,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!t,hasAutocomplete:t?!!gi(t):!1,errorMessage:"",search(r,a={}){if(!n)throw new Error("No search service found.");o&&!o.signal.aborted&&o.abort(),o=new AbortController;let l=new URLSearchParams;r.q&&l.set("q",r.q),r.motivation&&l.set("motivation",r.motivation),r.date&&l.set("date",r.date),r.user&&l.set("user",r.user),s({loading:!0}),fetch(`${n}?${l.toString()}`,{signal:o.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...a.headers||{}}}).then(async u=>{if(!o?.signal.aborted)if(u.ok){let f=await u.json();s({resources:f.resources,error:!1,errorMessage:""})}else s({resources:[],error:!0,errorMessage:u.statusText})})},clearSearch(){s({resources:[],error:!1,errorMessage:""})},highlightResult(r){let a=i().resources.find(l=>l["@id"]===r);s({highlight:a})},nextResult(){let r=i().resources,a=i().highlight;if(!a){s({highlight:r[0]||null});return}let l=r.findIndex(u=>u["@id"]===a["@id"]);if(l===-1){s({highlight:r[0]||null});return}s({highlight:r[l+1]||r[0]||null})},previousResult(){let r=i().resources,a=i().highlight;if(!a){s({highlight:r[r.length-1]||null});return}let l=r.findIndex(u=>u["@id"]===a["@id"]);if(l===-1){s({highlight:r[r.length-1]||null});return}if(l===0){s({highlight:r[r.length-1]||null});return}s({highlight:r[l-1]||r[r.length-1]||null})}}))};import{useStore as Ec}from"zustand";function Ln(){let e=B();return e?e.service.find(t=>t.profile==="SearchService1"||t.profile==="http://iiif.io/api/search/1/search"):void 0}import{jsx as Rt}from"react/jsx-runtime";var Se=hi(null);Se.displayName="Search";function zn(e){let t=Ln();return e.store?Rt(Se.Provider,{value:e.store,children:e.children}):Rt(vi,{service:t,children:e.children})}function vi({service:e,children:t}){let n=yi(()=>Nn(e),[e]);return Rt(Se.Provider,{value:n,children:t})}import{jsx as F}from"react/jsx-runtime";var Le=()=>{},ze=xi({setCurrentCanvasId:Le,setCurrentCanvasIndex:Le,nextCanvas:Le,previousCanvas:Le,items:[],sequence:[],setSequenceIndex:Le,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function bi(e){let t=B(),{cursor:n,visibleItems:o,next:s,sequence:i,items:r,setCanvasIndex:a,setCanvasId:l,previous:u,setSequenceIndex:f,hasNext:c,hasPrevious:m}=vn({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),h=Ci(()=>({sequence:i,items:r,setCurrentCanvasId:l,nextCanvas:s,previousCanvas:u,totalCanvases:r.length,setCurrentCanvasIndex:a,setSequenceIndex:f,currentSequenceIndex:n,hasNext:c,hasPrevious:m}),[i,r,l,s,u,r,a,f,n]);return t?o.length===0?null:F(ze.Provider,{value:h,children:F(he.Provider,{value:o,children:F(ee,{canvas:o[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),F("div",{children:"Sorry, something went wrong."}))}function On(e){let t=ye(e.vault),n=pn(e.manifest);if(!n)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),F("div",{children:"Sorry, something went wrong."});if(n.error)return F("div",{children:n.error.toString()});if(!n.isLoaded)return F("div",{children:"Loading..."});let o=F(bi,{...e,children:e.children});return F(ge,{vault:t,children:F(fn,{manifest:n.id,children:F(kn,{children:F(zn,{children:e.rangeId?F(gn,{range:e.rangeId,children:o}):o})})})})}function _e(){return Si(ze)}import{ModeContext as Vi}from"@atlas-viewer/atlas";import{createContext as Ni,useContext as Wn,useEffect as Li,useMemo as zi}from"react";import{useStore as Oi}from"zustand";import Ri from"mitt";import{createContext as Ai,useContext as Bn,useEffect as Pi}from"react";import{jsx as wi}from"react/jsx-runtime";var Ti=Ri(),At=Ai(Ti);function id({children:e,emitter:t}){return wi(At.Provider,{value:t,children:e})}function Hn(){return Bn(At)}function Dn(e,t,n=[]){let o=Bn(At);Pi(()=>{let s=i=>{t(i)};return o.on(e,s),()=>{o.off(e,s)}},[o,e,...n])}import{createHelper as Mi}from"polygon-editor";import{createStore as ki}from"zustand/vanilla";function Pt(e){let t=Math.max(...e.map(i=>i[0])),n=Math.min(...e.map(i=>i[0])),o=Math.max(...e.map(i=>i[1])),s=Math.min(...e.map(i=>i[1]));for(let i of e)if(i[0]!==n&&i[0]!==t&&i[1]!==s&&i[1]!==o||i[0]<n||i[0]>t||i[1]<s||i[1]>o)return!1;return!0}function xe(e){if(!e)return null;if(e.points.length>2){let t=Math.min(...e.points.map(i=>i[0])),n=Math.min(...e.points.map(i=>i[1])),o=Math.max(0,...e.points.map(i=>i[0])),s=Math.max(0,...e.points.map(i=>i[1]));return{x:t,y:n,width:o-t,height:s-n}}return null}function Ii(e){return e.type==="SvgSelector"}function cd(e){return e.type==="BoxSelector"}function Tt(e,t){if(Ii(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(f=>f.join(",")).join(" ")}" /></svg>`}}return{type:"SvgSelector",value:`<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><g><path d='M${e.points.map(a=>a.join(",")).join(" ")}${r?" Z":""}' /></g></svg>`}}if(!e.spatial)return null;let{x:n,y:o,width:s,height:i}=e.spatial||{};return!s||!i?null:{type:"FragmentSelector",value:`xywh=${~~n},${~~o},${~~s},${~~i}`}}function wt(e,t){if(!e||!e.points.length)return null;if(Pt(e.points)){let n=e.points.map(l=>l[0]),o=e.points.map(l=>l[1]),s=Math.min(...n),i=Math.min(...o),r=Math.max(...n)-s,a=Math.max(...o)-i;return Tt({type:"BoxSelector",spatial:{x:s,y:i,width:r,height:a}},t)}return Tt({type:"SvgSelector",points:e.points,svgShape:e.open?"polygon":"polyline"},t)}function qn(e){if(e.type==="polygon"&&!e.noBox&&e.points&&Pt(e.points)){let n=xe({open:!1,points:e.points||[]});return qn({...e,type:"box",selector:n})}if(e.type==="polygon"||e.type==="draw")return{polygon:{points:e.points||[],open:e.open||!1},requestType:e.type,boundingBox:xe({points:e.points||[],open:!1}),metadata:{},arguments:e.arguments||{},target:wt({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:wt({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 Ei={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 $n({events:e,enabledTools:t,keyboardShortcutMapping:n,keyboardShortcutsEnabled:o=!1,debug:s}){let i=ki((a,l)=>{let u=null,c=Mi({emitter:e,keyboardShortcutsEnabled:o,keyboardShortcutMapping:n,enabledTools:t,customSetState:m=>{s&&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:c.history,polygon:null,validRequestIds:[],metadata:{},stableViewport:null,canvasRelativePositions:{},canvasViewports:{},polygons:c,polygonState:Ei,setMetadata:(m,h)=>{let v=h||l().tool.requestId;v&&a(p=>({metadata:{...p.metadata,[v]:{...p.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&&(c.setShape({points:[],open:!0}),m.cancelRequest(m.tool.requestId))}},reset:()=>{let m=l();m.tool.requestId&&m.cancelRequest(m.tool.requestId)},setPolygonState:m=>a({polygonState:typeof m=="function"?m(l().polygonState):m}),getRequestId:()=>{let m=Math.random().toString(36).slice(2);return a(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(p=>p!==h)})),e.emit("atlas.request-cancelled",{id:h}))},requestAnnotation:async(m,h)=>{let p={...l().requests,[h.requestId]:m},S=qn(m);s&&console.log("requestAnnotation",{response:S,request:m});try{let{points:y=[],open:d=!0}=S.polygon||{},{requestId:g,canvasId:x=null,toolId:C}=h,b=C,R=l(),P=R.validRequestIds.includes(g),L=S.requestType;return s&&console.log("setting points",{requestType:L,points:y,open:d}),!P||R.tool.enabled?null:(c.setShape({id:g,points:y,open:d}),L==="polygon"&&(b=b||"pen",c.tools.setTool("pen")),L==="draw"&&(b=b||"draw",c.tools.setTool("pencil")),L==="box"&&(b=b||"box",c.tools.setTool("box")),L==="target"?(b=b||"box",c.tools.setTool("box"),c.lockAspectRatio(),c.tools.lockToolSwitching(),c.tools.setCanDeselect(!1),c.tools.setCanDelete(!1)):(c.tools.unlockToolSwitching(),c.tools.setCanDeselect(!0),c.tools.setCanDelete(!0)),m.bounds&&c.setBounds(m.bounds),e.emit("atlas.annotation-request",{id:g}),a({polygon:{id:g,points:y,open:d},mode:"sketch",requestType:L,tool:{enabled:!0,requestId:g,canvasId:x},requests:p}),b?R.switchTool[b]?.():y.length===0&&R.switchTool.box(),(typeof m.selectByDefault>"u"&&y.length&&L==="box"||m.selectByDefault)&&R.switchTool.pointer(),new Promise(re=>{let w=T=>{T.id===g&&(a(I=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(I.requests).filter(([E])=>E!==g))})),e.off("atlas.request-cancelled",w),e.off("atlas.annotation-completed",z),re(null))},z=T=>{T.id===g&&(a(I=>({mode:"explore",tool:{requestId:null,enabled:!1,canvasId:null},requests:Object.fromEntries(Object.entries(I.requests).filter(([E])=>E!==g))})),e.off("atlas.annotation-completed",z),e.off("atlas.request-cancelled",w),re(T))};e.on("atlas.request-cancelled",w),e.on("atlas.annotation-completed",z)}))}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||{}:{},p=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:wt(y,S),canvasId:l().tool.canvasId,boundingBox:xe(y),metadata:p,arguments:{...v}}),c.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=i.getState().polygons;return e.on("atlas.annotation-request",()=>{r.clock.start((a,l,u)=>{e.emit("atlas.polygon-render",{state:a,slowState:l,dt:u})},a=>{typeof a=="object"?i.setState({polygonState:a}):i.setState(l=>({polygonState:a(l.polygonState)}))})}),e.on("atlas.annotation-completed",()=>{r.clock.stop()}),e.on("atlas.request-cancelled",()=>{r.clock.stop()}),i}import{jsx as Fn}from"react/jsx-runtime";var Ce=Ni(null);function q(){return Wn(Ce)}var It={};function Un(e="atlas"){return It[e]?.getState()}function Oe({children:e,name:t="atlas",existing:n,atlasStoreConfig:o}){let s=Hn(),i=Wn(Ce),r=zi(()=>n||i||$n({events:s,...o||{}}),[s,n,i]),a=Oi(r,l=>l.mode);return Li(()=>{let l=t;return l&&(It[l]=r),()=>{l&&delete It[l]}},[r,t]),Fn(Ce.Provider,{value:r,children:Fn(Vi.Provider,{value:a||"explore",children:e})})}import{mergeStyles as Ye}from"@atlas-viewer/atlas";import{useMemo as ta}from"react";import{createContext as Bi,useContext as Hi,useMemo as Di}from"react";import{jsx as qi}from"react/jsx-runtime";function _n(){return{default:{backgroundColor:"rgba(0,0,0,0)",borderWidth:"2px",borderColor:"rgba(252,0,98, .5)"},highlighted:{backgroundColor:"rgba(75, 103, 225, 0.4)",borderWidth:"1px",borderColor:"rgba(75,103,225,0.99)"},hidden:{borderWidth:"0px",borderColor:"rgba(0,0,0,0)",backgroundColor:"rgba(0,0,0,0)",hidden:!0}}}var Mt=Bi(_n());Mt.displayName="AnnotationStyle";function jn(){return Hi(Mt)}function wd({theme:e,children:t}){let n=Di(()=>e||_n(),[e]);return qi(Mt.Provider,{value:n,children:t})}import{expandTarget as ji}from"@iiif/helpers/annotation-targets";import{useMemo as Ki}from"react";import{useEffect as $i,useMemo as Fi,useState as Wi}from"react";import{create as Ui}from"zustand";var _i=Ui()((e,t)=>{let n=new Map,o=()=>Math.random().toString(36).substring(2,15),s=i=>{let r=n.get(i);if(r)return r;let a=o();return n.set(i,a),a};return{stylesheets:{},loading:[],errors:[],async parseStylesheet(i){let{loadStylesheet:r,setStylesheet:a}=t();if(!i)return null;if(typeof i=="string")return i.startsWith("http")?{id:i,type:"CssStylesheet",value:await r(i)}:{id:a(i),type:"CssStylesheet",value:i};if(i.type==="CssStylesheet"){let l=i.id;if("value"in i){let u=Array.isArray(i.value)?i.value.join(`
|
|
2
2
|
`):i.value;if(u)return{id:a(u,l),type:"CssStylesheet",value:u}}if("id"in i&&i.id){let u=await r(i.id);return{id:i.id,type:"CssStylesheet",value:u}}}return null},async loadStylesheet(i){if(t().loading.includes(i))return"";try{let a=await fetch(i);if(!a.ok)throw new Error(`Failed to load stylesheet from ${i}`);let l=await a.text();return e(u=>({stylesheets:{...u.stylesheets,[i]:l}})),l}catch(a){return e(l=>({errors:[...l.errors,{url:i,error:a}]})),""}},setStylesheet(i,r){let a=r||s(i);return e(l=>({stylesheets:{...l.stylesheets,[a]:i}})),a}}});function Kn(e){let[t,n]=Wi(""),{loading:o,errors:s,stylesheets:i,parseStylesheet:r}=_i();return $i(()=>{e&&r(e).then(l=>{l?.id&&n(l.id)})},[e,r]),[Fi(()=>{let l={};return t&&i[t]&&(l[t]=i[t]),l},[t,i]),{id:t,stylesheets:i,loading:o,errors:s}]}function je(e={},t=[]){let{id:n,selector:o}=e,s=_(),i=M(),r=n||s.annotation,a=k(f=>r?f.iiif.entities.Annotation[r]:void 0,[r]),[l]=Kn(a?.stylesheet),u=k(f=>a&&a.body?a.body.map(c=>c?c.type==="SpecificResource"?{...c,source:i.get(c)}:c?f.iiif.entities[c.type][c.id]:null:null).filter(Boolean):[],[a]);return Ki(()=>{if(!a)return;let f={...a,body:u,target:ji(a.target,{typeMap:i.getState().iiif.mapping,loadedStylesheets:l})};return o?o(f):f},[a,o,u,l,...t])}import{useMemo as Yi}from"react";function A(e={},t=[]){let{id:n,selector:o}=e,s=_(),i=n||s.canvas,r=k(a=>i?a.iiif.entities.Canvas[i]:void 0,[i]);return Yi(()=>{if(r)return o?o(r):r},[r,o,...t])}import{useMemo as Yn}from"react";import{createEventsHelper as Gi}from"@iiif/helpers/events";function Ke(e,t){let n=M(),o=Yn(()=>Gi(n),[n]),s=k(()=>e&&e.id?n.getResourceMeta(e.id,"eventManager"):null,[e]);return Yn(()=>e?o.getListenersAsProps(e,t):{},[s,e,n,t])}import{useMemo as Qi}from"react";import{createStylesHelper as Xi}from"@iiif/helpers/styles";function be(e,t){let n=M(),o=Qi(()=>Xi(n),[n]);return k(()=>{if(!e)return null;let s=o.getAppliedStyles(e.id);return s?t?s[t]:s:void 0},[e,t])}import{useCallback as ea}from"react";import{HTMLPortal as Zi,useResizeWorldItem as Ji}from"@atlas-viewer/atlas";import{useMemo as te}from"react";import{Fragment as kt,jsx as K,jsxs as Et}from"react/jsx-runtime";function Gn({handleSize:e,resizable:t,onSave:n,children:o,maintainAspectRatio:s,disableCardinalControls:i,aspectRatio:r,...a}){let l=typeof e>"u"?s?12:8:e,{portalRef:u,mode:f,mouseEvent:c,isEditing:m}=Ji({x:a.x||0,y:a.y||0,width:a.width,height:a.height,aspectRatio:r,maintainAspectRatio:s},n),h=te(()=>c("translate"),[c]),v=te(()=>c("east"),[c]),p=te(()=>c("west"),[c]),S=te(()=>c("south"),[c]),y=te(()=>c("north"),[c]),d=te(()=>c("south-east"),[c]),g=te(()=>c("south-west"),[c]),x=te(()=>c("north-east"),[c]),C=te(()=>c("north-west"),[c]),b=f==="sketch",R={zIndex:999,boxShadow:"0px 2px 3px 0 rgba(0,0,0,0.2)",outline:"2px solid rgba(155,155,155,.7)",borderRadius:s||i?"50%":2,position:"absolute",background:"#fff",pointerEvents:m?"none":b?"initial":"none"};return K(kt,{children:Et("world-object",{...a,children:[o,b&&t?K(Zi,{ref:u,target:{x:0,y:0,height:a.height,width:a.width},relative:!0,interactive:!1,children:b&&t?Et(kt,{children:[K("div",{onMouseDown:h,onTouchStart:h,style:{display:"block",width:"100%",height:"100%",cursor:"move",border:"1px solid rgba(255,255,255, .7)",outline:"2px solid rgba(155,155,155, .7)",boxSizing:"border-box",pointerEvents:m?"none":b?"initial":"none"}}),s?null:Et(kt,{children:[K("div",{title:"east",onTouchStart:v,onMouseDown:v,style:{...R,cursor:"e-resize",height:l*2,width:l,right:0,top:"50%",opacity:i?0:1,transform:`translate(${l/2}px, -${l}px)`}}),K("div",{title:"west",onMouseDown:p,style:{...R,cursor:"w-resize",position:"absolute",height:l*2,width:l,left:0,top:"50%",opacity:i?0:1,transform:`translate(-${l/2}px, -${l}px)`}}),K("div",{title:"north",onMouseDown:y,style:{...R,cursor:"n-resize",position:"absolute",height:l,width:l*2,left:"50%",top:0,opacity:i?0:1,transform:`translate(-${l}px, -${l/2}px)`}}),K("div",{title:"south",onMouseDown:S,style:{...R,cursor:"s-resize",position:"absolute",height:l,width:l*2,left:"50%",bottom:0,opacity:i?0:1,transform:`translate(-${l}px, ${l/2}px)`}})]}),K("div",{title:"north-east",onMouseDown:x,style:{...R,cursor:"ne-resize",position:"absolute",height:l,width:l,right:0,top:0,transform:`translate(${l/2}px, -${l/2}px)`}}),K("div",{title:"south-east",onMouseDown:d,style:{...R,cursor:"se-resize",position:"absolute",height:l,width:l,bottom:0,right:0,transform:`translate(${l/2}px, ${l/2}px)`}}),K("div",{title:"south-west",onMouseDown:g,style:{...R,cursor:"sw-resize",position:"absolute",height:l,width:l,bottom:0,left:0,transform:`translate(-${l/2}px, ${l/2}px)`}}),K("div",{title:"north-west",onMouseDown:C,style:{...R,cursor:"nw-resize",position:"absolute",height:l,width:l,top:0,left:0,transform:`translate(-${l/2}px, -${l/2}px)`}})]}):null}):null]})})}import{jsx as Qn}from"react/jsx-runtime";function Xn({id:e,interactive:t,region:n,onClick:o,onHover:s,onSave:i,aspectRatio:r,maintainAspectRatio:a,disableCardinalControls:l,isEditing:u,style:f={backgroundColor:"rgba(0,0,0,.5)"}}){let c=ea(m=>{u&&i?.({id:n.id,x:n.x,y:n.y,height:n.height,width:n.width,...m})},[i,u,n.id,n.x,n.y,n.height,n.width]);return Qn(Gn,{id:e,x:n.x,y:n.y,width:n.width,aspectRatio:r,height:n.height,resizable:u,onSave:c,maintainAspectRatio:a,disableCardinalControls:l,children:Qn("box",{interactive:t,onClick:m=>{m.preventDefault(),m.stopPropagation(),o?.(n)},relativeStyle:!0,onMouseEnter:()=>{s?.(n)},target:{x:0,y:0,width:n.width,height:n.height},style:f})})}import{jsx as na}from"react/jsx-runtime";var Re=({id:e,style:t,className:n,interactive:o,targetId:s,ignoreTargetId:i})=>{let r=je({id:e}),a=be(r,"atlas"),l=be(r,"html"),u=Ke(r,["atlas"]),f=A(),c=jn(),m=ta(()=>Ye(Ye(Ye(Ye(t,a),r?.motivation?.includes("highlighting")?c.highlighted:c.default),r?.target?.selector?.boxStyle||{})),[t,a,c,r?.motivation,r?.target]),h=s||f?.id;return f&&r&&r.target&&r.target.selector&&(r.target.selector.type==="BoxSelector"||r.target.selector.type==="SvgSelector")&&r.target.source&&(i?!0:r.target.source.id===h||r.target.source===h)?na(Xn,{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 ra}from"react";import{useMemo as oa}from"react";function Zn(e={},t=[]){let{id:n,selector:o}=e,s=_(),i=n||s.annotationPage,r=k(a=>i?a.iiif.entities.AnnotationPage[i]:void 0,[i]);return oa(()=>{if(r)return o?o(r):r},[r,...t])}import{jsx as Jn}from"react/jsx-runtime";var ue=({className:e,page:t,targetId:n,ignoreTargetId:o})=>{let s=Zn({id:t.id})||t,i=be(s,"atlas"),r=be(s,"html");return k(a=>s.id?a.iiif.entities.AnnotationPage[s.id]:null,[]),Jn(ra,{children:s.items?.map(a=>Jn(Re,{id:a.id,style:i,className:r?.className||e,targetId:n,ignoreTargetId:o},a.id))})};import{createContext as Nt,useContext as Lt}from"react";import{jsx as Vt}from"react/jsx-runtime";var eo=Nt(null),to=Nt(null),no=Nt(null);function Em(){let e=Lt(eo);if(!e)throw new Error("Ctx not found");return e}function Vm(){let e=Lt(to);if(!e)throw new Error("Ctx not found");return e}function Nm(){let e=Lt(no);if(!e)throw new Error("Ctx not found");return e}function Ge({actions:e,state:t,children:n,currentTime:o,progress:s,element:i}){return Vt(no.Provider,{value:{currentTime:o,progress:s,element:i},children:Vt(to.Provider,{value:e,children:Vt(eo.Provider,{value:t,children:n})})})}import{useMemo as ia}from"react";import{expandTarget as aa}from"@iiif/helpers";function Qe(){let e=B(),t=A();return ia(()=>{if(!e||!t||!e.start)return null;let n=aa(e.start);return!n||n.source.id!==t.id||!n||!n.selector||n.selector.type!=="TemporalSelector"?null:n.selector.temporal},[e,t])}import{useCallback as Q,useEffect as zt,useReducer as sa,useRef as Xe}from"react";function oo(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function la(e,t){switch(t.type){case"RESET":return t.state;case"FINISHED":return{...e,isFinished:!0,isPlaying:!1,playRequested:!1};case"PLAY_PAUSE":return{...e,isFinished:!1,isPlaying:!e.isPlaying};case"PLAY_REQUESTED":return{...e,isFinished:!1,playRequested:!0};case"PAUSE":return{...e,isPlaying:!1};case"PLAY":return{...e,isFinished:!1,playRequested:!1,isPlaying:!0};case"MUTE":return{...e,isMuted:!0};case"SET_VOLUME":return{...e,volume:t.volume,isMuted:t.volume===0};case"TOGGLE_MUTE":return{...e,isMuted:!e.isMuted};case"UNMUTE":return{...e,isMuted:!1}}return e}function Ot(e){let t=Math.round(e);return`${Math.floor(t/60)}:${`${t%60}`.padStart(2,"0")}`}function Ae(e){let[t,n]=sa(la,oo(e.duration));zt(()=>{n({type:"RESET",state:oo(e.duration)})},[e.duration]);let o=Xe(null),s=Xe(null),i=Xe(null),r=Xe(!1),a=Q(()=>{s.current&&o.current&&(s.current.innerHTML=Ot(o.current.currentTime),i.current&&(i.current.style.width=`${o.current.currentTime/e.duration*100}%`),r.current!==o.current.muted&&(r.current=o.current.muted,n(o.current.muted?{type:"MUTE"}:{type:"UNMUTE"})))},[e.duration]),l=Q(()=>{o.current&&(n({type:"PLAY_REQUESTED"}),o.current.play().then(()=>{n({type:"PLAY"})}),a())},[a]),u=Q(()=>{o.current&&(o.current.duration>0&&o.current.paused?l():f())},[a]),f=Q(()=>{o.current&&(o.current.pause(),n({type:"PAUSE"}),a())},[a]),c=Q(()=>{o.current&&(o.current.muted=!o.current.muted,n(o.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),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}))},[]),p=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 d=typeof y=="function"?y(o.current.currentTime):y;o.current.currentTime=Math.max(0,Math.min(d,e.duration)),a()}},[]);return zt(()=>{let y=setInterval(()=>{a()},350);return()=>clearInterval(y)},[a,e.duration]),zt(()=>{let y=()=>{n({type:"FINISHED"})},d=o.current;return d?.addEventListener("ended",y),()=>d?.removeEventListener("ended",y)},[]),[{element:o,currentTime:s,progress:i},t,{play:l,pause:f,playPause:u,mute:m,unmute:h,toggleMute:c,setVolume:v,setDurationPercent:p,setTime:S}]}import{createContext as ro,useContext as ua,useEffect as ca}from"react";var Bt=ro(()=>{}),Ht=ro(()=>{});function D(e,t,n,o,s=[]){let i=ua(e==="portal"?Ht:Bt);ca(()=>(e!=="none"&&i(t,n,o),()=>{i(t,null)}),[t,e,i,...s])}import{jsx as da,jsxs as ma}from"react/jsx-runtime";function Dt({media:e,startTime:t,children:n}){let[{element:o,currentTime:s,progress:i},r,a]=Ae({duration:e.duration}),l=t?`${e.url}#t=${t}`:e.url;return ma(Ge,{state:r,actions:a,currentTime:s,progress:i,element:o,children:[da("audio",{ref:o,src:l}),n]},e.url)}function Ze({media:e,mediaControlsDeps:t,audioCopmonent:n=Dt,children:o}){let s=Qe();return D("portal","audio",n,{media:e,startTime:s?s.startTime:null,children:o},[e,s,...t||[]]),null}import{createContext as pa,useContext as fa}from"react";var ce=pa(null);ce.displayName="Strategy";function V(){let e=fa(ce);if(!e)throw new Error("useStrategy must be used within a StrategyProvider");return e}import{Fragment as ga,jsx as qt,jsxs as ha}from"react/jsx-runtime";function $t({model:e}){return ha(ga,{children:[qt("style",{children:`
|
|
3
3
|
.model-container {
|
|
4
4
|
position: absolute;
|
|
@@ -15,7 +15,7 @@ import{c as ln,l as un}from"./chunk-223VJXTE.js";import{forwardRef as Vr,useImpe
|
|
|
15
15
|
`}),qt("div",{className:"model-container",children:qt("model-viewer",{"interaction-prompt":"none",style:{width:"100%",height:"100%"},"camera-controls":"","ar-status":"not-presenting",src:e.id})})]})}function Je({model:e,name:t}){return D("overlay",`model-${t}`,$t,{model:e},[e]),null}import{jsx as ya}from"react/jsx-runtime";function io(){let{strategy:e}=V();return e.type!=="3d-model"?null:ya(Je,{model:e.model})}import{createContext as va,useContext as Sa}from"react";var et=va(null);et.displayName="Controls";function $(){let e=Sa(et);if(!e)throw new Error("useStrategy must be used within a StrategyProvider");return e}import{Fragment as xa,jsx as tt,jsxs as Ca}from"react/jsx-runtime";function ao(){let{strategy:e}=V(),{renderViewerControls:t,viewControlsDeps:n}=$(),o=A(),s=o?.accompanyingCanvas,i=o?.placeholderCanvas;return Ca(xa,{children:[e.type==="media"&&e.media.type==="Sound"&&s?tt(ee,{canvas:s.id,children:tt(de,{renderViewerControls:t,viewControlsDeps:n})}):null,e.type==="media"&&e.media.type==="Sound"&&i&&!s?tt(ee,{canvas:i.id,children:tt(de,{renderViewerControls:t,viewControlsDeps:n})}):null]})}import{createContext as Ta,useContext as wa,useMemo as Ia}from"react";import{useCallback as lo,useLayoutEffect as Ra,useMemo as Aa,useRef as Pa}from"react";import{entityActions as Ft}from"@iiif/helpers/vault/actions";import{useMemo as ba}from"react";function so(){let t=M().getStore();return ba(()=>n=>t.dispatch(n),[t])}function uo(e){return typeof e!="string"&&e&&e.bindToVault}function co(){let e=M(),t=Pa([]),n=so(),o=Aa(()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);Ra(()=>{let a={id:o,type:"AnnotationPage",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],rendering:[],service:[]};n(Ft.importEntities({entities:{AnnotationPage:{[a.id]:a}}}))},[o]);let s=k(a=>o&&a.iiif.entities.AnnotationPage[o]||null,[o]),i=lo((a,l)=>{if(o){if(uo(a)){let c=a;c.__vault||c.bindToVault(e),a=typeof c.source=="string"?c.source:c.source.id,t.current[a]=c}else typeof a!="string"&&(a=a.id);let u=e.get({id:o,type:"AnnotationPage"}),f=e.get({id:a,type:"Annotation"});u&&f&&(u.items.find(c=>c.id===f.id)||n(Ft.addReference({id:o,type:"AnnotationPage",key:"items",reference:{id:a,type:"Annotation"},index:l})))}},[o]),r=lo(a=>{o&&(uo(a)?a=typeof a.source=="string"?a.source:a.source.id:typeof a!="string"&&(a=a.id),t.current[a]&&t.current[a].beforeRemove(),e.get({id:o,type:"AnnotationPage"})&&n(Ft.removeReference({id:o,type:"AnnotationPage",key:"items",reference:{id:a,type:"Annotation"}})))},[o]);return[s,{addAnnotation:i,removeAnnotation:r}]}import{jsx as Ma}from"react/jsx-runtime";var mo=Ta(null);function po(){let e=wa(mo);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function fo({children:e}){let[t,{addAnnotation:n,removeAnnotation:o}]=co();return Ma(mo.Provider,{value:Ia(()=>({fullPage:t,addAnnotation:n,removeAnnotation:o}),[t]),children:e})}import{Fragment as ka,jsx as go,jsxs as Ea}from"react/jsx-runtime";function ho({children:e}){let{strategy:t}=V(),[n]=po();return t.type!=="images"?null:Ea(ka,{children:[n?go(ue,{page:n}):null,t.annotations&&t.annotations.pages?t.annotations.pages.map(o=>go(ue,{page:o},o.id)):null,e]})}import{useEffect as Ba,useMemo as Ha,useRef as Da,useState as qa}from"react";import{useEffect as Va}from"react";var yo=(e,t=[])=>{let n=M();Va(()=>{e(n)},[n,...t])};import Na,{useContext as La}from"react";import{ImageServiceLoader as za}from"@iiif/helpers/image-service";var Oa=Na.createContext(new za);function vo(){return La(Oa)}import{createThumbnailHelper as $a}from"@iiif/helpers/thumbnail";function Pe(e,t,{canvasId:n,manifestId:o}={}){let s=M(),i=vo(),r=Ha(()=>$a(s,{imageServiceLoader:i}),[s,i]),[a,l]=qa(),u=B(o?{id:o}:void 0),f=A(n?{id:n}:void 0),c=f||u,m=Da(!1);if(Ba(()=>(m.current=!1,()=>{m.current=!0}),[]),!c)throw new Error("Must be called under a manifest or canvas context.");return yo(h=>{r.getBestThumbnailAtSize(c,e,t).then(v=>{v.best&&!m.current&&l(v.best)})},[c]),a}import{jsx as So}from"react/jsx-runtime";function Te({x:e=0,y:t=0}){let n=A(),o=Pe({maxWidth:256,maxHeight:256});return!n||!o||o.type!=="fixed"?null:So("world-object",{height:n.height,width:n.width,x:e,y:t,children:So("world-image",{uri:o.id,target:{x:0,y:0,width:n.width,height:n.height},display:o.width&&o.height?{width:o.width,height:o.height}:void 0,crop:void 0})})}import{jsx as Fa,jsxs as Wa}from"react/jsx-runtime";function xo({as:e}){let{strategy:t}=V(),{renderMediaControls:n,mediaControlsDeps:o}=$();return t.type!=="media"||t.media.type!=="Sound"?null:Wa(Ze,{media:t.media,mediaControlsDeps:o,audioCopmonent:e,children:[Fa(Te,{}),n?n(t):null]},t.media.url)}import{HTMLPortal as Do}from"@atlas-viewer/atlas";import{useLayoutEffect as ls,useMemo as us}from"react";import{useStore as qo}from"zustand";import{createContext as Ua,useContext as _a}from"react";import{useStore as ja}from"zustand";import{jsx as Ka}from"react/jsx-runtime";var Wt=Ua(null);Wt.displayName="ComplexTimeline";function Co({children:e,store:t}){return Ka(Wt.Provider,{value:t,children:e})}function cf(e){let t=_a(Wt);if(!t)throw new Error("useComplexTimeline must be used within a ComplexTimelineProvider");return ja(t,e)}import Ya from"mitt";import{createStore as Ga}from"zustand/vanilla";function bo({currentKeyFrameIndex:e,keyframes:t,targetTime:n,currentTime:o}){if(o<=n){let s=t.findIndex(a=>a.time>n);if(s===-1)return[e,[]];let i={},r=t.slice(e,s);for(let a of r)a.type==="enter"&&(i[a.id]=a),a.type==="exit"&&(i[a.id]?delete i[a.id]:i[a.id]=a);return[s,Object.values(i)]}return[e,[]]}function Ro({complexTimeline:e,startTime:t=0}){let n=Ya(),o={},s={progress:null,currentTime:null},i=0,r=null,a=0,l=null;function u(){let d=S.getState().visibleElements,g=o,x=[],C=Object.keys(g);for(let b of C){let R=g[b],P=d[b];R&&P&&x.push(R)}return x}function f(){return Object.keys(o).map(d=>o[d])}function c(y){s.currentTime&&(s.currentTime.innerHTML=Ot(y),s.progress&&(s.progress.style.width=`${y/e.duration*100}%`))}let m=()=>{let y=S.getState(),d=y.currentPrime;if(!d)return;let g=o,x=y.visibleElements,C=Object.keys(g);for(let b of C){let R=g[b],P=x[b];if(R&&b!==d.id&&P){let L=a-P.time*1e3;Math.abs(a-P.time*1e3-R.currentTime*1e3)>300&&(R.currentTime=L/1e3)}}},h=(y=0)=>{let d=y-i,g=S.getState();if(g.isPlaying){let x=g.currentPrime;if(x){let P=o[x.id];P&&(P.paused?a+=d:a=(x.time+P.currentTime)*1e3)}else a+=d;let C=a/1e3;if(C>g.duration){S.getState().setTime(0),S.setState({isPlaying:!1}),v(),c(0);return}c(C);let[b,R]=bo({currentTime:C,currentKeyFrameIndex:g.nextKeyframeIndex,keyframes:g.complexTimeline.keyframes,targetTime:C});R.length&&g.applyKeyframes(b,R)}i=y,r=requestAnimationFrame(h)},v=()=>{r&&cancelAnimationFrame(r)},p=(y,d)=>{},S=Ga((y,d)=>({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:()=>{d().clockRunning||(h(),l=setInterval(m,500)),y({clockRunning:!0,clockStartRequests:d().clockStartRequests+1})},applyKeyframes(g,x){let C=d(),b={...C.visibleElements},R=C.currentPrime;for(let P of x)P.type==="enter"&&(b[P.id]=P,n.emit("complex-timeline.enter",{id:P.id})),P.type==="exit"&&(b[P.id]=null,n.emit("complex-timeline.exit",{id:P.id})),P.isPrime&&(R=P);y({nextKeyframeIndex:g,visibleElements:b,currentPrime:R})},stopClock:()=>{let g=d().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),b=d().complexTimeline;p(x,g),b.items.filter(P=>P.type!=="Image"&&P.type!=="Text").every(P=>C.includes(P.annotationId))&&!d().isReady&&(n.emit("complex-timeline.ready",{complexTimeline:b}),y({isReady:!0}))},removeElement:g=>{delete o[g]},mute(){for(let g of f())g.muted=!0;y({isMuted:!0})},unmute(){for(let g of f())g.muted=!1;y({isMuted:!1})},play(){if(!d().isPlaying){for(let x of u())x.play();y({isPlaying:!0})}},pause(){if(d().isPlaying){for(let x of u())x.pause();y({isPlaying:!1})}},playPause(){let g=d();g.isPlaying?g.pause():g.play()},setDurationPercent(g){let C=d().duration*g;d().setTime(C)},setTime(g){let x=d(),C=a/1e3,b=typeof g=="function"?g(C):g,R=x.nextKeyframeIndex;if(C>b){y({visibleElements:{},currentPrime:null});let I=Object.keys(x.visibleElements);for(let E of I)n.emit("complex-timeline.exit",{id:E});C=0,R=0}let[P,L]=bo({currentTime:C,currentKeyFrameIndex:R,keyframes:x.complexTimeline.keyframes,targetTime:b});x.applyKeyframes(P,L),a=b*1e3;let w=S.getState().visibleElements,z=o,T=Object.keys(w);for(let I of T){let E=w[I];if(E){let Ee=z[I];Ee&&(Ee.currentTime=(a-E.time*1e3)/1e3)}}c(b)},setVolume(g){for(let x of f())x.volume=Math.min(1,Math.max(0,g/100));y({volume:g})},toggleMute(){let g=d();g.isMuted?(g.unmute(),y({isMuted:!1})):(g.mute(),y({isMuted:!0}))},clearProgressElement(){s.progress=null},setProgressElement(g){s.progress=g},setCurrentTimeElement(g){s.currentTime=g},clearCurrentTimeElement(){s.currentTime=null}}));return n.on("complex-timeline.enter",y=>{let d=S.getState(),g=y.id,x=o[g];x&&d.isPlaying&&x.play()}),n.on("complex-timeline.exit",y=>{let d=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 Oo,useMemo as Bo}from"react";import{HTMLPortal as os}from"@atlas-viewer/atlas";import{getId as rs}from"@iiif/parser/image-3";import Qa,{useContext as Xa}from"react";import{imageServices as Za}from"@iiif/helpers/image-service";import{useStore as nt}from"zustand";var Ao=Qa.createContext(Za.store);Ao.displayName="ImageServicesHelper";function ot(){return Xa(Ao)}function Po(e){let t=ot();return nt(t,({loaded:n})=>n[e])}function rt(){let e=ot();return nt(e,({loadServiceSync:t})=>t)}function To(){let e=ot();return nt(e,({loaded:t})=>t)}function Cf(){let e=ot();return nt(e,({loadService:t})=>t)}import we,{useMemo as Ut}from"react";import{jsx as X}from"react/jsx-runtime";var Io=we.createContext("en"),Mo=we.createContext({}),ko=we.createContext(null);function Pf(e){return X(Mo.Provider,{value:e.translations,children:e.children})}function Tf(e){return X(Io.Provider,{value:e.language,children:e.children})}function wf(e){return X(ko.Provider,{value:e.convert,children:e.children})}function Eo(){return we.useContext(ko)}function _t(){return we.useContext(Io)}function Vo(){return we.useContext(Mo)}function wo(e){return e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):e}function Ja({as:e,language:t,children:n,viewingDirection:o,...s}){let i=_t();return Ut(()=>wo(i)===wo(t),[i,t])?e?X(e,{...s,children:n}):X("span",{...s,children:n}):e?X(e,{...s,lang:t,dir:o,children:n}):X("span",{...s,lang:t,dir:o,children:n})}function No(e,t,n){if(t.length===0)return;if(t.length===1)return t[0];if(t.indexOf(e)!==-1)return e;let o=e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):null;if(o&&t.indexOf(o)!==-1)return o;for(let s of n)if(t.indexOf(s)!==-1)return s;return t.indexOf("none")!==-1?"none":t.indexOf("@none")!==-1?"@none":t[0]}var es=(e,t=[])=>{let n=_t();return Ut(()=>{let o=e();return No(n,o,[])},[n,...t])};function me(e,t,n,o){return t?n?n(e[t]||t,o||"none"):e[t]||t:""}function ts(e,t,n=`
|
|
16
16
|
`,o={}){let s=Eo(),i=es(()=>Object.keys(e||{}),[e]);return[Ut(()=>{if(!e)return me(o,t,s)||"";if(typeof e=="string")return me(o,e,s);let r=i?e[i]:void 0;return r?typeof r=="string"?r:r.map(a=>me(o,a,s,i)).join(n):""},[i,t,e]),i]}function If(){let e=_t(),t=Vo(),n=Eo();return function(s,i="",r=`
|
|
17
17
|
`,a=t){let l=Object.keys(s||{}),u=No(e,l,[]);if(!s)return me(a,i,n)||"";if(typeof s=="string")return me(a,s,n);let f=u?s[u]:void 0;return f?typeof f=="string"?me(a,f,n,u):f.map(c=>me(a,c,n,u)).join(typeof r<"u"?r:`
|
|
18
|
-
`):""}}function Be({as:e,defaultText:t,enableDangerouslySetInnerHTML:n,children:o,separator:s,...i}){let r=Vo(),[a,l]=ts(o,t,s,r);return l?X(Ja,{...i,as:e,language:l,title:n?void 0:a,dangerouslySetInnerHTML:n?{__html:a}:void 0,children:n?void 0:a}):e?X(e,{...i,children:a}):X("span",{...i,title:n?void 0:a,dangerouslySetInnerHTML:n?{__html:a}:void 0,children:n?void 0:a})}import{isImageServiceLevel as Lo}from"@iiif/parser/image-3";import{useMemo as jt}from"react";import{jsx as it,jsxs as ns}from"react/jsx-runtime";var Kt=e=>{let t=e.format||"jpg",n=e.width/(e.crop?.width||e.tiles.width),o=e.tiles.imageService.sizes||[],s=e.enableThumbnail,i=e.enableSizes,r=jt(()=>{let u=e.tiles.imageService.id||e.tiles.imageService["@id"];return u?.endsWith("/info.json")?u.slice(0,-1*10):u},[e.tiles.imageService.id,e.tiles.imageService["@id"]]),a=jt(()=>{let u=e.tiles.imageService.tiles||[];if(!u.length){let f=e.width,c=[1],m=1;for(;2**m<f;)m=m*2,c.push(m);return(e.tiles.imageService.maxArea||e.tiles.imageService.maxWidth||e.tiles.imageService.maxHeight)&&Lo(2,e.tiles.imageService)?[{width:256,height:256,scaleFactors:c}]:Lo(2,e.tiles.imageService)?[{width:256,height:256,scaleFactors:c}]:[]}return u},[e.tiles.imageService,e.width]),l=jt(()=>{let u=e.tiles.imageService;return(u?u["@context"]?Array.isArray(u["@context"])?u["@context"]:[u["@context"]]:[]:[]).indexOf("http://iiif.io/api/image/3/context.json")!==-1},[e.tiles.imageService.id,e.tiles.imageService]);return it("world-object",{rotation:e.rotation,scale:n,height:e.crop?.height||e.tiles.height,width:e.crop?.width||e.tiles.width,x:e.x,y:e.y,onClick:e.onClick,children:ns("composite-image",{id:e.tiles.imageService.id,width:e.crop?.width||e.tiles.width,height:e.crop?.height||e.tiles.height,crop:e.crop,renderOptions:e.renderOptions,children:[s&&e.tiles.thumbnail?it("world-image",{priority:!0,uri:e.tiles.thumbnail.id,target:{width:e.tiles.width,height:e.tiles.height},display:{width:e.tiles.thumbnail.width,height:e.tiles.thumbnail.height},crop:e.crop}):null,i&&o.map((u,f)=>it("world-image",{uri:`${r}/full/${u.width},${l?u.height:""}/0/default.${t}`,target:{width:e.tiles.width,height:e.tiles.height},display:{width:u.width,height:u.height},crop:e.crop},f)),a.map(u=>(u.scaleFactors||[]).map(f=>it("tiled-image",{uri:e.tiles.imageService.id,display:{width:e.tiles.width,height:e.tiles.height},format:t,tile:u,scaleFactor:f,crop:e.crop,version3:l},`${e.tiles.imageService.id}-tile-${f}`)))]},e.tiles.imageService.id)},e.tiles.imageService.id)};import{jsx as ne,jsxs as as}from"react/jsx-runtime";function is({resource:e,heading:t,note:n,extra:o}){return o?ne(os,{target:{x:0,y:0,width:o.target?.spatial.width,height:o.target?.spatial.height},backgroundColor:"#333",relative:!0,children:ne("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:as("div",{children:[ne(Be,{children:t||"Not authorised"}),n&&ne("p",{children:ne(Be,{children:n})}),ne("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}function zo({image:e,thumbnail:t,crop:n,enableSizes:o,enableThumbnail:s,renderOptions:i,rotation:r}){let a=En(),l=rs(e.service),u=Po(l),f=rt(),c=u?.service;f(e.service,e);let m=c&&u?.status==="done",h=(c?.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 p=e.service,S=p.width||e.width||0,y=p.height||e.height||0,d=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:d=-(x-C)/2),ne(Kt,{enableThumbnail:s,renderOptions:i,rotation:r,tiles:{id:p.id||p["@id"]||"unknown",height:y,width:S,imageService:p,thumbnail:v},enableSizes:o,x:d,y:g,format:h,width:x,height:C,crop:n})}return ne(Vn,{resource:e.service,errorComponent:is,extra:e,children:p=>{let S=p.width||e.width||0,y=p.height||e.height||0,d=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,d=(x-C)/2):(g=(C-x)/2,d=-(x-C)/2)),ne(Kt,{enableThumbnail:s,renderOptions:i,tiles:{id:p.id||p["@id"]||"unknown",height:y,width:S,imageService:p,thumbnail:v},rotation:r,format:h,enableSizes:o,x:d,y:g,width:x,height:C,crop:n})}},e.id)}import{jsx as Yt,jsxs as Gt}from"react/jsx-runtime";function Ie({id:e,image:t,thumbnail:n,isStatic:o,x:s=0,y:i=0,children:r,selector:a,onClick:l,enableSizes:u,enableAnnotations:f}){let c=Bo(()=>{if(!(!a||a.spatial.x===0&&a.spatial.y===0))return a.spatial},[a]),m=Bo(()=>{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=s+t.target.spatial.x,v=i+t.target.spatial.y,p=t.target.spatial.width,S=t.target.spatial.height,y=t.target.spatial.width,d=t.target.spatial.height;return(m===90||m===270)&&([p,S]=[S,p],[y,d]=[d,y]),Gt("world-object",{x:h,y:v,width:p,height:S,onClick:l,rotation:m,children:[t.service?Gt(Oo,{children:[Yt(zo,{image:t,thumbnail:n,crop:c,enableSizes:u,rotation:m}),r]},"service"):Gt(Oo,{children:[Yt("world-image",{onClick:l,uri:t.id,target:{x:0,y:0,width:y,height:d},display:y&&d?{width:y,height:d}:void 0,crop:c}),r]},"no-service"),f&&t.annotationPages?t.annotationPages.map(g=>Yt(ue,{page:g,className:"image-service-annotation",ignoreTargetId:!0},g.id)):null]},e+(t.service?"server":"no-service"))}import{HTMLPortal as ss}from"@atlas-viewer/atlas";import{Fragment as Ho,jsx as He}from"react/jsx-runtime";function at({strategy:e,onClickPaintingAnnotation:t}){return He(Ho,{children:e.items.map((n,o)=>He(Ho,{children:He(ss,{onClick:t?s=>{s.stopPropagation(),t(n.annotationId,n,s)}:void 0,target:n.target?.spatial||void 0,children:He("div",{"data-textual-content":!0,children:He(Be,{enableDangerouslySetInnerHTML:!0,children:n.text})})},o)}))})}import{Fragment as cs,jsx as pe,jsxs as ds}from"react/jsx-runtime";function $o({strategy:e,children:t}){let{store:n}=us(()=>Ro({complexTimeline:e}),[e]),o=qo(n,r=>r.isReady),s=qo(n,r=>r.visibleElements);function i(r){return a=>{a&&n.getState().setElement(r,a)}}return ls(()=>{if(o){let{startClock:r,stopClock:a}=n.getState();return r(),()=>{a()}}},[e,o]),D("portal","custom-controls",Co,{store:n,children:t},[o]),ds(cs,{children:[e.items.map(r=>r.type!=="Image"||!s[r.annotationId]?null:pe(Ie,{image:r,id:r.annotationId},r.id)),e.items.map((r,a)=>r.type!=="Text"||!s[r.annotationId]?null:pe(at,{strategy:{type:"textual-content",items:[r]}},a)),e.items.map((r,a)=>r.type!=="Video"||!r.target.spatial?null:pe(Do,{target:r.target.spatial,children:pe("video",{ref:i(r.annotationId),src:r.url,style:{height:"100%",width:"100%",opacity:s[r.annotationId]?1:0}})},a)),e.items.map((r,a)=>r.type!=="Sound"?null:pe(Do,{children:pe("audio",{ref:i(r.annotationId),src:r.url})},a)),e.highlights.map(({annotation:r})=>s[r.id]?pe(Re,{id:r.id,ignoreTargetId:!0,style:{outline:"3px solid red"},className:"image-service-annotation"},r.id):null)]})}import{jsx as ms}from"react/jsx-runtime";function Fo(){let{strategy:e}=V(),{renderComplexTimelineControls:t}=$();return e.type!=="complex-timeline"?null:ms($o,{strategy:e,children:t?t(e):null})}import{jsx as ps}from"react/jsx-runtime";function st({style:e}){let t=A();return!t||!t.height||!t.width?null:ps("box",{interactive:!1,target:{x:0,y:0,width:Number(t.width),height:Number(t.height)},style:e})}import{jsx as fs}from"react/jsx-runtime";function Wo({backgroundStyle:e,alwaysShowBackground:t}){let{strategy:n}=V();return n.type!=="empty"&&!t?null:fs(st,{style:e})}import{createContext as gs,useContext as hs}from"react";var fe=gs(null);function lt(){return hs(fe)}import{Fragment as vs,jsx as ys,jsxs as Ss}from"react/jsx-runtime";function Uo({isStatic:e=!1,enableSizes:t=!1,enableAnnotations:n=!0,onClickPaintingAnnotation:o,children:s}){let{strategy:i}=V(),{renderViewerControls:r,viewControlsDeps:a}=$(),l=A(),u=lt(),f=Pe({maxWidth:256,maxHeight:256});return D(u&&i.type==="images"&&r?"overlay":"none",`canvas-portal-controls-${l?.id}`,fe.Provider,r?{value:u||null,children:r(i)}:{},[l,u,i,...a||[]]),i.type!=="images"?null:Ss(vs,{children:[i.images.map((c,m)=>ys(Ie,{isStatic:e,image:c,id:c.id,thumbnail:m===0?f:void 0,selector:c.selector,enableSizes:t,enableAnnotations:n,onClick:o?h=>{o(c.annotationId,c,h)}:void 0},c.id+m)),s]})}import{Fragment as Cs,jsx as xs,jsxs as bs}from"react/jsx-runtime";function _o({onClickPaintingAnnotation:e,children:t}){let{strategy:n}=V(),{renderViewerControls:o,viewControlsDeps:s}=$(),i=lt(),r=A();return D(i&&n.type==="textual-content"&&o?"overlay":"none",`canvas-portal-controls-${r?.id}`,fe.Provider,o?{value:i||null,children:o(n)}:{},[r,i,n,...s||[]]),n.type!=="textual-content"?null:bs(Cs,{children:[xs(at,{strategy:n,onClickPaintingAnnotation:e}),t]})}import{jsx as jo,jsxs as Rs}from"react/jsx-runtime";function Qt({element:e,media:t,startTime:n,playPause:o,poster:s}){let i="div",r=n?`${t.url}#t=${n}`:t.url;return Rs(i,{className:"video-container",part:"video-container",onClick:o,children:[jo("style",{children:`
|
|
18
|
+
`):""}}function Be({as:e,defaultText:t,enableDangerouslySetInnerHTML:n,children:o,separator:s,...i}){let r=Vo(),[a,l]=ts(o,t,s,r);return l?X(Ja,{...i,as:e,language:l,title:n?void 0:a,dangerouslySetInnerHTML:n?{__html:a}:void 0,children:n?void 0:a}):e?X(e,{...i,children:a}):X("span",{...i,title:n?void 0:a,dangerouslySetInnerHTML:n?{__html:a}:void 0,children:n?void 0:a})}import{isImageServiceLevel as Lo}from"@iiif/parser/image-3";import{useMemo as jt}from"react";import{jsx as it,jsxs as ns}from"react/jsx-runtime";var Kt=e=>{let t=e.format||"jpg",n=e.width/(e.crop?.width||e.tiles.width),o=e.tiles.imageService.sizes||[],s=e.enableThumbnail,i=e.enableSizes,r=jt(()=>{let u=e.tiles.imageService.id||e.tiles.imageService["@id"];return u?.endsWith("/info.json")?u.slice(0,-1*10):u},[e.tiles.imageService.id,e.tiles.imageService["@id"]]),a=jt(()=>{let u=e.tiles.imageService.tiles||[];if(!u.length){let f=e.width,c=[1],m=1;for(;2**m<f;)m=m*2,c.push(m);return(e.tiles.imageService.maxArea||e.tiles.imageService.maxWidth||e.tiles.imageService.maxHeight)&&Lo(2,e.tiles.imageService)?[{width:256,height:256,scaleFactors:c}]:Lo(2,e.tiles.imageService)?[{width:256,height:256,scaleFactors:c}]:[]}return u},[e.tiles.imageService,e.width]),l=jt(()=>{let u=e.tiles.imageService;return(u?u["@context"]?Array.isArray(u["@context"])?u["@context"]:[u["@context"]]:[]:[]).indexOf("http://iiif.io/api/image/3/context.json")!==-1},[e.tiles.imageService.id,e.tiles.imageService]);return it("world-object",{rotation:e.rotation,scale:n,height:e.crop?.height||e.tiles.height,width:e.crop?.width||e.tiles.width,x:e.x,y:e.y,onClick:e.onClick,children:ns("composite-image",{id:e.tiles.imageService.id,width:e.crop?.width||e.tiles.width,height:e.crop?.height||e.tiles.height,crop:e.crop,renderOptions:e.renderOptions,children:[s&&e.tiles.thumbnail?it("world-image",{priority:!0,uri:e.tiles.thumbnail.id,target:{width:e.tiles.width,height:e.tiles.height},display:{width:e.tiles.thumbnail.width,height:e.tiles.thumbnail.height},crop:e.crop}):null,i&&o.map((u,f)=>it("world-image",{uri:`${r}/full/${u.width},${l?u.height:""}/0/default.${t}`,target:{width:e.tiles.width,height:e.tiles.height},display:{width:u.width,height:u.height},crop:e.crop},f)),a.map(u=>(u.scaleFactors||[]).map(f=>it("tiled-image",{uri:e.tiles.imageService.id,display:{width:e.tiles.width,height:e.tiles.height},format:t,tile:u,scaleFactor:f,crop:e.crop,version3:l},`${e.tiles.imageService.id}-tile-${f}`)))]},e.tiles.imageService.id)},e.tiles.imageService.id)};import{jsx as ne,jsxs as as}from"react/jsx-runtime";function is({resource:e,heading:t,note:n,extra:o}){return o?ne(os,{target:{x:0,y:0,width:o.target?.spatial.width,height:o.target?.spatial.height},backgroundColor:"#333",relative:!0,children:ne("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:as("div",{children:[ne(Be,{children:t||"Not authorised"}),n&&ne("p",{children:ne(Be,{children:n})}),ne("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}function zo({image:e,thumbnail:t,crop:n,enableSizes:o,enableThumbnail:s,renderOptions:i,rotation:r}){let a=En(),l=rs(e.service),u=Po(l),f=rt(),c=u?.service;f(e.service,e);let m=c&&u?.status==="done",h=(c?.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 p=e.service,S=p.width||e.width||0,y=p.height||e.height||0,d=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:d=-(x-C)/2),ne(Kt,{enableThumbnail:s,renderOptions:i,rotation:r,tiles:{id:p.id||p["@id"]||"unknown",height:y,width:S,imageService:p,thumbnail:v},enableSizes:o,x:d,y:g,format:h,width:x,height:C,crop:n})}return ne(Vn,{resource:e.service,errorComponent:is,extra:e,children:p=>{let S=p.width||e.width||0,y=p.height||e.height||0,d=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,d=(x-C)/2):(g=(C-x)/2,d=-(x-C)/2)),ne(Kt,{enableThumbnail:s,renderOptions:i,tiles:{id:p.id||p["@id"]||"unknown",height:y,width:S,imageService:p,thumbnail:v},rotation:r,format:h,enableSizes:o,x:d,y:g,width:x,height:C,crop:n})}},e.id)}import{jsx as Yt,jsxs as Gt}from"react/jsx-runtime";function Ie({id:e,image:t,thumbnail:n,isStatic:o,x:s=0,y:i=0,children:r,selector:a,onClick:l,enableSizes:u,enableAnnotations:f}){let c=Bo(()=>{if(!(!a||a.spatial.x===0&&a.spatial.y===0))return a.spatial},[a]),m=Bo(()=>{if(!t.annotation)return 0;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=s+t.target.spatial.x,v=i+t.target.spatial.y,p=t.target.spatial.width,S=t.target.spatial.height,y=t.target.spatial.width,d=t.target.spatial.height;return(m===90||m===270)&&([p,S]=[S,p],[y,d]=[d,y]),Gt("world-object",{x:h,y:v,width:p,height:S,onClick:l,rotation:m,children:[t.service?Gt(Oo,{children:[Yt(zo,{image:t,thumbnail:n,crop:c,enableSizes:u,rotation:m}),r]},"service"):Gt(Oo,{children:[Yt("world-image",{onClick:l,uri:t.id,target:{x:0,y:0,width:y,height:d},display:y&&d?{width:y,height:d}:void 0,crop:c}),r]},"no-service"),f&&t.annotationPages?t.annotationPages.map(g=>Yt(ue,{page:g,className:"image-service-annotation",ignoreTargetId:!0},g.id)):null]},e+(t.service?"server":"no-service"))}import{HTMLPortal as ss}from"@atlas-viewer/atlas";import{Fragment as Ho,jsx as He}from"react/jsx-runtime";function at({strategy:e,onClickPaintingAnnotation:t}){return He(Ho,{children:e.items.map((n,o)=>He(Ho,{children:He(ss,{onClick:t?s=>{s.stopPropagation(),t(n.annotationId,n,s)}:void 0,target:n.target?.spatial||void 0,children:He("div",{"data-textual-content":!0,children:He(Be,{enableDangerouslySetInnerHTML:!0,children:n.text})})},o)}))})}import{Fragment as cs,jsx as pe,jsxs as ds}from"react/jsx-runtime";function $o({strategy:e,children:t}){let{store:n}=us(()=>Ro({complexTimeline:e}),[e]),o=qo(n,r=>r.isReady),s=qo(n,r=>r.visibleElements);function i(r){return a=>{a&&n.getState().setElement(r,a)}}return ls(()=>{if(o){let{startClock:r,stopClock:a}=n.getState();return r(),()=>{a()}}},[e,o]),D("portal","custom-controls",Co,{store:n,children:t},[o]),ds(cs,{children:[e.items.map(r=>r.type!=="Image"||!s[r.annotationId]?null:pe(Ie,{image:r,id:r.annotationId},r.id)),e.items.map((r,a)=>r.type!=="Text"||!s[r.annotationId]?null:pe(at,{strategy:{type:"textual-content",items:[r]}},a)),e.items.map((r,a)=>r.type!=="Video"||!r.target.spatial?null:pe(Do,{target:r.target.spatial,children:pe("video",{ref:i(r.annotationId),src:r.url,style:{height:"100%",width:"100%",opacity:s[r.annotationId]?1:0}})},a)),e.items.map((r,a)=>r.type!=="Sound"?null:pe(Do,{children:pe("audio",{ref:i(r.annotationId),src:r.url})},a)),e.highlights.map(({annotation:r})=>s[r.id]?pe(Re,{id:r.id,ignoreTargetId:!0,style:{outline:"3px solid red"},className:"image-service-annotation"},r.id):null)]})}import{jsx as ms}from"react/jsx-runtime";function Fo(){let{strategy:e}=V(),{renderComplexTimelineControls:t}=$();return e.type!=="complex-timeline"?null:ms($o,{strategy:e,children:t?t(e):null})}import{jsx as ps}from"react/jsx-runtime";function st({style:e}){let t=A();return!t||!t.height||!t.width?null:ps("box",{interactive:!1,target:{x:0,y:0,width:Number(t.width),height:Number(t.height)},style:e})}import{jsx as fs}from"react/jsx-runtime";function Wo({backgroundStyle:e,alwaysShowBackground:t}){let{strategy:n}=V();return n.type!=="empty"&&!t?null:fs(st,{style:e})}import{createContext as gs,useContext as hs}from"react";var fe=gs(null);function lt(){return hs(fe)}import{Fragment as vs,jsx as ys,jsxs as Ss}from"react/jsx-runtime";function Uo({isStatic:e=!1,enableSizes:t=!1,enableAnnotations:n=!0,onClickPaintingAnnotation:o,children:s}){let{strategy:i}=V(),{renderViewerControls:r,viewControlsDeps:a}=$(),l=A(),u=lt(),f=Pe({maxWidth:256,maxHeight:256});return D(u&&i.type==="images"&&r?"overlay":"none",`canvas-portal-controls-${l?.id}`,fe.Provider,r?{value:u||null,children:r(i)}:{},[l,u,i,...a||[]]),i.type!=="images"?null:Ss(vs,{children:[i.images.map((c,m)=>ys(Ie,{isStatic:e,image:c,id:c.id,thumbnail:m===0?f:void 0,selector:c.selector,enableSizes:t,enableAnnotations:n,onClick:o?h=>{o(c.annotationId,c,h)}:void 0},c.id+m)),s]})}import{Fragment as Cs,jsx as xs,jsxs as bs}from"react/jsx-runtime";function _o({onClickPaintingAnnotation:e,children:t}){let{strategy:n}=V(),{renderViewerControls:o,viewControlsDeps:s}=$(),i=lt(),r=A();return D(i&&n.type==="textual-content"&&o?"overlay":"none",`canvas-portal-controls-${r?.id}`,fe.Provider,o?{value:i||null,children:o(n)}:{},[r,i,n,...s||[]]),n.type!=="textual-content"?null:bs(Cs,{children:[xs(at,{strategy:n,onClickPaintingAnnotation:e}),t]})}import{jsx as jo,jsxs as Rs}from"react/jsx-runtime";function Qt({element:e,media:t,startTime:n,playPause:o,poster:s}){let i="div",r=n?`${t.url}#t=${n}`:t.url;return Rs(i,{className:"video-container",part:"video-container",onClick:o,children:[jo("style",{children:`
|
|
19
19
|
.video-container {
|
|
20
20
|
position: absolute;
|
|
21
21
|
top: 0;
|
|
@@ -12,7 +12,7 @@ import { Vault } from '@iiif/helpers/vault';
|
|
|
12
12
|
import { Reference, FragmentSelector, SvgSelector, AnnotationPage } from '@iiif/presentation-3';
|
|
13
13
|
import * as zustand_vanilla from 'zustand/vanilla';
|
|
14
14
|
import { AnnotationPageNormalized, CanvasNormalized } from '@iiif/presentation-3-normalized';
|
|
15
|
-
import { S as SingleAudio, a as SingleVideo, M as MediaStrategy, b as StrategyActions, c as SingleImageStrategy, E as EmptyStrategy, C as ComplexTimelineStrategy, R as RenderingStrategy, I as ImageWithOptionalService } from './useRenderingStrategy-
|
|
15
|
+
import { S as SingleAudio, a as SingleVideo, M as MediaStrategy, b as StrategyActions, c as SingleImageStrategy, E as EmptyStrategy, C as ComplexTimelineStrategy, R as RenderingStrategy, I as ImageWithOptionalService } from './useRenderingStrategy-Bg8-k9-n.cjs';
|
|
16
16
|
import { ChoiceDescription, ImageCandidate, BoxSelector } from '@iiif/helpers';
|
|
17
17
|
|
|
18
18
|
type RenderContextProps = {
|
|
@@ -12,7 +12,7 @@ import { Vault } from '@iiif/helpers/vault';
|
|
|
12
12
|
import { Reference, FragmentSelector, SvgSelector, AnnotationPage } from '@iiif/presentation-3';
|
|
13
13
|
import * as zustand_vanilla from 'zustand/vanilla';
|
|
14
14
|
import { AnnotationPageNormalized, CanvasNormalized } from '@iiif/presentation-3-normalized';
|
|
15
|
-
import { S as SingleAudio, a as SingleVideo, M as MediaStrategy, b as StrategyActions, c as SingleImageStrategy, E as EmptyStrategy, C as ComplexTimelineStrategy, R as RenderingStrategy, I as ImageWithOptionalService } from './useRenderingStrategy-
|
|
15
|
+
import { S as SingleAudio, a as SingleVideo, M as MediaStrategy, b as StrategyActions, c as SingleImageStrategy, E as EmptyStrategy, C as ComplexTimelineStrategy, R as RenderingStrategy, I as ImageWithOptionalService } from './useRenderingStrategy-Bg8-k9-n.js';
|
|
16
16
|
import { ChoiceDescription, ImageCandidate, BoxSelector } from '@iiif/helpers';
|
|
17
17
|
|
|
18
18
|
type RenderContextProps = {
|