react-iiif-vault 1.0.10 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/dist/bundle.d.ts +1058 -0
  2. package/dist/bundle.global.js +227 -0
  3. package/dist/canvas-panel.cjs +46 -0
  4. package/dist/canvas-panel.d.cts +11 -0
  5. package/dist/canvas-panel.d.ts +11 -0
  6. package/dist/canvas-panel.js +1 -0
  7. package/dist/chunk-HEVA2EDS.js +47 -0
  8. package/dist/chunk-YSH2CIKG.js +1 -0
  9. package/dist/index-BZirmhnp.d.cts +188 -0
  10. package/dist/index-Cxs6aAuK.d.ts +188 -0
  11. package/dist/index.cjs +47 -0
  12. package/dist/index.d.cts +721 -0
  13. package/dist/index.d.ts +721 -0
  14. package/dist/index.js +1 -0
  15. package/dist/useRenderingStrategy-Xj9yQm4y.d.cts +145 -0
  16. package/dist/useRenderingStrategy-Xj9yQm4y.d.ts +145 -0
  17. package/dist/utils.cjs +1 -0
  18. package/dist/utils.d.cts +32 -0
  19. package/dist/utils.d.ts +32 -0
  20. package/dist/utils.js +1 -0
  21. package/package.json +67 -70
  22. package/.build/types/canvas-panel/Viewer.d.ts +0 -14
  23. package/.build/types/canvas-panel/context/overlays.d.ts +0 -3
  24. package/.build/types/canvas-panel/context/world-size.d.ts +0 -2
  25. package/.build/types/canvas-panel/index.d.ts +0 -46
  26. package/.build/types/canvas-panel/render/Annotation.d.ts +0 -8
  27. package/.build/types/canvas-panel/render/AnnotationPage.d.ts +0 -7
  28. package/.build/types/canvas-panel/render/Audio.d.ts +0 -11
  29. package/.build/types/canvas-panel/render/Canvas.d.ts +0 -34
  30. package/.build/types/canvas-panel/render/CanvasBackground.d.ts +0 -4
  31. package/.build/types/canvas-panel/render/DefaultCanvasFallback.d.ts +0 -6
  32. package/.build/types/canvas-panel/render/Image.d.ts +0 -16
  33. package/.build/types/canvas-panel/render/Model.d.ts +0 -7
  34. package/.build/types/canvas-panel/render/Video.d.ts +0 -12
  35. package/.build/types/canvas-panel/render/VideoYouTube.d.ts +0 -12
  36. package/.build/types/components/CanvasAnnotations.d.ts +0 -10
  37. package/.build/types/components/CombinedMetadata.d.ts +0 -4
  38. package/.build/types/components/Image.d.ts +0 -15
  39. package/.build/types/components/ManifestMetadata.d.ts +0 -4
  40. package/.build/types/components/Metadata.d.ts +0 -39
  41. package/.build/types/components/SequenceThumbnails.d.ts +0 -29
  42. package/.build/types/components/SingleCanvasThumbnail.d.ts +0 -20
  43. package/.build/types/context/AnnotationContext.d.ts +0 -5
  44. package/.build/types/context/AnnotationPageContext.d.ts +0 -5
  45. package/.build/types/context/CanvasContext.d.ts +0 -5
  46. package/.build/types/context/CollectionContext.d.ts +0 -5
  47. package/.build/types/context/ContextBridge.d.ts +0 -14
  48. package/.build/types/context/ImageServiceLoaderContext.d.ts +0 -4
  49. package/.build/types/context/ManifestContext.d.ts +0 -5
  50. package/.build/types/context/MediaContext.d.ts +0 -17
  51. package/.build/types/context/RangeContext.d.ts +0 -5
  52. package/.build/types/context/ResourceContext.d.ts +0 -15
  53. package/.build/types/context/VaultContext.d.ts +0 -14
  54. package/.build/types/context/ViewerPresetContext.d.ts +0 -3
  55. package/.build/types/context/VisibleCanvasContext.d.ts +0 -4
  56. package/.build/types/demo/demo.d.ts +0 -1
  57. package/.build/types/demo/media-controls.d.ts +0 -1
  58. package/.build/types/demo/viewer-controls.d.ts +0 -1
  59. package/.build/types/features/rendering-strategy/3d-strategy.d.ts +0 -12
  60. package/.build/types/features/rendering-strategy/audio-strategy.d.ts +0 -3
  61. package/.build/types/features/rendering-strategy/get-rendering-strategy.d.ts +0 -11
  62. package/.build/types/features/rendering-strategy/image-strategy.d.ts +0 -12
  63. package/.build/types/features/rendering-strategy/rendering-utils.d.ts +0 -12
  64. package/.build/types/features/rendering-strategy/resource-types.d.ts +0 -55
  65. package/.build/types/features/rendering-strategy/strategies.d.ts +0 -31
  66. package/.build/types/features/rendering-strategy/textual-content-strategy.d.ts +0 -16
  67. package/.build/types/features/rendering-strategy/video-strategy.d.ts +0 -3
  68. package/.build/types/future-helpers/ranges.d.ts +0 -7
  69. package/.build/types/future-helpers/sequences.d.ts +0 -8
  70. package/.build/types/hooks/useAnnotation.d.ts +0 -8
  71. package/.build/types/hooks/useAnnotationPage.d.ts +0 -8
  72. package/.build/types/hooks/useAnnotationPageManager.d.ts +0 -10
  73. package/.build/types/hooks/useAnnotationsAtTime.d.ts +0 -4
  74. package/.build/types/hooks/useCanvas.d.ts +0 -8
  75. package/.build/types/hooks/useCanvasClock.d.ts +0 -1
  76. package/.build/types/hooks/useCanvasSelector.d.ts +0 -0
  77. package/.build/types/hooks/useCanvasSubset.d.ts +0 -2
  78. package/.build/types/hooks/useCanvasTimeline.d.ts +0 -0
  79. package/.build/types/hooks/useCollection.d.ts +0 -8
  80. package/.build/types/hooks/useDispatch.d.ts +0 -2
  81. package/.build/types/hooks/useEnabledAnnotationPageIds.d.ts +0 -1
  82. package/.build/types/hooks/useEventListener.d.ts +0 -4
  83. package/.build/types/hooks/useExistingVault.d.ts +0 -2
  84. package/.build/types/hooks/useExternalCollection.d.ts +0 -13
  85. package/.build/types/hooks/useExternalManifest.d.ts +0 -13
  86. package/.build/types/hooks/useExternalResource.d.ts +0 -16
  87. package/.build/types/hooks/useImage.d.ts +0 -10
  88. package/.build/types/hooks/useImageService.d.ts +0 -9
  89. package/.build/types/hooks/useImageTile.d.ts +0 -11
  90. package/.build/types/hooks/useLoadImageService.d.ts +0 -6
  91. package/.build/types/hooks/useManifest.d.ts +0 -8
  92. package/.build/types/hooks/usePaintables.d.ts +0 -9
  93. package/.build/types/hooks/usePaintingAnnotations.d.ts +0 -5
  94. package/.build/types/hooks/useRange.d.ts +0 -8
  95. package/.build/types/hooks/useRenderingStrategy.d.ts +0 -15
  96. package/.build/types/hooks/useResourceEvents.d.ts +0 -3
  97. package/.build/types/hooks/useResources.d.ts +0 -1
  98. package/.build/types/hooks/useSearchService.d.ts +0 -2
  99. package/.build/types/hooks/useSimpleMediaPlayer.d.ts +0 -32
  100. package/.build/types/hooks/useStyleHelper.d.ts +0 -1
  101. package/.build/types/hooks/useStyles.d.ts +0 -3
  102. package/.build/types/hooks/useThumbnail.d.ts +0 -5
  103. package/.build/types/hooks/useVault.d.ts +0 -2
  104. package/.build/types/hooks/useVaultEffect.d.ts +0 -2
  105. package/.build/types/hooks/useVaultSelector.d.ts +0 -2
  106. package/.build/types/hooks/useVirtualAnnotationPage.d.ts +0 -14
  107. package/.build/types/hooks/useVirtualAnnotationPageContext.d.ts +0 -671
  108. package/.build/types/hooks/useVirtualCanvas.d.ts +0 -0
  109. package/.build/types/index.d.ts +0 -72
  110. package/.build/types/utility/flatten-annotation-page-ids.d.ts +0 -7
  111. package/.build/types/utility/i18n-utils.d.ts +0 -30
  112. package/.build/types/utils.d.ts +0 -2
  113. package/.build/types/viewers/SimpleViewerContext.d.ts +0 -6
  114. package/.build/types/viewers/SimpleViewerContext.hooks.d.ts +0 -19
  115. package/.build/types/viewers/SimpleViewerContext.types.d.ts +0 -46
  116. package/.build/types/viewers/SingleCanvasContext.d.ts +0 -1
  117. package/dist/bundle/cjs/index.js +0 -49
  118. package/dist/bundle/cjs/index.js.map +0 -1
  119. package/dist/bundle/esm/index.mjs +0 -3314
  120. package/dist/bundle/esm/index.mjs.map +0 -1
  121. package/dist/canvas-panel/cjs/canvas-panel.js +0 -47
  122. package/dist/canvas-panel/cjs/canvas-panel.js.map +0 -1
  123. package/dist/canvas-panel/esm/canvas-panel.mjs +0 -1853
  124. package/dist/canvas-panel/esm/canvas-panel.mjs.map +0 -1
  125. package/dist/index.umd.js +0 -393
  126. package/dist/index.umd.js.map +0 -1
  127. package/dist/react17/cjs/index.js +0 -49
  128. package/dist/react17/cjs/index.js.map +0 -1
  129. package/dist/react17/esm/index.mjs +0 -3314
  130. package/dist/react17/esm/index.mjs.map +0 -1
  131. package/dist/utils/cjs/utils.js +0 -2
  132. package/dist/utils/cjs/utils.js.map +0 -1
  133. package/dist/utils/esm/utils.mjs +0 -238
  134. package/dist/utils/esm/utils.mjs.map +0 -1
