@nulib/clover 0.0.0-stage → 4.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) 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 +539 -0
  55. package/dist/components/Map/basemap.mjs +50 -0
  56. package/dist/components/Map/maplibre-worker.mjs +7 -0
  57. package/dist/components/Map/overlayImage.mjs +17 -0
  58. package/dist/components/Map/worker.mjs +22 -0
  59. package/dist/components/Panel/About.mjs +148 -0
  60. package/dist/components/Panel/Panel.mjs +259 -0
  61. package/dist/components/Panel/PanelToggle.mjs +43 -0
  62. package/dist/components/Panel/PartOfManifest.mjs +52 -0
  63. package/dist/components/Primitives/Primitives.mjs +263 -0
  64. package/dist/components/Primitives/resource.mjs +11 -0
  65. package/dist/components/Provider/Provider.mjs +174 -0
  66. package/dist/components/Root/Announcer.mjs +58 -0
  67. package/dist/components/Root/Root.mjs +29 -0
  68. package/dist/components/Root/useRootState.mjs +188 -0
  69. package/dist/components/Scene/Connected.mjs +48 -0
  70. package/dist/components/Scene/Loaded.mjs +56 -0
  71. package/dist/components/Scene/RotatePad.mjs +204 -0
  72. package/dist/components/Scene/Scene.mjs +20 -0
  73. package/dist/components/Scene/SceneView.mjs +539 -0
  74. package/dist/components/Scene/cloverEngine.mjs +105 -0
  75. package/dist/components/Scene/engine.mjs +141 -0
  76. package/dist/components/Scene/engines.mjs +23 -0
  77. package/dist/components/Scene/gestures.mjs +74 -0
  78. package/dist/components/Scene/models.mjs +78 -0
  79. package/dist/components/Scene/orbit.mjs +60 -0
  80. package/dist/components/Search/Search.mjs +246 -0
  81. package/dist/components/Split/Split.mjs +210 -0
  82. package/dist/components/Split/splitting.mjs +203 -0
  83. package/dist/components/Status/Status.mjs +47 -0
  84. package/dist/components/Timeline/Connected.mjs +25 -0
  85. package/dist/components/Timeline/Timeline.mjs +40 -0
  86. package/dist/components/Timeline/playerSurface.mjs +84 -0
  87. package/dist/components/Transcript/Transcript.mjs +377 -0
  88. package/dist/components/Viewer/Viewer.mjs +19 -0
  89. package/dist/core/annotation-bodies.mjs +29 -0
  90. package/dist/core/annotation-collection.mjs +55 -0
  91. package/dist/core/annotation-name.mjs +31 -0
  92. package/dist/core/annotation-sets.mjs +155 -0
  93. package/dist/core/annotations-content.mjs +27 -0
  94. package/dist/core/annotations.mjs +73 -0
  95. package/dist/core/clover.mjs +393 -0
  96. package/dist/core/content-state-reader.mjs +82 -0
  97. package/dist/core/content-state.mjs +43 -0
  98. package/dist/core/direction.mjs +12 -0
  99. package/dist/core/geo-detect.mjs +30 -0
  100. package/dist/core/geo.mjs +283 -0
  101. package/dist/core/items.mjs +76 -0
  102. package/dist/core/keep-fragments.mjs +40 -0
  103. package/dist/core/link.mjs +28 -0
  104. package/dist/core/load.mjs +183 -0
  105. package/dist/core/map-config.mjs +12 -0
  106. package/dist/core/markdown.mjs +139 -0
  107. package/dist/core/pages.mjs +51 -0
  108. package/dist/core/painted-bodies.mjs +20 -0
  109. package/dist/core/painting.mjs +17 -0
  110. package/dist/core/presentation.mjs +27 -0
  111. package/dist/core/ranges.mjs +133 -0
  112. package/dist/core/region.mjs +32 -0
  113. package/dist/core/request.mjs +40 -0
  114. package/dist/core/sanitize.mjs +72 -0
  115. package/dist/core/search-service.mjs +22 -0
  116. package/dist/core/search.mjs +154 -0
  117. package/dist/core/selectors.mjs +94 -0
  118. package/dist/core/sequence.mjs +70 -0
  119. package/dist/core/show-link.mjs +16 -0
  120. package/dist/core/store.mjs +40 -0
  121. package/dist/core/svg-shape.mjs +183 -0
  122. package/dist/core/text.mjs +36 -0
  123. package/dist/core/thumbnail.mjs +55 -0
  124. package/dist/core/value.mjs +39 -0
  125. package/dist/core/vtt.mjs +111 -0
  126. package/dist/hooks/useFullscreen.mjs +21 -0
  127. package/dist/hooks/useFullscreenSupported.mjs +11 -0
  128. package/dist/hooks/useLoaded.mjs +27 -0
  129. package/dist/hooks/useWithinFullscreen.mjs +24 -0
  130. package/dist/i18n/config.mjs +170 -0
  131. package/dist/i18n/hostLanguage.mjs +6 -0
  132. package/dist/i18n/locales/en.json.mjs +5 -0
  133. package/dist/i18n/locales/es.json.mjs +5 -0
  134. package/dist/i18n/locales/fi.json.mjs +5 -0
  135. package/dist/i18n/locales/fr.json.mjs +5 -0
  136. package/dist/i18n/locales/index.mjs +13 -0
  137. package/dist/i18n/locales/nb.json.mjs +5 -0
  138. package/dist/i18n/locales/nn.json.mjs +5 -0
  139. package/dist/i18n/locales/no.json.mjs +5 -0
  140. package/dist/i18n/locales/pt.json.mjs +5 -0
  141. package/dist/i18n/reader.mjs +13 -0
  142. package/dist/i18n/useCloverTranslation.mjs +28 -0
  143. package/dist/index.d.mts +2215 -0
  144. package/dist/index.mjs +133 -0
  145. package/dist/lib/asArray.mjs +5 -0
  146. package/dist/lib/classnames.mjs +5 -0
  147. package/dist/lib/fullscreen.mjs +65 -0
  148. package/dist/lib/gltf/bounds.mjs +44 -0
  149. package/dist/lib/gltf/load.mjs +156 -0
  150. package/dist/lib/gltf/mat4.mjs +150 -0
  151. package/dist/lib/gltf/renderer.mjs +342 -0
  152. package/dist/lib/gltf/shaders.mjs +192 -0
  153. package/dist/lib/hls.mjs +6 -0
  154. package/dist/lib/pointer.mjs +38 -0
  155. package/dist/lib/renderer/CanvasRenderer.mjs +857 -0
  156. package/dist/lib/renderer/backends/backend.mjs +21 -0
  157. package/dist/lib/renderer/backends/canvas2d/Canvas2DBackend.mjs +91 -0
  158. package/dist/lib/renderer/backends/contexts.mjs +27 -0
  159. package/dist/lib/renderer/backends/dom/DomLayers.mjs +91 -0
  160. package/dist/lib/renderer/backends/webgl2/WebGL2Backend.mjs +248 -0
  161. package/dist/lib/renderer/backends/webgl2/shaders.mjs +28 -0
  162. package/dist/lib/renderer/camera/Camera.mjs +64 -0
  163. package/dist/lib/renderer/camera/CameraAnimator.mjs +90 -0
  164. package/dist/lib/renderer/input/GestureController.mjs +252 -0
  165. package/dist/lib/renderer/io/TileCache.mjs +207 -0
  166. package/dist/lib/renderer/io/decode.mjs +156 -0
  167. package/dist/lib/renderer/loop/FrameLoop.mjs +50 -0
  168. package/dist/lib/renderer/math/affine.mjs +68 -0
  169. package/dist/lib/renderer/math/rect.mjs +45 -0
  170. package/dist/lib/renderer/overlays/Navigator.mjs +141 -0
  171. package/dist/lib/renderer/overlays/OverlayLayer.mjs +94 -0
  172. package/dist/lib/renderer/scene/planFrame.mjs +168 -0
  173. package/dist/lib/renderer/scene/regions.mjs +30 -0
  174. package/dist/lib/renderer/scene/sceneItem.mjs +114 -0
  175. package/dist/lib/renderer/scene/uploadBudget.mjs +30 -0
  176. package/dist/lib/renderer/sources/imageService.mjs +160 -0
  177. package/dist/lib/renderer/sources/sizedImage.mjs +38 -0
  178. package/dist/lib/renderer/sources/tilePyramid.mjs +172 -0
  179. package/dist/lib/time.mjs +21 -0
  180. package/dist/map/index.d.mts +195 -0
  181. package/dist/map/index.mjs +16 -0
  182. package/dist/react/context.mjs +46 -0
  183. package/dist/react/hooks.mjs +69 -0
  184. package/dist/react/language.mjs +30 -0
  185. package/dist/styles.css +1 -0
  186. package/dist/templates/default/Default.mjs +229 -0
  187. package/dist/templates/document/Document.mjs +286 -0
  188. package/dist/templates/document/DocumentPanel.mjs +9 -0
  189. package/dist/templates/document/Sheets.mjs +360 -0
  190. package/dist/templates/gallery/Gallery.mjs +62 -0
  191. package/dist/templates/index.d.mts +276 -0
  192. package/dist/templates/index.mjs +11 -0
  193. package/dist/templates/shared/Lightbox.mjs +111 -0
  194. package/dist/templates/shared/LightboxBody.mjs +9 -0
  195. package/dist/templates/shared/dragToClose.mjs +129 -0
  196. package/dist/templates/shared/useDragToClose.mjs +35 -0
  197. package/dist/templates/shared/useDrawer.mjs +113 -0
  198. package/dist/templates/shared/useFollowFocus.mjs +24 -0
  199. package/dist/templates/shared/useSlide.mjs +52 -0
  200. package/dist/templates/shared/useSpine.mjs +26 -0
  201. package/dist/templates.css +1 -0
  202. package/dist/three/index.d.mts +6 -0
  203. package/dist/three/index.mjs +8 -0
  204. package/dist/ui/Button.mjs +53 -0
  205. package/dist/ui/ControlCluster.mjs +87 -0
  206. package/dist/ui/Cue.mjs +13 -0
  207. package/dist/ui/ErrorBoundary.mjs +26 -0
  208. package/dist/ui/ExitFullscreen.mjs +46 -0
  209. package/dist/ui/FieldPill.mjs +153 -0
  210. package/dist/ui/HideToggle.mjs +57 -0
  211. package/dist/ui/Loading.mjs +20 -0
  212. package/dist/ui/Markup.mjs +95 -0
  213. package/dist/ui/ReadMore.mjs +84 -0
  214. package/dist/ui/Sections.mjs +448 -0
  215. package/dist/ui/Steps.mjs +84 -0
  216. package/dist/ui/Tip.mjs +196 -0
  217. package/dist/ui/bringIntoView.mjs +27 -0
  218. package/dist/ui/controlGlyphs.mjs +120 -0
  219. package/dist/ui/heading.mjs +19 -0
  220. package/dist/ui/languageCode.mjs +8 -0
  221. package/dist/ui/mediaIcons.mjs +104 -0
  222. package/dist/ui/useClusterReach.mjs +50 -0
  223. package/dist/ui/useContainerName.mjs +19 -0
  224. package/dist/ui/useOneOpen.mjs +22 -0
  225. package/dist/ui/useRovingFocus.mjs +64 -0
  226. package/dist/ui/useScrollTrack.mjs +150 -0
  227. package/dist/ui/useUniqueId.mjs +10 -0
  228. package/dist/ui/visuallyHidden.mjs +15 -0
  229. package/dist/web-components/About-DbrFSVBm.mjs +1 -0
  230. package/dist/web-components/AnnotationMenu-EBjIQpQl.mjs +1 -0
  231. package/dist/web-components/AnnotationState-DQTaO6Gz.mjs +1 -0
  232. package/dist/web-components/Annotations-Cb9U7HJ_.mjs +2 -0
  233. package/dist/web-components/Annotations-Dl0SgHBS.mjs +1 -0
  234. package/dist/web-components/Body-DxSz3iST.mjs +1 -0
  235. package/dist/web-components/BodyAlert-C8EOXz24.mjs +1 -0
  236. package/dist/web-components/Button-uWgfvqsL.mjs +1 -0
  237. package/dist/web-components/Camera-cdCqKMup.mjs +1 -0
  238. package/dist/web-components/Canvas2DBackend-CnLEHRs4.mjs +1 -0
  239. package/dist/web-components/CanvasView-BI3YzNdK.mjs +1 -0
  240. package/dist/web-components/CaptionDetails-B80ZhZ7v.mjs +1 -0
  241. package/dist/web-components/ChoiceMenu-DCp7-co7.mjs +1 -0
  242. package/dist/web-components/Collection-B1Le2_TU.mjs +1 -0
  243. package/dist/web-components/CollectionSelect-BL_jQog-.mjs +1 -0
  244. package/dist/web-components/Connected-BxqaRL9o.mjs +1 -0
  245. package/dist/web-components/Connected-DCBI-j9H.mjs +1 -0
  246. package/dist/web-components/Connected-DkhfVWxd.mjs +1 -0
  247. package/dist/web-components/Contents-zYEGHLfe.mjs +1 -0
  248. package/dist/web-components/ControlMenu-CAHiLAtl.mjs +1 -0
  249. package/dist/web-components/Cue-BT2V9VAq.mjs +1 -0
  250. package/dist/web-components/Document-BdCjGnJN.mjs +1 -0
  251. package/dist/web-components/DocumentPanel-X_Rta0Wu.mjs +1 -0
  252. package/dist/web-components/DomLayers-BD4QPbl6.mjs +1 -0
  253. package/dist/web-components/Download-DqU-goFi.mjs +1 -0
  254. package/dist/web-components/EntryBodies-DXAQH0vR.mjs +1 -0
  255. package/dist/web-components/ErrorBoundary-chQaO-Up.mjs +1 -0
  256. package/dist/web-components/FieldPill-CyEssPVm.mjs +1 -0
  257. package/dist/web-components/FrameAnimation-Bb0pOoRl.mjs +1 -0
  258. package/dist/web-components/Gallery-BXU3TcT3.mjs +1 -0
  259. package/dist/web-components/HideToggle-BwMrOBMu.mjs +1 -0
  260. package/dist/web-components/Items-DRj1UEpC.mjs +1 -0
  261. package/dist/web-components/Label-D6aVJB9s.mjs +1 -0
  262. package/dist/web-components/LightboxBody-BzXQGMDn.mjs +1 -0
  263. package/dist/web-components/Loaded-D5xmFRSo.mjs +1 -0
  264. package/dist/web-components/LoadedCanvas-DOjtxLSe.mjs +1 -0
  265. package/dist/web-components/LoadedMap-DouDS2lO.mjs +1 -0
  266. package/dist/web-components/Loading-CBKfwsML.mjs +1 -0
  267. package/dist/web-components/Map-Bcgp_R8H.mjs +1 -0
  268. package/dist/web-components/MapView-CD5zkTs8.mjs +1 -0
  269. package/dist/web-components/Markup-C1hMA8wk.mjs +2 -0
  270. package/dist/web-components/MediaBody-B_Gii4we.mjs +1 -0
  271. package/dist/web-components/MediaBody-BfrKIPte.mjs +1 -0
  272. package/dist/web-components/Navigator-BSJbEbuJ.mjs +1 -0
  273. package/dist/web-components/Pager-Di_2hHM3.mjs +1 -0
  274. package/dist/web-components/Panel-DbsC8A9V.mjs +1 -0
  275. package/dist/web-components/PanelToggle-mUDw73zI.mjs +1 -0
  276. package/dist/web-components/PartOfManifest-7eOwURrF.mjs +1 -0
  277. package/dist/web-components/Pending-BPOQ2z1L.mjs +1 -0
  278. package/dist/web-components/Primitives-XQO3m1wG.mjs +1 -0
  279. package/dist/web-components/Provider-B61118lU.mjs +1 -0
  280. package/dist/web-components/ReadMore-BJH-qqte.mjs +1 -0
  281. package/dist/web-components/Root-Dj277K6p.mjs +1 -0
  282. package/dist/web-components/Scene-BTWpLeec.mjs +1 -0
  283. package/dist/web-components/SceneView-BYo7WmPt.mjs +1 -0
  284. package/dist/web-components/Search-ZV8FFN4p.mjs +1 -0
  285. package/dist/web-components/Sections-ejwu1_Sm.mjs +2 -0
  286. package/dist/web-components/StandaloneItems-BYaiyCca.mjs +1 -0
  287. package/dist/web-components/Status-YbQK2KzY.mjs +1 -0
  288. package/dist/web-components/Timeline-ByyVSd7B.mjs +1 -0
  289. package/dist/web-components/Tip-IO11xX4x.mjs +1 -0
  290. package/dist/web-components/Transcript-D0gUxUoA.mjs +1 -0
  291. package/dist/web-components/annotation-collection-Csv7WIlm.mjs +1 -0
  292. package/dist/web-components/annotations-content-BS_OFz5Z.mjs +1 -0
  293. package/dist/web-components/assets/maplibre-gl-worker-kTz9OPxr.js +13831 -0
  294. package/dist/web-components/body-CKjwwFep.mjs +1 -0
  295. package/dist/web-components/bringIntoView-CQH5ZgMM.mjs +1 -0
  296. package/dist/web-components/canvas-CIzpp-Uz.mjs +1 -0
  297. package/dist/web-components/classnames-DukgfdpI.mjs +1 -0
  298. package/dist/web-components/cloverEngine-B4LinbSt.mjs +164 -0
  299. package/dist/web-components/content-state-reader-D1BkpICh.mjs +1 -0
  300. package/dist/web-components/contexts-ByL3eA_T.mjs +1 -0
  301. package/dist/web-components/controls-Dj2BybWb.mjs +1 -0
  302. package/dist/web-components/custom-elements.json +2739 -0
  303. package/dist/web-components/dragToClose-C-Pf1IeO.mjs +1 -0
  304. package/dist/web-components/engine-BSt8LTso.mjs +4228 -0
  305. package/dist/web-components/engines-CC0OEsVE.mjs +1 -0
  306. package/dist/web-components/es-BwMkoRod.mjs +1 -0
  307. package/dist/web-components/fi-gPFOn9RK.mjs +1 -0
  308. package/dist/web-components/fr-DUHmgdJo.mjs +1 -0
  309. package/dist/web-components/fromManifest-BhemHaoA.mjs +1 -0
  310. package/dist/web-components/glyphs-drROkef9.mjs +1 -0
  311. package/dist/web-components/heading-Cjt0f-Eu.mjs +1 -0
  312. package/dist/web-components/hls-CdKrthkC.mjs +40 -0
  313. package/dist/web-components/hooks-BXzQSllm.mjs +1 -0
  314. package/dist/web-components/imageService-dsdmcegU.mjs +1 -0
  315. package/dist/web-components/index-B7nZdqLg.mjs +1 -0
  316. package/dist/web-components/index.d.mts +604 -0
  317. package/dist/web-components/index.mjs +1 -0
  318. package/dist/web-components/index.umd.js +18 -0
  319. package/dist/web-components/items-CB2Uk7ts.mjs +1 -0
  320. package/dist/web-components/items-jfQ5XzEj.mjs +1 -0
  321. package/dist/web-components/keep-fragments-B5nlv2ck.mjs +1 -0
  322. package/dist/web-components/label-Vbg_cMOJ.mjs +1 -0
  323. package/dist/web-components/languageCode-cCpiU0b0.mjs +1 -0
  324. package/dist/web-components/layout-mMHI0lsj.mjs +1 -0
  325. package/dist/web-components/link-ZRnv5NFR.mjs +1 -0
  326. package/dist/web-components/logo-Boy6u4m2.mjs +1 -0
  327. package/dist/web-components/maplibre-gl-CQ4OueXY.mjs +823 -0
  328. package/dist/web-components/markdown-CCYJwzFn.mjs +5 -0
  329. package/dist/web-components/models-D1EE_CmH.mjs +1 -0
  330. package/dist/web-components/nb-BSvnQ6jd.mjs +1 -0
  331. package/dist/web-components/nn-Dg2_HdZu.mjs +1 -0
  332. package/dist/web-components/no-BSvnQ6jd.mjs +1 -0
  333. package/dist/web-components/nodes-B7JRwBgl.mjs +1 -0
  334. package/dist/web-components/overlayImage-0OgQl1TL.mjs +1 -0
  335. package/dist/web-components/panClearOfControls-ac9uf-Qs.mjs +1 -0
  336. package/dist/web-components/panel-CjXfre-g.mjs +1 -0
  337. package/dist/web-components/part-cUiPs2-y.mjs +1 -0
  338. package/dist/web-components/playerSurface-CU5XxI1j.mjs +1 -0
  339. package/dist/web-components/provider-C1wKfdjb.mjs +1 -0
  340. package/dist/web-components/pt-B3J80JgO.mjs +1 -0
  341. package/dist/web-components/read-more-DNHNtG-a.mjs +1 -0
  342. package/dist/web-components/rendererSurface-DhIlOjGT.mjs +22 -0
  343. package/dist/web-components/renderers-BMSWEFUR.mjs +1 -0
  344. package/dist/web-components/resource-DLHocQ1C.mjs +1 -0
  345. package/dist/web-components/sanitize-Dc7nOsgO.mjs +3 -0
  346. package/dist/web-components/search-CLy2Wj01.mjs +1 -0
  347. package/dist/web-components/shared-YUjOSBKO.mjs +1 -0
  348. package/dist/web-components/show-link-CyzYE1eS.mjs +1 -0
  349. package/dist/web-components/sizedImage-uv_NlE0l.mjs +1 -0
  350. package/dist/web-components/split-CYuMjp89.mjs +1 -0
  351. package/dist/web-components/splitting-BnQUxxgH.mjs +1 -0
  352. package/dist/web-components/status-Ms5L0ghK.mjs +1 -0
  353. package/dist/web-components/styles-CyuM_fB1.mjs +1 -0
  354. package/dist/web-components/svg-shape-DLY3g7oq.mjs +1 -0
  355. package/dist/web-components/text-BTAkxEfQ.mjs +5 -0
  356. package/dist/web-components/three.mjs +1 -0
  357. package/dist/web-components/thumbnail-c2K_iQsD.mjs +1 -0
  358. package/dist/web-components/time-B9GZoYcm.mjs +1 -0
  359. package/dist/web-components/tip-dWhupWSr.mjs +1 -0
  360. package/dist/web-components/toggle-BQTjR1I3.mjs +1 -0
  361. package/dist/web-components/upgrader-XNxI-5jo.mjs +1 -0
  362. package/dist/web-components/useContainerName-BpJ3IWY0.mjs +1 -0
  363. package/dist/web-components/useNearViewport-CtLyYg9n.mjs +1 -0
  364. package/dist/web-components/useScrollTrack-WbG28FPD.mjs +1 -0
  365. package/dist/web-components/viewer/AnnotationMenu-ZKyBeyUU.mjs +1 -0
  366. package/dist/web-components/viewer/AnnotationState-DO33zokc.mjs +1 -0
  367. package/dist/web-components/viewer/Annotations-BOjhr5ks.mjs +1 -0
  368. package/dist/web-components/viewer/Annotations-DkLueFLK.mjs +2 -0
  369. package/dist/web-components/viewer/Canvas2DBackend-CAmzJD5P.mjs +1 -0
  370. package/dist/web-components/viewer/CaptionDetails-DOJlUtOn.mjs +1 -0
  371. package/dist/web-components/viewer/ChoiceMenu-BDq6H34G.mjs +1 -0
  372. package/dist/web-components/viewer/Collection-By3puO0V.mjs +1 -0
  373. package/dist/web-components/viewer/Connected-DZNO2CPf.mjs +1 -0
  374. package/dist/web-components/viewer/Connected-ESg5y49m.mjs +1 -0
  375. package/dist/web-components/viewer/Contents-B_FqDwTW.mjs +1 -0
  376. package/dist/web-components/viewer/ControlMenu-DdQl-dTf.mjs +1 -0
  377. package/dist/web-components/viewer/Cue-BTRHfiWQ.mjs +1 -0
  378. package/dist/web-components/viewer/Document-B9_PyD2w.mjs +1 -0
  379. package/dist/web-components/viewer/DocumentPanel-CtEJVPoE.mjs +1 -0
  380. package/dist/web-components/viewer/DomLayers-DRdQSEtN.mjs +1 -0
  381. package/dist/web-components/viewer/EntryBodies-CJuTRcTq.mjs +1 -0
  382. package/dist/web-components/viewer/FieldPill-06uwrNwE.mjs +1 -0
  383. package/dist/web-components/viewer/FrameAnimation-3dcDHf5q.mjs +1 -0
  384. package/dist/web-components/viewer/Gallery-BYasTqZc.mjs +1 -0
  385. package/dist/web-components/viewer/HideToggle-BxkNMX-T.mjs +1 -0
  386. package/dist/web-components/viewer/LightboxBody-CXMc1xOH.mjs +1 -0
  387. package/dist/web-components/viewer/MapView-DCerrRRV.mjs +1 -0
  388. package/dist/web-components/viewer/MediaBody-BdkJcyGy.mjs +1 -0
  389. package/dist/web-components/viewer/MediaBody-waF4KvHp.mjs +1 -0
  390. package/dist/web-components/viewer/Navigator-CKwDgG2x.mjs +1 -0
  391. package/dist/web-components/viewer/PartOfManifest-DalHJFwC.mjs +1 -0
  392. package/dist/web-components/viewer/Search-Di_QQfDb.mjs +1 -0
  393. package/dist/web-components/viewer/StandaloneItems-B9J6nnWn.mjs +1 -0
  394. package/dist/web-components/viewer/Transcript-aHOixfna.mjs +1 -0
  395. package/dist/web-components/viewer/annotation-collection-I2UkdobR.mjs +1 -0
  396. package/dist/web-components/viewer/annotations-content-D-i4j9pD.mjs +1 -0
  397. package/dist/web-components/viewer/cloverEngine-CynoKdta.mjs +164 -0
  398. package/dist/web-components/viewer/content-state-reader-D7GIMcKK.mjs +1 -0
  399. package/dist/web-components/viewer/host-DlCltI_c.mjs +1 -0
  400. package/dist/web-components/viewer/index.d.mts +7 -0
  401. package/dist/web-components/viewer/index.mjs +1 -0
  402. package/dist/web-components/viewer/index.umd.js +18 -0
  403. package/dist/web-components/viewer/link-BX-wzj1u.mjs +1 -0
  404. package/dist/web-components/viewer/overlayImage-CHqn1fG8.mjs +1 -0
  405. package/dist/web-components/viewer/renderers-C_wdmw9v.mjs +1 -0
  406. package/dist/web-components/viewer/search-BHLyNxZ6.mjs +1 -0
  407. package/dist/web-components/viewer/styles-BRCkEU3w.mjs +1 -0
  408. package/dist/web-components/viewer/viewer-ipqAA-xQ.mjs +28 -0
  409. package/dist/web-components/viewer/vtt-XiS_-5Ao.mjs +5 -0
  410. package/dist/web-components/viewer-DEHIsIHd.mjs +1 -0
  411. package/dist/web-components/vtt-DYAOuQoK.mjs +5 -0
  412. package/dist/web-components/worker-CjXN0dku.mjs +1 -0
  413. package/package.json +111 -4
