@nulib/clover 4.4.1 → 4.5.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/README.md +4 -3
- package/dist/components/Annotations/Annotations.mjs +11 -5
- package/dist/components/Body/Caption.mjs +1 -1
- package/dist/components/Canvas/AnnotationMenu.mjs +16 -2
- package/dist/components/Canvas/AnnotationState.mjs +27 -23
- package/dist/components/Canvas/ControlMenu.mjs +9 -0
- package/dist/components/Canvas/PlaceBox.mjs +8 -0
- package/dist/components/Canvas/media/Transport.mjs +32 -18
- package/dist/components/Items/CountMenu.mjs +13 -1
- package/dist/components/Items/Items.mjs +24 -7
- package/dist/components/Items/PagerLayout.mjs +1 -0
- package/dist/components/Map/MapView.mjs +31 -19
- package/dist/components/Panel/About.mjs +16 -5
- package/dist/components/Panel/AboutActions.mjs +10 -16
- package/dist/components/Panel/LanguageToggle.mjs +69 -0
- package/dist/components/Panel/Panel.mjs +9 -1
- package/dist/components/Panel/ReadingLanguages.mjs +2 -16
- package/dist/components/Panel/sections.mjs +6 -1
- package/dist/components/Root/useRootState.mjs +43 -4
- package/dist/components/Search/Search.mjs +10 -7
- package/dist/components/Transcript/Transcript.mjs +42 -33
- package/dist/core/image-service-content.mjs +108 -0
- package/dist/core/load.mjs +38 -1
- package/dist/core/value.mjs +1 -1
- package/dist/i18n/config.mjs +88 -14
- package/dist/i18n/direction.mjs +2 -2
- package/dist/i18n/languages.mjs +42 -8
- package/dist/i18n/locales/index.mjs +4 -1
- package/dist/i18n/locales/ja.json.mjs +5 -0
- package/dist/i18n/locales/zh-Hans.json.mjs +5 -0
- package/dist/i18n/locales/zh-Hant.json.mjs +5 -0
- package/dist/index.d.mts +109 -24
- package/dist/lib/renderer/CanvasRenderer.mjs +20 -5
- package/dist/map/index.d.mts +3 -2
- package/dist/react/readingLanguages.mjs +15 -2
- package/dist/styles/core.css +1 -1
- package/dist/styles/default.css +1 -1
- package/dist/styles/items.css +1 -1
- package/dist/styles/map.css +1 -1
- package/dist/styles/media.css +1 -1
- package/dist/styles/panel.css +1 -1
- package/dist/styles.css +1 -1
- package/dist/templates/default/Default.mjs +3 -0
- package/dist/templates/document/Document.mjs +6 -1
- package/dist/templates/gallery/Gallery.mjs +2 -0
- package/dist/templates/index.d.mts +56 -11
- package/dist/templates/shared/LightboxView.mjs +3 -0
- package/dist/templates/shared/useDrawer.mjs +14 -2
- package/dist/ui/ErrorBoundary.mjs +19 -5
- package/dist/ui/FieldPill.mjs +2 -0
- package/dist/ui/GlobeGlyph.mjs +26 -0
- package/dist/ui/LanguageChoice.mjs +87 -20
- package/dist/ui/LanguageMenu.mjs +94 -0
- package/dist/ui/Sections.mjs +18 -5
- package/dist/ui/Tip.mjs +4 -2
- package/dist/ui/sheets/map.mjs +1 -1
- package/dist/ui/sheets/media.mjs +1 -1
- package/dist/ui/useScrollTrack.mjs +34 -19
- package/dist/web-components/About-BklM8JA9.mjs +1 -0
- package/dist/web-components/AnnotationItems-4mbvOrhN.mjs +1 -0
- package/dist/web-components/AnnotationMenu-DtMaxXf5.mjs +1 -0
- package/dist/web-components/AnnotationState-BuEpq99k.mjs +1 -0
- package/dist/web-components/Annotations-Dyg-RAdd.mjs +2 -0
- package/dist/web-components/{Annotations-oXpa3fvs.mjs → Annotations-oPabBO7j.mjs} +1 -1
- package/dist/web-components/{Body-BNLhtQi3.mjs → Body-CD7AtOPv.mjs} +1 -1
- package/dist/web-components/{BodyAlert-B0AblEtp.mjs → BodyAlert-DzW4__bK.mjs} +1 -1
- package/dist/web-components/{Button-0dU8Owcz.mjs → Button-1To2Pwuz.mjs} +1 -1
- package/dist/web-components/{Camera-BS8iIH74.mjs → Camera-B82ZMekU.mjs} +1 -1
- package/dist/web-components/{Canvas2DBackend-U4BLi8EN.mjs → Canvas2DBackend-Ds-qoQ0W.mjs} +1 -1
- package/dist/web-components/CanvasView-B4fnYim4.mjs +2 -0
- package/dist/web-components/{CaptionDetails-CtRzBSwh.mjs → CaptionDetails-TTAEPH02.mjs} +1 -1
- package/dist/web-components/{ChaptersMenu-DJRfJSwC.mjs → ChaptersMenu-DhbAktrS.mjs} +1 -1
- package/dist/web-components/{Chevron-BJFhP5wm.mjs → Chevron-Br3zRRMX.mjs} +1 -1
- package/dist/web-components/{ChoiceMenu-Cfjnk3NG.mjs → ChoiceMenu-B4_doj7b.mjs} +1 -1
- package/dist/web-components/{Collection-C2ji8AVd.mjs → Collection-DrMfq53r.mjs} +1 -1
- package/dist/web-components/{CollectionSelect-CSTSqjG3.mjs → CollectionSelect-PP7IEcwu.mjs} +1 -1
- package/dist/web-components/{Connected-B42WdjMx.mjs → Connected-BOPNEv3j.mjs} +1 -1
- package/dist/web-components/{Connected-D2y_qBDh.mjs → Connected-BguZSgy4.mjs} +1 -1
- package/dist/web-components/{Connected-C-Ars8eC.mjs → Connected-CN94wOYw.mjs} +1 -1
- package/dist/web-components/{Contents-BLbU9Qvc.mjs → Contents-Dn7MutL9.mjs} +1 -1
- package/dist/web-components/ControlMenu-DlP3JsqV.mjs +1 -0
- package/dist/web-components/ControlsFade-Cuh5Mqe7.mjs +1 -0
- package/dist/web-components/CountMenu-Aoott7Hu.mjs +1 -0
- package/dist/web-components/Cue-BAj92VWz.mjs +1 -0
- package/dist/web-components/Document-BjTWX_7P.mjs +1 -0
- package/dist/web-components/{DomLayers-DDRNVemT.mjs → DomLayers-GnBlZ7yI.mjs} +1 -1
- package/dist/web-components/{Download-VPFf23Kw.mjs → Download-C1RNBLdn.mjs} +1 -1
- package/dist/web-components/{EntryBodies-CKgmBQCk.mjs → EntryBodies-BG4F8uub.mjs} +1 -1
- package/dist/web-components/{EntryThumbnail-CgukpUtr.mjs → EntryThumbnail-BJPQwkQw.mjs} +1 -1
- package/dist/web-components/FieldPill-CgMPW9BB.mjs +1 -0
- package/dist/web-components/{FrameAnimation-C2EFrQl0.mjs → FrameAnimation-DWd0yBuN.mjs} +1 -1
- package/dist/web-components/Gallery-DpJqgaft.mjs +1 -0
- package/dist/web-components/GlobeGlyph-CLM28n1E.mjs +1 -0
- package/dist/web-components/{HideToggle-HVrk9D6t.mjs → HideToggle-C4mW4-CK.mjs} +1 -1
- package/dist/web-components/{ImageControls-BsGWsB_S.mjs → ImageControls-B36Hng03.mjs} +1 -1
- package/dist/web-components/Items-BApzELFW.mjs +1 -0
- package/dist/web-components/Label-CRTQApU-.mjs +1 -0
- package/dist/web-components/LanguageChoice-B1941Wuu.mjs +1 -0
- package/dist/web-components/LanguageMenu-yWDzK3U0.mjs +1 -0
- package/dist/web-components/LightboxView-BLHI5EIj.mjs +1 -0
- package/dist/web-components/{ListEnd-BPSaqeEg.mjs → ListEnd-CIiLZZzc.mjs} +1 -1
- package/dist/web-components/{Loaded-vg9q9y73.mjs → Loaded-X_Pr53fq.mjs} +1 -1
- package/dist/web-components/{LoadedCanvas-BtNg_QnI.mjs → LoadedCanvas-1Bi6-QtF.mjs} +1 -1
- package/dist/web-components/LoadedMap-58bpxj_6.mjs +1 -0
- package/dist/web-components/{Loading-DnCFXiNy.mjs → Loading-CyoVEwax.mjs} +1 -1
- package/dist/web-components/{Map-CIGzy4XB.mjs → Map-2oeDIJzq.mjs} +1 -1
- package/dist/web-components/MapView-DX3ZLqmp.mjs +3 -0
- package/dist/web-components/{Markup-Csh1bNkq.mjs → Markup-B2GbrisO.mjs} +1 -1
- package/dist/web-components/{MediaBody-CRJFBpMk.mjs → MediaBody-DZ9JgkKF.mjs} +1 -1
- package/dist/web-components/{MediaBody-CeEWPIDp.mjs → MediaBody-eFAZIyGv.mjs} +1 -1
- package/dist/web-components/{NavDate-qoFXy3Ou.mjs → NavDate-BwV4kPl-.mjs} +1 -1
- package/dist/web-components/{Navigator-9n2yLQdc.mjs → Navigator-CTrfNuwj.mjs} +1 -1
- package/dist/web-components/{Pager-4rZjWBna.mjs → Pager-BGjj90LQ.mjs} +1 -1
- package/dist/web-components/PagerLayout-Ce7zW_yB.mjs +1 -0
- package/dist/web-components/Panel-77xi6y2C.mjs +1 -0
- package/dist/web-components/PanelPart-Cm9VykIu.mjs +1 -0
- package/dist/web-components/{PanelToggle-0K2YTp6k.mjs → PanelToggle-Cj_FjIgS.mjs} +1 -1
- package/dist/web-components/{PartOfManifest-ZUGZW86B.mjs → PartOfManifest-B0RwR4iy.mjs} +1 -1
- package/dist/web-components/{Pending-lpHOVvqE.mjs → Pending-s7yYnZzR.mjs} +1 -1
- package/dist/web-components/PlaceBox-pt7Vmrs1.mjs +1 -0
- package/dist/web-components/{Placeholder-ChFeaw7a.mjs → Placeholder-BK-eqSCl.mjs} +1 -1
- package/dist/web-components/{Position-C2Hm7tJZ.mjs → Position-CKsSKMgZ.mjs} +1 -1
- package/dist/web-components/Primitives-T7usOLie.mjs +1 -0
- package/dist/web-components/Provider-B2k1G-E0.mjs +1 -0
- package/dist/web-components/{ReadMore-DsthjUIZ.mjs → ReadMore-Cs2t9xkI.mjs} +1 -1
- package/dist/web-components/Root-D942bSXu.mjs +1 -0
- package/dist/web-components/Scene-Cwzisn4E.mjs +1 -0
- package/dist/web-components/SceneView-_CNm8cGL.mjs +1 -0
- package/dist/web-components/Search-u43mfzT8.mjs +1 -0
- package/dist/web-components/Sections-CPU5bGvk.mjs +2 -0
- package/dist/web-components/{SeekMarks-DNHLgUaX.mjs → SeekMarks-CnqVS-ym.mjs} +1 -1
- package/dist/web-components/StandaloneItems-D9Og9pdI.mjs +1 -0
- package/dist/web-components/{Status-DLZANUzF.mjs → Status-Cxev3WuC.mjs} +1 -1
- package/dist/web-components/{Steps-BigQvWNW.mjs → Steps-l7_NsIBr.mjs} +1 -1
- package/dist/web-components/{TargetItems-DzNzoEeh.mjs → TargetItems-nP3Oa9hh.mjs} +1 -1
- package/dist/web-components/Timeline-C1g1MXp5.mjs +1 -0
- package/dist/web-components/{Tip-CoSRaKjm.mjs → Tip-D2pR3HW4.mjs} +1 -1
- package/dist/web-components/Transcript-D_a9jio-.mjs +1 -0
- package/dist/web-components/Transport-CowDRPK7.mjs +1 -0
- package/dist/web-components/Transport-uqpqUIKE.mjs +1 -0
- package/dist/web-components/{annotation-collection-DwJ2R8tG.mjs → annotation-collection-d6JyHnML.mjs} +1 -1
- package/dist/web-components/{annotation-name-2rUtUYsN.mjs → annotation-name-BWTrB9nK.mjs} +1 -1
- package/dist/web-components/{annotations-content-fTNYRgN_.mjs → annotations-content-Bomfao_5.mjs} +1 -1
- package/dist/web-components/{body-qFClz6nF.mjs → body-Dfn0GJa2.mjs} +1 -1
- package/dist/web-components/{canvas-DqmG6v1g.mjs → canvas-DHIn2DIV.mjs} +1 -1
- package/dist/web-components/{cloverEngine-BBfVDNbE.mjs → cloverEngine-DDVOcZTv.mjs} +1 -1
- package/dist/web-components/{content-state-reader-DYXL5lFa.mjs → content-state-reader-CyNkhTZY.mjs} +1 -1
- package/dist/web-components/{controlGlyphs-DqZmaT9n.mjs → controlGlyphs-Dymy1PkA.mjs} +1 -1
- package/dist/web-components/{controls-BvC6zo32.mjs → controls-CIkf2UoE.mjs} +1 -1
- package/dist/web-components/custom-elements.json +35 -3
- package/dist/web-components/downloads-DCsDCcA8.mjs +1 -0
- package/dist/web-components/{dragToClose-wFiErDub.mjs → dragToClose-BKcu5guw.mjs} +1 -1
- package/dist/web-components/{engine-B0W3FXuQ.mjs → engine-BhdQsvOB.mjs} +1 -1
- package/dist/web-components/{engines-DVRUnyFv.mjs → engines-pnfVMoUH.mjs} +1 -1
- package/dist/web-components/{fetchManifest-f8gYlPDK.mjs → fetchManifest-QmVIeaHo.mjs} +1 -1
- package/dist/web-components/{fromManifest-BmpOsc5g.mjs → fromManifest-CvXwGGRI.mjs} +1 -1
- package/dist/web-components/{glyphs-oAgi4Au0.mjs → glyphs-BAh9Lia0.mjs} +1 -1
- package/dist/web-components/hooks-CTqjdpYl.mjs +1 -0
- package/dist/web-components/{image-layers-CndzdWOW.mjs → image-layers-Dp2qOSA5.mjs} +1 -1
- package/dist/web-components/image-service-content-B5ICMeIO.mjs +1 -0
- package/dist/web-components/{imageService-DTp1mc0F.mjs → imageService-XKWMYAcG.mjs} +1 -1
- package/dist/web-components/index-BuoWCrun.mjs +1 -0
- package/dist/web-components/index.mjs +1 -1
- package/dist/web-components/items-8ZEJCxWU.mjs +1 -0
- package/dist/web-components/items-DjpIYUxD.mjs +1 -0
- package/dist/web-components/ja-Cg1enUhM.mjs +1 -0
- package/dist/web-components/label-BWHRHAY2.mjs +1 -0
- package/dist/web-components/layout-B3HyDCsP.mjs +1 -0
- package/dist/web-components/{link-CEfxl5hU.mjs → link-Mnt5GrKM.mjs} +1 -1
- package/dist/web-components/logo-YR9jXUE4.mjs +1 -0
- package/dist/web-components/{models-B-kri8Ov.mjs → models-NfaX6B8u.mjs} +1 -1
- package/dist/web-components/{nodes-BKoxD-el.mjs → nodes-CRrc5Svn.mjs} +1 -1
- package/dist/web-components/{overlayImage-Dp8CjA_L.mjs → overlayImage-D7Knsh4X.mjs} +1 -1
- package/dist/web-components/{panel-ldBDfuIV.mjs → panel-DUMFdAc8.mjs} +1 -1
- package/dist/web-components/part-C_V28rvN.mjs +1 -0
- package/dist/web-components/{playerSurface-CLWTmyt1.mjs → playerSurface-CF5g-4Po.mjs} +1 -1
- package/dist/web-components/pointer-PJLHbbSD.mjs +1 -0
- package/dist/web-components/{provider-D24Pm3a1.mjs → provider-b4id5kCa.mjs} +1 -1
- package/dist/web-components/{range-regions-9vY5ikPm.mjs → range-regions-DCY76ydS.mjs} +1 -1
- package/dist/web-components/{read-more-CoOeWZOF.mjs → read-more-UM90-AEc.mjs} +1 -1
- package/dist/web-components/readingLanguages-Qdn21-7Q.mjs +1 -0
- package/dist/web-components/rendererSurface-PZlq-wa_.mjs +22 -0
- package/dist/web-components/{renderers-BXcv_AqV.mjs → renderers-DIHonXTq.mjs} +1 -1
- package/dist/web-components/resource-BlU2Ese6.mjs +1 -0
- package/dist/web-components/{save-file-Dj3MRR7Y.mjs → save-file-GI0ekTmd.mjs} +1 -1
- package/dist/web-components/{search-C9OyY1qk.mjs → search-CHjjiXkB.mjs} +1 -1
- package/dist/web-components/shared-DgJ0bXca.mjs +1 -0
- package/dist/web-components/{show-link-4mlfdoeo.mjs → show-link-BlLkTYtm.mjs} +1 -1
- package/dist/web-components/{sizedImage-COfCkv_8.mjs → sizedImage-BoGT1x5n.mjs} +1 -1
- package/dist/web-components/{split-Ci426kxC.mjs → split-OO6-WiG3.mjs} +1 -1
- package/dist/web-components/{status-CzasXLV8.mjs → status-CSenPCO4.mjs} +1 -1
- package/dist/web-components/styles-Bvw9LFU7.mjs +1 -0
- package/dist/web-components/three.mjs +1 -1
- package/dist/web-components/{thumbnail-ByuoouMG.mjs → thumbnail-DYJHCrW_.mjs} +1 -1
- package/dist/web-components/{tip-CQEGLOst.mjs → tip-Dr1mfd4o.mjs} +1 -1
- package/dist/web-components/{toggle-Dro_EmUU.mjs → toggle-86lqpaU9.mjs} +1 -1
- package/dist/web-components/{useContainerName-CUP-TlA5.mjs → useContainerName-BfNL6p3O.mjs} +1 -1
- package/dist/web-components/{useControlsVisibility-DeI3NHWp.mjs → useControlsVisibility-C3LCnrb7.mjs} +1 -1
- package/dist/web-components/useNearViewport-Dk5q1rzk.mjs +1 -0
- package/dist/web-components/useScrollTrack-B_yYmQDS.mjs +1 -0
- package/dist/web-components/viewer/{AnnotationItems-ByWBkMRd.mjs → AnnotationItems-BbPnS9EE.mjs} +1 -1
- package/dist/web-components/viewer/AnnotationMenu-BGv-HimF.mjs +1 -0
- package/dist/web-components/viewer/AnnotationState-uRm7bEwg.mjs +1 -0
- package/dist/web-components/viewer/{Annotations-CJRF_IwO.mjs → Annotations-_2PMmUfu.mjs} +1 -1
- package/dist/web-components/viewer/Annotations-reaO1ILe.mjs +2 -0
- package/dist/web-components/viewer/{Canvas2DBackend-DPDF0a8D.mjs → Canvas2DBackend-Dru1ImJh.mjs} +1 -1
- package/dist/web-components/viewer/CaptionDetails-3OlEaKmX.mjs +1 -0
- package/dist/web-components/viewer/{ChaptersMenu-D7b9t6bm.mjs → ChaptersMenu-kchuXDZy.mjs} +1 -1
- package/dist/web-components/viewer/{ChoiceMenu-f2774ZaY.mjs → ChoiceMenu-C8pEoSC6.mjs} +1 -1
- package/dist/web-components/viewer/{Collection-D1E6A8es.mjs → Collection-B4LN_80C.mjs} +1 -1
- package/dist/web-components/viewer/{Connected-BLeqNIOf.mjs → Connected-80hCJuhg.mjs} +1 -1
- package/dist/web-components/viewer/{Connected-DfqFYcTn.mjs → Connected-CzPY2rgu.mjs} +1 -1
- package/dist/web-components/viewer/{Contents-DvmP8OGy.mjs → Contents-D4jw_lGe.mjs} +1 -1
- package/dist/web-components/viewer/ControlMenu-C3Jh10iR.mjs +1 -0
- package/dist/web-components/viewer/ControlsFade-BKkJ95B5.mjs +1 -0
- package/dist/web-components/viewer/CountMenu-Blz1oHgs.mjs +1 -0
- package/dist/web-components/viewer/Cue-BnC9XuZp.mjs +1 -0
- package/dist/web-components/viewer/Document-BG0F97nL.mjs +1 -0
- package/dist/web-components/viewer/{DomLayers-CD56oMcR.mjs → DomLayers-BL6vNcmI.mjs} +1 -1
- package/dist/web-components/viewer/{Download-DAOzY3Nu.mjs → Download-B0BD_SzR.mjs} +1 -1
- package/dist/web-components/viewer/{EntryBodies-0A0uyEwC.mjs → EntryBodies-Cbmr-Eg4.mjs} +1 -1
- package/dist/web-components/viewer/{EntryThumbnail-fBaBZJGd.mjs → EntryThumbnail-DAdEyIuL.mjs} +1 -1
- package/dist/web-components/viewer/FieldPill-DNL96sDW.mjs +1 -0
- package/dist/web-components/viewer/{FrameAnimation-kba5V4Vk.mjs → FrameAnimation-BO3QVSUw.mjs} +1 -1
- package/dist/web-components/viewer/Gallery-DN7ajF4i.mjs +1 -0
- package/dist/web-components/viewer/GlobeGlyph-B-Wd0AkW.mjs +1 -0
- package/dist/web-components/viewer/{HideToggle-D8c_7URN.mjs → HideToggle-DH0u1wFC.mjs} +1 -1
- package/dist/web-components/viewer/{ImageControls-C_C0LSj7.mjs → ImageControls-Lz-ESk1X.mjs} +1 -1
- package/dist/web-components/viewer/LanguageChoice-BkQkSsPE.mjs +1 -0
- package/dist/web-components/viewer/LanguageMenu-gIJHQiBc.mjs +1 -0
- package/dist/web-components/viewer/LightboxView-D066VR5m.mjs +1 -0
- package/dist/web-components/viewer/{ListEnd-B2hnHrcl.mjs → ListEnd-D4nNouKZ.mjs} +1 -1
- package/dist/web-components/viewer/{MapView-Cr3RiB1K.mjs → MapView-C_8iciAK.mjs} +3 -3
- package/dist/web-components/viewer/{MediaBody-4ZFKNnr3.mjs → MediaBody-BgBDbfHg.mjs} +1 -1
- package/dist/web-components/viewer/{MediaBody-xjpo27Vw.mjs → MediaBody-D4hiLqhm.mjs} +1 -1
- package/dist/web-components/viewer/{NavDate-Dz5eW2XY.mjs → NavDate-BMVT6UwB.mjs} +1 -1
- package/dist/web-components/viewer/{Navigator-DNZcaADs.mjs → Navigator-DbBBbDZn.mjs} +1 -1
- package/dist/web-components/viewer/PagerLayout-D771pC5E.mjs +1 -0
- package/dist/web-components/viewer/PanelPart-2H7jd6PS.mjs +1 -0
- package/dist/web-components/viewer/{PartOfManifest-BHpVLJOn.mjs → PartOfManifest-BMaH_tsn.mjs} +1 -1
- package/dist/web-components/viewer/PlaceBox-OytRM9_s.mjs +1 -0
- package/dist/web-components/viewer/{Placeholder-CLITKdu6.mjs → Placeholder-BWuq47Sw.mjs} +1 -1
- package/dist/web-components/viewer/Search-Bmz7mUbA.mjs +1 -0
- package/dist/web-components/viewer/{SeekMarks-B8cuyVgz.mjs → SeekMarks-CAsMUj2N.mjs} +1 -1
- package/dist/web-components/viewer/{StandaloneItems-Cu0aBqAo.mjs → StandaloneItems-BCHhR9sF.mjs} +1 -1
- package/dist/web-components/viewer/{Steps-DqszSHcR.mjs → Steps-BDT2W9QN.mjs} +1 -1
- package/dist/web-components/viewer/{TargetItems-DN8ebfbK.mjs → TargetItems-CkZbD8GE.mjs} +1 -1
- package/dist/web-components/viewer/Transcript-BbFXEJSc.mjs +1 -0
- package/dist/web-components/viewer/Transport-CI5UkA3K.mjs +1 -0
- package/dist/web-components/viewer/Transport-PgBpf33S.mjs +1 -0
- package/dist/web-components/viewer/{annotation-collection-Drwfws4R.mjs → annotation-collection-l4zuf56A.mjs} +1 -1
- package/dist/web-components/viewer/{annotation-name-Bp2GHdpi.mjs → annotation-name-CRl0w7NR.mjs} +1 -1
- package/dist/web-components/viewer/annotations-content-CYjPRTZn.mjs +1 -0
- package/dist/web-components/viewer/{cloverEngine-BmUppb5Y.mjs → cloverEngine-2b_guC4P.mjs} +2 -2
- package/dist/web-components/viewer/{content-state-reader-B9u1vc3t.mjs → content-state-reader-Cm-rvusT.mjs} +1 -1
- package/dist/web-components/viewer/{dragToClose-C9KwbQpA.mjs → dragToClose-DXXIWV62.mjs} +1 -1
- package/dist/web-components/viewer/{fetchManifest-gl9fyg7D.mjs → fetchManifest-DorkDXGC.mjs} +1 -1
- package/dist/web-components/viewer/{host-D3tVEhAD.mjs → host-DscGC2S0.mjs} +1 -1
- package/dist/web-components/viewer/{image-layers-DSehEFmU.mjs → image-layers-CZ9-efD2.mjs} +1 -1
- package/dist/web-components/viewer/image-service-content-C60w8IZm.mjs +1 -0
- package/dist/web-components/viewer/index.mjs +1 -1
- package/dist/web-components/viewer/{link-BYKFtAno.mjs → link-CysSctMX.mjs} +1 -1
- package/dist/web-components/viewer/overlayImage-CwPnVnIi.mjs +1 -0
- package/dist/web-components/viewer/{range-regions-CEM4sQKi.mjs → range-regions-C7ZBtSyb.mjs} +1 -1
- package/dist/web-components/viewer/{renderers-BiDrFLxn.mjs → renderers-D4wJiQYv.mjs} +1 -1
- package/dist/web-components/viewer/{save-file-CzYUFJNg.mjs → save-file-uqsNOVPU.mjs} +1 -1
- package/dist/web-components/viewer/{search-Dr6AQ3Lb.mjs → search-CWuD5EZA.mjs} +1 -1
- package/dist/web-components/viewer/styles-BjjJM8OS.mjs +1 -0
- package/dist/web-components/viewer/{useControlsVisibility-CP5m7oBd.mjs → useControlsVisibility-KTxa_3yJ.mjs} +1 -1
- package/dist/web-components/viewer/viewer-C3d_TgAI.mjs +29 -0
- package/dist/web-components/viewer/{vtt-CDqR3lHn.mjs → vtt-DqtJ20x0.mjs} +1 -1
- package/dist/web-components/viewer-BoyWG64n.mjs +1 -0
- package/dist/web-components/{vtt-DHZRkZ_P.mjs → vtt-BNuRzGap.mjs} +1 -1
- package/dist/web-components/zh-Hans-DnYm6PWu.mjs +1 -0
- package/dist/web-components/zh-Hant-DsxnuLPZ.mjs +1 -0
- package/package.json +1 -1
- package/dist/web-components/About-DgBOPS3N.mjs +0 -1
- package/dist/web-components/AnnotationItems-CBEb7Cew.mjs +0 -1
- package/dist/web-components/AnnotationMenu-DiQyu45i.mjs +0 -1
- package/dist/web-components/AnnotationState-DemGGP7N.mjs +0 -1
- package/dist/web-components/Annotations-CDVyd69_.mjs +0 -2
- package/dist/web-components/CanvasView-DeM04pm-.mjs +0 -2
- package/dist/web-components/ControlMenu-CJtszzgx.mjs +0 -1
- package/dist/web-components/ControlsFade-Pye8AyCz.mjs +0 -1
- package/dist/web-components/CountMenu-3-t8974M.mjs +0 -1
- package/dist/web-components/Cue-eTms5gbr.mjs +0 -1
- package/dist/web-components/Document-CkKoLQ51.mjs +0 -1
- package/dist/web-components/FieldPill-M9u0eLtz.mjs +0 -1
- package/dist/web-components/Gallery-mqXXjGtK.mjs +0 -1
- package/dist/web-components/Items-BoFm0Hlx.mjs +0 -1
- package/dist/web-components/Label-GTBsGDCC.mjs +0 -1
- package/dist/web-components/LanguageChoice-BEiskuVG.mjs +0 -1
- package/dist/web-components/LightboxView-Daz0RCee.mjs +0 -1
- package/dist/web-components/LoadedMap-D9Z3zl12.mjs +0 -1
- package/dist/web-components/MapView-CExlNO5E.mjs +0 -3
- package/dist/web-components/PagerLayout-l6UNSoQ1.mjs +0 -1
- package/dist/web-components/Panel-ikILE92M.mjs +0 -1
- package/dist/web-components/PanelPart-VPAwSoQZ.mjs +0 -1
- package/dist/web-components/PlaceBox-D73C--SU.mjs +0 -1
- package/dist/web-components/Primitives-CBRreXtS.mjs +0 -1
- package/dist/web-components/Provider-HPVBNZPr.mjs +0 -1
- package/dist/web-components/Root-BJwk-F1e.mjs +0 -1
- package/dist/web-components/Scene-DC7ofvsK.mjs +0 -1
- package/dist/web-components/SceneView-C53yZtMZ.mjs +0 -1
- package/dist/web-components/Search-Cd0xLU3y.mjs +0 -1
- package/dist/web-components/Sections-Cf3JDxnz.mjs +0 -2
- package/dist/web-components/StandaloneItems-DEchYe7Y.mjs +0 -1
- package/dist/web-components/Timeline--uq4-_TD.mjs +0 -1
- package/dist/web-components/Transcript-Dex719tP.mjs +0 -1
- package/dist/web-components/Transport-BV0Rg5Ym.mjs +0 -1
- package/dist/web-components/Transport-CHkvmPbN.mjs +0 -1
- package/dist/web-components/downloads-CFz0RnMz.mjs +0 -1
- package/dist/web-components/hooks-uer3ZRx7.mjs +0 -1
- package/dist/web-components/index-BkADsP3U.mjs +0 -1
- package/dist/web-components/items-BWG13qDG.mjs +0 -1
- package/dist/web-components/items-SD92pRMN.mjs +0 -1
- package/dist/web-components/label-Bw9SwLh8.mjs +0 -1
- package/dist/web-components/layout-DrVnUBcm.mjs +0 -1
- package/dist/web-components/logo-Dzr2M4F7.mjs +0 -1
- package/dist/web-components/part-dr-d1XPo.mjs +0 -1
- package/dist/web-components/pointer-IZcH8rZy.mjs +0 -1
- package/dist/web-components/readingLanguages-Bd4MD2DP.mjs +0 -1
- package/dist/web-components/rendererSurface-Ox625xUL.mjs +0 -22
- package/dist/web-components/resource-DmK-8hJ-.mjs +0 -1
- package/dist/web-components/shared-BmkV0s_d.mjs +0 -1
- package/dist/web-components/styles-On1ck1Ob.mjs +0 -1
- package/dist/web-components/useNearViewport-yyUYq47j.mjs +0 -1
- package/dist/web-components/useScrollTrack-CcFLYR4o.mjs +0 -1
- package/dist/web-components/viewer/AnnotationMenu-C-9tbH4G.mjs +0 -1
- package/dist/web-components/viewer/AnnotationState-CV4g-WUB.mjs +0 -1
- package/dist/web-components/viewer/Annotations-t1K8U5Kp.mjs +0 -2
- package/dist/web-components/viewer/CaptionDetails-xzvdqP5N.mjs +0 -1
- package/dist/web-components/viewer/ControlMenu-DIfN3xYJ.mjs +0 -1
- package/dist/web-components/viewer/ControlsFade-sckPhZ4x.mjs +0 -1
- package/dist/web-components/viewer/CountMenu-BQVCtVfu.mjs +0 -1
- package/dist/web-components/viewer/Cue-DQ8q-fgb.mjs +0 -1
- package/dist/web-components/viewer/Document-B-nJpfDh.mjs +0 -1
- package/dist/web-components/viewer/FieldPill-BQcDb4xM.mjs +0 -1
- package/dist/web-components/viewer/Gallery-_0dEBq2w.mjs +0 -1
- package/dist/web-components/viewer/LanguageChoice-0UWQ5V-y.mjs +0 -1
- package/dist/web-components/viewer/LightboxView-Dnlf7m8l.mjs +0 -1
- package/dist/web-components/viewer/PagerLayout-PYWFPFSJ.mjs +0 -1
- package/dist/web-components/viewer/PanelPart-Bd0JqUwF.mjs +0 -1
- package/dist/web-components/viewer/PlaceBox-Bh9V3RLS.mjs +0 -1
- package/dist/web-components/viewer/Search-C0B5Jh9V.mjs +0 -1
- package/dist/web-components/viewer/Transcript-D3mKmdQY.mjs +0 -1
- package/dist/web-components/viewer/Transport-9f_lhebG.mjs +0 -1
- package/dist/web-components/viewer/Transport-BudReE7Y.mjs +0 -1
- package/dist/web-components/viewer/annotations-content-Ci-orrao.mjs +0 -1
- package/dist/web-components/viewer/overlayImage-CdgpMutd.mjs +0 -1
- package/dist/web-components/viewer/styles-DvZTMHkr.mjs +0 -1
- package/dist/web-components/viewer/viewer-DaG51iO3.mjs +0 -29
- package/dist/web-components/viewer-DeAUI9Fi.mjs +0 -1
package/README.md
CHANGED
|
@@ -109,10 +109,11 @@ If you serve Clover's files yourself, copy the whole `dist/web-components` folde
|
|
|
109
109
|
- [Composing layouts](https://clover.iiif.library.northwestern.edu/docs/composing): layouts of your
|
|
110
110
|
own, from the parts and hooks.
|
|
111
111
|
- [Styling](https://clover.iiif.library.northwestern.edu/docs/styling): colors, sizes and classes.
|
|
112
|
-
- [
|
|
113
|
-
|
|
112
|
+
- [Glossary](https://clover.iiif.library.northwestern.edu/docs/composing/glossary): every
|
|
113
|
+
component and helper, and the package's structure.
|
|
114
114
|
|
|
115
|
-
Clover 3.x, `@samvera/clover-iiif`, is
|
|
115
|
+
Clover 3.x, `@samvera/clover-iiif`, is deprecated and no longer maintained. Its docs are
|
|
116
|
+
kept on the same site, under
|
|
116
117
|
[Clover 3.x](https://clover.iiif.library.northwestern.edu/docs/deprecated-versions).
|
|
117
118
|
|
|
118
119
|
## License
|
|
@@ -26,7 +26,7 @@ import { useLoaded } from "../../hooks/useLoaded.mjs";
|
|
|
26
26
|
import { HideToggle } from "../../ui/HideToggle.mjs";
|
|
27
27
|
import { visuallyHidden } from "../../ui/visuallyHidden.mjs";
|
|
28
28
|
import { startingLanguage } from "../../core/language-choice.mjs";
|
|
29
|
-
import { useReadingLanguages } from "../../react/readingLanguages.mjs";
|
|
29
|
+
import { useReadingLanguages, covers } from "../../react/readingLanguages.mjs";
|
|
30
30
|
import { LanguageChoice } from "../../ui/LanguageChoice.mjs";
|
|
31
31
|
import { languagesOf, inLanguage } from "./languages.mjs";
|
|
32
32
|
import { languageProps } from "../../i18n/direction.mjs";
|
|
@@ -160,7 +160,8 @@ function AnnotationGroup({
|
|
|
160
160
|
const languages = useMemo(() => languagesOf(entries), [entries]);
|
|
161
161
|
const [picked, setPicked] = useState();
|
|
162
162
|
const offered = useReadingLanguages();
|
|
163
|
-
const
|
|
163
|
+
const follows = covers(offered, languages);
|
|
164
|
+
const chosen = follows ? startingLanguage(languages, offered.chosen) : startingLanguage(languages, (offered == null ? void 0 : offered.chosen) ?? language, picked);
|
|
164
165
|
const listed = entries.filter((entry) => inLanguage(entry, chosen));
|
|
165
166
|
return /* @__PURE__ */ jsxs(
|
|
166
167
|
"section",
|
|
@@ -179,7 +180,7 @@ function AnnotationGroup({
|
|
|
179
180
|
children: title.text
|
|
180
181
|
}
|
|
181
182
|
),
|
|
182
|
-
chosen && !
|
|
183
|
+
chosen && !follows && /* @__PURE__ */ jsx(
|
|
183
184
|
LanguageChoice,
|
|
184
185
|
{
|
|
185
186
|
languages,
|
|
@@ -391,7 +392,12 @@ const AnnotationLayers = forwardRef(function AnnotationLayers2({
|
|
|
391
392
|
const languages = languagesOf(
|
|
392
393
|
layer.canvases.flatMap((group) => group.entries)
|
|
393
394
|
);
|
|
394
|
-
const
|
|
395
|
+
const follows = covers(offered, languages);
|
|
396
|
+
const chosen = follows ? startingLanguage(languages, offered.chosen) : startingLanguage(
|
|
397
|
+
languages,
|
|
398
|
+
(offered == null ? void 0 : offered.chosen) ?? language,
|
|
399
|
+
picked[layer.key]
|
|
400
|
+
);
|
|
395
401
|
return /* @__PURE__ */ jsxs(
|
|
396
402
|
"section",
|
|
397
403
|
{
|
|
@@ -408,7 +414,7 @@ const AnnotationLayers = forwardRef(function AnnotationLayers2({
|
|
|
408
414
|
children: layer.title.text
|
|
409
415
|
}
|
|
410
416
|
),
|
|
411
|
-
chosen && !
|
|
417
|
+
chosen && !follows && /* @__PURE__ */ jsx(
|
|
412
418
|
LanguageChoice,
|
|
413
419
|
{
|
|
414
420
|
languages,
|
|
@@ -38,7 +38,7 @@ const Caption = ({
|
|
|
38
38
|
"data-testid": "clover-canvas-caption",
|
|
39
39
|
id,
|
|
40
40
|
onKeyDown: (event) => {
|
|
41
|
-
if (event.key !== "Escape") return;
|
|
41
|
+
if (event.key !== "Escape" || event.defaultPrevented) return;
|
|
42
42
|
event.preventDefault();
|
|
43
43
|
event.stopPropagation();
|
|
44
44
|
onClose(true);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useRef } from "react";
|
|
3
4
|
import { startOf } from "./Annotations.mjs";
|
|
4
5
|
import ControlMenu from "./ControlMenu.mjs";
|
|
5
6
|
import { CueTime } from "../../ui/Cue.mjs";
|
|
@@ -20,6 +21,7 @@ const AnnotationMenu = ({
|
|
|
20
21
|
onClose
|
|
21
22
|
}) => {
|
|
22
23
|
const name = useContainerName(label, labelLang);
|
|
24
|
+
const pointer = useRef(false);
|
|
23
25
|
const groups = [];
|
|
24
26
|
annotations.forEach((annotation, index) => {
|
|
25
27
|
var _a, _b;
|
|
@@ -84,6 +86,9 @@ const AnnotationMenu = ({
|
|
|
84
86
|
"data-selected": picked,
|
|
85
87
|
onMouseEnter: () => onActivate(annotation.id),
|
|
86
88
|
onMouseLeave: () => onActivate(null),
|
|
89
|
+
onPointerDown: () => {
|
|
90
|
+
pointer.current = true;
|
|
91
|
+
},
|
|
87
92
|
children: [
|
|
88
93
|
/* @__PURE__ */ jsx(
|
|
89
94
|
"input",
|
|
@@ -91,8 +96,17 @@ const AnnotationMenu = ({
|
|
|
91
96
|
type: "radio",
|
|
92
97
|
name: id,
|
|
93
98
|
checked: picked,
|
|
94
|
-
onChange: () => onSelect(annotation),
|
|
95
|
-
onClick: () =>
|
|
99
|
+
onChange: () => onSelect(annotation, pointer.current),
|
|
100
|
+
onClick: () => {
|
|
101
|
+
if (picked || !pointer.current) onSelect(annotation);
|
|
102
|
+
},
|
|
103
|
+
onKeyDown: (event) => {
|
|
104
|
+
pointer.current = false;
|
|
105
|
+
if (event.key === "Enter") {
|
|
106
|
+
event.preventDefault();
|
|
107
|
+
onSelect(annotation);
|
|
108
|
+
}
|
|
109
|
+
},
|
|
96
110
|
onFocus: () => onActivate(annotation.id),
|
|
97
111
|
onBlur: () => onActivate(null)
|
|
98
112
|
}
|
|
@@ -165,30 +165,34 @@ function AnnotationState({
|
|
|
165
165
|
hiddenPagesRef.current = hiddenPages;
|
|
166
166
|
const setPagesVisibleRef = useRef(setPagesVisible);
|
|
167
167
|
setPagesVisibleRef.current = setPagesVisible;
|
|
168
|
-
const selectAnnotation = useCallback(
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
playFrom(element, annotation.start);
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
framed.current = annotation.id;
|
|
184
|
-
if (annotation.track) {
|
|
185
|
-
const element = mediaElementRef.current;
|
|
186
|
-
if (element && goToTrack(annotation, element))
|
|
168
|
+
const selectAnnotation = useCallback(
|
|
169
|
+
(annotation, play = true) => {
|
|
170
|
+
var _a, _b, _c;
|
|
171
|
+
if (annotation.pageId && hiddenPagesRef.current.includes(annotation.pageId))
|
|
172
|
+
setPagesVisibleRef.current([annotation.pageId], true);
|
|
173
|
+
setOwnSelected(annotation.id);
|
|
174
|
+
(_a = onAnnotationActiveRef.current) == null ? void 0 : _a.call(onAnnotationActiveRef, annotation.id);
|
|
175
|
+
(_b = onAnnotationSelectRef.current) == null ? void 0 : _b.call(onAnnotationSelectRef, annotation.id);
|
|
176
|
+
if (held.current) return;
|
|
177
|
+
if ("start" in annotation) {
|
|
178
|
+
const element = mediaElementRef.current;
|
|
179
|
+
if (!element) return;
|
|
187
180
|
sought.current = annotation.id;
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
181
|
+
if (play) playFrom(element, annotation.start);
|
|
182
|
+
else element.currentTime = annotation.start;
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
framed.current = annotation.id;
|
|
186
|
+
if (annotation.track) {
|
|
187
|
+
const element = mediaElementRef.current;
|
|
188
|
+
if (element && goToTrack(annotation, element))
|
|
189
|
+
sought.current = annotation.id;
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
(_c = rendererRef.current) == null ? void 0 : _c.fitAnnotation(annotation.world, !glide.current);
|
|
193
|
+
},
|
|
194
|
+
[]
|
|
195
|
+
);
|
|
192
196
|
const selectedRef = useRef(selectedAnnotation);
|
|
193
197
|
selectedRef.current = selectedAnnotation;
|
|
194
198
|
const releaseAnnotation = useCallback(() => {
|
|
@@ -58,11 +58,20 @@ const ControlMenu = ({
|
|
|
58
58
|
};
|
|
59
59
|
document.addEventListener("keydown", after, { once: true });
|
|
60
60
|
};
|
|
61
|
+
const onFocusIn = (event) => {
|
|
62
|
+
var _a;
|
|
63
|
+
const target = event.target;
|
|
64
|
+
if (!(target == null ? void 0 : target.closest(".clover-canvas-viewport"))) return;
|
|
65
|
+
if ((_a = ref.current) == null ? void 0 : _a.contains(target)) return;
|
|
66
|
+
onClose(false);
|
|
67
|
+
};
|
|
61
68
|
document.addEventListener("pointerdown", onPointerDown);
|
|
62
69
|
document.addEventListener("keydown", onKeyDown, true);
|
|
70
|
+
document.addEventListener("focusin", onFocusIn);
|
|
63
71
|
return () => {
|
|
64
72
|
document.removeEventListener("pointerdown", onPointerDown);
|
|
65
73
|
document.removeEventListener("keydown", onKeyDown, true);
|
|
74
|
+
document.removeEventListener("focusin", onFocusIn);
|
|
66
75
|
};
|
|
67
76
|
}, [triggerId, onClose, holds]);
|
|
68
77
|
return /* @__PURE__ */ jsx(
|
|
@@ -7,6 +7,7 @@ import { useCloverTranslation } from "../../i18n/useCloverTranslation.mjs";
|
|
|
7
7
|
import { localize } from "../../core/value.mjs";
|
|
8
8
|
import { useOneOpen } from "../../ui/useOneOpen.mjs";
|
|
9
9
|
import { languageProps } from "../../i18n/direction.mjs";
|
|
10
|
+
import { useContainerName } from "../../i18n/useContainerName.mjs";
|
|
10
11
|
import { visuallyHidden } from "../../ui/visuallyHidden.mjs";
|
|
11
12
|
function PlaceBox({
|
|
12
13
|
id,
|
|
@@ -19,6 +20,11 @@ function PlaceBox({
|
|
|
19
20
|
const { t, langOf } = useCloverTranslation();
|
|
20
21
|
useOneOpen(open, () => onClose(false));
|
|
21
22
|
const heading = localize(name, language);
|
|
23
|
+
const fallback = useContainerName(
|
|
24
|
+
t("mapLabel"),
|
|
25
|
+
langOf("mapLabel"),
|
|
26
|
+
Boolean(heading.text)
|
|
27
|
+
);
|
|
22
28
|
return /* @__PURE__ */ jsxs(
|
|
23
29
|
"div",
|
|
24
30
|
{
|
|
@@ -28,6 +34,7 @@ function PlaceBox({
|
|
|
28
34
|
id,
|
|
29
35
|
role: "group",
|
|
30
36
|
"aria-labelledby": heading.text ? `${id}-name` : void 0,
|
|
37
|
+
...fallback.props,
|
|
31
38
|
onKeyDown: (event) => {
|
|
32
39
|
if (event.key !== "Escape") return;
|
|
33
40
|
event.preventDefault();
|
|
@@ -46,6 +53,7 @@ function PlaceBox({
|
|
|
46
53
|
children: /* @__PURE__ */ jsx(Close, {})
|
|
47
54
|
}
|
|
48
55
|
),
|
|
56
|
+
fallback.node,
|
|
49
57
|
heading.text && /* @__PURE__ */ jsx(
|
|
50
58
|
"p",
|
|
51
59
|
{
|
|
@@ -14,6 +14,7 @@ import { useOneOpen } from "../../../ui/useOneOpen.mjs";
|
|
|
14
14
|
import { PlayIcon, PauseIcon, VolumeMutedIcon, VolumeHighIcon, CaptionsIcon, FitIcon, FillIcon, ExitFullScreenIcon, FullScreenIcon } from "../../../ui/mediaIcons.mjs";
|
|
15
15
|
import { useContainerName } from "../../../i18n/useContainerName.mjs";
|
|
16
16
|
import { useCloverTranslation } from "../../../i18n/useCloverTranslation.mjs";
|
|
17
|
+
import { visuallyHidden } from "../../../ui/visuallyHidden.mjs";
|
|
17
18
|
import { toggleFullscreen } from "../../../lib/fullscreen.mjs";
|
|
18
19
|
import useFullscreenSupported from "../../../hooks/useFullscreenSupported.mjs";
|
|
19
20
|
import { languageProps } from "../../../i18n/direction.mjs";
|
|
@@ -330,7 +331,7 @@ const Transport = ({
|
|
|
330
331
|
focused.current = null;
|
|
331
332
|
const active = document.activeElement;
|
|
332
333
|
if (!active || active === document.body) (_a2 = play.current) == null ? void 0 : _a2.focus();
|
|
333
|
-
}
|
|
334
|
+
});
|
|
334
335
|
return /* @__PURE__ */ jsxs(
|
|
335
336
|
"div",
|
|
336
337
|
{
|
|
@@ -481,28 +482,41 @@ const Transport = ({
|
|
|
481
482
|
"--clover-transport-progress": `${(muted ? 0 : volume) * 100}%`
|
|
482
483
|
},
|
|
483
484
|
type: "range",
|
|
484
|
-
value: muted ? 0 : volume
|
|
485
|
+
value: muted ? 0 : volume,
|
|
486
|
+
"aria-valuetext": `${Math.round((muted ? 0 : volume) * 100)}%`
|
|
485
487
|
}
|
|
486
488
|
),
|
|
487
489
|
/* @__PURE__ */ jsxs("span", { className: "clover-canvas-transport-status", children: [
|
|
488
490
|
/* @__PURE__ */ jsxs("span", { className: "clover-canvas-transport-time", children: [
|
|
489
|
-
/* @__PURE__ */
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
491
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
492
|
+
/* @__PURE__ */ jsxs(
|
|
493
|
+
"span",
|
|
494
|
+
{
|
|
495
|
+
style: visuallyHidden,
|
|
496
|
+
...languageProps(langOf("playerCurrentTime")),
|
|
497
|
+
children: [
|
|
498
|
+
t("playerCurrentTime"),
|
|
499
|
+
" "
|
|
500
|
+
]
|
|
501
|
+
}
|
|
502
|
+
),
|
|
503
|
+
formatTime(currentTime)
|
|
504
|
+
] }),
|
|
497
505
|
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: " / " }),
|
|
498
|
-
/* @__PURE__ */
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
507
|
+
/* @__PURE__ */ jsxs(
|
|
508
|
+
"span",
|
|
509
|
+
{
|
|
510
|
+
style: visuallyHidden,
|
|
511
|
+
...languageProps(langOf("playerDuration")),
|
|
512
|
+
children: [
|
|
513
|
+
t("playerDuration"),
|
|
514
|
+
" "
|
|
515
|
+
]
|
|
516
|
+
}
|
|
517
|
+
),
|
|
518
|
+
formatTime(duration)
|
|
519
|
+
] })
|
|
506
520
|
] }),
|
|
507
521
|
chapter >= 0 && /* @__PURE__ */ jsx(
|
|
508
522
|
"span",
|
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
3
3
|
import { useState, useRef, useCallback, Suspense, lazy } from "react";
|
|
4
4
|
import { useUniqueId } from "../../ui/useUniqueId.mjs";
|
|
5
|
+
import { useCloverTranslation } from "../../i18n/useCloverTranslation.mjs";
|
|
6
|
+
import { languageProps } from "../../i18n/direction.mjs";
|
|
7
|
+
import { visuallyHidden } from "../../ui/visuallyHidden.mjs";
|
|
5
8
|
const ControlMenu = lazy(() => import("../Canvas/ControlMenu.mjs"));
|
|
6
9
|
function CountMenu({
|
|
7
10
|
position,
|
|
8
11
|
total,
|
|
9
12
|
list
|
|
10
13
|
}) {
|
|
14
|
+
const { t, langOf } = useCloverTranslation();
|
|
11
15
|
const triggerId = `${useUniqueId().replace(/:/g, "")}-count`;
|
|
12
16
|
const menuId = `${triggerId}-menu`;
|
|
13
17
|
const [open, setOpen] = useState(false);
|
|
@@ -36,11 +40,19 @@ function CountMenu({
|
|
|
36
40
|
onClick: () => setOpen(!open),
|
|
37
41
|
children: [
|
|
38
42
|
/* @__PURE__ */ jsxs("span", { className: "clover-pager-position", "aria-live": "polite", children: [
|
|
39
|
-
/* @__PURE__ */ jsxs("span", { children: [
|
|
43
|
+
/* @__PURE__ */ jsxs("span", { "aria-hidden": position >= 0 || void 0, children: [
|
|
40
44
|
position >= 0 ? position + 1 : "–",
|
|
41
45
|
" / ",
|
|
42
46
|
total
|
|
43
47
|
] }),
|
|
48
|
+
position >= 0 && /* @__PURE__ */ jsx(
|
|
49
|
+
"span",
|
|
50
|
+
{
|
|
51
|
+
style: visuallyHidden,
|
|
52
|
+
...languageProps(langOf("canvasPosition")),
|
|
53
|
+
children: t("canvasPosition", { index: position + 1, total })
|
|
54
|
+
}
|
|
55
|
+
),
|
|
44
56
|
/* @__PURE__ */ jsxs("span", { className: "clover-pager-room", "aria-hidden": "true", hidden: true, children: [
|
|
45
57
|
total,
|
|
46
58
|
" / ",
|
|
@@ -183,6 +183,7 @@ function ItemsView({
|
|
|
183
183
|
navigation,
|
|
184
184
|
rtl = false,
|
|
185
185
|
layout = "slider",
|
|
186
|
+
orientation = "horizontal",
|
|
186
187
|
thumbnailSize = 200,
|
|
187
188
|
request,
|
|
188
189
|
language,
|
|
@@ -212,6 +213,7 @@ function ItemsView({
|
|
|
212
213
|
const { langOf } = root;
|
|
213
214
|
const contrast = useHighContrast(highContrast);
|
|
214
215
|
const slider = layout === "slider";
|
|
216
|
+
const vertical = slider && orientation === "vertical";
|
|
215
217
|
const listbox = navigation === "id";
|
|
216
218
|
const viewport = useRef(null);
|
|
217
219
|
const masonry = layout === "masonry";
|
|
@@ -230,12 +232,13 @@ function ItemsView({
|
|
|
230
232
|
}, [masonry]);
|
|
231
233
|
const track = useScrollTrack({
|
|
232
234
|
align: listbox ? "center" : "start",
|
|
233
|
-
itemCount: items.length
|
|
235
|
+
itemCount: items.length,
|
|
236
|
+
axis: vertical ? "y" : "x"
|
|
234
237
|
});
|
|
235
238
|
const held = useRef(void 0);
|
|
236
239
|
useEffect(() => () => window.clearTimeout(held.current), []);
|
|
237
240
|
const roving = useRovingFocus(items.length, selected, {
|
|
238
|
-
orientation: layout === "slider" ? "horizontal" : layout === "list" ? "vertical" : "both",
|
|
241
|
+
orientation: vertical ? "vertical" : layout === "slider" ? "horizontal" : layout === "list" ? "vertical" : "both",
|
|
239
242
|
rtl,
|
|
240
243
|
onActivate: (index, event) => onActivate(items[index], event),
|
|
241
244
|
onMove: followFocus ? (index, event) => {
|
|
@@ -301,7 +304,13 @@ function ItemsView({
|
|
|
301
304
|
const positioned = (item) => !(renderItem || localize(item.label, language).text || showSummary && secondary === "summary" && localize(item.summary, language).text);
|
|
302
305
|
const positionName = (item, index) => positioned(item) ? t("canvasPosition", { index: index + 1, total: items.length }) : void 0;
|
|
303
306
|
const positionLang = (item) => positioned(item) ? langOf("canvasPosition") : void 0;
|
|
304
|
-
const trackStyle = slider ? {
|
|
307
|
+
const trackStyle = slider ? {
|
|
308
|
+
display: "flex",
|
|
309
|
+
flexDirection: vertical ? "column" : void 0,
|
|
310
|
+
margin: 0,
|
|
311
|
+
padding: 0,
|
|
312
|
+
listStyle: "none"
|
|
313
|
+
} : void 0;
|
|
305
314
|
const slideStyle = slider ? { flex: "0 0 auto", scrollSnapAlign: listbox ? "center" : "start" } : void 0;
|
|
306
315
|
const stepping = listbox && selected >= 0;
|
|
307
316
|
const scrollButton = (step) => {
|
|
@@ -339,7 +348,7 @@ function ItemsView({
|
|
|
339
348
|
children: /* @__PURE__ */ jsx(
|
|
340
349
|
"path",
|
|
341
350
|
{
|
|
342
|
-
d: step === "next" !== rtl ? "M6 3l5 5-5 5" : "M10 3L5 8l5 5",
|
|
351
|
+
d: vertical ? step === "next" ? "M3 6l5 5 5-5" : "M3 10l5-5 5 5" : step === "next" !== rtl ? "M6 3l5 5-5 5" : "M10 3L5 8l5 5",
|
|
343
352
|
fill: "none",
|
|
344
353
|
stroke: "currentColor",
|
|
345
354
|
strokeWidth: "2",
|
|
@@ -361,6 +370,7 @@ function ItemsView({
|
|
|
361
370
|
ref: root.ref,
|
|
362
371
|
className: join("clover-items", className),
|
|
363
372
|
"data-layout": layout,
|
|
373
|
+
"data-orientation": vertical ? "vertical" : void 0,
|
|
364
374
|
"data-navigation": navigation,
|
|
365
375
|
...highContrastProps(contrast),
|
|
366
376
|
...rest,
|
|
@@ -414,7 +424,7 @@ function ItemsView({
|
|
|
414
424
|
ref: listRef,
|
|
415
425
|
role: "listbox",
|
|
416
426
|
...listName,
|
|
417
|
-
"aria-orientation": slider ? "horizontal" : "vertical",
|
|
427
|
+
"aria-orientation": vertical ? "vertical" : slider ? "horizontal" : layout === "list" ? "vertical" : void 0,
|
|
418
428
|
className: "clover-items-track",
|
|
419
429
|
style: trackStyle,
|
|
420
430
|
children: items.map((item, index) => {
|
|
@@ -480,7 +490,7 @@ function ItemsView({
|
|
|
480
490
|
) });
|
|
481
491
|
}
|
|
482
492
|
function keepInView(element, instant) {
|
|
483
|
-
var _a;
|
|
493
|
+
var _a, _b;
|
|
484
494
|
let box = element.parentElement;
|
|
485
495
|
while (box && box !== document.body) {
|
|
486
496
|
const { overflowY } = getComputedStyle(box);
|
|
@@ -494,7 +504,14 @@ function keepInView(element, instant) {
|
|
|
494
504
|
const inner = element.getBoundingClientRect();
|
|
495
505
|
const delta = inner.top < outer.top ? inner.top - outer.top : inner.bottom > outer.bottom ? inner.bottom - outer.bottom : 0;
|
|
496
506
|
if (delta) {
|
|
497
|
-
(_a =
|
|
507
|
+
const still = (_a = window.matchMedia) == null ? void 0 : _a.call(
|
|
508
|
+
window,
|
|
509
|
+
"(prefers-reduced-motion: reduce)"
|
|
510
|
+
).matches;
|
|
511
|
+
(_b = box.scrollBy) == null ? void 0 : _b.call(box, {
|
|
512
|
+
top: delta,
|
|
513
|
+
behavior: instant || still ? "auto" : "smooth"
|
|
514
|
+
});
|
|
498
515
|
}
|
|
499
516
|
}
|
|
500
517
|
export {
|
|
@@ -221,7 +221,7 @@ function MapView({
|
|
|
221
221
|
(bundled) => bundled.mapLibreSheet().then(() => bundled)
|
|
222
222
|
)
|
|
223
223
|
]).then(async ([module, bundled]) => {
|
|
224
|
-
var _a;
|
|
224
|
+
var _a, _b, _c, _d, _e;
|
|
225
225
|
const maplibre = "Map" in module ? module : module.default;
|
|
226
226
|
if (!live || !container.current) return;
|
|
227
227
|
const worker = workerUrl ?? getMapWorkerUrl() ?? bundled.bundledWorkerUrl((_a = maplibre.getVersion) == null ? void 0 : _a.call(maplibre));
|
|
@@ -243,7 +243,7 @@ function MapView({
|
|
|
243
243
|
scrollZoom,
|
|
244
244
|
// Its credits behind their ⓘ, in the lower corner; none where left out.
|
|
245
245
|
attributionControl: credits ? { compact: true } : false,
|
|
246
|
-
// MapLibre's own names, in Clover's words; kept current below.
|
|
246
|
+
// MapLibre's own names, in Clover's interface words; kept current below.
|
|
247
247
|
locale: {
|
|
248
248
|
"Map.Title": t2("mapLabel"),
|
|
249
249
|
"NavigationControl.ZoomIn": t2("imageZoomIn"),
|
|
@@ -256,6 +256,8 @@ function MapView({
|
|
|
256
256
|
new maplibre.NavigationControl({ showCompass: false }),
|
|
257
257
|
"bottom-left"
|
|
258
258
|
);
|
|
259
|
+
(_c = (_b = instance.touchZoomRotate) == null ? void 0 : _b.disableRotation) == null ? void 0 : _c.call(_b);
|
|
260
|
+
(_e = (_d = instance.keyboard) == null ? void 0 : _d.disableRotation) == null ? void 0 : _e.call(_d);
|
|
259
261
|
instance.on("load", () => {
|
|
260
262
|
var _a2;
|
|
261
263
|
if (!live) return;
|
|
@@ -269,6 +271,7 @@ function MapView({
|
|
|
269
271
|
let popup = null;
|
|
270
272
|
let picked = null;
|
|
271
273
|
let shown = "";
|
|
274
|
+
let dismissed = "";
|
|
272
275
|
let hovered;
|
|
273
276
|
let pickedId;
|
|
274
277
|
const idOf = (feature) => typeof feature.id === "number" && feature.id >= 0 ? feature.id : latest.current.features.features.indexOf(feature);
|
|
@@ -294,7 +297,7 @@ function MapView({
|
|
|
294
297
|
shown = "";
|
|
295
298
|
};
|
|
296
299
|
const show2 = (feature) => {
|
|
297
|
-
var _a3,
|
|
300
|
+
var _a3, _b2, _c2, _d2, _e2, _f, _g, _h, _i;
|
|
298
301
|
if (shown === keyOf(feature) && popup) return;
|
|
299
302
|
unname();
|
|
300
303
|
const title = (_a3 = feature.properties) == null ? void 0 : _a3.title;
|
|
@@ -302,7 +305,7 @@ function MapView({
|
|
|
302
305
|
if (!title || !bounds) return;
|
|
303
306
|
const text = document.createElement("span");
|
|
304
307
|
text.textContent = String(title);
|
|
305
|
-
const lang = (
|
|
308
|
+
const lang = (_b2 = feature.properties) == null ? void 0 : _b2.titleLang;
|
|
306
309
|
const marked = (element, tag) => {
|
|
307
310
|
if (tag === void 0) return;
|
|
308
311
|
element.lang = tag;
|
|
@@ -311,7 +314,7 @@ function MapView({
|
|
|
311
314
|
};
|
|
312
315
|
const nameLang = lang === void 0 ? void 0 : String(lang);
|
|
313
316
|
marked(text, nameLang);
|
|
314
|
-
const date = readDate((
|
|
317
|
+
const date = readDate((_c2 = feature.properties) == null ? void 0 : _c2.navDate);
|
|
315
318
|
if (date) {
|
|
316
319
|
const locale = cloverI18n.language;
|
|
317
320
|
const time = document.createElement("time");
|
|
@@ -326,7 +329,7 @@ function MapView({
|
|
|
326
329
|
}
|
|
327
330
|
const [[west, south], [east, north]] = bounds;
|
|
328
331
|
const middle = (west + east) / 2;
|
|
329
|
-
const room = ((
|
|
332
|
+
const room = ((_e2 = (_d2 = instance.getContainer) == null ? void 0 : _d2.call(instance)) == null ? void 0 : _e2.clientHeight) ?? 0;
|
|
330
333
|
const top = ((_g = (_f = instance.project) == null ? void 0 : _f.call(instance, [middle, north])) == null ? void 0 : _g.y) ?? 0;
|
|
331
334
|
const foot = ((_i = (_h = instance.project) == null ? void 0 : _h.call(instance, [middle, south])) == null ? void 0 : _i.y) ?? 0;
|
|
332
335
|
const below = room - foot >= top;
|
|
@@ -345,9 +348,9 @@ function MapView({
|
|
|
345
348
|
};
|
|
346
349
|
let hangs = 0;
|
|
347
350
|
const keepInside = () => {
|
|
348
|
-
var _a3,
|
|
351
|
+
var _a3, _b2, _c2, _d2;
|
|
349
352
|
const element = (_a3 = popup == null ? void 0 : popup.getElement) == null ? void 0 : _a3.call(popup);
|
|
350
|
-
const box2 = (
|
|
353
|
+
const box2 = (_d2 = (_c2 = (_b2 = instance.getContainer) == null ? void 0 : _b2.call(instance)) == null ? void 0 : _c2.getBoundingClientRect) == null ? void 0 : _d2.call(_c2);
|
|
351
354
|
if (!element || !box2 || !popup.setOffset) return;
|
|
352
355
|
const away = gap();
|
|
353
356
|
popup.setOffset([0, hangs]);
|
|
@@ -370,37 +373,39 @@ function MapView({
|
|
|
370
373
|
show2(kept);
|
|
371
374
|
};
|
|
372
375
|
name.current = (feature) => {
|
|
376
|
+
dismissed = "";
|
|
373
377
|
picked = feature;
|
|
374
378
|
pick(feature);
|
|
375
379
|
show2(feature);
|
|
376
380
|
};
|
|
377
381
|
for (const layer of CLICKABLE) {
|
|
378
382
|
instance.on("click", layer, (event) => {
|
|
379
|
-
var _a3,
|
|
383
|
+
var _a3, _b2, _c2, _d2;
|
|
380
384
|
const feature = (_a3 = event.features) == null ? void 0 : _a3[0];
|
|
381
385
|
if (!feature) return;
|
|
382
|
-
(
|
|
383
|
-
(
|
|
386
|
+
(_b2 = name.current) == null ? void 0 : _b2.call(name, feature, event.lngLat);
|
|
387
|
+
(_d2 = (_c2 = latest.current).onSelect) == null ? void 0 : _d2.call(_c2, feature);
|
|
384
388
|
});
|
|
385
389
|
instance.on("mousemove", layer, (event) => {
|
|
386
|
-
var _a3,
|
|
390
|
+
var _a3, _b2, _c2;
|
|
387
391
|
instance.getCanvas().style.cursor = "pointer";
|
|
388
392
|
const feature = (_a3 = event.features) == null ? void 0 : _a3[0];
|
|
389
393
|
if (!feature) return;
|
|
390
|
-
show2(feature);
|
|
394
|
+
if (keyOf(feature) !== dismissed) show2(feature);
|
|
391
395
|
const id = idOf(feature);
|
|
392
396
|
if (id === hovered) return;
|
|
393
397
|
mark(hovered, "hover", false);
|
|
394
398
|
hovered = id;
|
|
395
399
|
mark(hovered, "hover", true);
|
|
396
|
-
(
|
|
400
|
+
(_c2 = (_b2 = latest.current).onHighlight) == null ? void 0 : _c2.call(_b2, feature);
|
|
397
401
|
});
|
|
398
402
|
instance.on("mouseleave", layer, () => {
|
|
399
|
-
var _a3,
|
|
403
|
+
var _a3, _b2;
|
|
400
404
|
instance.getCanvas().style.cursor = "";
|
|
405
|
+
dismissed = "";
|
|
401
406
|
mark(hovered, "hover", false);
|
|
402
407
|
hovered = void 0;
|
|
403
|
-
(
|
|
408
|
+
(_b2 = (_a3 = latest.current).onHighlight) == null ? void 0 : _b2.call(_a3, null);
|
|
404
409
|
if (picked) show2(picked);
|
|
405
410
|
else unname();
|
|
406
411
|
});
|
|
@@ -419,13 +424,20 @@ function MapView({
|
|
|
419
424
|
unname();
|
|
420
425
|
});
|
|
421
426
|
const escape = (event) => {
|
|
422
|
-
|
|
427
|
+
var _a3;
|
|
428
|
+
if (event.key !== "Escape" || event.defaultPrevented || !popup)
|
|
429
|
+
return;
|
|
430
|
+
const own = (_a3 = container.current) == null ? void 0 : _a3.closest(".clover-geomap");
|
|
431
|
+
const target = event.target;
|
|
432
|
+
if (!(own == null ? void 0 : own.contains(target)) && !(own == null ? void 0 : own.matches(":hover"))) return;
|
|
433
|
+
event.preventDefault();
|
|
434
|
+
dismissed = shown;
|
|
423
435
|
picked = null;
|
|
424
436
|
pick(null);
|
|
425
437
|
unname();
|
|
426
438
|
};
|
|
427
|
-
document.addEventListener("keydown", escape);
|
|
428
|
-
letGo = () => document.removeEventListener("keydown", escape);
|
|
439
|
+
document.addEventListener("keydown", escape, true);
|
|
440
|
+
letGo = () => document.removeEventListener("keydown", escape, true);
|
|
429
441
|
setMap(instance);
|
|
430
442
|
});
|
|
431
443
|
if (typeof ResizeObserver !== "undefined") {
|