@nulib/clover 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Body/Body.mjs +16 -1
- package/dist/components/Body/glyphs.mjs +15 -0
- package/dist/components/Canvas/CanvasView.mjs +116 -12
- package/dist/components/Canvas/ChaptersMenu.mjs +105 -0
- package/dist/components/Canvas/ControlMenu.mjs +23 -4
- package/dist/components/Canvas/Controls.mjs +223 -60
- package/dist/components/Canvas/ControlsFade.mjs +16 -0
- package/dist/components/Canvas/ImageControls.mjs +209 -0
- package/dist/components/Canvas/Placeholder.mjs +44 -12
- package/dist/components/Canvas/RowFits.mjs +85 -0
- package/dist/components/Canvas/layout.mjs +11 -0
- package/dist/components/Canvas/media/MediaBody.mjs +105 -46
- package/dist/components/Canvas/media/Player.mjs +0 -55
- package/dist/components/Canvas/media/Transport.mjs +14 -23
- package/dist/components/Canvas/panClearOfControls.mjs +1 -1
- package/dist/components/Collection/Collection.mjs +1 -1
- package/dist/components/Items/CountMenu.mjs +1 -0
- package/dist/components/Items/Item.mjs +4 -3
- package/dist/components/Items/Items.mjs +30 -10
- package/dist/components/Items/PagerLayout.mjs +2 -0
- package/dist/components/Items/TargetItems.mjs +1 -1
- package/dist/components/Items/masonry.mjs +35 -0
- package/dist/components/Panel/About.mjs +25 -8
- package/dist/components/Root/useRootState.mjs +2 -49
- package/dist/components/Scene/SceneView.mjs +13 -2
- package/dist/components/Scene/cloverEngine.mjs +2 -1
- package/dist/components/Timeline/playerSurface.mjs +2 -0
- package/dist/core/clover.mjs +7 -4
- package/dist/core/content-state.mjs +5 -3
- package/dist/i18n/locales/en.json.mjs +1 -1
- package/dist/i18n/locales/es.json.mjs +1 -1
- package/dist/i18n/locales/fi.json.mjs +1 -1
- package/dist/i18n/locales/fr.json.mjs +1 -1
- package/dist/i18n/locales/nb.json.mjs +1 -1
- package/dist/i18n/locales/nn.json.mjs +1 -1
- package/dist/i18n/locales/no.json.mjs +1 -1
- package/dist/i18n/locales/pt.json.mjs +1 -1
- package/dist/index.d.mts +109 -51
- package/dist/lib/gltf/load.mjs +26 -6
- package/dist/lib/renderer/CanvasRenderer.mjs +44 -32
- package/dist/lib/renderer/camera/Camera.mjs +1 -1
- package/dist/react/useContentStateOutput.mjs +71 -0
- package/dist/styles.css +1 -1
- package/dist/templates/default/Default.mjs +37 -128
- package/dist/templates/document/Document.mjs +41 -64
- package/dist/templates/document/Sheets.mjs +13 -5
- package/dist/templates/gallery/Gallery.mjs +90 -18
- package/dist/templates/index.d.mts +299 -17
- package/dist/templates/shared/Lightbox.mjs +161 -69
- package/dist/templates/shared/LightboxView.mjs +118 -0
- package/dist/templates/shared/PanelPane.mjs +104 -0
- package/dist/templates/{document/DocumentPanel.mjs → shared/PanelPart.mjs} +2 -2
- package/dist/templates/shared/dragToClose.mjs +51 -8
- package/dist/templates/shared/givenAnnotations.mjs +13 -0
- package/dist/templates/shared/useDragToClose.mjs +6 -3
- package/dist/templates/shared/useLazyPanelPane.mjs +16 -0
- package/dist/templates/shared/useSlide.mjs +6 -0
- package/dist/templates.css +1 -1
- package/dist/ui/ControlCluster.mjs +15 -17
- package/dist/ui/Sections.mjs +3 -3
- package/dist/ui/mediaIcons.mjs +35 -8
- package/dist/ui/useScrollTrack.mjs +2 -1
- package/dist/web-components/About-DvyvVUK5.mjs +1 -0
- package/dist/web-components/AnnotationItems-BpRcSrOM.mjs +1 -0
- package/dist/web-components/{AnnotationMenu-BCwwwfbb.mjs → AnnotationMenu-BDPec3iI.mjs} +1 -1
- package/dist/web-components/{AnnotationState-CavxnAAq.mjs → AnnotationState-Chs_37Kk.mjs} +1 -1
- package/dist/web-components/{Annotations-DDjSrBL5.mjs → Annotations-6E-oD_wg.mjs} +1 -1
- package/dist/web-components/{Annotations-rBmeI5sR.mjs → Annotations-CLPEq7Ro.mjs} +1 -1
- package/dist/web-components/Body-Ct61yxI7.mjs +1 -0
- package/dist/web-components/{BodyAlert-COKp19lq.mjs → BodyAlert-C_Qh3Up_.mjs} +1 -1
- package/dist/web-components/{Button-DLFYqtz9.mjs → Button-L8ZMy5lY.mjs} +1 -1
- package/dist/web-components/{Camera-Cp5ma-6C.mjs → Camera-BPyLzZjP.mjs} +1 -1
- package/dist/web-components/{Canvas2DBackend-3PToh87Z.mjs → Canvas2DBackend-8wFavYdl.mjs} +1 -1
- package/dist/web-components/CanvasView-2Fj9nT06.mjs +2 -0
- package/dist/web-components/CaptionDetails-DuwS-grE.mjs +1 -0
- package/dist/web-components/ChaptersMenu-Bj2EqtVJ.mjs +1 -0
- package/dist/web-components/{Chevron-r-_hUPn8.mjs → Chevron-Cyr_cc9X.mjs} +1 -1
- package/dist/web-components/ChoiceMenu-ConzybVH.mjs +1 -0
- package/dist/web-components/Collection-CLayN8sv.mjs +1 -0
- package/dist/web-components/{CollectionSelect-CBWUbqQi.mjs → CollectionSelect-D2d8dGJ4.mjs} +1 -1
- package/dist/web-components/{Connected-B2d6EoFl.mjs → Connected-CBQ6xyhr.mjs} +1 -1
- package/dist/web-components/{Connected-BSRM9FJY.mjs → Connected-DMXG3imZ.mjs} +1 -1
- package/dist/web-components/{Connected-BnpxYeJN.mjs → Connected-pyd0EBD3.mjs} +1 -1
- package/dist/web-components/{Contents-D7FPxSH-.mjs → Contents-tCMXBYDK.mjs} +1 -1
- package/dist/web-components/ControlMenu-D1zkB0qX.mjs +1 -0
- package/dist/web-components/ControlsFade-BNXVTL_Q.mjs +1 -0
- package/dist/web-components/{CountMenu-DyTp_J4k.mjs → CountMenu-Dnzb7lKo.mjs} +1 -1
- package/dist/web-components/Cue-CUGmPS3k.mjs +1 -0
- package/dist/web-components/Document-D-8nalCX.mjs +1 -0
- package/dist/web-components/{DomLayers-CTGub6wo.mjs → DomLayers-BxPU05-D.mjs} +1 -1
- package/dist/web-components/{Download-BOYNIb7C.mjs → Download-Bku9Vptk.mjs} +1 -1
- package/dist/web-components/{EntryBodies-Bfd2Z42z.mjs → EntryBodies-77vDudCb.mjs} +1 -1
- package/dist/web-components/{EntryThumbnail-DQE8ajI9.mjs → EntryThumbnail-BxQWKW6e.mjs} +1 -1
- package/dist/web-components/{FieldPill-D5DNJWLy.mjs → FieldPill-nFGsaru9.mjs} +1 -1
- package/dist/web-components/FrameAnimation-BvKiSXcm.mjs +1 -0
- package/dist/web-components/Gallery-4Hd58afA.mjs +1 -0
- package/dist/web-components/{HideToggle-DL911R1Z.mjs → HideToggle-TEhY4TS4.mjs} +1 -1
- package/dist/web-components/ImageControls-CZO7WoPb.mjs +1 -0
- package/dist/web-components/Items-CudZ4Lnb.mjs +1 -0
- package/dist/web-components/Label-f07N5Fld.mjs +1 -0
- package/dist/web-components/{LanguageChoice-DT1UPiDn.mjs → LanguageChoice-B5VM21DV.mjs} +1 -1
- package/dist/web-components/LightboxView-C4OASmkg.mjs +1 -0
- package/dist/web-components/ListEnd-M39M62Cl.mjs +1 -0
- package/dist/web-components/{Loaded-BWfEBJyg.mjs → Loaded-oGFyBuos.mjs} +1 -1
- package/dist/web-components/LoadedCanvas-IvpSzPO6.mjs +1 -0
- package/dist/web-components/LoadedMap-WATGNLxl.mjs +1 -0
- package/dist/web-components/{Loading-zw74TdAz.mjs → Loading-YxuKrDAM.mjs} +1 -1
- package/dist/web-components/{Map--dJhk0_0.mjs → Map-Cw9j3gi3.mjs} +1 -1
- package/dist/web-components/MapView-3OxoCr5l.mjs +3 -0
- package/dist/web-components/Markup-DW75Jx3j.mjs +2 -0
- package/dist/web-components/MediaBody-CLtd0bf0.mjs +1 -0
- package/dist/web-components/MediaBody-JnKnoIqY.mjs +1 -0
- package/dist/web-components/{NavDate-BQHuyLOC.mjs → NavDate-BCCOyycx.mjs} +1 -1
- package/dist/web-components/{Navigator-B3U21_ti.mjs → Navigator-Bx4zS0Yr.mjs} +1 -1
- package/dist/web-components/{Pager-DnJknq92.mjs → Pager-B9GvQ64b.mjs} +1 -1
- package/dist/web-components/PagerLayout-BF33VZL_.mjs +1 -0
- package/dist/web-components/Panel-BvDpCn6K.mjs +1 -0
- package/dist/web-components/PanelPart-Bd4lSUrP.mjs +1 -0
- package/dist/web-components/{PanelToggle-CFtWIeWv.mjs → PanelToggle-bPcIULGZ.mjs} +1 -1
- package/dist/web-components/{PartOfManifest-F87jIrf9.mjs → PartOfManifest-HLg-r00O.mjs} +1 -1
- package/dist/web-components/{Pending-CYAQajKu.mjs → Pending-BxGjjnqq.mjs} +1 -1
- package/dist/web-components/PlaceBox-D-Zhe9-U.mjs +1 -0
- package/dist/web-components/Placeholder-DzY5hcbk.mjs +1 -0
- package/dist/web-components/{Position-BkWBRBfW.mjs → Position-TYnzcm8e.mjs} +1 -1
- package/dist/web-components/{Primitives-BmODPlnK.mjs → Primitives-C6VJXxZD.mjs} +1 -1
- package/dist/web-components/Provider-DyB0wpeO.mjs +1 -0
- package/dist/web-components/{ReadMore-BwGFsLS2.mjs → ReadMore-De_0T7lc.mjs} +1 -1
- package/dist/web-components/Root-Bt3NNBFb.mjs +1 -0
- package/dist/web-components/Scene-DrOM9YlD.mjs +1 -0
- package/dist/web-components/SceneView-DA7Yg20p.mjs +1 -0
- package/dist/web-components/{Search-CbmK9vLp.mjs → Search-DgT8OPsK.mjs} +1 -1
- package/dist/web-components/{Sections-Dy5_pkyQ.mjs → Sections-d1acn7qm.mjs} +2 -2
- package/dist/web-components/{StandaloneItems-BmUnBp0H.mjs → StandaloneItems-DUb4YKCB.mjs} +1 -1
- package/dist/web-components/{Status-Dww3Pyf4.mjs → Status-CcU3u6P4.mjs} +1 -1
- package/dist/web-components/{Steps-o_UprQfZ.mjs → Steps-nlSCzbDQ.mjs} +1 -1
- package/dist/web-components/{TargetItems-BBOGDubv.mjs → TargetItems-BDJM3Ar-.mjs} +1 -1
- package/dist/web-components/Timeline-BfdN3lIv.mjs +1 -0
- package/dist/web-components/{Tip-BbexILXs.mjs → Tip-OCB88zwY.mjs} +1 -1
- package/dist/web-components/{Transcript-ZVXM3ZDA.mjs → Transcript-bSA3cx_K.mjs} +1 -1
- package/dist/web-components/Transport-DaIhfZqC.mjs +1 -0
- package/dist/web-components/Transport-DjOYI-fR.mjs +1 -0
- package/dist/web-components/{annotation-collection-7SS1ELcO.mjs → annotation-collection-D8emkElk.mjs} +1 -1
- package/dist/web-components/{annotation-name-CYkZopdd.mjs → annotation-name-DbWjhgra.mjs} +1 -1
- package/dist/web-components/{annotations-content-Bdtn50sf.mjs → annotations-content-Bg6aVAGC.mjs} +1 -1
- package/dist/web-components/{body-CkOBHlJ0.mjs → body-Ct8dmQdW.mjs} +1 -1
- package/dist/web-components/canvas-goEZLqEd.mjs +1 -0
- package/dist/web-components/cloverEngine-Df7cMwOP.mjs +164 -0
- package/dist/web-components/{content-state-reader-Ahh6artg.mjs → content-state-reader-CNmBpG1L.mjs} +1 -1
- package/dist/web-components/{controls-BJrZVQkS.mjs → controls-BZr16sYQ.mjs} +1 -1
- package/dist/web-components/custom-elements.json +160 -44
- package/dist/web-components/{downloads-CqVWo-yn.mjs → downloads-EjJ6Hpip.mjs} +1 -1
- package/dist/web-components/dragToClose-X9NbZOhA.mjs +1 -0
- package/dist/web-components/{engine-B-sscpLa.mjs → engine-DMoc0tff.mjs} +1 -1
- package/dist/web-components/{engines-DfCHjbt3.mjs → engines-BmB81VXR.mjs} +1 -1
- package/dist/web-components/es-B1NvdYp-.mjs +1 -0
- package/dist/web-components/{fetchManifest-BIzne1Pj.mjs → fetchManifest-CwQC6cCh.mjs} +1 -1
- package/dist/web-components/fi-BjtYZNLo.mjs +1 -0
- package/dist/web-components/fr-Cd22Lziw.mjs +1 -0
- package/dist/web-components/fromManifest-DrAmY1lB.mjs +1 -0
- package/dist/web-components/glyphs-BFK_hvJJ.mjs +1 -0
- package/dist/web-components/hooks-BhtNDs_1.mjs +1 -0
- package/dist/web-components/image-layers-D2nQC4R-.mjs +1 -0
- package/dist/web-components/{imageService-0eTvQ-3h.mjs → imageService-iFElsopt.mjs} +1 -1
- package/dist/web-components/index-FJEpXukG.mjs +1 -0
- package/dist/web-components/index.d.mts +4 -4
- package/dist/web-components/index.mjs +1 -1
- package/dist/web-components/items-BPPrqbeh.mjs +1 -0
- package/dist/web-components/items-BnEnc5ot.mjs +1 -0
- package/dist/web-components/label-DauFa5sg.mjs +1 -0
- package/dist/web-components/layout-Djwu8f4R.mjs +1 -0
- package/dist/web-components/{link-GEdiEwlR.mjs → link-0lUlTZlw.mjs} +1 -1
- package/dist/web-components/logo-DWPxaZaG.mjs +1 -0
- package/dist/web-components/masonry-0QfzOgbB.mjs +1 -0
- package/dist/web-components/{models-59cEeiAA.mjs → models-BF2pqufA.mjs} +1 -1
- package/dist/web-components/nb-CEwZDBiR.mjs +1 -0
- package/dist/web-components/nn-jYQhr9RI.mjs +1 -0
- package/dist/web-components/no-CEwZDBiR.mjs +1 -0
- package/dist/web-components/{nodes-CTw9OqlA.mjs → nodes-ChQRLDGU.mjs} +1 -1
- package/dist/web-components/{overlayImage-BMt4UTlR.mjs → overlayImage-MKrcgDep.mjs} +1 -1
- package/dist/web-components/panClearOfControls-Cn2ZXsZi.mjs +1 -0
- package/dist/web-components/{panel-C17Rl9Ya.mjs → panel-C13V6w6E.mjs} +1 -1
- package/dist/web-components/part-CekFWrtz.mjs +1 -0
- package/dist/web-components/playerSurface-DG1XipTq.mjs +1 -0
- package/dist/web-components/pointer-YQppt0at.mjs +1 -0
- package/dist/web-components/{provider-BpxorEiq.mjs → provider-DiUkZYiW.mjs} +1 -1
- package/dist/web-components/pt-CWR30SzS.mjs +1 -0
- package/dist/web-components/{range-regions-BGQy4E9U.mjs → range-regions-CqGjyM76.mjs} +1 -1
- package/dist/web-components/{read-more-BDM_6CVc.mjs → read-more-D8RJYdtQ.mjs} +1 -1
- package/dist/web-components/readingLanguages-BWOLZK2k.mjs +1 -0
- package/dist/web-components/rendererSurface-BkbGDL_Z.mjs +22 -0
- package/dist/web-components/{renderers-CiB74bQh.mjs → renderers-LtRX5pT0.mjs} +1 -1
- package/dist/web-components/{resource-CRbpf9pX.mjs → resource-Cfydiy4m.mjs} +1 -1
- package/dist/web-components/{save-file-CCuZEuQr.mjs → save-file-dZyOpXgY.mjs} +1 -1
- package/dist/web-components/search-BfUZJM3a.mjs +1 -0
- package/dist/web-components/shared-DkY2a89G.mjs +1 -0
- package/dist/web-components/{show-link-BXm7SNIC.mjs → show-link-DgLJzG7k.mjs} +1 -1
- package/dist/web-components/{sizedImage-k4Q-eyOB.mjs → sizedImage-NHzhcBYk.mjs} +1 -1
- package/dist/web-components/{split-Hp6z-v4h.mjs → split-CuFiKjin.mjs} +1 -1
- package/dist/web-components/{status-BmtuKfAG.mjs → status-C3etlkhY.mjs} +1 -1
- package/dist/web-components/styles-DkkVOSUQ.mjs +1 -0
- package/dist/web-components/three.mjs +1 -1
- package/dist/web-components/{thumbnail-Dp7a8oom.mjs → thumbnail-DecrVnpj.mjs} +1 -1
- package/dist/web-components/{tip-C-oovDZK.mjs → tip-D5YgaIWW.mjs} +1 -1
- package/dist/web-components/{toggle-C7ODWDEZ.mjs → toggle-CZGB65VZ.mjs} +1 -1
- package/dist/web-components/{useContainerName-CrOmY-km.mjs → useContainerName-hKQjEt7a.mjs} +1 -1
- package/dist/web-components/useControlsVisibility-DPg8uAkW.mjs +1 -0
- package/dist/web-components/useLazyPanelPane-eby-OI1V.mjs +1 -0
- package/dist/web-components/{useNearViewport-BqXi9Gn4.mjs → useNearViewport-CDbHQUBk.mjs} +1 -1
- package/dist/web-components/useScrollTrack-D9l_P3_B.mjs +1 -0
- package/dist/web-components/viewer/AnnotationItems-DtsnDXPM.mjs +1 -0
- package/dist/web-components/viewer/{AnnotationMenu-DPOSehBo.mjs → AnnotationMenu-C-Mz6CCn.mjs} +1 -1
- package/dist/web-components/viewer/AnnotationState-5pim5K72.mjs +1 -0
- package/dist/web-components/viewer/Annotations-Cqn1TkzD.mjs +2 -0
- package/dist/web-components/viewer/Annotations-CxwN9FkB.mjs +1 -0
- package/dist/web-components/viewer/{Canvas2DBackend-BTK6ZJh0.mjs → Canvas2DBackend-C-ZMSCak.mjs} +1 -1
- package/dist/web-components/viewer/CaptionDetails-CRD-gSZP.mjs +1 -0
- package/dist/web-components/viewer/ChaptersMenu-Brcq3yJv.mjs +1 -0
- package/dist/web-components/viewer/{ChoiceMenu-DQ1x572Y.mjs → ChoiceMenu-ByGzQQx1.mjs} +1 -1
- package/dist/web-components/viewer/Collection-m0GCcsfQ.mjs +1 -0
- package/dist/web-components/viewer/Connected-Bmc_CdUD.mjs +1 -0
- package/dist/web-components/viewer/Connected-Dvx7wtot.mjs +1 -0
- package/dist/web-components/viewer/Contents-CwDpfiJY.mjs +1 -0
- package/dist/web-components/viewer/ControlMenu-TcO85hDf.mjs +1 -0
- package/dist/web-components/viewer/ControlsFade-BoZ4ABAE.mjs +1 -0
- package/dist/web-components/viewer/{CountMenu-4u6U6yqb.mjs → CountMenu-0-ie8kIZ.mjs} +1 -1
- package/dist/web-components/viewer/Cue-DxmAS9Gx.mjs +1 -0
- package/dist/web-components/viewer/Document-BsryuYJ1.mjs +1 -0
- package/dist/web-components/viewer/{DomLayers-CGkDtemL.mjs → DomLayers-hc0qARQc.mjs} +1 -1
- package/dist/web-components/viewer/Download-MO-1Rik4.mjs +1 -0
- package/dist/web-components/viewer/EntryBodies-g-OEwEsk.mjs +1 -0
- package/dist/web-components/viewer/EntryThumbnail-DcIDYATi.mjs +1 -0
- package/dist/web-components/viewer/{FieldPill-DFXGWrvB.mjs → FieldPill-B9S21lxw.mjs} +1 -1
- package/dist/web-components/viewer/FrameAnimation-qI9cZPEs.mjs +1 -0
- package/dist/web-components/viewer/Gallery-BOgUqfqw.mjs +1 -0
- package/dist/web-components/viewer/{HideToggle-DP5kHzWM.mjs → HideToggle-D8wH49mq.mjs} +1 -1
- package/dist/web-components/viewer/ImageControls-ZoEC9jWd.mjs +1 -0
- package/dist/web-components/viewer/LanguageChoice-CRqsCBAp.mjs +1 -0
- package/dist/web-components/viewer/LightboxView-BB-GcbYr.mjs +1 -0
- package/dist/web-components/viewer/ListEnd-D9Obxie4.mjs +1 -0
- package/dist/web-components/viewer/{MapView-BN9wXQKV.mjs → MapView-DQSwUzd7.mjs} +2 -2
- package/dist/web-components/viewer/MediaBody-CIw2nTlj.mjs +1 -0
- package/dist/web-components/viewer/MediaBody-D5ff6xy-.mjs +1 -0
- package/dist/web-components/viewer/{NavDate-C2-wwLuB.mjs → NavDate-BnfDG57h.mjs} +1 -1
- package/dist/web-components/viewer/{Navigator-C3jghOd3.mjs → Navigator-BNwjmkXY.mjs} +1 -1
- package/dist/web-components/viewer/PagerLayout-C8jraHqs.mjs +1 -0
- package/dist/web-components/viewer/PanelPart-YNbBI9SQ.mjs +1 -0
- package/dist/web-components/viewer/{PartOfManifest-D22yMgCf.mjs → PartOfManifest-DX7H0V4g.mjs} +1 -1
- package/dist/web-components/viewer/PlaceBox-CCWfzsNU.mjs +1 -0
- package/dist/web-components/viewer/Placeholder-CsEkLhz7.mjs +1 -0
- package/dist/web-components/viewer/Search-CsdYzdq1.mjs +1 -0
- package/dist/web-components/viewer/StandaloneItems-BfvBxbUm.mjs +1 -0
- package/dist/web-components/viewer/{Steps-Bw32X5xO.mjs → Steps-BH8ZApS4.mjs} +1 -1
- package/dist/web-components/viewer/{TargetItems-DLhUH1Gq.mjs → TargetItems-BebPFr-c.mjs} +1 -1
- package/dist/web-components/viewer/Transcript-DXLv5WR9.mjs +1 -0
- package/dist/web-components/viewer/Transport-C-fh7Kx2.mjs +1 -0
- package/dist/web-components/viewer/Transport-CY6BWfMi.mjs +1 -0
- package/dist/web-components/viewer/annotation-collection-Cjd8Dgyl.mjs +1 -0
- package/dist/web-components/viewer/annotation-name-CwmgQFia.mjs +1 -0
- package/dist/web-components/viewer/{annotations-content-CbA3eOIC.mjs → annotations-content-BARXoAz-.mjs} +1 -1
- package/dist/web-components/viewer/cloverEngine-CumnJPKO.mjs +164 -0
- package/dist/web-components/viewer/{content-state-reader-C7UBMOq3.mjs → content-state-reader-DuvyLThu.mjs} +1 -1
- package/dist/web-components/viewer/dragToClose-CFCxhUxn.mjs +1 -0
- package/dist/web-components/viewer/{fetchManifest-C2Yxg3x9.mjs → fetchManifest-qNB_KgxL.mjs} +1 -1
- package/dist/web-components/viewer/{host-CZeyjCKR.mjs → host-GTHX2fPK.mjs} +1 -1
- package/dist/web-components/viewer/image-layers-DKOuaRTj.mjs +1 -0
- package/dist/web-components/viewer/index.mjs +1 -1
- package/dist/web-components/viewer/{link-DssZ0Z2N.mjs → link-BlaM0tCa.mjs} +1 -1
- package/dist/web-components/viewer/overlayImage-RVpv69R5.mjs +1 -0
- package/dist/web-components/viewer/range-regions-CIZiAHOp.mjs +1 -0
- package/dist/web-components/viewer/{renderers-DLoqv3QO.mjs → renderers-Dw1klwlx.mjs} +1 -1
- package/dist/web-components/viewer/{save-file-CJT5p5Hg.mjs → save-file-EvzaBEJN.mjs} +1 -1
- package/dist/web-components/viewer/{search-PhOwMKHi.mjs → search-x1QL_bth.mjs} +1 -1
- package/dist/web-components/viewer/styles-I7_LWFGj.mjs +1 -0
- package/dist/web-components/viewer/useControlsVisibility-C_SQHIVR.mjs +1 -0
- package/dist/web-components/viewer/useLazyPanelPane-UuGDJrf_.mjs +1 -0
- package/dist/web-components/viewer/viewer-DJrQuNs1.mjs +29 -0
- package/dist/web-components/viewer/{vtt-1Pk7Dhsj.mjs → vtt-C2G89SWH.mjs} +1 -1
- package/dist/web-components/viewer-Br44EEba.mjs +1 -0
- package/dist/web-components/{vtt-CacHieeN.mjs → vtt-Dd0c7psH.mjs} +1 -1
- package/package.json +1 -1
- package/dist/templates/shared/LightboxBody.mjs +0 -9
- package/dist/web-components/About-DhOGPFaI.mjs +0 -1
- package/dist/web-components/AnnotationItems-CNP4CJiT.mjs +0 -1
- package/dist/web-components/Body-DaY1UJIy.mjs +0 -1
- package/dist/web-components/BodyUnloadable-DcTM7hHF.mjs +0 -1
- package/dist/web-components/CanvasView-BWQ4SK2b.mjs +0 -2
- package/dist/web-components/CaptionDetails-DSziiuQV.mjs +0 -1
- package/dist/web-components/ChoiceMenu-DTuEEUeM.mjs +0 -1
- package/dist/web-components/Collection-B9swJtPW.mjs +0 -1
- package/dist/web-components/ControlMenu-Crtho2cs.mjs +0 -1
- package/dist/web-components/Cue-CbZaGwZh.mjs +0 -1
- package/dist/web-components/Document-BfltLWZZ.mjs +0 -1
- package/dist/web-components/DocumentPanel-ZSe40cV4.mjs +0 -1
- package/dist/web-components/FrameAnimation-IfR1czfc.mjs +0 -1
- package/dist/web-components/Gallery-DD06BDQo.mjs +0 -1
- package/dist/web-components/Items-BHzT9A73.mjs +0 -1
- package/dist/web-components/Label-KabnxuMN.mjs +0 -1
- package/dist/web-components/LightboxBody-BhRhdXo6.mjs +0 -1
- package/dist/web-components/ListEnd-CbwNlty-.mjs +0 -1
- package/dist/web-components/LoadedCanvas-CdZ5WOWz.mjs +0 -1
- package/dist/web-components/LoadedMap-DQyQVRVQ.mjs +0 -1
- package/dist/web-components/MapView-duA5WGsu.mjs +0 -3
- package/dist/web-components/Markup-D-kioDf9.mjs +0 -2
- package/dist/web-components/MediaBody-CoOiVXcv.mjs +0 -1
- package/dist/web-components/MediaBody-d8ErTuwT.mjs +0 -1
- package/dist/web-components/PagerLayout-CvOmKtSW.mjs +0 -1
- package/dist/web-components/Panel-CIdjOznL.mjs +0 -1
- package/dist/web-components/PlaceBox-BtIbIotm.mjs +0 -1
- package/dist/web-components/Placeholder-TIyj4ZjR.mjs +0 -1
- package/dist/web-components/Provider-C8se8i4I.mjs +0 -1
- package/dist/web-components/Root-CAJB0-Mh.mjs +0 -1
- package/dist/web-components/Scene-Ctcdt7CD.mjs +0 -1
- package/dist/web-components/SceneView-B6bEx_7x.mjs +0 -1
- package/dist/web-components/Timeline-CfIF4APc.mjs +0 -1
- package/dist/web-components/canvas-CWf_Fag8.mjs +0 -1
- package/dist/web-components/cloverEngine-6djEHNCD.mjs +0 -164
- package/dist/web-components/dragToClose-C-Pf1IeO.mjs +0 -1
- package/dist/web-components/es-BYfHUZ7P.mjs +0 -1
- package/dist/web-components/fi-B5y2qr8T.mjs +0 -1
- package/dist/web-components/fr-ChezCx6V.mjs +0 -1
- package/dist/web-components/fromManifest-gg5Wx14y.mjs +0 -1
- package/dist/web-components/glyphs-JYl2STEr.mjs +0 -1
- package/dist/web-components/hooks-x7rO95CS.mjs +0 -1
- package/dist/web-components/image-layers-BjbeyHBS.mjs +0 -1
- package/dist/web-components/index-BZ7b9k0N.mjs +0 -1
- package/dist/web-components/items-CnAIl9fS.mjs +0 -1
- package/dist/web-components/items-F6hJgdAS.mjs +0 -1
- package/dist/web-components/label-CI88KH2_.mjs +0 -1
- package/dist/web-components/layout-De1MOSYe.mjs +0 -1
- package/dist/web-components/logo-Ckwj7FlP.mjs +0 -1
- package/dist/web-components/nb-8J22f9Td.mjs +0 -1
- package/dist/web-components/nn-Dv1EvzI1.mjs +0 -1
- package/dist/web-components/no-8J22f9Td.mjs +0 -1
- package/dist/web-components/panClearOfControls-ac9uf-Qs.mjs +0 -1
- package/dist/web-components/part-CXts97_M.mjs +0 -1
- package/dist/web-components/playerSurface-HYwEwPK6.mjs +0 -1
- package/dist/web-components/pt-DWYQkATt.mjs +0 -1
- package/dist/web-components/readingLanguages-fs_HqvqQ.mjs +0 -1
- package/dist/web-components/rendererSurface-C0aKlE0v.mjs +0 -22
- package/dist/web-components/search-CkM0O0Z1.mjs +0 -1
- package/dist/web-components/shared-MTsMddHx.mjs +0 -1
- package/dist/web-components/styles-CZV1nbBQ.mjs +0 -1
- package/dist/web-components/useScrollTrack-CEsOU2yT.mjs +0 -1
- package/dist/web-components/viewer/AnnotationItems-CyhVcRFc.mjs +0 -1
- package/dist/web-components/viewer/AnnotationState-Bjztkobn.mjs +0 -1
- package/dist/web-components/viewer/Annotations-Dh_8Tzi0.mjs +0 -2
- package/dist/web-components/viewer/Annotations-wwuOCxzI.mjs +0 -1
- package/dist/web-components/viewer/CaptionDetails-BwCTovy_.mjs +0 -1
- package/dist/web-components/viewer/Collection-DSBxCmXw.mjs +0 -1
- package/dist/web-components/viewer/Connected-CL3N8F2J.mjs +0 -1
- package/dist/web-components/viewer/Connected-DTk1jlyI.mjs +0 -1
- package/dist/web-components/viewer/Contents-DrXckx7d.mjs +0 -1
- package/dist/web-components/viewer/ControlMenu-Bp91s-g_.mjs +0 -1
- package/dist/web-components/viewer/Cue-C-aF8peC.mjs +0 -1
- package/dist/web-components/viewer/Document-BN1rICu3.mjs +0 -1
- package/dist/web-components/viewer/DocumentPanel-CEesxdeY.mjs +0 -1
- package/dist/web-components/viewer/Download-CawEl9MN.mjs +0 -1
- package/dist/web-components/viewer/EntryBodies-nYHMwSSM.mjs +0 -1
- package/dist/web-components/viewer/EntryThumbnail-DrO_0SzR.mjs +0 -1
- package/dist/web-components/viewer/FrameAnimation-CZfzpxaD.mjs +0 -1
- package/dist/web-components/viewer/Gallery-MWHtvjti.mjs +0 -1
- package/dist/web-components/viewer/LanguageChoice-C50T7dPI.mjs +0 -1
- package/dist/web-components/viewer/LightboxBody-C2T7IC29.mjs +0 -1
- package/dist/web-components/viewer/ListEnd-BDuOx__m.mjs +0 -1
- package/dist/web-components/viewer/MediaBody-CEyswliX.mjs +0 -1
- package/dist/web-components/viewer/MediaBody-Dw3DWDjc.mjs +0 -1
- package/dist/web-components/viewer/PagerLayout-Cg2NpqoD.mjs +0 -1
- package/dist/web-components/viewer/PlaceBox-Dckw4Sfk.mjs +0 -1
- package/dist/web-components/viewer/Placeholder-NYVWYg5Q.mjs +0 -1
- package/dist/web-components/viewer/Search-DC259m4f.mjs +0 -1
- package/dist/web-components/viewer/StandaloneItems-E4kpMne9.mjs +0 -1
- package/dist/web-components/viewer/Transcript-D_VGJQxn.mjs +0 -1
- package/dist/web-components/viewer/annotation-collection-DZHa18ir.mjs +0 -1
- package/dist/web-components/viewer/annotation-name-BaNdW2Xk.mjs +0 -1
- package/dist/web-components/viewer/cloverEngine-C04bCSFR.mjs +0 -164
- package/dist/web-components/viewer/image-layers-B09fporZ.mjs +0 -1
- package/dist/web-components/viewer/overlayImage-BR3eJCKq.mjs +0 -1
- package/dist/web-components/viewer/range-regions-By6L5JOK.mjs +0 -1
- package/dist/web-components/viewer/styles-NZLnZPAC.mjs +0 -1
- package/dist/web-components/viewer/viewer-D30YHqyF.mjs +0 -29
- package/dist/web-components/viewer-CH7re5OO.mjs +0 -1
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import{c as ne,F as ae,i as se,M as ie}from"./models-BF2pqufA.mjs";import{au as ce,a1 as ue}from"./shared-DkY2a89G.mjs";const le=["KHR_materials_unlit","KHR_materials_ior","KHR_materials_specular","KHR_mesh_quantization"],Z=1179937895,fe=1313821514,de=5130562;function me(e){const s=new DataView(e);if(s.getUint32(0,true)!==Z)throw new Error("This is not a GLB.");if(s.getUint32(4,true)!==2)throw new Error("Only glTF 2.0 is drawn.");let o,t;const n=Math.min(s.getUint32(8,true),e.byteLength);for(let a=12;a+8<=n;){const i=s.getUint32(a,true),l=s.getUint32(a+4,true),c=a+8;l===fe?o=JSON.parse(new TextDecoder().decode(new Uint8Array(e,c,i))):l===de&&(t=e.slice(c,c+i)),a=c+i}if(!o)throw new Error("The GLB has no JSON chunk.");return{json:o,bin:t}}async function z(e,s,o){const t=new URL(e,s).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,s,o){const t=(s==null?void 0:s.fetch)??globalThis.fetch,n=$.get(t)??new Map;$.set(t,n);const a=`${ce(s)} ${o??""} ${e}`;let i=n.get(a);return i||(i=he(e,s,o).finally(()=>n.delete(a)),n.set(a,i)),i}async function he(e,s,o){const t=await z(e,location.href,s),n=new DataView(t).getUint32(0,true)===Z,{json:a,bin:i}=n?me(t):{json:JSON.parse(new TextDecoder().decode(t))},l=(a.extensionsRequired??[]).filter(f=>!le.includes(f));if(l.length)throw new Error(`Clover's renderer cannot draw this model: it requires ${l.join(", ")}.`);const c=await Promise.all((a.buffers??[]).map((f,r)=>{if(f.uri!==void 0)return z(f.uri,e,s);if(r===0&&i)return i;throw new Error("A buffer of the model has no data.")})),u=await Promise.all((a.images??[]).map(async f=>{try{let r;if(f.bufferView!==void 0){const d=a.bufferViews[f.bufferView];r=new Blob([new Uint8Array(c[d.buffer],d.byteOffset??0,d.byteLength)],{type:f.mimeType})}else if(f.uri!==void 0)r=new Blob([await z(f.uri,e,s)],{type:f.mimeType});else return null;const m={premultiplyAlpha:"none",colorSpaceConversion:"none"};return await pe(await createImageBitmap(r,m),o,m)}catch{return null}}));return{json:a,buffers:c,images:u}}async function pe(e,s,o){const t=Math.max(e.width,e.height);if(!s||t<=s)return e;const n=s/t,a=await createImageBitmap(e,{...o,resizeWidth:Math.max(1,Math.floor(e.width*n)),resizeHeight:Math.max(1,Math.floor(e.height*n)),resizeQuality:"high"});return e.close(),a}const we={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Ee={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},q=e=>we[e];function Te(e,s){const o=e.json.accessors[s],t=q(o.type),n=new Float32Array(o.count*t);if(o.bufferView===void 0)return n;const a=e.json.bufferViews[o.bufferView],i=Ee[o.componentType],l=a.byteStride||i*t,c=new DataView(e.buffers[a.buffer],(a.byteOffset??0)+(o.byteOffset??0)),u={5120:r=>c.getInt8(r),5121:r=>c.getUint8(r),5122:r=>c.getInt16(r,true),5123:r=>c.getUint16(r,true),5125:r=>c.getUint32(r,true),5126:r=>c.getFloat32(r,true)}[o.componentType]??(()=>0),f=o.normalized?{5120:127,5121:255,5122:32767,5123:65535}[o.componentType]:void 0;for(let r=0;r<o.count;r++)for(let m=0;m<t;m++){const d=u(r*l+m*i);n[r*t+m]=f?Math.max(d/f,-1):d}return n}const ee=()=>new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);function I(e,s){const o=new Float32Array(16);for(let t=0;t<4;t++)for(let n=0;n<4;n++){let a=0;for(let i=0;i<4;i++)a+=e[i*4+n]*s[t*4+i];o[t*4+n]=a}return o}function X([e,s,o],[t,n,a,i],[l,c,u]){const f=t+t,r=n+n,m=a+a,d=t*f,M=t*r,p=t*m,w=n*r,S=n*m,y=a*m,k=i*f,L=i*r,O=i*m;return new Float32Array([(1-(w+y))*l,(M+O)*l,(p-L)*l,0,(M-O)*c,(1-(d+y))*c,(S+k)*c,0,(p+L)*u,(S-k)*u,(1-(d+w))*u,0,e,s,o,1])}const K=e=>X(e,[0,0,0,1],[1,1,1]),xe=e=>X([0,0,0],[0,0,0,1],e);function be([e,s,o]){const t=(n,a)=>{const i=a*Math.PI/180,l=Math.cos(i),c=Math.sin(i),u=ee(),[f,r]=n===0?[1,2]:n===1?[2,0]:[0,1];return u[f*4+f]=l,u[f*4+r]=c,u[r*4+f]=-c,u[r*4+r]=l,u};return I(t(2,o),I(t(1,s),t(0,e)))}function ye(e,s,o,t){const n=1/Math.tan(e/2),a=1/(o-t);return new Float32Array([n/s,0,0,0,0,n,0,0,0,0,(t+o)*a,-1,0,0,2*t*o*a,0])}function Ae(e,s){const o=c=>{const u=Math.hypot(...c)||1;return[c[0]/u,c[1]/u,c[2]/u]},t=(c,u)=>[c[1]*u[2]-c[2]*u[1],c[2]*u[0]-c[0]*u[2],c[0]*u[1]-c[1]*u[0]],n=(c,u)=>c[0]*u[0]+c[1]*u[1]+c[2]*u[2],a=o([e[0]-s[0],e[1]-s[1],e[2]-s[2]]),i=o(t([0,1,0],a)),l=t(a,i);return new Float32Array([i[0],l[0],a[0],0,i[1],l[1],a[1],0,i[2],l[2],a[2],0,-n(i,e),-n(l,e),-n(a,e),1])}function Re(e){const[s,o,t,,n,a,i,,l,c,u]=e,f=a*u-i*c,r=i*l-n*u,m=n*c-a*l,d=s*f+o*r+t*m||1;return new Float32Array([f/d,r/d,m/d,(t*c-o*u)/d,(s*u-t*l)/d,(o*l-s*c)/d,(o*i-t*a)/d,(t*n-s*i)/d,(s*a-o*n)/d])}const Me=()=>({min:[1/0,1/0,1/0],max:[-1/0,-1/0,-1/0]});function _e(e){for(let s=0;s<3;s++){let o=0;for(let t=0;t<3;t++)Math.abs(e[s*4+t])>1e-6&&o++;if(o>1)return false}return true}function Ne(e,s,o,t){const n=s.json.accessors[o];let a;if(_e(t)&&n.min&&n.max&&!n.normalized){const[l,c]=[n.min,n.max];a=Array.from({length:8},(u,f)=>[f&1?c[0]:l[0],f&2?c[1]:l[1],f&4?c[2]:l[2]]).flat()}else a=Te(s,o);const i=t;for(let l=0;l+2<a.length;l+=3){const c=a[l],u=a[l+1],f=a[l+2];for(let r=0;r<3;r++){const m=i[r]*c+i[4+r]*u+i[8+r]*f+i[12+r];m<e.min[r]&&(e.min[r]=m),m>e.max[r]&&(e.max[r]=m)}}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"],Se=`#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
|
+
}`,Ue=`#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,Ce=new Set([9984,9985,9986,9987]);function Pe(e){const s=e.createProgram();for(const[o,t]of[[e.VERTEX_SHADER,Se],[e.FRAGMENT_SHADER,Ue]]){const n=e.createShader(o);e.shaderSource(n,t),e.compileShader(n),e.attachShader(s,n),e.deleteShader(n)}if(e.linkProgram(s),!e.getProgramParameter(s,e.LINK_STATUS))throw new Error(`The 3D view's shaders would not build: ${e.getProgramInfoLog(s)}`);return s}function Ie(e){const s=Pe(e),o=r=>e.getUniformLocation(s,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(s),J.forEach((r,m)=>e.uniform1i(t[r],m));const n=[],a=[],i=[],l=Me(),c=e.createTexture();e.bindTexture(e.TEXTURE_2D,c),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),a.push(c),e.vertexAttrib4f(Y.COLOR_0,1,1,1,1);function u(r,m){var G;const{json:d}=r,M=new Map,p=new Map,w=new Map,S=(E,T)=>{const v=`${E}|${T}`;let h=M.get(v);if(!h){const b=d.bufferViews[E];h=e.createBuffer(),e.bindBuffer(T,h),e.bufferData(T,new Uint8Array(r.buffers[b.buffer],b.byteOffset??0,b.byteLength),e.STATIC_DRAW),M.set(v,h),n.push(h)}return h},y=(E,T)=>{var F,N;const v=E?(F=d.textures)==null?void 0:F[E.index]:void 0,h=(v==null?void 0:v.source)!==void 0?r.images[v.source]:null;if(!E||!h)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,h);const x=(v==null?void 0:v.sampler)!==void 0?(N=d.samplers)==null?void 0:N[v.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),Ce.has(A)&&e.generateMipmap(e.TEXTURE_2D),p.set(b,_),a.push(_)}return _},k=E=>{var A,B,D,V,R,P;const T=E??-1;let v=w.get(T);if(v)return v;const h=E!==void 0?((A=d.materials)==null?void 0:A[E])??{}:{},b=h.pbrMetallicRoughness??{},_=y(h.normalTexture,false),F=Number(((D=(B=h.extensions)==null?void 0:B.KHR_materials_ior)==null?void 0:D.ior)??1.5),N=(V=h.extensions)==null?void 0:V.KHR_materials_specular,x=((F-1)/(F+1))**2;return v={base:b.baseColorFactor??[1,1,1,1],specular:((N==null?void 0:N.specularColorFactor)??[1,1,1]).map(g=>Math.min(x*g,1)*((N==null?void 0:N.specularFactor)??1)),metallic:b.metallicFactor??1,roughness:b.roughnessFactor??1,normalScale:((R=h.normalTexture)==null?void 0:R.scale)??1,occlusion:h.occlusionTexture?h.occlusionTexture.strength??1:0,emissive:h.emissiveFactor??[0,0,0],cutoff:h.alphaCutoff??.5,flags:(_?C.normalMap:0)|((P=h.extensions)!=null&&P.KHR_materials_unlit?C.unlit:0)|(h.alphaMode==="MASK"?C.mask:0),doubleSided:!!h.doubleSided,blend:h.alphaMode==="BLEND",textures:[y(b.baseColorTexture,true),y(b.metallicRoughnessTexture,false),_,y(h.occlusionTexture,false),y(h.emissiveTexture,true)]},w.set(T,v),v},L=(E,T)=>{var _,F,N,x;const v=(_=d.nodes)==null?void 0:_[E];if(!v)return;const h=I(T,v.matrix?new Float32Array(v.matrix):X(v.translation??[0,0,0],v.rotation??[0,0,0,1],v.scale??[1,1,1])),b=v.mesh!==void 0?(F=d.meshes)==null?void 0:F[v.mesh]:void 0;for(const A of(b==null?void 0:b.primitives)??[]){const B=A.attributes.POSITION;if(B===void 0)continue;const D=e.createVertexArray();e.bindVertexArray(D);let V=0;for(const[W,H]of Object.entries(Y)){const j=A.attributes[W],U=j!==void 0?(N=d.accessors)==null?void 0:N[j]:void 0;if(!U||U.bufferView===void 0||U.sparse)continue;const re=d.bufferViews[U.bufferView];e.bindBuffer(e.ARRAY_BUFFER,S(U.bufferView,e.ARRAY_BUFFER)),e.enableVertexAttribArray(H),e.vertexAttribPointer(H,q(U.type),U.componentType,!!U.normalized,re.byteStride??0,U.byteOffset??0),W==="NORMAL"&&(V|=C.normals)}const R=A.indices!==void 0?(x=d.accessors)==null?void 0:x[A.indices]:void 0;(R==null?void 0:R.bufferView)!==void 0&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,S(R.bufferView,e.ELEMENT_ARRAY_BUFFER)),e.bindVertexArray(null);const P=I(m,h),g=k(A.material);i.push({vao:D,mode:A.mode??e.TRIANGLES,count:R?R.count:d.accessors[B].count,...(R==null?void 0:R.bufferView)!==void 0?{index:{type:R.componentType,offset:R.byteOffset??0}}:{},model:P,normal:Re(P),mirrored:Oe(P)<0,material:{...g,flags:g.flags|V}}),Ne(l,r,B,P)}for(const A of v.children??[])L(A,h)},O=(G=d.scenes)==null?void 0:G[d.scene??0],te=(O==null?void 0:O.nodes)??(d.nodes??[]).map((E,T)=>T).filter(E=>!d.nodes.some(T=>{var v;return(v=T.children)==null?void 0:v.includes(E)})),oe=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);te.forEach(E=>L(E,oe)),i.sort((E,T)=>Number(E.material.blend)-Number(T.material.blend))}function f(r,m,d,M){e.viewport(0,0,d,M),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT),e.enable(e.DEPTH_TEST),e.useProgram(s),e.uniformMatrix4fv(t.uViewProjection,false,r),e.uniform3fv(t.uCamera,m);for(const p of i){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((S,y)=>{e.activeTexture(e.TEXTURE0+y),e.bindTexture(e.TEXTURE_2D,S??c)}),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:u,bounds:()=>i.length?l:null,draw:f,dispose(){i.forEach(r=>e.deleteVertexArray(r.vao)),n.forEach(r=>e.deleteBuffer(r)),a.forEach(r=>e.deleteTexture(r)),e.deleteProgram(s),i.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 Be=2;function Le({position:e,transforms:s}){let o=ee();for(const{type:t,x:n,y:a,z:i}of s){const l=t==="scale"?xe([n,a,i]):t==="translate"?K([n,a,i]):be([n,a,i]);o=I(l,o)}return I(K(e),o)}function ke(e,{onLost:s}){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=u=>{u.preventDefault(),s()};o.addEventListener("webglcontextlost",n),e.prepend(o);const a=Ie(t);let i={center:[0,0,0],radius:1},l=false;const c=()=>{const u=Math.min(globalThis.devicePixelRatio||1,Be),f=Math.round(e.clientWidth*u),r=Math.round(e.clientHeight*u);!f||!r||(o.width=f,o.height=r)};return c(),{async load(u,f){const r=u.filter(se);if(!r.length){const p=[...new Set(u.map(w=>w.format??w.src))];throw new Error(u.length?`Clover draws glTF models (${ie.join(", ")}), not ${p.join(", ")}.`:"The Scene paints no model.")}const m=t.getParameter(t.MAX_TEXTURE_SIZE),d=await Promise.all(r.map(p=>ve(p.src,f,m)));if(l)return i;d.forEach((p,w)=>a.add(p,Le(r[w])));const M=a.bounds();if(M){const p=M.min.map((S,y)=>(S+M.max[y])/2),w=Math.hypot(...M.max.map((S,y)=>S-M.min[y]))/2;i={center:p,radius:w||1}}return i},draw(u){if(l||!o.width||!o.height)return;const f=ne(u,i.center),r=Math.max(i.radius/1e3,u.distance-i.radius*2),m=u.distance+i.radius*4,d=ye(ae*Math.PI/180,o.width/o.height,r,m);a.draw(I(d,Ae(f,i.center)),f,o.width,o.height)},resize:c,dispose(){var u;l||(l=true,o.removeEventListener("webglcontextlost",n),a.dispose(),(u=t.getExtension("WEBGL_lose_context"))==null||u.loseContext(),o.remove())}}}export{ke as createEngine,Le as placement};
|
package/dist/web-components/{content-state-reader-Ahh6artg.mjs → content-state-reader-CNmBpG1L.mjs}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{S as l,a9 as g}from"./shared-DkY2a89G.mjs";function b(t){const e=t.replace(/-/g,"+").replace(/_/g,"/"),n=e+"=".repeat((4-e.length%4)%4),o=atob(n);try{return decodeURIComponent(o)}catch{const a=Uint8Array.from(o,s=>s.charCodeAt(0));return new TextDecoder().decode(a)}}function I(t){const e=t.trim();for(const n of[()=>JSON.parse(e),()=>JSON.parse(b(e))])try{const o=n();if(o&&typeof o=="object")return o}catch{}return null}function v(t){if(!t)return;const e=Number(t.split(",")[0]);return Number.isFinite(e)?e:void 0}const u=t=>l(t==null?void 0:t.partOf).find(e=>(e==null?void 0:e.id)&&e.type==="Collection");function h(t){const e=t.type==="Annotation"?l(t.target):[t],n=e[0]?m(e[0],t):null;if(!n||e.length<2)return n;const o=typeof t.id=="string"?t.id:"content-state",a=e.flatMap((s,d)=>{var y,p,f;const i=d===0?n:m(s,t),r=(i==null?void 0:i.type)==="Manifest"?i.id:i==null?void 0:i.manifestId;return!i||!r?[]:[{id:`${o}#target-${d+1}`,manifestId:r,...((y=i.target)==null?void 0:y.canvasId)&&{canvasId:i.target.canvasId},...((p=i.target)==null?void 0:p.region)&&{region:i.target.region},...((f=i.target)==null?void 0:f.time)!==void 0&&{time:i.target.time}}]});return a.length>1?{...n,targets:{id:o,...t.label&&typeof t.label=="object"?{label:t.label}:{},items:a}}:n}function m(t,e){const n=g(t),o=typeof t=="string"?{id:n.id}:t.type==="SpecificResource"?typeof t.source=="string"?{id:t.source}:t.source??{}:t,a=o.type;if(a==="Manifest"||a==="Collection"){const c=a==="Manifest"?u(o):void 0;return c?{id:c.id,type:"Collection",manifestId:n.id}:{id:n.id,type:a}}const s=l(t.selector).find(c=>(c==null?void 0:c.type)==="PointSelector"&&c.t!=null),d={canvasId:n.id};n.rect&&(d.region=n.rect);const i=(s==null?void 0:s.t)??v(n.t);i!==void 0&&(d.time=Number(i));const r=l(o.partOf).find(c=>(c==null?void 0:c.id)&&(!c.type||c.type==="Manifest")),y=u(r),p=e.type==="Annotation"&&l(e.body).length?{id:e.id??`${n.id}#content-state`,type:"Annotation",motivation:l(e.motivation),body:e.body,target:t}:void 0,f=p?{annotation:p}:{};return y&&r?{id:y.id,type:"Collection",manifestId:r.id,target:d,...f}:r?{id:r.id,type:"Manifest",target:d,...f}:{id:n.id,type:a??"Canvas",target:d,...f}}export{I as decodeContentState,h as resolveContentState};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as d,A as v,d as y,_ as g,$ as w,k as A}from"./shared-
|
|
1
|
+
import{u as d,A as v,d as y,_ as g,$ as w,k as A}from"./shared-DkY2a89G.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};
|