@nulib/clover 0.0.0-stage → 4.0.0-beta.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 (410) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +120 -2
  3. package/dist/components/Annotations/Annotations.mjs +674 -0
  4. package/dist/components/Annotations/EntryBodies.mjs +52 -0
  5. package/dist/components/Annotations/languages.mjs +43 -0
  6. package/dist/components/Body/Body.mjs +51 -0
  7. package/dist/components/Body/BodyAlert.mjs +25 -0
  8. package/dist/components/Body/Caption.mjs +90 -0
  9. package/dist/components/Body/CaptionDetails.mjs +50 -0
  10. package/dist/components/Body/Pending.mjs +9 -0
  11. package/dist/components/Body/glyphs.mjs +66 -0
  12. package/dist/components/Body/renderers.mjs +30 -0
  13. package/dist/components/Body/useControlsVisibility.mjs +204 -0
  14. package/dist/components/Body/useNearViewport.mjs +27 -0
  15. package/dist/components/Canvas/AnnotationMenu.mjs +128 -0
  16. package/dist/components/Canvas/AnnotationState.mjs +338 -0
  17. package/dist/components/Canvas/Annotations.mjs +497 -0
  18. package/dist/components/Canvas/CanvasView.mjs +669 -0
  19. package/dist/components/Canvas/ChoiceMenu.mjs +77 -0
  20. package/dist/components/Canvas/Connected.mjs +228 -0
  21. package/dist/components/Canvas/ControlMenu.mjs +67 -0
  22. package/dist/components/Canvas/Controls.mjs +233 -0
  23. package/dist/components/Canvas/FrameAnimation.mjs +344 -0
  24. package/dist/components/Canvas/LoadedCanvas.mjs +177 -0
  25. package/dist/components/Canvas/Placeholder.mjs +105 -0
  26. package/dist/components/Canvas/fromManifest.mjs +44 -0
  27. package/dist/components/Canvas/index.mjs +19 -0
  28. package/dist/components/Canvas/layout.mjs +369 -0
  29. package/dist/components/Canvas/media/MediaBody.mjs +285 -0
  30. package/dist/components/Canvas/media/Player.mjs +193 -0
  31. package/dist/components/Canvas/media/Transport.mjs +511 -0
  32. package/dist/components/Canvas/media/TransportButton.mjs +39 -0
  33. package/dist/components/Canvas/media/useBarHeight.mjs +28 -0
  34. package/dist/components/Canvas/media/useCaptionTracks.mjs +131 -0
  35. package/dist/components/Canvas/media/useMediaController.mjs +77 -0
  36. package/dist/components/Canvas/media/useMediaElement.mjs +100 -0
  37. package/dist/components/Canvas/panClearOfControls.mjs +92 -0
  38. package/dist/components/Canvas/rendererSurface.mjs +6 -0
  39. package/dist/components/Canvas/surface.mjs +5 -0
  40. package/dist/components/Canvas/track.mjs +43 -0
  41. package/dist/components/Canvas/useSvgReader.mjs +23 -0
  42. package/dist/components/Collection/Collection.mjs +76 -0
  43. package/dist/components/CollectionSelect/CollectionSelect.mjs +114 -0
  44. package/dist/components/Contents/Contents.mjs +120 -0
  45. package/dist/components/Download/Download.mjs +105 -0
  46. package/dist/components/Items/Item.mjs +184 -0
  47. package/dist/components/Items/Items.mjs +455 -0
  48. package/dist/components/Items/Pager.mjs +190 -0
  49. package/dist/components/Items/StandaloneItems.mjs +80 -0
  50. package/dist/components/Items/clamped.mjs +90 -0
  51. package/dist/components/Label/Label.mjs +39 -0
  52. package/dist/components/Map/LoadedMap.mjs +26 -0
  53. package/dist/components/Map/Map.mjs +38 -0
  54. package/dist/components/Map/MapView.mjs +538 -0
  55. package/dist/components/Map/basemap.mjs +50 -0
  56. package/dist/components/Map/overlayImage.mjs +17 -0
  57. package/dist/components/Panel/About.mjs +143 -0
  58. package/dist/components/Panel/Panel.mjs +259 -0
  59. package/dist/components/Panel/PanelToggle.mjs +43 -0
  60. package/dist/components/Panel/PartOfManifest.mjs +52 -0
  61. package/dist/components/Primitives/Primitives.mjs +263 -0
  62. package/dist/components/Primitives/resource.mjs +11 -0
  63. package/dist/components/Provider/Provider.mjs +174 -0
  64. package/dist/components/Root/Announcer.mjs +58 -0
  65. package/dist/components/Root/Root.mjs +29 -0
  66. package/dist/components/Root/useRootState.mjs +188 -0
  67. package/dist/components/Scene/Connected.mjs +48 -0
  68. package/dist/components/Scene/Loaded.mjs +56 -0
  69. package/dist/components/Scene/RotatePad.mjs +204 -0
  70. package/dist/components/Scene/Scene.mjs +20 -0
  71. package/dist/components/Scene/SceneView.mjs +539 -0
  72. package/dist/components/Scene/cloverEngine.mjs +105 -0
  73. package/dist/components/Scene/engine.mjs +141 -0
  74. package/dist/components/Scene/engines.mjs +23 -0
  75. package/dist/components/Scene/gestures.mjs +74 -0
  76. package/dist/components/Scene/models.mjs +78 -0
  77. package/dist/components/Scene/orbit.mjs +60 -0
  78. package/dist/components/Search/Search.mjs +246 -0
  79. package/dist/components/Split/Split.mjs +203 -0
  80. package/dist/components/Split/splitting.mjs +203 -0
  81. package/dist/components/Status/Status.mjs +47 -0
  82. package/dist/components/Timeline/Connected.mjs +25 -0
  83. package/dist/components/Timeline/Timeline.mjs +40 -0
  84. package/dist/components/Timeline/playerSurface.mjs +84 -0
  85. package/dist/components/Transcript/Transcript.mjs +377 -0
  86. package/dist/components/Viewer/Viewer.mjs +19 -0
  87. package/dist/core/annotation-bodies.mjs +29 -0
  88. package/dist/core/annotation-collection.mjs +55 -0
  89. package/dist/core/annotation-name.mjs +31 -0
  90. package/dist/core/annotation-sets.mjs +155 -0
  91. package/dist/core/annotations-content.mjs +27 -0
  92. package/dist/core/annotations.mjs +73 -0
  93. package/dist/core/clover.mjs +393 -0
  94. package/dist/core/content-state-reader.mjs +82 -0
  95. package/dist/core/content-state.mjs +43 -0
  96. package/dist/core/direction.mjs +12 -0
  97. package/dist/core/geo-detect.mjs +30 -0
  98. package/dist/core/geo.mjs +283 -0
  99. package/dist/core/items.mjs +74 -0
  100. package/dist/core/keep-fragments.mjs +40 -0
  101. package/dist/core/link.mjs +28 -0
  102. package/dist/core/load.mjs +176 -0
  103. package/dist/core/map-config.mjs +12 -0
  104. package/dist/core/markdown.mjs +139 -0
  105. package/dist/core/pages.mjs +51 -0
  106. package/dist/core/painted-bodies.mjs +20 -0
  107. package/dist/core/painting.mjs +17 -0
  108. package/dist/core/presentation.mjs +27 -0
  109. package/dist/core/ranges.mjs +133 -0
  110. package/dist/core/region.mjs +32 -0
  111. package/dist/core/request.mjs +40 -0
  112. package/dist/core/sanitize.mjs +72 -0
  113. package/dist/core/search-service.mjs +22 -0
  114. package/dist/core/search.mjs +154 -0
  115. package/dist/core/selectors.mjs +94 -0
  116. package/dist/core/sequence.mjs +70 -0
  117. package/dist/core/show-link.mjs +16 -0
  118. package/dist/core/store.mjs +40 -0
  119. package/dist/core/svg-shape.mjs +183 -0
  120. package/dist/core/text.mjs +36 -0
  121. package/dist/core/thumbnail.mjs +55 -0
  122. package/dist/core/value.mjs +39 -0
  123. package/dist/core/vtt.mjs +111 -0
  124. package/dist/hooks/useFullscreen.mjs +21 -0
  125. package/dist/hooks/useFullscreenSupported.mjs +11 -0
  126. package/dist/hooks/useLoaded.mjs +27 -0
  127. package/dist/hooks/useWithinFullscreen.mjs +24 -0
  128. package/dist/i18n/config.mjs +170 -0
  129. package/dist/i18n/hostLanguage.mjs +6 -0
  130. package/dist/i18n/locales/en.json.mjs +5 -0
  131. package/dist/i18n/locales/es.json.mjs +5 -0
  132. package/dist/i18n/locales/fi.json.mjs +5 -0
  133. package/dist/i18n/locales/fr.json.mjs +5 -0
  134. package/dist/i18n/locales/index.mjs +13 -0
  135. package/dist/i18n/locales/nb.json.mjs +5 -0
  136. package/dist/i18n/locales/nn.json.mjs +5 -0
  137. package/dist/i18n/locales/no.json.mjs +5 -0
  138. package/dist/i18n/locales/pt.json.mjs +5 -0
  139. package/dist/i18n/reader.mjs +13 -0
  140. package/dist/i18n/useCloverTranslation.mjs +28 -0
  141. package/dist/index.d.mts +2204 -0
  142. package/dist/index.mjs +133 -0
  143. package/dist/lib/asArray.mjs +5 -0
  144. package/dist/lib/classnames.mjs +5 -0
  145. package/dist/lib/fullscreen.mjs +65 -0
  146. package/dist/lib/gltf/bounds.mjs +44 -0
  147. package/dist/lib/gltf/load.mjs +156 -0
  148. package/dist/lib/gltf/mat4.mjs +150 -0
  149. package/dist/lib/gltf/renderer.mjs +342 -0
  150. package/dist/lib/gltf/shaders.mjs +192 -0
  151. package/dist/lib/hls.mjs +6 -0
  152. package/dist/lib/pointer.mjs +38 -0
  153. package/dist/lib/renderer/CanvasRenderer.mjs +857 -0
  154. package/dist/lib/renderer/backends/backend.mjs +21 -0
  155. package/dist/lib/renderer/backends/canvas2d/Canvas2DBackend.mjs +91 -0
  156. package/dist/lib/renderer/backends/contexts.mjs +27 -0
  157. package/dist/lib/renderer/backends/dom/DomLayers.mjs +91 -0
  158. package/dist/lib/renderer/backends/webgl2/WebGL2Backend.mjs +248 -0
  159. package/dist/lib/renderer/backends/webgl2/shaders.mjs +28 -0
  160. package/dist/lib/renderer/camera/Camera.mjs +64 -0
  161. package/dist/lib/renderer/camera/CameraAnimator.mjs +90 -0
  162. package/dist/lib/renderer/input/GestureController.mjs +252 -0
  163. package/dist/lib/renderer/io/TileCache.mjs +207 -0
  164. package/dist/lib/renderer/io/decode.mjs +156 -0
  165. package/dist/lib/renderer/loop/FrameLoop.mjs +50 -0
  166. package/dist/lib/renderer/math/affine.mjs +68 -0
  167. package/dist/lib/renderer/math/rect.mjs +45 -0
  168. package/dist/lib/renderer/overlays/Navigator.mjs +141 -0
  169. package/dist/lib/renderer/overlays/OverlayLayer.mjs +94 -0
  170. package/dist/lib/renderer/scene/planFrame.mjs +168 -0
  171. package/dist/lib/renderer/scene/regions.mjs +30 -0
  172. package/dist/lib/renderer/scene/sceneItem.mjs +114 -0
  173. package/dist/lib/renderer/scene/uploadBudget.mjs +30 -0
  174. package/dist/lib/renderer/sources/imageService.mjs +160 -0
  175. package/dist/lib/renderer/sources/sizedImage.mjs +38 -0
  176. package/dist/lib/renderer/sources/tilePyramid.mjs +172 -0
  177. package/dist/lib/time.mjs +21 -0
  178. package/dist/map/index.d.mts +184 -0
  179. package/dist/map/index.mjs +16 -0
  180. package/dist/react/context.mjs +46 -0
  181. package/dist/react/hooks.mjs +69 -0
  182. package/dist/react/language.mjs +30 -0
  183. package/dist/styles.css +1 -0
  184. package/dist/templates/default/Default.mjs +229 -0
  185. package/dist/templates/document/Document.mjs +286 -0
  186. package/dist/templates/document/DocumentPanel.mjs +9 -0
  187. package/dist/templates/document/Sheets.mjs +360 -0
  188. package/dist/templates/gallery/Gallery.mjs +62 -0
  189. package/dist/templates/index.d.mts +273 -0
  190. package/dist/templates/index.mjs +11 -0
  191. package/dist/templates/shared/Lightbox.mjs +111 -0
  192. package/dist/templates/shared/LightboxBody.mjs +9 -0
  193. package/dist/templates/shared/dragToClose.mjs +129 -0
  194. package/dist/templates/shared/useDragToClose.mjs +35 -0
  195. package/dist/templates/shared/useDrawer.mjs +113 -0
  196. package/dist/templates/shared/useFollowFocus.mjs +24 -0
  197. package/dist/templates/shared/useSlide.mjs +52 -0
  198. package/dist/templates/shared/useSpine.mjs +26 -0
  199. package/dist/templates.css +1 -0
  200. package/dist/three/index.d.mts +6 -0
  201. package/dist/three/index.mjs +8 -0
  202. package/dist/ui/Button.mjs +53 -0
  203. package/dist/ui/ControlCluster.mjs +87 -0
  204. package/dist/ui/Cue.mjs +13 -0
  205. package/dist/ui/ErrorBoundary.mjs +26 -0
  206. package/dist/ui/ExitFullscreen.mjs +46 -0
  207. package/dist/ui/FieldPill.mjs +153 -0
  208. package/dist/ui/HideToggle.mjs +57 -0
  209. package/dist/ui/Loading.mjs +20 -0
  210. package/dist/ui/Markup.mjs +95 -0
  211. package/dist/ui/ReadMore.mjs +84 -0
  212. package/dist/ui/Sections.mjs +448 -0
  213. package/dist/ui/Steps.mjs +84 -0
  214. package/dist/ui/Tip.mjs +196 -0
  215. package/dist/ui/bringIntoView.mjs +27 -0
  216. package/dist/ui/controlGlyphs.mjs +120 -0
  217. package/dist/ui/heading.mjs +19 -0
  218. package/dist/ui/languageCode.mjs +8 -0
  219. package/dist/ui/mediaIcons.mjs +104 -0
  220. package/dist/ui/useClusterReach.mjs +50 -0
  221. package/dist/ui/useContainerName.mjs +19 -0
  222. package/dist/ui/useOneOpen.mjs +22 -0
  223. package/dist/ui/useRovingFocus.mjs +64 -0
  224. package/dist/ui/useScrollTrack.mjs +150 -0
  225. package/dist/ui/useUniqueId.mjs +10 -0
  226. package/dist/ui/visuallyHidden.mjs +15 -0
  227. package/dist/web-components/About-uKa1wfDr.mjs +1 -0
  228. package/dist/web-components/AnnotationMenu-BGIYRXW6.mjs +1 -0
  229. package/dist/web-components/AnnotationState-D2UIgIEC.mjs +1 -0
  230. package/dist/web-components/Annotations-BhwAv3ah.mjs +1 -0
  231. package/dist/web-components/Annotations-C_tBJHo3.mjs +2 -0
  232. package/dist/web-components/Body-DMEERFuB.mjs +1 -0
  233. package/dist/web-components/BodyAlert-BP8voSLv.mjs +1 -0
  234. package/dist/web-components/Button-Cl02BFDd.mjs +1 -0
  235. package/dist/web-components/Camera-Dw51CAfF.mjs +1 -0
  236. package/dist/web-components/Canvas2DBackend-RRN2bEkc.mjs +1 -0
  237. package/dist/web-components/CanvasView-B8lMMSou.mjs +1 -0
  238. package/dist/web-components/CaptionDetails-KLMDv-ec.mjs +1 -0
  239. package/dist/web-components/ChoiceMenu-CXrVOmJl.mjs +1 -0
  240. package/dist/web-components/Collection-DL4Ui4hF.mjs +1 -0
  241. package/dist/web-components/CollectionSelect-DL-bbpwJ.mjs +1 -0
  242. package/dist/web-components/Connected-B0S1HXQb.mjs +1 -0
  243. package/dist/web-components/Connected-BcjRA5si.mjs +1 -0
  244. package/dist/web-components/Connected-Q7iizBb8.mjs +1 -0
  245. package/dist/web-components/Contents-ZC8TiGaW.mjs +1 -0
  246. package/dist/web-components/ControlMenu-DIoU797-.mjs +1 -0
  247. package/dist/web-components/Cue-CJxnDMEy.mjs +1 -0
  248. package/dist/web-components/Document-DHBRAFEK.mjs +1 -0
  249. package/dist/web-components/DocumentPanel-CqvE2pu9.mjs +1 -0
  250. package/dist/web-components/DomLayers-BsR2AOy-.mjs +1 -0
  251. package/dist/web-components/Download-DBksL1C0.mjs +1 -0
  252. package/dist/web-components/EntryBodies-VwEkTVrw.mjs +1 -0
  253. package/dist/web-components/ErrorBoundary-Cy9PGoZv.mjs +1 -0
  254. package/dist/web-components/FieldPill-DCJBz6Vj.mjs +1 -0
  255. package/dist/web-components/FrameAnimation-DRbmgGpF.mjs +1 -0
  256. package/dist/web-components/Gallery-BM7-VJkB.mjs +1 -0
  257. package/dist/web-components/HideToggle-BdYgG7us.mjs +1 -0
  258. package/dist/web-components/Items-_1Jz3FMs.mjs +1 -0
  259. package/dist/web-components/Label-CAiJ49eA.mjs +1 -0
  260. package/dist/web-components/LightboxBody-DyhUZiDf.mjs +1 -0
  261. package/dist/web-components/Loaded-wQurAeJz.mjs +1 -0
  262. package/dist/web-components/LoadedCanvas-DWz5IK5m.mjs +1 -0
  263. package/dist/web-components/LoadedMap-DIeW313M.mjs +1 -0
  264. package/dist/web-components/Loading-BmA--pzr.mjs +1 -0
  265. package/dist/web-components/Map-DzVGblIS.mjs +1 -0
  266. package/dist/web-components/MapView-BJaN7VBI.mjs +1 -0
  267. package/dist/web-components/Markup-D91DbxLk.mjs +2 -0
  268. package/dist/web-components/MediaBody-BYcVPo2X.mjs +1 -0
  269. package/dist/web-components/MediaBody-FEzH8VVw.mjs +1 -0
  270. package/dist/web-components/Navigator-CIJFA3q1.mjs +1 -0
  271. package/dist/web-components/Pager-BGwCurxE.mjs +1 -0
  272. package/dist/web-components/Panel-B-GXOkzF.mjs +1 -0
  273. package/dist/web-components/PanelToggle-BYjV2t1j.mjs +1 -0
  274. package/dist/web-components/PartOfManifest-ClbGepVM.mjs +1 -0
  275. package/dist/web-components/Pending-BspZajh5.mjs +1 -0
  276. package/dist/web-components/Primitives-CTh59wvs.mjs +1 -0
  277. package/dist/web-components/Provider-C6rIiDXH.mjs +1 -0
  278. package/dist/web-components/ReadMore-BJ2i-0uN.mjs +1 -0
  279. package/dist/web-components/Root-DkkYDtur.mjs +1 -0
  280. package/dist/web-components/Scene-B_PU_TiX.mjs +1 -0
  281. package/dist/web-components/SceneView-qcW_sT3j.mjs +1 -0
  282. package/dist/web-components/Search-UOneIUcP.mjs +1 -0
  283. package/dist/web-components/Sections-we9U9fXq.mjs +2 -0
  284. package/dist/web-components/StandaloneItems-DU8oCFc_.mjs +1 -0
  285. package/dist/web-components/Status-Cs5ZvFvL.mjs +1 -0
  286. package/dist/web-components/Timeline-WtYZ1bIJ.mjs +1 -0
  287. package/dist/web-components/Tip-C8J3qsIK.mjs +1 -0
  288. package/dist/web-components/Transcript-CRL2zToL.mjs +1 -0
  289. package/dist/web-components/annotation-collection-ZPyvpLFc.mjs +1 -0
  290. package/dist/web-components/annotations-content-BZChKhJZ.mjs +1 -0
  291. package/dist/web-components/assets/maplibre-gl-worker-kTz9OPxr.js +13831 -0
  292. package/dist/web-components/body-UntgrmoV.mjs +1 -0
  293. package/dist/web-components/bringIntoView-CQH5ZgMM.mjs +1 -0
  294. package/dist/web-components/canvas-d_U4v_mh.mjs +1 -0
  295. package/dist/web-components/classnames-DukgfdpI.mjs +1 -0
  296. package/dist/web-components/cloverEngine-Dbv-26NP.mjs +164 -0
  297. package/dist/web-components/content-state-reader-DjdKWjit.mjs +1 -0
  298. package/dist/web-components/contexts-ByL3eA_T.mjs +1 -0
  299. package/dist/web-components/controls-qRYf2jO2.mjs +1 -0
  300. package/dist/web-components/custom-elements.json +2739 -0
  301. package/dist/web-components/dragToClose-C-Pf1IeO.mjs +1 -0
  302. package/dist/web-components/engine-D8JLgzqq.mjs +4228 -0
  303. package/dist/web-components/engines-BwVb9R_A.mjs +1 -0
  304. package/dist/web-components/es-BwMkoRod.mjs +1 -0
  305. package/dist/web-components/fi-gPFOn9RK.mjs +1 -0
  306. package/dist/web-components/fr-DUHmgdJo.mjs +1 -0
  307. package/dist/web-components/fromManifest-UrMJgktp.mjs +1 -0
  308. package/dist/web-components/glyphs-BoX0a88P.mjs +1 -0
  309. package/dist/web-components/heading-Cjt0f-Eu.mjs +1 -0
  310. package/dist/web-components/hls-CdKrthkC.mjs +40 -0
  311. package/dist/web-components/hooks-Dp8pjU8l.mjs +1 -0
  312. package/dist/web-components/imageService-C3yg9DxB.mjs +1 -0
  313. package/dist/web-components/index-DWxMuwDL.mjs +1 -0
  314. package/dist/web-components/index.d.mts +604 -0
  315. package/dist/web-components/index.mjs +1 -0
  316. package/dist/web-components/index.umd.js +18 -0
  317. package/dist/web-components/items--Tu7ZM3L.mjs +1 -0
  318. package/dist/web-components/items-W2vrwArM.mjs +1 -0
  319. package/dist/web-components/keep-fragments-B5nlv2ck.mjs +1 -0
  320. package/dist/web-components/label-CYQ7tVl6.mjs +1 -0
  321. package/dist/web-components/languageCode-cCpiU0b0.mjs +1 -0
  322. package/dist/web-components/layout-KL0V-iJu.mjs +1 -0
  323. package/dist/web-components/link-DRRTY4lY.mjs +1 -0
  324. package/dist/web-components/logo-CnQUCB3Y.mjs +1 -0
  325. package/dist/web-components/maplibre-gl-CQ4OueXY.mjs +823 -0
  326. package/dist/web-components/markdown-CCYJwzFn.mjs +5 -0
  327. package/dist/web-components/models-BP2qp9nT.mjs +1 -0
  328. package/dist/web-components/nb-BSvnQ6jd.mjs +1 -0
  329. package/dist/web-components/nn-Dg2_HdZu.mjs +1 -0
  330. package/dist/web-components/no-BSvnQ6jd.mjs +1 -0
  331. package/dist/web-components/nodes-Bf-Fb7e5.mjs +1 -0
  332. package/dist/web-components/overlayImage-DdPs2EGY.mjs +1 -0
  333. package/dist/web-components/panClearOfControls-ac9uf-Qs.mjs +1 -0
  334. package/dist/web-components/panel-CiqEFDzv.mjs +1 -0
  335. package/dist/web-components/part-CUBY90_b.mjs +1 -0
  336. package/dist/web-components/playerSurface-i2TJz-F4.mjs +1 -0
  337. package/dist/web-components/provider-LUmAQSoP.mjs +1 -0
  338. package/dist/web-components/pt-B3J80JgO.mjs +1 -0
  339. package/dist/web-components/read-more-BaaO77el.mjs +1 -0
  340. package/dist/web-components/rendererSurface-DAvatpMF.mjs +22 -0
  341. package/dist/web-components/renderers-Bg4QqawN.mjs +1 -0
  342. package/dist/web-components/resource-DzIvB_4m.mjs +1 -0
  343. package/dist/web-components/sanitize-Dc7nOsgO.mjs +3 -0
  344. package/dist/web-components/search-DgcgsI3I.mjs +1 -0
  345. package/dist/web-components/shared-J3w3gnXD.mjs +1 -0
  346. package/dist/web-components/show-link-DWRRXSBy.mjs +1 -0
  347. package/dist/web-components/sizedImage-DfjlV2-i.mjs +1 -0
  348. package/dist/web-components/split-m-_XivaW.mjs +1 -0
  349. package/dist/web-components/splitting-BnQUxxgH.mjs +1 -0
  350. package/dist/web-components/status-DDS7jLNd.mjs +1 -0
  351. package/dist/web-components/styles-Ypl9KrSK.mjs +1 -0
  352. package/dist/web-components/svg-shape-DLY3g7oq.mjs +1 -0
  353. package/dist/web-components/text-BTAkxEfQ.mjs +5 -0
  354. package/dist/web-components/three.mjs +1 -0
  355. package/dist/web-components/thumbnail-BZvLSwWW.mjs +1 -0
  356. package/dist/web-components/time-B9GZoYcm.mjs +1 -0
  357. package/dist/web-components/tip-BXByhOJ9.mjs +1 -0
  358. package/dist/web-components/toggle-AS72kq6v.mjs +1 -0
  359. package/dist/web-components/upgrader-XNxI-5jo.mjs +1 -0
  360. package/dist/web-components/useContainerName-DCbE5JXi.mjs +1 -0
  361. package/dist/web-components/useNearViewport-CyoK3l8W.mjs +1 -0
  362. package/dist/web-components/useScrollTrack-dLFWnT8N.mjs +1 -0
  363. package/dist/web-components/viewer/AnnotationMenu-Dd4tnzNV.mjs +1 -0
  364. package/dist/web-components/viewer/AnnotationState-DZaSy5lH.mjs +1 -0
  365. package/dist/web-components/viewer/Annotations-D1h-Yi5J.mjs +1 -0
  366. package/dist/web-components/viewer/Annotations-sj79EMen.mjs +2 -0
  367. package/dist/web-components/viewer/Canvas2DBackend-CkvI0wUT.mjs +1 -0
  368. package/dist/web-components/viewer/CaptionDetails-B_JdNjJ7.mjs +1 -0
  369. package/dist/web-components/viewer/ChoiceMenu-xa51a1DV.mjs +1 -0
  370. package/dist/web-components/viewer/Collection-CxuLCspj.mjs +1 -0
  371. package/dist/web-components/viewer/Connected-BSUBc3Ci.mjs +1 -0
  372. package/dist/web-components/viewer/Connected-CPIxNjF2.mjs +1 -0
  373. package/dist/web-components/viewer/Contents-DNh9mnsF.mjs +1 -0
  374. package/dist/web-components/viewer/ControlMenu-DdgIvBdf.mjs +1 -0
  375. package/dist/web-components/viewer/Cue-90H9_dXz.mjs +1 -0
  376. package/dist/web-components/viewer/Document-CNCpzkiN.mjs +1 -0
  377. package/dist/web-components/viewer/DocumentPanel-BdG4TVLE.mjs +1 -0
  378. package/dist/web-components/viewer/DomLayers-Dybz_aJv.mjs +1 -0
  379. package/dist/web-components/viewer/EntryBodies-DGXjFP3N.mjs +1 -0
  380. package/dist/web-components/viewer/FieldPill-Icmd98OY.mjs +1 -0
  381. package/dist/web-components/viewer/FrameAnimation-DJZN3Rd4.mjs +1 -0
  382. package/dist/web-components/viewer/Gallery-CEp3-bh2.mjs +1 -0
  383. package/dist/web-components/viewer/HideToggle-DB6HTmAO.mjs +1 -0
  384. package/dist/web-components/viewer/LightboxBody-ClQ4yrTh.mjs +1 -0
  385. package/dist/web-components/viewer/MapView-BVSdybIC.mjs +1 -0
  386. package/dist/web-components/viewer/MediaBody-BBbSMT1i.mjs +1 -0
  387. package/dist/web-components/viewer/MediaBody-BzMXMHIF.mjs +1 -0
  388. package/dist/web-components/viewer/Navigator-Duc69Yes.mjs +1 -0
  389. package/dist/web-components/viewer/PartOfManifest-X9_q-2t6.mjs +1 -0
  390. package/dist/web-components/viewer/Search-S4N5QU4R.mjs +1 -0
  391. package/dist/web-components/viewer/StandaloneItems-BO4VyWRW.mjs +1 -0
  392. package/dist/web-components/viewer/Transcript-BbDaS064.mjs +1 -0
  393. package/dist/web-components/viewer/annotation-collection-BjZ1DAHq.mjs +1 -0
  394. package/dist/web-components/viewer/annotations-content-jn3n5Y2-.mjs +1 -0
  395. package/dist/web-components/viewer/cloverEngine-CjuYjUhI.mjs +164 -0
  396. package/dist/web-components/viewer/content-state-reader-CPiShIjP.mjs +1 -0
  397. package/dist/web-components/viewer/host-yWi4R1bP.mjs +1 -0
  398. package/dist/web-components/viewer/index.d.mts +7 -0
  399. package/dist/web-components/viewer/index.mjs +1 -0
  400. package/dist/web-components/viewer/index.umd.js +18 -0
  401. package/dist/web-components/viewer/link-CwE-fg5G.mjs +1 -0
  402. package/dist/web-components/viewer/overlayImage-BpOgqsZ0.mjs +1 -0
  403. package/dist/web-components/viewer/renderers-L-IlGI1r.mjs +1 -0
  404. package/dist/web-components/viewer/search-DWkwRPo_.mjs +1 -0
  405. package/dist/web-components/viewer/styles-BRCkEU3w.mjs +1 -0
  406. package/dist/web-components/viewer/viewer--TreVlJ_.mjs +28 -0
  407. package/dist/web-components/viewer/vtt-1ZJwtElI.mjs +5 -0
  408. package/dist/web-components/viewer-DyV864Qe.mjs +1 -0
  409. package/dist/web-components/vtt-GFssZH8Y.mjs +5 -0
  410. package/package.json +110 -4
