react-iiif-vault 1.0.11 → 1.1.1

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 +1059 -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-DXFXJCXN.js +1 -0
  8. package/dist/chunk-VPKD2BBH.js +47 -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 +722 -0
  13. package/dist/index.d.ts +722 -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 -3319
  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 -1858
  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 -3319
  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 De=Object.defineProperty;var Pr=Object.getOwnPropertyDescriptor;var Ir=Object.getOwnPropertyNames;var wr=Object.getPrototypeOf,Tr=Object.prototype.hasOwnProperty;var Mr=(e,n)=>{for(var t in n)De(e,t,{get:n[t],enumerable:!0})},Lt=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of Ir(n))!Tr.call(e,o)&&o!==t&&De(e,o,{get:()=>n[o],enumerable:!(r=Pr(n,o))||r.enumerable});return e};var ie=(e,n,t)=>(t=e!=null?Rr(wr(e)):{},Lt(n||!e||!e.__esModule?De(t,"default",{value:e,enumerable:!0}):t,e)),Vr=e=>Lt(De({},"__esModule",{value:!0}),e);var so={};Mr(so,{CanvasPanel:()=>V});module.exports=Vr(so);var Oe=require("react");var M=ie(require("react"),1),Ze=require("@atlas-viewer/atlas"),Nn=require("react-error-boundary");var ee=require("react");var ae=ie(require("react"),1),zt=require("react/jsx-runtime"),Nr={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},Ue=ae.default.createContext(Nr),H=()=>(0,ae.useContext)(Ue);function Y({value:e,children:n}){let t=H(),r=(0,ae.useMemo)(()=>({...t,...e}),[e,t]);return(0,zt.jsx)(Ue.Provider,{value:r,children:n})}var Be=ie(require("react"),1),Ce=require("@iiif/helpers/vault");var pt=require("react/jsx-runtime"),X=Be.default.createContext({vault:null,setVaultInstance:e=>{}});function se({vault:e,vaultOptions:n,useGlobal:t,resources:r,children:o}){let[a,i]=(0,Be.useState)(()=>e||(t?(0,Ce.globalVault)(n):n?new Ce.Vault(n):new Ce.Vault));return(0,pt.jsx)(X.Provider,{value:{vault:a,setVaultInstance:i},children:(0,pt.jsx)(Y,{value:r||{},children:o})})}var pn=require("react"),Ye=require("react");var Ot=require("@iiif/helpers/vault"),Ft=require("react");function ue(e){let n=(0,Ft.useContext)(X);return e||(n&&n.vault?n.vault:(0,Ot.globalVault)())}var Q=require("react");function Ht(e,{noCache:n=!1}={}){let t=typeof e=="string"?e:e.id,r=ue(),[o,a]=(0,Q.useState)(t),[i,s]=(0,Q.useState)(void 0),u=(0,Q.useMemo)(()=>r.get(t,{skipSelfReturn:!0})||void 0,[t,r]),[c,l]=(0,Q.useState)(u);return(0,Q.useEffect)(()=>{(async()=>{try{let d=u&&!n?u:await r.load(t),g=d?d.id||d["@id"]:null;d&&o!==g&&a(g),l(d)}catch(d){s(d)}})()},[t,n]),{isLoaded:!!c,id:o,requestId:t,error:i,resource:c,cached:!!(c&&c===u)}}function Dt(e,n){let{id:t,isLoaded:r,error:o,resource:a,requestId:i,cached:s}=Ht(e,n);return{id:t,isLoaded:r,error:o,manifest:a,requestId:i,cached:s}}var Bt=require("react/jsx-runtime");function Ut({manifest:e,children:n}){return(0,Bt.jsx)(Y,{value:{manifest:e},children:n})}var _t=require("react/jsx-runtime");function ce({canvas:e,children:n}){return(0,_t.jsx)(Y,{value:{canvas:e},children:n})}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 _e=require("react");function y(e,n=[]){let t=h(),[r,o]=(0,_e.useState)(()=>e(t.getState(),t));return(0,_e.useEffect)(()=>t.subscribe(a=>e(a,t),a=>{o(a)},!1),n),r}var le=Wt.default.createContext([]);function qe(){let e=(0,$t.useContext)(le);return y(n=>e.map(t=>n.iiif.entities.Canvas[t]).filter(Boolean),[e])}var jt=require("react");function k(e={},n=[]){let{id:t,selector:r}=e,o=H(),a=h(),i=t||o.manifest,s=y(u=>i?u.iiif.entities.Manifest[i]:void 0,[i]);return(0,jt.useMemo)(()=>{if(s)return r?r(s):s},[s,r,...n])}var Qt=require("react/jsx-runtime");function Yt({range:e,children:n}){return(0,Qt.jsx)(Y,{value:{range:e},children:n})}function gt(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(...gt(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 Gt(e,n,{disablePaging:t,skipNonPaged:r}={}){let o=n.behavior,a=o.includes("paged"),i=a?!1:o.includes("continuous"),s=a||i?!1:o.includes("individuals"),u=n.type==="Manifest"?n.items:gt(e,n);if(i)return[u,[u.map((f,p)=>p)]];if(s||!a||t)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 D=require("react");var Zt=require("react");function Kt(e={},n=[]){let{id:t,selector:r}=e,o=H(),a=t||o.range,i=y(s=>a?s.iiif.entities.Range[a]:void 0,[a]);return(0,Zt.useMemo)(()=>{if(i)return r?r(i):i},[i,r,...n])}function Jt({startCanvas:e,disablePaging:n}){let t=h(),r=k(),o=Kt(),[a,i]=(0,D.useState)(void 0),s=o||r;if(!s)throw new Error("Nothing selected");let[u,c]=(0,D.useMemo)(()=>Gt(t,s,{disablePaging:n}),[t,s,n]),l=(0,D.useRef)(c);if(l.current!==c){let b=l.current[a][0],x=c.findIndex(W=>W.includes(b));l.current=c,i(x)}let d=(0,D.useCallback)(p=>{let b=c.findIndex(x=>x.includes(p));i(b===-1?0:b)},[u,c]),g=(0,D.useCallback)(p=>{let b=u.findIndex(x=>x.id===p);b!==-1?d(b):i(0)},[u,c]),S=(0,D.useCallback)(()=>{i(p=>p>=c.length-1?p:p+1)},[c]),f=(0,D.useCallback)(()=>{i(p=>p<=0?0:p-1)},[c]);return typeof a>"u"&&(e?g(e):i(0)),{visibleItems:c[a]?.map(p=>u[p].id)||[],cursor:a,items:u,sequence:c,hasPrevious:a>0,hasNext:a<c.length-1,setSequenceIndex:i,setCanvasIndex:d,setCanvasId:g,next:S,previous:f}}var O=require("react");var de=require("react");var vt=require("zustand/vanilla");function U(e,n,t){let r=n.findIndex(i=>i.service.id===e);if(r===-1)return n;let o=[...n],a=t(o[r]);return a===o[r]?n:(o[r]=a,o)}var Xt=()=>(0,vt.createStore)((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:U(t.id,n().authItems,o=>({...o,isPending:!0}))})),ht(t.service).then(()=>{$e(r).then(o=>{let a=o.expiresIn,i=Date.now()+a*1e3;e(()=>({authItems:U(t.id,n().authItems,s=>({...s,isLoggedIn:!0,isPending:!1,session:{token:o.accessToken,expires:i}}))}))}).catch(o=>{e(()=>({authItems:U(t.id,n().authItems,a=>({...a,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=${nn()}`,a=window.open(o);e(()=>({authItems:U(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(s=>s.type==="AuthAccessTokenService2"),a=t;if(n().authItems.find(s=>s.service.id===t.id)){e(()=>({authItems:U(t.id,n().authItems,s=>({...s,instances:s.instances+1}))}));return}if(e(()=>({currentAuth:a.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");$e(o).then(s=>{e(()=>({authItems:U(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:U(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:s.message}))}))})}if(t.profile==="kiosk"){if(!o)throw new Error("Token service not found");e(()=>({authItems:U(t.id,n().authItems,s=>({...s,isPending:!0}))})),ht(a).then(()=>{$e(o).then(s=>{e(()=>({authItems:U(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:U(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,error:s.message}))}))})})}t.profile},removeService:(t,r)=>{let o=n().currentAuth===n().authItems.findIndex(i=>i.service.id===t.id),a=n().currentAuth;if(o){let i=n().authItems.find(u=>u.service.id===t.id);i&&i.instances>1||(a=n().authItems.findIndex(c=>c.service.id!==t.id&&c.instances>0))}e(()=>({authItems:U(t.id,n().authItems,i=>({...i,instances:i.instances-1})),currentAuth:a}))}})),en=(e,n)=>(0,vt.createStore)((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 a=r().token;try{let i=await fetch(o,{headers:a?{Authorization:`Bearer ${r().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(s=>s.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 tn(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(a=>a.type==="AuthAccessService2");o[0]&&(t.services.access=o[0])}return t}async function $e(e,{strict:n=!0}={}){return new Promise((t,r)=>{let o=Math.random().toString(36).substring(7),a=`${e.id}?messageId=${o}&origin=${window.location.origin}`,i=c=>{let l=c.data;if(l.messageId===o){if(n&&l.type!=="AuthAccessToken2"){s(),r("Invalid response, expected type=AuthAccessToken2");return}if(!l.accessToken){s(),r("Invalid response, expected accessToken");return}s(),t(l)}},s=()=>window.removeEventListener("message",i),u=document.createElement("iframe");u.src=a,u.style.display="none",document.body.appendChild(u),window.addEventListener("message",i)})}function nn(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 ht(e){let n=`${e.id}?origin=${nn()}`,t=window.open(n);if(!t)throw new Error("Failed to open window");return new Promise((r,o)=>{let a=setInterval(()=>{t.closed&&(clearInterval(a),r())},500)})}var rn=require("zustand");function on(e){let n=(0,de.useMemo)(()=>tn(e),[e]),t=an(n.services.access?.id),r=(0,de.useMemo)(()=>en(n.services.probe,t),[n.services.probe]),o=(0,rn.useStore)(r);return(0,de.useEffect)(()=>{o.status==="unknown"&&!t&&o.probe()},[n.services.probe,o.status]),(0,de.useEffect)(()=>{t&&(o.setToken(t),o.probe())},[t]),[e,o,n.hasAuth]}var We=require("zustand"),be=require("react/jsx-runtime"),me=(0,O.createContext)(null),kr=(0,O.createContext)(null);kr.displayName="CurrentAuth";var Er=(0,O.createContext)(null);Er.displayName="AuthActions";function sn({children:e}){let n=(0,O.useMemo)(()=>Xt(),[]);return(0,be.jsx)(me.Provider,{value:n,children:e})}function un(){return!!(0,O.useContext)(me)}function St(){let e=(0,O.useContext)(me);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function Lr(){let e=St();return(0,We.useStore)(e,t=>({login:t.login,logout:t.logout,nextAuth:t.nextAuth,previousAuth:t.previousAuth,setAuth:t.setAuth,addService:t.addService,removeService:t.removeService}))}function zr(e){let n=St();return(0,We.useStore)(n,r=>r.authItems.find(o=>o.service.id===e))}function an(e){let n=St();return(0,We.useStore)(n,r=>r.authItems.find(o=>o.id===e)?.session?.token)}function Or(e){let n=Lr(),t=zr(e.service.id);return(0,O.useEffect)(()=>(n?.addService(e.service,e.probeId),()=>{n?.removeService(e.service,e.probeId)}),[e.service]),t?(t.error||!t.isLoggedIn,e.children):null}function yt(){return null}function cn(e){let[n,t,r]=on(e.resource),o=e.fallbackComponent||yt,a=e.loadingComponent||yt,i=e.errorComponent||yt,s=t.service,u=null;if(!r||!s)return e.children(n);let c=s.service.filter(l=>l.type==="AuthAccessService2");t.status==="error"&&(u=(0,be.jsx)(i,{resource:e.resource,error:t.error||"",heading:t.errorHeading,note:t.errorNote,extra:e.extra})),(t.status==="unknown"||t.status==="probing")&&(u=(0,be.jsx)(a,{})),t.status==="success"&&(u=e.children(n));for(let l of c)u=(0,be.jsx)(Or,{service:l,probeId:s.id,children:u},l.id);return u}var Re=require("react");var ln=require("zustand/vanilla"),Fr=e=>e.id||e["@id"];function Hr(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 dn=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?Fr(n):void 0,r=null;return(0,ln.createStore)((o,a)=>({service:n,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!n,hasAutocomplete:n?!!Hr(n):!1,errorMessage:"",search(i,s={}){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",...s.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 s=a().resources.find(u=>u["@id"]===i);o({highlight:s})},nextResult(){let i=a().resources,s=a().highlight;if(!s){o({highlight:i[0]||null});return}let u=i.findIndex(c=>c["@id"]===s["@id"]);if(u===-1){o({highlight:i[0]||null});return}o({highlight:i[u+1]||i[0]||null})},previousResult(){let i=a().resources,s=a().highlight;if(!s){o({highlight:i[i.length-1]||null});return}let u=i.findIndex(c=>c["@id"]===s["@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 Dr=require("zustand");function mn(){let e=k();return e?e.service.find(n=>n.profile==="SearchService1"||n.profile==="http://iiif.io/api/search/1/search"):void 0}var je=require("react/jsx-runtime"),fe=(0,Re.createContext)(null);fe.displayName="Search";function fn(e){let n=mn();return e.store?(0,je.jsx)(fe.Provider,{value:e.store,children:e.children}):(0,je.jsx)(Ur,{service:n,children:e.children})}function Ur({service:e,children:n}){let t=(0,Re.useMemo)(()=>dn(e),[e]);return(0,je.jsx)(fe.Provider,{value:t,children:n})}var E=require("react/jsx-runtime"),Pe=()=>{},Ie=(0,Ye.createContext)({setCurrentCanvasId:Pe,setCurrentCanvasIndex:Pe,nextCanvas:Pe,previousCanvas:Pe,items:[],sequence:[],setSequenceIndex:Pe,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function Br(e){let n=k(),{cursor:t,visibleItems:r,next:o,sequence:a,items:i,setCanvasIndex:s,setCanvasId:u,previous:c,setSequenceIndex:l,hasNext:d,hasPrevious:g}=Jt({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),S=(0,Ye.useMemo)(()=>({sequence:a,items:i,setCurrentCanvasId:u,nextCanvas:o,previousCanvas:c,totalCanvases:i.length,setCurrentCanvasIndex:s,setSequenceIndex:l,currentSequenceIndex:t,hasNext:d,hasPrevious:g}),[a,i,u,o,c,i,s,l,t]);return n?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 gn(e){let n=ue(e.vault),t=Dt(e.manifest);if(!t)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(t.error)return(0,E.jsx)("div",{children:t.error.toString()});if(!t.isLoaded)return(0,E.jsx)("div",{children:"Loading..."});let r=(0,E.jsx)(Br,{...e,children:e.children});return(0,E.jsx)(se,{vault:n,children:(0,E.jsx)(Ut,{manifest:t.id,children:(0,E.jsx)(sn,{children:(0,E.jsx)(fn,{children:e.rangeId?(0,E.jsx)(Yt,{range:e.rangeId,children:r}):r})})})})}function hn(){return(0,pn.useContext)(Ie)}var pe=require("react/jsx-runtime");function vn(){return{VaultContext:(0,ee.useContext)(X),ResourceContext:(0,ee.useContext)(Ue),SimpleViewerReactContext:(0,ee.useContext)(Ie),VisibleCanvasReactContext:(0,ee.useContext)(le),AuthRContext:(0,ee.useContext)(me),SearchReactContext:(0,ee.useContext)(fe)}}function yn(e){return(0,pe.jsx)(se,{vault:e.bridge.VaultContext.vault||void 0,resources:e.bridge.ResourceContext,children:(0,pe.jsx)(le.Provider,{value:e.bridge.VisibleCanvasReactContext,children:(0,pe.jsx)(Ie.Provider,{value:e.bridge.SimpleViewerReactContext,children:(0,pe.jsx)(me.Provider,{value:e.bridge.AuthRContext,children:(0,pe.jsx)(fe.Provider,{value:e.bridge.SearchReactContext,children:e.children})})})})})}var ge=require("react");var $=require("react");var Qe=require("@iiif/helpers/vault/actions");var Sn=require("react");function xn(){let n=h().getStore();return(0,Sn.useMemo)(()=>t=>n.dispatch(t),[n])}function An(e){return typeof e!="string"&&e&&e.bindToVault}function Cn(){let e=h(),n=(0,$.useRef)([]),t=xn(),r=(0,$.useMemo)(()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);(0,$.useLayoutEffect)(()=>{let s={id:r,type:"AnnotationPage",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],rendering:[],service:[]};t(Qe.entityActions.importEntities({entities:{AnnotationPage:{[s.id]:s}}}))},[r]);let o=y(s=>r&&s.iiif.entities.AnnotationPage[r]||null,[r]),a=(0,$.useCallback)((s,u)=>{if(r){if(An(s)){let d=s;d.__vault||d.bindToVault(e),s=typeof d.source=="string"?d.source:d.source.id,n.current[s]=d}else typeof s!="string"&&(s=s.id);let c=e.get({id:r,type:"AnnotationPage"}),l=e.get({id:s,type:"Annotation"});c&&l&&(c.items.find(d=>d.id===l.id)||t(Qe.entityActions.addReference({id:r,type:"AnnotationPage",key:"items",reference:{id:s,type:"Annotation"},index:u})))}},[r]),i=(0,$.useCallback)(s=>{r&&(An(s)?s=typeof s.source=="string"?s.source:s.source.id:typeof s!="string"&&(s=s.id),n.current[s]&&n.current[s].beforeRemove(),e.get({id:r,type:"AnnotationPage"})&&t(Qe.entityActions.removeReference({id:r,type:"AnnotationPage",key:"items",reference:{id:s,type:"Annotation"}})))},[r]);return[o,{addAnnotation:a,removeAnnotation:i}]}var In=require("react/jsx-runtime"),bn=(0,ge.createContext)(null);function Rn(){let e=(0,ge.useContext)(bn);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function Pn({children:e}){let[n,{addAnnotation:t,removeAnnotation:r}]=Cn();return(0,In.jsx)(bn.Provider,{value:(0,ge.useMemo)(()=>({fullPage:n,addAnnotation:t,removeAnnotation:r}),[n]),children:e})}var he=require("react/jsx-runtime");function wn({width:e,style:n,height:t,error:r,resetErrorBoundary:o}){return(0,he.jsxs)("div",{style:{width:e,height:t,minHeight:500,...n||{},background:"#f9f9f9"},children:[(0,he.jsx)("h3",{children:"Error occurred"}),(0,he.jsx)("p",{children:r.message}),(0,he.jsx)("button",{onClick:o,children:"Reset"})]})}var Ge=require("react"),we=(0,Ge.createContext)(null);function Tn(){return(0,Ge.useContext)(we)}var te=require("react"),xt=(0,te.createContext)(()=>{}),At=(0,te.createContext)(()=>{});function B(e,n,t,r,o=[]){let a=(0,te.useContext)(e==="portal"?At:xt);(0,te.useEffect)(()=>(e!=="none"&&a(n,t,r),()=>{a(n,null)}),[n,e,a,...o])}var ve=require("react");var Mn=require("react");function w(e={},n=[]){let{id:t,selector:r}=e,o=H(),a=t||o.canvas,i=y(s=>a?s.iiif.entities.Canvas[a]:void 0,[a]);return(0,Mn.useMemo)(()=>{if(i)return r?r(i):i},[i,r,...n])}var Ct=(0,ve.createContext)(()=>{});function Vn(e){let n=w(),t=(0,ve.useContext)(Ct);(0,ve.useEffect)(()=>n&&n.id?(t(n.id,e),()=>t(n.id,-1)):()=>{},[n,e])}var I=require("react/jsx-runtime");function kn({children:e,errorFallback:n,outerContainerProps:t={},worldScale:r,...o}){let[a,i]=(0,M.useState)(),s=vn(),u=n||wn,[c,l]=(0,M.useState)({}),d=Object.entries(c),[g,S]=(0,M.useState)({}),f=Object.entries(g),[p,b]=(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)((R,T)=>{b(z=>{if(T===-1){let{[R]:m,...q}=z;return q}return{...z,[R]:T}})},[]),ft=(0,M.useCallback)((R,T,z)=>{l(({[R]:m,...q})=>T?{...q,[R]:{element:T,props:z}}:q)},[]),Fe=(0,M.useCallback)((R,T,z)=>{S(({[R]:m,...q})=>T?{...q,[R]:{element:T,props:z}}:q)},[]);return(0,I.jsxs)(Nn.ErrorBoundary,{resetKeys:[],fallbackRender:R=>(0,I.jsx)(u,{...o,...R}),children:[(0,I.jsx)(Ze.AtlasAuto,{...o,containerProps:{style:{position:"relative"},...o.containerProps||{}},htmlChildren:(0,I.jsx)(I.Fragment,{children:d.map(([R,{element:T,props:z}])=>(0,I.jsx)(M.default.Fragment,{children:(0,I.jsx)(T,{...z||{}})},R))}),onCreated:R=>{i(R),o.onCreated&&o.onCreated(R)},runtimeOptions:W,children:(0,I.jsx)(we.Provider,{value:a,children:(0,I.jsx)(Ct.Provider,{value:N,children:(0,I.jsx)(xt.Provider,{value:ft,children:(0,I.jsx)(At.Provider,{value:Fe,children:(0,I.jsx)(yn,{bridge:s,children:(0,I.jsx)(Ze.ModeContext.Provider,{value:o.mode||"explore",children:(0,I.jsx)(Pn,{children:e})})})})})})})}),(0,I.jsx)("div",{children:f.map(([R,{element:T,props:z}])=>(0,I.jsx)(M.default.Fragment,{children:(0,I.jsx)(T,{...z||{}})},R))})]})}var Xe=require("@atlas-viewer/atlas");var bt=require("react"),En=require("@iiif/helpers/events");function Ke(e,n){let t=h(),r=(0,bt.useMemo)(()=>(0,En.createEventsHelper)(t),[t]),o=y(()=>e&&e.id?t.getResourceMeta(e.id,"eventManager"):null,[e]);return(0,bt.useMemo)(()=>e?r.getListenersAsProps(e,n):{},[o,e,t,n])}var Ln=require("react"),zn=require("@iiif/helpers/styles");function ye(e,n){let t=h(),r=(0,Ln.useMemo)(()=>(0,zn.createStylesHelper)(t),[t]);return y(()=>{if(!e)return null;let o=r.getAppliedStyles(e.id);return o?n?o[n]:o:void 0},[e,n])}var Hn=require("react");var On=require("react");var Fn=require("@iiif/helpers/annotation-targets");function Je(e={},n=[]){let{id:t,selector:r}=e,o=H(),a=h(),i=t||o.annotation,s=y(c=>i?c.iiif.entities.Annotation[i]:void 0,[i]),u=y(c=>s&&s.body?s.body.map(l=>l?l.type==="SpecificResource"?{...l,source:a.get(l)}:l?c.iiif.entities[l.type][l.id]:null:null).filter(Boolean):[],[s]);return(0,On.useMemo)(()=>{if(!s)return;let c={...s,body:u,target:(0,Fn.expandTarget)(s.target,{typeMap:a.getState().iiif.mapping})};return r?r(c):c},[s,r,u,...n])}var Dn=require("react/jsx-runtime"),et=({id:e,style:n,className:t,interactive:r})=>{let o=Je({id:e}),a=ye(o,"atlas"),i=ye(o,"html"),s=Ke(o,["atlas"]),u=w(),c=(0,Hn.useMemo)(()=>(0,Xe.mergeStyles)(n,a),[n,a]);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,Dn.jsx)(Xe.RegionHighlight,{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:()=>{},...s}):null};var _n=require("react");var Un=require("react");function Bn(e={},n=[]){let{id:t,selector:r}=e,o=H(),a=t||o.annotationPage,i=y(s=>a?s.iiif.entities.AnnotationPage[a]:void 0,[a]);return(0,Un.useMemo)(()=>{if(i)return r?r(i):i},[i,...n])}var Rt=require("react/jsx-runtime"),Te=({className:e,page:n})=>{let t=Bn({id:n.id})||n,r=ye(t,"atlas"),o=ye(t,"html");return y(a=>t.id?a.iiif.entities.AnnotationPage[t.id]:null,[]),(0,Rt.jsx)(_n.Fragment,{children:t.items?.map(a=>(0,Rt.jsx)(et,{id:a.id,style:r,className:o?.className||e},a.id))})};var xr=require("@iiif/helpers/styles");var Ne=require("react");var Ve=require("@atlas-viewer/atlas");var ne=ie(require("react"),1),G=require("react/jsx-runtime"),_r=ne.default.createContext("en");function $n(){return ne.default.useContext(_r)}function qn(e){return e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):e}function qr({as:e,language:n,children:t,viewingDirection:r,...o}){let a=$n();return(0,ne.useMemo)(()=>qn(a)===qn(n),[a,n])?e?(0,G.jsx)(e,{...o,children:t}):(0,G.jsx)("span",{...o,children:t}):e?(0,G.jsx)(e,{...o,lang:n,dir:r,children:t}):(0,G.jsx)("span",{...o,lang:n,dir:r,children:t})}function $r(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 Wr=(e,n=[])=>{let t=$n();return(0,ne.useMemo)(()=>{let r=e();return $r(t,r,[])},[t,...n])};function jr(e,n,t=`
2
+ `){let r=Wr(()=>Object.keys(e||{}),[e]);return[(0,ne.useMemo)(()=>{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 Me({as:e,defaultText:n,enableDangerouslySetInnerHTML:t,children:r,separator:o,...a}){let[i,s]=jr(r,n,o);return s?(0,G.jsx)(qr,{...a,as:e,language:s,title:t?void 0:i,dangerouslySetInnerHTML:t?{__html:i}:void 0,children:t?void 0:i}):e?(0,G.jsx)(e,{...a,children:i}):(0,G.jsx)("span",{...a,title:t?void 0:i,dangerouslySetInnerHTML:t?{__html:i}:void 0,children:t?void 0:i})}var F=require("react/jsx-runtime");function Yr({resource:e,heading:n,note:t,extra:r}){return r?(0,F.jsx)(Ve.HTMLPortal,{target:{x:0,y:0,width:r.target?.spatial.width,height:r.target?.spatial.height},backgroundColor:"#333",relative:!0,children:(0,F.jsx)("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:(0,F.jsxs)("div",{children:[(0,F.jsx)(Me,{children:n||"Not authorised"}),t&&(0,F.jsx)("p",{children:(0,F.jsx)(Me,{children:t})}),(0,F.jsx)("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}function Wn({image:e,thumbnail:n,crop:t,enableSizes:r}){if(!un()){let a=e.service,i=a.width||e.width||0,s=a.height||e.height||0;return(0,F.jsx)(Ve.TileSet,{tiles:{id:a.id||a["@id"]||"unknown",height:s,width:i,imageService:a},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:t})}return(0,F.jsx)(cn,{resource:e.service,errorComponent:Yr,extra:e,children:a=>{let i=a.width||e.width||0,s=a.height||e.height||0;return(0,F.jsx)(Ve.TileSet,{tiles:{id:a.id||a["@id"]||"unknown",height:s,width:i,imageService:a},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:t})}},e.id)}var re=require("react/jsx-runtime");function tt({id:e,image:n,thumbnail:t,isStatic:r,x:o=0,y:a=0,children:i,selector:s,onClick:u,enableSizes:c}){let l=(0,Ne.useMemo)(()=>{if(!(!s||s.spatial.x===0&&s.spatial.y===0))return s.spatial},[s]);return(0,re.jsx)("world-object",{x:o+n.target.spatial.x,y:a+n.target.spatial.y,width:n.target.spatial.width,height:n.target.spatial.height,onClick:u,children:n.service?(0,re.jsxs)(Ne.Fragment,{children:[(0,re.jsx)(Wn,{image:n,thumbnail:t,crop:l,enableSizes:c}),i]},"service"):(0,re.jsxs)(Ne.Fragment,{children:[(0,re.jsx)("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"))}var _=require("react"),Ar=require("@atlas-viewer/atlas");var It=require("react");var jn=require("@iiif/helpers");function nt(e,n){let{selector:t,source:r}=(0,jn.expandTarget)(n);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[t?t.type==="TemporalSelector"?{type:"TemporalBoxSelector",temporal:t.temporal,spatial:o.spatial}:t:null,r]}var Yn={makeChoice:()=>{}},rt={type:"unknown"},A=e=>({type:"unknown",reason:e,annotations:{pages:[]}}),Qn=(e,n)=>({type:"empty",width:e,height:n,annotations:{pages:[]},image:null,images:[]});var ke=require("react");function Qr(e,n){let t=e?.iiif?.meta[n];return t?t.annotationPageManager:null}function Gn(e,n){return y(t=>{let r=[];if(!e)return r;let o=Object.keys(t.iiif.entities.AnnotationPage);for(let a of o)if(!n||n.indexOf(a)!==-1){let i=Qr(t,a);i&&i.views&&i.views[e]&&r.push(a)}return r},[e,n])}function Zn({canvas:e,manifest:n,all:t,canvases:r}){let o=[];if(n)for(let a of n.annotations)o.indexOf(a.id)===-1&&o.push(a.id);if(t){if(r&&r.length)for(let a of r)for(let i of a.annotations)o.indexOf(i.id)===-1&&o.push(i.id)}else if(e)for(let a of e.annotations)o.indexOf(a.id)===-1&&o.push(a.id);return o}function Gr(e,n){let t=e?.iiif?.meta[n];return t?t.annotationPageManager:null}function Kn(e,n={}){let t=h(),r=k(),o=w(),a=qe(),i=(0,ke.useMemo)(()=>Zn({all:n.all,manifest:r,canvas:o,canvases:a}),[n.all,o,a,r]),s=Gn(e,n.all?void 0:i),u=(0,ke.useCallback)(l=>{e&&t.setMetaValue([l,"annotationPageManager","views"],d=>d&&!d[e]?d:{...d||{},[e]:!1})},[e,t]),c=(0,ke.useCallback)((l,d={})=>{if(!e)return;let g=t.getState(),S=[];if(d?.deselectOthers){let f=Object.keys(g.iiif.entities.AnnotationPage);for(let p of f){let b=Gr(g,p);b&&b.views&&b.views[e]&&S.push(p)}}for(let f of S)u(f);t.setMetaValue([l,"annotationPageManager","views"],f=>f&&f[e]?f:{...f||{},[e]:!0})},[e,u,t]);return{availablePageIds:i,enabledPageIds:s,setPageEnabled:c,setPageDisabled:u}}function Jn(e,n){return y((t,r)=>r.get(e.map(o=>({id:o,type:n}))),[e,n])}var Z=require("react");var ot=ie(require("react"),1),Xn=require("@atlas-viewer/iiif-image-api"),Zr=ot.default.createContext(new Xn.ImageServiceLoader);function it(){return(0,ot.useContext)(Zr)}function er(){let e=it(),[n,t]=(0,Z.useState)({}),r=(0,Z.useRef)(!1);return(0,Z.useEffect)(()=>()=>{r.current=!0},[]),[(0,Z.useCallback)((a,{height:i,width:s})=>{if(a){let u=a.id||a["@id"],c=e.loadServiceSync({id:u,width:a.width||s,height:a.height||i,source:a});c?a=c:n[u]||(r.current||t(l=>({...l,[u]:"loading"})),e.loadService({id:u,width:a.width||s,height:a.height||i}).then(()=>{r.current||t(l=>({...l,[u]:"done"}))}))}return a},[e,n]),n]}var oe=require("react");function tr(e={}){let n=Je(),t=w(e.canvasId?{id:e.canvasId}:void 0);return y((r,o)=>{if(!t)return[];if(n&&e.enableSingleAnnotation)return[n];let a=o.get(t.items),i=[];for(let s of a)i.push(...o.get(s.items));return i},[t])}var nr=require("@iiif/helpers/painting-annotations");function rr(e,n=[]){let t=h(),r=(0,oe.useMemo)(()=>(0,nr.createPaintingAnnotationsHelper)(t),[]),o=tr({enableSingleAnnotation:e?.enableSingleAnnotation}),[a,i]=(0,oe.useState)(e?.defaultChoices||[]),s=(0,oe.useMemo)(()=>r.getPaintables(o,a),[t,o,a,...n]),c={makeChoice:(0,oe.useCallback)((l,{deselectOthers:d=!0,deselect:g=!1}={})=>{if(s.choice){if(s.choice.type!=="single-choice")throw new Error("Complex choice not supported yet");i(S=>{if(g){let p=S.filter(b=>b!==l);if(p.length===0){let b=s.items[0].resource.id;return b?[b]:[]}return p}if(d)return[l];let f=[...S];if(f.length===0&&s.items.length){let p=s.items[0].resource.id;p&&f.push(p)}return S.indexOf(l)!==-1?S:[...S,l]})}},[s.choice])};return[s,c]}var Kr=["model/gltf-binary"];function or(e,n){let r=n.items[0].resource;return r.format?Kr.indexOf(r.format)===-1?A(`3D format: ${r.format} is unsupported`):{type:"3d-model",model:r}:A("Unknown format")}function ir(e,n){if(!e.duration)return A("No duration on canvas");if(n.items.length>1)return A("Only one audio source supported");let t=n.items[0]?.resource;return t?t.format?{type:"media",media:{annotationId:n.items[0].annotationId,duration:e.duration,url:t.id,type:"Sound",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:t.format,selector:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}}},annotations:{pages:[]}}:A("Audio does not have format"):A("Unknown audio")}var ar=require("@atlas-viewer/iiif-image-api");var Pt=require("@iiif/helpers/annotation-targets");function sr(e,n,t){let r=[];for(let o of n.items){let a=o.resource&&o.resource.type==="SpecificResource"?o.resource.source:o.resource;if(!a.id)return A("No resource Identifier");let i;if(a.service){let f=(0,ar.getImageServices)(a);f[0]&&(i=t(f[0],e))}let s={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,Pt.expandTarget)(o.resource):null;if(o.selector){let f=(0,Pt.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:a.id,type:"Image",annotationId:o.annotationId,width:Number(u||g?a.width:e.width),height:Number(u||g?a.height:e.height),service:i,sizes:i&&i.sizes?i.sizes:a.width&&a.height?[{width:a.width,height:a.height}]:[],target:u&&u.type!=="PointSelector"?u:s,selector:g};r.push(S)}return{type:"images",image:r[0],images:r,choice:n.choice}}function ur(e,n={},t){let r=e.language||t||"none";switch(e.type){case"TextualBody":{typeof e.value<"u"&&(n[r]=e.value);break}case"List":case"Composite":case"Choice":e.items&&e.items.forEach(o=>ur(o,n,r))}return n}function cr(e,n){let t=[];return n.items.forEach(r=>{if(r.resource){let[o]=nt(e,r.target);t.push({annotationId:r.annotationId,text:ur(r.resource),target:o})}}),{type:"textual-content",items:t}}var Jr=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function lr(e,n){let t=n.items.filter(s=>s.type==="video"),r=!1;if(e.duration||(r=!0),t.length>1)return A("Only one video source supported");let o=t[0]?.resource,a=!!(o.service||[]).find(s=>(s.profile||"").includes("youtube.com"));if(!a&&r)return A("Video does not have duration");if(!o)return A("Unknown video");if((!o.format||o.format==="text/html")&&!a)return A("Video does not have format");let i={annotationId:n.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(a){i.type="VideoYouTube";let s=o.id.match(Jr);if(!s[1])return A("Video is not known youtube video");i.youTubeId=s[1]}return{type:"media",media:i,annotations:{pages:[]}}}function dr({canvas:e,paintables:n,supports:t,loadImageService:r}){if(!e)return rt;if(n.types.length===0)return t.indexOf("empty")!==-1?Qn(e.width,e.height):rt;if(n.types.length!==1)if(n.types.length===2&&n.types.indexOf("text")!==-1)n.types=n.types.filter(a=>a!=="text");else return t.indexOf("complex-timeline")===-1?A("Complex timeline not supported"):A("ComplexTimelineStrategy not yet supported");let o=n.types[0];return o==="image"?t.indexOf("images")===-1?A("Image not supported"):sr(e,n,r):o==="Model"||o==="model"?t.indexOf("3d-model")===-1?A("3D not supported"):or(e,n):o==="textualbody"?t.indexOf("textual-content")===-1?A("Textual content not supported"):cr(e,n):o==="sound"||o==="audio"?t.indexOf("media")===-1?A("Media not supported"):ir(e,n):o==="video"?t.indexOf("media")===-1?A("Media not supported"):lr(e,n):rt}function mr(e){let n=k(),t=w(),r=h(),[o,a]=er(),{enabledPageIds:i}=Kn(e?.annotationPageManagerId||n?.id||t?.id,{all:!1}),s=Jn(i,"AnnotationPage"),u=e?.strategies||["empty","images","media","textual-content","complex-timeline"],[c,l]=rr(e,[a]),d=(0,It.useMemo)(()=>dr({canvas:t,paintables:c,supports:u,loadImageService:o}),[t,c,r,l.makeChoice]);return(0,It.useMemo)(()=>d.type==="unknown"?[d,Yn]:[{...d,annotations:{pages:s}},l],[d,s])}var K=require("react");var fr=require("react"),pr=(e,n=[])=>{let t=h();(0,fr.useEffect)(()=>{e(t)},[t,...n])};var gr=require("@iiif/helpers/thumbnail");function hr(e,n,{canvasId:t,manifestId:r}={}){let o=h(),a=it(),i=(0,K.useMemo)(()=>(0,gr.createThumbnailHelper)(o,{imageServiceLoader:a}),[o,a]),[s,u]=(0,K.useState)(),c=k(r?{id:r}:void 0),l=w(t?{id:t}: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 pr(S=>{i.getBestThumbnailAtSize(d,e,n).then(f=>{f.best&&!g.current&&u(f.best)})},[d]),s}var P=require("react");function Xr(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 to(e){let n=Math.round(e);return`${Math.floor(n/60)}:${`${n%60}`.padStart(2,"0")}`}function Se(e){let[n,t]=(0,P.useReducer)(eo,Xr(e.duration)),r=(0,P.useRef)(null),o=(0,P.useRef)(null),a=(0,P.useRef)(null),i=(0,P.useRef)(!1),s=(0,P.useCallback)(()=>{o.current&&r.current&&(o.current.innerHTML=to(r.current.currentTime),a.current&&(a.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=(0,P.useCallback)(()=>{r.current&&(t({type:"PLAY_REQUESTED"}),r.current.play().then(()=>{t({type:"PLAY"})}),s())},[s]),c=(0,P.useCallback)(()=>{r.current&&(r.current.duration>0&&r.current.paused?u():l())},[s]),l=(0,P.useCallback)(()=>{r.current&&(r.current.pause(),t({type:"PAUSE"}),s())},[s]),d=(0,P.useCallback)(()=>{r.current&&(r.current.muted=!r.current.muted,t(r.current.muted?{type:"MUTE"}:{type:"UNMUTE"}))},[]),g=(0,P.useCallback)(()=>{r.current&&(r.current.muted=!0,t({type:"MUTE"}))},[]),S=(0,P.useCallback)(()=>{r.current&&(r.current.muted=!1,t({type:"UNMUTE"}))},[]),f=(0,P.useCallback)(x=>{r.current&&(r.current.muted=!1,r.current.volume=x/100,t({type:"SET_VOLUME",volume:x}))},[]),p=(0,P.useCallback)(x=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(x*e.duration,e.duration)),s())},[]),b=(0,P.useCallback)(x=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(x,e.duration)),s())},[]);return(0,P.useEffect)(()=>{let x=setInterval(()=>{s()},350);return()=>clearInterval(x)},[s,e.duration]),(0,P.useEffect)(()=>{let x=()=>{t({type:"FINISHED"})},W=r.current;return W?.addEventListener("ended",x),()=>W?.removeEventListener("ended",x)},[]),[{element:r,currentTime:o,progress:a},n,{play:u,pause:l,playPause:c,mute:g,unmute:S,toggleMute:d,setVolume:f,setDurationPercent:p,setTime:b}]}var Ee=require("react"),at=require("react/jsx-runtime"),no=(0,Ee.createContext)(null),ro=(0,Ee.createContext)(null),oo=(0,Ee.createContext)(null);function st({actions:e,state:n,children:t,currentTime:r,progress:o,element:a}){return(0,at.jsx)(oo.Provider,{value:{currentTime:r,progress:o,element:a},children:(0,at.jsx)(ro.Provider,{value:e,children:(0,at.jsx)(no.Provider,{value:n,children:t})})})}var ct=require("react/jsx-runtime");function wt({media:e,children:n}){let[{element:t,currentTime:r,progress:o},a,i]=Se({duration:e.duration});return(0,ct.jsxs)(st,{state:a,actions:i,currentTime:r,progress:o,element:t,children:[(0,ct.jsx)("audio",{ref:t,src:e.url}),n]})}function ut({media:e,mediaControlsDeps:n,children:t}){return B("portal","audio",wt,{media:e,children:t},[e,...n||[]]),null}var Le=require("react/jsx-runtime");function Tt({element:e,media:n,playPause:t}){return(0,Le.jsxs)("div",{className:"video-container",part:"video-container",onClick:t,children:[(0,Le.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,Le.jsx)("video",{ref:e,src:n.url,style:{width:"100%",objectFit:"contain"}})]})}function lt({media:e,mediaControlsDeps:n,children:t}){let[{element:r,currentTime:o,progress:a},i,s]=Se({duration:e.duration});return B("overlay","video-element",Tt,{element:r,media:e,playPause:s.playPause}),B("portal","custom-controls",st,{state:i,actions:s,currentTime:o,progress:a,element:r,children:t},[o,i,e,...n||[]]),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:n}){return B("overlay",`model-${n}`,Mt,{model:e},[e]),null}var vr=require("react/jsx-runtime");function mt({style:e}){let n=w();return!n||!n.height||!n.width?null:(0,vr.jsx)("box",{interactive:!1,target:{x:0,y:0,width:Number(n.width),height:Number(n.height)},style:e})}var yr=require("react"),ze=require("react/jsx-runtime");function io({element:e,media:n,playPause:t}){let r=(0,yr.useRef)(null);return n.youTubeId?(0,ze.jsxs)("div",{className:"video-container",part:"video-container",onClick:t,children:[(0,ze.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,ze.jsx)("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 Sr({media:e,mediaControlsDeps:n,children:t}){let[{element:r,currentTime:o,progress:a},i,s]=Se({duration:e.duration});return B("overlay","video-element",io,{element:r,media:e,playPause:s.playPause}),null}var v=require("react/jsx-runtime");function Vt({x:e,y:n,onChoiceChange:t,registerActions:r,defaultChoices:o,isStatic:a,renderViewerControls:i,renderMediaControls:s,viewControlsDeps:u,mediaControlsDeps:c,strategies:l,throwOnUnknown:d,backgroundStyle:g,alwaysShowBackground:S,keepCanvasScale:f=!1,enableSizes:p=!1,enableYouTube:b=!0,onClickPaintingAnnotation:x,children:W}){let N=w(),ft=Ke(N,["deep-zoom"]),[Fe]=Rn(),R=Tn(),T=h(),z=(0,_.useMemo)(()=>(0,xr.createStylesHelper)(T),[T]),[m,q]=mr({strategies:l||["images"],defaultChoices:o?.map(({id:C})=>C)}),Nt=m.type==="images"?m.choice:void 0,Cr=(0,_.useMemo)(()=>f?1:Math.max(1,...m.type==="images"?m.images.map(C=>(C.width||0)/C.target?.spatial.width):[]),[f,m]);Vn(Cr),(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)(()=>{t&&t(Nt)},[Nt]),B(R&&(m.type==="images"||m.type==="empty"||m.type==="textual-content"&&i)?"overlay":"none",`canvas-portal-controls-${N?.id}`,we.Provider,i?{value:R||null,children:i(m)}:{},[N,R,m,...u||[]]);let j=hr({maxWidth:256,maxHeight:256});if(!N)return null;let kt=N.accompanyingCanvas,xe=j&&j.type==="fixed"?(0,v.jsx)("world-object",{height:N.height,width:N.width,x:e,y:n,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(xe)return xe;if(d)throw new Error(m.reason||"Unknown image strategy");return null}let Et=(0,v.jsxs)(_.Fragment,{children:[Fe?(0,v.jsx)(Te,{page:Fe}):null,m.annotations&&m.annotations.pages?m.annotations.pages.map(C=>(0,v.jsx)(Te,{page:C},C.id)):null,W]}),br=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:n,...ft,children:[m.type==="empty"||S?(0,v.jsx)(mt,{style:g}):null,m.type==="textual-content"?m.items.map((C,He)=>(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(Ar.HTMLPortal,{onClick:x?Ae=>{Ae.stopPropagation(),x(C.annotationId,C,Ae)}: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})})},He),Et]})):null,m.type==="images"?(0,v.jsxs)(v.Fragment,{children:[m.images.map((C,He)=>(0,v.jsx)(tt,{isStatic:a,image:C,id:C.id,thumbnail:He===0?j:void 0,selector:C.selector,enableSizes:p,onClick:x?Ae=>{Ae.stopPropagation(),x(C.annotationId,C,Ae)}:void 0},C.id+He)),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:[xe,s?s(m):null]}):m.media.type==="Video"?(0,v.jsxs)(lt,{media:m.media,mediaControlsDeps:c,children:[xe,s?s(m):null]}):m.media.type==="VideoYouTube"&&b?(0,v.jsxs)(Sr,{media:m.media,mediaControlsDeps:c,children:[xe,s?s(m):null]}):null}):null]},`${N.id}/${m.type}/${br}`),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"),ao=(0,Oe.forwardRef)(function(n,t){let r=k(),o=qe(),a=hn(),{ViewerControls:i,MediaControls:s}=n.components||{};if((0,Oe.useImperativeHandle)(t,()=>a,[a]),!r)return(0,L.jsx)("div",{});let u=0;return(0,L.jsxs)(L.Fragment,{children:[n.header,(0,L.jsx)(V.Viewer,{height:n.height,mode:n.mode,children:o.map((c,l)=>{let d=u;return u+=c.width+(n.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&&s?()=>(0,L.jsx)(s,{}):void 0,x:d,...n.canvasProps||{},children:n.annotations},c.id)},c.id)})},n.reuseAtlas?"":a.currentSequenceIndex),n.children]})}),V=(0,Oe.forwardRef)(function({children:n,height:t,annotations:r,canvasProps:o,spacing:a,header:i,components:s,mode:u,reuseAtlas:c,...l},d){let g=ue();return(0,L.jsx)(se,{vault:g,children:(0,L.jsx)(gn,{...l,children:(0,L.jsx)(ao,{ref:d,height:t,components:s,spacing:a,canvasProps:o,annotations:r,header:i,mode:u,reuseAtlas:c,children:n})})})});V.RenderImage=tt;V.RenderCanvas=Vt;V.RenderAnnotationPage=Te;V.RenderAnnotation=et;V.Viewer=kn;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{Ka as a}from"./chunk-VPKD2BBH.js";import"./chunk-DXFXJCXN.js";export{a as CanvasPanel};
@@ -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,r){let{selector:o,source:i}=w(r);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[o?o.type==="TemporalSelector"?{type:"TemporalBoxSelector",temporal:o.temporal,spatial:t.spatial}:o:null,i]}var k={makeChoice:()=>{}},l={type:"unknown"},n=e=>({type:"unknown",reason:e,annotations:{pages:[]}}),y=(e,r)=>({type:"empty",width:e,height:r,annotations:{pages:[]},image:null,images:[]});var P=["model/gltf-binary"];function S(e,r){let i=r.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 b}from"@atlas-viewer/iiif-image-api";import{expandTarget as h}from"@iiif/helpers/annotation-targets";function x(e,r,o){let i=[];for(let t of r.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=b(a);u[0]&&(s=o(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 v={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(v)}return{type:"images",image:i[0],images:i,choice:r.choice}}function T(e,r={},o){let i=e.language||o||"none";switch(e.type){case"TextualBody":{typeof e.value<"u"&&(r[i]=e.value);break}case"List":case"Composite":case"Choice":e.items&&e.items.forEach(t=>T(t,r,i))}return r}function I(e,r){let o=[];return r.items.forEach(i=>{if(i.resource){let[t]=c(e,i.target);o.push({annotationId:i.annotationId,text:T(i.resource),target:t})}}),{type:"textual-content",items:o}}var N=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function C(e,r){let o=r.items.filter(p=>p.type==="video"),i=!1;if(e.duration||(i=!0),o.length>1)return n("Only one video source supported");let t=o[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:r.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(N);if(!p[1])return n("Video is not known youtube video");s.youTubeId=p[1]}return{type:"media",media:s,annotations:{pages:[]}}}function R(e,r){if(!e.duration)return n("No duration on canvas");if(r.items.length>1)return n("Only one audio source supported");let o=r.items[0]?.resource;return o?o.format?{type:"media",media:{annotationId:r.items[0].annotationId,duration:e.duration,url:o.id,type:"Sound",target:{type:"TemporalSelector",temporal:{startTime:0,endTime:e.duration}},format:o.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:r,supports:o,loadImageService:i}){if(!e)return l;if(r.types.length===0)return o.indexOf("empty")!==-1?y(e.width,e.height):l;if(r.types.length!==1)if(r.types.length===2&&r.types.indexOf("text")!==-1)r.types=r.types.filter(a=>a!=="text");else return o.indexOf("complex-timeline")===-1?n("Complex timeline not supported"):n("ComplexTimelineStrategy not yet supported");let t=r.types[0];return t==="image"?o.indexOf("images")===-1?n("Image not supported"):x(e,r,i):t==="Model"||t==="model"?o.indexOf("3d-model")===-1?n("3D not supported"):S(e,r):t==="textualbody"?o.indexOf("textual-content")===-1?n("Textual content not supported"):I(e,r):t==="sound"||t==="audio"?o.indexOf("media")===-1?n("Media not supported"):R(e,r):t==="video"?o.indexOf("media")===-1?n("Media not supported"):C(e,r):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,47 @@
1
+ import{c as ct,k as lt}from"./chunk-DXFXJCXN.js";import{forwardRef as En,useImperativeHandle as Go}from"react";import Zt,{useCallback as We,useMemo as Kt,useState as xe}from"react";import{AtlasAuto as qr,ModeContext as Br}from"@atlas-viewer/atlas";import{ErrorBoundary as $r}from"react-error-boundary";import{useContext as ne}from"react";import On,{useContext as Fn,useMemo as Hn}from"react";import{jsx as Un}from"react/jsx-runtime";var Dn={collection:void 0,manifest:void 0,range:void 0,canvas:void 0,annotation:void 0,annotationPage:void 0},ye=On.createContext(Dn),k=()=>Fn(ye);function _({value:e,children:n}){let t=k(),r=Hn(()=>({...t,...e}),[e,t]);return Un(ye.Provider,{value:r,children:n})}import _n,{useState as qn}from"react";import{Vault as dt,globalVault as Bn}from"@iiif/helpers/vault";import{jsx as ft}from"react/jsx-runtime";var $=_n.createContext({vault:null,setVaultInstance:e=>{}});function W({vault:e,vaultOptions:n,useGlobal:t,resources:r,children:o}){let[a,i]=qn(()=>e||(t?Bn(n):n?new dt(n):new dt));return ft($.Provider,{value:{vault:a,setVaultInstance:i},children:ft(_,{value:r||{},children:o})})}import{useContext as xr}from"react";import{createContext as Cr,useMemo as br}from"react";import{globalVault as $n}from"@iiif/helpers/vault";import{useContext as jn}from"react";function G(e){let n=jn($);return e||(n&&n.vault?n.vault:$n())}import{useEffect as Yn,useMemo as Qn,useState as ze}from"react";function mt(e,{noCache:n=!1}={}){let t=typeof e=="string"?e:e.id,r=G(),[o,a]=ze(t),[i,s]=ze(void 0),u=Qn(()=>r.get(t,{skipSelfReturn:!0})||void 0,[t,r]),[c,l]=ze(u);return Yn(()=>{(async()=>{try{let f=u&&!n?u:await r.load(t),d=f?f.id||f["@id"]:null;f&&o!==d&&a(d),l(f)}catch(f){s(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:a,requestId:i,cached:s}=mt(e,n);return{id:t,isLoaded:r,error:o,manifest:a,requestId:i,cached:s}}import{jsx as Wn}from"react/jsx-runtime";function gt({manifest:e,children:n}){return Wn(_,{value:{manifest:e},children:n})}import{jsx as Gn}from"react/jsx-runtime";function Z({canvas:e,children:n}){return Gn(_,{value:{canvas:e},children:n})}import{useContext as Xn}from"react";import er from"react";import{useContext as Zn}from"react";var y=()=>{let{vault:e}=Zn($);if(e===null)throw new Error("Vault not found. Ensure you have your provider set up correctly.");return e};import{useEffect as Kn,useState as Jn}from"react";function S(e,n=[]){let t=y(),[r,o]=Jn(()=>e(t.getState(),t));return Kn(()=>t.subscribe(a=>e(a,t),a=>{o(a)},!1),n),r}var K=er.createContext([]);function Se(){let e=Xn(K);return S(n=>e.map(t=>n.iiif.entities.Canvas[t]).filter(Boolean),[e])}import{useMemo as tr}from"react";function w(e={},n=[]){let{id:t,selector:r}=e,o=k(),a=y(),i=t||o.manifest,s=S(u=>i?u.iiif.entities.Manifest[i]:void 0,[i]);return tr(()=>{if(s)return r?r(s):s},[s,r,...n])}import{jsx as nr}from"react/jsx-runtime";function ht({range:e,children:n}){return nr(_,{value:{range:e},children:n})}function rr(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=rr(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 Qi(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 a=vt(e,e.get(r),t);if(a)return a}}return null}function Zi(e,n,t,r=!1){let o=n.behavior,a=t?e.get(t):null;if(!a)return[];let i=a.behavior,s=r?!1:o.includes("paged"),u=s?!1:o.includes("continuous"),c=s||u?!1:o.includes("individuals"),l=i.includes("facing-pages"),f=i.includes("non-paged");if(l||f||c||r)return[{id:a.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:a.id,type:"Canvas"}]}function Fe(e,n,{disablePaging:t,skipNonPaged:r}={}){let o=n.behavior,a=o.includes("paged"),i=a?!1:o.includes("continuous"),s=a||i?!1:o.includes("individuals"),u=n.type==="Manifest"?n.items:Oe(e,n);if(i)return[u,[u.map((m,p)=>p)]];if(s||!a||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 ir,useRef as ar,useState as sr}from"react";import{useMemo as or}from"react";function yt(e={},n=[]){let{id:t,selector:r}=e,o=k(),a=t||o.range,i=S(s=>a?s.iiif.entities.Range[a]:void 0,[a]);return or(()=>{if(i)return r?r(i):i},[i,r,...n])}function St({startCanvas:e,disablePaging:n}){let t=y(),r=w(),o=yt(),[a,i]=sr(void 0),s=o||r;if(!s)throw new Error("Nothing selected");let[u,c]=ir(()=>Fe(t,s,{disablePaging:n}),[t,s,n]),l=ar(c);if(l.current!==c){let g=l.current[a][0],A=c.findIndex(D=>D.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 a>"u"&&(e?d(e):i(0)),{visibleItems:c[a]?.map(p=>u[p].id)||[],cursor:a,items:u,sequence:c,hasPrevious:a>0,hasNext:a<c.length-1,setSequenceIndex:i,setCanvasIndex:f,setCanvasId:d,next:v,previous:m}}import{createContext as Ue,useContext as Q,useEffect as cr,useMemo as De,useReducer as lr}from"react";import{useEffect as Rt,useMemo as It}from"react";import{createStore as At}from"zustand/vanilla";function ca(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],a=t(o[r]);return a===o[r]?n:(o[r]=a,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}))})),se(t.service).then(()=>{j(r).then(o=>{let a=o.expiresIn,i=Date.now()+a*1e3;e(()=>({authItems:E(t.id,n().authItems,s=>({...s,isLoggedIn:!0,isPending:!1,session:{token:o.accessToken,expires:i}}))}))}).catch(o=>{e(()=>({authItems:E(t.id,n().authItems,a=>({...a,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()}`,a=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(s=>s.type==="AuthAccessTokenService2"),a=t;if(n().authItems.find(s=>s.service.id===t.id)){e(()=>({authItems:E(t.id,n().authItems,s=>({...s,instances:s.instances+1}))}));return}if(e(()=>({currentAuth:a.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(s=>{e(()=>({authItems:E(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:E(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,canAuthenticate:!1,error:s.message}))}))})}if(t.profile==="kiosk"){if(!o)throw new Error("Token service not found");e(()=>({authItems:E(t.id,n().authItems,s=>({...s,isPending:!0}))})),se(a).then(()=>{j(o).then(s=>{e(()=>({authItems:E(t.id,n().authItems,u=>({...u,isLoggedIn:!0,isPending:!1,session:{token:s.accessToken,expires:s.expiresIn}}))}))}).catch(s=>{e(()=>({authItems:E(t.id,n().authItems,u=>({...u,isLoggedIn:!1,isPending:!1,error:s.message}))}))})})}t.profile},removeService:(t,r)=>{let o=n().currentAuth===n().authItems.findIndex(i=>i.service.id===t.id),a=n().currentAuth;if(o){let i=n().authItems.find(u=>u.service.id===t.id);i&&i.instances>1||(a=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:a}))}})),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 a=r().token;try{let i=await fetch(o,{headers:a?{Authorization:`Bearer ${r().token}`,Accept:"application/json"}:{Accept:"application/json"}}).then(s=>s.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(a=>a.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),a=`${e.id}?messageId=${o}&origin=${window.location.origin}`,i=c=>{let l=c.data;if(l.messageId===o){if(n&&l.type!=="AuthAccessToken2"){s(),r("Invalid response, expected type=AuthAccessToken2");return}if(!l.accessToken){s(),r("Invalid response, expected accessToken");return}s(),t(l)}},s=()=>window.removeEventListener("message",i),u=document.createElement("iframe");u.src=a,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 se(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 a=setInterval(()=>{t.closed&&(clearInterval(a),r())},500)})}import{useStore as ur}from"zustand";function wt(e){let n=It(()=>bt(e),[e]),t=Mt(n.services.access?.id),r=It(()=>Ct(n.services.probe,t),[n.services.probe]),o=ur(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 ue}from"zustand";import{jsx as J}from"react/jsx-runtime";var X=Ue(null),ee=Ue(null);ee.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],a=t(o[r]);return a===o[r]?n:(o[r]=a,{...n,authItems:o})}function dr(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(s=>s.service.id!==n.payload.id&&s.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 J(X.Provider,{value:n,children:e})}function wa({children:e}){let[n,t]=lr(dr,{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}}),se(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})},a=()=>{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}}),se(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}})},s=()=>{},u=()=>{},c=d=>{},l=De(()=>({addService:r,removeService:o}),[]),f=De(()=>({...n,login:a,logout:i,nextAuth:s,previousAuth:u,setAuth:c}),[n]);return J(ee.Provider,{value:f,children:J(_e.Provider,{value:l,children:e})})}function Vt(){return!!Q(X)}function ce(){let e=Q(X);if(!e)throw new Error("useAuthActions must be used within a AuthProvider");return e}function fr(){let e=ce();return ue(e,t=>({login:t.login,logout:t.logout,nextAuth:t.nextAuth,previousAuth:t.previousAuth,setAuth:t.setAuth,addService:t.addService,removeService:t.removeService}))}function Ma(){let e=ce();return ue(e,n=>n)}function mr(e){let n=ce();return ue(n,r=>r.authItems.find(o=>o.service.id===e))}function Mt(e){let n=ce();return ue(n,r=>r.authItems.find(o=>o.id===e)?.session?.token)}function Ta(e){let n=ce();return ue(n,r=>{let o=r.authItems.find(a=>a.service.id===e);return!o||!o.isLoggedIn||!o.session?null:o.session?.token||null})}function Va(){let e=Q(ee);if(!e)throw new Error("useCurrentAuth must be used within a AuthProvider");return e}function Na(e){let n=Q(ee);return n&&n.authItems.find(t=>t.service.id===e)||null}function ka(e){let n=Q(ee);return!n||!e?null:n.authItems.find(t=>t.id===e)?.session?.token||null}function Ea(e){let n=Q(ee);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 La(){return Q(_e)}function pr(e){let n=fr(),t=mr(e.service.id);return cr(()=>(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 Nt(e){let[n,t,r]=wt(e.resource),o=e.fallbackComponent||He,a=e.loadingComponent||He,i=e.errorComponent||He,s=t.service,u=null;if(!r||!s)return e.children(n);let c=s.service.filter(l=>l.type==="AuthAccessService2");t.status==="error"&&(u=J(i,{resource:e.resource,error:t.error||"",heading:t.errorHeading,note:t.errorNote,extra:e.extra})),(t.status==="unknown"||t.status==="probing")&&(u=J(a,{})),t.status==="success"&&(u=e.children(n));for(let l of c)u=J(pr,{service:l,probeId:s.id,children:u},l.id);return u}import{createContext as yr,useContext as Ba,useMemo as Sr}from"react";import{createStore as gr}from"zustand/vanilla";var hr=e=>e.id||e["@id"];function vr(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 kt=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?hr(n):void 0,r=null;return gr((o,a)=>({service:n,resources:[],lastQuery:{},loading:!1,error:!1,highlight:null,hasSearch:!!n,hasAutocomplete:n?!!vr(n):!1,errorMessage:"",search(i,s={}){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",...s.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 s=a().resources.find(u=>u["@id"]===i);o({highlight:s})},nextResult(){let i=a().resources,s=a().highlight;if(!s){o({highlight:i[0]||null});return}let u=i.findIndex(c=>c["@id"]===s["@id"]);if(u===-1){o({highlight:i[0]||null});return}o({highlight:i[u+1]||i[0]||null})},previousResult(){let i=a().resources,s=a().highlight;if(!s){o({highlight:i[i.length-1]||null});return}let u=i.findIndex(c=>c["@id"]===s["@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 Wa}from"zustand";function Et(){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 te=yr(null);te.displayName="Search";function Lt(e){let n=Et();return e.store?qe(te.Provider,{value:e.store,children:e.children}):qe(Ar,{service:n,children:e.children})}function Ar({service:e,children:n}){let t=Sr(()=>kt(e),[e]);return qe(te.Provider,{value:t,children:n})}import{jsx as T}from"react/jsx-runtime";var le=()=>{},de=Cr({setCurrentCanvasId:le,setCurrentCanvasIndex:le,nextCanvas:le,previousCanvas:le,items:[],sequence:[],setSequenceIndex:le,currentSequenceIndex:0,hasNext:!1,hasPrevious:!1});function Pr(e){let n=w(),{cursor:t,visibleItems:r,next:o,sequence:a,items:i,setCanvasIndex:s,setCanvasId:u,previous:c,setSequenceIndex:l,hasNext:f,hasPrevious:d}=St({startCanvas:e.startCanvas,disablePaging:e.pagingEnabled===!1}),v=br(()=>({sequence:a,items:i,setCurrentCanvasId:u,nextCanvas:o,previousCanvas:c,totalCanvases:i.length,setCurrentCanvasIndex:s,setSequenceIndex:l,currentSequenceIndex:t,hasNext:f,hasPrevious:d}),[a,i,u,o,c,i,s,l,t]);return n?r.length===0?null:T(de.Provider,{value:v,children:T(K.Provider,{value:r,children:T(Z,{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 zt(e){let n=G(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(Pr,{...e,children:e.children});return T(W,{vault:n,children:T(gt,{manifest:t.id,children:T(Tt,{children:T(Lt,{children:e.rangeId?T(ht,{range:e.rangeId,children:r}):r})})})})}function Ot(){return xr(de)}import{jsx as fe}from"react/jsx-runtime";function Ft(){return{VaultContext:ne($),ResourceContext:ne(ye),SimpleViewerReactContext:ne(de),VisibleCanvasReactContext:ne(K),AuthRContext:ne(X),SearchReactContext:ne(te)}}function Ht(e){return fe(W,{vault:e.bridge.VaultContext.vault||void 0,resources:e.bridge.ResourceContext,children:fe(K.Provider,{value:e.bridge.VisibleCanvasReactContext,children:fe(de.Provider,{value:e.bridge.SimpleViewerReactContext,children:fe(X.Provider,{value:e.bridge.AuthRContext,children:fe(te.Provider,{value:e.bridge.SearchReactContext,children:e.children})})})})})}import{createContext as Tr,useContext as Vr,useMemo as Nr}from"react";import{useCallback as Ut,useLayoutEffect as Ir,useMemo as wr,useRef as Mr}from"react";import{entityActions as Be}from"@iiif/helpers/vault/actions";import{useMemo as Rr}from"react";function Dt(){let n=y().getStore();return Rr(()=>t=>n.dispatch(t),[n])}function _t(e){return typeof e!="string"&&e&&e.bindToVault}function qt(){let e=y(),n=Mr([]),t=Dt(),r=wr(()=>`vault://annotation-page/${new Date().getTime()}/${Math.round(Math.random()*1e9).toString(16)}`,[]);Ir(()=>{let s={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:{[s.id]:s}}}))},[r]);let o=S(s=>r&&s.iiif.entities.AnnotationPage[r]||null,[r]),a=Ut((s,u)=>{if(r){if(_t(s)){let f=s;f.__vault||f.bindToVault(e),s=typeof f.source=="string"?f.source:f.source.id,n.current[s]=f}else typeof s!="string"&&(s=s.id);let c=e.get({id:r,type:"AnnotationPage"}),l=e.get({id:s,type:"Annotation"});c&&l&&(c.items.find(f=>f.id===l.id)||t(Be.addReference({id:r,type:"AnnotationPage",key:"items",reference:{id:s,type:"Annotation"},index:u})))}},[r]),i=Ut(s=>{r&&(_t(s)?s=typeof s.source=="string"?s.source:s.source.id:typeof s!="string"&&(s=s.id),n.current[s]&&n.current[s].beforeRemove(),e.get({id:r,type:"AnnotationPage"})&&t(Be.removeReference({id:r,type:"AnnotationPage",key:"items",reference:{id:s,type:"Annotation"}})))},[r]);return[o,{addAnnotation:a,removeAnnotation:i}]}import{jsx as kr}from"react/jsx-runtime";var Bt=Tr(null);function $t(){let e=Vr(Bt);return[e.fullPage,{addAnnotation:e.addAnnotation,removeAnnotation:e.removeAnnotation}]}function jt({children:e}){let[n,{addAnnotation:t,removeAnnotation:r}]=qt();return kr(Bt.Provider,{value:Nr(()=>({fullPage:n,addAnnotation:t,removeAnnotation:r}),[n]),children:e})}import{jsx as $e,jsxs as Er}from"react/jsx-runtime";function Yt({width:e,style:n,height:t,error:r,resetErrorBoundary:o}){return Er("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 Lr,useContext as zr}from"react";var me=Lr(null);function Qt(){return zr(me)}import{createContext as Wt,useContext as Or,useEffect as Fr}from"react";var je=Wt(()=>{}),Ye=Wt(()=>{});function L(e,n,t,r,o=[]){let a=Or(e==="portal"?Ye:je);Fr(()=>(e!=="none"&&a(n,t,r),()=>{a(n,null)}),[n,e,a,...o])}import{createContext as Dr,useContext as Ur,useEffect as _r}from"react";import{useMemo as Hr}from"react";function b(e={},n=[]){let{id:t,selector:r}=e,o=k(),a=t||o.canvas,i=S(s=>a?s.iiif.entities.Canvas[a]:void 0,[a]);return Hr(()=>{if(i)return r?r(i):i},[i,r,...n])}var Qe=Dr(()=>{});function Gt(e){let n=b(),t=Ur(Qe);_r(()=>n&&n.id?(t(n.id,e),()=>t(n.id,-1)):()=>{},[n,e])}import{Fragment as jr,jsx as R,jsxs as Yr}from"react/jsx-runtime";function Jt({children:e,errorFallback:n,outerContainerProps:t={},worldScale:r,...o}){let[a,i]=xe(),s=Ft(),u=n||Yt,[c,l]=xe({}),f=Object.entries(c),[d,v]=xe({}),m=Object.entries(d),[p,g]=xe({}),A=Kt(()=>r||Math.max(...Object.values(p)),[p]),D=Kt(()=>({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 Yr($r,{resetKeys:[],fallbackRender:C=>R(u,{...o,...C}),children:[R(qr,{...o,containerProps:{style:{position:"relative"},...o.containerProps||{}},htmlChildren:R(jr,{children:f.map(([C,{element:P,props:N}])=>R(Zt.Fragment,{children:R(P,{...N||{}})},C))}),onCreated:C=>{i(C),o.onCreated&&o.onCreated(C)},runtimeOptions:D,children:R(me.Provider,{value:a,children:R(Qe.Provider,{value:I,children:R(je.Provider,{value:Le,children:R(Ye.Provider,{value:he,children:R(Ht,{bridge:s,children:R(Br.Provider,{value:o.mode||"explore",children:R(jt,{children:e})})})})})})})}),R("div",{children:m.map(([C,{element:P,props:N}])=>R(Zt.Fragment,{children:R(P,{...N||{}})},C))})]})}import{mergeStyles as Jr,RegionHighlight as Xr}from"@atlas-viewer/atlas";import{useMemo as Xt}from"react";import{createEventsHelper as Qr}from"@iiif/helpers/events";function Ce(e,n){let t=y(),r=Xt(()=>Qr(t),[t]),o=S(()=>e&&e.id?t.getResourceMeta(e.id,"eventManager"):null,[e]);return Xt(()=>e?r.getListenersAsProps(e,n):{},[o,e,t,n])}import{useMemo as Wr}from"react";import{createStylesHelper as Gr}from"@iiif/helpers/styles";function re(e,n){let t=y(),r=Wr(()=>Gr(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 eo}from"react";import{useMemo as Zr}from"react";import{expandTarget as Kr}from"@iiif/helpers/annotation-targets";function be(e={},n=[]){let{id:t,selector:r}=e,o=k(),a=y(),i=t||o.annotation,s=S(c=>i?c.iiif.entities.Annotation[i]:void 0,[i]),u=S(c=>s&&s.body?s.body.map(l=>l?l.type==="SpecificResource"?{...l,source:a.get(l)}:l?c.iiif.entities[l.type][l.id]:null:null).filter(Boolean):[],[s]);return Zr(()=>{if(!s)return;let c={...s,body:u,target:Kr(s.target,{typeMap:a.getState().iiif.mapping})};return r?r(c):c},[s,r,u,...n])}import{jsx as to}from"react/jsx-runtime";var Pe=({id:e,style:n,className:t,interactive:r})=>{let o=be({id:e}),a=re(o,"atlas"),i=re(o,"html"),s=Ce(o,["atlas"]),u=b(),c=eo(()=>Jr(n,a),[n,a]);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)?to(Xr,{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:()=>{},...s}):null};import{Fragment as ro}from"react";import{useMemo as no}from"react";function en(e={},n=[]){let{id:t,selector:r}=e,o=k(),a=t||o.annotationPage,i=S(s=>a?s.iiif.entities.AnnotationPage[a]:void 0,[a]);return no(()=>{if(i)return r?r(i):i},[i,...n])}import{jsx as tn}from"react/jsx-runtime";var pe=({className:e,page:n})=>{let t=en({id:n.id})||n,r=re(t,"atlas"),o=re(t,"html");return S(a=>t.id?a.iiif.entities.AnnotationPage[t.id]:null,[]),tn(ro,{children:t.items?.map(a=>tn(Pe,{id:a.id,style:r,className:o?.className||e},a.id))})};import{createStylesHelper as jo}from"@iiif/helpers/styles";import{Fragment as cn,useMemo as lo}from"react";import{HTMLPortal as so,TileSet as sn}from"@atlas-viewer/atlas";import rn,{useMemo as Ge}from"react";import{jsx as q}from"react/jsx-runtime";var on=rn.createContext("en");function cc(e){return q(on.Provider,{value:e.language,children:e.children})}function Ze(){return rn.useContext(on)}function nn(e){return e.indexOf("-")!==-1?e.slice(0,e.indexOf("-")):e}function oo({as:e,language:n,children:t,viewingDirection:r,...o}){let a=Ze();return Ge(()=>nn(a)===nn(n),[a,n])?e?q(e,{...o,children:t}):q("span",{...o,children:t}):e?q(e,{...o,lang:n,dir:r,children:t}):q("span",{...o,lang:n,dir:r,children:t})}function an(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 io=(e,n=[])=>{let t=Ze();return Ge(()=>{let r=e();return an(t,r,[])},[t,...n])};function ao(e,n,t=`
2
+ `){let r=io(()=>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 lc(){let e=Ze();return function(t,r,o){let a=Object.keys(t||{}),i=an(e,a,[]);if(!t)return r||"";if(typeof t=="string")return t;let s=i?t[i]:void 0;return s?typeof s=="string"?s:s.join(typeof o<"u"?o:`
3
+ `):""}}function ge({as:e,defaultText:n,enableDangerouslySetInnerHTML:t,children:r,separator:o,...a}){let[i,s]=ao(r,n,o);return s?q(oo,{...a,as:e,language:s,title:t?void 0:i,dangerouslySetInnerHTML:t?{__html:i}:void 0,children:t?void 0:i}):e?q(e,{...a,children:i}):q("span",{...a,title:t?void 0:i,dangerouslySetInnerHTML:t?{__html:i}:void 0,children:t?void 0:i})}import{jsx as F,jsxs as co}from"react/jsx-runtime";function uo({resource:e,heading:n,note:t,extra:r}){return r?F(so,{target:{x:0,y:0,width:r.target?.spatial.width,height:r.target?.spatial.height},backgroundColor:"#333",relative:!0,children:F("div",{style:{display:"flex",alignContent:"center",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",background:"#444",color:"#BBB"},children:co("div",{children:[F(ge,{children:n||"Not authorised"}),t&&F("p",{children:F(ge,{children:t})}),F("p",{children:e.id||e["@id"]||"unknown"})]})})}):null}function un({image:e,thumbnail:n,crop:t,enableSizes:r}){if(!Vt()){let a=e.service,i=a.width||e.width||0,s=a.height||e.height||0;return F(sn,{tiles:{id:a.id||a["@id"]||"unknown",height:s,width:i,imageService:a},enableSizes:r,x:0,y:0,width:e.target?.spatial.width,height:e.target?.spatial.height,crop:t})}return F(Nt,{resource:e.service,errorComponent:uo,extra:e,children:a=>{let i=a.width||e.width||0,s=a.height||e.height||0;return F(sn,{tiles:{id:a.id||a["@id"]||"unknown",height:s,width:i,imageService:a},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 ln}from"react/jsx-runtime";function Re({id:e,image:n,thumbnail:t,isStatic:r,x:o=0,y:a=0,children:i,selector:s,onClick:u,enableSizes:c}){let l=lo(()=>{if(!(!s||s.spatial.x===0&&s.spatial.y===0))return s.spatial},[s]);return Ke("world-object",{x:o+n.target.spatial.x,y:a+n.target.spatial.y,width:n.target.spatial.width,height:n.target.spatial.height,onClick:u,children:n.service?ln(cn,{children:[Ke(un,{image:n,thumbnail:t,crop:l,enableSizes:c}),i]},"service"):ln(cn,{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 Yo,useEffect as Nn,useLayoutEffect as Qo,useMemo as kn}from"react";import{HTMLPortal as Wo}from"@atlas-viewer/atlas";import{useMemo as An}from"react";import{useCallback as mn,useMemo as mo}from"react";function fo(e,n){let t=e?.iiif?.meta[n];return t?t.annotationPageManager:null}function dn(e,n){return S(t=>{let r=[];if(!e)return r;let o=Object.keys(t.iiif.entities.AnnotationPage);for(let a of o)if(!n||n.indexOf(a)!==-1){let i=fo(t,a);i&&i.views&&i.views[e]&&r.push(a)}return r},[e,n])}function fn({canvas:e,manifest:n,all:t,canvases:r}){let o=[];if(n)for(let a of n.annotations)o.indexOf(a.id)===-1&&o.push(a.id);if(t){if(r&&r.length)for(let a of r)for(let i of a.annotations)o.indexOf(i.id)===-1&&o.push(i.id)}else if(e)for(let a of e.annotations)o.indexOf(a.id)===-1&&o.push(a.id);return o}function po(e,n){let t=e?.iiif?.meta[n];return t?t.annotationPageManager:null}function pn(e,n={}){let t=y(),r=w(),o=b(),a=Se(),i=mo(()=>fn({all:n.all,manifest:r,canvas:o,canvases:a}),[n.all,o,a,r]),s=dn(e,n.all?void 0:i),u=mn(l=>{e&&t.setMetaValue([l,"annotationPageManager","views"],f=>f&&!f[e]?f:{...f||{},[e]:!1})},[e,t]),c=mn((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=po(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:s,setPageEnabled:c,setPageDisabled:u}}function gn(e,n){return S((t,r)=>r.get(e.map(o=>({id:o,type:n}))),[e,n])}import{useCallback as So,useEffect as Ao,useRef as xo,useState as Co}from"react";import go,{useContext as ho}from"react";import{ImageServiceLoader as vo}from"@atlas-viewer/iiif-image-api";var yo=go.createContext(new vo);function Ie(){return ho(yo)}function hn(){let e=Ie(),[n,t]=Co({}),r=xo(!1);return Ao(()=>()=>{r.current=!0},[]),[So((a,{height:i,width:s})=>{if(a){let u=a.id||a["@id"],c=e.loadServiceSync({id:u,width:a.width||s,height:a.height||i,source:a});c?a=c:n[u]||(r.current||t(l=>({...l,[u]:"loading"})),e.loadService({id:u,width:a.width||s,height:a.height||i}).then(()=>{r.current||t(l=>({...l,[u]:"done"}))}))}return a},[e,n]),n]}import{useCallback as bo,useMemo as yn,useState as Po}from"react";function vn(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 a=o.get(t.items),i=[];for(let s of a)i.push(...o.get(s.items));return i},[t])}import{createPaintingAnnotationsHelper as Ro}from"@iiif/helpers/painting-annotations";function Sn(e,n=[]){let t=y(),r=yn(()=>Ro(t),[]),o=vn({enableSingleAnnotation:e?.enableSingleAnnotation}),[a,i]=Po(e?.defaultChoices||[]),s=yn(()=>r.getPaintables(o,a),[t,o,a,...n]),c={makeChoice:bo((l,{deselectOthers:f=!0,deselect:d=!1}={})=>{if(s.choice){if(s.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=s.items[0].resource.id;return g?[g]:[]}return p}if(f)return[l];let m=[...v];if(m.length===0&&s.items.length){let p=s.items[0].resource.id;p&&m.push(p)}return v.indexOf(l)!==-1?v:[...v,l]})}},[s.choice])};return[s,c]}function xn(e){let n=w(),t=b(),r=y(),[o,a]=hn(),{enabledPageIds:i}=pn(e?.annotationPageManagerId||n?.id||t?.id,{all:!1}),s=gn(i,"AnnotationPage"),u=e?.strategies||["empty","images","media","textual-content","complex-timeline"],[c,l]=Sn(e,[a]),f=An(()=>lt({canvas:t,paintables:c,supports:u,loadImageService:o}),[t,c,r,l.makeChoice]);return An(()=>f.type==="unknown"?[f,ct]:[{...f,annotations:{pages:s}},l],[f,s])}import{useEffect as wo,useMemo as Mo,useRef as To,useState as Vo}from"react";import{useEffect as Io}from"react";var Cn=(e,n=[])=>{let t=y();Io(()=>{e(t)},[t,...n])};import{createThumbnailHelper as No}from"@iiif/helpers/thumbnail";function bn(e,n,{canvasId:t,manifestId:r}={}){let o=y(),a=Ie(),i=Mo(()=>No(o,{imageServiceLoader:a}),[o,a]),[s,u]=Vo(),c=w(r?{id:r}:void 0),l=b(t?{id:t}:void 0),f=l||c,d=To(!1);if(wo(()=>(d.current=!1,()=>{d.current=!0}),[]),!f)throw new Error("Must be called under a manifest or canvas context.");return Cn(v=>{i.getBestThumbnailAtSize(f,e,n).then(m=>{m.best&&!d.current&&u(m.best)})},[f]),s}import{useCallback as z,useEffect as Pn,useReducer as ko,useRef as we}from"react";function Eo(e){return{isMuted:!1,playRequested:!1,isPlaying:!1,isFinished:!1,volume:100,duration:e}}function Lo(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 zo(e){let n=Math.round(e);return`${Math.floor(n/60)}:${`${n%60}`.padStart(2,"0")}`}function oe(e){let[n,t]=ko(Lo,Eo(e.duration)),r=we(null),o=we(null),a=we(null),i=we(!1),s=z(()=>{o.current&&r.current&&(o.current.innerHTML=zo(r.current.currentTime),a.current&&(a.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"})}),s())},[s]),c=z(()=>{r.current&&(r.current.duration>0&&r.current.paused?u():l())},[s]),l=z(()=>{r.current&&(r.current.pause(),t({type:"PAUSE"}),s())},[s]),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)),s())},[]),g=z(A=>{r.current&&(r.current.currentTime=Math.max(0,Math.min(A,e.duration)),s())},[]);return Pn(()=>{let A=setInterval(()=>{s()},350);return()=>clearInterval(A)},[s,e.duration]),Pn(()=>{let A=()=>{t({type:"FINISHED"})},D=r.current;return D?.addEventListener("ended",A),()=>D?.removeEventListener("ended",A)},[]),[{element:r,currentTime:o,progress:a},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 Rn=Xe(null),In=Xe(null),wn=Xe(null);function Tl(){let e=et(Rn);if(!e)throw new Error("Ctx not found");return e}function Vl(){let e=et(In);if(!e)throw new Error("Ctx not found");return e}function Nl(){let e=et(wn);if(!e)throw new Error("Ctx not found");return e}function Me({actions:e,state:n,children:t,currentTime:r,progress:o,element:a}){return Je(wn.Provider,{value:{currentTime:r,progress:o,element:a},children:Je(In.Provider,{value:e,children:Je(Rn.Provider,{value:n,children:t})})})}import{jsx as Oo,jsxs as Fo}from"react/jsx-runtime";function tt({media:e,children:n}){let[{element:t,currentTime:r,progress:o},a,i]=oe({duration:e.duration});return Fo(Me,{state:a,actions:i,currentTime:r,progress:o,element:t,children:[Oo("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 Mn,jsxs as Ho}from"react/jsx-runtime";function nt({element:e,media:n,playPause:t}){return Ho("div",{className:"video-container",part:"video-container",onClick:t,children:[Mn("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
+ `}),Mn("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:a},i,s]=oe({duration:e.duration});return L("overlay","video-element",nt,{element:r,media:e,playPause:s.playPause}),L("portal","custom-controls",Me,{state:i,actions:s,currentTime:o,progress:a,element:r,children:t},[o,i,e,...n||[]]),null}import{Fragment as Do,jsx as rt,jsxs as Uo}from"react/jsx-runtime";function ot({model:e}){return Uo(Do,{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 _o}from"react/jsx-runtime";function ke({style:e}){let n=b();return!n||!n.height||!n.width?null:_o("box",{interactive:!1,target:{x:0,y:0,width:Number(n.width),height:Number(n.height)},style:e})}import{useRef as qo}from"react";import{jsx as Tn,jsxs as $o}from"react/jsx-runtime";function Bo({element:e,media:n,playPause:t}){let r=qo(null);return n.youTubeId?$o("div",{className:"video-container",part:"video-container",onClick:t,children:[Tn("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
+ `}),Tn("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 Vn({media:e,mediaControlsDeps:n,children:t}){let[{element:r,currentTime:o,progress:a},i,s]=oe({duration:e.duration});return L("overlay","video-element",Bo,{element:r,media:e,playPause:s.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:a,renderViewerControls:i,renderMediaControls:s,viewControlsDeps:u,mediaControlsDeps:c,strategies:l,throwOnUnknown:f,backgroundStyle:d,alwaysShowBackground:v,keepCanvasScale:m=!1,enableSizes:p=!1,enableYouTube:g=!0,onClickPaintingAnnotation:A,children:D}){let I=b(),Le=Ce(I,["deep-zoom"]),[he]=$t(),C=Qt(),P=y(),N=kn(()=>jo(P),[P]),[h,O]=xn({strategies:l||["images"],defaultChoices:o?.map(({id:x})=>x)}),at=h.type==="images"?h.choice:void 0,Ln=kn(()=>m?1:Math.max(1,...h.type==="images"?h.images.map(x=>(x.width||0)/x.target?.spatial.width):[]),[m,h]);Gt(Ln),Nn(()=>{r&&r(O)},[h.annotations]),Nn(()=>{if(o)for(let x of o)typeof x.opacity<"u"&&N.applyStyles({id:x.id},"atlas",{opacity:x.opacity})},[o]),Qo(()=>{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 U=bn({maxWidth:256,maxHeight:256});if(!I)return null;let st=I.accompanyingCanvas,ie=U&&U.type==="fixed"?V("world-object",{height:I.height,width:I.width,x:e,y:n,children:V("world-image",{uri:U.id,target:{x:0,y:0,width:I.width,height:I.height},display:U.width&&U.height?{width:U.width,height:U.height}:void 0,crop:void 0})}):null;if(h.type==="unknown"){if(ie)return ie;if(f)throw new Error(h.reason||"Unknown image strategy");return null}let ut=B(Yo,{children:[he?V(pe,{page:he}):null,h.annotations&&h.annotations.pages?h.annotations.pages.map(x=>V(pe,{page:x},x.id)):null,D]}),zn=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(Wo,{onClick:A?ae=>{ae.stopPropagation(),A(x.annotationId,x,ae)}: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:a,image:x,id:x.id,thumbnail:ve===0?U:void 0,selector:x.selector,enableSizes:p,onClick:A?ae=>{ae.stopPropagation(),A(x.annotationId,x,ae)}: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:[ie,s?s(h):null]}):h.media.type==="Video"?B(Ve,{media:h.media,mediaControlsDeps:c,children:[ie,s?s(h):null]}):h.media.type==="VideoYouTube"&&g?B(Vn,{media:h.media,mediaControlsDeps:c,children:[ie,s?s(h):null]}):null}):null]},`${I.id}/${h.type}/${zn}`),h.type==="media"&&h.media.type==="Sound"&&st?V(Z,{canvas:st.id,children:V(it,{renderViewerControls:i})}):null]})}import{Fragment as Ko,jsx as H,jsxs as Jo}from"react/jsx-runtime";var Zo=En(function(n,t){let r=w(),o=Se(),a=Ot(),{ViewerControls:i,MediaControls:s}=n.components||{};if(Go(t,()=>a,[a]),!r)return H("div",{});let u=0;return Jo(Ko,{children:[n.header,H(M.Viewer,{height:n.height,mode:n.mode,children:o.map((c,l)=>{let f=u;return u+=c.width+(n.spacing||0),H(Z,{canvas:c.id,children:H(M.RenderCanvas,{strategies:["3d-model","media","images","empty","textual-content"],renderViewerControls:l===0&&i?()=>H(i,{}):void 0,renderMediaControls:l===0&&s?()=>H(s,{}):void 0,x:f,...n.canvasProps||{},children:n.annotations},c.id)},c.id)})},n.reuseAtlas?"":a.currentSequenceIndex),n.children]})}),M=En(function({children:n,height:t,annotations:r,canvasProps:o,spacing:a,header:i,components:s,mode:u,reuseAtlas:c,...l},f){let d=G();return H(W,{vault:d,children:H(zt,{...l,children:H(Zo,{ref:f,height:t,components:s,spacing:a,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=Jt;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,_ as c,$ as d,W as e,G as f,mt as g,pt as h,gt as i,Z as j,y as k,S as l,K as m,Se as n,w as o,ht as p,rr as q,Oe as r,Qi as s,vt as t,Zi as u,Fe as v,yt as w,St as x,ca as y,xt as z,Ct as A,bt as B,j as C,se as D,X as E,ee as F,_e as G,Tt as H,wa as I,Vt as J,ce as K,fr as L,Ma as M,mr as N,Mt as O,Ta as P,Va as Q,Na as R,ka as S,Ea as T,La as U,Nt as V,Et as W,de as X,Pr as Y,zt as Z,Ot as _,Ft as $,Ht as aa,Dt as ba,qt as ca,$t as da,jt as ea,me as fa,Qt as ga,b as ha,Ce as ia,re as ja,be as ka,en as la,cc as ma,Ze as na,oo as oa,io as pa,ao as qa,lc as ra,ge as sa,fn as ta,pn as ua,gn as va,yo as wa,Ie as xa,hn as ya,vn as za,Sn as Aa,xn as Ba,Cn as Ca,bn as Da,zo as Ea,oe as Fa,Tl as Ga,Vl as Ha,Nl as Ia,Me as Ja,M as Ka};
@@ -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 };