@@ -0,0 +1,46 @@
1
+ "use strict";var Rr=Object.create;var He=Object.defineProperty;var Pr=Object.getOwnPropertyDescriptor;var br=Object.getOwnPropertyNames;var Ir=Object.getPrototypeOf,wr=Object.prototype.hasOwnProperty;var Tr=(e,t)=>{for(var n in t)He(e,n,{get:t[n],enumerable:!0})},Lt=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of br(t))!wr.call(e,o)&&o!==n&&He(e,o,{get:()=>t[o],enumerable:!(r=Pr(t,o))||r.enumerable});return e};var ie=(e,t,n)=>(n=e!=null?Rr(Ir(e)):{},Lt(t||!e||!e.__esModule?He(n,"default",{value:e,enumerable:!0}):n,e)),Mr=e=>Lt(He({},"__esModule",{value:!0}),e);var ao={};Tr(ao,{CanvasPanel:()=>V});module.exports=Mr(ao);var ze=require("react");var M=ie(require("react"),1),Ge=require("@atlas-viewer/atlas"),Vn=require("react-error-boundary");var ee=require("react");var ae=ie(require("react"),1),zt=require("react/jsx-runtime"),Vr={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},De=ae.default.createContext(Vr),O=()=>(0,ae.useContext)(De);function Y({value:e,children:t}){let n=O(),r=(0,ae.useMemo)(()=>({...n,...e}),[e,n]);return(0,zt.jsx)(De.Provider,{value:r,children:t})}var Ue=ie(require("react"),1),Ae=require("@iiif/helpers/vault");var pt=require("react/jsx-runtime"),X=Ue.default.createContext({vault:null,setVaultInstance:e=>{}});function se({vault:e,vaultOptions:t,useGlobal:n,resources:r,children:o}){let[s,i]=(0,Ue.useState)(()=>e||(n?(0,Ae.globalVault)(t):t?new Ae.Vault(t):new Ae.Vault));return(0,pt.jsx)(X.Provider,{value:{vault:s,setVaultInstance:i},children:(0,pt.jsx)(Y,{value:r||{},children:o})})}var fn=require("react"),je=require("react");var Ot=require("@iiif/helpers/vault"),Ft=require("react");function ue(e){let t=(0,Ft.useContext)(X);return e||(t&&t.vault?t.vault:(0,Ot.globalVault)())}var Q=require("react");function Ht(e,{noCache:t=!1}={}){let n=typeof e=="string"?e:e.id,r=ue(),[o,s]=(0,Q.useState)(n),[i,a]=(0,Q.useState)(void 0),u=(0,Q.useMemo)(()=>r.get(n,{skipSelfReturn:!0})||void 0,[n,r]),[c,l]=(0,Q.useState)(u);return(0,Q.useEffect)(()=>{(async()=>{try{let d=u&&!t?u:await r.load(n),g=d?d.id||d["@id"]:null;d&&o!==g&&s(g),l(d)}catch(d){a(d)}})()},[n,t]),{isLoaded:!!c,id:o,requestId:n,error:i,resource:c,cached:!!(c&&c===u)}}function Dt(e,t){let{id:n,isLoaded:r,error:o,resource:s,requestId:i,cached:a}=Ht(e,t);return{id:n,isLoaded:r,error:o,manifest:s,requestId:i,cached:a}}var Bt=require("react/jsx-runtime");function Ut({manifest:e,children:t}){return(0,Bt.jsx)(Y,{value:{manifest:e},children:t})}var _t=require("react/jsx-runtime");function ce({canvas:e,children:t}){return(0,_t.jsx)(Y,{value:{canvas:e},children:t})}var $t=require("react"),Wt=ie(require("react"),1);var qt=require("react"),h=()=>{let{vault:e}=(0,qt.useContext)(X);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};var Be=require("react");function y(e,t=[]){let n=h(),[r,o]=(0,Be.useState)(()=>e(n.getState(),n));return(0,Be.useEffect)(()=>n.subscribe(s=>e(s,n),s=>{o(s)},!1),t),r}var le=Wt.default.createContext([]);function _e(){let e=(0,$t.useContext)(le);return y(t=>e.map(n=>t.iiif.entities.Canvas[n]).filter(Boolean),[e])}var jt=require("react");function k(e={},t=[]){let{id:n,selector:r}=e,o=O(),s=h(),i=n||o.manifest,a=y(u=>i?u.iiif.entities.Manifest[i]:void 0,[i]);return(0,jt.useMemo)(()=>{if(a)return r?r(a):a},[a,r,...t])}var Qt=require("react/jsx-runtime");function Yt({range:e,children:t}){return(0,Qt.jsx)(Y,{value:{range:e},children:t})}function gt(e,t){let n=[];for(let r of t.items)if(r.type==="SpecificResource"&&r.source?.type==="Canvas"&&(r.source.id.indexOf("#")!==-1?n.push({id:r.source.id.split("#")[0],type:"Canvas"}):n.push(r.source)),r.type==="Range"&&n.push(...gt(e,e.get(r))),r.type==="SpecificResource"){let o=typeof r.source=="string"?r.source:r.source.id;n.push({id:o,type:"Canvas"})}return n}function Gt(e,t,{disablePaging:n,skipNonPaged:r}={}){let o=t.behavior,s=o.includes("paged"),i=s?!1:o.includes("continuous"),a=s||i?!1:o.includes("individuals"),u=t.type==="Manifest"?t.items:gt(e,t);if(i)return[u,[u.map((f,p)=>p)]];if(a||!s||n)return[u,u.map((f,p)=>[p])];let c=[],l=[],d=()=>{l.length&&(c.push([...l]),l=[])},g=0,S=!1;for(let f=0;f<u.length;f++){let p=e.get(u[f]);if(p.behavior.includes("non-paged")){f===g&&g++,r||(d(),c.push([f]),d());continue}if(f===g||p.behavior.includes("facing-pages")){l.length&&(S=!0),d(),c.push([f]),d();continue}if(l.push(f),S){d(),S=!1;continue}l.length>1&&d()}return l.length&&d(),[u,c]}var F=require("react");var Zt=require("react");function Kt(e={},t=[]){let{id:n,selector:r}=e,o=O(),s=n||o.range,i=y(a=>s?a.iiif.entities.Range[s]:void 0,[s]);return(0,Zt.useMemo)(()=>{if(i)return r?r(i):i},[i,r,...t])}function Jt({startCanvas:e,disablePaging:t}){let n=h(),r=k(),o=Kt(),[s,i]=(0,F.useState)(void 0),a=o||r;if(!a)throw new Error("Nothing selected");let[u,c]=(0,F.useMemo)(()=>Gt(n,a,{disablePaging:t}),[n,a,t]),l=(0,F.useRef)(c);if(l.current!==c){let R=l.current[s][0],x=c.findIndex(W=>W.includes(R));l.current=c,i(x)}let d=(0,F.useCallback)(p=>{let R=c.findIndex(x=>x.includes(p));i(R===-1?0:R)},[u,c]),g=(0,F.useCallback)(p=>{let R=u.findIndex(x=>x.id===p);R!==-1?d(R):i(0)},[u,c]),S=(0,F.useCallback)(()=>{i(p=>p>=c.length-1?p:p+1)},[c]),f=(0,F.useCallback)(()=>{i(p=>p<=0?0:p-1)},[c]);return typeof s>"u"&&(e?g(e):i(0)),{visibleItems:c[s]?.map(p=>u[p].id)||[],cursor:s,items:u,sequence:c,hasPrevious:s>0,hasNext:s<c.length-1,setSequenceIndex:i,setCanvasIndex:d,setCanvasId:g,next:S,previous:f}}var D=require("react");var de=require("react");var vt=require("zustand/vanilla");function H(e,t,n){let r=t.findIndex(i=>i.service.id===e);if(r===-1)return t;let o=[...t],s=n(o[r]);return s===o[r]?t:(o[r]=s,o)}var Xt=()=>(0,vt.createStore)((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 r=n.service.service.find(o=>o.type==="AuthAccessTokenService2");if(!r)throw new Error("Token service not found");e(()=>({authItems:H(n.id,t().authItems,o=>({...o,isPending:!0}))})),ht(n.service).then(()=>{qe(r).then(o=>{let s=o.expiresIn,i=Date.now()+s*1e3;e(()=>({authItems:H(n.id,t().authItems,a=>({...a,isLoggedIn:!0,isPending:!1,session:{token:o.accessToken,expires:i}}))}))}).catch(o=>{e(()=>({authItems:H(n.id,t().authItems,s=>({...s,isLoggedIn:!1,isPending:!1,error:o.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 r=n.service.service.find(i=>i.type==="AuthLogoutService2");if(!r)return;let o=`${r.id}?origin=${nn()}`,s=window.open(o);e(()=>({authItems:H(n.id,t().authItems,i=>({...i,isLoggedIn:!1,session:null,isPending:!1}))}))},nextAuth:()=>{let n=t().authItems.length,r=t().currentAuth+1;r>=n||e(()=>({currentAuth:r}))},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,r)=>{if(!n.service)return;let o=n.service.find(a=>a.type==="AuthAccessTokenService2"),s=n;if(t().authItems.find(a=>a.service.id===n.id)){e(()=>({authItems:H(n.id,t().authItems,a=>({...a,instances:a.instances+1}))}));return}if(e(()=>({currentAuth:s.profile==="active"?0:t().currentAuth,authItems:[{id:n.id,type:n.profile,service:n,probeId:r,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...t().authItems]})),n.profile==="external"){if(!o)throw new Error("Token service not found");qe(o).then(a=>{e(()=>({authItems:H(n.id,t().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:H(n.id,t().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:a.message}))}))})}if(n.profile==="kiosk"){if(!o)throw new Error("Token service not found");e(()=>({authItems:H(n.id,t().authItems,a=>({...a,isPending:!0}))})),ht(s).then(()=>{qe(o).then(a=>{e(()=>({authItems:H(n.id,t().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:H(n.id,t().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,error:a.message}))}))})})}n.profile},removeService:(n,r)=>{let o=t().currentAuth===t().authItems.findIndex(i=>i.service.id===n.id),s=t().currentAuth;if(o){let i=t().authItems.find(u=>u.service.id===n.id);i&&i.instances>1||(s=t().authItems.findIndex(c=>c.service.id!==n.id&&c.instances>0))}e(()=>({authItems:H(n.id,t().authItems,i=>({...i,instances:i.instances-1})),currentAuth:s}))}})),en=(e,t)=>(0,vt.createStore)((n,r)=>({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(!r().service)return;let o=r().service?.id;if(!o){n({status:"error",error:"Service ID not found",errorHeading:{en:["Service ID not found"]}});return}n({status:"probing"});let s=r().token;try{let i=await fetch(o,{headers:s?{Authorization:`Bearer ${r().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(a=>a.json());if(i.status===200)n({status:"success",shouldDisplayResource:!0,error:null,errorHeading:null,errorNote:null,shouldSubstitute:!1,shouldRedirect:!1});else if(i.status<400&&i.status>=300){if(!i.location)throw new Error("Redirect location not found");n({status:"error",shouldDisplayResource:!1,shouldRedirect:!0,redirectResource:i.location||null})}else if(i.status===401)n({status:"error",shouldDisplayResource:!1,shouldRedirect:!1,shouldSubstitute:!!i.substitute,substituteResource:i.substitute||null,error:"Unauthorized",errorHeading:i.heading||{en:["Unauthorized"]},errorNote:i.note||null});else throw new Error("Unknown error")}catch(i){n({status:"error",error:i.message,errorHeading:{en:["Unknown error"]}})}},setToken(o){n({token:o})}}));function tn(e){let t=e.service||e.services||[],n={hasAuth:!1,services:{}};for(let r of t)if(r.type==="AuthProbeService2"){n.services.probe=r,n.hasAuth=!0;let o=r.service.filter(s=>s.type==="AuthAccessService2");o[0]&&(n.services.access=o[0])}return n}async function qe(e,{strict:t=!0}={}){return new Promise((n,r)=>{let o=Math.random().toString(36).substring(7),s=`${e.id}?messageId=${o}&origin=${window.location.origin}`,i=c=>{let l=c.data;if(l.messageId===o){if(t&&l.type!=="AuthAccessToken2"){a(),r("Invalid response, expected type=AuthAccessToken2");return}if(!l.accessToken){a(),r("Invalid response, expected accessToken");return}a(),n(l)}},a=()=>window.removeEventListener("message",i),u=document.createElement("iframe");u.src=s,u.style.display="none",document.body.appendChild(u),window.addEventListener("message",i)})}function nn(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 ht(e){let t=`${e.id}?origin=${nn()}`,n=window.open(t);if(!n)throw new Error("Failed to open window");return new Promise((r,o)=>{let s=setInterval(()=>{n.closed&&(clearInterval(s),r())},500)})}var rn=require("zustand");function on(e){let t=(0,de.useMemo)(()=>tn(e),[e]),n=an(t.services.access?.id);console.log("probe auth service");let r=(0,de.useMemo)(()=>en(t.services.probe,n),[t.services.probe]),o=(0,rn.useStore)(r);return(0,de.useEffect)(()=>{o.status==="unknown"&&!n&&o.probe()},[t.services.probe,o.status]),(0,de.useEffect)(()=>{n&&(o.setToken(n),o.probe())},[n]),[e,o,t.hasAuth]}var $e=require("zustand"),Ce=require("react/jsx-runtime"),Re=(0,D.createContext)(null),Nr=(0,D.createContext)(null);Nr.displayName="CurrentAuth";var kr=(0,D.createContext)(null);kr.displayName="AuthActions";function sn({children:e}){let t=(0,D.useMemo)(()=>Xt(),[]);return console.log("authStateStore",t),(0,Ce.jsx)(Re.Provider,{value:t,children:e})}function St(){let e=(0,D.useContext)(Re);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function Er(){let e=St();return(0,$e.useStore)(e,n=>({login:n.login,logout:n.logout,nextAuth:n.nextAuth,previousAuth:n.previousAuth,setAuth:n.setAuth,addService:n.addService,removeService:n.removeService}))}function Lr(e){let t=St();return(0,$e.useStore)(t,r=>r.authItems.find(o=>o.service.id===e))}function an(e){let t=St();return(0,$e.useStore)(t,r=>r.authItems.find(o=>o.id===e)?.session?.token)}function zr(e){let t=Er(),n=Lr(e.service.id);return(0,D.useEffect)(()=>(console.log("add service",e.service,e.probeId),t?.addService(e.service,e.probeId),()=>{t?.removeService(e.service,e.probeId)}),[e.service]),n?(n.error||!n.isLoggedIn,e.children):null}function yt(){return null}function un(e){let[t,n,r]=on(e.resource),o=e.fallbackComponent||yt,s=e.loadingComponent||yt,i=e.errorComponent||yt,a=n.service,u=null;if(!r||!a)return e.children(t);let c=a.service.filter(l=>l.type==="AuthAccessService2");n.status==="error"&&(u=(0,Ce.jsx)(i,{resource:e.resource,error:n.error||"",heading:n.errorHeading,note:n.errorNote,extra:e.extra})),(n.status==="unknown"||n.status==="probing")&&(u=(0,Ce.jsx)(s,{})),n.status==="success"&&(u=e.children(t));for(let l of c)u=(0,Ce.jsx)(zr,{service:l,probeId:a.id,children:u},l.id);return u}var Pe=require("react");var cn=require("zustand/vanilla"),Or=e=>e.id||e["@id"];function Fr(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 ln=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?Or(t):void 0,r=null;return(0,cn.createStore)((o,s)=>({service:t,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!t,hasAutocomplete:t?!!Fr(t):!1,errorMessage:"",search(i,a={}){if(!n)throw new Error("No search service found.");r&&!r.signal.aborted&&r.abort(),r=new AbortController;let u=new URLSearchParams;i.q&&u.set("q",i.q),i.motivation&&u.set("motivation",i.motivation),i.date&&u.set("date",i.date),i.user&&u.set("user",i.user),o({loading:!0}),fetch(`${n}?${u.toString()}`,{signal:r.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...a.headers||{}}}).then(async c=>{if(!r?.signal.aborted)if(c.ok){let l=await c.json();o({resources:l.resources,error:!1,errorMessage:""})}else o({resources:[],error:!0,errorMessage:c.statusText})})},clearSearch(){o({resources:[],error:!1,errorMessage:""})},highlightResult(i){let a=s().resources.find(u=>u["@id"]===i);o({highlight:a})},nextResult(){let i=s().resources,a=s().highlight;if(!a){o({highlight:i[0]||null});return}let u=i.findIndex(c=>c["@id"]===a["@id"]);if(u===-1){o({highlight:i[0]||null});return}o({highlight:i[u+1]||i[0]||null})},previousResult(){let i=s().resources,a=s().highlight;if(!a){o({highlight:i[i.length-1]||null});return}let u=i.findIndex(c=>c["@id"]===a["@id"]);if(u===-1){o({highlight:i[i.length-1]||null});return}if(u===0){o({highlight:i[i.length-1]||null});return}o({highlight:i[u-1]||i[i.length-1]||null})}}))};var Hr=require("zustand");function dn(){let e=k();return e?e.service.find(t=>t.profile==="SearchService1"||t.profile==="http://iiif.io/api/search/1/search"):void 0}var We=require("react/jsx-runtime"),me=(0,Pe.createContext)(null);me.displayName="Search";function mn(e){let t=dn();return e.store?(0,We.jsx)(me.Provider,{value:e.store,children:e.children}):(0,We.jsx)(Dr,{service:t,children:e.children})}function Dr({service:e,children:t}){let n=(0,Pe.useMemo)(()=>ln(e),[e]);return(0,We.jsx)(me.Provider,{value:n,children:t})}var E=require("react/jsx-runtime"),be=()=>{},Ie=(0,je.createContext)({setCurrentCanvasId:be,setCurrentCanvasIndex:be,nextCanvas:be,previousCanvas:be,items:[],sequence:[],setSequenceIndex:be,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function Ur(e){let t=k(),{cursor:n,visibleItems:r,next:o,sequence:s,items:i,setCanvasIndex:a,setCanvasId:u,previous:c,setSequenceIndex:l,hasNext:d,hasPrevious:g}=Jt({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),S=(0,je.useMemo)(()=>({sequence:s,items:i,setCurrentCanvasId:u,nextCanvas:o,previousCanvas:c,totalCanvases:i.length,setCurrentCanvasIndex:a,setSequenceIndex:l,currentSequenceIndex:n,hasNext:d,hasPrevious:g}),[s,i,u,o,c,i,a,l,n]);return t?r.length===0?null:(0,E.jsx)(Ie.Provider,{value:S,children:(0,E.jsx)(le.Provider,{value:r,children:(0,E.jsx)(ce,{canvas:r[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,E.jsx)("div",{children:"Sorry, something went wrong."}))}function pn(e){let t=ue(e.vault),n=Dt(e.manifest);if(!n)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),(0,E.jsx)("div",{children:"Sorry, something went wrong."});if(n.error)return(0,E.jsx)("div",{children:n.error.toString()});if(!n.isLoaded)return(0,E.jsx)("div",{children:"Loading..."});let r=(0,E.jsx)(Ur,{...e,children:e.children});return(0,E.jsx)(se,{vault:t,children:(0,E.jsx)(Ut,{manifest:n.id,children:(0,E.jsx)(sn,{children:(0,E.jsx)(mn,{children:e.rangeId?(0,E.jsx)(Yt,{range:e.rangeId,children:r}):r})})})})}function gn(){return(0,fn.useContext)(Ie)}var fe=require("react/jsx-runtime");function hn(){return{VaultContext:(0,ee.useContext)(X),ResourceContext:(0,ee.useContext)(De),SimpleViewerReactContext:(0,ee.useContext)(Ie),VisibleCanvasReactContext:(0,ee.useContext)(le),AuthRContext:(0,ee.useContext)(Re),SearchReactContext:(0,ee.useContext)(me)}}function vn(e){return(0,fe.jsx)(se,{vault:e.bridge.VaultContext.vault||void 0,resources:e.bridge.ResourceContext,children:(0,fe.jsx)(le.Provider,{value:e.bridge.VisibleCanvasReactContext,children:(0,fe.jsx)(Ie.Provider,{value:e.bridge.SimpleViewerReactContext,children:(0,fe.jsx)(Re.Provider,{value:e.bridge.AuthRContext,children:(0,fe.jsx)(me.Provider,{value:e.bridge.SearchReactContext,children:e.children})})})})})}var pe=require("react");var $=require("react");var Ye=require("@iiif/helpers/vault/actions");var yn=require("react");function Sn(){let t=h().getStore();return(0,yn.useMemo)(()=>n=>t.dispatch(n),[t])}function xn(e){return typeof e!="string"&&e&&e.bindToVault}function An(){let e=h(),t=(0,$.useRef)([]),n=Sn(),r=(0,$.useMemo)(()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);(0,$.useLayoutEffect)(()=>{let a={id:r,type:"AnnotationPage",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],rendering:[],service:[]};n(Ye.entityActions.importEntities({entities:{AnnotationPage:{[a.id]:a}}}))},[r]);let o=y(a=>r&&a.iiif.entities.AnnotationPage[r]||null,[r]),s=(0,$.useCallback)((a,u)=>{if(r){if(xn(a)){let d=a;d.__vault||d.bindToVault(e),a=typeof d.source=="string"?d.source:d.source.id,t.current[a]=d}else typeof a!="string"&&(a=a.id);let c=e.get({id:r,type:"AnnotationPage"}),l=e.get({id:a,type:"Annotation"});c&&l&&(c.items.find(d=>d.id===l.id)||n(Ye.entityActions.addReference({id:r,type:"AnnotationPage",key:"items",reference:{id:a,type:"Annotation"},index:u})))}},[r]),i=(0,$.useCallback)(a=>{r&&(xn(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:r,type:"AnnotationPage"})&&n(Ye.entityActions.removeReference({id:r,type:"AnnotationPage",key:"items",reference:{id:a,type:"Annotation"}})))},[r]);return[o,{addAnnotation:s,removeAnnotation:i}]}var bn=require("react/jsx-runtime"),Cn=(0,pe.createContext)(null);function Rn(){let e=(0,pe.useContext)(Cn);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function Pn({children:e}){let[t,{addAnnotation:n,removeAnnotation:r}]=An();return(0,bn.jsx)(Cn.Provider,{value:(0,pe.useMemo)(()=>({fullPage:t,addAnnotation:n,removeAnnotation:r}),[t]),children:e})}var ge=require("react/jsx-runtime");function In({width:e,style:t,height:n,error:r,resetErrorBoundary:o}){return(0,ge.jsxs)("div",{style:{width:e,height:n,minHeight:500,...t||{},background:"#f9f9f9"},children:[(0,ge.jsx)("h3",{children:"Error occurred"}),(0,ge.jsx)("p",{children:r.message}),(0,ge.jsx)("button",{onClick:o,children:"Reset"})]})}var Qe=require("react"),we=(0,Qe.createContext)(null);function wn(){return(0,Qe.useContext)(we)}var te=require("react"),xt=(0,te.createContext)(()=>{}),At=(0,te.createContext)(()=>{});function U(e,t,n,r,o=[]){let s=(0,te.useContext)(e==="portal"?At:xt);(0,te.useEffect)(()=>(e!=="none"&&s(t,n,r),()=>{s(t,null)}),[t,e,s,...o])}var he=require("react");var Tn=require("react");function w(e={},t=[]){let{id:n,selector:r}=e,o=O(),s=n||o.canvas,i=y(a=>s?a.iiif.entities.Canvas[s]:void 0,[s]);return(0,Tn.useMemo)(()=>{if(i)return r?r(i):i},[i,r,...t])}var Ct=(0,he.createContext)(()=>{});function Mn(e){let t=w(),n=(0,he.useContext)(Ct);(0,he.useEffect)(()=>t&&t.id?(n(t.id,e),()=>n(t.id,-1)):()=>{},[t,e])}var I=require("react/jsx-runtime");function Nn({children:e,errorFallback:t,outerContainerProps:n={},worldScale:r,...o}){let[s,i]=(0,M.useState)(),a=hn(),u=t||In,[c,l]=(0,M.useState)({}),d=Object.entries(c),[g,S]=(0,M.useState)({}),f=Object.entries(g),[p,R]=(0,M.useState)({}),x=(0,M.useMemo)(()=>r||Math.max(...Object.values(p)),[p]),W=(0,M.useMemo)(()=>({maxOverZoom:x||1,...o.runtimeOptions||{}}),[x,o.runtimeOptions]),N=(0,M.useCallback)((P,T)=>{R(z=>{if(T===-1){let{[P]:m,...q}=z;return q}return{...z,[P]:T}})},[]),ft=(0,M.useCallback)((P,T,z)=>{l(({[P]:m,...q})=>T?{...q,[P]:{element:T,props:z}}:q)},[]),Oe=(0,M.useCallback)((P,T,z)=>{S(({[P]:m,...q})=>T?{...q,[P]:{element:T,props:z}}:q)},[]);return(0,I.jsxs)(Vn.ErrorBoundary,{resetKeys:[],fallbackRender:P=>(0,I.jsx)(u,{...o,...P}),children:[(0,I.jsx)(Ge.AtlasAuto,{...o,containerProps:{style:{position:"relative"},...o.containerProps||{}},htmlChildren:(0,I.jsx)(I.Fragment,{children:d.map(([P,{element:T,props:z}])=>(0,I.jsx)(M.default.Fragment,{children:(0,I.jsx)(T,{...z||{}})},P))}),onCreated:P=>{i(P),o.onCreated&&o.onCreated(P)},runtimeOptions:W,children:(0,I.jsx)(we.Provider,{value:s,children:(0,I.jsx)(Ct.Provider,{value:N,children:(0,I.jsx)(xt.Provider,{value:ft,children:(0,I.jsx)(At.Provider,{value:Oe,children:(0,I.jsx)(vn,{bridge:a,children:(0,I.jsx)(Ge.ModeContext.Provider,{value:o.mode||"explore",children:(0,I.jsx)(Pn,{children:e})})})})})})})}),(0,I.jsx)("div",{children:f.map(([P,{element:T,props:z}])=>(0,I.jsx)(M.default.Fragment,{children:(0,I.jsx)(T,{...z||{}})},P))})]})}var Je=require("@atlas-viewer/atlas");var Rt=require("react"),kn=require("@iiif/helpers/events");function Ze(e,t){let n=h(),r=(0,Rt.useMemo)(()=>(0,kn.createEventsHelper)(n),[n]),o=y(()=>e&&e.id?n.getResourceMeta(e.id,"eventManager"):null,[e]);return(0,Rt.useMemo)(()=>e?r.getListenersAsProps(e,t):{},[o,e,n,t])}var En=require("react"),Ln=require("@iiif/helpers/styles");function ve(e,t){let n=h(),r=(0,En.useMemo)(()=>(0,Ln.createStylesHelper)(n),[n]);return y(()=>{if(!e)return null;let o=r.getAppliedStyles(e.id);return o?t?o[t]:o:void 0},[e,t])}var Fn=require("react");var zn=require("react");var On=require("@iiif/helpers/annotation-targets");function Ke(e={},t=[]){let{id:n,selector:r}=e,o=O(),s=h(),i=n||o.annotation,a=y(c=>i?c.iiif.entities.Annotation[i]:void 0,[i]),u=y(c=>a&&a.body?a.body.map(l=>l?l.type==="SpecificResource"?{...l,source:s.get(l)}:l?c.iiif.entities[l.type][l.id]:null:null).filter(Boolean):[],[a]);return(0,zn.useMemo)(()=>{if(!a)return;let c={...a,body:u,target:(0,On.expandTarget)(a.target,{typeMap:s.getState().iiif.mapping})};return r?r(c):c},[a,r,u,...t])}var Hn=require("react/jsx-runtime"),Xe=({id:e,style:t,className:n,interactive:r})=>{let o=Ke({id:e}),s=ve(o,"atlas"),i=ve(o,"html"),a=Ze(o,["atlas"]),u=w(),c=(0,Fn.useMemo)(()=>(0,Je.mergeStyles)(t,s),[t,s]);return u&&o&&o.target&&o.target.selector&&o.target.selector.type==="BoxSelector"&&o.target.source&&(o.target.source.id===u.id||o.target.source===u.id)?(0,Hn.jsx)(Je.RegionHighlight,{id:o.id,isEditing:!0,region:o.target.selector.spatial,style:c,className:i?.className||n,interactive:!!(i?.href||r),href:i?.href||null,title:i?.title||null,hrefTarget:i?.target||null,onClick:()=>{},...a}):null};var Bn=require("react");var Dn=require("react");function Un(e={},t=[]){let{id:n,selector:r}=e,o=O(),s=n||o.annotationPage,i=y(a=>s?a.iiif.entities.AnnotationPage[s]:void 0,[s]);return(0,Dn.useMemo)(()=>{if(i)return r?r(i):i},[i,...t])}var Pt=require("react/jsx-runtime"),Te=({className:e,page:t})=>{let n=Un({id:t.id})||t,r=ve(n,"atlas"),o=ve(n,"html");return y(s=>n.id?s.iiif.entities.AnnotationPage[n.id]:null,[]),(0,Pt.jsx)(Bn.Fragment,{children:n.items?.map(s=>(0,Pt.jsx)(Xe,{id:s.id,style:r,className:o?.className||e},s.id))})};var Sr=require("@iiif/helpers/styles");var Ve=require("react");var et=require("@atlas-viewer/atlas");var ne=ie(require("react"),1),G=require("react/jsx-runtime"),Br=ne.default.createContext("en");function qn(){return ne.default.useContext(Br)}function _n(e){return e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):e}function _r({as:e,language:t,children:n,viewingDirection:r,...o}){let s=qn();return(0,ne.useMemo)(()=>_n(s)===_n(t),[s,t])?e?(0,G.jsx)(e,{...o,children:n}):(0,G.jsx)("span",{...o,children:n}):e?(0,G.jsx)(e,{...o,lang:t,dir:r,children:n}):(0,G.jsx)("span",{...o,lang:t,dir:r,children:n})}function qr(e,t,n){if(t.length===0)return;if(t.length===1)return t[0];if(t.indexOf(e)!==-1)return e;let r=e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):null;if(r&&t.indexOf(r)!==-1)return r;for(let o of n)if(t.indexOf(o)!==-1)return o;return t.indexOf("none")!==-1?"none":t.indexOf("@none")!==-1?"@none":t[0]}var $r=(e,t=[])=>{let n=qn();return(0,ne.useMemo)(()=>{let r=e();return qr(n,r,[])},[n,...t])};function Wr(e,t,n=`
2
+ `){let r=$r(()=>Object.keys(e||{}),[e]);return[(0,ne.useMemo)(()=>{if(!e)return t||"";if(typeof e=="string")return e;let o=r?e[r]:void 0;return o?typeof o=="string"?o:o.join(n):""},[r,t,e]),r]}function Me({as:e,defaultText:t,enableDangerouslySetInnerHTML:n,children:r,separator:o,...s}){let[i,a]=Wr(r,t,o);return a?(0,G.jsx)(_r,{...s,as:e,language:a,title:n?void 0:i,dangerouslySetInnerHTML:n?{__html:i}:void 0,children:n?void 0:i}):e?(0,G.jsx)(e,{...s,children:i}):(0,G.jsx)("span",{...s,title:n?void 0:i,dangerouslySetInnerHTML:n?{__html:i}:void 0,children:n?void 0:i})}var B=require("react/jsx-runtime");function jr({resource:e,heading:t,note:n,extra:r}){return r?(0,B.jsx)(et.HTMLPortal,{target:{x:0,y:0,width:r.target?.spatial.width,height:r.target?.spatial.height},backgroundColor:"#333",relative:!0,children:(0,B.jsx)("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:(0,B.jsxs)("div",{children:[(0,B.jsx)(Me,{children:t||"Not authorised"}),n&&(0,B.jsx)("p",{children:(0,B.jsx)(Me,{children:n})}),(0,B.jsx)("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}function $n({image:e,thumbnail:t,crop:n,enableSizes:r}){return(0,B.jsx)(un,{resource:e.service,errorComponent:jr,extra:e,children:o=>{let s=o.width||e.width||0,i=o.height||e.height||0;return(0,B.jsx)(et.TileSet,{tiles:{id:o.id||o["@id"]||"unknown",height:i,width:s,imageService:o},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:n})}},e.id)}var re=require("react/jsx-runtime");function tt({id:e,image:t,thumbnail:n,isStatic:r,x:o=0,y:s=0,children:i,selector:a,onClick:u,enableSizes:c}){let l=(0,Ve.useMemo)(()=>{if(!(!a||a.spatial.x===0&&a.spatial.y===0))return a.spatial},[a]);return(0,re.jsx)("world-object",{x:o+t.target.spatial.x,y:s+t.target.spatial.y,width:t.target.spatial.width,height:t.target.spatial.height,onClick:u,children:t.service?(0,re.jsxs)(Ve.Fragment,{children:[(0,re.jsx)($n,{image:t,thumbnail:n,crop:l,enableSizes:c}),i]},"service"):(0,re.jsxs)(Ve.Fragment,{children:[(0,re.jsx)("world-image",{onClick:u,uri:t.id,target:{x:0,y:0,width:t.target.spatial.width,height:t.target.spatial.height},display:t.width&&t.height?{width:t.width,height:t.height}:void 0,crop:l}),i]},"no-service")},e+(t.service?"server":"no-service"))}var _=require("react"),xr=require("@atlas-viewer/atlas");var It=require("react");var Wn=require("@iiif/helpers");function nt(e,t){let{selector:n,source:r}=(0,Wn.expandTarget)(t);if(r.id!==e.id)return[null,r];let o={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}};return[n?n.type==="TemporalSelector"?{type:"TemporalBoxSelector",temporal:n.temporal,spatial:o.spatial}:n:null,r]}var jn={makeChoice:()=>{}},rt={type:"unknown"},A=e=>({type:"unknown",reason:e,annotations:{pages:[]}}),Yn=(e,t)=>({type:"empty",width:e,height:t,annotations:{pages:[]},image:null,images:[]});var Ne=require("react");function Yr(e,t){let n=e?.iiif?.meta[t];return n?n.annotationPageManager:null}function Qn(e,t){return y(n=>{let r=[];if(!e)return r;let o=Object.keys(n.iiif.entities.AnnotationPage);for(let s of o)if(!t||t.indexOf(s)!==-1){let i=Yr(n,s);i&&i.views&&i.views[e]&&r.push(s)}return r},[e,t])}function Gn({canvas:e,manifest:t,all:n,canvases:r}){let o=[];if(t)for(let s of t.annotations)o.indexOf(s.id)===-1&&o.push(s.id);if(n){if(r&&r.length)for(let s of r)for(let i of s.annotations)o.indexOf(i.id)===-1&&o.push(i.id)}else if(e)for(let s of e.annotations)o.indexOf(s.id)===-1&&o.push(s.id);return o}function Qr(e,t){let n=e?.iiif?.meta[t];return n?n.annotationPageManager:null}function Zn(e,t={}){let n=h(),r=k(),o=w(),s=_e(),i=(0,Ne.useMemo)(()=>Gn({all:t.all,manifest:r,canvas:o,canvases:s}),[t.all,o,s,r]),a=Qn(e,t.all?void 0:i),u=(0,Ne.useCallback)(l=>{e&&n.setMetaValue([l,"annotationPageManager","views"],d=>d&&!d[e]?d:{...d||{},[e]:!1})},[e,n]),c=(0,Ne.useCallback)((l,d={})=>{if(!e)return;let g=n.getState(),S=[];if(d?.deselectOthers){let f=Object.keys(g.iiif.entities.AnnotationPage);for(let p of f){let R=Qr(g,p);R&&R.views&&R.views[e]&&S.push(p)}}for(let f of S)u(f);n.setMetaValue([l,"annotationPageManager","views"],f=>f&&f[e]?f:{...f||{},[e]:!0})},[e,u,n]);return{availablePageIds:i,enabledPageIds:a,setPageEnabled:c,setPageDisabled:u}}function Kn(e,t){return y((n,r)=>r.get(e.map(o=>({id:o,type:t}))),[e,t])}var Z=require("react");var ot=ie(require("react"),1),Jn=require("@atlas-viewer/iiif-image-api"),Gr=ot.default.createContext(new Jn.ImageServiceLoader);function it(){return(0,ot.useContext)(Gr)}function Xn(){let e=it(),[t,n]=(0,Z.useState)({}),r=(0,Z.useRef)(!1);return(0,Z.useEffect)(()=>()=>{r.current=!0},[]),[(0,Z.useCallback)((s,{height:i,width:a})=>{if(s){let u=s.id||s["@id"],c=e.loadServiceSync({id:u,width:s.width||a,height:s.height||i,source:s});c?s=c:t[u]||(r.current||n(l=>({...l,[u]:"loading"})),e.loadService({id:u,width:s.width||a,height:s.height||i}).then(()=>{r.current||n(l=>({...l,[u]:"done"}))}))}return s},[e,t]),t]}var oe=require("react");function er(e={}){let t=Ke(),n=w(e.canvasId?{id:e.canvasId}:void 0);return y((r,o)=>{if(!n)return[];if(t&&e.enableSingleAnnotation)return[t];let s=o.get(n.items),i=[];for(let a of s)i.push(...o.get(a.items));return i},[n])}var tr=require("@iiif/helpers/painting-annotations");function nr(e,t=[]){let n=h(),r=(0,oe.useMemo)(()=>(0,tr.createPaintingAnnotationsHelper)(n),[]),o=er({enableSingleAnnotation:e?.enableSingleAnnotation}),[s,i]=(0,oe.useState)(e?.defaultChoices||[]),a=(0,oe.useMemo)(()=>r.getPaintables(o,s),[n,o,s,...t]),c={makeChoice:(0,oe.useCallback)((l,{deselectOthers:d=!0,deselect:g=!1}={})=>{if(a.choice){if(a.choice.type!=="single-choice")throw new Error("Complex choice not supported yet");i(S=>{if(g){let p=S.filter(R=>R!==l);if(p.length===0){let R=a.items[0].resource.id;return R?[R]:[]}return p}if(d)return[l];let f=[...S];if(f.length===0&&a.items.length){let p=a.items[0].resource.id;p&&f.push(p)}return S.indexOf(l)!==-1?S:[...S,l]})}},[a.choice])};return[a,c]}var Zr=["model/gltf-binary"];function rr(e,t){let r=t.items[0].resource;return r.format?Zr.indexOf(r.format)===-1?A(`3D format: ${r.format} is unsupported`):{type:"3d-model",model:r}:A("Unknown format")}function or(e,t){if(!e.duration)return A("No duration on canvas");if(t.items.length>1)return A("Only one audio source supported");let n=t.items[0]?.resource;return n?n.format?{type:"media",media:{annotationId:t.items[0].annotationId,duration:e.duration,url:n.id,type:"Sound",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:n.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},annotations:{pages:[]}}:A("Audio does not have format"):A("Unknown audio")}var ir=require("@atlas-viewer/iiif-image-api");var bt=require("@iiif/helpers/annotation-targets");function ar(e,t,n){let r=[];for(let o of t.items){let s=o.resource&&o.resource.type==="SpecificResource"?o.resource.source:o.resource;if(!s.id)return A("No resource Identifier");let i;if(s.service){let f=(0,ir.getImageServices)(s);f[0]&&(i=n(f[0],e))}let a={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}},[u,c]=nt(e,o.target);if(!(c.id===e.id||decodeURIComponent(c.id||"")===(e.id||"")))continue;let l=o.resource.width&&o.resource.height?{type:"BoxSelector",spatial:{x:0,y:0,width:o.resource.width,height:o.resource.height}}:void 0,d=o.resource.type==="SpecificResource"?(0,bt.expandTarget)(o.resource):null;if(o.selector){let f=(0,bt.expandTarget)({type:"SpecificResource",source:o.resource,selector:o.selector});f&&(d=f)}let g=d&&d.selector&&(d.selector.type==="BoxSelector"||d.selector.type==="TemporalBoxSelector")?{type:"BoxSelector",spatial:{x:d.selector.spatial.x,y:d.selector.spatial.y,width:d.selector.spatial.width,height:d.selector.spatial.height}}:void 0;i&&!i.id&&(i.id=i["@id"]);let S={id:s.id,type:"Image",annotationId:o.annotationId,width:Number(u||g?s.width:e.width),height:Number(u||g?s.height:e.height),service:i,sizes:i&&i.sizes?i.sizes:s.width&&s.height?[{width:s.width,height:s.height}]:[],target:u&&u.type!=="PointSelector"?u:a,selector:g};r.push(S)}return{type:"images",image:r[0],images:r,choice:t.choice}}function sr(e,t={},n){let r=e.language||n||"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(o=>sr(o,t,r))}return t}function ur(e,t){let n=[];return t.items.forEach(r=>{if(r.resource){let[o]=nt(e,r.target);n.push({annotationId:r.annotationId,text:sr(r.resource),target:o})}}),{type:"textual-content",items:n}}var Kr=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function cr(e,t){let n=t.items.filter(a=>a.type==="video"),r=!1;if(e.duration||(r=!0),n.length>1)return A("Only one video source supported");let o=n[0]?.resource,s=!!(o.service||[]).find(a=>(a.profile||"").includes("youtube.com"));if(!s&&r)return A("Video does not have duration");if(!o)return A("Unknown video");if((!o.format||o.format==="text/html")&&!s)return A("Video does not have format");let i={annotationId:t.items[0].annotationId,duration:e.duration,url:o.id,type:"Video",items:[],target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:o.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}};if(s){i.type="VideoYouTube";let a=o.id.match(Kr);if(!a[1])return A("Video is not known youtube video");i.youTubeId=a[1]}return{type:"media",media:i,annotations:{pages:[]}}}function lr({canvas:e,paintables:t,supports:n,loadImageService:r}){if(!e)return console.log("No canvas"),rt;if(t.types.length===0)return n.indexOf("empty")!==-1?Yn(e.width,e.height):(console.log("No paintables"),rt);if(t.types.length!==1)if(t.types.length===2&&t.types.indexOf("text")!==-1)t.types=t.types.filter(s=>s!=="text");else return n.indexOf("complex-timeline")===-1?A("Complex timeline not supported"):A("ComplexTimelineStrategy not yet supported");let o=t.types[0];return o==="image"?n.indexOf("images")===-1?A("Image not supported"):ar(e,t,r):o==="Model"||o==="model"?n.indexOf("3d-model")===-1?A("3D not supported"):rr(e,t):o==="textualbody"?n.indexOf("textual-content")===-1?A("Textual content not supported"):ur(e,t):o==="sound"||o==="audio"?n.indexOf("media")===-1?A("Media not supported"):or(e,t):o==="video"?n.indexOf("media")===-1?A("Media not supported"):cr(e,t):rt}function dr(e){let t=k(),n=w(),r=h(),[o,s]=Xn(),{enabledPageIds:i}=Zn(e?.annotationPageManagerId||t?.id||n?.id,{all:!1}),a=Kn(i,"AnnotationPage"),u=e?.strategies||["empty","images","media","textual-content","complex-timeline"],[c,l]=nr(e,[s]),d=(0,It.useMemo)(()=>lr({canvas:n,paintables:c,supports:u,loadImageService:o}),[n,c,r,l.makeChoice]);return(0,It.useMemo)(()=>d.type==="unknown"?[d,jn]:[{...d,annotations:{pages:a}},l],[d,a])}var K=require("react");var mr=require("react"),fr=(e,t=[])=>{let n=h();(0,mr.useEffect)(()=>{e(n)},[n,...t])};var pr=require("@iiif/helpers/thumbnail");function gr(e,t,{canvasId:n,manifestId:r}={}){let o=h(),s=it(),i=(0,K.useMemo)(()=>(0,pr.createThumbnailHelper)(o,{imageServiceLoader:s}),[o,s]),[a,u]=(0,K.useState)(),c=k(r?{id:r}:void 0),l=w(n?{id:n}:void 0),d=l||c,g=(0,K.useRef)(!1);if((0,K.useEffect)(()=>(g.current=!1,()=>{g.current=!0}),[]),!d)throw new Error("Must be called under a manifest or canvas context.");return fr(S=>{i.getBestThumbnailAtSize(d,e,t).then(f=>{f.best&&!g.current&&u(f.best)})},[d]),a}var b=require("react");function Jr(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function Xr(e,t){switch(t.type){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 eo(e){let t=Math.round(e);return`${Math.floor(t/60)}:${`${t%60}`.padStart(2,"0")}`}function ye(e){let[t,n]=(0,b.useReducer)(Xr,Jr(e.duration)),r=(0,b.useRef)(null),o=(0,b.useRef)(null),s=(0,b.useRef)(null),i=(0,b.useRef)(!1),a=(0,b.useCallback)(()=>{o.current&&r.current&&(o.current.innerHTML=eo(r.current.currentTime),s.current&&(s.current.style.width=`${r.current.currentTime/e.duration*100}%`),i.current!==r.current.muted&&(i.current=r.current.muted,n(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"})))},[e.duration]),u=(0,b.useCallback)(()=>{r.current&&(n({type:"PLAY_REQUESTED"}),r.current.play().then(()=>{n({type:"PLAY"})}),a())},[a]),c=(0,b.useCallback)(()=>{r.current&&(r.current.duration>0&&r.current.paused?u():l())},[a]),l=(0,b.useCallback)(()=>{r.current&&(r.current.pause(),n({type:"PAUSE"}),a())},[a]),d=(0,b.useCallback)(()=>{r.current&&(r.current.muted=!r.current.muted,n(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),g=(0,b.useCallback)(()=>{r.current&&(r.current.muted=!0,n({type:"MUTE"}))},[]),S=(0,b.useCallback)(()=>{r.current&&(r.current.muted=!1,n({type:"UNMUTE"}))},[]),f=(0,b.useCallback)(x=>{r.current&&(r.current.muted=!1,r.current.volume=x/100,n({type:"SET_VOLUME",volume:x}))},[]),p=(0,b.useCallback)(x=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(x*e.duration,e.duration)),a())},[]),R=(0,b.useCallback)(x=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(x,e.duration)),a())},[]);return(0,b.useEffect)(()=>{let x=setInterval(()=>{a()},350);return()=>clearInterval(x)},[a,e.duration]),(0,b.useEffect)(()=>{let x=()=>{n({type:"FINISHED"})},W=r.current;return W?.addEventListener("ended",x),()=>W?.removeEventListener("ended",x)},[]),[{element:r,currentTime:o,progress:s},t,{play:u,pause:l,playPause:c,mute:g,unmute:S,toggleMute:d,setVolume:f,setDurationPercent:p,setTime:R}]}var ke=require("react"),at=require("react/jsx-runtime"),to=(0,ke.createContext)(null),no=(0,ke.createContext)(null),ro=(0,ke.createContext)(null);function st({actions:e,state:t,children:n,currentTime:r,progress:o,element:s}){return(0,at.jsx)(ro.Provider,{value:{currentTime:r,progress:o,element:s},children:(0,at.jsx)(no.Provider,{value:e,children:(0,at.jsx)(to.Provider,{value:t,children:n})})})}var ct=require("react/jsx-runtime");function wt({media:e,children:t}){let[{element:n,currentTime:r,progress:o},s,i]=ye({duration:e.duration});return(0,ct.jsxs)(st,{state:s,actions:i,currentTime:r,progress:o,element:n,children:[(0,ct.jsx)("audio",{ref:n,src:e.url}),t]})}function ut({media:e,mediaControlsDeps:t,children:n}){return U("portal","audio",wt,{media:e,children:n},[e,...t||[]]),null}var Ee=require("react/jsx-runtime");function Tt({element:e,media:t,playPause:n}){return(0,Ee.jsxs)("div",{className:"video-container",part:"video-container",onClick:n,children:[(0,Ee.jsx)("style",{children:`
3
+ .video-container {
4
+ position: absolute;
5
+ top: 0;
6
+ bottom: 0;
7
+ left: 0;
8
+ right: 0;
9
+ background: #000;
10
+ z-index: 13;
11
+ display: flex;
12
+ justify-content: center;
13
+ pointer-events: visible;
14
+ }
15
+ `}),(0,Ee.jsx)("video",{ref:e,src:t.url,style:{width:"100%",objectFit:"contain"}})]})}function lt({media:e,mediaControlsDeps:t,children:n}){let[{element:r,currentTime:o,progress:s},i,a]=ye({duration:e.duration});return U("overlay","video-element",Tt,{element:r,media:e,playPause:a.playPause}),U("portal","custom-controls",st,{state:i,actions:a,currentTime:o,progress:s,element:r,children:n},[o,i,e,...t||[]]),null}var J=require("react/jsx-runtime");function Mt({model:e}){return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)("style",{children:`
16
+ .model-container {
17
+ position: absolute;
18
+ top: 0;
19
+ bottom: 0;
20
+ left: 0;
21
+ right: 0;
22
+ background: #000;
23
+ z-index: 13;
24
+ display: flex;
25
+ justify-content: center;
26
+ pointer-events: visible;
27
+ }
28
+ `}),(0,J.jsx)("div",{className:"model-container",children:(0,J.jsx)("model-viewer",{"interaction-prompt":"none",style:{width:"100%",height:"100%"},"camera-controls":"","ar-status":"not-presenting",src:e.id})})]})}function dt({model:e,name:t}){return U("overlay",`model-${t}`,Mt,{model:e},[e]),null}var hr=require("react/jsx-runtime");function mt({style:e}){let t=w();return!t||!t.height||!t.width?null:(0,hr.jsx)("box",{interactive:!1,target:{x:0,y:0,width:Number(t.width),height:Number(t.height)},style:e})}var vr=require("react"),Le=require("react/jsx-runtime");function oo({element:e,media:t,playPause:n}){let r=(0,vr.useRef)(null);return t.youTubeId?(0,Le.jsxs)("div",{className:"video-container",part:"video-container",onClick:n,children:[(0,Le.jsx)("style",{children:`
29
+ .video-container {
30
+ position: absolute;
31
+ top: 0;
32
+ bottom: 0;
33
+ left: 0;
34
+ right: 0;
35
+ background: #000;
36
+ z-index: 13;
37
+ display: flex;
38
+ justify-content: center;
39
+ pointer-events: visible;
40
+ }
41
+ .video-yt {
42
+ border: none;
43
+ width: 100%;
44
+ object-fit: contain;
45
+ }
46
+ `}),(0,Le.jsx)("iframe",{className:"video-yt",ref:r,src:`https://www.youtube.com/embed/${t.youTubeId}?enablejsapi=1&origin=${window.location.host}`,referrerPolicy:"no-referrer",sandbox:"allow-scripts allow-same-origin allow-presentation"})]}):null}function yr({media:e,mediaControlsDeps:t,children:n}){let[{element:r,currentTime:o,progress:s},i,a]=ye({duration:e.duration});return U("overlay","video-element",oo,{element:r,media:e,playPause:a.playPause}),null}var v=require("react/jsx-runtime");function Vt({x:e,y:t,onChoiceChange:n,registerActions:r,defaultChoices:o,isStatic:s,renderViewerControls:i,renderMediaControls:a,viewControlsDeps:u,mediaControlsDeps:c,strategies:l,throwOnUnknown:d,backgroundStyle:g,alwaysShowBackground:S,keepCanvasScale:f=!1,enableSizes:p=!1,enableYouTube:R=!0,onClickPaintingAnnotation:x,children:W}){let N=w(),ft=Ze(N,["deep-zoom"]),[Oe]=Rn(),P=wn(),T=h(),z=(0,_.useMemo)(()=>(0,Sr.createStylesHelper)(T),[T]),[m,q]=dr({strategies:l||["images"],defaultChoices:o?.map(({id:C})=>C)}),Nt=m.type==="images"?m.choice:void 0,Ar=(0,_.useMemo)(()=>f?1:Math.max(1,...m.type==="images"?m.images.map(C=>(C.width||0)/C.target?.spatial.width):[]),[f,m]);Mn(Ar),(0,_.useEffect)(()=>{r&&r(q)},[m.annotations]),(0,_.useEffect)(()=>{if(o)for(let C of o)typeof C.opacity<"u"&&z.applyStyles({id:C.id},"atlas",{opacity:C.opacity})},[o]),(0,_.useLayoutEffect)(()=>{n&&n(Nt)},[Nt]),U(P&&(m.type==="images"||m.type==="empty"||m.type==="textual-content"&&i)?"overlay":"none",`canvas-portal-controls-${N?.id}`,we.Provider,i?{value:P||null,children:i(m)}:{},[N,P,m,...u||[]]);let j=gr({maxWidth:256,maxHeight:256});if(!N)return null;let kt=N.accompanyingCanvas,Se=j&&j.type==="fixed"?(0,v.jsx)("world-object",{height:N.height,width:N.width,x:e,y:t,children:(0,v.jsx)("world-image",{uri:j.id,target:{x:0,y:0,width:N.width,height:N.height},display:j.width&&j.height?{width:j.width,height:j.height}:void 0,crop:void 0})}):null;if(m.type==="unknown"){if(Se)return Se;if(d)throw new Error(m.reason||"Unknown image strategy");return null}let Et=(0,v.jsxs)(_.Fragment,{children:[Oe?(0,v.jsx)(Te,{page:Oe}):null,m.annotations&&m.annotations.pages?m.annotations.pages.map(C=>(0,v.jsx)(Te,{page:C},C.id)):null,W]}),Cr=m.type==="images"?m.images.length:0;return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)("world-object",{height:N.height,width:N.width,x:e,y:t,...ft,children:[m.type==="empty"||S?(0,v.jsx)(mt,{style:g}):null,m.type==="textual-content"?m.items.map((C,Fe)=>(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(xr.HTMLPortal,{onClick:x?xe=>{xe.stopPropagation(),x(C.annotationId,C,xe)}:void 0,target:C.target?.spatial||void 0,children:(0,v.jsx)("div",{"data-textual-content":!0,children:(0,v.jsx)(Me,{enableDangerouslySetInnerHTML:!0,children:C.text})})},Fe),Et]})):null,m.type==="images"?(0,v.jsxs)(v.Fragment,{children:[m.images.map((C,Fe)=>(0,v.jsx)(tt,{isStatic:s,image:C,id:C.id,thumbnail:Fe===0?j:void 0,selector:C.selector,enableSizes:p,onClick:x?xe=>{xe.stopPropagation(),x(C.annotationId,C,xe)}:void 0},C.id+Fe)),Et]}):null,m.type==="3d-model"?(0,v.jsx)(dt,{model:m.model}):null,m.type==="media"?(0,v.jsx)(v.Fragment,{children:m.media.type==="Sound"?(0,v.jsxs)(ut,{media:m.media,mediaControlsDeps:c,children:[Se,a?a(m):null]}):m.media.type==="Video"?(0,v.jsxs)(lt,{media:m.media,mediaControlsDeps:c,children:[Se,a?a(m):null]}):m.media.type==="VideoYouTube"&&R?(0,v.jsxs)(yr,{media:m.media,mediaControlsDeps:c,children:[Se,a?a(m):null]}):null}):null]},`${N.id}/${m.type}/${Cr}`),m.type==="media"&&m.media.type==="Sound"&&kt?(0,v.jsx)(ce,{canvas:kt.id,children:(0,v.jsx)(Vt,{renderViewerControls:i})}):null]})}var L=require("react/jsx-runtime"),io=(0,ze.forwardRef)(function(t,n){let r=k(),o=_e(),s=gn(),{ViewerControls:i,MediaControls:a}=t.components||{};if((0,ze.useImperativeHandle)(n,()=>s,[s]),!r)return(0,L.jsx)("div",{});let u=0;return(0,L.jsxs)(L.Fragment,{children:[t.header,(0,L.jsx)(V.Viewer,{height:t.height,mode:t.mode,children:o.map((c,l)=>{let d=u;return u+=c.width+(t.spacing||0),(0,L.jsx)(ce,{canvas:c.id,children:(0,L.jsx)(V.RenderCanvas,{strategies:["3d-model","media","images","empty","textual-content"],renderViewerControls:l===0&&i?()=>(0,L.jsx)(i,{}):void 0,renderMediaControls:l===0&&a?()=>(0,L.jsx)(a,{}):void 0,x:d,...t.canvasProps||{},children:t.annotations},c.id)},c.id)})},t.reuseAtlas?"":s.currentSequenceIndex),t.children]})}),V=(0,ze.forwardRef)(function({children:t,height:n,annotations:r,canvasProps:o,spacing:s,header:i,components:a,mode:u,reuseAtlas:c,...l},d){let g=ue();return(0,L.jsx)(se,{vault:g,children:(0,L.jsx)(pn,{...l,children:(0,L.jsx)(io,{ref:d,height:n,components:a,spacing:s,canvasProps:o,annotations:r,header:i,mode:u,reuseAtlas:c,children:t})})})});V.RenderImage=tt;V.RenderCanvas=Vt;V.RenderAnnotationPage=Te;V.RenderAnnotation=Xe;V.Viewer=Nn;V.CanvasBackground=mt;V.Audio=ut;V.Video=lt;V.Model=dt;V.AudioHTML=wt;V.VideoHTML=Tt;V.ModelHTML=Mt;
@@ -0,0 +1,11 @@
1
+ import 'react';
2
+ export { C as CanvasPanel } from './index-BZirmhnp.cjs';
3
+ import '@atlas-viewer/atlas';
4
+ import 'react/jsx-runtime';
5
+ import '@iiif/presentation-3';
6
+ import '@iiif/presentation-3-normalized';
7
+ import './useRenderingStrategy-Xj9yQm4y.cjs';
8
+ import '@iiif/helpers';
9
+ import '@iiif/helpers/annotation-targets';
10
+ import '@atlas-viewer/iiif-image-api';
11
+ import '@iiif/helpers/vault';
@@ -0,0 +1,11 @@
1
+ import 'react';
2
+ export { C as CanvasPanel } from './index-Cxs6aAuK.js';
3
+ import '@atlas-viewer/atlas';
4
+ import 'react/jsx-runtime';
5
+ import '@iiif/presentation-3';
6
+ import '@iiif/presentation-3-normalized';
7
+ import './useRenderingStrategy-Xj9yQm4y.js';
8
+ import '@iiif/helpers';
9
+ import '@iiif/helpers/annotation-targets';
10
+ import '@atlas-viewer/iiif-image-api';
11
+ import '@iiif/helpers/vault';
@@ -0,0 +1 @@
1
+ import{Ja as a}from"./chunk-HEVA2EDS.js";import"./chunk-YSH2CIKG.js";export{a as CanvasPanel};
@@ -0,0 +1,47 @@
1
+ import{c as ct,k as lt}from"./chunk-YSH2CIKG.js";import{forwardRef as Nn,useImperativeHandle as Wo}from"react";import Gt,{useCallback as We,useMemo as Zt,useState as xe}from"react";import{AtlasAuto as Ur,ModeContext as _r}from"@atlas-viewer/atlas";import{ErrorBoundary as qr}from"react-error-boundary";import{useContext as te}from"react";import Ln,{useContext as zn,useMemo as On}from"react";import{jsx as Hn}from"react/jsx-runtime";var Fn={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},ye=Ln.createContext(Fn),k=()=>zn(ye);function U({value:e,children:n}){let t=k(),r=On(()=>({...t,...e}),[e,t]);return Hn(ye.Provider,{value:r,children:n})}import Dn,{useState as Un}from"react";import{Vault as dt,globalVault as _n}from"@iiif/helpers/vault";import{jsx as ft}from"react/jsx-runtime";var $=Dn.createContext({vault:null,setVaultInstance:e=>{}});function Q({vault:e,vaultOptions:n,useGlobal:t,resources:r,children:o}){let[s,i]=Un(()=>e||(t?_n(n):n?new dt(n):new dt));return ft($.Provider,{value:{vault:s,setVaultInstance:i},children:ft(U,{value:r||{},children:o})})}import{useContext as Sr}from"react";import{createContext as Ar,useMemo as xr}from"react";import{globalVault as qn}from"@iiif/helpers/vault";import{useContext as Bn}from"react";function W(e){let n=Bn($);return e||(n&&n.vault?n.vault:qn())}import{useEffect as $n,useMemo as jn,useState as ze}from"react";function mt(e,{noCache:n=!1}={}){let t=typeof e=="string"?e:e.id,r=W(),[o,s]=ze(t),[i,a]=ze(void 0),u=jn(()=>r.get(t,{skipSelfReturn:!0})||void 0,[t,r]),[c,l]=ze(u);return $n(()=>{(async()=>{try{let f=u&&!n?u:await r.load(t),d=f?f.id||f["@id"]:null;f&&o!==d&&s(d),l(f)}catch(f){a(f)}})()},[t,n]),{isLoaded:!!c,id:o,requestId:t,error:i,resource:c,cached:!!(c&&c===u)}}function pt(e,n){let{id:t,isLoaded:r,error:o,resource:s,requestId:i,cached:a}=mt(e,n);return{id:t,isLoaded:r,error:o,manifest:s,requestId:i,cached:a}}import{jsx as Yn}from"react/jsx-runtime";function gt({manifest:e,children:n}){return Yn(U,{value:{manifest:e},children:n})}import{jsx as Qn}from"react/jsx-runtime";function G({canvas:e,children:n}){return Qn(U,{value:{canvas:e},children:n})}import{useContext as Kn}from"react";import Jn from"react";import{useContext as Wn}from"react";var y=()=>{let{vault:e}=Wn($);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};import{useEffect as Gn,useState as Zn}from"react";function S(e,n=[]){let t=y(),[r,o]=Zn(()=>e(t.getState(),t));return Gn(()=>t.subscribe(s=>e(s,t),s=>{o(s)},!1),n),r}var Z=Jn.createContext([]);function Se(){let e=Kn(Z);return S(n=>e.map(t=>n.iiif.entities.Canvas[t]).filter(Boolean),[e])}import{useMemo as Xn}from"react";function w(e={},n=[]){let{id:t,selector:r}=e,o=k(),s=y(),i=t||o.manifest,a=S(u=>i?u.iiif.entities.Manifest[i]:void 0,[i]);return Xn(()=>{if(a)return r?r(a):a},[a,r,...n])}import{jsx as er}from"react/jsx-runtime";function ht({range:e,children:n}){return er(U,{value:{range:e},children:n})}function tr(e,n){for(let t of n.items){if(t.type==="Canvas")return t;if(t.type==="SpecificResource")return t.source;if(t.type==="Range"){let r=tr(e,e.get(t));if(r)return r}}return null}function Oe(e,n){let t=[];for(let r of n.items)if(r.type==="SpecificResource"&&r.source?.type==="Canvas"&&(r.source.id.indexOf("#")!==-1?t.push({id:r.source.id.split("#")[0],type:"Canvas"}):t.push(r.source)),r.type==="Range"&&t.push(...Oe(e,e.get(r))),r.type==="SpecificResource"){let o=typeof r.source=="string"?r.source:r.source.id;t.push({id:o,type:"Canvas"})}return t}function Yi(e,n,t){for(let r of n.structures){let o=vt(e,e.get(r),t);if(o)return o}return null}function vt(e,n,t){for(let r of n.items){let o=r?.source?.id?.split("#")[0];if(r.type==="SpecificResource"&&r.source===t||r.type==="SpecificResource"&&r.source?.type==="Canvas"&&t===o)return n;if(r.type==="Range"){let s=vt(e,e.get(r),t);if(s)return s}}return null}function Gi(e,n,t,r=!1){let o=n.behavior,s=t?e.get(t):null;if(!s)return[];let i=s.behavior,a=r?!1:o.includes("paged"),u=a?!1:o.includes("continuous"),c=a||u?!1:o.includes("individuals"),l=i.includes("facing-pages"),f=i.includes("non-paged");if(l||f||c||r)return[{id:s.id,type:"Canvas"}];let[d,v]=Fe(e,n);if(u)return d;let m=d.findIndex(p=>p.id===t);if(m===-1)return[];for(let p of v)if(p.includes(m))return p.map(g=>d[g]);return[{id:s.id,type:"Canvas"}]}function Fe(e,n,{disablePaging:t,skipNonPaged:r}={}){let o=n.behavior,s=o.includes("paged"),i=s?!1:o.includes("continuous"),a=s||i?!1:o.includes("individuals"),u=n.type==="Manifest"?n.items:Oe(e,n);if(i)return[u,[u.map((m,p)=>p)]];if(a||!s||t)return[u,u.map((m,p)=>[p])];let c=[],l=[],f=()=>{l.length&&(c.push([...l]),l=[])},d=0,v=!1;for(let m=0;m<u.length;m++){let p=e.get(u[m]);if(p.behavior.includes("non-paged")){m===d&&d++,r||(f(),c.push([m]),f());continue}if(m===d||p.behavior.includes("facing-pages")){l.length&&(v=!0),f(),c.push([m]),f();continue}if(l.push(m),v){f(),v=!1;continue}l.length>1&&f()}return l.length&&f(),[u,c]}import{useCallback as Ae,useMemo as rr,useRef as or,useState as ir}from"react";import{useMemo as nr}from"react";function yt(e={},n=[]){let{id:t,selector:r}=e,o=k(),s=t||o.range,i=S(a=>s?a.iiif.entities.Range[s]:void 0,[s]);return nr(()=>{if(i)return r?r(i):i},[i,r,...n])}function St({startCanvas:e,disablePaging:n}){let t=y(),r=w(),o=yt(),[s,i]=ir(void 0),a=o||r;if(!a)throw new Error("Nothing selected");let[u,c]=rr(()=>Fe(t,a,{disablePaging:n}),[t,a,n]),l=or(c);if(l.current!==c){let g=l.current[s][0],A=c.findIndex(H=>H.includes(g));l.current=c,i(A)}let f=Ae(p=>{let g=c.findIndex(A=>A.includes(p));i(g===-1?0:g)},[u,c]),d=Ae(p=>{let g=u.findIndex(A=>A.id===p);g!==-1?f(g):i(0)},[u,c]),v=Ae(()=>{i(p=>p>=c.length-1?p:p+1)},[c]),m=Ae(()=>{i(p=>p<=0?0:p-1)},[c]);return typeof s>"u"&&(e?d(e):i(0)),{visibleItems:c[s]?.map(p=>u[p].id)||[],cursor:s,items:u,sequence:c,hasPrevious:s>0,hasNext:s<c.length-1,setSequenceIndex:i,setCanvasIndex:f,setCanvasId:d,next:v,previous:m}}import{createContext as Ue,useContext as J,useEffect as sr,useMemo as De,useReducer as ur}from"react";import{useEffect as Rt,useMemo as It}from"react";import{createStore as At}from"zustand/vanilla";function ua(e){let n=e.service||e.services||[];for(let t of n)if(t.type==="AuthProbeService2")return!0;return!1}function E(e,n,t){let r=n.findIndex(i=>i.service.id===e);if(r===-1)return n;let o=[...n],s=t(o[r]);return s===o[r]?n:(o[r]=s,o)}var xt=()=>At((e,n)=>({currentAuth:-1,authItems:[],login:()=>{let t=n().authItems[n().currentAuth];if(!t||t.isPending||t.isLoggedIn)return;if(t.type!=="active")throw new Error("Cannot login to non-active service");let r=t.service.service.find(o=>o.type==="AuthAccessTokenService2");if(!r)throw new Error("Token service not found");e(()=>({authItems:E(t.id,n().authItems,o=>({...o,isPending:!0}))})),ae(t.service).then(()=>{j(r).then(o=>{let s=o.expiresIn,i=Date.now()+s*1e3;e(()=>({authItems:E(t.id,n().authItems,a=>({...a,isLoggedIn:!0,isPending:!1,session:{token:o.accessToken,expires:i}}))}))}).catch(o=>{e(()=>({authItems:E(t.id,n().authItems,s=>({...s,isLoggedIn:!1,isPending:!1,error:o.message}))}))})})},logout:()=>{let t=n().authItems[n().currentAuth];if(!t||t.isPending||!t.isLoggedIn)return;if(t.type!=="active")throw new Error("Cannot logout of non-active service");let r=t.service.service.find(i=>i.type==="AuthLogoutService2");if(!r)return;let o=`${r.id}?origin=${Pt()}`,s=window.open(o);e(()=>({authItems:E(t.id,n().authItems,i=>({...i,isLoggedIn:!1,session:null,isPending:!1}))}))},nextAuth:()=>{let t=n().authItems.length,r=n().currentAuth+1;r>=t||e(()=>({currentAuth:r}))},previousAuth:()=>{let t=n().currentAuth-1;t<0||e(()=>({currentAuth:t}))},setAuth:t=>{t!==-1&&(t<0||t>=n().authItems.length)||e(()=>({currentAuth:t}))},addService:(t,r)=>{if(!t.service)return;let o=t.service.find(a=>a.type==="AuthAccessTokenService2"),s=t;if(n().authItems.find(a=>a.service.id===t.id)){e(()=>({authItems:E(t.id,n().authItems,a=>({...a,instances:a.instances+1}))}));return}if(e(()=>({currentAuth:s.profile==="active"?0:n().currentAuth,authItems:[{id:t.id,type:t.profile,service:t,probeId:r,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...n().authItems]})),t.profile==="external"){if(!o)throw new Error("Token service not found");j(o).then(a=>{e(()=>({authItems:E(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:E(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:a.message}))}))})}if(t.profile==="kiosk"){if(!o)throw new Error("Token service not found");e(()=>({authItems:E(t.id,n().authItems,a=>({...a,isPending:!0}))})),ae(s).then(()=>{j(o).then(a=>{e(()=>({authItems:E(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:a.accessToken,expires:a.expiresIn}}))}))}).catch(a=>{e(()=>({authItems:E(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,error:a.message}))}))})})}t.profile},removeService:(t,r)=>{let o=n().currentAuth===n().authItems.findIndex(i=>i.service.id===t.id),s=n().currentAuth;if(o){let i=n().authItems.find(u=>u.service.id===t.id);i&&i.instances>1||(s=n().authItems.findIndex(c=>c.service.id!==t.id&&c.instances>0))}e(()=>({authItems:E(t.id,n().authItems,i=>({...i,instances:i.instances-1})),currentAuth:s}))}})),Ct=(e,n)=>At((t,r)=>({service:e,status:e?"unknown":"success",shouldRedirect:!1,redirectResource:null,shouldSubstitute:!1,substituteResource:null,error:null,errorHeading:null,errorNote:null,shouldDisplayResource:!1,token:n||null,async probe(){if(!r().service)return;let o=r().service?.id;if(!o){t({status:"error",error:"Service ID not found",errorHeading:{en:["Service ID not found"]}});return}t({status:"probing"});let s=r().token;try{let i=await fetch(o,{headers:s?{Authorization:`Bearer ${r().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(a=>a.json());if(i.status===200)t({status:"success",shouldDisplayResource:!0,error:null,errorHeading:null,errorNote:null,shouldSubstitute:!1,shouldRedirect:!1});else if(i.status<400&&i.status>=300){if(!i.location)throw new Error("Redirect location not found");t({status:"error",shouldDisplayResource:!1,shouldRedirect:!0,redirectResource:i.location||null})}else if(i.status===401)t({status:"error",shouldDisplayResource:!1,shouldRedirect:!1,shouldSubstitute:!!i.substitute,substituteResource:i.substitute||null,error:"Unauthorized",errorHeading:i.heading||{en:["Unauthorized"]},errorNote:i.note||null});else throw new Error("Unknown error")}catch(i){t({status:"error",error:i.message,errorHeading:{en:["Unknown error"]}})}},setToken(o){t({token:o})}}));function bt(e){let n=e.service||e.services||[],t={hasAuth:!1,services:{}};for(let r of n)if(r.type==="AuthProbeService2"){t.services.probe=r,t.hasAuth=!0;let o=r.service.filter(s=>s.type==="AuthAccessService2");o[0]&&(t.services.access=o[0])}return t}async function j(e,{strict:n=!0}={}){return new Promise((t,r)=>{let o=Math.random().toString(36).substring(7),s=`${e.id}?messageId=${o}&origin=${window.location.origin}`,i=c=>{let l=c.data;if(l.messageId===o){if(n&&l.type!=="AuthAccessToken2"){a(),r("Invalid response, expected type=AuthAccessToken2");return}if(!l.accessToken){a(),r("Invalid response, expected accessToken");return}a(),t(l)}},a=()=>window.removeEventListener("message",i),u=document.createElement("iframe");u.src=s,u.style.display="none",document.body.appendChild(u),window.addEventListener("message",i)})}function Pt(e){let n=window.location;if(e){let t=document.createElement("a");return t.href=e,t.protocol+"//"+t.hostname+(t.port?":"+t.port:"")}return n.protocol+"//"+n.hostname+(n.port?":"+n.port:"")}async function ae(e){let n=`${e.id}?origin=${Pt()}`,t=window.open(n);if(!t)throw new Error("Failed to open window");return new Promise((r,o)=>{let s=setInterval(()=>{t.closed&&(clearInterval(s),r())},500)})}import{useStore as ar}from"zustand";function wt(e){let n=It(()=>bt(e),[e]),t=Mt(n.services.access?.id);console.log("probe auth service");let r=It(()=>Ct(n.services.probe,t),[n.services.probe]),o=ar(r);return Rt(()=>{o.status==="unknown"&&!t&&o.probe()},[n.services.probe,o.status]),Rt(()=>{t&&(o.setToken(t),o.probe())},[t]),[e,o,n.hasAuth]}import{useStore as se}from"zustand";import{jsx as K}from"react/jsx-runtime";var ue=Ue(null),X=Ue(null);X.displayName="CurrentAuth";var _e=Ue(null);_e.displayName="AuthActions";function Y(e,n,t){let r=n.authItems.findIndex(i=>i.service.id===e);if(r===-1)return n;let o=[...n.authItems],s=t(o[r]);return s===o[r]?n:(o[r]=s,{...n,authItems:o})}function cr(e,n){switch(n.type){case"login.start":return Y(n.payload.id,e,t=>({...t,isPending:!0}));case"login.success":return Y(n.payload.id,e,t=>({...t,isLoggedIn:!0,isPending:!1,session:{token:n.payload.token,expires:n.payload.expires}}));case"login.error":return Y(n.payload.id,e,t=>({...t,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:n.payload.error}));case"session.expire":return Y(n.payload.id,e,t=>({...t,isPending:!1,isLoggedIn:!1,session:null}));case"logout":return Y(n.payload.id,e,t=>({...t,isLoggedIn:!1,session:null,isPending:!1}));case"service.add":return e.authItems.find(r=>r.service.id===n.payload.service.id)?Y(n.payload.service.id,e,r=>({...r,instances:r.instances+1})):{...e,currentAuth:n.payload.service.profile==="active"?0:e.currentAuth,authItems:[{id:n.payload.service.id,type:n.payload.service.profile,service:n.payload.service,probeId:n.payload.probeId,canAuthenticate:!0,instances:1,isPending:!1,isLoggedIn:!1,session:null},...e.authItems]};case"service.remove":{let t=e.currentAuth===e.authItems.findIndex(o=>o.service.id===n.payload.id),r=e.currentAuth;if(t){let o=e.authItems.find(i=>i.service.id===n.payload.id);o&&o.instances>1||(r=e.authItems.findIndex(a=>a.service.id!==n.payload.id&&a.instances>0))}return{...Y(n.payload.id,e,o=>({...o,instances:o.instances-1})),currentAuth:r}}case"list.next":{let t=e.authItems.length,r=e.currentAuth+1;return r>=t?e:{...e,currentAuth:r}}case"list.previous":{let t=e.currentAuth-1;return t<0?e:{...e,currentAuth:t}}case"list.set":return n.payload!==-1&&(n.payload<0||n.payload>=e.authItems.length)?e:{...e,currentAuth:n.payload};default:return e}}function Tt({children:e}){let n=De(()=>xt(),[]);return console.log("authStateStore",n),K(ue.Provider,{value:n,children:e})}function Ia({children:e}){let[n,t]=ur(cr,{currentAuth:-1,authItems:[]}),r=(d,v)=>{if(!d.service)return;let m=d.service.find(g=>g.type==="AuthAccessTokenService2"),p=d;if(t({type:"service.add",payload:{service:d,probeId:v}}),d.profile==="external"){if(!m)throw new Error("Token service not found");j(m).then(g=>{t({type:"login.success",payload:{id:d.id,token:g.accessToken,expires:g.expiresIn}})}).catch(g=>{t({type:"login.error",payload:{id:d.id,error:g.message}})})}if(d.profile==="kiosk"){if(!m)throw new Error("Token service not found");t({type:"login.start",payload:{id:d.id}}),ae(p).then(()=>{j(m).then(g=>{t({type:"login.success",payload:{id:d.id,token:g.accessToken,expires:g.expiresIn}})}).catch(g=>{t({type:"login.error",payload:{id:d.id,error:g.message}})})}).catch(g=>{t({type:"login.error",payload:{id:d.id,error:g.message}})})}d.profile},o=d=>{t({type:"service.remove",payload:d})},s=()=>{let d=n.authItems[n.currentAuth];if(!d||d.isPending||d.isLoggedIn)return;if(d.type!=="active")throw new Error("Cannot login to non-active service");let v=d.service.service.find(m=>m.type==="AuthAccessTokenService2");if(!v)throw new Error("Token service not found");t({type:"login.start",payload:{id:d.id}}),ae(d.service).then(()=>{j(v).then(m=>{let p=m.expiresIn,g=Date.now()+p*1e3;t({type:"login.success",payload:{id:d.id,token:m.accessToken,expires:g}})}).catch(m=>{t({type:"login.error",payload:{id:d.id,error:m.message}})})})},i=()=>{let d=n.authItems[n.currentAuth];if(!d||d.isPending||!d.isLoggedIn)return;if(d.type!=="active")throw new Error("Cannot logout of non-active service");let v=d.service.service.find(g=>g.type==="AuthLogoutService2");if(!v)return;let m=`${v.id}?origin=${window.location.origin}`,p=window.open(m);t({type:"logout",payload:{id:d.id}})},a=()=>{},u=()=>{},c=d=>{},l=De(()=>({addService:r,removeService:o}),[]),f=De(()=>({...n,login:s,logout:i,nextAuth:a,previousAuth:u,setAuth:c}),[n]);return K(X.Provider,{value:f,children:K(_e.Provider,{value:l,children:e})})}function ce(){let e=J(ue);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function lr(){let e=ce();return se(e,t=>({login:t.login,logout:t.logout,nextAuth:t.nextAuth,previousAuth:t.previousAuth,setAuth:t.setAuth,addService:t.addService,removeService:t.removeService}))}function wa(){let e=ce();return se(e,n=>n)}function dr(e){let n=ce();return se(n,r=>r.authItems.find(o=>o.service.id===e))}function Mt(e){let n=ce();return se(n,r=>r.authItems.find(o=>o.id===e)?.session?.token)}function Ma(e){let n=ce();return se(n,r=>{let o=r.authItems.find(s=>s.service.id===e);return!o||!o.isLoggedIn||!o.session?null:o.session?.token||null})}function Ta(){let e=J(X);if(!e)throw new Error("useCurrentAuth must be used within a AuthProvider");return e}function Va(e){let n=J(X);return n&&n.authItems.find(t=>t.service.id===e)||null}function Na(e){let n=J(X);return!n||!e?null:n.authItems.find(t=>t.id===e)?.session?.token||null}function ka(e){let n=J(X);if(!e||!n)return null;let t=n.authItems.find(r=>r.service.id===e);return!t||!t.isLoggedIn||!t.session?null:t.session?.token||null}function Ea(){return J(_e)}function fr(e){let n=lr(),t=dr(e.service.id);return sr(()=>(console.log("add service",e.service,e.probeId),n?.addService(e.service,e.probeId),()=>{n?.removeService(e.service,e.probeId)}),[e.service]),t?(t.error||!t.isLoggedIn,e.children):null}function He(){return null}function Vt(e){let[n,t,r]=wt(e.resource),o=e.fallbackComponent||He,s=e.loadingComponent||He,i=e.errorComponent||He,a=t.service,u=null;if(!r||!a)return e.children(n);let c=a.service.filter(l=>l.type==="AuthAccessService2");t.status==="error"&&(u=K(i,{resource:e.resource,error:t.error||"",heading:t.errorHeading,note:t.errorNote,extra:e.extra})),(t.status==="unknown"||t.status==="probing")&&(u=K(s,{})),t.status==="success"&&(u=e.children(n));for(let l of c)u=K(fr,{service:l,probeId:a.id,children:u},l.id);return u}import{createContext as hr,useContext as qa,useMemo as vr}from"react";import{createStore as mr}from"zustand/vanilla";var pr=e=>e.id||e["@id"];function gr(e){return(Array.isArray(e.service)?e.service:[e.service]).find(t=>t.profile==="http://iiif.io/api/search/0/autocomplete"||t.profile==="http://iiif.io/api/search/1/autocomplete"||t.profile==="AutoCompleteService1")}var Nt=e=>{let n;typeof e=="string"?n={"@context":"http://iiif.io/api/search/1/context.json",profile:"http://iiif.io/api/search/1/search","@id":e,id:e,service:[]}:n=e;let t=n?pr(n):void 0,r=null;return mr((o,s)=>({service:n,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!n,hasAutocomplete:n?!!gr(n):!1,errorMessage:"",search(i,a={}){if(!t)throw new Error("No search service found.");r&&!r.signal.aborted&&r.abort(),r=new AbortController;let u=new URLSearchParams;i.q&&u.set("q",i.q),i.motivation&&u.set("motivation",i.motivation),i.date&&u.set("date",i.date),i.user&&u.set("user",i.user),o({loading:!0}),fetch(`${t}?${u.toString()}`,{signal:r.signal,headers:{"Content-Type":"application/json",Accept:"application/json",...a.headers||{}}}).then(async c=>{if(!r?.signal.aborted)if(c.ok){let l=await c.json();o({resources:l.resources,error:!1,errorMessage:""})}else o({resources:[],error:!0,errorMessage:c.statusText})})},clearSearch(){o({resources:[],error:!1,errorMessage:""})},highlightResult(i){let a=s().resources.find(u=>u["@id"]===i);o({highlight:a})},nextResult(){let i=s().resources,a=s().highlight;if(!a){o({highlight:i[0]||null});return}let u=i.findIndex(c=>c["@id"]===a["@id"]);if(u===-1){o({highlight:i[0]||null});return}o({highlight:i[u+1]||i[0]||null})},previousResult(){let i=s().resources,a=s().highlight;if(!a){o({highlight:i[i.length-1]||null});return}let u=i.findIndex(c=>c["@id"]===a["@id"]);if(u===-1){o({highlight:i[i.length-1]||null});return}if(u===0){o({highlight:i[i.length-1]||null});return}o({highlight:i[u-1]||i[i.length-1]||null})}}))};import{useStore as Qa}from"zustand";function kt(){let e=w();return e?e.service.find(n=>n.profile==="SearchService1"||n.profile==="http://iiif.io/api/search/1/search"):void 0}import{jsx as qe}from"react/jsx-runtime";var ee=hr(null);ee.displayName="Search";function Et(e){let n=kt();return e.store?qe(ee.Provider,{value:e.store,children:e.children}):qe(yr,{service:n,children:e.children})}function yr({service:e,children:n}){let t=vr(()=>Nt(e),[e]);return qe(ee.Provider,{value:t,children:n})}import{jsx as T}from"react/jsx-runtime";var le=()=>{},de=Ar({setCurrentCanvasId:le,setCurrentCanvasIndex:le,nextCanvas:le,previousCanvas:le,items:[],sequence:[],setSequenceIndex:le,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function Cr(e){let n=w(),{cursor:t,visibleItems:r,next:o,sequence:s,items:i,setCanvasIndex:a,setCanvasId:u,previous:c,setSequenceIndex:l,hasNext:f,hasPrevious:d}=St({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),v=xr(()=>({sequence:s,items:i,setCurrentCanvasId:u,nextCanvas:o,previousCanvas:c,totalCanvases:i.length,setCurrentCanvasIndex:a,setSequenceIndex:l,currentSequenceIndex:t,hasNext:f,hasPrevious:d}),[s,i,u,o,c,i,a,l,t]);return n?r.length===0?null:T(de.Provider,{value:v,children:T(Z.Provider,{value:r,children:T(G,{canvas:r[0],children:e.children})})}):(console.warn("The manifest passed to the provider is not a valid IIIF manifest."),T("div",{children:"Sorry, something went wrong."}))}function Lt(e){let n=W(e.vault),t=pt(e.manifest);if(!t)return console.warn("The manifest passed to the provider is not a valid IIIF manifest."),T("div",{children:"Sorry, something went wrong."});if(t.error)return T("div",{children:t.error.toString()});if(!t.isLoaded)return T("div",{children:"Loading..."});let r=T(Cr,{...e,children:e.children});return T(Q,{vault:n,children:T(gt,{manifest:t.id,children:T(Tt,{children:T(Et,{children:e.rangeId?T(ht,{range:e.rangeId,children:r}):r})})})})}function zt(){return Sr(de)}import{jsx as fe}from"react/jsx-runtime";function Ot(){return{VaultContext:te($),ResourceContext:te(ye),SimpleViewerReactContext:te(de),VisibleCanvasReactContext:te(Z),AuthRContext:te(ue),SearchReactContext:te(ee)}}function Ft(e){return fe(Q,{vault:e.bridge.VaultContext.vault||void 0,resources:e.bridge.ResourceContext,children:fe(Z.Provider,{value:e.bridge.VisibleCanvasReactContext,children:fe(de.Provider,{value:e.bridge.SimpleViewerReactContext,children:fe(ue.Provider,{value:e.bridge.AuthRContext,children:fe(ee.Provider,{value:e.bridge.SearchReactContext,children:e.children})})})})})}import{createContext as wr,useContext as Mr,useMemo as Tr}from"react";import{useCallback as Dt,useLayoutEffect as Pr,useMemo as Rr,useRef as Ir}from"react";import{entityActions as Be}from"@iiif/helpers/vault/actions";import{useMemo as br}from"react";function Ht(){let n=y().getStore();return br(()=>t=>n.dispatch(t),[n])}function Ut(e){return typeof e!="string"&&e&&e.bindToVault}function _t(){let e=y(),n=Ir([]),t=Ht(),r=Rr(()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);Pr(()=>{let a={id:r,type:"AnnotationPage",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],rendering:[],service:[]};t(Be.importEntities({entities:{AnnotationPage:{[a.id]:a}}}))},[r]);let o=S(a=>r&&a.iiif.entities.AnnotationPage[r]||null,[r]),s=Dt((a,u)=>{if(r){if(Ut(a)){let f=a;f.__vault||f.bindToVault(e),a=typeof f.source=="string"?f.source:f.source.id,n.current[a]=f}else typeof a!="string"&&(a=a.id);let c=e.get({id:r,type:"AnnotationPage"}),l=e.get({id:a,type:"Annotation"});c&&l&&(c.items.find(f=>f.id===l.id)||t(Be.addReference({id:r,type:"AnnotationPage",key:"items",reference:{id:a,type:"Annotation"},index:u})))}},[r]),i=Dt(a=>{r&&(Ut(a)?a=typeof a.source=="string"?a.source:a.source.id:typeof a!="string"&&(a=a.id),n.current[a]&&n.current[a].beforeRemove(),e.get({id:r,type:"AnnotationPage"})&&t(Be.removeReference({id:r,type:"AnnotationPage",key:"items",reference:{id:a,type:"Annotation"}})))},[r]);return[o,{addAnnotation:s,removeAnnotation:i}]}import{jsx as Vr}from"react/jsx-runtime";var qt=wr(null);function Bt(){let e=Mr(qt);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function $t({children:e}){let[n,{addAnnotation:t,removeAnnotation:r}]=_t();return Vr(qt.Provider,{value:Tr(()=>({fullPage:n,addAnnotation:t,removeAnnotation:r}),[n]),children:e})}import{jsx as $e,jsxs as Nr}from"react/jsx-runtime";function jt({width:e,style:n,height:t,error:r,resetErrorBoundary:o}){return Nr("div",{style:{width:e,height:t,minHeight:500,...n||{},background:"#f9f9f9"},children:[$e("h3",{children:"Error occurred"}),$e("p",{children:r.message}),$e("button",{onClick:o,children:"Reset"})]})}import{createContext as kr,useContext as Er}from"react";var me=kr(null);function Yt(){return Er(me)}import{createContext as Qt,useContext as Lr,useEffect as zr}from"react";var je=Qt(()=>{}),Ye=Qt(()=>{});function L(e,n,t,r,o=[]){let s=Lr(e==="portal"?Ye:je);zr(()=>(e!=="none"&&s(n,t,r),()=>{s(n,null)}),[n,e,s,...o])}import{createContext as Fr,useContext as Hr,useEffect as Dr}from"react";import{useMemo as Or}from"react";function b(e={},n=[]){let{id:t,selector:r}=e,o=k(),s=t||o.canvas,i=S(a=>s?a.iiif.entities.Canvas[s]:void 0,[s]);return Or(()=>{if(i)return r?r(i):i},[i,r,...n])}var Qe=Fr(()=>{});function Wt(e){let n=b(),t=Hr(Qe);Dr(()=>n&&n.id?(t(n.id,e),()=>t(n.id,-1)):()=>{},[n,e])}import{Fragment as Br,jsx as R,jsxs as $r}from"react/jsx-runtime";function Kt({children:e,errorFallback:n,outerContainerProps:t={},worldScale:r,...o}){let[s,i]=xe(),a=Ot(),u=n||jt,[c,l]=xe({}),f=Object.entries(c),[d,v]=xe({}),m=Object.entries(d),[p,g]=xe({}),A=Zt(()=>r||Math.max(...Object.values(p)),[p]),H=Zt(()=>({maxOverZoom:A||1,...o.runtimeOptions||{}}),[A,o.runtimeOptions]),I=We((C,P)=>{g(N=>{if(P===-1){let{[C]:h,...O}=N;return O}return{...N,[C]:P}})},[]),Le=We((C,P,N)=>{l(({[C]:h,...O})=>P?{...O,[C]:{element:P,props:N}}:O)},[]),he=We((C,P,N)=>{v(({[C]:h,...O})=>P?{...O,[C]:{element:P,props:N}}:O)},[]);return $r(qr,{resetKeys:[],fallbackRender:C=>R(u,{...o,...C}),children:[R(Ur,{...o,containerProps:{style:{position:"relative"},...o.containerProps||{}},htmlChildren:R(Br,{children:f.map(([C,{element:P,props:N}])=>R(Gt.Fragment,{children:R(P,{...N||{}})},C))}),onCreated:C=>{i(C),o.onCreated&&o.onCreated(C)},runtimeOptions:H,children:R(me.Provider,{value:s,children:R(Qe.Provider,{value:I,children:R(je.Provider,{value:Le,children:R(Ye.Provider,{value:he,children:R(Ft,{bridge:a,children:R(_r.Provider,{value:o.mode||"explore",children:R($t,{children:e})})})})})})})}),R("div",{children:m.map(([C,{element:P,props:N}])=>R(Gt.Fragment,{children:R(P,{...N||{}})},C))})]})}import{mergeStyles as Zr,RegionHighlight as Kr}from"@atlas-viewer/atlas";import{useMemo as Jt}from"react";import{createEventsHelper as jr}from"@iiif/helpers/events";function Ce(e,n){let t=y(),r=Jt(()=>jr(t),[t]),o=S(()=>e&&e.id?t.getResourceMeta(e.id,"eventManager"):null,[e]);return Jt(()=>e?r.getListenersAsProps(e,n):{},[o,e,t,n])}import{useMemo as Yr}from"react";import{createStylesHelper as Qr}from"@iiif/helpers/styles";function ne(e,n){let t=y(),r=Yr(()=>Qr(t),[t]);return S(()=>{if(!e)return null;let o=r.getAppliedStyles(e.id);return o?n?o[n]:o:void 0},[e,n])}import{useMemo as Jr}from"react";import{useMemo as Wr}from"react";import{expandTarget as Gr}from"@iiif/helpers/annotation-targets";function be(e={},n=[]){let{id:t,selector:r}=e,o=k(),s=y(),i=t||o.annotation,a=S(c=>i?c.iiif.entities.Annotation[i]:void 0,[i]),u=S(c=>a&&a.body?a.body.map(l=>l?l.type==="SpecificResource"?{...l,source:s.get(l)}:l?c.iiif.entities[l.type][l.id]:null:null).filter(Boolean):[],[a]);return Wr(()=>{if(!a)return;let c={...a,body:u,target:Gr(a.target,{typeMap:s.getState().iiif.mapping})};return r?r(c):c},[a,r,u,...n])}import{jsx as Xr}from"react/jsx-runtime";var Pe=({id:e,style:n,className:t,interactive:r})=>{let o=be({id:e}),s=ne(o,"atlas"),i=ne(o,"html"),a=Ce(o,["atlas"]),u=b(),c=Jr(()=>Zr(n,s),[n,s]);return u&&o&&o.target&&o.target.selector&&o.target.selector.type==="BoxSelector"&&o.target.source&&(o.target.source.id===u.id||o.target.source===u.id)?Xr(Kr,{id:o.id,isEditing:!0,region:o.target.selector.spatial,style:c,className:i?.className||t,interactive:!!(i?.href||r),href:i?.href||null,title:i?.title||null,hrefTarget:i?.target||null,onClick:()=>{},...a}):null};import{Fragment as to}from"react";import{useMemo as eo}from"react";function Xt(e={},n=[]){let{id:t,selector:r}=e,o=k(),s=t||o.annotationPage,i=S(a=>s?a.iiif.entities.AnnotationPage[s]:void 0,[s]);return eo(()=>{if(i)return r?r(i):i},[i,...n])}import{jsx as en}from"react/jsx-runtime";var pe=({className:e,page:n})=>{let t=Xt({id:n.id})||n,r=ne(t,"atlas"),o=ne(t,"html");return S(s=>t.id?s.iiif.entities.AnnotationPage[t.id]:null,[]),en(to,{children:t.items?.map(s=>en(Pe,{id:s.id,style:r,className:o?.className||e},s.id))})};import{createStylesHelper as $o}from"@iiif/helpers/styles";import{Fragment as sn,useMemo as co}from"react";import{HTMLPortal as io,TileSet as ao}from"@atlas-viewer/atlas";import nn,{useMemo as Ge}from"react";import{jsx as _}from"react/jsx-runtime";var rn=nn.createContext("en");function uc(e){return _(rn.Provider,{value:e.language,children:e.children})}function Ze(){return nn.useContext(rn)}function tn(e){return e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):e}function no({as:e,language:n,children:t,viewingDirection:r,...o}){let s=Ze();return Ge(()=>tn(s)===tn(n),[s,n])?e?_(e,{...o,children:t}):_("span",{...o,children:t}):e?_(e,{...o,lang:n,dir:r,children:t}):_("span",{...o,lang:n,dir:r,children:t})}function on(e,n,t){if(n.length===0)return;if(n.length===1)return n[0];if(n.indexOf(e)!==-1)return e;let r=e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):null;if(r&&n.indexOf(r)!==-1)return r;for(let o of t)if(n.indexOf(o)!==-1)return o;return n.indexOf("none")!==-1?"none":n.indexOf("@none")!==-1?"@none":n[0]}var ro=(e,n=[])=>{let t=Ze();return Ge(()=>{let r=e();return on(t,r,[])},[t,...n])};function oo(e,n,t=`
2
+ `){let r=ro(()=>Object.keys(e||{}),[e]);return[Ge(()=>{if(!e)return n||"";if(typeof e=="string")return e;let o=r?e[r]:void 0;return o?typeof o=="string"?o:o.join(t):""},[r,n,e]),r]}function cc(){let e=Ze();return function(t,r,o){let s=Object.keys(t||{}),i=on(e,s,[]);if(!t)return r||"";if(typeof t=="string")return t;let a=i?t[i]:void 0;return a?typeof a=="string"?a:a.join(typeof o<"u"?o:`
3
+ `):""}}function ge({as:e,defaultText:n,enableDangerouslySetInnerHTML:t,children:r,separator:o,...s}){let[i,a]=oo(r,n,o);return a?_(no,{...s,as:e,language:a,title:t?void 0:i,dangerouslySetInnerHTML:t?{__html:i}:void 0,children:t?void 0:i}):e?_(e,{...s,children:i}):_("span",{...s,title:t?void 0:i,dangerouslySetInnerHTML:t?{__html:i}:void 0,children:t?void 0:i})}import{jsx as q,jsxs as uo}from"react/jsx-runtime";function so({resource:e,heading:n,note:t,extra:r}){return r?q(io,{target:{x:0,y:0,width:r.target?.spatial.width,height:r.target?.spatial.height},backgroundColor:"#333",relative:!0,children:q("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:uo("div",{children:[q(ge,{children:n||"Not authorised"}),t&&q("p",{children:q(ge,{children:t})}),q("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}function an({image:e,thumbnail:n,crop:t,enableSizes:r}){return q(Vt,{resource:e.service,errorComponent:so,extra:e,children:o=>{let s=o.width||e.width||0,i=o.height||e.height||0;return q(ao,{tiles:{id:o.id||o["@id"]||"unknown",height:i,width:s,imageService:o},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:t})}},e.id)}import{jsx as Ke,jsxs as un}from"react/jsx-runtime";function Re({id:e,image:n,thumbnail:t,isStatic:r,x:o=0,y:s=0,children:i,selector:a,onClick:u,enableSizes:c}){let l=co(()=>{if(!(!a||a.spatial.x===0&&a.spatial.y===0))return a.spatial},[a]);return Ke("world-object",{x:o+n.target.spatial.x,y:s+n.target.spatial.y,width:n.target.spatial.width,height:n.target.spatial.height,onClick:u,children:n.service?un(sn,{children:[Ke(an,{image:n,thumbnail:t,crop:l,enableSizes:c}),i]},"service"):un(sn,{children:[Ke("world-image",{onClick:u,uri:n.id,target:{x:0,y:0,width:n.target.spatial.width,height:n.target.spatial.height},display:n.width&&n.height?{width:n.width,height:n.height}:void 0,crop:l}),i]},"no-service")},e+(n.service?"server":"no-service"))}import{Fragment as jo,useEffect as Tn,useLayoutEffect as Yo,useMemo as Vn}from"react";import{HTMLPortal as Qo}from"@atlas-viewer/atlas";import{useMemo as yn}from"react";import{useCallback as dn,useMemo as fo}from"react";function lo(e,n){let t=e?.iiif?.meta[n];return t?t.annotationPageManager:null}function cn(e,n){return S(t=>{let r=[];if(!e)return r;let o=Object.keys(t.iiif.entities.AnnotationPage);for(let s of o)if(!n||n.indexOf(s)!==-1){let i=lo(t,s);i&&i.views&&i.views[e]&&r.push(s)}return r},[e,n])}function ln({canvas:e,manifest:n,all:t,canvases:r}){let o=[];if(n)for(let s of n.annotations)o.indexOf(s.id)===-1&&o.push(s.id);if(t){if(r&&r.length)for(let s of r)for(let i of s.annotations)o.indexOf(i.id)===-1&&o.push(i.id)}else if(e)for(let s of e.annotations)o.indexOf(s.id)===-1&&o.push(s.id);return o}function mo(e,n){let t=e?.iiif?.meta[n];return t?t.annotationPageManager:null}function fn(e,n={}){let t=y(),r=w(),o=b(),s=Se(),i=fo(()=>ln({all:n.all,manifest:r,canvas:o,canvases:s}),[n.all,o,s,r]),a=cn(e,n.all?void 0:i),u=dn(l=>{e&&t.setMetaValue([l,"annotationPageManager","views"],f=>f&&!f[e]?f:{...f||{},[e]:!1})},[e,t]),c=dn((l,f={})=>{if(!e)return;let d=t.getState(),v=[];if(f?.deselectOthers){let m=Object.keys(d.iiif.entities.AnnotationPage);for(let p of m){let g=mo(d,p);g&&g.views&&g.views[e]&&v.push(p)}}for(let m of v)u(m);t.setMetaValue([l,"annotationPageManager","views"],m=>m&&m[e]?m:{...m||{},[e]:!0})},[e,u,t]);return{availablePageIds:i,enabledPageIds:a,setPageEnabled:c,setPageDisabled:u}}function mn(e,n){return S((t,r)=>r.get(e.map(o=>({id:o,type:n}))),[e,n])}import{useCallback as yo,useEffect as So,useRef as Ao,useState as xo}from"react";import po,{useContext as go}from"react";import{ImageServiceLoader as ho}from"@atlas-viewer/iiif-image-api";var vo=po.createContext(new ho);function Ie(){return go(vo)}function pn(){let e=Ie(),[n,t]=xo({}),r=Ao(!1);return So(()=>()=>{r.current=!0},[]),[yo((s,{height:i,width:a})=>{if(s){let u=s.id||s["@id"],c=e.loadServiceSync({id:u,width:s.width||a,height:s.height||i,source:s});c?s=c:n[u]||(r.current||t(l=>({...l,[u]:"loading"})),e.loadService({id:u,width:s.width||a,height:s.height||i}).then(()=>{r.current||t(l=>({...l,[u]:"done"}))}))}return s},[e,n]),n]}import{useCallback as Co,useMemo as hn,useState as bo}from"react";function gn(e={}){let n=be(),t=b(e.canvasId?{id:e.canvasId}:void 0);return S((r,o)=>{if(!t)return[];if(n&&e.enableSingleAnnotation)return[n];let s=o.get(t.items),i=[];for(let a of s)i.push(...o.get(a.items));return i},[t])}import{createPaintingAnnotationsHelper as Po}from"@iiif/helpers/painting-annotations";function vn(e,n=[]){let t=y(),r=hn(()=>Po(t),[]),o=gn({enableSingleAnnotation:e?.enableSingleAnnotation}),[s,i]=bo(e?.defaultChoices||[]),a=hn(()=>r.getPaintables(o,s),[t,o,s,...n]),c={makeChoice:Co((l,{deselectOthers:f=!0,deselect:d=!1}={})=>{if(a.choice){if(a.choice.type!=="single-choice")throw new Error("Complex choice not supported yet");i(v=>{if(d){let p=v.filter(g=>g!==l);if(p.length===0){let g=a.items[0].resource.id;return g?[g]:[]}return p}if(f)return[l];let m=[...v];if(m.length===0&&a.items.length){let p=a.items[0].resource.id;p&&m.push(p)}return v.indexOf(l)!==-1?v:[...v,l]})}},[a.choice])};return[a,c]}function Sn(e){let n=w(),t=b(),r=y(),[o,s]=pn(),{enabledPageIds:i}=fn(e?.annotationPageManagerId||n?.id||t?.id,{all:!1}),a=mn(i,"AnnotationPage"),u=e?.strategies||["empty","images","media","textual-content","complex-timeline"],[c,l]=vn(e,[s]),f=yn(()=>lt({canvas:t,paintables:c,supports:u,loadImageService:o}),[t,c,r,l.makeChoice]);return yn(()=>f.type==="unknown"?[f,ct]:[{...f,annotations:{pages:a}},l],[f,a])}import{useEffect as Io,useMemo as wo,useRef as Mo,useState as To}from"react";import{useEffect as Ro}from"react";var An=(e,n=[])=>{let t=y();Ro(()=>{e(t)},[t,...n])};import{createThumbnailHelper as Vo}from"@iiif/helpers/thumbnail";function xn(e,n,{canvasId:t,manifestId:r}={}){let o=y(),s=Ie(),i=wo(()=>Vo(o,{imageServiceLoader:s}),[o,s]),[a,u]=To(),c=w(r?{id:r}:void 0),l=b(t?{id:t}:void 0),f=l||c,d=Mo(!1);if(Io(()=>(d.current=!1,()=>{d.current=!0}),[]),!f)throw new Error("Must be called under a manifest or canvas context.");return An(v=>{i.getBestThumbnailAtSize(f,e,n).then(m=>{m.best&&!d.current&&u(m.best)})},[f]),a}import{useCallback as z,useEffect as Cn,useReducer as No,useRef as we}from"react";function ko(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function Eo(e,n){switch(n.type){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:n.volume,isMuted:n.volume===0};case"TOGGLE_MUTE":return{...e,isMuted:!e.isMuted};case"UNMUTE":return{...e,isMuted:!1}}return e}function Lo(e){let n=Math.round(e);return`${Math.floor(n/60)}:${`${n%60}`.padStart(2,"0")}`}function re(e){let[n,t]=No(Eo,ko(e.duration)),r=we(null),o=we(null),s=we(null),i=we(!1),a=z(()=>{o.current&&r.current&&(o.current.innerHTML=Lo(r.current.currentTime),s.current&&(s.current.style.width=`${r.current.currentTime/e.duration*100}%`),i.current!==r.current.muted&&(i.current=r.current.muted,t(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"})))},[e.duration]),u=z(()=>{r.current&&(t({type:"PLAY_REQUESTED"}),r.current.play().then(()=>{t({type:"PLAY"})}),a())},[a]),c=z(()=>{r.current&&(r.current.duration>0&&r.current.paused?u():l())},[a]),l=z(()=>{r.current&&(r.current.pause(),t({type:"PAUSE"}),a())},[a]),f=z(()=>{r.current&&(r.current.muted=!r.current.muted,t(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),d=z(()=>{r.current&&(r.current.muted=!0,t({type:"MUTE"}))},[]),v=z(()=>{r.current&&(r.current.muted=!1,t({type:"UNMUTE"}))},[]),m=z(A=>{r.current&&(r.current.muted=!1,r.current.volume=A/100,t({type:"SET_VOLUME",volume:A}))},[]),p=z(A=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(A*e.duration,e.duration)),a())},[]),g=z(A=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(A,e.duration)),a())},[]);return Cn(()=>{let A=setInterval(()=>{a()},350);return()=>clearInterval(A)},[a,e.duration]),Cn(()=>{let A=()=>{t({type:"FINISHED"})},H=r.current;return H?.addEventListener("ended",A),()=>H?.removeEventListener("ended",A)},[]),[{element:r,currentTime:o,progress:s},n,{play:u,pause:l,playPause:c,mute:d,unmute:v,toggleMute:f,setVolume:m,setDurationPercent:p,setTime:g}]}import{createContext as Xe,useContext as et}from"react";import{jsx as Je}from"react/jsx-runtime";var bn=Xe(null),Pn=Xe(null),Rn=Xe(null);function Ml(){let e=et(bn);if(!e)throw new Error("Ctx not found");return e}function Tl(){let e=et(Pn);if(!e)throw new Error("Ctx not found");return e}function Vl(){let e=et(Rn);if(!e)throw new Error("Ctx not found");return e}function Me({actions:e,state:n,children:t,currentTime:r,progress:o,element:s}){return Je(Rn.Provider,{value:{currentTime:r,progress:o,element:s},children:Je(Pn.Provider,{value:e,children:Je(bn.Provider,{value:n,children:t})})})}import{jsx as zo,jsxs as Oo}from"react/jsx-runtime";function tt({media:e,children:n}){let[{element:t,currentTime:r,progress:o},s,i]=re({duration:e.duration});return Oo(Me,{state:s,actions:i,currentTime:r,progress:o,element:t,children:[zo("audio",{ref:t,src:e.url}),n]})}function Te({media:e,mediaControlsDeps:n,children:t}){return L("portal","audio",tt,{media:e,children:t},[e,...n||[]]),null}import{jsx as In,jsxs as Fo}from"react/jsx-runtime";function nt({element:e,media:n,playPause:t}){return Fo("div",{className:"video-container",part:"video-container",onClick:t,children:[In("style",{children:`
4
+ .video-container {
5
+ position: absolute;
6
+ top: 0;
7
+ bottom: 0;
8
+ left: 0;
9
+ right: 0;
10
+ background: #000;
11
+ z-index: 13;
12
+ display: flex;
13
+ justify-content: center;
14
+ pointer-events: visible;
15
+ }
16
+ `}),In("video",{ref:e,src:n.url,style:{width:"100%",objectFit:"contain"}})]})}function Ve({media:e,mediaControlsDeps:n,children:t}){let[{element:r,currentTime:o,progress:s},i,a]=re({duration:e.duration});return L("overlay","video-element",nt,{element:r,media:e,playPause:a.playPause}),L("portal","custom-controls",Me,{state:i,actions:a,currentTime:o,progress:s,element:r,children:t},[o,i,e,...n||[]]),null}import{Fragment as Ho,jsx as rt,jsxs as Do}from"react/jsx-runtime";function ot({model:e}){return Do(Ho,{children:[rt("style",{children:`
17
+ .model-container {
18
+ position: absolute;
19
+ top: 0;
20
+ bottom: 0;
21
+ left: 0;
22
+ right: 0;
23
+ background: #000;
24
+ z-index: 13;
25
+ display: flex;
26
+ justify-content: center;
27
+ pointer-events: visible;
28
+ }
29
+ `}),rt("div",{className:"model-container",children:rt("model-viewer",{"interaction-prompt":"none",style:{width:"100%",height:"100%"},"camera-controls":"","ar-status":"not-presenting",src:e.id})})]})}function Ne({model:e,name:n}){return L("overlay",`model-${n}`,ot,{model:e},[e]),null}import{jsx as Uo}from"react/jsx-runtime";function ke({style:e}){let n=b();return!n||!n.height||!n.width?null:Uo("box",{interactive:!1,target:{x:0,y:0,width:Number(n.width),height:Number(n.height)},style:e})}import{useRef as _o}from"react";import{jsx as wn,jsxs as Bo}from"react/jsx-runtime";function qo({element:e,media:n,playPause:t}){let r=_o(null);return n.youTubeId?Bo("div",{className:"video-container",part:"video-container",onClick:t,children:[wn("style",{children:`
30
+ .video-container {
31
+ position: absolute;
32
+ top: 0;
33
+ bottom: 0;
34
+ left: 0;
35
+ right: 0;
36
+ background: #000;
37
+ z-index: 13;
38
+ display: flex;
39
+ justify-content: center;
40
+ pointer-events: visible;
41
+ }
42
+ .video-yt {
43
+ border: none;
44
+ width: 100%;
45
+ object-fit: contain;
46
+ }
47
+ `}),wn("iframe",{className:"video-yt",ref:r,src:`https://www.youtube.com/embed/${n.youTubeId}?enablejsapi=1&origin=${window.location.host}`,referrerPolicy:"no-referrer",sandbox:"allow-scripts allow-same-origin allow-presentation"})]}):null}function Mn({media:e,mediaControlsDeps:n,children:t}){let[{element:r,currentTime:o,progress:s},i,a]=re({duration:e.duration});return L("overlay","video-element",qo,{element:r,media:e,playPause:a.playPause}),null}import{Fragment as Ee,jsx as V,jsxs as B}from"react/jsx-runtime";function it({x:e,y:n,onChoiceChange:t,registerActions:r,defaultChoices:o,isStatic:s,renderViewerControls:i,renderMediaControls:a,viewControlsDeps:u,mediaControlsDeps:c,strategies:l,throwOnUnknown:f,backgroundStyle:d,alwaysShowBackground:v,keepCanvasScale:m=!1,enableSizes:p=!1,enableYouTube:g=!0,onClickPaintingAnnotation:A,children:H}){let I=b(),Le=Ce(I,["deep-zoom"]),[he]=Bt(),C=Yt(),P=y(),N=Vn(()=>$o(P),[P]),[h,O]=Sn({strategies:l||["images"],defaultChoices:o?.map(({id:x})=>x)}),at=h.type==="images"?h.choice:void 0,kn=Vn(()=>m?1:Math.max(1,...h.type==="images"?h.images.map(x=>(x.width||0)/x.target?.spatial.width):[]),[m,h]);Wt(kn),Tn(()=>{r&&r(O)},[h.annotations]),Tn(()=>{if(o)for(let x of o)typeof x.opacity<"u"&&N.applyStyles({id:x.id},"atlas",{opacity:x.opacity})},[o]),Yo(()=>{t&&t(at)},[at]),L(C&&(h.type==="images"||h.type==="empty"||h.type==="textual-content"&&i)?"overlay":"none",`canvas-portal-controls-${I?.id}`,me.Provider,i?{value:C||null,children:i(h)}:{},[I,C,h,...u||[]]);let D=xn({maxWidth:256,maxHeight:256});if(!I)return null;let st=I.accompanyingCanvas,oe=D&&D.type==="fixed"?V("world-object",{height:I.height,width:I.width,x:e,y:n,children:V("world-image",{uri:D.id,target:{x:0,y:0,width:I.width,height:I.height},display:D.width&&D.height?{width:D.width,height:D.height}:void 0,crop:void 0})}):null;if(h.type==="unknown"){if(oe)return oe;if(f)throw new Error(h.reason||"Unknown image strategy");return null}let ut=B(jo,{children:[he?V(pe,{page:he}):null,h.annotations&&h.annotations.pages?h.annotations.pages.map(x=>V(pe,{page:x},x.id)):null,H]}),En=h.type==="images"?h.images.length:0;return B(Ee,{children:[B("world-object",{height:I.height,width:I.width,x:e,y:n,...Le,children:[h.type==="empty"||v?V(ke,{style:d}):null,h.type==="textual-content"?h.items.map((x,ve)=>B(Ee,{children:[V(Qo,{onClick:A?ie=>{ie.stopPropagation(),A(x.annotationId,x,ie)}:void 0,target:x.target?.spatial||void 0,children:V("div",{"data-textual-content":!0,children:V(ge,{enableDangerouslySetInnerHTML:!0,children:x.text})})},ve),ut]})):null,h.type==="images"?B(Ee,{children:[h.images.map((x,ve)=>V(Re,{isStatic:s,image:x,id:x.id,thumbnail:ve===0?D:void 0,selector:x.selector,enableSizes:p,onClick:A?ie=>{ie.stopPropagation(),A(x.annotationId,x,ie)}:void 0},x.id+ve)),ut]}):null,h.type==="3d-model"?V(Ne,{model:h.model}):null,h.type==="media"?V(Ee,{children:h.media.type==="Sound"?B(Te,{media:h.media,mediaControlsDeps:c,children:[oe,a?a(h):null]}):h.media.type==="Video"?B(Ve,{media:h.media,mediaControlsDeps:c,children:[oe,a?a(h):null]}):h.media.type==="VideoYouTube"&&g?B(Mn,{media:h.media,mediaControlsDeps:c,children:[oe,a?a(h):null]}):null}):null]},`${I.id}/${h.type}/${En}`),h.type==="media"&&h.media.type==="Sound"&&st?V(G,{canvas:st.id,children:V(it,{renderViewerControls:i})}):null]})}import{Fragment as Zo,jsx as F,jsxs as Ko}from"react/jsx-runtime";var Go=Nn(function(n,t){let r=w(),o=Se(),s=zt(),{ViewerControls:i,MediaControls:a}=n.components||{};if(Wo(t,()=>s,[s]),!r)return F("div",{});let u=0;return Ko(Zo,{children:[n.header,F(M.Viewer,{height:n.height,mode:n.mode,children:o.map((c,l)=>{let f=u;return u+=c.width+(n.spacing||0),F(G,{canvas:c.id,children:F(M.RenderCanvas,{strategies:["3d-model","media","images","empty","textual-content"],renderViewerControls:l===0&&i?()=>F(i,{}):void 0,renderMediaControls:l===0&&a?()=>F(a,{}):void 0,x:f,...n.canvasProps||{},children:n.annotations},c.id)},c.id)})},n.reuseAtlas?"":s.currentSequenceIndex),n.children]})}),M=Nn(function({children:n,height:t,annotations:r,canvasProps:o,spacing:s,header:i,components:a,mode:u,reuseAtlas:c,...l},f){let d=W();return F(Q,{vault:d,children:F(Lt,{...l,children:F(Go,{ref:f,height:t,components:a,spacing:s,canvasProps:o,annotations:r,header:i,mode:u,reuseAtlas:c,children:n})})})});M.RenderImage=Re;M.RenderCanvas=it;M.RenderAnnotationPage=pe;M.RenderAnnotation=Pe;M.Viewer=Kt;M.CanvasBackground=ke;M.Audio=Te;M.Video=Ve;M.Model=Ne;M.AudioHTML=tt;M.VideoHTML=nt;M.ModelHTML=ot;export{ye as a,k as b,U as c,$ as d,Q as e,W as f,mt as g,pt as h,gt as i,G as j,y as k,S as l,Z as m,Se as n,w as o,ht as p,tr as q,Oe as r,Yi as s,vt as t,Gi as u,Fe as v,yt as w,St as x,ua as y,xt as z,Ct as A,bt as B,j as C,ae as D,ue as E,X as F,_e as G,Tt as H,Ia as I,ce as J,lr as K,wa as L,dr as M,Mt as N,Ma as O,Ta as P,Va as Q,Na as R,ka as S,Ea as T,Vt as U,kt as V,de as W,Cr as X,Lt as Y,zt as Z,Ot as _,Ft as $,Ht as aa,_t as ba,Bt as ca,$t as da,me as ea,Yt as fa,b as ga,Ce as ha,ne as ia,be as ja,Xt as ka,uc as la,Ze as ma,no as na,ro as oa,oo as pa,cc as qa,ge as ra,ln as sa,fn as ta,mn as ua,vo as va,Ie as wa,pn as xa,gn as ya,vn as za,Sn as Aa,An as Ba,xn as Ca,Lo as Da,re as Ea,Ml as Fa,Tl as Ga,Vl as Ha,Me as Ia,M as Ja};
@@ -0,0 +1 @@
1
+ import{expandTarget as w}from"@iiif/helpers";function W(e){return e.type==="SpecificResource"?[e.source,{selector:e.selector}]:[e,{selector:null}]}function c(e,o){let{selector:r,source:i}=w(o);if(i.id!==e.id)return[null,i];let t={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}};return[r?r.type==="TemporalSelector"?{type:"TemporalBoxSelector",temporal:r.temporal,spatial:t.spatial}:r:null,i]}var k={makeChoice:()=>{}},l={type:"unknown"},n=e=>({type:"unknown",reason:e,annotations:{pages:[]}}),y=(e,o)=>({type:"empty",width:e,height:o,annotations:{pages:[]},image:null,images:[]});var P=["model/gltf-binary"];function S(e,o){let i=o.items[0].resource;return i.format?P.indexOf(i.format)===-1?n(`3D format: ${i.format} is unsupported`):{type:"3d-model",model:i}:n("Unknown format")}import{getImageServices as N}from"@atlas-viewer/iiif-image-api";import{expandTarget as h}from"@iiif/helpers/annotation-targets";function x(e,o,r){let i=[];for(let t of o.items){let a=t.resource&&t.resource.type==="SpecificResource"?t.resource.source:t.resource;if(!a.id)return n("No resource Identifier");let s;if(a.service){let u=N(a);u[0]&&(s=r(u[0],e))}let p={type:"BoxSelector",spatial:{x:0,y:0,width:Number(e.width),height:Number(e.height)}},[d,f]=c(e,t.target);if(!(f.id===e.id||decodeURIComponent(f.id||"")===(e.id||"")))continue;let z=t.resource.width&&t.resource.height?{type:"BoxSelector",spatial:{x:0,y:0,width:t.resource.width,height:t.resource.height}}:void 0,m=t.resource.type==="SpecificResource"?h(t.resource):null;if(t.selector){let u=h({type:"SpecificResource",source:t.resource,selector:t.selector});u&&(m=u)}let g=m&&m.selector&&(m.selector.type==="BoxSelector"||m.selector.type==="TemporalBoxSelector")?{type:"BoxSelector",spatial:{x:m.selector.spatial.x,y:m.selector.spatial.y,width:m.selector.spatial.width,height:m.selector.spatial.height}}:void 0;s&&!s.id&&(s.id=s["@id"]);let R={id:a.id,type:"Image",annotationId:t.annotationId,width:Number(d||g?a.width:e.width),height:Number(d||g?a.height:e.height),service:s,sizes:s&&s.sizes?s.sizes:a.width&&a.height?[{width:a.width,height:a.height}]:[],target:d&&d.type!=="PointSelector"?d:p,selector:g};i.push(R)}return{type:"images",image:i[0],images:i,choice:o.choice}}function T(e,o={},r){let i=e.language||r||"none";switch(e.type){case"TextualBody":{typeof e.value<"u"&&(o[i]=e.value);break}case"List":case"Composite":case"Choice":e.items&&e.items.forEach(t=>T(t,o,i))}return o}function I(e,o){let r=[];return o.items.forEach(i=>{if(i.resource){let[t]=c(e,i.target);r.push({annotationId:i.annotationId,text:T(i.resource),target:t})}}),{type:"textual-content",items:r}}var b=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function C(e,o){let r=o.items.filter(p=>p.type==="video"),i=!1;if(e.duration||(i=!0),r.length>1)return n("Only one video source supported");let t=r[0]?.resource,a=!!(t.service||[]).find(p=>(p.profile||"").includes("youtube.com"));if(!a&&i)return n("Video does not have duration");if(!t)return n("Unknown video");if((!t.format||t.format==="text/html")&&!a)return n("Video does not have format");let s={annotationId:o.items[0].annotationId,duration:e.duration,url:t.id,type:"Video",items:[],target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:t.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}};if(a){s.type="VideoYouTube";let p=t.id.match(b);if(!p[1])return n("Video is not known youtube video");s.youTubeId=p[1]}return{type:"media",media:s,annotations:{pages:[]}}}function v(e,o){if(!e.duration)return n("No duration on canvas");if(o.items.length>1)return n("Only one audio source supported");let r=o.items[0]?.resource;return r?r.format?{type:"media",media:{annotationId:o.items[0].annotationId,duration:e.duration,url:r.id,type:"Sound",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:r.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},annotations:{pages:[]}}:n("Audio does not have format"):n("Unknown audio")}function te({canvas:e,paintables:o,supports:r,loadImageService:i}){if(!e)return console.log("No canvas"),l;if(o.types.length===0)return r.indexOf("empty")!==-1?y(e.width,e.height):(console.log("No paintables"),l);if(o.types.length!==1)if(o.types.length===2&&o.types.indexOf("text")!==-1)o.types=o.types.filter(a=>a!=="text");else return r.indexOf("complex-timeline")===-1?n("Complex timeline not supported"):n("ComplexTimelineStrategy not yet supported");let t=o.types[0];return t==="image"?r.indexOf("images")===-1?n("Image not supported"):x(e,o,i):t==="Model"||t==="model"?r.indexOf("3d-model")===-1?n("3D not supported"):S(e,o):t==="textualbody"?r.indexOf("textual-content")===-1?n("Textual content not supported"):I(e,o):t==="sound"||t==="audio"?r.indexOf("media")===-1?n("Media not supported"):v(e,o):t==="video"?r.indexOf("media")===-1?n("Media not supported"):C(e,o):l}export{W as a,c as b,k as c,l as d,n as e,y as f,S as g,x as h,I as i,C as j,te as k};
@@ -0,0 +1,188 @@
1
+ import { ReactNode, FC, RefObject, ForwardRefExoticComponent, RefAttributes } from 'react';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
+ import { AtlasProps, BoxStyle, ViewerMode } from '@atlas-viewer/atlas';
4
+ import { AnnotationPage, Reference } from '@iiif/presentation-3';
5
+ import { AnnotationPageNormalized } from '@iiif/presentation-3-normalized';
6
+ import { S as StrategyActions, a as SingleImageStrategy, E as EmptyStrategy, M as MediaStrategy, R as RenderingStrategy, I as ImageWithOptionalService, b as SingleAudio, c as SingleVideo } from './useRenderingStrategy-Xj9yQm4y.cjs';
7
+ import { ChoiceDescription, BoxSelector } from '@iiif/helpers';
8
+ import { ImageCandidate } from '@atlas-viewer/iiif-image-api';
9
+ import { Vault } from '@iiif/helpers/vault';
10
+
11
+ declare function Viewer({ children, errorFallback, outerContainerProps, worldScale: _worldScale, ...props }: AtlasProps & {
12
+ height?: number | string;
13
+ width?: number | string;
14
+ resizeHash?: number;
15
+ containerProps?: any;
16
+ outerContainerProps?: any;
17
+ aspectRatio?: number;
18
+ errorFallback?: any;
19
+ worldScale?: number;
20
+ } & {
21
+ children: ReactNode;
22
+ }): react_jsx_runtime.JSX.Element;
23
+
24
+ declare const RenderAnnotation: FC<{
25
+ id: string;
26
+ className?: string;
27
+ style?: BoxStyle;
28
+ interactive?: boolean;
29
+ }>;
30
+
31
+ declare const RenderAnnotationPage: FC<{
32
+ page: AnnotationPage | AnnotationPageNormalized;
33
+ className?: string;
34
+ }>;
35
+
36
+ type CanvasProps = {
37
+ x?: number;
38
+ y?: number;
39
+ onCreated?: any;
40
+ onChoiceChange?: (choice?: ChoiceDescription) => void;
41
+ registerActions?: (actions: StrategyActions) => void;
42
+ defaultChoices?: Array<{
43
+ id: string;
44
+ opacity?: number;
45
+ }>;
46
+ isStatic?: boolean;
47
+ keepCanvasScale?: boolean;
48
+ children?: ReactNode;
49
+ renderViewerControls?: (strategy: SingleImageStrategy | EmptyStrategy) => ReactNode;
50
+ viewControlsDeps?: any[];
51
+ renderMediaControls?: (strategy: MediaStrategy) => ReactNode;
52
+ mediaControlsDeps?: any[];
53
+ strategies?: Array<RenderingStrategy['type']>;
54
+ backgroundStyle?: BoxStyle;
55
+ alwaysShowBackground?: boolean;
56
+ enableSizes?: boolean;
57
+ enableYouTube?: boolean;
58
+ ignoreSize?: boolean;
59
+ throwOnUnknown?: boolean;
60
+ onClickPaintingAnnotation?: (id: string, image: ImageWithOptionalService, e: any) => void;
61
+ };
62
+ declare function RenderCanvas({ x, y, onChoiceChange, registerActions, defaultChoices, isStatic, renderViewerControls, renderMediaControls, viewControlsDeps, mediaControlsDeps, strategies, throwOnUnknown, backgroundStyle, alwaysShowBackground, keepCanvasScale, enableSizes, enableYouTube, onClickPaintingAnnotation, children, }: CanvasProps): react_jsx_runtime.JSX.Element | null;
63
+
64
+ declare function RenderImage({ id, image, thumbnail, isStatic, x, y, children, selector, onClick, enableSizes, }: {
65
+ id: string;
66
+ image: ImageWithOptionalService;
67
+ thumbnail?: ImageCandidate;
68
+ isStatic?: boolean;
69
+ enableSizes?: boolean;
70
+ selector?: BoxSelector;
71
+ x?: number;
72
+ y?: number;
73
+ children?: ReactNode;
74
+ onClick?: (e: any) => void;
75
+ }): react_jsx_runtime.JSX.Element;
76
+
77
+ declare function CanvasBackground({ style }: {
78
+ style?: BoxStyle;
79
+ }): react_jsx_runtime.JSX.Element | null;
80
+
81
+ type SimpleViewerContext = {
82
+ items: Reference<'Canvas'>[];
83
+ sequence: number[][];
84
+ hasNext: boolean;
85
+ hasPrevious: boolean;
86
+ setSequenceIndex: (newId: number) => void;
87
+ setCurrentCanvasId: (newId: string) => void;
88
+ setCurrentCanvasIndex: (newId: number) => void;
89
+ currentSequenceIndex: number;
90
+ nextCanvas: () => void;
91
+ previousCanvas: () => void;
92
+ };
93
+ type SimpleViewerProps = {
94
+ vault?: Vault;
95
+ manifest: string;
96
+ pagingEnabled?: boolean;
97
+ children: ReactNode;
98
+ startCanvas?: string;
99
+ rangeId?: string;
100
+ };
101
+ type SimpleViewerReducerState = {
102
+ sequence: number[][];
103
+ availableCanvases: Reference<'Canvas'>[];
104
+ visibleCanvases: Reference<'Canvas'>[];
105
+ currentCanvas: string | null;
106
+ isPaged: boolean;
107
+ rangeId: string | null;
108
+ };
109
+ interface SimpleViewerActions {
110
+ setCurrentCanvasId(newId: string): void;
111
+ setCurrentCanvasIndex(newId: number): void;
112
+ nextCanvas(): void;
113
+ previousCanvas(): void;
114
+ setCurrentRange(newId: string): void;
115
+ clearRange(): void;
116
+ setPagingEnabled(isEnabled: boolean): void;
117
+ }
118
+ type SimpleViewerActionsType = {
119
+ [T in keyof SimpleViewerActions]: {
120
+ type: T;
121
+ payload: Parameters<SimpleViewerActions[T]>[0];
122
+ };
123
+ }[keyof SimpleViewerActions];
124
+
125
+ declare function AudioHTML({ media, children }: {
126
+ media: SingleAudio;
127
+ children: ReactNode;
128
+ }): react_jsx_runtime.JSX.Element;
129
+ declare function Audio({ media, mediaControlsDeps, children, }: {
130
+ media: SingleAudio;
131
+ mediaControlsDeps?: any[];
132
+ children: ReactNode;
133
+ }): null;
134
+
135
+ declare function VideoHTML({ element, media, playPause, }: {
136
+ element: RefObject<any>;
137
+ media: SingleVideo;
138
+ playPause: () => void;
139
+ }): react_jsx_runtime.JSX.Element;
140
+ declare function Video({ media, mediaControlsDeps, children, }: {
141
+ media: SingleVideo;
142
+ mediaControlsDeps?: any[];
143
+ children: ReactNode;
144
+ }): null;
145
+
146
+ declare function ModelHTML({ model }: {
147
+ model: any;
148
+ }): react_jsx_runtime.JSX.Element;
149
+ declare function Model({ model, name }: {
150
+ model: any;
151
+ name?: string;
152
+ }): null;
153
+
154
+ interface CanvasPanelProps {
155
+ manifest: string;
156
+ startCanvas?: string;
157
+ rangeId?: string;
158
+ pagingEnabled?: boolean;
159
+ header?: ReactNode;
160
+ children?: ReactNode;
161
+ mode?: ViewerMode;
162
+ reuseAtlas?: boolean;
163
+ height?: number;
164
+ spacing?: number;
165
+ components?: {
166
+ ViewerControls?: FC;
167
+ MediaControls?: FC;
168
+ };
169
+ canvasProps?: Omit<Partial<CanvasProps>, 'x'>;
170
+ annotations?: ReactNode;
171
+ }
172
+ type CanvasPanelType = ForwardRefExoticComponent<CanvasPanelProps & RefAttributes<SimpleViewerContext>> & {
173
+ RenderImage: typeof RenderImage;
174
+ RenderCanvas: typeof RenderCanvas;
175
+ RenderAnnotationPage: typeof RenderAnnotationPage;
176
+ RenderAnnotation: typeof RenderAnnotation;
177
+ Viewer: typeof Viewer;
178
+ CanvasBackground: typeof CanvasBackground;
179
+ Audio: typeof Audio;
180
+ Video: typeof Video;
181
+ Model: typeof Model;
182
+ AudioHTML: typeof AudioHTML;
183
+ VideoHTML: typeof VideoHTML;
184
+ ModelHTML: typeof ModelHTML;
185
+ };
186
+ declare const CanvasPanel: CanvasPanelType;
187
+
188
+ export { CanvasPanel as C, type SimpleViewerContext as S, type SimpleViewerProps as a, type SimpleViewerReducerState as b, type SimpleViewerActions as c, type SimpleViewerActionsType as d };