@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.
- package/LICENSE +9 -0
- package/README.md +120 -2
- package/dist/components/Annotations/Annotations.mjs +674 -0
- package/dist/components/Annotations/EntryBodies.mjs +52 -0
- package/dist/components/Annotations/languages.mjs +43 -0
- package/dist/components/Body/Body.mjs +51 -0
- package/dist/components/Body/BodyAlert.mjs +25 -0
- package/dist/components/Body/Caption.mjs +90 -0
- package/dist/components/Body/CaptionDetails.mjs +50 -0
- package/dist/components/Body/Pending.mjs +9 -0
- package/dist/components/Body/glyphs.mjs +66 -0
- package/dist/components/Body/renderers.mjs +30 -0
- package/dist/components/Body/useControlsVisibility.mjs +204 -0
- package/dist/components/Body/useNearViewport.mjs +27 -0
- package/dist/components/Canvas/AnnotationMenu.mjs +128 -0
- package/dist/components/Canvas/AnnotationState.mjs +338 -0
- package/dist/components/Canvas/Annotations.mjs +497 -0
- package/dist/components/Canvas/CanvasView.mjs +669 -0
- package/dist/components/Canvas/ChoiceMenu.mjs +77 -0
- package/dist/components/Canvas/Connected.mjs +228 -0
- package/dist/components/Canvas/ControlMenu.mjs +67 -0
- package/dist/components/Canvas/Controls.mjs +233 -0
- package/dist/components/Canvas/FrameAnimation.mjs +344 -0
- package/dist/components/Canvas/LoadedCanvas.mjs +177 -0
- package/dist/components/Canvas/Placeholder.mjs +105 -0
- package/dist/components/Canvas/fromManifest.mjs +44 -0
- package/dist/components/Canvas/index.mjs +19 -0
- package/dist/components/Canvas/layout.mjs +369 -0
- package/dist/components/Canvas/media/MediaBody.mjs +285 -0
- package/dist/components/Canvas/media/Player.mjs +193 -0
- package/dist/components/Canvas/media/Transport.mjs +511 -0
- package/dist/components/Canvas/media/TransportButton.mjs +39 -0
- package/dist/components/Canvas/media/useBarHeight.mjs +28 -0
- package/dist/components/Canvas/media/useCaptionTracks.mjs +131 -0
- package/dist/components/Canvas/media/useMediaController.mjs +77 -0
- package/dist/components/Canvas/media/useMediaElement.mjs +100 -0
- package/dist/components/Canvas/panClearOfControls.mjs +92 -0
- package/dist/components/Canvas/rendererSurface.mjs +6 -0
- package/dist/components/Canvas/surface.mjs +5 -0
- package/dist/components/Canvas/track.mjs +43 -0
- package/dist/components/Canvas/useSvgReader.mjs +23 -0
- package/dist/components/Collection/Collection.mjs +76 -0
- package/dist/components/CollectionSelect/CollectionSelect.mjs +114 -0
- package/dist/components/Contents/Contents.mjs +120 -0
- package/dist/components/Download/Download.mjs +105 -0
- package/dist/components/Items/Item.mjs +184 -0
- package/dist/components/Items/Items.mjs +455 -0
- package/dist/components/Items/Pager.mjs +190 -0
- package/dist/components/Items/StandaloneItems.mjs +80 -0
- package/dist/components/Items/clamped.mjs +90 -0
- package/dist/components/Label/Label.mjs +39 -0
- package/dist/components/Map/LoadedMap.mjs +26 -0
- package/dist/components/Map/Map.mjs +38 -0
- package/dist/components/Map/MapView.mjs +538 -0
- package/dist/components/Map/basemap.mjs +50 -0
- package/dist/components/Map/overlayImage.mjs +17 -0
- package/dist/components/Panel/About.mjs +143 -0
- package/dist/components/Panel/Panel.mjs +259 -0
- package/dist/components/Panel/PanelToggle.mjs +43 -0
- package/dist/components/Panel/PartOfManifest.mjs +52 -0
- package/dist/components/Primitives/Primitives.mjs +263 -0
- package/dist/components/Primitives/resource.mjs +11 -0
- package/dist/components/Provider/Provider.mjs +174 -0
- package/dist/components/Root/Announcer.mjs +58 -0
- package/dist/components/Root/Root.mjs +29 -0
- package/dist/components/Root/useRootState.mjs +188 -0
- package/dist/components/Scene/Connected.mjs +48 -0
- package/dist/components/Scene/Loaded.mjs +56 -0
- package/dist/components/Scene/RotatePad.mjs +204 -0
- package/dist/components/Scene/Scene.mjs +20 -0
- package/dist/components/Scene/SceneView.mjs +539 -0
- package/dist/components/Scene/cloverEngine.mjs +105 -0
- package/dist/components/Scene/engine.mjs +141 -0
- package/dist/components/Scene/engines.mjs +23 -0
- package/dist/components/Scene/gestures.mjs +74 -0
- package/dist/components/Scene/models.mjs +78 -0
- package/dist/components/Scene/orbit.mjs +60 -0
- package/dist/components/Search/Search.mjs +246 -0
- package/dist/components/Split/Split.mjs +203 -0
- package/dist/components/Split/splitting.mjs +203 -0
- package/dist/components/Status/Status.mjs +47 -0
- package/dist/components/Timeline/Connected.mjs +25 -0
- package/dist/components/Timeline/Timeline.mjs +40 -0
- package/dist/components/Timeline/playerSurface.mjs +84 -0
- package/dist/components/Transcript/Transcript.mjs +377 -0
- package/dist/components/Viewer/Viewer.mjs +19 -0
- package/dist/core/annotation-bodies.mjs +29 -0
- package/dist/core/annotation-collection.mjs +55 -0
- package/dist/core/annotation-name.mjs +31 -0
- package/dist/core/annotation-sets.mjs +155 -0
- package/dist/core/annotations-content.mjs +27 -0
- package/dist/core/annotations.mjs +73 -0
- package/dist/core/clover.mjs +393 -0
- package/dist/core/content-state-reader.mjs +82 -0
- package/dist/core/content-state.mjs +43 -0
- package/dist/core/direction.mjs +12 -0
- package/dist/core/geo-detect.mjs +30 -0
- package/dist/core/geo.mjs +283 -0
- package/dist/core/items.mjs +74 -0
- package/dist/core/keep-fragments.mjs +40 -0
- package/dist/core/link.mjs +28 -0
- package/dist/core/load.mjs +176 -0
- package/dist/core/map-config.mjs +12 -0
- package/dist/core/markdown.mjs +139 -0
- package/dist/core/pages.mjs +51 -0
- package/dist/core/painted-bodies.mjs +20 -0
- package/dist/core/painting.mjs +17 -0
- package/dist/core/presentation.mjs +27 -0
- package/dist/core/ranges.mjs +133 -0
- package/dist/core/region.mjs +32 -0
- package/dist/core/request.mjs +40 -0
- package/dist/core/sanitize.mjs +72 -0
- package/dist/core/search-service.mjs +22 -0
- package/dist/core/search.mjs +154 -0
- package/dist/core/selectors.mjs +94 -0
- package/dist/core/sequence.mjs +70 -0
- package/dist/core/show-link.mjs +16 -0
- package/dist/core/store.mjs +40 -0
- package/dist/core/svg-shape.mjs +183 -0
- package/dist/core/text.mjs +36 -0
- package/dist/core/thumbnail.mjs +55 -0
- package/dist/core/value.mjs +39 -0
- package/dist/core/vtt.mjs +111 -0
- package/dist/hooks/useFullscreen.mjs +21 -0
- package/dist/hooks/useFullscreenSupported.mjs +11 -0
- package/dist/hooks/useLoaded.mjs +27 -0
- package/dist/hooks/useWithinFullscreen.mjs +24 -0
- package/dist/i18n/config.mjs +170 -0
- package/dist/i18n/hostLanguage.mjs +6 -0
- package/dist/i18n/locales/en.json.mjs +5 -0
- package/dist/i18n/locales/es.json.mjs +5 -0
- package/dist/i18n/locales/fi.json.mjs +5 -0
- package/dist/i18n/locales/fr.json.mjs +5 -0
- package/dist/i18n/locales/index.mjs +13 -0
- package/dist/i18n/locales/nb.json.mjs +5 -0
- package/dist/i18n/locales/nn.json.mjs +5 -0
- package/dist/i18n/locales/no.json.mjs +5 -0
- package/dist/i18n/locales/pt.json.mjs +5 -0
- package/dist/i18n/reader.mjs +13 -0
- package/dist/i18n/useCloverTranslation.mjs +28 -0
- package/dist/index.d.mts +2204 -0
- package/dist/index.mjs +133 -0
- package/dist/lib/asArray.mjs +5 -0
- package/dist/lib/classnames.mjs +5 -0
- package/dist/lib/fullscreen.mjs +65 -0
- package/dist/lib/gltf/bounds.mjs +44 -0
- package/dist/lib/gltf/load.mjs +156 -0
- package/dist/lib/gltf/mat4.mjs +150 -0
- package/dist/lib/gltf/renderer.mjs +342 -0
- package/dist/lib/gltf/shaders.mjs +192 -0
- package/dist/lib/hls.mjs +6 -0
- package/dist/lib/pointer.mjs +38 -0
- package/dist/lib/renderer/CanvasRenderer.mjs +857 -0
- package/dist/lib/renderer/backends/backend.mjs +21 -0
- package/dist/lib/renderer/backends/canvas2d/Canvas2DBackend.mjs +91 -0
- package/dist/lib/renderer/backends/contexts.mjs +27 -0
- package/dist/lib/renderer/backends/dom/DomLayers.mjs +91 -0
- package/dist/lib/renderer/backends/webgl2/WebGL2Backend.mjs +248 -0
- package/dist/lib/renderer/backends/webgl2/shaders.mjs +28 -0
- package/dist/lib/renderer/camera/Camera.mjs +64 -0
- package/dist/lib/renderer/camera/CameraAnimator.mjs +90 -0
- package/dist/lib/renderer/input/GestureController.mjs +252 -0
- package/dist/lib/renderer/io/TileCache.mjs +207 -0
- package/dist/lib/renderer/io/decode.mjs +156 -0
- package/dist/lib/renderer/loop/FrameLoop.mjs +50 -0
- package/dist/lib/renderer/math/affine.mjs +68 -0
- package/dist/lib/renderer/math/rect.mjs +45 -0
- package/dist/lib/renderer/overlays/Navigator.mjs +141 -0
- package/dist/lib/renderer/overlays/OverlayLayer.mjs +94 -0
- package/dist/lib/renderer/scene/planFrame.mjs +168 -0
- package/dist/lib/renderer/scene/regions.mjs +30 -0
- package/dist/lib/renderer/scene/sceneItem.mjs +114 -0
- package/dist/lib/renderer/scene/uploadBudget.mjs +30 -0
- package/dist/lib/renderer/sources/imageService.mjs +160 -0
- package/dist/lib/renderer/sources/sizedImage.mjs +38 -0
- package/dist/lib/renderer/sources/tilePyramid.mjs +172 -0
- package/dist/lib/time.mjs +21 -0
- package/dist/map/index.d.mts +184 -0
- package/dist/map/index.mjs +16 -0
- package/dist/react/context.mjs +46 -0
- package/dist/react/hooks.mjs +69 -0
- package/dist/react/language.mjs +30 -0
- package/dist/styles.css +1 -0
- package/dist/templates/default/Default.mjs +229 -0
- package/dist/templates/document/Document.mjs +286 -0
- package/dist/templates/document/DocumentPanel.mjs +9 -0
- package/dist/templates/document/Sheets.mjs +360 -0
- package/dist/templates/gallery/Gallery.mjs +62 -0
- package/dist/templates/index.d.mts +273 -0
- package/dist/templates/index.mjs +11 -0
- package/dist/templates/shared/Lightbox.mjs +111 -0
- package/dist/templates/shared/LightboxBody.mjs +9 -0
- package/dist/templates/shared/dragToClose.mjs +129 -0
- package/dist/templates/shared/useDragToClose.mjs +35 -0
- package/dist/templates/shared/useDrawer.mjs +113 -0
- package/dist/templates/shared/useFollowFocus.mjs +24 -0
- package/dist/templates/shared/useSlide.mjs +52 -0
- package/dist/templates/shared/useSpine.mjs +26 -0
- package/dist/templates.css +1 -0
- package/dist/three/index.d.mts +6 -0
- package/dist/three/index.mjs +8 -0
- package/dist/ui/Button.mjs +53 -0
- package/dist/ui/ControlCluster.mjs +87 -0
- package/dist/ui/Cue.mjs +13 -0
- package/dist/ui/ErrorBoundary.mjs +26 -0
- package/dist/ui/ExitFullscreen.mjs +46 -0
- package/dist/ui/FieldPill.mjs +153 -0
- package/dist/ui/HideToggle.mjs +57 -0
- package/dist/ui/Loading.mjs +20 -0
- package/dist/ui/Markup.mjs +95 -0
- package/dist/ui/ReadMore.mjs +84 -0
- package/dist/ui/Sections.mjs +448 -0
- package/dist/ui/Steps.mjs +84 -0
- package/dist/ui/Tip.mjs +196 -0
- package/dist/ui/bringIntoView.mjs +27 -0
- package/dist/ui/controlGlyphs.mjs +120 -0
- package/dist/ui/heading.mjs +19 -0
- package/dist/ui/languageCode.mjs +8 -0
- package/dist/ui/mediaIcons.mjs +104 -0
- package/dist/ui/useClusterReach.mjs +50 -0
- package/dist/ui/useContainerName.mjs +19 -0
- package/dist/ui/useOneOpen.mjs +22 -0
- package/dist/ui/useRovingFocus.mjs +64 -0
- package/dist/ui/useScrollTrack.mjs +150 -0
- package/dist/ui/useUniqueId.mjs +10 -0
- package/dist/ui/visuallyHidden.mjs +15 -0
- package/dist/web-components/About-uKa1wfDr.mjs +1 -0
- package/dist/web-components/AnnotationMenu-BGIYRXW6.mjs +1 -0
- package/dist/web-components/AnnotationState-D2UIgIEC.mjs +1 -0
- package/dist/web-components/Annotations-BhwAv3ah.mjs +1 -0
- package/dist/web-components/Annotations-C_tBJHo3.mjs +2 -0
- package/dist/web-components/Body-DMEERFuB.mjs +1 -0
- package/dist/web-components/BodyAlert-BP8voSLv.mjs +1 -0
- package/dist/web-components/Button-Cl02BFDd.mjs +1 -0
- package/dist/web-components/Camera-Dw51CAfF.mjs +1 -0
- package/dist/web-components/Canvas2DBackend-RRN2bEkc.mjs +1 -0
- package/dist/web-components/CanvasView-B8lMMSou.mjs +1 -0
- package/dist/web-components/CaptionDetails-KLMDv-ec.mjs +1 -0
- package/dist/web-components/ChoiceMenu-CXrVOmJl.mjs +1 -0
- package/dist/web-components/Collection-DL4Ui4hF.mjs +1 -0
- package/dist/web-components/CollectionSelect-DL-bbpwJ.mjs +1 -0
- package/dist/web-components/Connected-B0S1HXQb.mjs +1 -0
- package/dist/web-components/Connected-BcjRA5si.mjs +1 -0
- package/dist/web-components/Connected-Q7iizBb8.mjs +1 -0
- package/dist/web-components/Contents-ZC8TiGaW.mjs +1 -0
- package/dist/web-components/ControlMenu-DIoU797-.mjs +1 -0
- package/dist/web-components/Cue-CJxnDMEy.mjs +1 -0
- package/dist/web-components/Document-DHBRAFEK.mjs +1 -0
- package/dist/web-components/DocumentPanel-CqvE2pu9.mjs +1 -0
- package/dist/web-components/DomLayers-BsR2AOy-.mjs +1 -0
- package/dist/web-components/Download-DBksL1C0.mjs +1 -0
- package/dist/web-components/EntryBodies-VwEkTVrw.mjs +1 -0
- package/dist/web-components/ErrorBoundary-Cy9PGoZv.mjs +1 -0
- package/dist/web-components/FieldPill-DCJBz6Vj.mjs +1 -0
- package/dist/web-components/FrameAnimation-DRbmgGpF.mjs +1 -0
- package/dist/web-components/Gallery-BM7-VJkB.mjs +1 -0
- package/dist/web-components/HideToggle-BdYgG7us.mjs +1 -0
- package/dist/web-components/Items-_1Jz3FMs.mjs +1 -0
- package/dist/web-components/Label-CAiJ49eA.mjs +1 -0
- package/dist/web-components/LightboxBody-DyhUZiDf.mjs +1 -0
- package/dist/web-components/Loaded-wQurAeJz.mjs +1 -0
- package/dist/web-components/LoadedCanvas-DWz5IK5m.mjs +1 -0
- package/dist/web-components/LoadedMap-DIeW313M.mjs +1 -0
- package/dist/web-components/Loading-BmA--pzr.mjs +1 -0
- package/dist/web-components/Map-DzVGblIS.mjs +1 -0
- package/dist/web-components/MapView-BJaN7VBI.mjs +1 -0
- package/dist/web-components/Markup-D91DbxLk.mjs +2 -0
- package/dist/web-components/MediaBody-BYcVPo2X.mjs +1 -0
- package/dist/web-components/MediaBody-FEzH8VVw.mjs +1 -0
- package/dist/web-components/Navigator-CIJFA3q1.mjs +1 -0
- package/dist/web-components/Pager-BGwCurxE.mjs +1 -0
- package/dist/web-components/Panel-B-GXOkzF.mjs +1 -0
- package/dist/web-components/PanelToggle-BYjV2t1j.mjs +1 -0
- package/dist/web-components/PartOfManifest-ClbGepVM.mjs +1 -0
- package/dist/web-components/Pending-BspZajh5.mjs +1 -0
- package/dist/web-components/Primitives-CTh59wvs.mjs +1 -0
- package/dist/web-components/Provider-C6rIiDXH.mjs +1 -0
- package/dist/web-components/ReadMore-BJ2i-0uN.mjs +1 -0
- package/dist/web-components/Root-DkkYDtur.mjs +1 -0
- package/dist/web-components/Scene-B_PU_TiX.mjs +1 -0
- package/dist/web-components/SceneView-qcW_sT3j.mjs +1 -0
- package/dist/web-components/Search-UOneIUcP.mjs +1 -0
- package/dist/web-components/Sections-we9U9fXq.mjs +2 -0
- package/dist/web-components/StandaloneItems-DU8oCFc_.mjs +1 -0
- package/dist/web-components/Status-Cs5ZvFvL.mjs +1 -0
- package/dist/web-components/Timeline-WtYZ1bIJ.mjs +1 -0
- package/dist/web-components/Tip-C8J3qsIK.mjs +1 -0
- package/dist/web-components/Transcript-CRL2zToL.mjs +1 -0
- package/dist/web-components/annotation-collection-ZPyvpLFc.mjs +1 -0
- package/dist/web-components/annotations-content-BZChKhJZ.mjs +1 -0
- package/dist/web-components/assets/maplibre-gl-worker-kTz9OPxr.js +13831 -0
- package/dist/web-components/body-UntgrmoV.mjs +1 -0
- package/dist/web-components/bringIntoView-CQH5ZgMM.mjs +1 -0
- package/dist/web-components/canvas-d_U4v_mh.mjs +1 -0
- package/dist/web-components/classnames-DukgfdpI.mjs +1 -0
- package/dist/web-components/cloverEngine-Dbv-26NP.mjs +164 -0
- package/dist/web-components/content-state-reader-DjdKWjit.mjs +1 -0
- package/dist/web-components/contexts-ByL3eA_T.mjs +1 -0
- package/dist/web-components/controls-qRYf2jO2.mjs +1 -0
- package/dist/web-components/custom-elements.json +2739 -0
- package/dist/web-components/dragToClose-C-Pf1IeO.mjs +1 -0
- package/dist/web-components/engine-D8JLgzqq.mjs +4228 -0
- package/dist/web-components/engines-BwVb9R_A.mjs +1 -0
- package/dist/web-components/es-BwMkoRod.mjs +1 -0
- package/dist/web-components/fi-gPFOn9RK.mjs +1 -0
- package/dist/web-components/fr-DUHmgdJo.mjs +1 -0
- package/dist/web-components/fromManifest-UrMJgktp.mjs +1 -0
- package/dist/web-components/glyphs-BoX0a88P.mjs +1 -0
- package/dist/web-components/heading-Cjt0f-Eu.mjs +1 -0
- package/dist/web-components/hls-CdKrthkC.mjs +40 -0
- package/dist/web-components/hooks-Dp8pjU8l.mjs +1 -0
- package/dist/web-components/imageService-C3yg9DxB.mjs +1 -0
- package/dist/web-components/index-DWxMuwDL.mjs +1 -0
- package/dist/web-components/index.d.mts +604 -0
- package/dist/web-components/index.mjs +1 -0
- package/dist/web-components/index.umd.js +18 -0
- package/dist/web-components/items--Tu7ZM3L.mjs +1 -0
- package/dist/web-components/items-W2vrwArM.mjs +1 -0
- package/dist/web-components/keep-fragments-B5nlv2ck.mjs +1 -0
- package/dist/web-components/label-CYQ7tVl6.mjs +1 -0
- package/dist/web-components/languageCode-cCpiU0b0.mjs +1 -0
- package/dist/web-components/layout-KL0V-iJu.mjs +1 -0
- package/dist/web-components/link-DRRTY4lY.mjs +1 -0
- package/dist/web-components/logo-CnQUCB3Y.mjs +1 -0
- package/dist/web-components/maplibre-gl-CQ4OueXY.mjs +823 -0
- package/dist/web-components/markdown-CCYJwzFn.mjs +5 -0
- package/dist/web-components/models-BP2qp9nT.mjs +1 -0
- package/dist/web-components/nb-BSvnQ6jd.mjs +1 -0
- package/dist/web-components/nn-Dg2_HdZu.mjs +1 -0
- package/dist/web-components/no-BSvnQ6jd.mjs +1 -0
- package/dist/web-components/nodes-Bf-Fb7e5.mjs +1 -0
- package/dist/web-components/overlayImage-DdPs2EGY.mjs +1 -0
- package/dist/web-components/panClearOfControls-ac9uf-Qs.mjs +1 -0
- package/dist/web-components/panel-CiqEFDzv.mjs +1 -0
- package/dist/web-components/part-CUBY90_b.mjs +1 -0
- package/dist/web-components/playerSurface-i2TJz-F4.mjs +1 -0
- package/dist/web-components/provider-LUmAQSoP.mjs +1 -0
- package/dist/web-components/pt-B3J80JgO.mjs +1 -0
- package/dist/web-components/read-more-BaaO77el.mjs +1 -0
- package/dist/web-components/rendererSurface-DAvatpMF.mjs +22 -0
- package/dist/web-components/renderers-Bg4QqawN.mjs +1 -0
- package/dist/web-components/resource-DzIvB_4m.mjs +1 -0
- package/dist/web-components/sanitize-Dc7nOsgO.mjs +3 -0
- package/dist/web-components/search-DgcgsI3I.mjs +1 -0
- package/dist/web-components/shared-J3w3gnXD.mjs +1 -0
- package/dist/web-components/show-link-DWRRXSBy.mjs +1 -0
- package/dist/web-components/sizedImage-DfjlV2-i.mjs +1 -0
- package/dist/web-components/split-m-_XivaW.mjs +1 -0
- package/dist/web-components/splitting-BnQUxxgH.mjs +1 -0
- package/dist/web-components/status-DDS7jLNd.mjs +1 -0
- package/dist/web-components/styles-Ypl9KrSK.mjs +1 -0
- package/dist/web-components/svg-shape-DLY3g7oq.mjs +1 -0
- package/dist/web-components/text-BTAkxEfQ.mjs +5 -0
- package/dist/web-components/three.mjs +1 -0
- package/dist/web-components/thumbnail-BZvLSwWW.mjs +1 -0
- package/dist/web-components/time-B9GZoYcm.mjs +1 -0
- package/dist/web-components/tip-BXByhOJ9.mjs +1 -0
- package/dist/web-components/toggle-AS72kq6v.mjs +1 -0
- package/dist/web-components/upgrader-XNxI-5jo.mjs +1 -0
- package/dist/web-components/useContainerName-DCbE5JXi.mjs +1 -0
- package/dist/web-components/useNearViewport-CyoK3l8W.mjs +1 -0
- package/dist/web-components/useScrollTrack-dLFWnT8N.mjs +1 -0
- package/dist/web-components/viewer/AnnotationMenu-Dd4tnzNV.mjs +1 -0
- package/dist/web-components/viewer/AnnotationState-DZaSy5lH.mjs +1 -0
- package/dist/web-components/viewer/Annotations-D1h-Yi5J.mjs +1 -0
- package/dist/web-components/viewer/Annotations-sj79EMen.mjs +2 -0
- package/dist/web-components/viewer/Canvas2DBackend-CkvI0wUT.mjs +1 -0
- package/dist/web-components/viewer/CaptionDetails-B_JdNjJ7.mjs +1 -0
- package/dist/web-components/viewer/ChoiceMenu-xa51a1DV.mjs +1 -0
- package/dist/web-components/viewer/Collection-CxuLCspj.mjs +1 -0
- package/dist/web-components/viewer/Connected-BSUBc3Ci.mjs +1 -0
- package/dist/web-components/viewer/Connected-CPIxNjF2.mjs +1 -0
- package/dist/web-components/viewer/Contents-DNh9mnsF.mjs +1 -0
- package/dist/web-components/viewer/ControlMenu-DdgIvBdf.mjs +1 -0
- package/dist/web-components/viewer/Cue-90H9_dXz.mjs +1 -0
- package/dist/web-components/viewer/Document-CNCpzkiN.mjs +1 -0
- package/dist/web-components/viewer/DocumentPanel-BdG4TVLE.mjs +1 -0
- package/dist/web-components/viewer/DomLayers-Dybz_aJv.mjs +1 -0
- package/dist/web-components/viewer/EntryBodies-DGXjFP3N.mjs +1 -0
- package/dist/web-components/viewer/FieldPill-Icmd98OY.mjs +1 -0
- package/dist/web-components/viewer/FrameAnimation-DJZN3Rd4.mjs +1 -0
- package/dist/web-components/viewer/Gallery-CEp3-bh2.mjs +1 -0
- package/dist/web-components/viewer/HideToggle-DB6HTmAO.mjs +1 -0
- package/dist/web-components/viewer/LightboxBody-ClQ4yrTh.mjs +1 -0
- package/dist/web-components/viewer/MapView-BVSdybIC.mjs +1 -0
- package/dist/web-components/viewer/MediaBody-BBbSMT1i.mjs +1 -0
- package/dist/web-components/viewer/MediaBody-BzMXMHIF.mjs +1 -0
- package/dist/web-components/viewer/Navigator-Duc69Yes.mjs +1 -0
- package/dist/web-components/viewer/PartOfManifest-X9_q-2t6.mjs +1 -0
- package/dist/web-components/viewer/Search-S4N5QU4R.mjs +1 -0
- package/dist/web-components/viewer/StandaloneItems-BO4VyWRW.mjs +1 -0
- package/dist/web-components/viewer/Transcript-BbDaS064.mjs +1 -0
- package/dist/web-components/viewer/annotation-collection-BjZ1DAHq.mjs +1 -0
- package/dist/web-components/viewer/annotations-content-jn3n5Y2-.mjs +1 -0
- package/dist/web-components/viewer/cloverEngine-CjuYjUhI.mjs +164 -0
- package/dist/web-components/viewer/content-state-reader-CPiShIjP.mjs +1 -0
- package/dist/web-components/viewer/host-yWi4R1bP.mjs +1 -0
- package/dist/web-components/viewer/index.d.mts +7 -0
- package/dist/web-components/viewer/index.mjs +1 -0
- package/dist/web-components/viewer/index.umd.js +18 -0
- package/dist/web-components/viewer/link-CwE-fg5G.mjs +1 -0
- package/dist/web-components/viewer/overlayImage-BpOgqsZ0.mjs +1 -0
- package/dist/web-components/viewer/renderers-L-IlGI1r.mjs +1 -0
- package/dist/web-components/viewer/search-DWkwRPo_.mjs +1 -0
- package/dist/web-components/viewer/styles-BRCkEU3w.mjs +1 -0
- package/dist/web-components/viewer/viewer--TreVlJ_.mjs +28 -0
- package/dist/web-components/viewer/vtt-1ZJwtElI.mjs +5 -0
- package/dist/web-components/viewer-DyV864Qe.mjs +1 -0
- package/dist/web-components/vtt-GFssZH8Y.mjs +5 -0
- package/package.json +110 -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-J3w3gnXD.mjs";import{B as y}from"./Body-DMEERFuB.mjs";import{u as L,P as b}from"./nodes-Bf-Fb7e5.mjs";import{Toggle as h}from"./toggle-AS72kq6v.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-J3w3gnXD.mjs";import{C as b}from"./CanvasView-B8lMMSou.mjs";import{r as s}from"./rendererSurface-DAvatpMF.mjs";import{C as c}from"./Pending-BspZajh5.mjs";const B=i(()=>import("./Connected-B0S1HXQb.mjs")),h=i(()=>import("./LoadedCanvas-DWz5IK5m.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-BP2qp9nT.mjs";import{ad as ce,a1 as ue}from"./shared-J3w3gnXD.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-J3w3gnXD.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-J3w3gnXD.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};
|