@nulib/clover 4.0.0-beta.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (523) hide show
  1. package/README.md +7 -7
  2. package/dist/components/Annotations/Annotations.mjs +165 -204
  3. package/dist/components/Annotations/EntryBodies.mjs +28 -3
  4. package/dist/components/Annotations/languages.mjs +1 -17
  5. package/dist/components/Body/Body.mjs +16 -1
  6. package/dist/components/Body/BodyAlert.mjs +2 -1
  7. package/dist/components/Body/Caption.mjs +2 -1
  8. package/dist/components/Body/CaptionDetails.mjs +2 -1
  9. package/dist/components/Body/glyphs.mjs +24 -0
  10. package/dist/components/Canvas/AnnotationMenu.mjs +76 -60
  11. package/dist/components/Canvas/AnnotationState.mjs +9 -2
  12. package/dist/components/Canvas/Annotations.mjs +16 -7
  13. package/dist/components/Canvas/CanvasView.mjs +287 -42
  14. package/dist/components/Canvas/ChaptersMenu.mjs +105 -0
  15. package/dist/components/Canvas/ChoiceMenu.mjs +51 -31
  16. package/dist/components/Canvas/Connected.mjs +38 -4
  17. package/dist/components/Canvas/ControlMenu.mjs +29 -8
  18. package/dist/components/Canvas/Controls.mjs +227 -48
  19. package/dist/components/Canvas/ControlsFade.mjs +16 -0
  20. package/dist/components/Canvas/FrameAnimation.mjs +568 -167
  21. package/dist/components/Canvas/ImageControls.mjs +209 -0
  22. package/dist/components/Canvas/LoadedCanvas.mjs +5 -3
  23. package/dist/components/Canvas/PlaceBox.mjs +74 -0
  24. package/dist/components/Canvas/Placeholder.mjs +46 -13
  25. package/dist/components/Canvas/RowFits.mjs +85 -0
  26. package/dist/components/Canvas/fromManifest.mjs +2 -1
  27. package/dist/components/Canvas/layout.mjs +132 -32
  28. package/dist/components/Canvas/media/MediaBody.mjs +130 -45
  29. package/dist/components/Canvas/media/Player.mjs +9 -78
  30. package/dist/components/Canvas/media/Transport.mjs +102 -78
  31. package/dist/components/Canvas/media/TransportButton.mjs +2 -1
  32. package/dist/components/Canvas/media/placeMenu.mjs +19 -0
  33. package/dist/components/Canvas/media/seekGaps.mjs +43 -0
  34. package/dist/components/Canvas/media/sequence.mjs +96 -0
  35. package/dist/components/Canvas/media/useMediaElement.mjs +22 -3
  36. package/dist/components/Canvas/panClearOfControls.mjs +1 -1
  37. package/dist/components/Collection/Collection.mjs +3 -2
  38. package/dist/components/CollectionSelect/CollectionSelect.mjs +5 -2
  39. package/dist/components/Contents/Contents.mjs +163 -34
  40. package/dist/components/Download/Download.mjs +34 -38
  41. package/dist/components/Download/downloads.mjs +40 -0
  42. package/dist/components/Items/AnnotationItems.mjs +165 -0
  43. package/dist/components/Items/CountMenu.mjs +90 -0
  44. package/dist/components/Items/Item.mjs +27 -19
  45. package/dist/components/Items/Items.mjs +93 -45
  46. package/dist/components/Items/Pager.mjs +39 -79
  47. package/dist/components/Items/PagerLayout.mjs +43 -0
  48. package/dist/components/Items/Position.mjs +103 -0
  49. package/dist/components/Items/StandaloneItems.mjs +12 -4
  50. package/dist/components/Items/TargetItems.mjs +202 -0
  51. package/dist/components/Items/masonry.mjs +35 -0
  52. package/dist/components/Label/Label.mjs +2 -1
  53. package/dist/components/Map/MapView.mjs +367 -57
  54. package/dist/components/Panel/About.mjs +61 -15
  55. package/dist/components/Panel/AboutActions.mjs +117 -0
  56. package/dist/components/Panel/Panel.mjs +58 -18
  57. package/dist/components/Panel/PartOfManifest.mjs +4 -3
  58. package/dist/components/Panel/ReadingLanguages.mjs +20 -0
  59. package/dist/components/Primitives/Primitives.mjs +18 -3
  60. package/dist/components/Provider/Provider.mjs +19 -5
  61. package/dist/components/Root/Announcer.mjs +3 -2
  62. package/dist/components/Root/Root.mjs +5 -2
  63. package/dist/components/Root/useRootState.mjs +16 -51
  64. package/dist/components/Scene/SceneView.mjs +36 -8
  65. package/dist/components/Scene/cloverEngine.mjs +2 -1
  66. package/dist/components/Search/Search.mjs +3 -2
  67. package/dist/components/Split/Split.mjs +4 -1
  68. package/dist/components/Status/Status.mjs +10 -2
  69. package/dist/components/Timeline/playerSurface.mjs +4 -1
  70. package/dist/components/Transcript/Transcript.mjs +42 -23
  71. package/dist/core/annotation-bodies.mjs +25 -5
  72. package/dist/core/annotation-collection.mjs +3 -2
  73. package/dist/core/annotation-name.mjs +12 -9
  74. package/dist/core/annotation-sets.mjs +139 -10
  75. package/dist/core/annotations-content.mjs +8 -1
  76. package/dist/core/annotations.mjs +8 -1
  77. package/dist/core/choice-key.mjs +5 -0
  78. package/dist/core/clover.mjs +112 -24
  79. package/dist/core/content-state-reader.mjs +33 -2
  80. package/dist/core/content-state.mjs +5 -3
  81. package/dist/core/dates-format.mjs +30 -0
  82. package/dist/core/dates.mjs +19 -0
  83. package/dist/core/geo.mjs +46 -5
  84. package/dist/core/image-layers.mjs +96 -0
  85. package/dist/core/items.mjs +4 -2
  86. package/dist/core/language-choice.mjs +30 -0
  87. package/dist/core/link.mjs +15 -1
  88. package/dist/core/load.mjs +4 -2
  89. package/dist/core/pages.mjs +20 -1
  90. package/dist/core/presentation.mjs +6 -4
  91. package/dist/core/range-regions.mjs +70 -0
  92. package/dist/core/ranges.mjs +52 -18
  93. package/dist/core/region.mjs +7 -2
  94. package/dist/core/sanitize.mjs +86 -1
  95. package/dist/core/save-file.mjs +33 -0
  96. package/dist/core/selectors.mjs +12 -0
  97. package/dist/core/upgrade.mjs +23 -0
  98. package/dist/core/value.mjs +11 -23
  99. package/dist/hooks/useFullscreenExit.mjs +26 -0
  100. package/dist/hooks/useHighContrast.mjs +27 -0
  101. package/dist/i18n/autonym.mjs +11 -0
  102. package/dist/i18n/config.mjs +3 -8
  103. package/dist/{core → i18n}/direction.mjs +5 -1
  104. package/dist/i18n/languages.mjs +44 -0
  105. package/dist/i18n/locales/en.json.mjs +1 -1
  106. package/dist/i18n/locales/es.json.mjs +1 -1
  107. package/dist/i18n/locales/fi.json.mjs +1 -1
  108. package/dist/i18n/locales/fr.json.mjs +1 -1
  109. package/dist/i18n/locales/nb.json.mjs +1 -1
  110. package/dist/i18n/locales/nn.json.mjs +1 -1
  111. package/dist/i18n/locales/no.json.mjs +1 -1
  112. package/dist/i18n/locales/pt.json.mjs +1 -1
  113. package/dist/{ui → i18n}/useContainerName.mjs +5 -4
  114. package/dist/{react/language.mjs → i18n/useRootLanguage.mjs} +2 -2
  115. package/dist/index.d.mts +476 -78
  116. package/dist/index.mjs +6 -2
  117. package/dist/lib/fullscreen.mjs +6 -1
  118. package/dist/lib/gltf/load.mjs +26 -6
  119. package/dist/lib/renderer/CanvasRenderer.mjs +71 -36
  120. package/dist/lib/renderer/camera/Camera.mjs +1 -1
  121. package/dist/lib/renderer/math/affine.mjs +14 -0
  122. package/dist/lib/renderer/scene/planFrame.mjs +12 -12
  123. package/dist/lib/renderer/scene/regions.mjs +11 -1
  124. package/dist/lib/renderer/scene/sceneItem.mjs +72 -9
  125. package/dist/lib/time.mjs +10 -0
  126. package/dist/map/index.d.mts +26 -4
  127. package/dist/react/fetchManifest.mjs +19 -0
  128. package/dist/react/hooks.mjs +7 -1
  129. package/dist/react/readingLanguages.mjs +16 -0
  130. package/dist/react/useContentStateOutput.mjs +71 -0
  131. package/dist/react/usePagesReached.mjs +42 -0
  132. package/dist/styles.css +1 -1
  133. package/dist/templates/default/Default.mjs +122 -135
  134. package/dist/templates/document/Document.mjs +45 -64
  135. package/dist/templates/document/Sheets.mjs +13 -5
  136. package/dist/templates/gallery/Gallery.mjs +90 -18
  137. package/dist/templates/index.d.mts +318 -18
  138. package/dist/templates/shared/Lightbox.mjs +161 -69
  139. package/dist/templates/shared/LightboxView.mjs +118 -0
  140. package/dist/templates/shared/PanelPane.mjs +104 -0
  141. package/dist/templates/{document/DocumentPanel.mjs → shared/PanelPart.mjs} +2 -2
  142. package/dist/templates/shared/dragToClose.mjs +51 -8
  143. package/dist/templates/shared/givenAnnotations.mjs +13 -0
  144. package/dist/templates/shared/useDragToClose.mjs +6 -3
  145. package/dist/templates/shared/useLazyPanelPane.mjs +16 -0
  146. package/dist/templates/shared/useSlide.mjs +6 -0
  147. package/dist/templates.css +1 -1
  148. package/dist/ui/BodyUnloadable.mjs +34 -0
  149. package/dist/ui/Button.mjs +2 -1
  150. package/dist/ui/Chevron.mjs +34 -0
  151. package/dist/ui/ControlCluster.mjs +15 -14
  152. package/dist/ui/EntryThumbnail.mjs +60 -0
  153. package/dist/ui/ExitFullscreen.mjs +2 -1
  154. package/dist/ui/FieldPill.mjs +5 -4
  155. package/dist/ui/HideToggle.mjs +2 -1
  156. package/dist/ui/LanguageChoice.mjs +45 -0
  157. package/dist/ui/ListEnd.mjs +29 -0
  158. package/dist/ui/Markup.mjs +27 -8
  159. package/dist/ui/NavDate.mjs +29 -0
  160. package/dist/ui/ReadMore.mjs +3 -2
  161. package/dist/ui/Sections.mjs +22 -31
  162. package/dist/ui/Steps.mjs +4 -3
  163. package/dist/ui/Tip.mjs +9 -4
  164. package/dist/ui/mediaIcons.mjs +35 -8
  165. package/dist/ui/useScrollTrack.mjs +2 -1
  166. package/dist/web-components/About-DvyvVUK5.mjs +1 -0
  167. package/dist/web-components/AnnotationItems-BpRcSrOM.mjs +1 -0
  168. package/dist/web-components/AnnotationMenu-BDPec3iI.mjs +1 -0
  169. package/dist/web-components/AnnotationState-Chs_37Kk.mjs +1 -0
  170. package/dist/web-components/Annotations-6E-oD_wg.mjs +2 -0
  171. package/dist/web-components/Annotations-CLPEq7Ro.mjs +1 -0
  172. package/dist/web-components/Body-Ct61yxI7.mjs +1 -0
  173. package/dist/web-components/BodyAlert-C_Qh3Up_.mjs +1 -0
  174. package/dist/web-components/Button-L8ZMy5lY.mjs +1 -0
  175. package/dist/web-components/{Camera-cdCqKMup.mjs → Camera-BPyLzZjP.mjs} +1 -1
  176. package/dist/web-components/{Canvas2DBackend-CnLEHRs4.mjs → Canvas2DBackend-8wFavYdl.mjs} +1 -1
  177. package/dist/web-components/CanvasView-2Fj9nT06.mjs +2 -0
  178. package/dist/web-components/CaptionDetails-DuwS-grE.mjs +1 -0
  179. package/dist/web-components/ChaptersMenu-Bj2EqtVJ.mjs +1 -0
  180. package/dist/web-components/Chevron-Cyr_cc9X.mjs +1 -0
  181. package/dist/web-components/ChoiceMenu-ConzybVH.mjs +1 -0
  182. package/dist/web-components/Collection-CLayN8sv.mjs +1 -0
  183. package/dist/web-components/CollectionSelect-D2d8dGJ4.mjs +1 -0
  184. package/dist/web-components/Connected-CBQ6xyhr.mjs +1 -0
  185. package/dist/web-components/Connected-DMXG3imZ.mjs +1 -0
  186. package/dist/web-components/Connected-pyd0EBD3.mjs +1 -0
  187. package/dist/web-components/Contents-tCMXBYDK.mjs +1 -0
  188. package/dist/web-components/ControlMenu-D1zkB0qX.mjs +1 -0
  189. package/dist/web-components/ControlsFade-BNXVTL_Q.mjs +1 -0
  190. package/dist/web-components/CountMenu-Dnzb7lKo.mjs +1 -0
  191. package/dist/web-components/Cue-CUGmPS3k.mjs +1 -0
  192. package/dist/web-components/Document-D-8nalCX.mjs +1 -0
  193. package/dist/web-components/{DomLayers-BD4QPbl6.mjs → DomLayers-BxPU05-D.mjs} +1 -1
  194. package/dist/web-components/Download-Bku9Vptk.mjs +1 -0
  195. package/dist/web-components/EntryBodies-77vDudCb.mjs +1 -0
  196. package/dist/web-components/EntryThumbnail-BxQWKW6e.mjs +1 -0
  197. package/dist/web-components/FieldPill-nFGsaru9.mjs +1 -0
  198. package/dist/web-components/FrameAnimation-BvKiSXcm.mjs +1 -0
  199. package/dist/web-components/Gallery-4Hd58afA.mjs +1 -0
  200. package/dist/web-components/HideToggle-TEhY4TS4.mjs +1 -0
  201. package/dist/web-components/ImageControls-CZO7WoPb.mjs +1 -0
  202. package/dist/web-components/Items-CudZ4Lnb.mjs +1 -0
  203. package/dist/web-components/Label-f07N5Fld.mjs +1 -0
  204. package/dist/web-components/LanguageChoice-B5VM21DV.mjs +1 -0
  205. package/dist/web-components/LightboxView-C4OASmkg.mjs +1 -0
  206. package/dist/web-components/ListEnd-M39M62Cl.mjs +1 -0
  207. package/dist/web-components/{Loaded-D5xmFRSo.mjs → Loaded-oGFyBuos.mjs} +1 -1
  208. package/dist/web-components/LoadedCanvas-IvpSzPO6.mjs +1 -0
  209. package/dist/web-components/LoadedMap-WATGNLxl.mjs +1 -0
  210. package/dist/web-components/{Loading-CBKfwsML.mjs → Loading-YxuKrDAM.mjs} +1 -1
  211. package/dist/web-components/{Map-Bcgp_R8H.mjs → Map-Cw9j3gi3.mjs} +1 -1
  212. package/dist/web-components/MapView-3OxoCr5l.mjs +3 -0
  213. package/dist/web-components/Markup-DW75Jx3j.mjs +2 -0
  214. package/dist/web-components/MediaBody-CLtd0bf0.mjs +1 -0
  215. package/dist/web-components/MediaBody-JnKnoIqY.mjs +1 -0
  216. package/dist/web-components/NavDate-BCCOyycx.mjs +1 -0
  217. package/dist/web-components/{Navigator-BSJbEbuJ.mjs → Navigator-Bx4zS0Yr.mjs} +1 -1
  218. package/dist/web-components/Pager-B9GvQ64b.mjs +1 -0
  219. package/dist/web-components/PagerLayout-BF33VZL_.mjs +1 -0
  220. package/dist/web-components/Panel-BvDpCn6K.mjs +1 -0
  221. package/dist/web-components/PanelPart-Bd4lSUrP.mjs +1 -0
  222. package/dist/web-components/{PanelToggle-mUDw73zI.mjs → PanelToggle-bPcIULGZ.mjs} +1 -1
  223. package/dist/web-components/PartOfManifest-HLg-r00O.mjs +1 -0
  224. package/dist/web-components/{Pending-BPOQ2z1L.mjs → Pending-BxGjjnqq.mjs} +1 -1
  225. package/dist/web-components/PlaceBox-D-Zhe9-U.mjs +1 -0
  226. package/dist/web-components/Placeholder-DzY5hcbk.mjs +1 -0
  227. package/dist/web-components/Position-TYnzcm8e.mjs +1 -0
  228. package/dist/web-components/Primitives-C6VJXxZD.mjs +1 -0
  229. package/dist/web-components/Provider-DyB0wpeO.mjs +1 -0
  230. package/dist/web-components/ReadMore-De_0T7lc.mjs +1 -0
  231. package/dist/web-components/Root-Bt3NNBFb.mjs +1 -0
  232. package/dist/web-components/Scene-DrOM9YlD.mjs +1 -0
  233. package/dist/web-components/SceneView-DA7Yg20p.mjs +1 -0
  234. package/dist/web-components/Search-DgT8OPsK.mjs +1 -0
  235. package/dist/web-components/Sections-d1acn7qm.mjs +2 -0
  236. package/dist/web-components/StandaloneItems-DUb4YKCB.mjs +1 -0
  237. package/dist/web-components/Status-CcU3u6P4.mjs +1 -0
  238. package/dist/web-components/Steps-nlSCzbDQ.mjs +1 -0
  239. package/dist/web-components/TargetItems-BDJM3Ar-.mjs +1 -0
  240. package/dist/web-components/Timeline-BfdN3lIv.mjs +1 -0
  241. package/dist/web-components/Tip-OCB88zwY.mjs +1 -0
  242. package/dist/web-components/Transcript-bSA3cx_K.mjs +1 -0
  243. package/dist/web-components/Transport-DaIhfZqC.mjs +1 -0
  244. package/dist/web-components/Transport-DjOYI-fR.mjs +1 -0
  245. package/dist/web-components/annotation-collection-D8emkElk.mjs +1 -0
  246. package/dist/web-components/annotation-name-DbWjhgra.mjs +1 -0
  247. package/dist/web-components/annotations-content-Bg6aVAGC.mjs +1 -0
  248. package/dist/web-components/body-Ct8dmQdW.mjs +1 -0
  249. package/dist/web-components/canvas-goEZLqEd.mjs +1 -0
  250. package/dist/web-components/choice-key-BUNebLKe.mjs +1 -0
  251. package/dist/web-components/cloverEngine-Df7cMwOP.mjs +164 -0
  252. package/dist/web-components/content-state-reader-CNmBpG1L.mjs +1 -0
  253. package/dist/web-components/{controls-Dj2BybWb.mjs → controls-BZr16sYQ.mjs} +1 -1
  254. package/dist/web-components/custom-elements.json +260 -48
  255. package/dist/web-components/dates-DR3gfcON.mjs +1 -0
  256. package/dist/web-components/downloads-EjJ6Hpip.mjs +1 -0
  257. package/dist/web-components/dragToClose-X9NbZOhA.mjs +1 -0
  258. package/dist/web-components/{engine-BSt8LTso.mjs → engine-DMoc0tff.mjs} +1 -1
  259. package/dist/web-components/{engines-CC0OEsVE.mjs → engines-BmB81VXR.mjs} +1 -1
  260. package/dist/web-components/es-B1NvdYp-.mjs +1 -0
  261. package/dist/web-components/fetchManifest-CwQC6cCh.mjs +1 -0
  262. package/dist/web-components/fi-BjtYZNLo.mjs +1 -0
  263. package/dist/web-components/fr-Cd22Lziw.mjs +1 -0
  264. package/dist/web-components/fromManifest-DrAmY1lB.mjs +1 -0
  265. package/dist/web-components/glyphs-BFK_hvJJ.mjs +1 -0
  266. package/dist/web-components/hooks-BhtNDs_1.mjs +1 -0
  267. package/dist/web-components/image-layers-D2nQC4R-.mjs +1 -0
  268. package/dist/web-components/{imageService-dsdmcegU.mjs → imageService-iFElsopt.mjs} +1 -1
  269. package/dist/web-components/index-FJEpXukG.mjs +1 -0
  270. package/dist/web-components/index.d.mts +99 -14
  271. package/dist/web-components/index.mjs +1 -1
  272. package/dist/web-components/items-BPPrqbeh.mjs +1 -0
  273. package/dist/web-components/items-BnEnc5ot.mjs +1 -0
  274. package/dist/web-components/label-DauFa5sg.mjs +1 -0
  275. package/dist/web-components/layout-Djwu8f4R.mjs +1 -0
  276. package/dist/web-components/link-0lUlTZlw.mjs +1 -0
  277. package/dist/web-components/logo-DWPxaZaG.mjs +1 -0
  278. package/dist/web-components/masonry-0QfzOgbB.mjs +1 -0
  279. package/dist/web-components/models-BF2pqufA.mjs +1 -0
  280. package/dist/web-components/nb-CEwZDBiR.mjs +1 -0
  281. package/dist/web-components/nn-jYQhr9RI.mjs +1 -0
  282. package/dist/web-components/no-CEwZDBiR.mjs +1 -0
  283. package/dist/web-components/{nodes-B7JRwBgl.mjs → nodes-ChQRLDGU.mjs} +1 -1
  284. package/dist/web-components/{overlayImage-0OgQl1TL.mjs → overlayImage-MKrcgDep.mjs} +1 -1
  285. package/dist/web-components/panClearOfControls-Cn2ZXsZi.mjs +1 -0
  286. package/dist/web-components/{panel-CjXfre-g.mjs → panel-C13V6w6E.mjs} +1 -1
  287. package/dist/web-components/part-CekFWrtz.mjs +1 -0
  288. package/dist/web-components/playerSurface-DG1XipTq.mjs +1 -0
  289. package/dist/web-components/pointer-YQppt0at.mjs +1 -0
  290. package/dist/web-components/presentation-2-C-U79S_T.mjs +1 -0
  291. package/dist/web-components/{provider-C1wKfdjb.mjs → provider-DiUkZYiW.mjs} +1 -1
  292. package/dist/web-components/pt-CWR30SzS.mjs +1 -0
  293. package/dist/web-components/range-regions-CqGjyM76.mjs +1 -0
  294. package/dist/web-components/read-more-D8RJYdtQ.mjs +1 -0
  295. package/dist/web-components/readingLanguages-BWOLZK2k.mjs +1 -0
  296. package/dist/web-components/rendererSurface-BkbGDL_Z.mjs +22 -0
  297. package/dist/web-components/{renderers-BMSWEFUR.mjs → renderers-LtRX5pT0.mjs} +1 -1
  298. package/dist/web-components/{resource-DLHocQ1C.mjs → resource-Cfydiy4m.mjs} +1 -1
  299. package/dist/web-components/sanitize-qIOeyIww.mjs +3 -0
  300. package/dist/web-components/save-file-dZyOpXgY.mjs +1 -0
  301. package/dist/web-components/search-BfUZJM3a.mjs +1 -0
  302. package/dist/web-components/sequence-C28xoNmD.mjs +1 -0
  303. package/dist/web-components/shared-DkY2a89G.mjs +1 -0
  304. package/dist/web-components/{show-link-CyzYE1eS.mjs → show-link-DgLJzG7k.mjs} +1 -1
  305. package/dist/web-components/{sizedImage-uv_NlE0l.mjs → sizedImage-NHzhcBYk.mjs} +1 -1
  306. package/dist/web-components/{split-CYuMjp89.mjs → split-CuFiKjin.mjs} +1 -1
  307. package/dist/web-components/{status-Ms5L0ghK.mjs → status-C3etlkhY.mjs} +1 -1
  308. package/dist/web-components/styles-DkkVOSUQ.mjs +1 -0
  309. package/dist/web-components/three.mjs +1 -1
  310. package/dist/web-components/thumbnail-DecrVnpj.mjs +1 -0
  311. package/dist/web-components/{tip-dWhupWSr.mjs → tip-D5YgaIWW.mjs} +1 -1
  312. package/dist/web-components/{toggle-BQTjR1I3.mjs → toggle-CZGB65VZ.mjs} +1 -1
  313. package/dist/web-components/upgrade-eNW0DPXq.mjs +1 -0
  314. package/dist/web-components/upgrader-BlbMUEH6.mjs +1 -0
  315. package/dist/web-components/useContainerName-hKQjEt7a.mjs +1 -0
  316. package/dist/web-components/useControlsVisibility-DPg8uAkW.mjs +1 -0
  317. package/dist/web-components/useLazyPanelPane-eby-OI1V.mjs +1 -0
  318. package/dist/web-components/useNearViewport-CDbHQUBk.mjs +1 -0
  319. package/dist/web-components/useScrollTrack-D9l_P3_B.mjs +1 -0
  320. package/dist/web-components/viewer/AnnotationItems-DtsnDXPM.mjs +1 -0
  321. package/dist/web-components/viewer/AnnotationMenu-C-Mz6CCn.mjs +1 -0
  322. package/dist/web-components/viewer/AnnotationState-5pim5K72.mjs +1 -0
  323. package/dist/web-components/viewer/Annotations-Cqn1TkzD.mjs +2 -0
  324. package/dist/web-components/viewer/Annotations-CxwN9FkB.mjs +1 -0
  325. package/dist/web-components/viewer/{Canvas2DBackend-CAmzJD5P.mjs → Canvas2DBackend-C-ZMSCak.mjs} +1 -1
  326. package/dist/web-components/viewer/CaptionDetails-CRD-gSZP.mjs +1 -0
  327. package/dist/web-components/viewer/ChaptersMenu-Brcq3yJv.mjs +1 -0
  328. package/dist/web-components/viewer/ChoiceMenu-ByGzQQx1.mjs +1 -0
  329. package/dist/web-components/viewer/Collection-m0GCcsfQ.mjs +1 -0
  330. package/dist/web-components/viewer/Connected-Bmc_CdUD.mjs +1 -0
  331. package/dist/web-components/viewer/Connected-Dvx7wtot.mjs +1 -0
  332. package/dist/web-components/viewer/Contents-CwDpfiJY.mjs +1 -0
  333. package/dist/web-components/viewer/ControlMenu-TcO85hDf.mjs +1 -0
  334. package/dist/web-components/viewer/ControlsFade-BoZ4ABAE.mjs +1 -0
  335. package/dist/web-components/viewer/CountMenu-0-ie8kIZ.mjs +1 -0
  336. package/dist/web-components/viewer/Cue-DxmAS9Gx.mjs +1 -0
  337. package/dist/web-components/viewer/Document-BsryuYJ1.mjs +1 -0
  338. package/dist/web-components/viewer/{DomLayers-DRdQSEtN.mjs → DomLayers-hc0qARQc.mjs} +1 -1
  339. package/dist/web-components/viewer/Download-MO-1Rik4.mjs +1 -0
  340. package/dist/web-components/viewer/EntryBodies-g-OEwEsk.mjs +1 -0
  341. package/dist/web-components/viewer/EntryThumbnail-DcIDYATi.mjs +1 -0
  342. package/dist/web-components/viewer/FieldPill-B9S21lxw.mjs +1 -0
  343. package/dist/web-components/viewer/FrameAnimation-qI9cZPEs.mjs +1 -0
  344. package/dist/web-components/viewer/Gallery-BOgUqfqw.mjs +1 -0
  345. package/dist/web-components/viewer/HideToggle-D8wH49mq.mjs +1 -0
  346. package/dist/web-components/viewer/ImageControls-ZoEC9jWd.mjs +1 -0
  347. package/dist/web-components/viewer/LanguageChoice-CRqsCBAp.mjs +1 -0
  348. package/dist/web-components/viewer/LightboxView-BB-GcbYr.mjs +1 -0
  349. package/dist/web-components/viewer/ListEnd-D9Obxie4.mjs +1 -0
  350. package/dist/web-components/viewer/MapView-DQSwUzd7.mjs +3 -0
  351. package/dist/web-components/viewer/MediaBody-CIw2nTlj.mjs +1 -0
  352. package/dist/web-components/viewer/MediaBody-D5ff6xy-.mjs +1 -0
  353. package/dist/web-components/viewer/NavDate-BnfDG57h.mjs +1 -0
  354. package/dist/web-components/viewer/{Navigator-CKwDgG2x.mjs → Navigator-BNwjmkXY.mjs} +1 -1
  355. package/dist/web-components/viewer/PagerLayout-C8jraHqs.mjs +1 -0
  356. package/dist/web-components/viewer/PanelPart-YNbBI9SQ.mjs +1 -0
  357. package/dist/web-components/viewer/PartOfManifest-DX7H0V4g.mjs +1 -0
  358. package/dist/web-components/viewer/PlaceBox-CCWfzsNU.mjs +1 -0
  359. package/dist/web-components/viewer/Placeholder-CsEkLhz7.mjs +1 -0
  360. package/dist/web-components/viewer/Search-CsdYzdq1.mjs +1 -0
  361. package/dist/web-components/viewer/StandaloneItems-BfvBxbUm.mjs +1 -0
  362. package/dist/web-components/viewer/Steps-BH8ZApS4.mjs +1 -0
  363. package/dist/web-components/viewer/TargetItems-BebPFr-c.mjs +1 -0
  364. package/dist/web-components/viewer/Transcript-DXLv5WR9.mjs +1 -0
  365. package/dist/web-components/viewer/Transport-C-fh7Kx2.mjs +1 -0
  366. package/dist/web-components/viewer/Transport-CY6BWfMi.mjs +1 -0
  367. package/dist/web-components/viewer/annotation-collection-Cjd8Dgyl.mjs +1 -0
  368. package/dist/web-components/viewer/annotation-name-CwmgQFia.mjs +1 -0
  369. package/dist/web-components/viewer/annotations-content-BARXoAz-.mjs +1 -0
  370. package/dist/web-components/viewer/cloverEngine-CumnJPKO.mjs +164 -0
  371. package/dist/web-components/viewer/content-state-reader-DuvyLThu.mjs +1 -0
  372. package/dist/web-components/viewer/dragToClose-CFCxhUxn.mjs +1 -0
  373. package/dist/web-components/viewer/fetchManifest-qNB_KgxL.mjs +1 -0
  374. package/dist/web-components/viewer/{host-DlCltI_c.mjs → host-GTHX2fPK.mjs} +1 -1
  375. package/dist/web-components/viewer/image-layers-DKOuaRTj.mjs +1 -0
  376. package/dist/web-components/viewer/index.mjs +1 -1
  377. package/dist/web-components/viewer/link-BlaM0tCa.mjs +1 -0
  378. package/dist/web-components/viewer/overlayImage-RVpv69R5.mjs +1 -0
  379. package/dist/web-components/viewer/range-regions-CIZiAHOp.mjs +1 -0
  380. package/dist/web-components/viewer/{renderers-C_wdmw9v.mjs → renderers-Dw1klwlx.mjs} +1 -1
  381. package/dist/web-components/viewer/save-file-EvzaBEJN.mjs +1 -0
  382. package/dist/web-components/viewer/{search-BHLyNxZ6.mjs → search-x1QL_bth.mjs} +1 -1
  383. package/dist/web-components/viewer/styles-I7_LWFGj.mjs +1 -0
  384. package/dist/web-components/viewer/useControlsVisibility-C_SQHIVR.mjs +1 -0
  385. package/dist/web-components/viewer/useLazyPanelPane-UuGDJrf_.mjs +1 -0
  386. package/dist/web-components/viewer/viewer-DJrQuNs1.mjs +29 -0
  387. package/dist/web-components/viewer/{vtt-XiS_-5Ao.mjs → vtt-C2G89SWH.mjs} +1 -1
  388. package/dist/web-components/viewer-Br44EEba.mjs +1 -0
  389. package/dist/web-components/{vtt-DYAOuQoK.mjs → vtt-Dd0c7psH.mjs} +1 -1
  390. package/package.json +8 -4
  391. package/dist/i18n/reader.mjs +0 -13
  392. package/dist/templates/shared/LightboxBody.mjs +0 -9
  393. package/dist/web-components/About-DbrFSVBm.mjs +0 -1
  394. package/dist/web-components/AnnotationMenu-EBjIQpQl.mjs +0 -1
  395. package/dist/web-components/AnnotationState-DQTaO6Gz.mjs +0 -1
  396. package/dist/web-components/Annotations-Cb9U7HJ_.mjs +0 -2
  397. package/dist/web-components/Annotations-Dl0SgHBS.mjs +0 -1
  398. package/dist/web-components/Body-DxSz3iST.mjs +0 -1
  399. package/dist/web-components/BodyAlert-C8EOXz24.mjs +0 -1
  400. package/dist/web-components/Button-uWgfvqsL.mjs +0 -1
  401. package/dist/web-components/CanvasView-BI3YzNdK.mjs +0 -1
  402. package/dist/web-components/CaptionDetails-B80ZhZ7v.mjs +0 -1
  403. package/dist/web-components/ChoiceMenu-DCp7-co7.mjs +0 -1
  404. package/dist/web-components/Collection-B1Le2_TU.mjs +0 -1
  405. package/dist/web-components/CollectionSelect-BL_jQog-.mjs +0 -1
  406. package/dist/web-components/Connected-BxqaRL9o.mjs +0 -1
  407. package/dist/web-components/Connected-DCBI-j9H.mjs +0 -1
  408. package/dist/web-components/Connected-DkhfVWxd.mjs +0 -1
  409. package/dist/web-components/Contents-zYEGHLfe.mjs +0 -1
  410. package/dist/web-components/ControlMenu-CAHiLAtl.mjs +0 -1
  411. package/dist/web-components/Cue-BT2V9VAq.mjs +0 -1
  412. package/dist/web-components/Document-BdCjGnJN.mjs +0 -1
  413. package/dist/web-components/DocumentPanel-X_Rta0Wu.mjs +0 -1
  414. package/dist/web-components/Download-DqU-goFi.mjs +0 -1
  415. package/dist/web-components/EntryBodies-DXAQH0vR.mjs +0 -1
  416. package/dist/web-components/ErrorBoundary-chQaO-Up.mjs +0 -1
  417. package/dist/web-components/FieldPill-CyEssPVm.mjs +0 -1
  418. package/dist/web-components/FrameAnimation-Bb0pOoRl.mjs +0 -1
  419. package/dist/web-components/Gallery-BXU3TcT3.mjs +0 -1
  420. package/dist/web-components/HideToggle-BwMrOBMu.mjs +0 -1
  421. package/dist/web-components/Items-DRj1UEpC.mjs +0 -1
  422. package/dist/web-components/Label-D6aVJB9s.mjs +0 -1
  423. package/dist/web-components/LightboxBody-BzXQGMDn.mjs +0 -1
  424. package/dist/web-components/LoadedCanvas-DOjtxLSe.mjs +0 -1
  425. package/dist/web-components/LoadedMap-DouDS2lO.mjs +0 -1
  426. package/dist/web-components/MapView-CD5zkTs8.mjs +0 -1
  427. package/dist/web-components/Markup-C1hMA8wk.mjs +0 -2
  428. package/dist/web-components/MediaBody-B_Gii4we.mjs +0 -1
  429. package/dist/web-components/MediaBody-BfrKIPte.mjs +0 -1
  430. package/dist/web-components/Pager-Di_2hHM3.mjs +0 -1
  431. package/dist/web-components/Panel-DbsC8A9V.mjs +0 -1
  432. package/dist/web-components/PartOfManifest-7eOwURrF.mjs +0 -1
  433. package/dist/web-components/Primitives-XQO3m1wG.mjs +0 -1
  434. package/dist/web-components/Provider-B61118lU.mjs +0 -1
  435. package/dist/web-components/ReadMore-BJH-qqte.mjs +0 -1
  436. package/dist/web-components/Root-Dj277K6p.mjs +0 -1
  437. package/dist/web-components/Scene-BTWpLeec.mjs +0 -1
  438. package/dist/web-components/SceneView-BYo7WmPt.mjs +0 -1
  439. package/dist/web-components/Search-ZV8FFN4p.mjs +0 -1
  440. package/dist/web-components/Sections-ejwu1_Sm.mjs +0 -2
  441. package/dist/web-components/StandaloneItems-BYaiyCca.mjs +0 -1
  442. package/dist/web-components/Status-YbQK2KzY.mjs +0 -1
  443. package/dist/web-components/Timeline-ByyVSd7B.mjs +0 -1
  444. package/dist/web-components/Tip-IO11xX4x.mjs +0 -1
  445. package/dist/web-components/Transcript-D0gUxUoA.mjs +0 -1
  446. package/dist/web-components/annotation-collection-Csv7WIlm.mjs +0 -1
  447. package/dist/web-components/annotations-content-BS_OFz5Z.mjs +0 -1
  448. package/dist/web-components/body-CKjwwFep.mjs +0 -1
  449. package/dist/web-components/canvas-CIzpp-Uz.mjs +0 -1
  450. package/dist/web-components/cloverEngine-B4LinbSt.mjs +0 -164
  451. package/dist/web-components/content-state-reader-D1BkpICh.mjs +0 -1
  452. package/dist/web-components/dragToClose-C-Pf1IeO.mjs +0 -1
  453. package/dist/web-components/es-BwMkoRod.mjs +0 -1
  454. package/dist/web-components/fi-gPFOn9RK.mjs +0 -1
  455. package/dist/web-components/fr-DUHmgdJo.mjs +0 -1
  456. package/dist/web-components/fromManifest-BhemHaoA.mjs +0 -1
  457. package/dist/web-components/glyphs-drROkef9.mjs +0 -1
  458. package/dist/web-components/hooks-BXzQSllm.mjs +0 -1
  459. package/dist/web-components/index-B7nZdqLg.mjs +0 -1
  460. package/dist/web-components/items-CB2Uk7ts.mjs +0 -1
  461. package/dist/web-components/items-jfQ5XzEj.mjs +0 -1
  462. package/dist/web-components/keep-fragments-B5nlv2ck.mjs +0 -1
  463. package/dist/web-components/label-Vbg_cMOJ.mjs +0 -1
  464. package/dist/web-components/layout-mMHI0lsj.mjs +0 -1
  465. package/dist/web-components/link-ZRnv5NFR.mjs +0 -1
  466. package/dist/web-components/logo-Boy6u4m2.mjs +0 -1
  467. package/dist/web-components/models-D1EE_CmH.mjs +0 -1
  468. package/dist/web-components/nb-BSvnQ6jd.mjs +0 -1
  469. package/dist/web-components/nn-Dg2_HdZu.mjs +0 -1
  470. package/dist/web-components/no-BSvnQ6jd.mjs +0 -1
  471. package/dist/web-components/panClearOfControls-ac9uf-Qs.mjs +0 -1
  472. package/dist/web-components/part-cUiPs2-y.mjs +0 -1
  473. package/dist/web-components/playerSurface-CU5XxI1j.mjs +0 -1
  474. package/dist/web-components/pt-B3J80JgO.mjs +0 -1
  475. package/dist/web-components/read-more-DNHNtG-a.mjs +0 -1
  476. package/dist/web-components/rendererSurface-DhIlOjGT.mjs +0 -22
  477. package/dist/web-components/sanitize-Dc7nOsgO.mjs +0 -3
  478. package/dist/web-components/search-CLy2Wj01.mjs +0 -1
  479. package/dist/web-components/shared-YUjOSBKO.mjs +0 -1
  480. package/dist/web-components/styles-CyuM_fB1.mjs +0 -1
  481. package/dist/web-components/thumbnail-c2K_iQsD.mjs +0 -1
  482. package/dist/web-components/time-B9GZoYcm.mjs +0 -1
  483. package/dist/web-components/upgrader-XNxI-5jo.mjs +0 -1
  484. package/dist/web-components/useContainerName-BpJ3IWY0.mjs +0 -1
  485. package/dist/web-components/useNearViewport-CtLyYg9n.mjs +0 -1
  486. package/dist/web-components/useScrollTrack-WbG28FPD.mjs +0 -1
  487. package/dist/web-components/viewer/AnnotationMenu-ZKyBeyUU.mjs +0 -1
  488. package/dist/web-components/viewer/AnnotationState-DO33zokc.mjs +0 -1
  489. package/dist/web-components/viewer/Annotations-BOjhr5ks.mjs +0 -1
  490. package/dist/web-components/viewer/Annotations-DkLueFLK.mjs +0 -2
  491. package/dist/web-components/viewer/CaptionDetails-DOJlUtOn.mjs +0 -1
  492. package/dist/web-components/viewer/ChoiceMenu-BDq6H34G.mjs +0 -1
  493. package/dist/web-components/viewer/Collection-By3puO0V.mjs +0 -1
  494. package/dist/web-components/viewer/Connected-DZNO2CPf.mjs +0 -1
  495. package/dist/web-components/viewer/Connected-ESg5y49m.mjs +0 -1
  496. package/dist/web-components/viewer/Contents-B_FqDwTW.mjs +0 -1
  497. package/dist/web-components/viewer/ControlMenu-DdQl-dTf.mjs +0 -1
  498. package/dist/web-components/viewer/Cue-BTRHfiWQ.mjs +0 -1
  499. package/dist/web-components/viewer/Document-B9_PyD2w.mjs +0 -1
  500. package/dist/web-components/viewer/DocumentPanel-CtEJVPoE.mjs +0 -1
  501. package/dist/web-components/viewer/EntryBodies-CJuTRcTq.mjs +0 -1
  502. package/dist/web-components/viewer/FieldPill-06uwrNwE.mjs +0 -1
  503. package/dist/web-components/viewer/FrameAnimation-3dcDHf5q.mjs +0 -1
  504. package/dist/web-components/viewer/Gallery-BYasTqZc.mjs +0 -1
  505. package/dist/web-components/viewer/HideToggle-BxkNMX-T.mjs +0 -1
  506. package/dist/web-components/viewer/LightboxBody-CXMc1xOH.mjs +0 -1
  507. package/dist/web-components/viewer/MapView-DCerrRRV.mjs +0 -1
  508. package/dist/web-components/viewer/MediaBody-BdkJcyGy.mjs +0 -1
  509. package/dist/web-components/viewer/MediaBody-waF4KvHp.mjs +0 -1
  510. package/dist/web-components/viewer/PartOfManifest-DalHJFwC.mjs +0 -1
  511. package/dist/web-components/viewer/Search-Di_QQfDb.mjs +0 -1
  512. package/dist/web-components/viewer/StandaloneItems-B9J6nnWn.mjs +0 -1
  513. package/dist/web-components/viewer/Transcript-aHOixfna.mjs +0 -1
  514. package/dist/web-components/viewer/annotation-collection-I2UkdobR.mjs +0 -1
  515. package/dist/web-components/viewer/annotations-content-D-i4j9pD.mjs +0 -1
  516. package/dist/web-components/viewer/cloverEngine-CynoKdta.mjs +0 -164
  517. package/dist/web-components/viewer/content-state-reader-D7GIMcKK.mjs +0 -1
  518. package/dist/web-components/viewer/link-BX-wzj1u.mjs +0 -1
  519. package/dist/web-components/viewer/overlayImage-CHqn1fG8.mjs +0 -1
  520. package/dist/web-components/viewer/styles-BRCkEU3w.mjs +0 -1
  521. package/dist/web-components/viewer/viewer-ipqAA-xQ.mjs +0 -28
  522. package/dist/web-components/viewer-DEHIsIHd.mjs +0 -1
  523. /package/dist/{ui → i18n}/languageCode.mjs +0 -0
