@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,188 @@
1
+ "use client";
2
+ import { useRef, useState, useEffect, useMemo, useSyncExternalStore } from "react";
3
+ import { createClover } from "../../core/clover.mjs";
4
+ import { requestKey } from "../../core/request.mjs";
5
+ import { sameRenderers } from "../Body/renderers.mjs";
6
+ function useRootState({
7
+ iiifContent,
8
+ canvasId,
9
+ defaultCanvasId,
10
+ onCanvasChange,
11
+ onStatusChange,
12
+ manifestId,
13
+ defaultManifestId,
14
+ onManifestChange,
15
+ searchQuery,
16
+ request,
17
+ language,
18
+ renderers,
19
+ annotations,
20
+ annotationPages = "view",
21
+ onContentStateChange,
22
+ ...rest
23
+ }) {
24
+ const controlled = canvasId !== void 0;
25
+ const manifestControlled = manifestId !== void 0;
26
+ const latest = useRef({
27
+ controlled,
28
+ manifestControlled,
29
+ onCanvasChange,
30
+ onStatusChange,
31
+ onManifestChange
32
+ });
33
+ latest.current = {
34
+ controlled,
35
+ manifestControlled,
36
+ onCanvasChange,
37
+ onStatusChange,
38
+ onManifestChange
39
+ };
40
+ const [clover] = useState(
41
+ () => createClover({
42
+ request,
43
+ onCanvasChange: (id) => {
44
+ var _a, _b;
45
+ return (_b = (_a = latest.current).onCanvasChange) == null ? void 0 : _b.call(_a, id);
46
+ },
47
+ onManifestChange: (id) => {
48
+ var _a, _b;
49
+ return (_b = (_a = latest.current).onManifestChange) == null ? void 0 : _b.call(_a, id);
50
+ },
51
+ isControlled: () => latest.current.controlled,
52
+ isManifestControlled: () => latest.current.manifestControlled
53
+ })
54
+ );
55
+ clover.setRequest(request);
56
+ const initial = useRef({});
57
+ initial.current = {
58
+ canvasId,
59
+ defaultCanvasId,
60
+ manifestId: manifestId ?? defaultManifestId
61
+ };
62
+ const requestSettings = requestKey(request);
63
+ const content = useRef(iiifContent);
64
+ content.current = iiifContent;
65
+ const key = contentKey(iiifContent);
66
+ useEffect(() => {
67
+ void clover.load(content.current, initial.current);
68
+ return () => clover.dispose();
69
+ }, [clover, key, requestSettings]);
70
+ useEffect(() => {
71
+ if (controlled) clover.syncCanvas(canvasId ?? null);
72
+ }, [clover, controlled, canvasId]);
73
+ const [status, setStatus] = useState(clover.store.get().status);
74
+ useEffect(() => {
75
+ let last = clover.store.get().status;
76
+ return clover.store.subscribe(() => {
77
+ var _a, _b;
78
+ const { status: next, error } = clover.store.get();
79
+ if (next === last) return;
80
+ last = next;
81
+ setStatus(next);
82
+ (_b = (_a = latest.current).onStatusChange) == null ? void 0 : _b.call(_a, next, error);
83
+ });
84
+ }, [clover]);
85
+ const annotationsRef = useRef(annotations);
86
+ annotationsRef.current = annotations;
87
+ const annotationsKey = annotationsInputKey(annotations);
88
+ useEffect(() => {
89
+ void clover.loadAnnotations(annotationsRef.current ?? null);
90
+ }, [clover, annotationsKey, requestSettings]);
91
+ useEffect(() => {
92
+ clover.setAnnotationPages(annotationPages);
93
+ }, [clover, annotationPages]);
94
+ useContentStateOutput(clover, onContentStateChange);
95
+ useEffect(() => {
96
+ if (manifestControlled && status === "ready") {
97
+ void clover.syncManifest(manifestId ?? null);
98
+ }
99
+ }, [clover, manifestControlled, manifestId, status]);
100
+ const manifestShown = useCloverStoreValue(
101
+ clover,
102
+ (state) => {
103
+ var _a;
104
+ return state.status === "ready" ? ((_a = state.manifest) == null ? void 0 : _a.id) ?? null : null;
105
+ }
106
+ );
107
+ useEffect(() => {
108
+ if (searchQuery && manifestShown) void clover.search(searchQuery);
109
+ }, [clover, searchQuery, manifestShown]);
110
+ const kept = useRef(renderers);
111
+ if (!sameRenderers(kept.current, renderers)) kept.current = renderers;
112
+ const stableRenderers = kept.current;
113
+ const context = useMemo(
114
+ () => ({ clover, language, renderers: stableRenderers }),
115
+ [clover, language, stableRenderers]
116
+ );
117
+ return [context, status, rest];
118
+ }
119
+ function useCloverStoreValue(clover, select) {
120
+ return useSyncExternalStore(
121
+ clover.store.subscribe,
122
+ () => select(clover.store.get()),
123
+ () => select(clover.store.get())
124
+ );
125
+ }
126
+ function annotationsInputKey(input) {
127
+ const items = Array.isArray(input) ? input : input ? [input] : [];
128
+ return JSON.stringify(
129
+ items.map(
130
+ (item) => typeof item === "string" ? item : (item == null ? void 0 : item.id) ?? "object"
131
+ )
132
+ );
133
+ }
134
+ const SETTLE_MS = 300;
135
+ function useContentStateOutput(clover, onChange) {
136
+ const latest = useRef(onChange);
137
+ latest.current = onChange;
138
+ const enabled = Boolean(onChange);
139
+ useEffect(() => {
140
+ if (!enabled) return;
141
+ let timer;
142
+ let last = "";
143
+ const settle = () => {
144
+ clearTimeout(timer);
145
+ timer = setTimeout(() => {
146
+ var _a;
147
+ const state = clover.getContentState();
148
+ if (!state || state.encoded === last) return;
149
+ last = state.encoded;
150
+ (_a = latest.current) == null ? void 0 : _a.call(latest, state);
151
+ }, SETTLE_MS);
152
+ };
153
+ let canvasId = clover.store.get().canvasId;
154
+ const offStore = clover.store.subscribe(() => {
155
+ const next = clover.store.get().canvasId;
156
+ if (next !== canvasId) {
157
+ canvasId = next;
158
+ settle();
159
+ }
160
+ });
161
+ const offViewport = clover.viewport.subscribe(settle);
162
+ let element = null;
163
+ const watch = (next) => {
164
+ element == null ? void 0 : element.removeEventListener("pause", settle);
165
+ element == null ? void 0 : element.removeEventListener("seeked", settle);
166
+ element = next;
167
+ element == null ? void 0 : element.addEventListener("pause", settle);
168
+ element == null ? void 0 : element.addEventListener("seeked", settle);
169
+ };
170
+ watch(clover.media.get());
171
+ const offMedia = clover.media.subscribe(watch);
172
+ settle();
173
+ return () => {
174
+ clearTimeout(timer);
175
+ offStore();
176
+ offViewport();
177
+ offMedia();
178
+ watch(null);
179
+ };
180
+ }, [clover, enabled]);
181
+ }
182
+ function contentKey(content) {
183
+ if (typeof content === "string") return content;
184
+ return content.id ?? content["@id"] ?? content;
185
+ }
186
+ export {
187
+ useRootState
188
+ };
@@ -0,0 +1,48 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { useEffect, useMemo } from "react";
4
+ import { SceneView } from "./SceneView.mjs";
5
+ import { useClover, useCloverSelector } from "../../react/context.mjs";
6
+ import { useVisibleCanvases, useManifest } from "../../react/hooks.mjs";
7
+ function ConnectedScene({
8
+ label,
9
+ language,
10
+ options,
11
+ ...props
12
+ }) {
13
+ const context = useClover("Scene");
14
+ const { clover } = context;
15
+ const view = useVisibleCanvases();
16
+ const scene = view.find((container) => container.type === "Scene");
17
+ const manifest = useManifest();
18
+ const manifestId = useCloverSelector(
19
+ (state) => {
20
+ var _a;
21
+ return state.status === "loading" ? "loading" : ((_a = state.manifest) == null ? void 0 : _a.id) ?? "";
22
+ }
23
+ );
24
+ const target = useCloverSelector((state) => state.target);
25
+ useEffect(() => {
26
+ if (target && scene && target.canvasId === scene.id) clover.consumeTarget();
27
+ }, [target, scene, clover]);
28
+ const request = (options == null ? void 0 : options.request) ?? clover.request;
29
+ const connected = useMemo(
30
+ () => ({ ...options, request }),
31
+ [options, request]
32
+ );
33
+ if (!scene) return null;
34
+ return /* @__PURE__ */ jsx(
35
+ SceneView,
36
+ {
37
+ ...props,
38
+ scene,
39
+ manifestId,
40
+ label: label ?? scene.label ?? (manifest == null ? void 0 : manifest.label),
41
+ language: language ?? context.language,
42
+ options: connected
43
+ }
44
+ );
45
+ }
46
+ export {
47
+ ConnectedScene as default
48
+ };
@@ -0,0 +1,56 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { useState, useEffect } from "react";
4
+ import { SceneView } from "./SceneView.mjs";
5
+ import { CanvasPending } from "../Body/Pending.mjs";
6
+ import { BodyAlert } from "../Body/BodyAlert.mjs";
7
+ import { loadContent } from "../../core/load.mjs";
8
+ function LoadedScene({ iiifContent, ...props }) {
9
+ var _a;
10
+ const [view, setView] = useState({ state: "loading" });
11
+ const request = (_a = props.options) == null ? void 0 : _a.request;
12
+ const key = typeof iiifContent === "string" ? iiifContent : String((iiifContent == null ? void 0 : iiifContent.id) ?? "");
13
+ useEffect(() => {
14
+ let live = true;
15
+ setView({ state: "loading" });
16
+ (async () => {
17
+ var _a2;
18
+ const content = await loadContent(iiifContent, { request });
19
+ const scenes = (content.manifest.items ?? []).filter((item) => item.type === "Scene");
20
+ const wanted = (_a2 = content.target) == null ? void 0 : _a2.canvasId;
21
+ const scene = scenes.find((each) => each.id === wanted) ?? scenes[0];
22
+ if (!scene) throw new Error("It has no Scene to show.");
23
+ if (live)
24
+ setView({
25
+ state: "ready",
26
+ scene,
27
+ manifest: content.manifest
28
+ });
29
+ })().catch((error) => {
30
+ if (live)
31
+ setView({
32
+ state: "error",
33
+ error: error instanceof Error ? error : new Error(String(error))
34
+ });
35
+ });
36
+ return () => {
37
+ live = false;
38
+ };
39
+ }, [key, request]);
40
+ if (view.state === "ready")
41
+ return /* @__PURE__ */ jsx(
42
+ SceneView,
43
+ {
44
+ ...props,
45
+ scene: view.scene,
46
+ manifestId: String(view.manifest.id ?? ""),
47
+ label: props.label ?? view.scene.label ?? view.manifest.label
48
+ }
49
+ );
50
+ if (view.state === "error")
51
+ return /* @__PURE__ */ jsx(CanvasPending, { children: /* @__PURE__ */ jsx(BodyAlert, { error: view.error }) });
52
+ return /* @__PURE__ */ jsx(CanvasPending, {});
53
+ }
54
+ export {
55
+ LoadedScene as default
56
+ };
@@ -0,0 +1,204 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import React, { useRef, useEffect } from "react";
4
+ import { attachOrbitGestures } from "./gestures.mjs";
5
+ import { renderControl } from "../../ui/ControlCluster.mjs";
6
+ const DIRECTIONS = {
7
+ rotateUp: { place: "up", rate: [0, Math.PI / 6] },
8
+ rotateLeft: { place: "left", rate: [Math.PI / 2, 0] },
9
+ rotateRight: { place: "right", rate: [-Math.PI / 2, 0] },
10
+ rotateDown: { place: "down", rate: [0, -Math.PI / 6] }
11
+ };
12
+ const HOLD_MS = 400;
13
+ const Caret = ({ rotate }) => /* @__PURE__ */ jsx(
14
+ "path",
15
+ {
16
+ fill: "none",
17
+ strokeWidth: "64",
18
+ strokeLinecap: "round",
19
+ strokeLinejoin: "round",
20
+ d: "M192 96l160 160-160 160",
21
+ transform: `rotate(${rotate} 256 256)`
22
+ }
23
+ );
24
+ const GLOBE = 236;
25
+ const n = (value) => value.toFixed(1);
26
+ function half(rx, ry, upright, sweep) {
27
+ const [from, to] = upright ? [`256 ${n(256 - ry)}`, `256 ${n(256 + ry)}`] : [`${n(256 - rx)} 256`, `${n(256 + rx)} 256`];
28
+ return `M${from}A${n(rx)} ${n(ry)} 0 0 ${sweep} ${to}`;
29
+ }
30
+ function orientationOf({ theta, phi }) {
31
+ const above = Math.PI / 2 - phi;
32
+ const ry = Math.max(1, GLOBE * Math.abs(Math.sin(above)));
33
+ const rx = Math.max(1, GLOBE * Math.abs(Math.sin(theta)));
34
+ const down = above >= 0;
35
+ const nearRight = Math.sin(2 * theta) < 0;
36
+ return {
37
+ equator: {
38
+ front: half(GLOBE, ry, false, down ? 0 : 1),
39
+ back: half(GLOBE, ry, false, down ? 1 : 0)
40
+ },
41
+ meridian: {
42
+ front: half(rx, GLOBE, true, nearRight ? 1 : 0),
43
+ back: half(rx, GLOBE, true, nearRight ? 0 : 1)
44
+ },
45
+ x: 256 - GLOBE * Math.sin(theta),
46
+ y: 256 + (down ? 1 : -1) * ry * Math.cos(theta),
47
+ facing: Math.cos(theta) > 0
48
+ };
49
+ }
50
+ function showOrientation(glyph, orbit) {
51
+ const [equatorFront, equatorBack, meridianFront, meridianBack, dot] = (glyph == null ? void 0 : glyph.children) ?? [];
52
+ if (!dot) return;
53
+ const { equator, meridian, x, y, facing } = orientationOf(orbit);
54
+ equatorFront.setAttribute("d", equator.front);
55
+ equatorBack.setAttribute("d", equator.back);
56
+ meridianFront.setAttribute("d", meridian.front);
57
+ meridianBack.setAttribute("d", meridian.back);
58
+ dot.setAttribute("cx", x.toFixed(1));
59
+ dot.setAttribute("cy", y.toFixed(1));
60
+ dot.setAttribute("fill", facing ? "currentColor" : "none");
61
+ dot.setAttribute("opacity", facing ? "1" : String(BACK));
62
+ }
63
+ const BACK = 0.3;
64
+ const Orientation = React.forwardRef(
65
+ function Orientation2(_, ref) {
66
+ const home = orientationOf({ theta: 0, phi: 75 * Math.PI / 180 });
67
+ return /* @__PURE__ */ jsxs("g", { ref, fill: "none", strokeWidth: "14", strokeLinecap: "round", children: [
68
+ /* @__PURE__ */ jsx("path", { d: home.equator.front }),
69
+ /* @__PURE__ */ jsx("path", { d: home.equator.back, strokeOpacity: BACK }),
70
+ /* @__PURE__ */ jsx("path", { d: home.meridian.front }),
71
+ /* @__PURE__ */ jsx("path", { d: home.meridian.back, strokeOpacity: BACK }),
72
+ /* @__PURE__ */ jsx(
73
+ "circle",
74
+ {
75
+ cx: home.x.toFixed(1),
76
+ cy: home.y.toFixed(1),
77
+ r: "34",
78
+ fill: "currentColor"
79
+ }
80
+ )
81
+ ] });
82
+ }
83
+ );
84
+ function RotatePad({
85
+ controls,
86
+ controlButtons,
87
+ turn,
88
+ zoom,
89
+ span,
90
+ indicator,
91
+ name
92
+ }) {
93
+ const holding = useRef(null);
94
+ const swallow = useRef(false);
95
+ const turning = useRef(turn);
96
+ turning.current = turn;
97
+ const zooming = useRef(zoom);
98
+ zooming.current = zoom;
99
+ const disc = useRef(null);
100
+ const turns = Boolean(
101
+ controls.rotateUp || controls.rotateLeft || controls.rotateRight || controls.rotateDown
102
+ );
103
+ useEffect(() => {
104
+ const element = disc.current;
105
+ if (!element) return;
106
+ return attachOrbitGestures(
107
+ element,
108
+ {
109
+ turn: (dTheta, dPhi) => turning.current(dTheta, dPhi),
110
+ zoom: (factor) => zooming.current(factor)
111
+ },
112
+ span
113
+ );
114
+ }, [span, turns]);
115
+ const stop = (released) => {
116
+ const hold = holding.current;
117
+ if (!hold) return;
118
+ window.clearTimeout(hold.timer);
119
+ cancelAnimationFrame(hold.frame);
120
+ holding.current = null;
121
+ if (hold.held && released) swallow.current = true;
122
+ };
123
+ useEffect(() => () => stop(false), []);
124
+ const start = (event, direction) => {
125
+ if (event.button > 0) return;
126
+ stop(false);
127
+ swallow.current = false;
128
+ const [dTheta, dPhi] = DIRECTIONS[direction].rate;
129
+ const hold = { timer: 0, frame: 0, held: false };
130
+ hold.timer = window.setTimeout(() => {
131
+ hold.held = true;
132
+ let last = performance.now();
133
+ const step = (now) => {
134
+ const seconds = Math.min(0.1, Math.max(0, now - last) / 1e3);
135
+ last = now;
136
+ turning.current(dTheta * seconds, dPhi * seconds);
137
+ hold.frame = requestAnimationFrame(step);
138
+ };
139
+ hold.frame = requestAnimationFrame(step);
140
+ }, HOLD_MS);
141
+ holding.current = hold;
142
+ };
143
+ const cell = (direction) => {
144
+ const spec = controls[direction];
145
+ if (!spec) return null;
146
+ return /* @__PURE__ */ jsx(
147
+ "span",
148
+ {
149
+ className: "clover-scene-rotate-cell",
150
+ "data-place": DIRECTIONS[direction].place,
151
+ onPointerDown: (event) => start(event, direction),
152
+ onPointerUp: () => stop(true),
153
+ onPointerLeave: () => stop(false),
154
+ onPointerCancel: () => stop(false),
155
+ onKeyDown: (event) => {
156
+ if (event.repeat && event.key === "Enter") event.preventDefault();
157
+ },
158
+ onClickCapture: (event) => {
159
+ if (swallow.current && event.detail > 0) {
160
+ event.stopPropagation();
161
+ event.preventDefault();
162
+ }
163
+ swallow.current = false;
164
+ },
165
+ children: renderControl(spec, controlButtons)
166
+ },
167
+ direction
168
+ );
169
+ };
170
+ return /* @__PURE__ */ jsxs(
171
+ "div",
172
+ {
173
+ className: "clover-scene-rotate",
174
+ role: "group",
175
+ ...name.props,
176
+ "data-testid": "clover-scene-rotate",
177
+ children: [
178
+ name.node,
179
+ turns && /* @__PURE__ */ jsx(
180
+ "span",
181
+ {
182
+ ref: disc,
183
+ className: "clover-scene-rotate-disc",
184
+ "aria-hidden": "true",
185
+ "data-testid": "clover-scene-rotate-disc",
186
+ children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 512 512", width: "16", height: "16", focusable: "false", children: /* @__PURE__ */ jsx(Orientation, { ref: indicator }) })
187
+ }
188
+ ),
189
+ cell("rotateUp"),
190
+ cell("rotateLeft"),
191
+ cell("rotateRight"),
192
+ cell("rotateDown"),
193
+ controls.reset && /* @__PURE__ */ jsx("span", { className: "clover-scene-rotate-cell", "data-place": "corner", children: renderControl(controls.reset, controlButtons) })
194
+ ]
195
+ }
196
+ );
197
+ }
198
+ export {
199
+ Caret,
200
+ Orientation,
201
+ RotatePad,
202
+ orientationOf,
203
+ showOrientation
204
+ };
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { Suspense, lazy } from "react";
4
+ import { SceneView } from "./SceneView.mjs";
5
+ import { CanvasPending } from "../Body/Pending.mjs";
6
+ import { useOptionalClover } from "../../react/context.mjs";
7
+ const ConnectedScene = lazy(() => import("./Connected.mjs"));
8
+ const LoadedScene = lazy(() => import("./Loaded.mjs"));
9
+ function Scene(props) {
10
+ const root = useOptionalClover();
11
+ if (props.iiifContent !== void 0 && props.scene === void 0)
12
+ return /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(CanvasPending, {}), children: /* @__PURE__ */ jsx(LoadedScene, { ...props }) });
13
+ if (!props.scene)
14
+ return root ? /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(CanvasPending, {}), children: /* @__PURE__ */ jsx(ConnectedScene, { ...props }) }) : null;
15
+ return /* @__PURE__ */ jsx(SceneView, { ...props });
16
+ }
17
+ export {
18
+ Scene,
19
+ Scene as default
20
+ };