@@ -0,0 +1,114 @@
1
+ "use client";
2
+ import { jsxs, jsx } from "react/jsx-runtime";
3
+ import { forwardRef, useState, useEffect, useRef } from "react";
4
+ import { useUniqueId } from "../../ui/useUniqueId.mjs";
5
+ import { itemsOfCollection } from "../../core/items.mjs";
6
+ import { localize } from "../../core/value.mjs";
7
+ import { useCloverTranslation } from "../../i18n/useCloverTranslation.mjs";
8
+ import { join } from "../../lib/classnames.mjs";
9
+ import { useClover, useCloverSelector } from "../../react/context.mjs";
10
+ const STEPS = /* @__PURE__ */ new Set([
11
+ "ArrowUp",
12
+ "ArrowDown",
13
+ "ArrowLeft",
14
+ "ArrowRight",
15
+ "Home",
16
+ "End",
17
+ "PageUp",
18
+ "PageDown"
19
+ ]);
20
+ const STEP_TIME = 100;
21
+ const CollectionSelect = forwardRef(
22
+ function CollectionSelect2({ onChange, className, ...rest }, ref) {
23
+ const { t, langOf } = useCloverTranslation();
24
+ const { clover, language } = useClover("CollectionSelect");
25
+ const collection = useCloverSelector((state) => state.collection);
26
+ const shown = useCloverSelector((state) => {
27
+ var _a;
28
+ return ((_a = state.manifest) == null ? void 0 : _a.id) ?? "";
29
+ });
30
+ const id = useUniqueId();
31
+ const [pending, setPending] = useState(null);
32
+ useEffect(() => setPending(null), [shown, collection]);
33
+ const steppedAt = useRef(-Infinity);
34
+ const asked = useRef(null);
35
+ useEffect(() => {
36
+ asked.current = null;
37
+ }, [shown, collection]);
38
+ const choose = (next) => {
39
+ if (!next || next === shown || next === asked.current) return;
40
+ asked.current = next;
41
+ onChange == null ? void 0 : onChange(next);
42
+ void clover.goToManifest(next).finally(() => {
43
+ if (asked.current === next) asked.current = null;
44
+ });
45
+ };
46
+ const stepBack = () => {
47
+ if (pending === null || pending === shown || pending === asked.current) {
48
+ return false;
49
+ }
50
+ setPending(null);
51
+ return true;
52
+ };
53
+ const items = itemsOfCollection(collection);
54
+ if (items.length < 2) return null;
55
+ const label = localize(collection == null ? void 0 : collection.label, language);
56
+ return /* @__PURE__ */ jsxs(
57
+ "div",
58
+ {
59
+ ref,
60
+ className: join("clover-collection-select", className),
61
+ ...rest,
62
+ children: [
63
+ /* @__PURE__ */ jsx(
64
+ "label",
65
+ {
66
+ htmlFor: `${id}-select`,
67
+ className: "clover-collection-select-label",
68
+ lang: label.text ? label.lang : langOf("collectionLabel"),
69
+ children: label.text || t("collectionLabel")
70
+ }
71
+ ),
72
+ /* @__PURE__ */ jsx(
73
+ "select",
74
+ {
75
+ id: `${id}-select`,
76
+ className: "clover-collection-select-control",
77
+ value: pending ?? shown,
78
+ onKeyDown: (event) => {
79
+ const { key } = event;
80
+ if (key === "Enter") choose(pending);
81
+ else if (key === "Escape") {
82
+ if (stepBack()) event.preventDefault();
83
+ } else if (STEPS.has(key) || key.length === 1 && !event.ctrlKey && !event.metaKey) {
84
+ steppedAt.current = performance.now();
85
+ }
86
+ },
87
+ onBlur: stepBack,
88
+ onChange: (event) => {
89
+ const next = event.target.value;
90
+ setPending(next);
91
+ if (performance.now() - steppedAt.current > STEP_TIME) choose(next);
92
+ },
93
+ children: items.map((item) => {
94
+ const text = localize(item.label, language);
95
+ return /* @__PURE__ */ jsx(
96
+ "option",
97
+ {
98
+ value: item.id,
99
+ lang: text.text ? text.lang : void 0,
100
+ children: text.text || item.id
101
+ },
102
+ item.id
103
+ );
104
+ })
105
+ }
106
+ )
107
+ ]
108
+ }
109
+ );
110
+ }
111
+ );
112
+ export {
113
+ CollectionSelect
114
+ };
@@ -0,0 +1,120 @@
1
+ "use client";
2
+ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
3
+ import { forwardRef, useSyncExternalStore, useState, useEffect } from "react";
4
+ import { currentContents, tableOfContents } from "../../core/ranges.mjs";
5
+ import { localize } from "../../core/value.mjs";
6
+ import { useCloverTranslation } from "../../i18n/useCloverTranslation.mjs";
7
+ import { join } from "../../lib/classnames.mjs";
8
+ import { playFrom } from "../../lib/time.mjs";
9
+ import { CueTime } from "../../ui/Cue.mjs";
10
+ import { useClover, useCloverSelector } from "../../react/context.mjs";
11
+ import { useContainerName } from "../../ui/useContainerName.mjs";
12
+ const Contents = forwardRef(
13
+ function Contents2({ as: Tag = "nav", className, ...rest }, ref) {
14
+ const { t, langOf } = useCloverTranslation();
15
+ const { clover, language } = useClover("Contents");
16
+ const name = useContainerName(
17
+ t("informationPanelTabsContents"),
18
+ langOf("informationPanelTabsContents"),
19
+ rest["aria-label"] !== void 0 || rest["aria-labelledby"] !== void 0
20
+ );
21
+ const nodes = useCloverSelector((state) => tableOfContents(state.manifest));
22
+ const canvasId = useCloverSelector((state) => state.canvasId);
23
+ const element = useSyncExternalStore(
24
+ clover.media.subscribe,
25
+ clover.media.get,
26
+ clover.media.get
27
+ );
28
+ const current = useCurrent(nodes, canvasId, element);
29
+ const highlighted = useSyncExternalStore(
30
+ clover.chapter.subscribe,
31
+ clover.chapter.get,
32
+ clover.chapter.get
33
+ );
34
+ if (!nodes.length) return null;
35
+ const choose = (node) => {
36
+ if (!node.canvasId) return;
37
+ if (node.canvasId === canvasId && node.time && element) {
38
+ playFrom(element, node.time.start);
39
+ return;
40
+ }
41
+ clover.goTo(node.canvasId, {
42
+ ...node.time ? { time: node.time.start } : {},
43
+ ...node.region ? { region: node.region } : {}
44
+ });
45
+ };
46
+ const render = (list) => /* @__PURE__ */ jsx("ol", { className: "clover-contents-list", children: list.map((node) => {
47
+ const label = localize(node.label, language);
48
+ return /* @__PURE__ */ jsxs("li", { className: "clover-contents-item", children: [
49
+ /* @__PURE__ */ jsx(
50
+ "button",
51
+ {
52
+ type: "button",
53
+ className: "clover-contents-button",
54
+ "aria-current": node.id === current ? "true" : void 0,
55
+ "data-highlighted": node.id === highlighted ? "true" : void 0,
56
+ disabled: !node.canvasId,
57
+ onMouseEnter: () => clover.chapter.emit(node.id),
58
+ onMouseLeave: () => clover.chapter.emit(null),
59
+ onFocus: () => clover.chapter.emit(node.id),
60
+ onBlur: () => clover.chapter.emit(null),
61
+ "data-timed": node.time ? "true" : void 0,
62
+ lang: label.text && !node.time ? label.lang : void 0,
63
+ onClick: () => choose(node),
64
+ children: node.time ? /* @__PURE__ */ jsxs(Fragment, { children: [
65
+ /* @__PURE__ */ jsx(
66
+ CueTime,
67
+ {
68
+ start: node.time.start,
69
+ className: "clover-contents-time"
70
+ }
71
+ ),
72
+ /* @__PURE__ */ jsx(
73
+ "span",
74
+ {
75
+ className: "clover-cue-text",
76
+ lang: label.text ? label.lang : void 0,
77
+ children: label.text || node.id
78
+ }
79
+ )
80
+ ] }) : label.text || node.id
81
+ }
82
+ ),
83
+ node.children.length > 0 && render(node.children)
84
+ ] }, node.id);
85
+ }) });
86
+ return /* @__PURE__ */ jsxs(
87
+ Tag,
88
+ {
89
+ ref,
90
+ ...name.props,
91
+ className: join("clover-contents", className),
92
+ ...rest,
93
+ children: [
94
+ name.node,
95
+ render(nodes)
96
+ ]
97
+ }
98
+ );
99
+ }
100
+ );
101
+ function useCurrent(nodes, canvasId, element) {
102
+ const [current, setCurrent] = useState(
103
+ () => currentContents(nodes, canvasId)
104
+ );
105
+ useEffect(() => {
106
+ const update = () => setCurrent(currentContents(nodes, canvasId, element == null ? void 0 : element.currentTime));
107
+ update();
108
+ if (!element) return;
109
+ element.addEventListener("timeupdate", update);
110
+ element.addEventListener("seeked", update);
111
+ return () => {
112
+ element.removeEventListener("timeupdate", update);
113
+ element.removeEventListener("seeked", update);
114
+ };
115
+ }, [nodes, canvasId, element]);
116
+ return current;
117
+ }
118
+ export {
119
+ Contents
120
+ };
@@ -0,0 +1,105 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useUniqueId } from "../../ui/useUniqueId.mjs";
4
+ import { selectVisibleCanvases } from "../../core/selectors.mjs";
5
+ import { localize } from "../../core/value.mjs";
6
+ import { useCloverTranslation } from "../../i18n/useCloverTranslation.mjs";
7
+ import { join } from "../../lib/classnames.mjs";
8
+ import { useClover, useCloverSelector } from "../../react/context.mjs";
9
+ import { titleTag } from "../../ui/heading.mjs";
10
+ import { asArray } from "../../lib/asArray.mjs";
11
+ function renderingsOf(resources, language) {
12
+ const seen = /* @__PURE__ */ new Set();
13
+ const out = [];
14
+ for (const resource of resources) {
15
+ for (const item of asArray(resource == null ? void 0 : resource.rendering)) {
16
+ const id = (item == null ? void 0 : item.id) ?? (item == null ? void 0 : item["@id"]);
17
+ if (typeof id !== "string" || seen.has(id)) continue;
18
+ seen.add(id);
19
+ const label = localize(item.label, language);
20
+ out.push({
21
+ id,
22
+ label: label.text || item.format || id,
23
+ // A format or an address in place of a label is in no language.
24
+ lang: label.text ? label.lang : void 0,
25
+ format: item.format
26
+ });
27
+ }
28
+ }
29
+ return out;
30
+ }
31
+ function useDownloads() {
32
+ const { language } = useClover("Download");
33
+ const manifest = useCloverSelector((state) => state.manifest);
34
+ const shown = useCloverSelector(
35
+ (state) => selectVisibleCanvases(state.manifest, state.canvasId)
36
+ );
37
+ return {
38
+ page: renderingsOf(shown, language),
39
+ all: renderingsOf([manifest], language)
40
+ };
41
+ }
42
+ function DownloadGroups({
43
+ page,
44
+ all,
45
+ headingLevel = 3
46
+ }) {
47
+ const { t, langOf } = useCloverTranslation();
48
+ const id = useUniqueId();
49
+ const Heading = titleTag(headingLevel);
50
+ const list = (titleKey, items, key) => items.length > 0 && /* @__PURE__ */ jsxs(
51
+ "section",
52
+ {
53
+ className: "clover-download-group",
54
+ "aria-labelledby": `${id}-${key}`,
55
+ children: [
56
+ /* @__PURE__ */ jsx(
57
+ Heading,
58
+ {
59
+ className: "clover-download-title",
60
+ id: `${id}-${key}`,
61
+ lang: langOf(titleKey),
62
+ children: t(titleKey)
63
+ }
64
+ ),
65
+ /* @__PURE__ */ jsx("ul", { className: "clover-download-list", children: items.map((item) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
66
+ "a",
67
+ {
68
+ className: "clover-download-link",
69
+ href: item.id,
70
+ target: "_blank",
71
+ rel: "noopener noreferrer",
72
+ lang: item.lang,
73
+ children: [
74
+ item.label,
75
+ item.format && item.format !== item.label && /* @__PURE__ */ jsxs("span", { className: "clover-download-format", children: [
76
+ " ",
77
+ "(",
78
+ item.format,
79
+ ")"
80
+ ] })
81
+ ]
82
+ }
83
+ ) }, item.id)) })
84
+ ]
85
+ }
86
+ );
87
+ return /* @__PURE__ */ jsxs("div", { className: "clover-download-groups", children: [
88
+ list("downloadPage", page, "page"),
89
+ list("downloadAll", all, "all")
90
+ ] });
91
+ }
92
+ function Download({
93
+ className,
94
+ headingLevel = 3,
95
+ ...rest
96
+ }) {
97
+ const { page, all } = useDownloads();
98
+ if (!page.length && !all.length) return null;
99
+ return /* @__PURE__ */ jsx("div", { ...rest, className: join("clover-download", className), children: /* @__PURE__ */ jsx(DownloadGroups, { page, all, headingLevel }) });
100
+ }
101
+ export {
102
+ Download,
103
+ DownloadGroups,
104
+ useDownloads
105
+ };
@@ -0,0 +1,184 @@
1
+ "use client";
2
+ import { jsxs, jsx } from "react/jsx-runtime";
3
+ import { useState, useRef, useEffect } from "react";
4
+ import { isSound } from "../../core/annotations.mjs";
5
+ import { thumbnailSource, resolveThumbnail } from "../../core/thumbnail.mjs";
6
+ import { localize } from "../../core/value.mjs";
7
+ import { useNearViewport, NEAR_VIEWPORT_MARGIN } from "../Body/useNearViewport.mjs";
8
+ import { watchClamp } from "./clamped.mjs";
9
+ function formatDuration(seconds) {
10
+ const total = Math.max(0, Math.round(seconds));
11
+ const h = Math.floor(total / 3600);
12
+ const m = Math.floor(total % 3600 / 60);
13
+ const s = String(total % 60).padStart(2, "0");
14
+ return h ? `${h}:${String(m).padStart(2, "0")}:${s}` : `${m}:${s}`;
15
+ }
16
+ function useThumbnail(part, size, request, near) {
17
+ const source = thumbnailSource(part.resource);
18
+ const [src, setSrc] = useState(source == null ? void 0 : source.src);
19
+ const key = (source == null ? void 0 : source.src) ?? (source == null ? void 0 : source.service) ?? (source == null ? void 0 : source.fallback);
20
+ useEffect(() => {
21
+ if (!source) return setSrc(void 0);
22
+ if (source.src) return setSrc(source.src);
23
+ if (!near) return;
24
+ let current = true;
25
+ resolveThumbnail(source, size, request).then((url) => {
26
+ if (current) setSrc(url);
27
+ });
28
+ return () => {
29
+ current = false;
30
+ };
31
+ }, [key, size, near]);
32
+ return { src, none: !source };
33
+ }
34
+ const Speaker = () => /* @__PURE__ */ jsxs("svg", { "aria-hidden": "true", focusable: "false", viewBox: "0 0 512 512", children: [
35
+ /* @__PURE__ */ jsx("path", { d: "M232 416a24 24 0 01-14.9-5.2L125.8 336H56a24 24 0 01-24-24V200a24 24 0 0124-24h69.8l91.3-74.8A24 24 0 01256 120v272a24 24 0 01-24 24z" }),
36
+ /* @__PURE__ */ jsx(
37
+ "path",
38
+ {
39
+ d: "M336 176a112 112 0 010 160M384 128a176 176 0 010 256",
40
+ fill: "none",
41
+ stroke: "currentColor",
42
+ strokeLinecap: "round",
43
+ strokeWidth: "32"
44
+ }
45
+ )
46
+ ] });
47
+ function Picture({
48
+ part,
49
+ size,
50
+ request,
51
+ alt,
52
+ altLang
53
+ }) {
54
+ const [box, setBox] = useState(null);
55
+ const near = useNearViewport(
56
+ box,
57
+ NEAR_VIEWPORT_MARGIN,
58
+ box == null ? void 0 : box.closest('[data-layout="slider"] .clover-items-viewport')
59
+ );
60
+ const { src, none } = useThumbnail(part, size, request, near);
61
+ const [loaded, setLoaded] = useState(false);
62
+ const { width, height } = part.resource ?? {};
63
+ const ratio = width && height ? width / height : 1;
64
+ return /* @__PURE__ */ jsxs(
65
+ "span",
66
+ {
67
+ ref: setBox,
68
+ className: "clover-items-picture",
69
+ "data-loaded": loaded,
70
+ "data-empty": src ? void 0 : true,
71
+ style: src && !(width && height) ? void 0 : { "--clover-items-ratio": ratio },
72
+ children: [
73
+ !src && none && isSound(part.media) && /* @__PURE__ */ jsx(Speaker, {}),
74
+ src && /* @__PURE__ */ jsx(
75
+ "img",
76
+ {
77
+ src,
78
+ alt,
79
+ lang: alt ? altLang : void 0,
80
+ width: size,
81
+ height: Math.round(size / ratio),
82
+ loading: "lazy",
83
+ decoding: "async",
84
+ draggable: false,
85
+ onLoad: () => setLoaded(true),
86
+ onError: () => setLoaded(true)
87
+ }
88
+ ),
89
+ part.duration ? /* @__PURE__ */ jsx("span", { className: "clover-items-duration", children: formatDuration(part.duration) }) : null
90
+ ]
91
+ }
92
+ );
93
+ }
94
+ function ItemLabel({
95
+ text,
96
+ lang,
97
+ first
98
+ }) {
99
+ const ref = useRef(null);
100
+ const [cut, setCut] = useState(false);
101
+ useEffect(() => {
102
+ const node = ref.current;
103
+ if (!node || !text) return;
104
+ return watchClamp(node, setCut);
105
+ }, [text]);
106
+ return /* @__PURE__ */ jsxs("span", { className: "clover-items-label", "data-clamped": cut || void 0, children: [
107
+ !first && " ",
108
+ /* @__PURE__ */ jsx(
109
+ "span",
110
+ {
111
+ ref,
112
+ className: "clover-items-label-text",
113
+ lang: text ? lang : void 0,
114
+ children: text
115
+ }
116
+ ),
117
+ cut && /* @__PURE__ */ jsx(
118
+ "span",
119
+ {
120
+ className: "clover-items-label-full",
121
+ lang,
122
+ "aria-hidden": "true",
123
+ hidden: true,
124
+ children: text
125
+ }
126
+ )
127
+ ] });
128
+ }
129
+ function ItemFigure({
130
+ item,
131
+ size,
132
+ language,
133
+ request,
134
+ showSummary = false
135
+ }) {
136
+ var _a, _b;
137
+ const labels = item.parts.map(
138
+ (part) => localize(item.parts.length === 1 ? item.label : part.label, language)
139
+ );
140
+ const summary = showSummary ? localize(item.summary, language) : null;
141
+ const labeled = labels.some((label) => label.text);
142
+ return /* @__PURE__ */ jsxs(
143
+ "figure",
144
+ {
145
+ role: "none",
146
+ className: "clover-items-figure",
147
+ "data-parts": item.parts.length,
148
+ "data-media": (_b = (_a = item.parts[0]) == null ? void 0 : _a.media) == null ? void 0 : _b.toLowerCase(),
149
+ style: { "--parts": item.parts.length },
150
+ children: [
151
+ /* @__PURE__ */ jsx("span", { className: "clover-items-pictures", children: item.parts.map((part, index) => {
152
+ const alt = labels[index].text ? { text: "" } : localize(part.label, language);
153
+ return /* @__PURE__ */ jsx(
154
+ Picture,
155
+ {
156
+ part,
157
+ size,
158
+ request,
159
+ alt: alt.text,
160
+ altLang: alt.lang
161
+ },
162
+ part.id
163
+ );
164
+ }) }),
165
+ (labeled || (summary == null ? void 0 : summary.text)) && /* @__PURE__ */ jsxs("figcaption", { className: "clover-items-caption", children: [
166
+ labels.map((label, index) => /* @__PURE__ */ jsx(
167
+ ItemLabel,
168
+ {
169
+ text: label.text,
170
+ lang: label.lang,
171
+ first: index === 0
172
+ },
173
+ item.parts[index].id
174
+ )),
175
+ (summary == null ? void 0 : summary.text) && /* @__PURE__ */ jsx("span", { className: "clover-items-summary", lang: summary.lang, children: summary.text.replace(/<[^>]*>/g, "") })
176
+ ] })
177
+ ]
178
+ }
179
+ );
180
+ }
181
+ export {
182
+ ItemFigure,
183
+ formatDuration
184
+ };