@@ -1,107 +1,199 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useRef, useEffect, Suspense, lazy } from "react";
4
- import { useT, useLangOf, useLocalized, useActiveCanvas } from "../../react/hooks.mjs";
4
+ import { useGivenAnnotations } from "./givenAnnotations.mjs";
5
+ import { useT, useLangOf, useLocalized, useManifest } from "../../react/hooks.mjs";
5
6
  import { useUniqueId } from "../../ui/useUniqueId.mjs";
6
7
  import { Label } from "../../components/Label/Label.mjs";
7
8
  import { titled } from "../../ui/heading.mjs";
8
9
  import { Tip } from "../../ui/Tip.mjs";
9
- import { Items } from "../../components/Items/Items.mjs";
10
- const load = () => import("./LightboxBody.mjs");
11
- const LightboxBody = lazy(load);
10
+ import { useCloverSelector } from "../../react/context.mjs";
11
+ const load = () => import("./LightboxView.mjs");
12
+ const LightboxView = lazy(load);
12
13
  const preloadLightbox = () => void load();
13
14
  function Lightbox({
14
15
  open,
15
16
  onClose,
16
17
  headingLevel = 3,
17
- className
18
+ items = "slider",
19
+ className,
20
+ ...view
18
21
  }) {
19
22
  var _a;
20
23
  const t = useT();
21
24
  const langOf = useLangOf();
22
- const dialog = useRef(null);
25
+ const layer = useRef(null);
26
+ const panel = useRef(null);
27
+ const close = useRef(null);
23
28
  const baseId = useUniqueId().replace(/:/g, "");
24
29
  const titleId = `${baseId}-title`;
25
- const manifestTitleId = `${baseId}-manifest`;
26
- const canvasLabel = useLocalized((_a = useActiveCanvas()) == null ? void 0 : _a.label);
27
- const named = canvasLabel.text ? titleId : manifestTitleId;
30
+ const viewTitleId = `${baseId}-view`;
31
+ const manifestLabel = useLocalized((_a = useManifest()) == null ? void 0 : _a.label);
32
+ const named = manifestLabel.text ? titleId : viewTitleId;
33
+ const given = Boolean(useGivenAnnotations());
34
+ const closing = useRef(onClose);
35
+ closing.current = onClose;
28
36
  useEffect(() => {
29
- var _a2;
30
- const element = dialog.current;
31
- if (!element) return;
32
- if (open && !element.open) (_a2 = element.showModal) == null ? void 0 : _a2.call(element);
33
- if (!open && element.open) element.close();
37
+ var _a2, _b, _c, _d;
38
+ const element = layer.current;
39
+ const root = element == null ? void 0 : element.parentElement;
40
+ if (!open || !element || !root) return;
41
+ const opener = element.ownerDocument.activeElement;
42
+ const others = Array.from(root.children).filter(
43
+ (child) => child !== element && !child.classList.contains("clover-announcer")
44
+ );
45
+ others.forEach((child) => child.inert = true);
46
+ (_b = (_a2 = panel.current) == null ? void 0 : _a2.scrollIntoView) == null ? void 0 : _b.call(_a2, { block: "nearest" });
47
+ const chosen = (_c = panel.current) == null ? void 0 : _c.querySelector(
48
+ '[role="listbox"] [role="option"][aria-selected="true"]'
49
+ );
50
+ (_d = chosen ?? close.current) == null ? void 0 : _d.focus({ preventScroll: true });
51
+ return () => {
52
+ others.forEach((child) => child.inert = false);
53
+ if (opener == null ? void 0 : opener.isConnected) opener.focus({ preventScroll: true });
54
+ };
34
55
  }, [open]);
35
56
  return /* @__PURE__ */ jsx(
36
- "dialog",
57
+ "div",
37
58
  {
38
- ref: dialog,
59
+ ref: layer,
39
60
  className: ["clover-template-lightbox", className].filter(Boolean).join(" "),
40
- "aria-labelledby": named,
41
- onClose,
61
+ hidden: !open,
42
62
  onClick: (event) => {
43
- if (event.target === dialog.current) onClose();
63
+ if (event.target === layer.current) onClose();
44
64
  },
45
- children: open && /* @__PURE__ */ jsxs("div", { className: "clover-template-lightbox-content", children: [
46
- /* @__PURE__ */ jsxs("header", { className: "clover-template-lightbox-header", children: [
47
- /* @__PURE__ */ jsx(
48
- Label,
49
- {
50
- of: "canvas",
51
- as: titled(headingLevel, titleId).as,
52
- id: titleId,
53
- className: "clover-template-lightbox-title"
54
- }
55
- ),
56
- named === manifestTitleId && /* @__PURE__ */ jsx(Label, { id: manifestTitleId, hidden: true }),
57
- /* @__PURE__ */ jsxs(
58
- "button",
59
- {
60
- type: "button",
61
- className: "clover-template-lightbox-close",
62
- "aria-label": t("commonClose"),
63
- lang: langOf("commonClose"),
64
- onClick: onClose,
65
- children: [
66
- /* @__PURE__ */ jsx(
67
- "svg",
68
- {
69
- "aria-hidden": "true",
70
- focusable: "false",
71
- width: "16",
72
- height: "16",
73
- viewBox: "0 0 16 16",
74
- children: /* @__PURE__ */ jsx(
75
- "path",
65
+ onKeyDown: (event) => {
66
+ if (event.key !== "Escape" || event.defaultPrevented) return;
67
+ event.preventDefault();
68
+ closing.current();
69
+ },
70
+ children: open && /* @__PURE__ */ jsxs(
71
+ "div",
72
+ {
73
+ ref: panel,
74
+ role: "dialog",
75
+ "aria-modal": "true",
76
+ "aria-labelledby": named,
77
+ className: "clover-template-lightbox-content",
78
+ children: [
79
+ /* @__PURE__ */ jsxs("header", { className: "clover-template-lightbox-header", children: [
80
+ /* @__PURE__ */ jsx(Back, { onOut: onClose }),
81
+ /* @__PURE__ */ jsx(
82
+ Label,
83
+ {
84
+ as: titled(headingLevel, titleId).as,
85
+ id: titleId,
86
+ className: "clover-template-lightbox-title clover-template-title clover-title"
87
+ }
88
+ ),
89
+ named === viewTitleId && /* @__PURE__ */ jsx(Label, { of: "canvas", id: viewTitleId, hidden: true }),
90
+ /* @__PURE__ */ jsxs(
91
+ "button",
92
+ {
93
+ ref: close,
94
+ type: "button",
95
+ className: "clover-template-lightbox-close",
96
+ "aria-label": t("commonClose"),
97
+ lang: langOf("commonClose"),
98
+ onClick: onClose,
99
+ children: [
100
+ /* @__PURE__ */ jsx(
101
+ "svg",
76
102
  {
77
- d: "M3 3l10 10M13 3L3 13",
78
- stroke: "currentColor",
79
- strokeWidth: "2",
80
- strokeLinecap: "round"
103
+ "aria-hidden": "true",
104
+ focusable: "false",
105
+ width: "16",
106
+ height: "16",
107
+ viewBox: "0 0 16 16",
108
+ children: /* @__PURE__ */ jsx(
109
+ "path",
110
+ {
111
+ d: "M3 3l10 10M13 3L3 13",
112
+ stroke: "currentColor",
113
+ strokeWidth: "2",
114
+ strokeLinecap: "round"
115
+ }
116
+ )
81
117
  }
82
- )
118
+ ),
119
+ /* @__PURE__ */ jsx(Tip, { label: t("commonClose") })
120
+ ]
121
+ }
122
+ )
123
+ ] }),
124
+ /* @__PURE__ */ jsx(
125
+ Suspense,
126
+ {
127
+ fallback: /* @__PURE__ */ jsx(
128
+ "div",
129
+ {
130
+ className: "clover-template-lightbox-body clover-template-lightbox-pending",
131
+ "aria-busy": "true"
83
132
  }
84
133
  ),
85
- /* @__PURE__ */ jsx(Tip, { label: t("commonClose") })
86
- ]
87
- }
88
- )
89
- ] }),
134
+ children: /* @__PURE__ */ jsx(
135
+ LightboxView,
136
+ {
137
+ id: baseId,
138
+ annotations: given,
139
+ items,
140
+ headingLevel,
141
+ ...view
142
+ }
143
+ )
144
+ }
145
+ )
146
+ ]
147
+ }
148
+ )
149
+ }
150
+ );
151
+ }
152
+ function Back({ onOut }) {
153
+ const t = useT();
154
+ const langOf = useLangOf();
155
+ const collection = useCloverSelector(
156
+ (state) => state.throughCollection ? state.collection : null
157
+ );
158
+ const set = useGivenAnnotations();
159
+ const manifest = useManifest();
160
+ const above = useLocalized(
161
+ set ? set.label : (collection == null ? void 0 : collection.label) ?? (manifest == null ? void 0 : manifest.label)
162
+ );
163
+ const key = above.text ? "templateBackTo" : "templateBack";
164
+ const label = t(key, { label: above.text });
165
+ return /* @__PURE__ */ jsxs(
166
+ "button",
167
+ {
168
+ type: "button",
169
+ className: "clover-template-lightbox-back",
170
+ "aria-label": label,
171
+ lang: langOf(key),
172
+ onClick: onOut,
173
+ children: [
90
174
  /* @__PURE__ */ jsx(
91
- Suspense,
175
+ "svg",
92
176
  {
93
- fallback: /* @__PURE__ */ jsx(
94
- "div",
177
+ "aria-hidden": "true",
178
+ focusable: "false",
179
+ width: "16",
180
+ height: "16",
181
+ viewBox: "0 0 16 16",
182
+ children: /* @__PURE__ */ jsx(
183
+ "path",
95
184
  {
96
- className: "clover-template-lightbox-body clover-template-lightbox-pending",
97
- "aria-busy": "true"
185
+ d: "M10 3L5 8l5 5",
186
+ fill: "none",
187
+ stroke: "currentColor",
188
+ strokeWidth: "2",
189
+ strokeLinecap: "round",
190
+ strokeLinejoin: "round"
98
191
  }
99
- ),
100
- children: /* @__PURE__ */ jsx(LightboxBody, {})
192
+ )
101
193
  }
102
194
  ),
103
- /* @__PURE__ */ jsx(Items, { layout: "pager" })
104
- ] })
195
+ /* @__PURE__ */ jsx(Tip, { label, lang: langOf(key) })
196
+ ]
105
197
  }
106
198
  );
107
199
  }
@@ -0,0 +1,118 @@
1
+ "use client";
2
+ import { jsxs, jsx } from "react/jsx-runtime";
3
+ import { useRef, useEffect } from "react";
4
+ import { PanelPane } from "./PanelPane.mjs";
5
+ import { useLazyPanelPane } from "./useLazyPanelPane.mjs";
6
+ import { useFollowFocus } from "./useFollowFocus.mjs";
7
+ import { useWideEnough, BESIDE_REM, PAGE_MIN } from "./useSlide.mjs";
8
+ import { Split, SplitPane } from "../../components/Split/Split.mjs";
9
+ import { Body } from "../../components/Body/Body.mjs";
10
+ import { Label } from "../../components/Label/Label.mjs";
11
+ import { Items } from "../../components/Items/Items.mjs";
12
+ function LightboxView({
13
+ id,
14
+ annotations,
15
+ items,
16
+ headingLevel,
17
+ panel = true,
18
+ defaultPanelOpen = true,
19
+ panelLayout = "accordion",
20
+ download = true,
21
+ languages = true,
22
+ storageKey,
23
+ collapseControls
24
+ }) {
25
+ const panes = useRef(null);
26
+ useEffect(() => {
27
+ var _a;
28
+ const dialog = (_a = panes.current) == null ? void 0 : _a.closest('[role="dialog"]');
29
+ if (!dialog || items === "pager") return;
30
+ const waiting = () => {
31
+ var _a2;
32
+ return (_a2 = dialog.ownerDocument.activeElement) == null ? void 0 : _a2.matches(
33
+ ".clover-template-lightbox-close"
34
+ );
35
+ };
36
+ const moved = () => {
37
+ const chosen = dialog.querySelector(
38
+ '[role="listbox"] [role="option"][aria-selected="true"]'
39
+ );
40
+ if (chosen && waiting()) chosen.focus({ preventScroll: true });
41
+ return Boolean(chosen);
42
+ };
43
+ if (moved() || !waiting()) return;
44
+ const observer = new MutationObserver(() => {
45
+ if (moved() || !waiting()) observer.disconnect();
46
+ });
47
+ observer.observe(dialog, { childList: true, subtree: true });
48
+ return () => observer.disconnect();
49
+ }, []);
50
+ const pane = useLazyPanelPane({
51
+ id: `${id}-panel`,
52
+ beside: useWideEnough(panes, BESIDE_REM),
53
+ defaultOpen: defaultPanelOpen,
54
+ followFocus: useFollowFocus(),
55
+ body: () => {
56
+ var _a;
57
+ return (_a = panes.current) == null ? void 0 : _a.querySelector(
58
+ ".clover-template-lightbox-body"
59
+ );
60
+ }
61
+ });
62
+ return /* @__PURE__ */ jsxs(
63
+ Split,
64
+ {
65
+ ref: panes,
66
+ className: "clover-template-lightbox-panes clover-template-panes",
67
+ storageKey: storageKey || void 0,
68
+ ...panel ? pane.splitProps : { "data-panel": "beside" },
69
+ children: [
70
+ /* @__PURE__ */ jsxs(
71
+ SplitPane,
72
+ {
73
+ className: "clover-template-lightbox-main",
74
+ min: panel && pane.over ? void 0 : PAGE_MIN,
75
+ children: [
76
+ /* @__PURE__ */ jsx(
77
+ Body,
78
+ {
79
+ className: "clover-template-lightbox-body",
80
+ collapseControls,
81
+ children: panel && !pane.docked && pane.toggle
82
+ }
83
+ ),
84
+ /* @__PURE__ */ jsx(
85
+ Label,
86
+ {
87
+ of: "canvas",
88
+ as: "p",
89
+ className: "clover-template-lightbox-caption"
90
+ }
91
+ ),
92
+ /* @__PURE__ */ jsx(
93
+ Items,
94
+ {
95
+ layout: items === "pager" ? "pager" : "slider",
96
+ ...annotations && { of: "annotations" }
97
+ }
98
+ )
99
+ ]
100
+ }
101
+ ),
102
+ panel && /* @__PURE__ */ jsx(
103
+ PanelPane,
104
+ {
105
+ pane,
106
+ layout: panelLayout,
107
+ download,
108
+ languages,
109
+ headingLevel: (headingLevel ?? 3) + 1
110
+ }
111
+ )
112
+ ]
113
+ }
114
+ );
115
+ }
116
+ export {
117
+ LightboxView as default
118
+ };
@@ -0,0 +1,104 @@
1
+ "use client";
2
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
3
+ import { useRef } from "react";
4
+ import { preloadDrag } from "./useDragToClose.mjs";
5
+ import { useDrawer } from "./useDrawer.mjs";
6
+ import { PANEL_MIN } from "./useSlide.mjs";
7
+ import { useSpineTop } from "./useSpine.mjs";
8
+ import { SplitHandle, SplitPane } from "../../components/Split/Split.mjs";
9
+ import { PanelToggle } from "../../components/Panel/PanelToggle.mjs";
10
+ function usePanelPane({
11
+ id,
12
+ beside,
13
+ defaultOpen,
14
+ followFocus,
15
+ body,
16
+ panel,
17
+ load
18
+ }) {
19
+ const drawer = useDrawer({
20
+ id,
21
+ beside,
22
+ defaultOpen,
23
+ side: "end",
24
+ followFocus
25
+ });
26
+ const docked = !drawer.over && drawer.open;
27
+ const spine = useRef(null);
28
+ useSpineTop(spine, () => body == null ? void 0 : body(), docked && Boolean(body));
29
+ const reach = (event) => {
30
+ var _a, _b;
31
+ if (!((_b = (_a = event.target).closest) == null ? void 0 : _b.call(_a, `[aria-controls~="${id}"]`)))
32
+ return;
33
+ if (!panel) void (load == null ? void 0 : load());
34
+ if (drawer.over) preloadDrag();
35
+ };
36
+ const toggle = /* @__PURE__ */ jsx(
37
+ PanelToggle,
38
+ {
39
+ open: drawer.open,
40
+ onOpenChange: (next) => next && !panel && load ? load().then(() => drawer.setOpen(true)) : drawer.setOpen(next),
41
+ controls: id
42
+ }
43
+ );
44
+ return {
45
+ ...drawer,
46
+ id,
47
+ /** Open beside the Body: its bar and spine drawn, its toggle on the spine. */
48
+ docked,
49
+ spine,
50
+ /** The toggle: the template draws it among the Body's controls while `!docked`. */
51
+ toggle,
52
+ Part: panel,
53
+ splitProps: {
54
+ "data-panel": drawer.over ? "over" : "beside",
55
+ onKeyDown: drawer.onKeyDown,
56
+ onPointerOver: reach,
57
+ onFocus: reach
58
+ }
59
+ };
60
+ }
61
+ function PanelPane({
62
+ pane,
63
+ className,
64
+ ...panel
65
+ }) {
66
+ const { id, over, docked, Part } = pane;
67
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
68
+ docked && /* @__PURE__ */ jsx(
69
+ SplitHandle,
70
+ {
71
+ className: "clover-template-panel-handle",
72
+ "aria-controls": id
73
+ }
74
+ ),
75
+ docked && /* @__PURE__ */ jsx("div", { ref: pane.spine, className: "clover-template-spine", children: pane.toggle }),
76
+ /* @__PURE__ */ jsx(
77
+ SplitPane,
78
+ {
79
+ ref: pane.pane,
80
+ id,
81
+ "data-spine": over || void 0,
82
+ name: "panel",
83
+ className: ["clover-template-panel clover-template-drawer", className].filter(Boolean).join(" "),
84
+ size: "24rem",
85
+ min: over ? void 0 : PANEL_MIN,
86
+ "data-open": pane.opened,
87
+ hidden: !pane.shown,
88
+ children: Part && /* @__PURE__ */ jsx(
89
+ Part,
90
+ {
91
+ ...panel,
92
+ onClose: over ? pane.close : void 0,
93
+ closeOnEscape: over
94
+ }
95
+ )
96
+ }
97
+ ),
98
+ pane.scrim && /* @__PURE__ */ jsx("div", { className: "clover-template-scrim", ...pane.scrim })
99
+ ] });
100
+ }
101
+ export {
102
+ PanelPane,
103
+ usePanelPane
104
+ };
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import { Panel } from "../../components/Panel/Panel.mjs";
4
- function DocumentPanel(props) {
4
+ function PanelPart(props) {
5
5
  return /* @__PURE__ */ jsx(Panel, { ...props });
6
6
  }
7
7
  export {
8
- DocumentPanel as default
8
+ PanelPart as default
9
9
  };
@@ -1,8 +1,12 @@
1
1
  "use client";
2
+ import { SLIDE_MS } from "./useSlide.mjs";
2
3
  const CLOSE_SHARE = 1 / 3;
3
4
  const FLICK = 0.5;
4
5
  const SLOP = 8;
5
6
  const SPRING = "translate 240ms cubic-bezier(0.16, 1, 0.3, 1)";
7
+ const EXIT_MS = [120, SLIDE_MS];
8
+ const EXIT_EASE = "cubic-bezier(0.33, 0.67, 0.67, 1)";
9
+ const leaving = /* @__PURE__ */ new WeakMap();
6
10
  function attach(element, latest) {
7
11
  let id = null;
8
12
  let state = "idle";
@@ -42,13 +46,15 @@ function attach(element, latest) {
42
46
  }
43
47
  if (dx < SLOP) return;
44
48
  state = "drag";
49
+ startX = event.clientX;
50
+ samples = [[event.timeStamp, 0]];
45
51
  try {
46
52
  (_a = element.setPointerCapture) == null ? void 0 : _a.call(element, event.pointerId);
47
53
  } catch {
48
54
  }
49
55
  move(moving(), void 0, "none");
50
56
  }
51
- offset = Math.max(0, dx);
57
+ offset = Math.max(0, (event.clientX - startX) * toward);
52
58
  move(moving(), `${offset * toward}px 0`);
53
59
  const wash = (_b = latest.current.scrim) == null ? void 0 : _b.current;
54
60
  if (wash) {
@@ -60,7 +66,7 @@ function attach(element, latest) {
60
66
  event.preventDefault();
61
67
  };
62
68
  const onUp = (event) => {
63
- var _a;
69
+ var _a, _b, _c;
64
70
  if (event.pointerId !== id) return;
65
71
  const dragged = state === "drag";
66
72
  state = "idle";
@@ -72,25 +78,55 @@ function attach(element, latest) {
72
78
  const [t1, x1] = samples[samples.length - 1];
73
79
  const speed = t1 > t0 ? (x1 - x0) / (t1 - t0) : 0;
74
80
  const wash = (_a = latest.current.scrim) == null ? void 0 : _a.current;
81
+ const still = (_b = window.matchMedia) == null ? void 0 : _b.call(
82
+ window,
83
+ "(prefers-reduced-motion: reduce)"
84
+ ).matches;
75
85
  if (offset > width * CLOSE_SHARE || speed > FLICK) {
86
+ const time = still ? 0 : Math.min(
87
+ EXIT_MS[1],
88
+ Math.max(
89
+ EXIT_MS[0],
90
+ 2 * (width - offset) / Math.max(speed, 1e-3)
91
+ )
92
+ );
93
+ const exit = `${time}ms ${EXIT_EASE}`;
76
94
  if (wash) {
77
- wash.style.transition = "opacity 240ms ease";
95
+ wash.style.transition = `opacity ${exit}`;
78
96
  wash.style.opacity = "0";
79
97
  }
80
98
  if (latest.current.exits) {
81
- move(moving(), `${width * toward}px 0`, "translate 200ms ease-out");
82
- setTimeout(() => latest.current.onClose(), 200);
99
+ move(moving(), `${width * toward}px 0`, `translate ${exit}`);
100
+ setTimeout(() => latest.current.onClose(), time);
83
101
  return;
84
102
  }
85
- move(moving(), void 0, "");
103
+ element.style.transition = "none";
104
+ element.style.translate = "";
105
+ element.style.transform = `translateX(${offset * toward}px)`;
106
+ element.getBoundingClientRect();
107
+ element.style.transition = `transform ${exit}`;
108
+ element.style.transform = `var(--clover-template-out, translateX(${toward * 100}%))`;
109
+ move(
110
+ [(_c = latest.current.alongside) == null ? void 0 : _c.current],
111
+ `${width * toward}px 0`,
112
+ `translate ${exit}`
113
+ );
114
+ leaving.set(
115
+ element,
116
+ setTimeout(() => clear(element, latest), time)
117
+ );
86
118
  latest.current.onClose();
87
119
  return;
88
120
  }
89
- move(moving(), "", SPRING);
121
+ move(moving(), "", still ? "none" : SPRING);
90
122
  if (wash) {
91
- wash.style.transition = "opacity 240ms ease";
123
+ wash.style.transition = still ? "none" : "opacity 240ms ease";
92
124
  wash.style.opacity = "";
93
125
  }
126
+ setTimeout(() => {
127
+ if (state === "idle" && !leaving.has(element))
128
+ move(moving(), void 0, "");
129
+ }, 240);
94
130
  };
95
131
  const swallow = (event) => {
96
132
  event.stopPropagation();
@@ -108,8 +144,15 @@ function attach(element, latest) {
108
144
  };
109
145
  }
110
146
  function reset(element, latest) {
147
+ if (leaving.has(element) && !latest.current.enabled) return;
148
+ clear(element, latest);
149
+ }
150
+ function clear(element, latest) {
111
151
  var _a, _b;
152
+ clearTimeout(leaving.get(element));
153
+ leaving.delete(element);
112
154
  move([element, (_a = latest.current.alongside) == null ? void 0 : _a.current], "", "");
155
+ element.style.transform = "";
113
156
  const wash = (_b = latest.current.scrim) == null ? void 0 : _b.current;
114
157
  if (wash) {
115
158
  wash.style.opacity = "";
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ import { useCloverSelector } from "../../react/context.mjs";
3
+ import { useAnnotationCollection } from "../../react/hooks.mjs";
4
+ function useGivenAnnotations() {
5
+ const given = useCloverSelector(
6
+ (state) => state.addedSets.some((set2) => Boolean(set2.content))
7
+ );
8
+ const set = useAnnotationCollection();
9
+ return given ? set : null;
10
+ }
11
+ export {
12
+ useGivenAnnotations
13
+ };
@@ -2,6 +2,10 @@
2
2
  import { useRef, useEffect } from "react";
3
3
  let drag;
4
4
  let loaded;
5
+ const load = () => drag ?? (drag = import("./dragToClose.mjs").then((module) => loaded = module));
6
+ function preloadDrag() {
7
+ void load();
8
+ }
5
9
  function useDragToClose(pane, {
6
10
  enabled,
7
11
  side,
@@ -19,9 +23,7 @@ function useDragToClose(pane, {
19
23
  if (!enabled) return;
20
24
  let live = true;
21
25
  let detach;
22
- void (drag ?? (drag = import("./dragToClose.mjs").then(
23
- (module) => loaded = module
24
- ))).then((module) => {
26
+ void load().then((module) => {
25
27
  if (live) detach = module.attach(element, latest);
26
28
  });
27
29
  return () => {
@@ -31,5 +33,6 @@ function useDragToClose(pane, {
31
33
  }, [pane, enabled]);
32
34
  }
33
35
  export {
36
+ preloadDrag,
34
37
  useDragToClose
35
38
  };
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ import { useState, useEffect } from "react";
3
+ import { usePanelPane } from "./PanelPane.mjs";
4
+ const loadPanel = () => import("./PanelPart.mjs");
5
+ function useLazyPanelPane(options) {
6
+ const [Part, setPart] = useState();
7
+ const load = () => loadPanel().then((module) => setPart(() => module.default));
8
+ const pane = usePanelPane({ ...options, panel: Part, load });
9
+ useEffect(() => {
10
+ if (pane.open && !Part) void load();
11
+ }, [pane.open]);
12
+ return pane;
13
+ }
14
+ export {
15
+ useLazyPanelPane
16
+ };