@@ -0,0 +1 @@
1
+ import{c as m,T as u,e as B,u as r,f as g,l as p}from"./shared-YUjOSBKO.mjs";import{B as y}from"./Body-DxSz3iST.mjs";import{u as L,P as b}from"./nodes-B7JRwBgl.mjs";import{Toggle as h}from"./toggle-BQTjR1I3.mjs";const R={height:"100%"},T=e=>[...e.children].find(s=>s.localName==="clover-panel-toggle")??null,C=e=>e instanceof HTMLElement&&e.localName==="button";function P({hosted:e,props:s}){const a=L(e.element,()=>T(e.element),Object.is),{controlButtons:n,renderers:l,onReady:c,...d}=s,o=m(g,!!n),t=m(p,!!l),i=u(()=>o==null?void 0:o.toControlButtons(n),[o,n]),f=u(()=>t==null?void 0:t.toRenderers(l),[t,l]);return B(c),n&&!o||l&&!t?null:r(y,{...d,onReady:c,controlButtons:i,renderers:f,style:R,children:[a&&r(h,{element:a}),r(b,{from:e.element,picks:C})]})}export{P as BodyElement};
@@ -0,0 +1 @@
1
+ function b(o){for(let t=o.parentElement;t&&t!==document.body;t=t.parentElement)if(/auto|scroll/.test(getComputedStyle(t).overflowY))return t;return null}function d(o,t){var i;const e=b(o);if(!e)return;const r=getComputedStyle(o),u=parseFloat(r.scrollMarginTop)||0,m=parseFloat(r.scrollMarginBottom)||0,s=o.getBoundingClientRect(),l=e.getBoundingClientRect(),n=s.top-l.top-u,c=s.bottom-l.bottom+m,a=t==="start"||n<0?n:c>0?Math.min(c,n):0;if(Math.abs(a)<1)return;const p=(i=window.matchMedia)==null?void 0:i.call(window,"(prefers-reduced-motion: reduce)").matches;e.scrollBy({top:a,behavior:p?"auto":"smooth"})}export{d as b,b as s};
@@ -0,0 +1 @@
1
+ import{K as l,u as o,z as i,P as r,c as f,T as v,e as C,f as m}from"./shared-YUjOSBKO.mjs";import{C as b}from"./CanvasView-BI3YzNdK.mjs";import{r as s}from"./rendererSurface-DhIlOjGT.mjs";import{C as c}from"./Pending-BPOQ2z1L.mjs";const B=i(()=>import("./Connected-DCBI-j9H.mjs")),h=i(()=>import("./LoadedCanvas-DOjtxLSe.mjs")),k=n=>{const a=l();if(n.iiifContent!==void 0&&n.canvases===void 0)return o(r,{fallback:o(c,{}),children:o(h,{...n,surface:s})});const e=n.canvases!==void 0||n.body!==void 0||n.src!==void 0;return a&&!e?o(r,{fallback:o(c,{}),children:o(B,{...n,surface:s})}):o(b,{...n,surface:s})};function w({props:n}){const{controlButtons:a,onReady:e,...d}=n,t=f(m,!!a),u=v(()=>t==null?void 0:t.toControlButtons(a),[t,a]);return C(e),a&&!t?null:o(k,{...d,onReady:e,controlButtons:u})}export{w as CanvasElement};
@@ -0,0 +1 @@
1
+ const n=(...o)=>o.filter(Boolean).join(" ");export{n as j};
@@ -0,0 +1,164 @@
1
+ import{c as ne,F as ae,i as se,M as ie}from"./models-D1EE_CmH.mjs";import{ad as ce,a1 as ue}from"./shared-YUjOSBKO.mjs";const le=["KHR_materials_unlit","KHR_materials_ior","KHR_materials_specular","KHR_mesh_quantization"],Z=1179937895,fe=1313821514,me=5130562;function de(e){const i=new DataView(e);if(i.getUint32(0,true)!==Z)throw new Error("This is not a GLB.");if(i.getUint32(4,true)!==2)throw new Error("Only glTF 2.0 is drawn.");let o,t;const n=Math.min(i.getUint32(8,true),e.byteLength);for(let s=12;s+8<=n;){const c=i.getUint32(s,true),l=i.getUint32(s+4,true),u=s+8;l===fe?o=JSON.parse(new TextDecoder().decode(new Uint8Array(e,u,c))):l===me&&(t=e.slice(u,u+c)),s=u+c}if(!o)throw new Error("The GLB has no JSON chunk.");return{json:o,bin:t}}async function G(e,i,o){const t=new URL(e,i).href,n=t.startsWith("data:")?await fetch(t):await ue(o,t);if(!n.ok)throw new Error(`${t} answered ${n.status}`);return n.arrayBuffer()}const $=new WeakMap;function ve(e,i){const o=(i==null?void 0:i.fetch)??globalThis.fetch,t=$.get(o)??new Map;$.set(o,t);const n=`${ce(i)} ${e}`;let s=t.get(n);return s||(s=he(e,i).finally(()=>t.delete(n)),t.set(n,s)),s}async function he(e,i){const o=await G(e,location.href,i),t=new DataView(o).getUint32(0,true)===Z,{json:n,bin:s}=t?de(o):{json:JSON.parse(new TextDecoder().decode(o))},c=(n.extensionsRequired??[]).filter(a=>!le.includes(a));if(c.length)throw new Error(`Clover's renderer cannot draw this model: it requires ${c.join(", ")}.`);const l=await Promise.all((n.buffers??[]).map((a,m)=>{if(a.uri!==void 0)return G(a.uri,e,i);if(m===0&&s)return s;throw new Error("A buffer of the model has no data.")})),u=await Promise.all((n.images??[]).map(async a=>{try{let m;if(a.bufferView!==void 0){const r=n.bufferViews[a.bufferView];m=new Blob([new Uint8Array(l[r.buffer],r.byteOffset??0,r.byteLength)],{type:a.mimeType})}else if(a.uri!==void 0)m=new Blob([await G(a.uri,e,i)],{type:a.mimeType});else return null;return await createImageBitmap(m,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}catch{return null}}));return{json:n,buffers:l,images:u}}const pe={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},we={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},q=e=>pe[e];function Ee(e,i){const o=e.json.accessors[i],t=q(o.type),n=new Float32Array(o.count*t);if(o.bufferView===void 0)return n;const s=e.json.bufferViews[o.bufferView],c=we[o.componentType],l=s.byteStride||c*t,u=new DataView(e.buffers[s.buffer],(s.byteOffset??0)+(o.byteOffset??0)),a={5120:r=>u.getInt8(r),5121:r=>u.getUint8(r),5122:r=>u.getInt16(r,true),5123:r=>u.getUint16(r,true),5125:r=>u.getUint32(r,true),5126:r=>u.getFloat32(r,true)}[o.componentType]??(()=>0),m=o.normalized?{5120:127,5121:255,5122:32767,5123:65535}[o.componentType]:void 0;for(let r=0;r<o.count;r++)for(let h=0;h<t;h++){const f=a(r*l+h*c);n[r*t+h]=m?Math.max(f/m,-1):f}return n}const ee=()=>new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);function O(e,i){const o=new Float32Array(16);for(let t=0;t<4;t++)for(let n=0;n<4;n++){let s=0;for(let c=0;c<4;c++)s+=e[c*4+n]*i[t*4+c];o[t*4+n]=s}return o}function X([e,i,o],[t,n,s,c],[l,u,a]){const m=t+t,r=n+n,h=s+s,f=t*m,y=t*r,p=t*h,w=n*r,N=n*h,S=s*h,k=c*m,B=c*r,I=c*h;return new Float32Array([(1-(w+S))*l,(y+I)*l,(p-B)*l,0,(y-I)*u,(1-(f+S))*u,(N+k)*u,0,(p+B)*a,(N-k)*a,(1-(f+w))*a,0,e,i,o,1])}const K=e=>X(e,[0,0,0,1],[1,1,1]),Te=e=>X([0,0,0],[0,0,0,1],e);function xe([e,i,o]){const t=(n,s)=>{const c=s*Math.PI/180,l=Math.cos(c),u=Math.sin(c),a=ee(),[m,r]=n===0?[1,2]:n===1?[2,0]:[0,1];return a[m*4+m]=l,a[m*4+r]=u,a[r*4+m]=-u,a[r*4+r]=l,a};return O(t(2,o),O(t(1,i),t(0,e)))}function be(e,i,o,t){const n=1/Math.tan(e/2),s=1/(o-t);return new Float32Array([n/i,0,0,0,0,n,0,0,0,0,(t+o)*s,-1,0,0,2*t*o*s,0])}function ye(e,i){const o=u=>{const a=Math.hypot(...u)||1;return[u[0]/a,u[1]/a,u[2]/a]},t=(u,a)=>[u[1]*a[2]-u[2]*a[1],u[2]*a[0]-u[0]*a[2],u[0]*a[1]-u[1]*a[0]],n=(u,a)=>u[0]*a[0]+u[1]*a[1]+u[2]*a[2],s=o([e[0]-i[0],e[1]-i[1],e[2]-i[2]]),c=o(t([0,1,0],s)),l=t(s,c);return new Float32Array([c[0],l[0],s[0],0,c[1],l[1],s[1],0,c[2],l[2],s[2],0,-n(c,e),-n(l,e),-n(s,e),1])}function Ae(e){const[i,o,t,,n,s,c,,l,u,a]=e,m=s*a-c*u,r=c*l-n*a,h=n*u-s*l,f=i*m+o*r+t*h||1;return new Float32Array([m/f,r/f,h/f,(t*u-o*a)/f,(i*a-t*l)/f,(o*l-i*u)/f,(o*c-t*s)/f,(t*n-i*c)/f,(i*s-o*n)/f])}const Re=()=>({min:[1/0,1/0,1/0],max:[-1/0,-1/0,-1/0]});function _e(e){for(let i=0;i<3;i++){let o=0;for(let t=0;t<3;t++)Math.abs(e[i*4+t])>1e-6&&o++;if(o>1)return false}return true}function Me(e,i,o,t){const n=i.json.accessors[o];let s;if(_e(t)&&n.min&&n.max&&!n.normalized){const[l,u]=[n.min,n.max];s=Array.from({length:8},(a,m)=>[m&1?u[0]:l[0],m&2?u[1]:l[1],m&4?u[2]:l[2]]).flat()}else s=Ee(i,o);const c=t;for(let l=0;l+2<s.length;l+=3){const u=s[l],a=s[l+1],m=s[l+2];for(let r=0;r<3;r++){const h=c[r]*u+c[4+r]*a+c[8+r]*m+c[12+r];h<e.min[r]&&(e.min[r]=h),h>e.max[r]&&(e.max[r]=h)}}return e}const C={normals:1,normalMap:2,unlit:4,mask:8},Y={POSITION:0,NORMAL:1,TEXCOORD_0:2,COLOR_0:3},J=["uBaseTexture","uMetalRoughTexture","uNormalTexture","uOcclusionTexture","uEmissiveTexture"],Ne=`#version 300 es
2
+ layout(location = 0) in vec3 aPosition;
3
+ layout(location = 1) in vec3 aNormal;
4
+ layout(location = 2) in vec2 aUv;
5
+ layout(location = 3) in vec4 aColor;
6
+ uniform mat4 uModel;
7
+ uniform mat4 uViewProjection;
8
+ uniform mat3 uNormalMatrix;
9
+ out vec3 vWorld;
10
+ out vec3 vNormal;
11
+ out vec2 vUv;
12
+ out vec4 vColor;
13
+ void main() {
14
+ vec4 world = uModel * vec4(aPosition, 1.0);
15
+ vWorld = world.xyz;
16
+ vNormal = uNormalMatrix * aNormal;
17
+ vUv = aUv;
18
+ vColor = aColor;
19
+ gl_Position = uViewProjection * world;
20
+ }`,Se=`#version 300 es
21
+ precision highp float;
22
+ in vec3 vWorld;
23
+ in vec3 vNormal;
24
+ in vec2 vUv;
25
+ in vec4 vColor;
26
+ uniform vec3 uCamera;
27
+ uniform vec4 uBaseColor;
28
+ uniform vec3 uSpecular;
29
+ uniform float uMetallic;
30
+ uniform float uRoughness;
31
+ uniform float uNormalScale;
32
+ uniform float uOcclusionStrength;
33
+ uniform vec3 uEmissive;
34
+ uniform float uAlphaCutoff;
35
+ uniform int uFlags;
36
+ uniform sampler2D uBaseTexture;
37
+ uniform sampler2D uMetalRoughTexture;
38
+ uniform sampler2D uNormalTexture;
39
+ uniform sampler2D uOcclusionTexture;
40
+ uniform sampler2D uEmissiveTexture;
41
+ out vec4 outColor;
42
+
43
+ const float PI = 3.14159265;
44
+ const float LAMP = 3.0;
45
+ // The room: a sky and a ground for the light all around, and three lights in it.
46
+ const vec3 SKY = vec3(0.73);
47
+ const vec3 GROUND = vec3(0.58);
48
+ const vec3 LIGHTS[3] = vec3[3](
49
+ normalize(vec3(0.3, 0.7, 0.9)),
50
+ normalize(vec3(-0.8, 0.35, 0.5)),
51
+ normalize(vec3(0.2, 0.4, -1.0))
52
+ );
53
+ const vec3 RADIANCE[3] = vec3[3](vec3(1.2), vec3(0.3), vec3(0.4));
54
+
55
+ vec3 room(vec3 direction) {
56
+ return mix(GROUND, SKY, direction.y * 0.5 + 0.5);
57
+ }
58
+
59
+ // What a surface reflects of the room: its sky and ground, and its lamps, soft panels a
60
+ // glossy surface mirrors and a rough one only glows with.
61
+ const vec3 LAMPS[3] = vec3[3](
62
+ normalize(vec3(0.0, 1.0, 0.3)),
63
+ normalize(vec3(-1.0, 0.5, 0.4)),
64
+ normalize(vec3(1.0, 0.35, -0.3))
65
+ );
66
+ vec3 reflected(vec3 direction, float roughness) {
67
+ vec3 color = room(direction);
68
+ float spread = mix(0.04, 0.9, roughness);
69
+ for (int i = 0; i < 3; i++) {
70
+ float c = dot(direction, LAMPS[i]);
71
+ color += vec3(LAMP) * smoothstep(1.0 - spread, 1.0 - spread * 0.35, c) * (1.0 - 0.85 * roughness);
72
+ }
73
+ return color;
74
+ }
75
+
76
+ // A normal map's normal, in the frame its texture coordinates make (no tangents read).
77
+ vec3 mapped(vec3 n) {
78
+ vec3 tangentNormal = texture(uNormalTexture, vUv).xyz * 2.0 - 1.0;
79
+ tangentNormal.xy *= vec2(uNormalScale, -uNormalScale);
80
+ vec3 dp1 = dFdx(vWorld);
81
+ vec3 dp2 = dFdy(vWorld);
82
+ vec2 duv1 = dFdx(vUv);
83
+ vec2 duv2 = dFdy(vUv);
84
+ vec3 dp2perp = cross(dp2, n);
85
+ vec3 dp1perp = cross(n, dp1);
86
+ vec3 t = dp2perp * duv1.x + dp1perp * duv2.x;
87
+ vec3 b = dp2perp * duv1.y + dp1perp * duv2.y;
88
+ float scale = inversesqrt(max(dot(t, t), dot(b, b)) + 1e-12);
89
+ return normalize(mat3(t * scale, b * scale, n) * tangentNormal);
90
+ }
91
+
92
+ vec3 neutral(vec3 color) {
93
+ const float start = 0.8 - 0.04;
94
+ const float desaturation = 0.15;
95
+ float x = min(color.r, min(color.g, color.b));
96
+ float offset = x < 0.08 ? x - 6.25 * x * x : 0.04;
97
+ color -= offset;
98
+ float peak = max(color.r, max(color.g, color.b));
99
+ if (peak < start) return color;
100
+ float d = 1.0 - start;
101
+ float newPeak = 1.0 - d * d / (peak + d - start);
102
+ color *= newPeak / peak;
103
+ float g = 1.0 - 1.0 / (desaturation * (peak - newPeak) + 1.0);
104
+ return mix(color, vec3(newPeak), g);
105
+ }
106
+
107
+ vec3 srgb(vec3 linear) {
108
+ return mix(
109
+ linear * 12.92,
110
+ 1.055 * pow(linear, vec3(1.0 / 2.4)) - 0.055,
111
+ step(0.0031308, linear)
112
+ );
113
+ }
114
+
115
+ void main() {
116
+ vec4 base = uBaseColor * texture(uBaseTexture, vUv) * vColor;
117
+ if ((uFlags & ${C.mask}) != 0 && base.a < uAlphaCutoff) discard;
118
+ if ((uFlags & ${C.unlit}) != 0) {
119
+ outColor = vec4(srgb(base.rgb) * base.a, base.a);
120
+ return;
121
+ }
122
+ // No normals given: the face's own, as glTF asks.
123
+ vec3 n = (uFlags & ${C.normals}) != 0
124
+ ? normalize(vNormal)
125
+ : normalize(cross(dFdx(vWorld), dFdy(vWorld)));
126
+ if (!gl_FrontFacing) n = -n;
127
+ if ((uFlags & ${C.normalMap}) != 0) n = mapped(n);
128
+ vec3 v = normalize(uCamera - vWorld);
129
+ vec4 metalRough = texture(uMetalRoughTexture, vUv);
130
+ float roughness = clamp(uRoughness * metalRough.g, 0.045, 1.0);
131
+ float metallic = clamp(uMetallic * metalRough.b, 0.0, 1.0);
132
+ vec3 diffuse = base.rgb * (1.0 - metallic);
133
+ vec3 f0 = mix(uSpecular, base.rgb, metallic);
134
+ float a = roughness * roughness;
135
+ float nv = clamp(dot(n, v), 1e-4, 1.0);
136
+ vec3 color = vec3(0.0);
137
+ for (int i = 0; i < 3; i++) {
138
+ vec3 l = LIGHTS[i];
139
+ float nl = clamp(dot(n, l), 0.0, 1.0);
140
+ if (nl <= 0.0) continue;
141
+ vec3 h = normalize(l + v);
142
+ float nh = clamp(dot(n, h), 0.0, 1.0);
143
+ float vh = clamp(dot(v, h), 0.0, 1.0);
144
+ float a2 = a * a;
145
+ float dd = nh * nh * (a2 - 1.0) + 1.0;
146
+ float distribution = a2 / (PI * dd * dd);
147
+ float viewed = nl * sqrt(nv * nv * (1.0 - a2) + a2);
148
+ float lit = nv * sqrt(nl * nl * (1.0 - a2) + a2);
149
+ float visibility = 0.5 / (viewed + lit + 1e-5);
150
+ vec3 fresnel = f0 + (1.0 - f0) * pow(1.0 - vh, 5.0);
151
+ vec3 specular = fresnel * distribution * visibility;
152
+ color += ((1.0 - fresnel) * diffuse + PI * specular) * RADIANCE[i] * nl;
153
+ }
154
+ // The room's light all around: diffuse, and what a rough or smooth surface reflects of it.
155
+ vec4 c0 = vec4(-1.0, -0.0275, -0.572, 0.022);
156
+ vec4 c1 = vec4(1.0, 0.0425, 1.04, -0.04);
157
+ vec4 r = roughness * c0 + c1;
158
+ float a004 = min(r.x * r.x, exp2(-9.28 * nv)) * r.x + r.y;
159
+ vec2 ab = vec2(-1.04, 1.04) * a004 + r.zw;
160
+ float occlusion = mix(1.0, texture(uOcclusionTexture, vUv).r, uOcclusionStrength);
161
+ color += (diffuse * room(n) + (f0 * ab.x + ab.y) * reflected(reflect(-v, n), roughness)) * occlusion;
162
+ color += uEmissive * texture(uEmissiveTexture, vUv).rgb;
163
+ outColor = vec4(srgb(neutral(color)) * base.a, base.a);
164
+ }`,Q=10497,Fe=9729,Ue=new Set([9984,9985,9986,9987]);function Ce(e){const i=e.createProgram();for(const[o,t]of[[e.VERTEX_SHADER,Ne],[e.FRAGMENT_SHADER,Se]]){const n=e.createShader(o);e.shaderSource(n,t),e.compileShader(n),e.attachShader(i,n),e.deleteShader(n)}if(e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))throw new Error(`The 3D view's shaders would not build: ${e.getProgramInfoLog(i)}`);return i}function Pe(e){const i=Ce(e),o=r=>e.getUniformLocation(i,r),t=Object.fromEntries(["uModel","uViewProjection","uNormalMatrix","uCamera","uBaseColor","uSpecular","uMetallic","uRoughness","uNormalScale","uOcclusionStrength","uEmissive","uAlphaCutoff","uFlags",...J].map(r=>[r,o(r)]));e.useProgram(i),J.forEach((r,h)=>e.uniform1i(t[r],h));const n=[],s=[],c=[],l=Re(),u=e.createTexture();e.bindTexture(e.TEXTURE_2D,u),e.texImage2D(e.TEXTURE_2D,0,e.RGBA8,1,1,0,e.RGBA,e.UNSIGNED_BYTE,new Uint8Array([255,255,255,255])),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),s.push(u),e.vertexAttrib4f(Y.COLOR_0,1,1,1,1);function a(r,h){var g;const{json:f}=r,y=new Map,p=new Map,w=new Map,N=(E,T)=>{const d=`${E}|${T}`;let v=y.get(d);if(!v){const b=f.bufferViews[E];v=e.createBuffer(),e.bindBuffer(T,v),e.bufferData(T,new Uint8Array(r.buffers[b.buffer],b.byteOffset??0,b.byteLength),e.STATIC_DRAW),y.set(d,v),n.push(v)}return v},S=(E,T)=>{var U,M;const d=E?(U=f.textures)==null?void 0:U[E.index]:void 0,v=(d==null?void 0:d.source)!==void 0?r.images[d.source]:null;if(!E||!v)return null;const b=`${E.index}|${T}`;let _=p.get(b);if(!_){_=e.createTexture(),e.bindTexture(e.TEXTURE_2D,_),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,e.NONE),e.texImage2D(e.TEXTURE_2D,0,T?e.SRGB8_ALPHA8:e.RGBA8,e.RGBA,e.UNSIGNED_BYTE,v);const x=(d==null?void 0:d.sampler)!==void 0?(M=f.samplers)==null?void 0:M[d.sampler]:void 0,A=(x==null?void 0:x.minFilter)??e.LINEAR_MIPMAP_LINEAR;e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,A),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,(x==null?void 0:x.magFilter)??Fe),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,(x==null?void 0:x.wrapS)??Q),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,(x==null?void 0:x.wrapT)??Q),Ue.has(A)&&e.generateMipmap(e.TEXTURE_2D),p.set(b,_),s.push(_)}return _},k=E=>{var A,L,D,V,R,P;const T=E??-1;let d=w.get(T);if(d)return d;const v=E!==void 0?((A=f.materials)==null?void 0:A[E])??{}:{},b=v.pbrMetallicRoughness??{},_=S(v.normalTexture,false),U=Number(((D=(L=v.extensions)==null?void 0:L.KHR_materials_ior)==null?void 0:D.ior)??1.5),M=(V=v.extensions)==null?void 0:V.KHR_materials_specular,x=((U-1)/(U+1))**2;return d={base:b.baseColorFactor??[1,1,1,1],specular:((M==null?void 0:M.specularColorFactor)??[1,1,1]).map(z=>Math.min(x*z,1)*((M==null?void 0:M.specularFactor)??1)),metallic:b.metallicFactor??1,roughness:b.roughnessFactor??1,normalScale:((R=v.normalTexture)==null?void 0:R.scale)??1,occlusion:v.occlusionTexture?v.occlusionTexture.strength??1:0,emissive:v.emissiveFactor??[0,0,0],cutoff:v.alphaCutoff??.5,flags:(_?C.normalMap:0)|((P=v.extensions)!=null&&P.KHR_materials_unlit?C.unlit:0)|(v.alphaMode==="MASK"?C.mask:0),doubleSided:!!v.doubleSided,blend:v.alphaMode==="BLEND",textures:[S(b.baseColorTexture,true),S(b.metallicRoughnessTexture,false),_,S(v.occlusionTexture,false),S(v.emissiveTexture,true)]},w.set(T,d),d},B=(E,T)=>{var _,U,M,x;const d=(_=f.nodes)==null?void 0:_[E];if(!d)return;const v=O(T,d.matrix?new Float32Array(d.matrix):X(d.translation??[0,0,0],d.rotation??[0,0,0,1],d.scale??[1,1,1])),b=d.mesh!==void 0?(U=f.meshes)==null?void 0:U[d.mesh]:void 0;for(const A of(b==null?void 0:b.primitives)??[]){const L=A.attributes.POSITION;if(L===void 0)continue;const D=e.createVertexArray();e.bindVertexArray(D);let V=0;for(const[W,j]of Object.entries(Y)){const H=A.attributes[W],F=H!==void 0?(M=f.accessors)==null?void 0:M[H]:void 0;if(!F||F.bufferView===void 0||F.sparse)continue;const re=f.bufferViews[F.bufferView];e.bindBuffer(e.ARRAY_BUFFER,N(F.bufferView,e.ARRAY_BUFFER)),e.enableVertexAttribArray(j),e.vertexAttribPointer(j,q(F.type),F.componentType,!!F.normalized,re.byteStride??0,F.byteOffset??0),W==="NORMAL"&&(V|=C.normals)}const R=A.indices!==void 0?(x=f.accessors)==null?void 0:x[A.indices]:void 0;(R==null?void 0:R.bufferView)!==void 0&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,N(R.bufferView,e.ELEMENT_ARRAY_BUFFER)),e.bindVertexArray(null);const P=O(h,v),z=k(A.material);c.push({vao:D,mode:A.mode??e.TRIANGLES,count:R?R.count:f.accessors[L].count,...(R==null?void 0:R.bufferView)!==void 0?{index:{type:R.componentType,offset:R.byteOffset??0}}:{},model:P,normal:Ae(P),mirrored:Oe(P)<0,material:{...z,flags:z.flags|V}}),Me(l,r,L,P)}for(const A of d.children??[])B(A,v)},I=(g=f.scenes)==null?void 0:g[f.scene??0],te=(I==null?void 0:I.nodes)??(f.nodes??[]).map((E,T)=>T).filter(E=>!f.nodes.some(T=>{var d;return(d=T.children)==null?void 0:d.includes(E)})),oe=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);te.forEach(E=>B(E,oe)),c.sort((E,T)=>Number(E.material.blend)-Number(T.material.blend))}function m(r,h,f,y){e.viewport(0,0,f,y),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT),e.enable(e.DEPTH_TEST),e.useProgram(i),e.uniformMatrix4fv(t.uViewProjection,false,r),e.uniform3fv(t.uCamera,h);for(const p of c){const{material:w}=p;w.doubleSided?e.disable(e.CULL_FACE):e.enable(e.CULL_FACE),e.frontFace(p.mirrored?e.CW:e.CCW),w.blend?(e.enable(e.BLEND),e.blendFunc(e.ONE,e.ONE_MINUS_SRC_ALPHA),e.depthMask(false)):(e.disable(e.BLEND),e.depthMask(true)),w.textures.forEach((N,S)=>{e.activeTexture(e.TEXTURE0+S),e.bindTexture(e.TEXTURE_2D,N??u)}),e.uniformMatrix4fv(t.uModel,false,p.model),e.uniformMatrix3fv(t.uNormalMatrix,false,p.normal),e.uniform4fv(t.uBaseColor,w.base),e.uniform3fv(t.uSpecular,w.specular),e.uniform1f(t.uMetallic,w.metallic),e.uniform1f(t.uRoughness,w.roughness),e.uniform1f(t.uNormalScale,w.normalScale),e.uniform1f(t.uOcclusionStrength,w.occlusion),e.uniform3fv(t.uEmissive,w.emissive),e.uniform1f(t.uAlphaCutoff,w.cutoff),e.uniform1i(t.uFlags,w.flags),e.bindVertexArray(p.vao),p.index?e.drawElements(p.mode,p.count,p.index.type,p.index.offset):e.drawArrays(p.mode,0,p.count)}e.bindVertexArray(null),e.depthMask(true)}return{add:a,bounds:()=>c.length?l:null,draw:m,dispose(){c.forEach(r=>e.deleteVertexArray(r.vao)),n.forEach(r=>e.deleteBuffer(r)),s.forEach(r=>e.deleteTexture(r)),e.deleteProgram(i),c.length=0}}}function Oe(e){return e[0]*(e[5]*e[10]-e[6]*e[9])-e[4]*(e[1]*e[10]-e[2]*e[9])+e[8]*(e[1]*e[6]-e[2]*e[5])}const Ie=2;function Le({position:e,transforms:i}){let o=ee();for(const{type:t,x:n,y:s,z:c}of i){const l=t==="scale"?Te([n,s,c]):t==="translate"?K([n,s,c]):xe([n,s,c]);o=O(l,o)}return O(K(e),o)}function Ve(e,{onLost:i}){const o=document.createElement("canvas");o.className="clover-canvas-surface",o.setAttribute("aria-hidden","true"),o.style.cssText="position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none";const t=o.getContext("webgl2",{antialias:true,alpha:true});if(!t)throw new Error("This browser cannot draw 3D: it offers no WebGL2.");const n=a=>{a.preventDefault(),i()};o.addEventListener("webglcontextlost",n),e.prepend(o);const s=Pe(t);let c={center:[0,0,0],radius:1},l=false;const u=()=>{const a=Math.min(globalThis.devicePixelRatio||1,Ie),m=Math.round(e.clientWidth*a),r=Math.round(e.clientHeight*a);!m||!r||(o.width=m,o.height=r)};return u(),{async load(a,m){const r=a.filter(se);if(!r.length){const y=[...new Set(a.map(p=>p.format??p.src))];throw new Error(a.length?`Clover draws glTF models (${ie.join(", ")}), not ${y.join(", ")}.`:"The Scene paints no model.")}const h=await Promise.all(r.map(y=>ve(y.src,m)));if(l)return c;h.forEach((y,p)=>s.add(y,Le(r[p])));const f=s.bounds();if(f){const y=f.min.map((w,N)=>(w+f.max[N])/2),p=Math.hypot(...f.max.map((w,N)=>w-f.min[N]))/2;c={center:y,radius:p||1}}return c},draw(a){if(l||!o.width||!o.height)return;const m=ne(a,c.center),r=Math.max(c.radius/1e3,a.distance-c.radius*2),h=a.distance+c.radius*4,f=be(ae*Math.PI/180,o.width/o.height,r,h);s.draw(O(f,ye(m,c.center)),m,o.width,o.height)},resize:u,dispose(){var a;l||(l=true,o.removeEventListener("webglcontextlost",n),s.dispose(),(a=t.getExtension("WEBGL_lose_context"))==null||a.loseContext(),o.remove())}}}export{Ve as createEngine,Le as placement};
@@ -0,0 +1 @@
1
+ import{j as d,n as m}from"./shared-YUjOSBKO.mjs";function g(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t+"=".repeat((4-t.length%4)%4),i=atob(n);try{return decodeURIComponent(i)}catch{const c=Uint8Array.from(i,r=>r.charCodeAt(0));return new TextDecoder().decode(c)}}function C(e){const t=e.trim();for(const n of[()=>JSON.parse(t),()=>JSON.parse(g(t))])try{const i=n();if(i&&typeof i=="object")return i}catch{}return null}function b(e){if(!e)return;const t=Number(e.split(",")[0]);return Number.isFinite(t)?t:void 0}const u=e=>d(e==null?void 0:e.partOf).find(t=>(t==null?void 0:t.id)&&t.type==="Collection");function A(e){const t=e.type==="Annotation"?d(e.target)[0]:e;if(!t)return null;const n=m(t),i=typeof t=="string"?{id:n.id}:t.type==="SpecificResource"?typeof t.source=="string"?{id:t.source}:t.source??{}:t,c=i.type;if(c==="Manifest"||c==="Collection"){const o=c==="Manifest"?u(i):void 0;return o?{id:o.id,type:"Collection",manifestId:n.id}:{id:n.id,type:c}}const r=d(t.selector).find(o=>(o==null?void 0:o.type)==="PointSelector"&&o.t!=null),a={canvasId:n.id};n.rect&&(a.region=n.rect);const y=(r==null?void 0:r.t)??b(n.t);y!==void 0&&(a.time=Number(y));const s=d(i.partOf).find(o=>(o==null?void 0:o.id)&&(!o.type||o.type==="Manifest")),l=u(s),p=e.type==="Annotation"&&d(e.body).length?{id:e.id??`${n.id}#content-state`,type:"Annotation",motivation:d(e.motivation),body:e.body,target:t}:void 0,f=p?{annotation:p}:{};return l&&s?{id:l.id,type:"Collection",manifestId:s.id,target:a,...f}:s?{id:s.id,type:"Manifest",target:a,...f}:{id:n.id,type:c??"Canvas",target:a,...f}}export{C as decodeContentState,A as resolveContentState};
@@ -0,0 +1 @@
1
+ const n=new Set;function r(t){if(n.has(t))return true;for(;n.size>=6;){let e;for(const i of n)i.hiddenSince!==null&&(!e||i.hiddenSince<e.hiddenSince)&&(e=i);if(!e)return false;n.delete(e),e.release()}return n.add(t),true}function c(t){n.delete(t)}export{r as c,c as r};
@@ -0,0 +1 @@
1
+ import{u as d,A as v,d as y,_ as g,$ as w,k as A}from"./shared-YUjOSBKO.mjs";const E=new Map;function D(o){if(!o||typeof o!="object")return;const s={};for(const[n,r]of Object.entries(o)){if(typeof r!="function")continue;const u=E.get(n)??new WeakMap;E.set(n,u);let c=u.get(r);c||(c=l=>d(x,{...l,name:n,make:r}),u.set(r,c)),s[n]=c}return s}const B=["id","type","aria-label","lang","aria-keyshortcuts","aria-expanded","aria-controls"];function x({name:o,make:s,buttonProps:n,icon:r,label:u,tip:c}){const l=v(null),[m]=y(()=>{const e=document.createElement("span");return e.style.display="contents",e}),[a,k]=y(null),f=v(n.onClick);return f.current=n.onClick,g(()=>{const e=l.current;if(!e)return;const t=s({name:o,label:u,icon:m});if(!(t instanceof HTMLElement)){console.warn(`controlButtons.${o} returned no element; Clover's own is not drawn either.`);return}const i=t.matches("button")?t:t.querySelector("button")??t,b=h=>{var p;return(p=f.current)==null?void 0:p.call(f,h)};return i.addEventListener("click",b),e.after(t),k(i),()=>{i.removeEventListener("click",b),t.remove(),k(null)}},[s]),g(()=>{if(!a)return;const e=n;for(const t of B){const i=e[t];i===void 0?a.removeAttribute(t):a.setAttribute(t,String(i))}}),d(A,{children:[d("span",{ref:l,hidden:true}),w(r,m),a&&w(c,a)]})}export{D as toControlButtons};