@videojs/html 10.0.0-beta.28 → 10.0.0-beta.29
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/cdn/{adapter-XTen-YVQ.js → adapter-CEnNWvii.js} +17 -4
- package/cdn/adapter-CEnNWvii.js.map +1 -0
- package/cdn/adapter-DaKW8NzI.js +2 -0
- package/cdn/adapter-DaKW8NzI.js.map +1 -0
- package/cdn/audio-headless.dev.js +1 -1
- package/cdn/audio-headless.js +1 -1
- package/cdn/audio-minimal-ui.dev.js +2 -2
- package/cdn/audio-minimal-ui.js +1 -1
- package/cdn/audio-minimal.dev.js +5 -5
- package/cdn/audio-minimal.dev.js.map +1 -1
- package/cdn/audio-minimal.js +1 -1
- package/cdn/audio-minimal.js.map +1 -1
- package/cdn/audio-ui.dev.js +2 -2
- package/cdn/audio-ui.js +1 -1
- package/cdn/audio.dev.js +5 -5
- package/cdn/audio.dev.js.map +1 -1
- package/cdn/audio.js +1 -1
- package/cdn/audio.js.map +1 -1
- package/cdn/background.dev.js +1 -1
- package/cdn/background.js +1 -1
- package/cdn/background.js.map +1 -1
- package/cdn/compounds-C4YYLyL2.js +8 -0
- package/cdn/compounds-C4YYLyL2.js.map +1 -0
- package/cdn/{compounds-nk9RJtBK.js → compounds-C73u1MeO.js} +63 -59
- package/cdn/compounds-C73u1MeO.js.map +1 -0
- package/cdn/create-player-BU8LDJDL.js +2 -0
- package/cdn/create-player-BU8LDJDL.js.map +1 -0
- package/cdn/{create-player-DK9WOywd.js → create-player-Db1CIvlK.js} +58 -46
- package/cdn/create-player-Db1CIvlK.js.map +1 -0
- package/cdn/{default-BqQDVloS.js → default-A3aM0skz.js} +2 -2
- package/cdn/default-A3aM0skz.js.map +1 -0
- package/cdn/default-BDyhiTCm.js +2 -0
- package/cdn/default-BDyhiTCm.js.map +1 -0
- package/cdn/{default-I2LasfxC.js → default-C1_k1NeB.js} +2 -2
- package/cdn/default-C1_k1NeB.js.map +1 -0
- package/cdn/default-DHrMd4ie.js +2 -0
- package/cdn/default-DHrMd4ie.js.map +1 -0
- package/cdn/error-surface-BID4D3DW.js +59 -0
- package/cdn/error-surface-BID4D3DW.js.map +1 -0
- package/cdn/{select-tracks-nRPBa1NC.js → error-surface-D0bo71gD.js} +442 -48
- package/cdn/error-surface-D0bo71gD.js.map +1 -0
- package/cdn/gesture-element-CeRy1IVs.js +2 -0
- package/cdn/gesture-element-CeRy1IVs.js.map +1 -0
- package/cdn/{gesture-element-6Ld1YwIL.js → gesture-element-DB67OYCE.js} +3 -3
- package/cdn/gesture-element-DB67OYCE.js.map +1 -0
- package/cdn/{hls-js-C4P_b2tT.js → hls-js-CiE4wOrG.js} +2 -2
- package/cdn/{hls-js-C4P_b2tT.js.map → hls-js-CiE4wOrG.js.map} +1 -1
- package/cdn/{hls-js-CATW7NBm.js → hls-js-DBKRCbQm.js} +2 -2
- package/cdn/{hls-js-CATW7NBm.js.map → hls-js-DBKRCbQm.js.map} +1 -1
- package/cdn/{hls-js-BEuVm0u9.js → hls-js-DX2NGCAr.js} +2 -2
- package/cdn/{hls-js-BEuVm0u9.js.map → hls-js-DX2NGCAr.js.map} +1 -1
- package/cdn/{hls-js-WCNy9MVh.js → hls-js-JeH8yvsP.js} +2 -2
- package/cdn/{hls-js-WCNy9MVh.js.map → hls-js-JeH8yvsP.js.map} +1 -1
- package/cdn/i18n-CpBDXf6M.js +2 -0
- package/cdn/{i18n-Dc7WM2xd.js.map → i18n-CpBDXf6M.js.map} +1 -1
- package/cdn/{i18n-Ch4t6EjV.js → i18n-D0nhPa0m.js} +2 -2
- package/cdn/{i18n-Ch4t6EjV.js.map → i18n-D0nhPa0m.js.map} +1 -1
- package/cdn/{live-button-element-DaHgnYdw.js → live-button-element-Co8z2LkI.js} +2 -2
- package/cdn/{live-button-element-DaHgnYdw.js.map → live-button-element-Co8z2LkI.js.map} +1 -1
- package/cdn/{live-button-element-Bae44kBN.js → live-button-element-zE-8uoR2.js} +3 -3
- package/cdn/{live-button-element-Bae44kBN.js.map → live-button-element-zE-8uoR2.js.map} +1 -1
- package/cdn/live-video-minimal.dev.js +11 -9
- package/cdn/live-video-minimal.dev.js.map +1 -1
- package/cdn/live-video-minimal.js +1 -1
- package/cdn/live-video-minimal.js.map +1 -1
- package/cdn/live-video.dev.js +12 -10
- package/cdn/live-video.dev.js.map +1 -1
- package/cdn/live-video.js +1 -1
- package/cdn/live-video.js.map +1 -1
- package/cdn/media/hls-audio.dev.js +1 -1
- package/cdn/media/hls-audio.js +1 -1
- package/cdn/media/hls-background-video.dev.js +1 -1
- package/cdn/media/hls-background-video.js +1 -1
- package/cdn/media/hls-video.dev.js +1 -1
- package/cdn/media/hls-video.js +1 -1
- package/cdn/media/mux-audio/hls-js.dev.js +1 -1
- package/cdn/media/mux-audio/hls-js.js +1 -1
- package/cdn/media/mux-audio/spf.dev.js +2 -2
- package/cdn/media/mux-audio/spf.js +1 -1
- package/cdn/media/mux-audio.dev.js +1 -1
- package/cdn/media/mux-audio.js +1 -1
- package/cdn/media/mux-background-video.dev.js +1 -1
- package/cdn/media/mux-background-video.js +1 -1
- package/cdn/media/mux-data.dev.js +1 -1
- package/cdn/media/mux-data.dev.js.map +1 -1
- package/cdn/media/mux-data.js +1 -1
- package/cdn/media/mux-data.js.map +1 -1
- package/cdn/media/mux-video/hls-js.dev.js +1 -1
- package/cdn/media/mux-video/hls-js.js +1 -1
- package/cdn/media/mux-video/spf.dev.js +2 -2
- package/cdn/media/mux-video/spf.js +1 -1
- package/cdn/media/mux-video.dev.js +1 -1
- package/cdn/media/mux-video.js +1 -1
- package/cdn/media/vimeo-video.dev.js +27 -5
- package/cdn/media/vimeo-video.dev.js.map +1 -1
- package/cdn/media/vimeo-video.js +1 -1
- package/cdn/media/vimeo-video.js.map +1 -1
- package/cdn/{media-Uxm0d3Vx.js → media-BI8caj07.js} +3 -3
- package/cdn/{media-Uxm0d3Vx.js.map → media-BI8caj07.js.map} +1 -1
- package/cdn/{media-COIe3uI5.js → media-BNuI0Im7.js} +19 -6
- package/cdn/media-BNuI0Im7.js.map +1 -0
- package/cdn/media-CQxFuDcv.js +2 -0
- package/cdn/{media-CPVSKLdk.js.map → media-CQxFuDcv.js.map} +1 -1
- package/cdn/media-D4tG62L5.js +2 -0
- package/cdn/{media-BTipOcKo.js.map → media-D4tG62L5.js.map} +1 -1
- package/cdn/{media-oa3nyL2o.js → media-DI6DvYm3.js} +3 -3
- package/cdn/{media-oa3nyL2o.js.map → media-DI6DvYm3.js.map} +1 -1
- package/cdn/media-DU3Xf5XR.js +2 -0
- package/cdn/media-DU3Xf5XR.js.map +1 -0
- package/cdn/media-mYKOAsk3.js +825 -0
- package/cdn/media-mYKOAsk3.js.map +1 -0
- package/cdn/media-zReLnePj.js +2 -0
- package/cdn/media-zReLnePj.js.map +1 -0
- package/cdn/{minimal-DQCLKRyR.js → minimal-3OmH0xQS.js} +2 -2
- package/cdn/minimal-3OmH0xQS.js.map +1 -0
- package/cdn/{minimal-DLosvq31.js → minimal-6w_Vyyl9.js} +2 -2
- package/cdn/minimal-6w_Vyyl9.js.map +1 -0
- package/cdn/minimal-BWLTn7oQ.js +2 -0
- package/cdn/minimal-BWLTn7oQ.js.map +1 -0
- package/cdn/minimal-DIGrklyh.js +2 -0
- package/cdn/minimal-DIGrklyh.js.map +1 -0
- package/cdn/{minimal-ui-CRKvUmB8.js → minimal-ui-BCIESK8f.js} +8 -8
- package/cdn/{minimal-ui-CRKvUmB8.js.map → minimal-ui-BCIESK8f.js.map} +1 -1
- package/cdn/minimal-ui-BXrq3z4U.js +2 -0
- package/cdn/{minimal-ui-Et2Wcn7r.js.map → minimal-ui-BXrq3z4U.js.map} +1 -1
- package/cdn/{minimal-ui-BpHxIo4z.js → minimal-ui-DEalpMk6.js} +4 -4
- package/cdn/{minimal-ui-BpHxIo4z.js.map → minimal-ui-DEalpMk6.js.map} +1 -1
- package/cdn/{minimal-ui-8iRZf_72.js → minimal-ui-vY3QgohH.js} +2 -2
- package/cdn/{minimal-ui-8iRZf_72.js.map → minimal-ui-vY3QgohH.js.map} +1 -1
- package/cdn/{player-DM9rUXg-.js → player-B3GlPF90.js} +2 -2
- package/cdn/{player-DM9rUXg-.js.map → player-B3GlPF90.js.map} +1 -1
- package/cdn/player-CtTC7qa5.js +2 -0
- package/cdn/{player-rCFqzWrA.js.map → player-CtTC7qa5.js.map} +1 -1
- package/cdn/player-DKkph8UM.js +2 -0
- package/cdn/{player-BRQLp5bX.js.map → player-DKkph8UM.js.map} +1 -1
- package/cdn/{player-CKTAtwit.js → player-DPDmTRvg.js} +2 -2
- package/cdn/{player-CKTAtwit.js.map → player-DPDmTRvg.js.map} +1 -1
- package/cdn/player-DrDd7LJi.js +2 -0
- package/cdn/{player-BloX4l6F.js.map → player-DrDd7LJi.js.map} +1 -1
- package/cdn/{player-B2oraRyD.js → player-L5UpZmT4.js} +2 -2
- package/cdn/{player-B2oraRyD.js.map → player-L5UpZmT4.js.map} +1 -1
- package/cdn/{poster-element-BGr1VQJB.js → poster-element-B5tdJ2ub.js} +179 -38
- package/cdn/poster-element-B5tdJ2ub.js.map +1 -0
- package/cdn/poster-element-B8QwXSU_.js +2 -0
- package/cdn/poster-element-B8QwXSU_.js.map +1 -0
- package/cdn/{error-surface-drmCvBVW.js → relocation-pipelines-Dh8CcgHw.js} +5 -343
- package/cdn/relocation-pipelines-Dh8CcgHw.js.map +1 -0
- package/cdn/relocation-pipelines-DunE4gcV.js +2 -0
- package/cdn/relocation-pipelines-DunE4gcV.js.map +1 -0
- package/cdn/{seek-button-element-XMTLIxZj.js → seek-button-element-5co-k0Dx.js} +4 -4
- package/cdn/seek-button-element-5co-k0Dx.js.map +1 -0
- package/cdn/{seek-button-element-FlgBVoGM.js → seek-button-element-B8TkILg-.js} +2 -2
- package/cdn/{seek-button-element-FlgBVoGM.js.map → seek-button-element-B8TkILg-.js.map} +1 -1
- package/cdn/shallow-equal-C7S8rj2f.js +16 -0
- package/cdn/shallow-equal-C7S8rj2f.js.map +1 -0
- package/cdn/shallow-equal-KV1zFqZi.js +2 -0
- package/cdn/shallow-equal-KV1zFqZi.js.map +1 -0
- package/cdn/{skin-element-DL-Kqa5f.js → skin-element-DrkI8xuM.js} +2 -2
- package/cdn/{skin-element-DL-Kqa5f.js.map → skin-element-DrkI8xuM.js.map} +1 -1
- package/cdn/{skin-element-DNytI-uu.js → skin-element-DvX6Bxsv.js} +2 -2
- package/cdn/{skin-element-DNytI-uu.js.map → skin-element-DvX6Bxsv.js.map} +1 -1
- package/cdn/{text-element-DeWBNKXb.js → text-element-BoY6AhMn.js} +2 -2
- package/cdn/{text-element-DeWBNKXb.js.map → text-element-BoY6AhMn.js.map} +1 -1
- package/cdn/{text-element-D88ArbZz.js → text-element-cg6l21cd.js} +2 -2
- package/cdn/{text-element-D88ArbZz.js.map → text-element-cg6l21cd.js.map} +1 -1
- package/cdn/time-slider-chapters-element-BfLjdnU4.js +2 -0
- package/cdn/time-slider-chapters-element-BfLjdnU4.js.map +1 -0
- package/cdn/{time-slider-chapters-element-DJ0abZXI.js → time-slider-chapters-element-CznFQWFm.js} +5 -5
- package/cdn/time-slider-chapters-element-CznFQWFm.js.map +1 -0
- package/cdn/{ui-BU3_2gDQ.js → ui-BwzqkJNK.js} +7 -7
- package/cdn/{ui-BU3_2gDQ.js.map → ui-BwzqkJNK.js.map} +1 -1
- package/cdn/ui-DayfItun.js +2 -0
- package/cdn/{ui-C0isALTQ.js.map → ui-DayfItun.js.map} +1 -1
- package/cdn/ui-PSnD-pv8.js +2 -0
- package/cdn/{ui-DVpkE1MN.js.map → ui-PSnD-pv8.js.map} +1 -1
- package/cdn/{ui-BsaWWE4y.js → ui-fnKp94a7.js} +9 -9
- package/cdn/{ui-BsaWWE4y.js.map → ui-fnKp94a7.js.map} +1 -1
- package/cdn/video-headless.dev.js +1 -1
- package/cdn/video-headless.js +1 -1
- package/cdn/video-minimal-ui.dev.js +2 -2
- package/cdn/video-minimal-ui.js +1 -1
- package/cdn/video-minimal.dev.js +8 -6
- package/cdn/video-minimal.dev.js.map +1 -1
- package/cdn/video-minimal.js +1 -1
- package/cdn/video-minimal.js.map +1 -1
- package/cdn/video-ui.dev.js +2 -2
- package/cdn/video-ui.js +1 -1
- package/cdn/video.dev.js +9 -7
- package/cdn/video.dev.js.map +1 -1
- package/cdn/video.js +1 -1
- package/cdn/video.js.map +1 -1
- package/dist/default/__generated__/skins/default-video/styles/buttons.css +132 -18
- package/dist/default/__generated__/skins/default-video/styles/captions.css +22 -0
- package/dist/default/__generated__/skins/default-video/styles/container.css +121 -8
- package/dist/default/__generated__/skins/default-video/styles/controls.css +436 -21
- package/dist/default/__generated__/skins/default-video/styles/dialog.css +169 -0
- package/dist/default/__generated__/skins/default-video/styles/indicator.css +459 -0
- package/dist/default/__generated__/skins/default-video/styles/menus.css +254 -0
- package/dist/default/__generated__/skins/default-video/styles/overlays.css +26 -2
- package/dist/default/__generated__/skins/default-video/styles/popups.css +338 -12
- package/dist/default/__generated__/skins/default-video/styles/poster.css +4 -4
- package/dist/default/__generated__/skins/default-video/styles/sliders.css +355 -31
- package/dist/default/__generated__/skins/default-video/styles/styles.css +2455 -216
- package/dist/default/__generated__/skins/default-video/styles/theme.css +4 -19
- package/dist/default/__generated__/skins/default-video/styles/video.css +29 -0
- package/dist/default/__generated__/skins/minimal-video/styles/base.css +25 -0
- package/dist/default/__generated__/skins/minimal-video/styles/buttons.css +266 -0
- package/dist/default/__generated__/skins/minimal-video/styles/captions.css +22 -0
- package/dist/default/__generated__/skins/minimal-video/styles/container.css +158 -0
- package/dist/default/__generated__/skins/minimal-video/styles/controls.css +182 -0
- package/dist/default/__generated__/skins/minimal-video/styles/dialog.css +77 -0
- package/dist/default/__generated__/skins/minimal-video/styles/indicator.css +322 -0
- package/dist/default/__generated__/skins/minimal-video/styles/menus.css +254 -0
- package/dist/default/__generated__/skins/minimal-video/styles/overlays.css +35 -0
- package/dist/default/__generated__/skins/minimal-video/styles/popups.css +371 -0
- package/dist/default/__generated__/skins/minimal-video/styles/poster.css +47 -0
- package/dist/default/__generated__/skins/minimal-video/styles/sliders.css +436 -0
- package/dist/default/__generated__/skins/minimal-video/styles/styles.css +2246 -0
- package/dist/default/__generated__/skins/minimal-video/styles/theme.css +7 -0
- package/dist/default/__generated__/skins/minimal-video/styles/video.css +29 -0
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
- package/dist/default/define/audio/minimal-skin.css +103 -101
- package/dist/default/define/audio/skin.css +68 -69
- package/dist/default/define/live-audio/minimal-skin.css +103 -101
- package/dist/default/define/live-audio/skin.css +68 -69
- package/dist/default/define/live-video/minimal-skin.css +140 -120
- package/dist/default/define/live-video/minimal-skin.js +1 -1
- package/dist/default/define/live-video/minimal-skin.js.map +1 -1
- package/dist/default/define/live-video/minimal-skin.tailwind.js +1 -1
- package/dist/default/define/live-video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/define/live-video/skin.css +89 -76
- package/dist/default/define/live-video/skin.js +1 -1
- package/dist/default/define/live-video/skin.js.map +1 -1
- package/dist/default/define/live-video/skin.tailwind.js +1 -1
- package/dist/default/define/live-video/skin.tailwind.js.map +1 -1
- package/dist/default/define/ui/gesture.js +7 -0
- package/dist/default/define/ui/gesture.js.map +1 -0
- package/dist/default/define/video/minimal-skin.css +140 -120
- package/dist/default/define/video/minimal-skin.js +1 -1
- package/dist/default/define/video/minimal-skin.js.map +1 -1
- package/dist/default/define/video/minimal-skin.tailwind.js +1 -1
- package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/define/video/skin.css +89 -76
- package/dist/default/define/video/skin.js +1 -1
- package/dist/default/define/video/skin.js.map +1 -1
- package/dist/default/define/video/skin.tailwind.js +1 -1
- package/dist/default/define/video/skin.tailwind.js.map +1 -1
- package/dist/default/icons/dist/element/default/icons.js +1 -1
- package/dist/default/icons/dist/element/default/icons.js.map +1 -1
- package/dist/default/icons/dist/element/minimal/icons.js +1 -1
- package/dist/default/icons/dist/element/minimal/icons.js.map +1 -1
- package/dist/default/icons/dist/html/default/airplay-exit.js +1 -1
- package/dist/default/icons/dist/html/default/airplay-exit.js.map +1 -1
- package/dist/default/icons/dist/html/minimal/airplay-exit.js +1 -1
- package/dist/default/icons/dist/html/minimal/airplay-exit.js.map +1 -1
- package/dist/default/icons/dist/render/default/index.js +1 -1
- package/dist/default/icons/dist/render/default/index.js.map +1 -1
- package/dist/default/icons/dist/render/minimal/index.js +1 -1
- package/dist/default/icons/dist/render/minimal/index.js.map +1 -1
- package/dist/default/media/hls-background-video/media.js +18 -0
- package/dist/default/media/hls-background-video/media.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/button.js +3 -1
- package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/poster.js +8 -1
- package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js +10 -10
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +2 -2
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +6 -5
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +4 -4
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
- package/dist/default/store/provider-mixin.js +22 -8
- package/dist/default/store/provider-mixin.js.map +1 -1
- package/dist/default/ui/audio-track-radio-group/audio-track-radio-group-element.js +1 -1
- package/dist/default/ui/audio-track-radio-group/audio-track-radio-group-element.js.map +1 -1
- package/dist/default/ui/captions-radio-group/captions-radio-group-element.js +1 -1
- package/dist/default/ui/captions-radio-group/captions-radio-group-element.js.map +1 -1
- package/dist/default/ui/gesture/gesture-element.js.map +1 -1
- package/dist/default/ui/hotkey/hotkey-element.js.map +1 -1
- package/dist/default/ui/menu/context.js.map +1 -1
- package/dist/default/ui/menu/menu-element.js +28 -27
- package/dist/default/ui/menu/menu-element.js.map +1 -1
- package/dist/default/ui/menu/menu-radio-group-element.js +14 -14
- package/dist/default/ui/menu/menu-radio-group-element.js.map +1 -1
- package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group-element.js +1 -1
- package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group-element.js.map +1 -1
- package/dist/default/ui/poster/poster-element.js +138 -8
- package/dist/default/ui/poster/poster-element.js.map +1 -1
- package/dist/default/ui/quality-radio-group/quality-radio-group-element.js +1 -1
- package/dist/default/ui/quality-radio-group/quality-radio-group-element.js.map +1 -1
- package/dist/default/ui/slider/slider-preview-element.js.map +1 -1
- package/dist/dev/__generated__/skins/default-video/styles/buttons.css +132 -18
- package/dist/dev/__generated__/skins/default-video/styles/captions.css +22 -0
- package/dist/dev/__generated__/skins/default-video/styles/container.css +121 -8
- package/dist/dev/__generated__/skins/default-video/styles/controls.css +436 -21
- package/dist/dev/__generated__/skins/default-video/styles/dialog.css +169 -0
- package/dist/dev/__generated__/skins/default-video/styles/indicator.css +459 -0
- package/dist/dev/__generated__/skins/default-video/styles/menus.css +254 -0
- package/dist/dev/__generated__/skins/default-video/styles/overlays.css +26 -2
- package/dist/dev/__generated__/skins/default-video/styles/popups.css +338 -12
- package/dist/dev/__generated__/skins/default-video/styles/poster.css +4 -4
- package/dist/dev/__generated__/skins/default-video/styles/sliders.css +355 -31
- package/dist/dev/__generated__/skins/default-video/styles/styles.css +2455 -216
- package/dist/dev/__generated__/skins/default-video/styles/theme.css +4 -19
- package/dist/dev/__generated__/skins/default-video/styles/video.css +29 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/base.css +25 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/buttons.css +266 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/captions.css +22 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/container.css +158 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/controls.css +182 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/dialog.css +77 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/indicator.css +322 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/menus.css +254 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/overlays.css +35 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/popups.css +371 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/poster.css +47 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/sliders.css +436 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/styles.css +2246 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/theme.css +7 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/video.css +29 -0
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
- package/dist/dev/define/audio/minimal-skin.css +103 -101
- package/dist/dev/define/audio/skin.css +68 -69
- package/dist/dev/define/live-audio/minimal-skin.css +103 -101
- package/dist/dev/define/live-audio/skin.css +68 -69
- package/dist/dev/define/live-video/minimal-skin.css +140 -120
- package/dist/dev/define/live-video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/define/live-video/minimal-skin.js +3 -1
- package/dist/dev/define/live-video/minimal-skin.js.map +1 -1
- package/dist/dev/define/live-video/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/live-video/minimal-skin.tailwind.js +3 -1
- package/dist/dev/define/live-video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/define/live-video/skin.css +89 -76
- package/dist/dev/define/live-video/skin.d.ts.map +1 -1
- package/dist/dev/define/live-video/skin.js +3 -1
- package/dist/dev/define/live-video/skin.js.map +1 -1
- package/dist/dev/define/live-video/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/live-video/skin.tailwind.js +4 -2
- package/dist/dev/define/live-video/skin.tailwind.js.map +1 -1
- package/dist/dev/define/ui/gesture.d.ts +8 -0
- package/dist/dev/define/ui/gesture.d.ts.map +1 -0
- package/dist/dev/define/ui/gesture.js +7 -0
- package/dist/dev/define/ui/gesture.js.map +1 -0
- package/dist/dev/define/video/minimal-skin.css +140 -120
- package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/define/video/minimal-skin.js +3 -1
- package/dist/dev/define/video/minimal-skin.js.map +1 -1
- package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/video/minimal-skin.tailwind.js +3 -1
- package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/define/video/skin.css +89 -76
- package/dist/dev/define/video/skin.d.ts.map +1 -1
- package/dist/dev/define/video/skin.js +3 -1
- package/dist/dev/define/video/skin.js.map +1 -1
- package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/video/skin.tailwind.js +4 -2
- package/dist/dev/define/video/skin.tailwind.js.map +1 -1
- package/dist/dev/media/hls-background-video/media.d.ts +16 -0
- package/dist/dev/media/hls-background-video/media.d.ts.map +1 -1
- package/dist/dev/media/hls-background-video/media.js +18 -0
- package/dist/dev/media/hls-background-video/media.js.map +1 -1
- package/dist/dev/packages/icons/dist/element/default/icons.js +1 -1
- package/dist/dev/packages/icons/dist/element/default/icons.js.map +1 -1
- package/dist/dev/packages/icons/dist/element/minimal/icons.js +1 -1
- package/dist/dev/packages/icons/dist/element/minimal/icons.js.map +1 -1
- package/dist/dev/packages/icons/dist/html/default/airplay-exit.js +1 -1
- package/dist/dev/packages/icons/dist/html/default/airplay-exit.js.map +1 -1
- package/dist/dev/packages/icons/dist/html/minimal/airplay-exit.js +1 -1
- package/dist/dev/packages/icons/dist/html/minimal/airplay-exit.js.map +1 -1
- package/dist/dev/packages/icons/dist/render/default/index.js +1 -1
- package/dist/dev/packages/icons/dist/render/default/index.js.map +1 -1
- package/dist/dev/packages/icons/dist/render/minimal/index.js +1 -1
- package/dist/dev/packages/icons/dist/render/minimal/index.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/button.js +3 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/poster.js +8 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/slider.js +10 -10
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js +2 -2
- package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js +6 -5
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/shared/tailwind/icon-state.js +4 -4
- package/dist/dev/packages/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
- package/dist/dev/store/provider-mixin.d.ts.map +1 -1
- package/dist/dev/store/provider-mixin.js +24 -8
- package/dist/dev/store/provider-mixin.js.map +1 -1
- package/dist/dev/store/types.d.ts +2 -2
- package/dist/dev/store/types.d.ts.map +1 -1
- package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group-element.js +1 -1
- package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group-element.js.map +1 -1
- package/dist/dev/ui/captions-radio-group/captions-radio-group-element.js +1 -1
- package/dist/dev/ui/captions-radio-group/captions-radio-group-element.js.map +1 -1
- package/dist/dev/ui/gesture/gesture-element.d.ts +7 -7
- package/dist/dev/ui/gesture/gesture-element.d.ts.map +1 -1
- package/dist/dev/ui/gesture/gesture-element.js.map +1 -1
- package/dist/dev/ui/hotkey/hotkey-element.d.ts +6 -6
- package/dist/dev/ui/hotkey/hotkey-element.d.ts.map +1 -1
- package/dist/dev/ui/hotkey/hotkey-element.js.map +1 -1
- package/dist/dev/ui/menu/context.d.ts +8 -8
- package/dist/dev/ui/menu/context.d.ts.map +1 -1
- package/dist/dev/ui/menu/context.js.map +1 -1
- package/dist/dev/ui/menu/menu-element.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-element.js +28 -27
- package/dist/dev/ui/menu/menu-element.js.map +1 -1
- package/dist/dev/ui/menu/menu-radio-group-element.d.ts +1 -1
- package/dist/dev/ui/menu/menu-radio-group-element.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-radio-group-element.js +14 -14
- package/dist/dev/ui/menu/menu-radio-group-element.js.map +1 -1
- package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group-element.js +1 -1
- package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group-element.js.map +1 -1
- package/dist/dev/ui/poster/poster-element.d.ts +20 -18
- package/dist/dev/ui/poster/poster-element.d.ts.map +1 -1
- package/dist/dev/ui/poster/poster-element.js +145 -8
- package/dist/dev/ui/poster/poster-element.js.map +1 -1
- package/dist/dev/ui/quality-radio-group/quality-radio-group-element.js +1 -1
- package/dist/dev/ui/quality-radio-group/quality-radio-group-element.js.map +1 -1
- package/dist/dev/ui/slider/slider-preview-element.d.ts +2 -2
- package/dist/dev/ui/slider/slider-preview-element.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-preview-element.js.map +1 -1
- package/docs/README.md +1 -1
- package/docs/concepts/skins.md +91 -78
- package/docs/how-to/customize-skins.md +411 -377
- package/docs/reference/menu.md +3 -19
- package/docs/reference/popover.md +2 -2
- package/docs/reference/poster.md +211 -21
- package/docs/reference/slider.md +1 -1
- package/docs/reference/time-slider.md +1 -1
- package/docs/reference/tooltip.md +6 -6
- package/docs/reference/volume-slider.md +1 -1
- package/package.json +14 -9
- package/cdn/adapter-Bk03SAxn.js +0 -2
- package/cdn/adapter-Bk03SAxn.js.map +0 -1
- package/cdn/adapter-XTen-YVQ.js.map +0 -1
- package/cdn/compounds-BEO1d3ZM.js +0 -8
- package/cdn/compounds-BEO1d3ZM.js.map +0 -1
- package/cdn/compounds-nk9RJtBK.js.map +0 -1
- package/cdn/create-player-DK9WOywd.js.map +0 -1
- package/cdn/create-player-hSdQMP5p.js +0 -2
- package/cdn/create-player-hSdQMP5p.js.map +0 -1
- package/cdn/default-BqQDVloS.js.map +0 -1
- package/cdn/default-CXWVp2oG.js +0 -2
- package/cdn/default-CXWVp2oG.js.map +0 -1
- package/cdn/default-Dw6cIEqT.js +0 -2
- package/cdn/default-Dw6cIEqT.js.map +0 -1
- package/cdn/default-I2LasfxC.js.map +0 -1
- package/cdn/error-surface-DCT1m2p1.js +0 -2
- package/cdn/error-surface-DCT1m2p1.js.map +0 -1
- package/cdn/error-surface-drmCvBVW.js.map +0 -1
- package/cdn/gesture-element-6Ld1YwIL.js.map +0 -1
- package/cdn/gesture-element-BC48ucj9.js +0 -2
- package/cdn/gesture-element-BC48ucj9.js.map +0 -1
- package/cdn/i18n-Dc7WM2xd.js +0 -2
- package/cdn/media-BTipOcKo.js +0 -2
- package/cdn/media-Bmablv4g.js +0 -2
- package/cdn/media-Bmablv4g.js.map +0 -1
- package/cdn/media-COIe3uI5.js.map +0 -1
- package/cdn/media-CPVSKLdk.js +0 -2
- package/cdn/media-Dq4zmIJa.js +0 -2
- package/cdn/media-Dq4zmIJa.js.map +0 -1
- package/cdn/media-suYcjCG2.js +0 -445
- package/cdn/media-suYcjCG2.js.map +0 -1
- package/cdn/minimal-BedCvMBG.js +0 -2
- package/cdn/minimal-BedCvMBG.js.map +0 -1
- package/cdn/minimal-BoP112ye.js +0 -2
- package/cdn/minimal-BoP112ye.js.map +0 -1
- package/cdn/minimal-DLosvq31.js.map +0 -1
- package/cdn/minimal-DQCLKRyR.js.map +0 -1
- package/cdn/minimal-ui-Et2Wcn7r.js +0 -2
- package/cdn/player-BRQLp5bX.js +0 -2
- package/cdn/player-BloX4l6F.js +0 -2
- package/cdn/player-rCFqzWrA.js +0 -2
- package/cdn/poster-element-BGr1VQJB.js.map +0 -1
- package/cdn/poster-element-DBmgOyep.js +0 -2
- package/cdn/poster-element-DBmgOyep.js.map +0 -1
- package/cdn/seek-button-element-XMTLIxZj.js.map +0 -1
- package/cdn/select-tracks-nRPBa1NC.js.map +0 -1
- package/cdn/select-tracks-xV1s28xD.js +0 -59
- package/cdn/select-tracks-xV1s28xD.js.map +0 -1
- package/cdn/time-slider-chapters-element-DJ0abZXI.js.map +0 -1
- package/cdn/time-slider-chapters-element-DW8YyJn8.js +0 -2
- package/cdn/time-slider-chapters-element-DW8YyJn8.js.map +0 -1
- package/cdn/ui-C0isALTQ.js +0 -2
- package/cdn/ui-DVpkE1MN.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seek-button-element-5co-k0Dx.js","names":["#props","#media","resolveText","#props","#media","resolveText","#props","#media","resolveText","#mediaState","#core","#i18n","#options"],"sources":["../../core/dist/dev/core/ui/playback-rate-button/playback-rate-button-core.js","../../core/dist/dev/core/ui/playback-rate-button/playback-rate-button-data-attrs.js","../../core/dist/dev/core/ui/playback-rate-radio-group/playback-rate-radio-group-core.js","../../core/dist/dev/core/ui/playback-rate-radio-group/playback-rate-radio-group-data-attrs.js","../../core/dist/dev/i18n/text/seek.js","../../core/dist/dev/core/ui/seek-button/seek-button-core.js","../../core/dist/dev/core/ui/seek-button/seek-button-data-attrs.js","../src/ui/playback-rate-button/playback-rate-button-element.ts","../src/ui/playback-rate-radio-group/playback-rate-radio-group-element.ts","../src/ui/seek-button/seek-button-element.ts"],"sourcesContent":["import { resolveText } from \"../../i18n/resolve-text.js\";\nimport { resolveLabel } from \"../utils/resolve-label.js\";\nimport { rateText } from \"../../../i18n/text/playback.js\";\nimport { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\n//#region src/core/ui/playback-rate-button/playback-rate-button-core.ts\nvar PlaybackRateButtonCore = class PlaybackRateButtonCore {\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tdisabled: false,\n\t\tmenuTrigger: false\n\t};\n\tstate = createState({\n\t\trate: 1,\n\t\tlabel: \"\"\n\t});\n\t#props = { ...PlaybackRateButtonCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, PlaybackRateButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst custom = resolveLabel(this.#props.label, state);\n\t\tif (custom !== void 0) return custom;\n\t\treturn rateText;\n\t}\n\tgetLabelParams(state) {\n\t\tif (resolveLabel(this.#props.label, state) !== void 0) return void 0;\n\t\treturn { rate: state.rate };\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": this.#props.disabled ? \"true\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tthis.state.patch({ rate: media.playbackRate });\n\t\tthis.state.patch({ label: resolveText(this.getLabel(this.state.current)) });\n\t\treturn this.state.current;\n\t}\n\tcycle(media) {\n\t\tif (this.#props.disabled) return;\n\t\tif (this.#props.menuTrigger) return;\n\t\tconst { playbackRates, playbackRate } = media;\n\t\tif (playbackRates.length === 0) return;\n\t\tconst idx = playbackRates.indexOf(playbackRate);\n\t\tconst next = idx === -1 ? playbackRates.find((r) => r > playbackRate) ?? playbackRates[0] : playbackRates[(idx + 1) % playbackRates.length];\n\t\tmedia.setPlaybackRate(next);\n\t}\n};\n//#endregion\nexport { PlaybackRateButtonCore };\n\n//# sourceMappingURL=playback-rate-button-core.js.map","//#region src/core/ui/playback-rate-button/playback-rate-button-data-attrs.ts\nconst PlaybackRateButtonDataAttrs = { \n/** Current playback rate. */\nrate: \"data-rate\" };\n//#endregion\nexport { PlaybackRateButtonDataAttrs };\n\n//# sourceMappingURL=playback-rate-button-data-attrs.js.map","import { resolveText } from \"../../i18n/resolve-text.js\";\nimport { resolveLabel } from \"../utils/resolve-label.js\";\nimport { playbackRateText } from \"../../../i18n/text/menu.js\";\nimport { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\nimport { isUndefined } from \"@videojs/utils/predicate\";\n//#region src/core/ui/playback-rate-radio-group/playback-rate-radio-group-core.ts\nfunction formatPlaybackRate(rate) {\n\treturn `${rate}×`;\n}\nvar PlaybackRateRadioGroupCore = class PlaybackRateRadioGroupCore {\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tformatRate: formatPlaybackRate,\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\trate: 1,\n\t\tvalue: \"1\",\n\t\toptions: [],\n\t\tdisabled: true,\n\t\thidden: true,\n\t\tavailability: \"unavailable\",\n\t\tlabel: \"\"\n\t});\n\t#props = { ...PlaybackRateRadioGroupCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, PlaybackRateRadioGroupCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst custom = resolveLabel(this.#props.label, state);\n\t\tif (custom !== void 0) return custom;\n\t\treturn playbackRateText;\n\t}\n\tgetLabelParams(_state) {}\n\tgetRateLabel(rate) {\n\t\treturn this.#props.formatRate(rate);\n\t}\n\tgetRateValue(rate) {\n\t\treturn String(rate);\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": state.disabled ? \"true\" : void 0,\n\t\t\thidden: state.hidden ? \"\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tconst availability = media.playbackRates.length > 0 ? \"available\" : \"unavailable\";\n\t\tthis.state.patch({\n\t\t\trate: media.playbackRate,\n\t\t\tvalue: this.getRateValue(media.playbackRate),\n\t\t\toptions: media.playbackRates.map((rate) => ({\n\t\t\t\trate,\n\t\t\t\tvalue: this.getRateValue(rate),\n\t\t\t\tlabel: this.getRateLabel(rate),\n\t\t\t\tdisabled: false\n\t\t\t})),\n\t\t\tdisabled: this.#props.disabled || media.playbackRates.length === 0,\n\t\t\thidden: availability === \"unavailable\",\n\t\t\tavailability\n\t\t});\n\t\tthis.state.patch({ label: resolveText(this.getLabel(this.state.current)) });\n\t\treturn this.state.current;\n\t}\n\tselect(media, rate) {\n\t\tif (this.#props.disabled) return;\n\t\tif (!media.playbackRates.includes(rate)) return;\n\t\tmedia.setPlaybackRate(rate);\n\t}\n\tselectValue(media, value) {\n\t\tconst rate = media.playbackRates.find((candidate) => this.getRateValue(candidate) === value);\n\t\tif (isUndefined(rate)) return;\n\t\tthis.select(media, rate);\n\t}\n};\n//#endregion\nexport { PlaybackRateRadioGroupCore };\n\n//# sourceMappingURL=playback-rate-radio-group-core.js.map","//#region src/core/ui/playback-rate-radio-group/playback-rate-radio-group-data-attrs.ts\nconst PlaybackRateRadioGroupDataAttrs = {\n\t/** Current playback rate. */\n\trate: \"data-rate\",\n\t/** Present when playback rate selection is disabled. */\n\tdisabled: \"data-disabled\",\n\t/** Present when playback rate selection is unavailable. */\n\thidden: \"data-hidden\",\n\t/** Indicates playback rate availability (`available` or `unavailable`). */\n\tavailability: \"data-availability\"\n};\n//#endregion\nexport { PlaybackRateRadioGroupDataAttrs };\n\n//# sourceMappingURL=playback-rate-radio-group-data-attrs.js.map","//#region src/core/i18n/text/seek.ts\nconst prefix = \"seek.\";\nconst forwardText = {\n\tkey: `${prefix}forward`,\n\ttext: \"Seek forward {seconds} seconds\"\n};\nconst backwardText = {\n\tkey: `${prefix}backward`,\n\ttext: \"Seek backward {seconds} seconds\"\n};\n//#endregion\nexport { backwardText, forwardText };\n\n//# sourceMappingURL=seek.js.map","import { resolveText } from \"../../i18n/resolve-text.js\";\nimport { resolveLabel } from \"../utils/resolve-label.js\";\nimport { backwardText, forwardText } from \"../../../i18n/text/seek.js\";\nimport { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\n//#region src/core/ui/seek-button/seek-button-core.ts\nvar SeekButtonCore = class SeekButtonCore {\n\tstatic defaultProps = {\n\t\tseconds: 30,\n\t\tlabel: \"\",\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\tseeking: false,\n\t\tdirection: \"forward\",\n\t\tlabel: \"\"\n\t});\n\t#props = { ...SeekButtonCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, SeekButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst custom = resolveLabel(this.#props.label, state);\n\t\tif (custom !== void 0) return custom;\n\t\treturn state.direction === \"backward\" ? backwardText : forwardText;\n\t}\n\tgetLabelParams(state) {\n\t\tif (resolveLabel(this.#props.label, state) !== void 0) return void 0;\n\t\treturn { seconds: Math.abs(this.#props.seconds) };\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": this.#props.disabled ? \"true\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tconst direction = this.#props.seconds < 0 ? \"backward\" : \"forward\";\n\t\tthis.state.patch({\n\t\t\tseeking: media.seeking,\n\t\t\tdirection\n\t\t});\n\t\tthis.state.patch({ label: resolveText(this.getLabel(this.state.current)) });\n\t\treturn this.state.current;\n\t}\n\tasync seek(media) {\n\t\tif (this.#props.disabled) return;\n\t\tawait media.seek(media.currentTime + this.#props.seconds);\n\t}\n};\n//#endregion\nexport { SeekButtonCore };\n\n//# sourceMappingURL=seek-button-core.js.map","//#region src/core/ui/seek-button/seek-button-data-attrs.ts\nconst SeekButtonDataAttrs = {\n\t/** Present when a seek is in progress. */\n\tseeking: \"data-seeking\",\n\t/** Indicates the seek direction: `\"forward\"` or `\"backward\"`. */\n\tdirection: \"data-direction\"\n};\n//#endregion\nexport { SeekButtonDataAttrs };\n\n//# sourceMappingURL=seek-button-data-attrs.js.map","import { PlaybackRateButtonCore, PlaybackRateButtonDataAttrs } from '@videojs/core';\nimport { applyElementProps, selectPlaybackRate, type UIEvent } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport type { MediaPlaybackRateState } from '@videojs/media';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PlaybackRateButtonElement extends MediaButtonElement<PlaybackRateButtonCore> {\n static readonly tagName = 'media-playback-rate-button';\n\n static override properties = {\n label: { type: String },\n disabled: { type: Boolean },\n commandfor: { type: String },\n } satisfies PropertyDeclarationMap<'label' | 'disabled' | 'commandfor'>;\n\n commandfor: string | undefined = undefined;\n\n protected readonly core = new PlaybackRateButtonCore();\n protected readonly stateAttrMap = PlaybackRateButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlaybackRate);\n protected override readonly hotkeyAction = 'speedUp';\n\n protected activate(state: MediaPlaybackRateState, event?: UIEvent): void {\n if (this.commandfor) {\n if (event instanceof KeyboardEvent) {\n // Custom elements do not synthesize a click from keyboard activation.\n // Dispatch one so the linked menu follows its normal open lifecycle.\n this.click();\n }\n return;\n }\n this.core.cycle(state);\n }\n\n protected override getIsButtonDisabled(): boolean {\n const media = this.mediaState.value;\n if (super.getIsButtonDisabled()) return true;\n if (this.commandfor && media && media.playbackRates.length === 0) return true;\n return false;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n\n if (changed.has('commandfor')) {\n if (this.commandfor) {\n this.setAttribute('commandfor', this.commandfor);\n } else {\n this.removeAttribute('commandfor');\n }\n }\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.mediaState.value;\n if (!media || !this.commandfor) return;\n\n applyElementProps(this, {\n 'aria-disabled': this.getIsButtonDisabled() ? 'true' : undefined,\n });\n }\n}\n\nexport namespace PlaybackRateButtonElement {\n export type State = PlaybackRateButtonCore.State;\n}\n","import {\n PlaybackRateRadioGroupCore,\n PlaybackRateRadioGroupDataAttrs,\n type PlaybackRateRadioGroupOption,\n} from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectPlaybackRate } from '@videojs/core/dom';\nimport { translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MenuRadioGroupElement } from '../menu/menu-radio-group-element';\nimport { RadioOptionsController } from '../radio-options/radio-options-controller';\n\nexport class PlaybackRateRadioGroupElement extends MenuRadioGroupElement {\n static override readonly tagName = 'media-playback-rate-radio-group';\n\n static override properties = {\n ...MenuRadioGroupElement.properties,\n disabled: { type: Boolean },\n } satisfies PropertyDeclarationMap<'value' | 'disabled'>;\n\n disabled = false;\n formatRate = PlaybackRateRadioGroupCore.defaultProps.formatRate;\n\n readonly #core = new PlaybackRateRadioGroupCore();\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #mediaState = new PlayerController(this, playerContext, selectPlaybackRate);\n readonly #options = new RadioOptionsController<PlaybackRateRadioGroupOption>(this, {\n setItemAttributes: (item, option) => item.setAttribute('data-rate', option.value),\n onValueChange: (value) => {\n const media = this.#mediaState.value;\n if (media) this.#core.selectValue(media, value);\n },\n });\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n const media = this.#mediaState.value;\n let state: PlaybackRateRadioGroupCore.State | null = null;\n\n if (media) {\n this.#core.setProps({ formatRate: this.formatRate, disabled: this.disabled });\n this.#core.setMedia(media);\n state = this.#core.getState();\n\n this.applyDefaultAriaLabel(\n translateText(this.#core.getLabel(state), this.#i18n.value, this.#core.getLabelParams(state))\n );\n this.#options.sync(state, this.#i18n.value, this.#i18n.locale);\n this.publishMenuTriggerState(state.disabled, state.availability);\n }\n\n super.update(changed);\n\n if (state) applyStateDataAttrs(this, state, PlaybackRateRadioGroupDataAttrs);\n }\n}\n\nexport namespace PlaybackRateRadioGroupElement {\n export type State = PlaybackRateRadioGroupCore.State;\n}\n","import { SeekButtonCore, SeekButtonDataAttrs } from '@videojs/core';\nimport { selectTime } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap } from '@videojs/element';\nimport type { MediaTimeState } from '@videojs/media';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class SeekButtonElement extends MediaButtonElement<SeekButtonCore> {\n static readonly tagName = 'media-seek-button';\n\n static override properties: PropertyDeclarationMap = {\n ...MediaButtonElement.properties,\n seconds: { type: Number },\n };\n\n seconds = SeekButtonCore.defaultProps.seconds;\n\n protected readonly core = new SeekButtonCore();\n protected readonly stateAttrMap = SeekButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectTime);\n protected override readonly hotkeyAction = 'seekStep';\n\n protected override get hotkeyValue(): number | undefined {\n return this.seconds;\n }\n\n protected activate(state: MediaTimeState): void {\n this.core.seek(state);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as e}from"./predicate-LbFu-fPH.js";import{
|
|
2
|
-
//# sourceMappingURL=seek-button-element-
|
|
1
|
+
import{u as e}from"./predicate-LbFu-fPH.js";import{B as t,C as n,I as r,K as i,S as a,_ as o,g as s,rt as c,v as l,w as u,y as d}from"./compounds-C4YYLyL2.js";import{r as f}from"./translate-text-TzSgu_oe.js";import{r as p}from"./context-C2rsoDxk.js";import{c as m,r as h}from"./container-element-Dd0ZCdhK.js";import{k as g,n as _}from"./create-player-BU8LDJDL.js";import{translateText as v}from"./i18n.js";var y=class e{static defaultProps={label:``,disabled:!1,menuTrigger:!1};state=g({rate:1,label:``});#e={...e.defaultProps};#t=null;constructor(e){e&&this.setProps(e)}setProps(t){this.#e=c(t,e.defaultProps)}getLabel(e){let t=a(this.#e.label,e);return t===void 0?d:t}getLabelParams(e){if(a(this.#e.label,e)===void 0)return{rate:e.rate}}getAttrs(e){return{"aria-label":this.getLabel(e),"aria-disabled":this.#e.disabled?`true`:void 0}}setMedia(e){this.#t=e}getState(){let e=this.#t;return this.state.patch({rate:e.playbackRate}),this.state.patch({label:f(this.getLabel(this.state.current))}),this.state.current}cycle(e){if(this.#e.disabled||this.#e.menuTrigger)return;let{playbackRates:t,playbackRate:n}=e;if(t.length===0)return;let r=t.indexOf(n),i=r===-1?t.find(e=>e>n)??t[0]:t[(r+1)%t.length];e.setPlaybackRate(i)}};const b={rate:`data-rate`};function x(e){return`${e}×`}var S=class t{static defaultProps={label:``,formatRate:x,disabled:!1};state=g({rate:1,value:`1`,options:[],disabled:!0,hidden:!0,availability:`unavailable`,label:``});#e={...t.defaultProps};#t=null;constructor(e){e&&this.setProps(e)}setProps(e){this.#e=c(e,t.defaultProps)}getLabel(e){let t=a(this.#e.label,e);return t===void 0?i:t}getLabelParams(e){}getRateLabel(e){return this.#e.formatRate(e)}getRateValue(e){return String(e)}getAttrs(e){return{"aria-label":this.getLabel(e),"aria-disabled":e.disabled?`true`:void 0,hidden:e.hidden?``:void 0}}setMedia(e){this.#t=e}getState(){let e=this.#t,t=e.playbackRates.length>0?`available`:`unavailable`;return this.state.patch({rate:e.playbackRate,value:this.getRateValue(e.playbackRate),options:e.playbackRates.map(e=>({rate:e,value:this.getRateValue(e),label:this.getRateLabel(e),disabled:!1})),disabled:this.#e.disabled||e.playbackRates.length===0,hidden:t===`unavailable`,availability:t}),this.state.patch({label:f(this.getLabel(this.state.current))}),this.state.current}select(e,t){this.#e.disabled||e.playbackRates.includes(t)&&e.setPlaybackRate(t)}selectValue(t,n){let r=t.playbackRates.find(e=>this.getRateValue(e)===n);e(r)||this.select(t,r)}};const C={rate:`data-rate`,disabled:`data-disabled`,hidden:`data-hidden`,availability:`data-availability`},w=`seek.`,T={key:`${w}forward`,text:`Seek forward {seconds} seconds`},E={key:`${w}backward`,text:`Seek backward {seconds} seconds`};var D=class e{static defaultProps={seconds:30,label:``,disabled:!1};state=g({seeking:!1,direction:`forward`,label:``});#e={...e.defaultProps};#t=null;constructor(e){e&&this.setProps(e)}setProps(t){this.#e=c(t,e.defaultProps)}getLabel(e){let t=a(this.#e.label,e);return t===void 0?e.direction===`backward`?E:T:t}getLabelParams(e){if(a(this.#e.label,e)===void 0)return{seconds:Math.abs(this.#e.seconds)}}getAttrs(e){return{"aria-label":this.getLabel(e),"aria-disabled":this.#e.disabled?`true`:void 0}}setMedia(e){this.#t=e}getState(){let e=this.#t,t=this.#e.seconds<0?`backward`:`forward`;return this.state.patch({seeking:e.seeking,direction:t}),this.state.patch({label:f(this.getLabel(this.state.current))}),this.state.current}async seek(e){this.#e.disabled||await e.seek(e.currentTime+this.#e.seconds)}};const O={seeking:`data-seeking`,direction:`data-direction`};var k=class extends l{constructor(...e){super(...e),this.commandfor=void 0,this.core=new y,this.stateAttrMap=b,this.mediaState=new _(this,p,r),this.hotkeyAction=`speedUp`}static{this.tagName=`media-playback-rate-button`}static{this.properties={label:{type:String},disabled:{type:Boolean},commandfor:{type:String}}}activate(e,t){if(this.commandfor){t instanceof KeyboardEvent&&this.click();return}this.core.cycle(e)}getIsButtonDisabled(){let e=this.mediaState.value;return!!(super.getIsButtonDisabled()||this.commandfor&&e&&e.playbackRates.length===0)}willUpdate(e){super.willUpdate(e),e.has(`commandfor`)&&(this.commandfor?this.setAttribute(`commandfor`,this.commandfor):this.removeAttribute(`commandfor`))}update(e){super.update(e),!(!this.mediaState.value||!this.commandfor)&&u(this,{"aria-disabled":this.getIsButtonDisabled()?`true`:void 0})}},A=class extends o{constructor(...e){super(...e),this.disabled=!1,this.formatRate=S.defaultProps.formatRate,this.#e=new S,this.#t=new h(this,m),this.#n=new _(this,p,r),this.#r=new s(this,{setItemAttributes:(e,t)=>e.setAttribute(`data-rate`,t.value),onValueChange:e=>{let t=this.#n.value;t&&this.#e.selectValue(t,e)}})}static{this.tagName=`media-playback-rate-radio-group`}static{this.properties={...o.properties,disabled:{type:Boolean}}}#e;#t;#n;#r;connectedCallback(){super.connectedCallback(),this.destroyed}update(e){let t=this.#n.value,r=null;t&&(this.#e.setProps({formatRate:this.formatRate,disabled:this.disabled}),this.#e.setMedia(t),r=this.#e.getState(),this.applyDefaultAriaLabel(v(this.#e.getLabel(r),this.#t.value,this.#e.getLabelParams(r))),this.#r.sync(r,this.#t.value,this.#t.locale),this.publishMenuTriggerState(r.disabled,r.availability)),super.update(e),r&&n(this,r,C)}},j=class extends l{constructor(...e){super(...e),this.seconds=D.defaultProps.seconds,this.core=new D,this.stateAttrMap=O,this.mediaState=new _(this,p,t),this.hotkeyAction=`seekStep`}static{this.tagName=`media-seek-button`}static{this.properties={...l.properties,seconds:{type:Number}}}get hotkeyValue(){return this.seconds}activate(e){this.core.seek(e)}};export{A as n,k as r,j as t};
|
|
2
|
+
//# sourceMappingURL=seek-button-element-B8TkILg-.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seek-button-element-FlgBVoGM.js","names":["#props","#media","resolveText","#props","#media","resolveText","#props","#media","resolveText","#mediaState","#core","#i18n","#options"],"sources":["../../core/dist/default/core/ui/playback-rate-button/playback-rate-button-core.js","../../core/dist/default/core/ui/playback-rate-button/playback-rate-button-data-attrs.js","../../core/dist/default/core/ui/playback-rate-radio-group/playback-rate-radio-group-core.js","../../core/dist/default/core/ui/playback-rate-radio-group/playback-rate-radio-group-data-attrs.js","../../core/dist/default/i18n/text/seek.js","../../core/dist/default/core/ui/seek-button/seek-button-core.js","../../core/dist/default/core/ui/seek-button/seek-button-data-attrs.js","../src/ui/playback-rate-button/playback-rate-button-element.ts","../src/ui/playback-rate-radio-group/playback-rate-radio-group-element.ts","../src/ui/seek-button/seek-button-element.ts"],"sourcesContent":["import { resolveText } from \"../../i18n/resolve-text.js\";\nimport { resolveLabel } from \"../utils/resolve-label.js\";\nimport { rateText } from \"../../../i18n/text/playback.js\";\nimport { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\n//#region src/core/ui/playback-rate-button/playback-rate-button-core.ts\nvar PlaybackRateButtonCore = class PlaybackRateButtonCore {\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tdisabled: false,\n\t\tmenuTrigger: false\n\t};\n\tstate = createState({\n\t\trate: 1,\n\t\tlabel: \"\"\n\t});\n\t#props = { ...PlaybackRateButtonCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, PlaybackRateButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst custom = resolveLabel(this.#props.label, state);\n\t\tif (custom !== void 0) return custom;\n\t\treturn rateText;\n\t}\n\tgetLabelParams(state) {\n\t\tif (resolveLabel(this.#props.label, state) !== void 0) return void 0;\n\t\treturn { rate: state.rate };\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": this.#props.disabled ? \"true\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tthis.state.patch({ rate: media.playbackRate });\n\t\tthis.state.patch({ label: resolveText(this.getLabel(this.state.current)) });\n\t\treturn this.state.current;\n\t}\n\tcycle(media) {\n\t\tif (this.#props.disabled) return;\n\t\tif (this.#props.menuTrigger) return;\n\t\tconst { playbackRates, playbackRate } = media;\n\t\tif (playbackRates.length === 0) return;\n\t\tconst idx = playbackRates.indexOf(playbackRate);\n\t\tconst next = idx === -1 ? playbackRates.find((r) => r > playbackRate) ?? playbackRates[0] : playbackRates[(idx + 1) % playbackRates.length];\n\t\tmedia.setPlaybackRate(next);\n\t}\n};\n//#endregion\nexport { PlaybackRateButtonCore };\n\n//# sourceMappingURL=playback-rate-button-core.js.map","//#region src/core/ui/playback-rate-button/playback-rate-button-data-attrs.ts\nconst PlaybackRateButtonDataAttrs = { \n/** Current playback rate. */\nrate: \"data-rate\" };\n//#endregion\nexport { PlaybackRateButtonDataAttrs };\n\n//# sourceMappingURL=playback-rate-button-data-attrs.js.map","import { resolveText } from \"../../i18n/resolve-text.js\";\nimport { resolveLabel } from \"../utils/resolve-label.js\";\nimport { playbackRateText } from \"../../../i18n/text/menu.js\";\nimport { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\nimport { isUndefined } from \"@videojs/utils/predicate\";\n//#region src/core/ui/playback-rate-radio-group/playback-rate-radio-group-core.ts\nfunction formatPlaybackRate(rate) {\n\treturn `${rate}×`;\n}\nvar PlaybackRateRadioGroupCore = class PlaybackRateRadioGroupCore {\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tformatRate: formatPlaybackRate,\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\trate: 1,\n\t\tvalue: \"1\",\n\t\toptions: [],\n\t\tdisabled: true,\n\t\thidden: true,\n\t\tavailability: \"unavailable\",\n\t\tlabel: \"\"\n\t});\n\t#props = { ...PlaybackRateRadioGroupCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, PlaybackRateRadioGroupCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst custom = resolveLabel(this.#props.label, state);\n\t\tif (custom !== void 0) return custom;\n\t\treturn playbackRateText;\n\t}\n\tgetLabelParams(_state) {}\n\tgetRateLabel(rate) {\n\t\treturn this.#props.formatRate(rate);\n\t}\n\tgetRateValue(rate) {\n\t\treturn String(rate);\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": state.disabled ? \"true\" : void 0,\n\t\t\thidden: state.hidden ? \"\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tconst availability = media.playbackRates.length > 0 ? \"available\" : \"unavailable\";\n\t\tthis.state.patch({\n\t\t\trate: media.playbackRate,\n\t\t\tvalue: this.getRateValue(media.playbackRate),\n\t\t\toptions: media.playbackRates.map((rate) => ({\n\t\t\t\trate,\n\t\t\t\tvalue: this.getRateValue(rate),\n\t\t\t\tlabel: this.getRateLabel(rate),\n\t\t\t\tdisabled: false\n\t\t\t})),\n\t\t\tdisabled: this.#props.disabled || media.playbackRates.length === 0,\n\t\t\thidden: availability === \"unavailable\",\n\t\t\tavailability\n\t\t});\n\t\tthis.state.patch({ label: resolveText(this.getLabel(this.state.current)) });\n\t\treturn this.state.current;\n\t}\n\tselect(media, rate) {\n\t\tif (this.#props.disabled) return;\n\t\tif (!media.playbackRates.includes(rate)) return;\n\t\tmedia.setPlaybackRate(rate);\n\t}\n\tselectValue(media, value) {\n\t\tconst rate = media.playbackRates.find((candidate) => this.getRateValue(candidate) === value);\n\t\tif (isUndefined(rate)) return;\n\t\tthis.select(media, rate);\n\t}\n};\n//#endregion\nexport { PlaybackRateRadioGroupCore };\n\n//# sourceMappingURL=playback-rate-radio-group-core.js.map","//#region src/core/ui/playback-rate-radio-group/playback-rate-radio-group-data-attrs.ts\nconst PlaybackRateRadioGroupDataAttrs = {\n\t/** Current playback rate. */\n\trate: \"data-rate\",\n\t/** Present when playback rate selection is disabled. */\n\tdisabled: \"data-disabled\",\n\t/** Present when playback rate selection is unavailable. */\n\thidden: \"data-hidden\",\n\t/** Indicates playback rate availability (`available` or `unavailable`). */\n\tavailability: \"data-availability\"\n};\n//#endregion\nexport { PlaybackRateRadioGroupDataAttrs };\n\n//# sourceMappingURL=playback-rate-radio-group-data-attrs.js.map","//#region src/core/i18n/text/seek.ts\nconst prefix = \"seek.\";\nconst forwardText = {\n\tkey: `${prefix}forward`,\n\ttext: \"Seek forward {seconds} seconds\"\n};\nconst backwardText = {\n\tkey: `${prefix}backward`,\n\ttext: \"Seek backward {seconds} seconds\"\n};\n//#endregion\nexport { backwardText, forwardText };\n\n//# sourceMappingURL=seek.js.map","import { resolveText } from \"../../i18n/resolve-text.js\";\nimport { resolveLabel } from \"../utils/resolve-label.js\";\nimport { backwardText, forwardText } from \"../../../i18n/text/seek.js\";\nimport { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\n//#region src/core/ui/seek-button/seek-button-core.ts\nvar SeekButtonCore = class SeekButtonCore {\n\tstatic defaultProps = {\n\t\tseconds: 30,\n\t\tlabel: \"\",\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\tseeking: false,\n\t\tdirection: \"forward\",\n\t\tlabel: \"\"\n\t});\n\t#props = { ...SeekButtonCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, SeekButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst custom = resolveLabel(this.#props.label, state);\n\t\tif (custom !== void 0) return custom;\n\t\treturn state.direction === \"backward\" ? backwardText : forwardText;\n\t}\n\tgetLabelParams(state) {\n\t\tif (resolveLabel(this.#props.label, state) !== void 0) return void 0;\n\t\treturn { seconds: Math.abs(this.#props.seconds) };\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": this.#props.disabled ? \"true\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tconst direction = this.#props.seconds < 0 ? \"backward\" : \"forward\";\n\t\tthis.state.patch({\n\t\t\tseeking: media.seeking,\n\t\t\tdirection\n\t\t});\n\t\tthis.state.patch({ label: resolveText(this.getLabel(this.state.current)) });\n\t\treturn this.state.current;\n\t}\n\tasync seek(media) {\n\t\tif (this.#props.disabled) return;\n\t\tawait media.seek(media.currentTime + this.#props.seconds);\n\t}\n};\n//#endregion\nexport { SeekButtonCore };\n\n//# sourceMappingURL=seek-button-core.js.map","//#region src/core/ui/seek-button/seek-button-data-attrs.ts\nconst SeekButtonDataAttrs = {\n\t/** Present when a seek is in progress. */\n\tseeking: \"data-seeking\",\n\t/** Indicates the seek direction: `\"forward\"` or `\"backward\"`. */\n\tdirection: \"data-direction\"\n};\n//#endregion\nexport { SeekButtonDataAttrs };\n\n//# sourceMappingURL=seek-button-data-attrs.js.map","import { PlaybackRateButtonCore, PlaybackRateButtonDataAttrs } from '@videojs/core';\nimport { applyElementProps, selectPlaybackRate, type UIEvent } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport type { MediaPlaybackRateState } from '@videojs/media';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PlaybackRateButtonElement extends MediaButtonElement<PlaybackRateButtonCore> {\n static readonly tagName = 'media-playback-rate-button';\n\n static override properties = {\n label: { type: String },\n disabled: { type: Boolean },\n commandfor: { type: String },\n } satisfies PropertyDeclarationMap<'label' | 'disabled' | 'commandfor'>;\n\n commandfor: string | undefined = undefined;\n\n protected readonly core = new PlaybackRateButtonCore();\n protected readonly stateAttrMap = PlaybackRateButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlaybackRate);\n protected override readonly hotkeyAction = 'speedUp';\n\n protected activate(state: MediaPlaybackRateState, event?: UIEvent): void {\n if (this.commandfor) {\n if (event instanceof KeyboardEvent) {\n // Custom elements do not synthesize a click from keyboard activation.\n // Dispatch one so the linked menu follows its normal open lifecycle.\n this.click();\n }\n return;\n }\n this.core.cycle(state);\n }\n\n protected override getIsButtonDisabled(): boolean {\n const media = this.mediaState.value;\n if (super.getIsButtonDisabled()) return true;\n if (this.commandfor && media && media.playbackRates.length === 0) return true;\n return false;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n\n if (changed.has('commandfor')) {\n if (this.commandfor) {\n this.setAttribute('commandfor', this.commandfor);\n } else {\n this.removeAttribute('commandfor');\n }\n }\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.mediaState.value;\n if (!media || !this.commandfor) return;\n\n applyElementProps(this, {\n 'aria-disabled': this.getIsButtonDisabled() ? 'true' : undefined,\n });\n }\n}\n\nexport namespace PlaybackRateButtonElement {\n export type State = PlaybackRateButtonCore.State;\n}\n","import {\n PlaybackRateRadioGroupCore,\n PlaybackRateRadioGroupDataAttrs,\n type PlaybackRateRadioGroupOption,\n} from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectPlaybackRate } from '@videojs/core/dom';\nimport { translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MenuRadioGroupElement } from '../menu/menu-radio-group-element';\nimport { RadioOptionsController } from '../radio-options/radio-options-controller';\n\nexport class PlaybackRateRadioGroupElement extends MenuRadioGroupElement {\n static override readonly tagName = 'media-playback-rate-radio-group';\n\n static override properties = {\n ...MenuRadioGroupElement.properties,\n disabled: { type: Boolean },\n } satisfies PropertyDeclarationMap<'value' | 'disabled'>;\n\n disabled = false;\n formatRate = PlaybackRateRadioGroupCore.defaultProps.formatRate;\n\n readonly #core = new PlaybackRateRadioGroupCore();\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #mediaState = new PlayerController(this, playerContext, selectPlaybackRate);\n readonly #options = new RadioOptionsController<PlaybackRateRadioGroupOption>(this, {\n setItemAttributes: (item, option) => item.setAttribute('data-rate', option.value),\n onValueChange: (value) => {\n const media = this.#mediaState.value;\n if (media) this.#core.selectValue(media, value);\n },\n });\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n const media = this.#mediaState.value;\n let state: PlaybackRateRadioGroupCore.State | null = null;\n\n if (media) {\n this.#core.setProps({ formatRate: this.formatRate, disabled: this.disabled });\n this.#core.setMedia(media);\n state = this.#core.getState();\n\n this.applyDefaultAriaLabel(\n translateText(this.#core.getLabel(state), this.#i18n.value, this.#core.getLabelParams(state))\n );\n this.#options.sync(state, this.#i18n.value, this.#i18n.locale);\n this.publishMenuMetadata(state.disabled, state.availability);\n }\n\n super.update(changed);\n\n if (state) applyStateDataAttrs(this, state, PlaybackRateRadioGroupDataAttrs);\n }\n}\n\nexport namespace PlaybackRateRadioGroupElement {\n export type State = PlaybackRateRadioGroupCore.State;\n}\n","import { SeekButtonCore, SeekButtonDataAttrs } from '@videojs/core';\nimport { selectTime } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap } from '@videojs/element';\nimport type { MediaTimeState } from '@videojs/media';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class SeekButtonElement extends MediaButtonElement<SeekButtonCore> {\n static readonly tagName = 'media-seek-button';\n\n static override properties: PropertyDeclarationMap = {\n ...MediaButtonElement.properties,\n seconds: { type: Number },\n };\n\n seconds = SeekButtonCore.defaultProps.seconds;\n\n protected readonly core = new SeekButtonCore();\n protected readonly stateAttrMap = SeekButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectTime);\n protected override readonly hotkeyAction = 'seekStep';\n\n protected override get hotkeyValue(): number | undefined {\n return this.seconds;\n }\n\n protected activate(state: MediaTimeState): void {\n this.core.seek(state);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seek-button-element-B8TkILg-.js","names":["#props","#media","resolveText","#props","#media","resolveText","#props","#media","resolveText","#mediaState","#core","#i18n","#options"],"sources":["../../core/dist/default/core/ui/playback-rate-button/playback-rate-button-core.js","../../core/dist/default/core/ui/playback-rate-button/playback-rate-button-data-attrs.js","../../core/dist/default/core/ui/playback-rate-radio-group/playback-rate-radio-group-core.js","../../core/dist/default/core/ui/playback-rate-radio-group/playback-rate-radio-group-data-attrs.js","../../core/dist/default/i18n/text/seek.js","../../core/dist/default/core/ui/seek-button/seek-button-core.js","../../core/dist/default/core/ui/seek-button/seek-button-data-attrs.js","../src/ui/playback-rate-button/playback-rate-button-element.ts","../src/ui/playback-rate-radio-group/playback-rate-radio-group-element.ts","../src/ui/seek-button/seek-button-element.ts"],"sourcesContent":["import { resolveText } from \"../../i18n/resolve-text.js\";\nimport { resolveLabel } from \"../utils/resolve-label.js\";\nimport { rateText } from \"../../../i18n/text/playback.js\";\nimport { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\n//#region src/core/ui/playback-rate-button/playback-rate-button-core.ts\nvar PlaybackRateButtonCore = class PlaybackRateButtonCore {\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tdisabled: false,\n\t\tmenuTrigger: false\n\t};\n\tstate = createState({\n\t\trate: 1,\n\t\tlabel: \"\"\n\t});\n\t#props = { ...PlaybackRateButtonCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, PlaybackRateButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst custom = resolveLabel(this.#props.label, state);\n\t\tif (custom !== void 0) return custom;\n\t\treturn rateText;\n\t}\n\tgetLabelParams(state) {\n\t\tif (resolveLabel(this.#props.label, state) !== void 0) return void 0;\n\t\treturn { rate: state.rate };\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": this.#props.disabled ? \"true\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tthis.state.patch({ rate: media.playbackRate });\n\t\tthis.state.patch({ label: resolveText(this.getLabel(this.state.current)) });\n\t\treturn this.state.current;\n\t}\n\tcycle(media) {\n\t\tif (this.#props.disabled) return;\n\t\tif (this.#props.menuTrigger) return;\n\t\tconst { playbackRates, playbackRate } = media;\n\t\tif (playbackRates.length === 0) return;\n\t\tconst idx = playbackRates.indexOf(playbackRate);\n\t\tconst next = idx === -1 ? playbackRates.find((r) => r > playbackRate) ?? playbackRates[0] : playbackRates[(idx + 1) % playbackRates.length];\n\t\tmedia.setPlaybackRate(next);\n\t}\n};\n//#endregion\nexport { PlaybackRateButtonCore };\n\n//# sourceMappingURL=playback-rate-button-core.js.map","//#region src/core/ui/playback-rate-button/playback-rate-button-data-attrs.ts\nconst PlaybackRateButtonDataAttrs = { \n/** Current playback rate. */\nrate: \"data-rate\" };\n//#endregion\nexport { PlaybackRateButtonDataAttrs };\n\n//# sourceMappingURL=playback-rate-button-data-attrs.js.map","import { resolveText } from \"../../i18n/resolve-text.js\";\nimport { resolveLabel } from \"../utils/resolve-label.js\";\nimport { playbackRateText } from \"../../../i18n/text/menu.js\";\nimport { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\nimport { isUndefined } from \"@videojs/utils/predicate\";\n//#region src/core/ui/playback-rate-radio-group/playback-rate-radio-group-core.ts\nfunction formatPlaybackRate(rate) {\n\treturn `${rate}×`;\n}\nvar PlaybackRateRadioGroupCore = class PlaybackRateRadioGroupCore {\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tformatRate: formatPlaybackRate,\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\trate: 1,\n\t\tvalue: \"1\",\n\t\toptions: [],\n\t\tdisabled: true,\n\t\thidden: true,\n\t\tavailability: \"unavailable\",\n\t\tlabel: \"\"\n\t});\n\t#props = { ...PlaybackRateRadioGroupCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, PlaybackRateRadioGroupCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst custom = resolveLabel(this.#props.label, state);\n\t\tif (custom !== void 0) return custom;\n\t\treturn playbackRateText;\n\t}\n\tgetLabelParams(_state) {}\n\tgetRateLabel(rate) {\n\t\treturn this.#props.formatRate(rate);\n\t}\n\tgetRateValue(rate) {\n\t\treturn String(rate);\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": state.disabled ? \"true\" : void 0,\n\t\t\thidden: state.hidden ? \"\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tconst availability = media.playbackRates.length > 0 ? \"available\" : \"unavailable\";\n\t\tthis.state.patch({\n\t\t\trate: media.playbackRate,\n\t\t\tvalue: this.getRateValue(media.playbackRate),\n\t\t\toptions: media.playbackRates.map((rate) => ({\n\t\t\t\trate,\n\t\t\t\tvalue: this.getRateValue(rate),\n\t\t\t\tlabel: this.getRateLabel(rate),\n\t\t\t\tdisabled: false\n\t\t\t})),\n\t\t\tdisabled: this.#props.disabled || media.playbackRates.length === 0,\n\t\t\thidden: availability === \"unavailable\",\n\t\t\tavailability\n\t\t});\n\t\tthis.state.patch({ label: resolveText(this.getLabel(this.state.current)) });\n\t\treturn this.state.current;\n\t}\n\tselect(media, rate) {\n\t\tif (this.#props.disabled) return;\n\t\tif (!media.playbackRates.includes(rate)) return;\n\t\tmedia.setPlaybackRate(rate);\n\t}\n\tselectValue(media, value) {\n\t\tconst rate = media.playbackRates.find((candidate) => this.getRateValue(candidate) === value);\n\t\tif (isUndefined(rate)) return;\n\t\tthis.select(media, rate);\n\t}\n};\n//#endregion\nexport { PlaybackRateRadioGroupCore };\n\n//# sourceMappingURL=playback-rate-radio-group-core.js.map","//#region src/core/ui/playback-rate-radio-group/playback-rate-radio-group-data-attrs.ts\nconst PlaybackRateRadioGroupDataAttrs = {\n\t/** Current playback rate. */\n\trate: \"data-rate\",\n\t/** Present when playback rate selection is disabled. */\n\tdisabled: \"data-disabled\",\n\t/** Present when playback rate selection is unavailable. */\n\thidden: \"data-hidden\",\n\t/** Indicates playback rate availability (`available` or `unavailable`). */\n\tavailability: \"data-availability\"\n};\n//#endregion\nexport { PlaybackRateRadioGroupDataAttrs };\n\n//# sourceMappingURL=playback-rate-radio-group-data-attrs.js.map","//#region src/core/i18n/text/seek.ts\nconst prefix = \"seek.\";\nconst forwardText = {\n\tkey: `${prefix}forward`,\n\ttext: \"Seek forward {seconds} seconds\"\n};\nconst backwardText = {\n\tkey: `${prefix}backward`,\n\ttext: \"Seek backward {seconds} seconds\"\n};\n//#endregion\nexport { backwardText, forwardText };\n\n//# sourceMappingURL=seek.js.map","import { resolveText } from \"../../i18n/resolve-text.js\";\nimport { resolveLabel } from \"../utils/resolve-label.js\";\nimport { backwardText, forwardText } from \"../../../i18n/text/seek.js\";\nimport { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\n//#region src/core/ui/seek-button/seek-button-core.ts\nvar SeekButtonCore = class SeekButtonCore {\n\tstatic defaultProps = {\n\t\tseconds: 30,\n\t\tlabel: \"\",\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\tseeking: false,\n\t\tdirection: \"forward\",\n\t\tlabel: \"\"\n\t});\n\t#props = { ...SeekButtonCore.defaultProps };\n\t#media = null;\n\tconstructor(props) {\n\t\tif (props) this.setProps(props);\n\t}\n\tsetProps(props) {\n\t\tthis.#props = defaults(props, SeekButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst custom = resolveLabel(this.#props.label, state);\n\t\tif (custom !== void 0) return custom;\n\t\treturn state.direction === \"backward\" ? backwardText : forwardText;\n\t}\n\tgetLabelParams(state) {\n\t\tif (resolveLabel(this.#props.label, state) !== void 0) return void 0;\n\t\treturn { seconds: Math.abs(this.#props.seconds) };\n\t}\n\tgetAttrs(state) {\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": this.#props.disabled ? \"true\" : void 0\n\t\t};\n\t}\n\tsetMedia(media) {\n\t\tthis.#media = media;\n\t}\n\tgetState() {\n\t\tconst media = this.#media;\n\t\tconst direction = this.#props.seconds < 0 ? \"backward\" : \"forward\";\n\t\tthis.state.patch({\n\t\t\tseeking: media.seeking,\n\t\t\tdirection\n\t\t});\n\t\tthis.state.patch({ label: resolveText(this.getLabel(this.state.current)) });\n\t\treturn this.state.current;\n\t}\n\tasync seek(media) {\n\t\tif (this.#props.disabled) return;\n\t\tawait media.seek(media.currentTime + this.#props.seconds);\n\t}\n};\n//#endregion\nexport { SeekButtonCore };\n\n//# sourceMappingURL=seek-button-core.js.map","//#region src/core/ui/seek-button/seek-button-data-attrs.ts\nconst SeekButtonDataAttrs = {\n\t/** Present when a seek is in progress. */\n\tseeking: \"data-seeking\",\n\t/** Indicates the seek direction: `\"forward\"` or `\"backward\"`. */\n\tdirection: \"data-direction\"\n};\n//#endregion\nexport { SeekButtonDataAttrs };\n\n//# sourceMappingURL=seek-button-data-attrs.js.map","import { PlaybackRateButtonCore, PlaybackRateButtonDataAttrs } from '@videojs/core';\nimport { applyElementProps, selectPlaybackRate, type UIEvent } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport type { MediaPlaybackRateState } from '@videojs/media';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PlaybackRateButtonElement extends MediaButtonElement<PlaybackRateButtonCore> {\n static readonly tagName = 'media-playback-rate-button';\n\n static override properties = {\n label: { type: String },\n disabled: { type: Boolean },\n commandfor: { type: String },\n } satisfies PropertyDeclarationMap<'label' | 'disabled' | 'commandfor'>;\n\n commandfor: string | undefined = undefined;\n\n protected readonly core = new PlaybackRateButtonCore();\n protected readonly stateAttrMap = PlaybackRateButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlaybackRate);\n protected override readonly hotkeyAction = 'speedUp';\n\n protected activate(state: MediaPlaybackRateState, event?: UIEvent): void {\n if (this.commandfor) {\n if (event instanceof KeyboardEvent) {\n // Custom elements do not synthesize a click from keyboard activation.\n // Dispatch one so the linked menu follows its normal open lifecycle.\n this.click();\n }\n return;\n }\n this.core.cycle(state);\n }\n\n protected override getIsButtonDisabled(): boolean {\n const media = this.mediaState.value;\n if (super.getIsButtonDisabled()) return true;\n if (this.commandfor && media && media.playbackRates.length === 0) return true;\n return false;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n\n if (changed.has('commandfor')) {\n if (this.commandfor) {\n this.setAttribute('commandfor', this.commandfor);\n } else {\n this.removeAttribute('commandfor');\n }\n }\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.mediaState.value;\n if (!media || !this.commandfor) return;\n\n applyElementProps(this, {\n 'aria-disabled': this.getIsButtonDisabled() ? 'true' : undefined,\n });\n }\n}\n\nexport namespace PlaybackRateButtonElement {\n export type State = PlaybackRateButtonCore.State;\n}\n","import {\n PlaybackRateRadioGroupCore,\n PlaybackRateRadioGroupDataAttrs,\n type PlaybackRateRadioGroupOption,\n} from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectPlaybackRate } from '@videojs/core/dom';\nimport { translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MenuRadioGroupElement } from '../menu/menu-radio-group-element';\nimport { RadioOptionsController } from '../radio-options/radio-options-controller';\n\nexport class PlaybackRateRadioGroupElement extends MenuRadioGroupElement {\n static override readonly tagName = 'media-playback-rate-radio-group';\n\n static override properties = {\n ...MenuRadioGroupElement.properties,\n disabled: { type: Boolean },\n } satisfies PropertyDeclarationMap<'value' | 'disabled'>;\n\n disabled = false;\n formatRate = PlaybackRateRadioGroupCore.defaultProps.formatRate;\n\n readonly #core = new PlaybackRateRadioGroupCore();\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #mediaState = new PlayerController(this, playerContext, selectPlaybackRate);\n readonly #options = new RadioOptionsController<PlaybackRateRadioGroupOption>(this, {\n setItemAttributes: (item, option) => item.setAttribute('data-rate', option.value),\n onValueChange: (value) => {\n const media = this.#mediaState.value;\n if (media) this.#core.selectValue(media, value);\n },\n });\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n const media = this.#mediaState.value;\n let state: PlaybackRateRadioGroupCore.State | null = null;\n\n if (media) {\n this.#core.setProps({ formatRate: this.formatRate, disabled: this.disabled });\n this.#core.setMedia(media);\n state = this.#core.getState();\n\n this.applyDefaultAriaLabel(\n translateText(this.#core.getLabel(state), this.#i18n.value, this.#core.getLabelParams(state))\n );\n this.#options.sync(state, this.#i18n.value, this.#i18n.locale);\n this.publishMenuTriggerState(state.disabled, state.availability);\n }\n\n super.update(changed);\n\n if (state) applyStateDataAttrs(this, state, PlaybackRateRadioGroupDataAttrs);\n }\n}\n\nexport namespace PlaybackRateRadioGroupElement {\n export type State = PlaybackRateRadioGroupCore.State;\n}\n","import { SeekButtonCore, SeekButtonDataAttrs } from '@videojs/core';\nimport { selectTime } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap } from '@videojs/element';\nimport type { MediaTimeState } from '@videojs/media';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class SeekButtonElement extends MediaButtonElement<SeekButtonCore> {\n static readonly tagName = 'media-seek-button';\n\n static override properties: PropertyDeclarationMap = {\n ...MediaButtonElement.properties,\n seconds: { type: Number },\n };\n\n seconds = SeekButtonCore.defaultProps.seconds;\n\n protected readonly core = new SeekButtonCore();\n protected readonly stateAttrMap = SeekButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectTime);\n protected override readonly hotkeyAction = 'seekStep';\n\n protected override get hotkeyValue(): number | undefined {\n return this.seconds;\n }\n\n protected activate(state: MediaTimeState): void {\n this.core.seek(state);\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region ../utils/dist/object/shallow-equal.js
|
|
2
|
+
const hasOwn = Object.prototype.hasOwnProperty;
|
|
3
|
+
/** Shallowly compares values, including own string and symbol keys. */
|
|
4
|
+
function shallowEqual(a, b) {
|
|
5
|
+
if (Object.is(a, b)) return true;
|
|
6
|
+
if (typeof a !== "object" || a === null || typeof b !== "object" || b === null) return false;
|
|
7
|
+
const keysA = Reflect.ownKeys(a);
|
|
8
|
+
const keysB = Reflect.ownKeys(b);
|
|
9
|
+
if (keysA.length !== keysB.length) return false;
|
|
10
|
+
for (const key of keysA) if (!hasOwn.call(b, key) || !Object.is(a[key], b[key])) return false;
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { shallowEqual as t };
|
|
16
|
+
//# sourceMappingURL=shallow-equal-C7S8rj2f.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shallow-equal-C7S8rj2f.js","names":[],"sources":["../../utils/dist/object/shallow-equal.js"],"sourcesContent":["//#region src/object/shallow-equal.ts\nconst hasOwn = Object.prototype.hasOwnProperty;\n/** Shallowly compares values, including own string and symbol keys. */\nfunction shallowEqual(a, b) {\n\tif (Object.is(a, b)) return true;\n\tif (typeof a !== \"object\" || a === null || typeof b !== \"object\" || b === null) return false;\n\tconst keysA = Reflect.ownKeys(a);\n\tconst keysB = Reflect.ownKeys(b);\n\tif (keysA.length !== keysB.length) return false;\n\tfor (const key of keysA) if (!hasOwn.call(b, key) || !Object.is(a[key], b[key])) return false;\n\treturn true;\n}\n//#endregion\nexport { shallowEqual };\n\n//# sourceMappingURL=shallow-equal.js.map"],"mappings":";AACA,MAAM,SAAS,OAAO,UAAU;;AAEhC,SAAS,aAAa,GAAG,GAAG;CAC3B,IAAI,OAAO,GAAG,GAAG,CAAC,GAAG,OAAO;CAC5B,IAAI,OAAO,MAAM,YAAY,MAAM,QAAQ,OAAO,MAAM,YAAY,MAAM,MAAM,OAAO;CACvF,MAAM,QAAQ,QAAQ,QAAQ,CAAC;CAC/B,MAAM,QAAQ,QAAQ,QAAQ,CAAC;CAC/B,IAAI,MAAM,WAAW,MAAM,QAAQ,OAAO;CAC1C,KAAK,MAAM,OAAO,OAAO,IAAI,CAAC,OAAO,KAAK,GAAG,GAAG,KAAK,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO;CACxF,OAAO;AACR"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=Object.prototype.hasOwnProperty;function t(t,n){if(Object.is(t,n))return!0;if(typeof t!=`object`||!t||typeof n!=`object`||!n)return!1;let r=Reflect.ownKeys(t),i=Reflect.ownKeys(n);if(r.length!==i.length)return!1;for(let i of r)if(!e.call(n,i)||!Object.is(t[i],n[i]))return!1;return!0}export{t};
|
|
2
|
+
//# sourceMappingURL=shallow-equal-KV1zFqZi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shallow-equal-KV1zFqZi.js","names":[],"sources":["../../utils/dist/object/shallow-equal.js"],"sourcesContent":["//#region src/object/shallow-equal.ts\nconst hasOwn = Object.prototype.hasOwnProperty;\n/** Shallowly compares values, including own string and symbol keys. */\nfunction shallowEqual(a, b) {\n\tif (Object.is(a, b)) return true;\n\tif (typeof a !== \"object\" || a === null || typeof b !== \"object\" || b === null) return false;\n\tconst keysA = Reflect.ownKeys(a);\n\tconst keysB = Reflect.ownKeys(b);\n\tif (keysA.length !== keysB.length) return false;\n\tfor (const key of keysA) if (!hasOwn.call(b, key) || !Object.is(a[key], b[key])) return false;\n\treturn true;\n}\n//#endregion\nexport { shallowEqual };\n\n//# sourceMappingURL=shallow-equal.js.map"],"mappings":"AACA,MAAM,EAAS,OAAO,UAAU,eAEhC,SAAS,EAAa,EAAG,EAAG,CAC3B,GAAI,OAAO,GAAG,EAAG,CAAC,EAAG,MAAO,GAC5B,GAAI,OAAO,GAAM,WAAY,GAAc,OAAO,GAAM,WAAY,EAAY,MAAO,GACvF,IAAM,EAAQ,QAAQ,QAAQ,CAAC,EACzB,EAAQ,QAAQ,QAAQ,CAAC,EAC/B,GAAI,EAAM,SAAW,EAAM,OAAQ,MAAO,GAC1C,IAAK,IAAM,KAAO,EAAO,GAAI,CAAC,EAAO,KAAK,EAAG,CAAG,GAAK,CAAC,OAAO,GAAG,EAAE,GAAM,EAAE,EAAI,EAAG,MAAO,GACxF,MAAO,EACR"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
//# sourceMappingURL=skin-element-
|
|
1
|
+
import{tt as e}from"./compounds-C4YYLyL2.js";import{r as t}from"./media-element-Cp5PrNre.js";import{n,r,t as i}from"./shadow-styles-DQiIr3u8.js";var a=`video-player,live-video-player,media-i18n{display:contents}video-player video,video-player [slot=poster],live-video-player video,live-video-player [slot=poster]{width:100%;height:100%;display:block}video-player video::-webkit-media-text-track-container,live-video-player video::-webkit-media-text-track-container{z-index:1;scale:.98;translate:0 var(--media-caption-track-y,0);transition:translate var(--media-caption-track-duration,0) ease-out;transition-delay:var(--media-caption-track-delay,0);font-family:inherit}`;const o=n(`media-tooltip-group{display:contents}:host{width:100%;display:grid}media-container{min-width:0;min-height:0}.media-popover--volume:has(media-volume-slider[data-hidden]){display:none}`);var s=class extends t{static get observedAttributes(){return[...super.observedAttributes,`placeholdersrc`]}attributeChangedCallback(e,t,n){super.attributeChangedCallback(e,t,n),e===`placeholdersrc`&&(n?this.style.setProperty(`--media-poster-placeholder`,`url(${n})`):this.style.removeProperty(`--media-poster-placeholder`))}static{this.shadowRootOptions={mode:`open`}}constructor(){if(super(),r(`__media-styles`,a),!this.shadowRoot){let t=this.constructor;this.attachShadow(t.shadowRootOptions),t.template&&e(this.shadowRoot,t.template);let n=[o];t.styles&&n.push(t.styles),i(this.shadowRoot,n)}}};export{s as t};
|
|
2
|
+
//# sourceMappingURL=skin-element-DrkI8xuM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin-element-
|
|
1
|
+
{"version":3,"file":"skin-element-DrkI8xuM.js","names":["sharedStyles","globalStyles"],"sources":["../inline-css:src/define/global.js","../inline-css:src/define/shared.js","../src/define/skin-element.ts"],"sourcesContent":["export default \"video-player,live-video-player,media-i18n{display:contents}video-player video,video-player [slot=poster],live-video-player video,live-video-player [slot=poster]{width:100%;height:100%;display:block}video-player video::-webkit-media-text-track-container,live-video-player video::-webkit-media-text-track-container{z-index:1;scale:.98;translate:0 var(--media-caption-track-y,0);transition:translate var(--media-caption-track-duration,0) ease-out;transition-delay:var(--media-caption-track-delay,0);font-family:inherit}\";","export default \"media-tooltip-group{display:contents}:host{width:100%;display:grid}media-container{min-width:0;min-height:0}.media-popover--volume:has(media-volume-slider[data-hidden]){display:none}\";","import { ReactiveElement } from '@videojs/element';\nimport {\n applyShadowStyles,\n createShadowStyle,\n ensureGlobalStyle,\n renderTemplate,\n type ShadowStyle,\n} from '@videojs/utils/dom';\nimport globalStyles from './global.css?inline';\nimport sharedStyles from './shared.css?inline';\n\nconst STYLES_ID = '__media-styles';\nconst sharedSheet = createShadowStyle(sharedStyles);\n\n/**\n * Base element for skin definitions. Attaches a shadow root, clones\n * `static template` into it, and applies shared + per-skin styles\n * via `adoptedStyleSheets` (or `<style>` fallback).\n */\nexport class SkinElement extends ReactiveElement {\n static get observedAttributes(): string[] {\n // biome-ignore lint/complexity/noThisInStatic: intentional use of super\n return [...super.observedAttributes, 'placeholdersrc'];\n }\n\n override attributeChangedCallback(attr: string, oldValue: string | null, newValue: string | null): void {\n super.attributeChangedCallback(attr, oldValue, newValue);\n\n if (attr === 'placeholdersrc') {\n if (newValue) {\n this.style.setProperty('--media-poster-placeholder', `url(${newValue})`);\n } else {\n this.style.removeProperty('--media-poster-placeholder');\n }\n }\n }\n static shadowRootOptions: ShadowRootInit = { mode: 'open' };\n static styles?: ShadowStyle;\n static template?: HTMLTemplateElement | null;\n\n constructor() {\n super();\n\n ensureGlobalStyle(STYLES_ID, globalStyles);\n\n if (!this.shadowRoot) {\n const ctor = this.constructor as typeof SkinElement;\n this.attachShadow(ctor.shadowRootOptions);\n\n if (ctor.template) {\n renderTemplate(this.shadowRoot!, ctor.template);\n }\n\n const sheets: ShadowStyle[] = [sharedSheet];\n if (ctor.styles) {\n sheets.push(ctor.styles);\n }\n applyShadowStyles(this.shadowRoot!, sheets);\n }\n }\n}\n"],"mappings":"iJAAA,IAAA,EAAe,ugBEWf,MACM,EAAc,EAAkBA,wLAAY,EAOlD,IAAa,EAAb,cAAiC,CAAgB,CAC/C,WAAW,oBAA+B,CAExC,MAAO,CAAC,GAAG,MAAM,mBAAoB,gBAAgB,CACvD,CAEA,yBAAkC,EAAc,EAAyB,EAA+B,CACtG,MAAM,yBAAyB,EAAM,EAAU,CAAQ,EAEnD,IAAS,mBACP,EACF,KAAK,MAAM,YAAY,6BAA8B,OAAO,EAAS,EAAE,EAEvE,KAAK,MAAM,eAAe,4BAA4B,EAG5D,QAC2C,KAAA,kBAAA,CAAE,KAAM,MAAO,EAI1D,aAAc,CAKZ,GAJA,MAAM,EAEN,EAAkB,iBAAWC,CAAY,EAErC,CAAC,KAAK,WAAY,CACpB,IAAM,EAAO,KAAK,YAClB,KAAK,aAAa,EAAK,iBAAiB,EAEpC,EAAK,UACP,EAAe,KAAK,WAAa,EAAK,QAAQ,EAGhD,IAAM,EAAwB,CAAC,CAAW,EACtC,EAAK,QACP,EAAO,KAAK,EAAK,MAAM,EAEzB,EAAkB,KAAK,WAAa,CAAM,CAC5C,CACF,CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { nt as renderTemplate } from "./compounds-C73u1MeO.js";
|
|
2
2
|
import { r as ReactiveElement } from "./media-element-CJY3JIgc.js";
|
|
3
3
|
import { n as createShadowStyle, r as ensureGlobalStyle, t as applyShadowStyles } from "./shadow-styles-BkjnRJ4e.js";
|
|
4
4
|
|
|
@@ -46,4 +46,4 @@ var SkinElement = class extends ReactiveElement {
|
|
|
46
46
|
|
|
47
47
|
//#endregion
|
|
48
48
|
export { SkinElement as t };
|
|
49
|
-
//# sourceMappingURL=skin-element-
|
|
49
|
+
//# sourceMappingURL=skin-element-DvX6Bxsv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin-element-
|
|
1
|
+
{"version":3,"file":"skin-element-DvX6Bxsv.js","names":["sharedStyles","globalStyles"],"sources":["../inline-css:src/define/global.js","../inline-css:src/define/shared.js","../src/define/skin-element.ts"],"sourcesContent":["export default \"/* -------------------------------------------------------------------------- */\\n/* Global styles for the host document, outside of the Shadow DOM */\\n/* -------------------------------------------------------------------------- */\\n\\nvideo-player,\\nlive-video-player,\\nmedia-i18n {\\n display: contents;\\n}\\n\\n/*\\nRequired to override any default video and image styles (such as\\nTailwind's CSS reset) and ensure they fill the container as expected.\\n*/\\nvideo-player video,\\nvideo-player [slot=\\\"poster\\\"],\\nlive-video-player video,\\nlive-video-player [slot=\\\"poster\\\"] {\\n display: block;\\n width: 100%;\\n height: 100%;\\n}\\n\\nvideo-player video::-webkit-media-text-track-container,\\nlive-video-player video::-webkit-media-text-track-container {\\n z-index: 1;\\n font-family: inherit;\\n scale: 0.98;\\n translate: 0 var(--media-caption-track-y, 0);\\n transition: translate var(--media-caption-track-duration, 0) ease-out;\\n transition-delay: var(--media-caption-track-delay, 0);\\n}\\n\";","export default \"/* -------------------------------------------------------------------------- */\\n/* Shared styles for all HTML skins */\\n/* -------------------------------------------------------------------------- */\\n\\nmedia-tooltip-group {\\n display: contents;\\n}\\n\\n:host {\\n /* `display:grid` fixes a weird issue with Safari when setting aspect-ratio */\\n display: grid;\\n width: 100%;\\n}\\n\\nmedia-container {\\n min-width: 0;\\n min-height: 0;\\n}\\n\\n/* Hide the volume popover when its slider is unavailable. */\\n.media-popover--volume:has(media-volume-slider[data-hidden]) {\\n display: none;\\n}\\n\";","import { ReactiveElement } from '@videojs/element';\nimport {\n applyShadowStyles,\n createShadowStyle,\n ensureGlobalStyle,\n renderTemplate,\n type ShadowStyle,\n} from '@videojs/utils/dom';\nimport globalStyles from './global.css?inline';\nimport sharedStyles from './shared.css?inline';\n\nconst STYLES_ID = '__media-styles';\nconst sharedSheet = createShadowStyle(sharedStyles);\n\n/**\n * Base element for skin definitions. Attaches a shadow root, clones\n * `static template` into it, and applies shared + per-skin styles\n * via `adoptedStyleSheets` (or `<style>` fallback).\n */\nexport class SkinElement extends ReactiveElement {\n static get observedAttributes(): string[] {\n // biome-ignore lint/complexity/noThisInStatic: intentional use of super\n return [...super.observedAttributes, 'placeholdersrc'];\n }\n\n override attributeChangedCallback(attr: string, oldValue: string | null, newValue: string | null): void {\n super.attributeChangedCallback(attr, oldValue, newValue);\n\n if (attr === 'placeholdersrc') {\n if (newValue) {\n this.style.setProperty('--media-poster-placeholder', `url(${newValue})`);\n } else {\n this.style.removeProperty('--media-poster-placeholder');\n }\n }\n }\n static shadowRootOptions: ShadowRootInit = { mode: 'open' };\n static styles?: ShadowStyle;\n static template?: HTMLTemplateElement | null;\n\n constructor() {\n super();\n\n ensureGlobalStyle(STYLES_ID, globalStyles);\n\n if (!this.shadowRoot) {\n const ctor = this.constructor as typeof SkinElement;\n this.attachShadow(ctor.shadowRootOptions);\n\n if (ctor.template) {\n renderTemplate(this.shadowRoot!, ctor.template);\n }\n\n const sheets: ShadowStyle[] = [sharedSheet];\n if (ctor.styles) {\n sheets.push(ctor.styles);\n }\n applyShadowStyles(this.shadowRoot!, sheets);\n }\n }\n}\n"],"mappings":";;;;;AAAA,qBAAe;;;;ACAf,qBAAe;;;;ACWf,MAAM,YAAY;AAClB,MAAM,cAAc,kBAAkBA,cAAY;;;;;;AAOlD,IAAa,cAAb,cAAiC,gBAAgB;CAC/C,WAAW,qBAA+B;EAExC,OAAO,CAAC,GAAG,MAAM,oBAAoB,gBAAgB;CACvD;CAEA,AAAS,yBAAyB,MAAc,UAAyB,UAA+B;EACtG,MAAM,yBAAyB,MAAM,UAAU,QAAQ;EAEvD,IAAI,SAAS,kBACX,IAAI,UACF,KAAK,MAAM,YAAY,8BAA8B,OAAO,SAAS,EAAE;OAEvE,KAAK,MAAM,eAAe,4BAA4B;CAG5D;;2BAC2C,EAAE,MAAM,OAAO;;CAI1D,cAAc;EACZ,MAAM;EAEN,kBAAkB,WAAWC,cAAY;EAEzC,IAAI,CAAC,KAAK,YAAY;GACpB,MAAM,OAAO,KAAK;GAClB,KAAK,aAAa,KAAK,iBAAiB;GAExC,IAAI,KAAK,UACP,eAAe,KAAK,YAAa,KAAK,QAAQ;GAGhD,MAAM,SAAwB,CAAC,WAAW;GAC1C,IAAI,KAAK,QACP,OAAO,KAAK,KAAK,MAAM;GAEzB,kBAAkB,KAAK,YAAa,MAAM;EAC5C;CACF;AACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as e}from"./predicate-LbFu-fPH.js";import{
|
|
2
|
-
//# sourceMappingURL=text-element-
|
|
1
|
+
import{u as e}from"./predicate-LbFu-fPH.js";import{nt as t}from"./compounds-C4YYLyL2.js";import{r as n}from"./media-element-Cp5PrNre.js";import{c as r,i,l as a,r as o}from"./container-element-Dd0ZCdhK.js";import{DEFAULT_LOCALE as s,createTranslator as c,findLocaleKeys as l,getBrowserTranslations as u,getI18nTranslations as d,loadLocale as f,onI18nRegistryChange as p,registerI18n as m,shouldAttemptBrowserTranslation as h,translateText as g}from"./i18n.js";function _(t,n,r=`en`){return!e(t)&&t.trim()!==``?t:!e(n)&&n.trim()!==``?n:r}function v(e){let t=e.getAttribute(`lang`)?.trim();if(t)return t;if(`lang`in e&&typeof e.lang==`string`){let t=e.lang.trim();if(t)return t}}function y(e){return t(e,v)}async function b(e,t,n){let r=n(e),i=await Promise.all(r.map(e=>t(e))),a=[],o={};for(let e=0;e<r.length;e++){let t=i[e];t&&Object.keys(t).length>0&&a.push(r[e])}for(let e=r.length-1;e>=0;e--){let t=i[e];t&&Object.assign(o,t)}return{merged:o,loadedTags:a}}function x(t){if(!(e(t)||t.trim()===``))return t.trim()}const S=new Set;let C,w=!1;const T=()=>{w=!1;for(let e of S)e()},E=()=>{w||(w=!0,queueMicrotask(T))};function D(){C||typeof document>`u`||(C=new MutationObserver(E),C.observe(document.documentElement,{subtree:!0,attributes:!0,attributeFilter:[`lang`],childList:!0}))}function O(){S.size||!C||(C.disconnect(),C=void 0,w=!1)}function k(e){return typeof document>`u`?()=>{}:(S.add(e),D(),()=>{S.delete(e),O()})}function A(e,t){return _(e,t)}function j(e){return A(x(e.lang),x(y(e.parentElement??(typeof document<`u`?document.documentElement:null))))}function M({context:e,loader:t=f}){return n=>{class r extends n{constructor(...t){super(...t),this.lang=``,this.#e=new a(this,{context:e,initialValue:{translator:i(),locale:s}}),this.#r=0,this.#i={},this.#a=0,this.#c={translator:i(),locale:s},this.#u=-1}static{this.properties={...n.properties,lang:{type:String,reflect:!0}}}#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;get i18nValue(){return this.#c}connectedCallback(){super.connectedCallback(),this.#t=p(()=>{this.#r+=1,this.requestUpdate()}),this.#n=k(()=>this.requestUpdate()),this.#f(),this.#m(),this.requestUpdate()}disconnectedCallback(){super.disconnectedCallback(),this.#t?.(),this.#t=void 0,this.#n?.(),this.#n=void 0,this.#a+=1,this.#i={},this.#o=void 0,this.#s=void 0}willUpdate(e){super.willUpdate(e);let t=j(this);if(this.#o!==t){let e=this.#o!==void 0;this.#o=t;let n=!e&&this.#s!==void 0&&t!==this.#s;(e||n)&&this.#f()}this.#m()}#f(){let e=j(this);this.#s=e,this.#a+=1;let n=this.#a;this.#i={},(async()=>{let{merged:r,loadedTags:i}=await b(e,t,l);if(n===this.#a){if(h(e,i,r)){let t=await u(e);if(n!==this.#a)return;Object.keys(t).length&&m(e,t)}n===this.#a&&(this.#i=r,this.requestUpdate())}})()}#p(){return j(this)}#m(){let e=this.#p();if(this.#l===e&&this.#u===this.#r&&this.#d===this.#i)return;let t=c({...d(e),...this.#i},e);this.#c={translator:t,locale:e},this.#l=e,this.#u=this.#r,this.#d=this.#i,this.#e.setValue(this.#c)}}return r}}const N=M({context:r});var P=class extends N(n){static{this.tagName=`media-i18n`}};function F({context:e}){return t=>{class n extends t{constructor(...t){super(...t),this.#e=new o(this,e),this.token=``}static{this.properties={token:{type:String}}}#e;#t;connectedCallback(){this.#t??=this.textContent?.trim()??``,super.connectedCallback()}updated(e){if(super.updated(e),!this.#t){this.textContent=``;return}let t=this.token?{key:this.token,text:this.#t}:this.#t;this.textContent=typeof t==`string`?t:g(t,this.#e.value)}}return n}}const I=F({context:r});var L=class extends I(n){static{this.tagName=`media-text`}};export{P as n,L as t};
|
|
2
|
+
//# sourceMappingURL=text-element-BoY6AhMn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-element-DeWBNKXb.js","names":["nearestLang","defaultLoader","ContextProvider","#i18nProvider","#i18nValue","#registryUnsubscribe","#registryEpoch","#ambientUnsubscribe","#resetLazyAndLoad","#publish","#lazySeq","#lazyLayer","#resolvedLocaleForLazy","#lazyResetStartedForLocale","#resolvedLocale","#publishedLocale","#publishedRegistryEpoch","#publishedLazyLayer","#i18n","#text"],"sources":["../../utils/dist/dom/locale/effective-locale.js","../../utils/dist/dom/locale/find-nearest-lang.js","../../utils/dist/dom/locale/merge-locale-overlays.js","../../utils/dist/dom/locale/resolve-lang-attr.js","../../utils/dist/dom/locale/subscribe-ambient-lang.js","../src/i18n/locale.ts","../src/i18n/provider-mixin.ts","../src/i18n/provider-element.ts","../src/i18n/text-mixin.ts","../src/ui/text/text-element.ts"],"sourcesContent":["import \"../../i18n.js\";\nimport { isUndefined } from \"../../predicate/predicate.js\";\n//#region src/dom/locale/effective-locale.ts\n/** Resolves locale: explicit non-empty value → ambient `lang` → {@link fallback}. */\nfunction effectiveLocale(explicitLocale, ambientLang, fallback = \"en\") {\n\tif (!isUndefined(explicitLocale) && explicitLocale.trim() !== \"\") return explicitLocale;\n\tif (!isUndefined(ambientLang) && ambientLang.trim() !== \"\") return ambientLang;\n\treturn fallback;\n}\n//#endregion\nexport { effectiveLocale };\n\n//# sourceMappingURL=effective-locale.js.map","import { walkAncestors } from \"../walk-ancestors.js\";\n//#region src/dom/locale/find-nearest-lang.ts\nfunction getElementLang(node) {\n\tconst fromAttribute = node.getAttribute(\"lang\")?.trim();\n\tif (fromAttribute) return fromAttribute;\n\tif (\"lang\" in node && typeof node.lang === \"string\") {\n\t\tconst fromProperty = node.lang.trim();\n\t\tif (fromProperty) return fromProperty;\n\t}\n}\n/** First non-empty `lang` on `start` or an ancestor (HTML language inheritance). */\nfunction findNearestLang(start) {\n\treturn walkAncestors(start, getElementLang);\n}\n//#endregion\nexport { findNearestLang };\n\n//# sourceMappingURL=find-nearest-lang.js.map","//#region src/dom/locale/merge-locale-overlays.ts\n/**\n* Loads overlay layers for each resolved locale key, least-specific first, then merges\n* most-specific-last (same semantics as the core i18n registry).\n*/\nasync function mergeLocaleOverlays(locale, load, findKeys) {\n\tconst chain = findKeys(locale);\n\tconst layers = await Promise.all(chain.map((tag) => load(tag)));\n\tconst loadedTags = [];\n\tconst merged = {};\n\tfor (let i = 0; i < chain.length; i++) {\n\t\tconst layer = layers[i];\n\t\tif (layer && Object.keys(layer).length > 0) loadedTags.push(chain[i]);\n\t}\n\tfor (let i = chain.length - 1; i >= 0; i--) {\n\t\tconst layer = layers[i];\n\t\tif (layer) Object.assign(merged, layer);\n\t}\n\treturn {\n\t\tmerged,\n\t\tloadedTags\n\t};\n}\n//#endregion\nexport { mergeLocaleOverlays };\n\n//# sourceMappingURL=merge-locale-overlays.js.map","import { isUndefined } from \"../../predicate/predicate.js\";\n//#region src/dom/locale/resolve-lang-attr.ts\n/**\n* Normalizes a raw `lang` string (e.g. from {@link findNearestLang}): empty or whitespace-only →\n* `undefined`, otherwise the trimmed value.\n*/\nfunction resolveLangAttr(raw) {\n\tif (isUndefined(raw) || raw.trim() === \"\") return;\n\treturn raw.trim();\n}\n//#endregion\nexport { resolveLangAttr };\n\n//# sourceMappingURL=resolve-lang-attr.js.map","//#region src/dom/locale/subscribe-ambient-lang.ts\nconst subscribers = /* @__PURE__ */ new Set();\nlet observer;\nlet queued = false;\nconst flush = () => {\n\tqueued = false;\n\tfor (const cb of subscribers) cb();\n};\nconst schedule = () => {\n\tif (!queued) {\n\t\tqueued = true;\n\t\tqueueMicrotask(flush);\n\t}\n};\nfunction start() {\n\tif (observer || typeof document === \"undefined\") return;\n\tobserver = new MutationObserver(schedule);\n\tobserver.observe(document.documentElement, {\n\t\tsubtree: true,\n\t\tattributes: true,\n\t\tattributeFilter: [\"lang\"],\n\t\tchildList: true\n\t});\n}\nfunction stop() {\n\tif (subscribers.size || !observer) return;\n\tobserver.disconnect();\n\tobserver = void 0;\n\tqueued = false;\n}\n/**\n* Subscribes to DOM updates that can change inherited `lang`: any `lang` attribute edit,\n* or subtree structural changes under `<html>` (which can move nodes between labeled ancestors).\n*/\nfunction subscribeAmbientLang(onStoreChange) {\n\tif (typeof document === \"undefined\") return () => {};\n\tsubscribers.add(onStoreChange);\n\tstart();\n\treturn () => {\n\t\tsubscribers.delete(onStoreChange);\n\t\tstop();\n\t};\n}\n//#endregion\nexport { subscribeAmbientLang };\n\n//# sourceMappingURL=subscribe-ambient-lang.js.map","import type { Locale } from '@videojs/core/i18n';\nimport { effectiveLocale, nearestLang, resolveLangAttr } from '@videojs/utils/dom';\n\n/** Delegates to {@link effectiveLocale}; result is typed as {@link Locale} for player UI. */\nexport function resolvePlayerLocale(explicit: Locale | undefined, inherited: Locale | undefined): Locale {\n return effectiveLocale<Locale>(explicit, inherited);\n}\n\n/** Effective locale for an i18n provider element (explicit `lang` → ancestor `lang` chain → `en`). */\nexport function resolveProviderLocale(host: HTMLElement & { lang?: string }): Locale {\n const explicit = resolveLangAttr<Locale>(host.lang);\n const root = host.parentElement ?? (typeof document !== 'undefined' ? document.documentElement : null);\n const inherited = resolveLangAttr<Locale>(nearestLang(root));\n return resolvePlayerLocale(explicit, inherited);\n}\n","import {\n createTranslator,\n DEFAULT_LOCALE,\n loadLocale as defaultLoader,\n type FlatTranslations,\n findLocaleKeys,\n getBrowserTranslations,\n getI18nTranslations,\n type Locale,\n onI18nRegistryChange,\n registerI18n,\n shouldAttemptBrowserTranslation,\n} from '@videojs/core/i18n';\nimport type { PropertyValues, ReactiveElement } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport { mergeLocaleOverlays, subscribeAmbientLang } from '@videojs/utils/dom';\nimport type { Constructor } from '@videojs/utils/types';\n\nimport type { I18nContext, I18nContextValue } from './context';\nimport { getFallbackTranslator } from './controller';\nimport { resolveProviderLocale } from './locale';\nimport type { LocaleLoader, ReactiveElementMixinBase } from './types';\n\nexport interface I18nProviderConfig {\n context: I18nContext;\n /** Override lazy loading of shipped locale packs (tests or custom loaders). */\n loader?: LocaleLoader | undefined;\n}\n\nexport type I18nProviderMixin = <Base extends ReactiveElementMixinBase>(\n Base: Base\n) => Constructor<ReactiveElement> & Base;\n\nexport function createI18nProviderMixin({ context, loader = defaultLoader }: I18nProviderConfig): I18nProviderMixin {\n return <Base extends ReactiveElementMixinBase>(Base: Base) => {\n class I18nProviderElement extends Base {\n static properties = {\n ...Base.properties,\n lang: { type: String, reflect: true },\n };\n\n lang = '';\n\n readonly #i18nProvider = new ContextProvider(this, {\n context,\n initialValue: {\n translator: getFallbackTranslator(),\n locale: DEFAULT_LOCALE,\n },\n });\n\n #registryUnsubscribe: (() => void) | undefined;\n #ambientUnsubscribe: (() => void) | undefined;\n #registryEpoch = 0;\n #lazyLayer: Partial<FlatTranslations> = {};\n #lazySeq = 0;\n /** Tracks locale used for `#lazyLayer`; ambient `lang` can change without the `lang` property. */\n #resolvedLocaleForLazy: Locale | undefined;\n /** Locale snapshot when the current `#lazySeq` async load was started (see `willUpdate` drift guard). */\n #lazyResetStartedForLocale: Locale | undefined;\n #i18nValue: I18nContextValue = {\n translator: getFallbackTranslator(),\n locale: DEFAULT_LOCALE,\n };\n #publishedLocale: Locale | undefined;\n #publishedRegistryEpoch = -1;\n #publishedLazyLayer: Partial<FlatTranslations> | undefined;\n\n protected get i18nValue(): I18nContextValue {\n return this.#i18nValue;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#registryUnsubscribe = onI18nRegistryChange(() => {\n this.#registryEpoch += 1;\n this.requestUpdate();\n });\n this.#ambientUnsubscribe = subscribeAmbientLang(() => this.requestUpdate());\n this.#resetLazyAndLoad();\n this.#publish();\n this.requestUpdate();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#registryUnsubscribe?.();\n this.#registryUnsubscribe = undefined;\n this.#ambientUnsubscribe?.();\n this.#ambientUnsubscribe = undefined;\n this.#lazySeq += 1;\n this.#lazyLayer = {};\n this.#resolvedLocaleForLazy = undefined;\n this.#lazyResetStartedForLocale = undefined;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n const locale = resolveProviderLocale(this);\n if (this.#resolvedLocaleForLazy !== locale) {\n const hadLocale = this.#resolvedLocaleForLazy !== undefined;\n this.#resolvedLocaleForLazy = locale;\n const localeDriftedBeforeFirstPaint =\n !hadLocale && this.#lazyResetStartedForLocale !== undefined && locale !== this.#lazyResetStartedForLocale;\n if (hadLocale || localeDriftedBeforeFirstPaint) {\n this.#resetLazyAndLoad();\n }\n }\n this.#publish();\n }\n\n #resetLazyAndLoad(): void {\n const localeSnapshot = resolveProviderLocale(this);\n this.#lazyResetStartedForLocale = localeSnapshot;\n this.#lazySeq += 1;\n const seq = this.#lazySeq;\n this.#lazyLayer = {};\n void (async () => {\n const { merged, loadedTags } = await mergeLocaleOverlays(localeSnapshot, loader, findLocaleKeys);\n if (seq !== this.#lazySeq) return;\n if (shouldAttemptBrowserTranslation(localeSnapshot, loadedTags, merged)) {\n const browser = await getBrowserTranslations(localeSnapshot);\n if (seq !== this.#lazySeq) return;\n if (Object.keys(browser).length) registerI18n(localeSnapshot, browser);\n }\n if (seq !== this.#lazySeq) return;\n this.#lazyLayer = merged;\n this.requestUpdate();\n })();\n }\n\n #resolvedLocale(): Locale {\n return resolveProviderLocale(this);\n }\n\n #publish(): void {\n const locale = this.#resolvedLocale();\n if (\n this.#publishedLocale === locale &&\n this.#publishedRegistryEpoch === this.#registryEpoch &&\n this.#publishedLazyLayer === this.#lazyLayer\n ) {\n return;\n }\n const registryLayer = getI18nTranslations(locale);\n const translations: FlatTranslations = {\n ...registryLayer,\n ...this.#lazyLayer,\n };\n const translator = createTranslator(translations, locale);\n this.#i18nValue = { translator, locale };\n this.#publishedLocale = locale;\n this.#publishedRegistryEpoch = this.#registryEpoch;\n this.#publishedLazyLayer = this.#lazyLayer;\n this.#i18nProvider.setValue(this.#i18nValue);\n }\n }\n return I18nProviderElement;\n };\n}\n","import { ReactiveElement } from '@videojs/element';\nimport { i18nContext } from './context';\nimport { createI18nProviderMixin, type I18nProviderMixin as ProviderMixin } from './provider-mixin';\n\nexport const I18nProviderMixin: ProviderMixin = createI18nProviderMixin({ context: i18nContext });\n\nexport class I18nProviderElement extends I18nProviderMixin(ReactiveElement) {\n static readonly tagName = 'media-i18n';\n}\n\nexport { I18nProviderElement as MediaI18nProviderElement };\n","import { type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyValues, ReactiveElement } from '@videojs/element';\nimport type { Constructor } from '@videojs/utils/types';\nimport type { I18nContext } from './context';\nimport { I18nController } from './controller';\nimport type { ReactiveElementMixinBase } from './types';\n\nexport type I18nTextMixin = <Base extends ReactiveElementMixinBase>(Base: Base) => Constructor<ReactiveElement> & Base;\n\nexport interface TextMixinConfig {\n context: I18nContext;\n}\n\nexport function createTextMixin({ context }: TextMixinConfig): I18nTextMixin {\n return (Base) => {\n class MediaText extends Base {\n static override properties = {\n token: { type: String },\n };\n\n readonly #i18n = new I18nController(this, context);\n #text: string | undefined;\n token = '';\n\n override connectedCallback(): void {\n this.#text ??= this.textContent?.trim() ?? '';\n super.connectedCallback();\n }\n\n protected override updated(changed: PropertyValues): void {\n super.updated(changed);\n if (!this.#text) {\n this.textContent = '';\n return;\n }\n\n const text: Text | string = this.token ? { key: this.token, text: this.#text } : this.#text;\n this.textContent = typeof text === 'string' ? text : translateText(text, this.#i18n.value);\n }\n }\n\n return MediaText;\n };\n}\n","import { ReactiveElement } from '@videojs/element';\n\nimport { i18nContext } from '../../i18n/context';\nimport { createTextMixin, type I18nTextMixin as TextMixin } from '../../i18n/text-mixin';\n\nexport const I18nTextMixin: TextMixin = createTextMixin({ context: i18nContext });\n\nexport class TextElement extends I18nTextMixin(ReactiveElement) {\n static readonly tagName = 'media-text';\n}\n\nexport { TextElement as MediaTextElement };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"text-element-BoY6AhMn.js","names":["nearestLang","defaultLoader","ContextProvider","#i18nProvider","#i18nValue","#registryUnsubscribe","#registryEpoch","#ambientUnsubscribe","#resetLazyAndLoad","#publish","#lazySeq","#lazyLayer","#resolvedLocaleForLazy","#lazyResetStartedForLocale","#resolvedLocale","#publishedLocale","#publishedRegistryEpoch","#publishedLazyLayer","#i18n","#text"],"sources":["../../utils/dist/dom/locale/effective-locale.js","../../utils/dist/dom/locale/find-nearest-lang.js","../../utils/dist/dom/locale/merge-locale-overlays.js","../../utils/dist/dom/locale/resolve-lang-attr.js","../../utils/dist/dom/locale/subscribe-ambient-lang.js","../src/i18n/locale.ts","../src/i18n/provider-mixin.ts","../src/i18n/provider-element.ts","../src/i18n/text-mixin.ts","../src/ui/text/text-element.ts"],"sourcesContent":["import \"../../i18n.js\";\nimport { isUndefined } from \"../../predicate/predicate.js\";\n//#region src/dom/locale/effective-locale.ts\n/** Resolves locale: explicit non-empty value → ambient `lang` → {@link fallback}. */\nfunction effectiveLocale(explicitLocale, ambientLang, fallback = \"en\") {\n\tif (!isUndefined(explicitLocale) && explicitLocale.trim() !== \"\") return explicitLocale;\n\tif (!isUndefined(ambientLang) && ambientLang.trim() !== \"\") return ambientLang;\n\treturn fallback;\n}\n//#endregion\nexport { effectiveLocale };\n\n//# sourceMappingURL=effective-locale.js.map","import { walkAncestors } from \"../walk-ancestors.js\";\n//#region src/dom/locale/find-nearest-lang.ts\nfunction getElementLang(node) {\n\tconst fromAttribute = node.getAttribute(\"lang\")?.trim();\n\tif (fromAttribute) return fromAttribute;\n\tif (\"lang\" in node && typeof node.lang === \"string\") {\n\t\tconst fromProperty = node.lang.trim();\n\t\tif (fromProperty) return fromProperty;\n\t}\n}\n/** First non-empty `lang` on `start` or an ancestor (HTML language inheritance). */\nfunction findNearestLang(start) {\n\treturn walkAncestors(start, getElementLang);\n}\n//#endregion\nexport { findNearestLang };\n\n//# sourceMappingURL=find-nearest-lang.js.map","//#region src/dom/locale/merge-locale-overlays.ts\n/**\n* Loads overlay layers for each resolved locale key, least-specific first, then merges\n* most-specific-last (same semantics as the core i18n registry).\n*/\nasync function mergeLocaleOverlays(locale, load, findKeys) {\n\tconst chain = findKeys(locale);\n\tconst layers = await Promise.all(chain.map((tag) => load(tag)));\n\tconst loadedTags = [];\n\tconst merged = {};\n\tfor (let i = 0; i < chain.length; i++) {\n\t\tconst layer = layers[i];\n\t\tif (layer && Object.keys(layer).length > 0) loadedTags.push(chain[i]);\n\t}\n\tfor (let i = chain.length - 1; i >= 0; i--) {\n\t\tconst layer = layers[i];\n\t\tif (layer) Object.assign(merged, layer);\n\t}\n\treturn {\n\t\tmerged,\n\t\tloadedTags\n\t};\n}\n//#endregion\nexport { mergeLocaleOverlays };\n\n//# sourceMappingURL=merge-locale-overlays.js.map","import { isUndefined } from \"../../predicate/predicate.js\";\n//#region src/dom/locale/resolve-lang-attr.ts\n/**\n* Normalizes a raw `lang` string (e.g. from {@link findNearestLang}): empty or whitespace-only →\n* `undefined`, otherwise the trimmed value.\n*/\nfunction resolveLangAttr(raw) {\n\tif (isUndefined(raw) || raw.trim() === \"\") return;\n\treturn raw.trim();\n}\n//#endregion\nexport { resolveLangAttr };\n\n//# sourceMappingURL=resolve-lang-attr.js.map","//#region src/dom/locale/subscribe-ambient-lang.ts\nconst subscribers = /* @__PURE__ */ new Set();\nlet observer;\nlet queued = false;\nconst flush = () => {\n\tqueued = false;\n\tfor (const cb of subscribers) cb();\n};\nconst schedule = () => {\n\tif (!queued) {\n\t\tqueued = true;\n\t\tqueueMicrotask(flush);\n\t}\n};\nfunction start() {\n\tif (observer || typeof document === \"undefined\") return;\n\tobserver = new MutationObserver(schedule);\n\tobserver.observe(document.documentElement, {\n\t\tsubtree: true,\n\t\tattributes: true,\n\t\tattributeFilter: [\"lang\"],\n\t\tchildList: true\n\t});\n}\nfunction stop() {\n\tif (subscribers.size || !observer) return;\n\tobserver.disconnect();\n\tobserver = void 0;\n\tqueued = false;\n}\n/**\n* Subscribes to DOM updates that can change inherited `lang`: any `lang` attribute edit,\n* or subtree structural changes under `<html>` (which can move nodes between labeled ancestors).\n*/\nfunction subscribeAmbientLang(onStoreChange) {\n\tif (typeof document === \"undefined\") return () => {};\n\tsubscribers.add(onStoreChange);\n\tstart();\n\treturn () => {\n\t\tsubscribers.delete(onStoreChange);\n\t\tstop();\n\t};\n}\n//#endregion\nexport { subscribeAmbientLang };\n\n//# sourceMappingURL=subscribe-ambient-lang.js.map","import type { Locale } from '@videojs/core/i18n';\nimport { effectiveLocale, nearestLang, resolveLangAttr } from '@videojs/utils/dom';\n\n/** Delegates to {@link effectiveLocale}; result is typed as {@link Locale} for player UI. */\nexport function resolvePlayerLocale(explicit: Locale | undefined, inherited: Locale | undefined): Locale {\n return effectiveLocale<Locale>(explicit, inherited);\n}\n\n/** Effective locale for an i18n provider element (explicit `lang` → ancestor `lang` chain → `en`). */\nexport function resolveProviderLocale(host: HTMLElement & { lang?: string }): Locale {\n const explicit = resolveLangAttr<Locale>(host.lang);\n const root = host.parentElement ?? (typeof document !== 'undefined' ? document.documentElement : null);\n const inherited = resolveLangAttr<Locale>(nearestLang(root));\n return resolvePlayerLocale(explicit, inherited);\n}\n","import {\n createTranslator,\n DEFAULT_LOCALE,\n loadLocale as defaultLoader,\n type FlatTranslations,\n findLocaleKeys,\n getBrowserTranslations,\n getI18nTranslations,\n type Locale,\n onI18nRegistryChange,\n registerI18n,\n shouldAttemptBrowserTranslation,\n} from '@videojs/core/i18n';\nimport type { PropertyValues, ReactiveElement } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport { mergeLocaleOverlays, subscribeAmbientLang } from '@videojs/utils/dom';\nimport type { Constructor } from '@videojs/utils/types';\n\nimport type { I18nContext, I18nContextValue } from './context';\nimport { getFallbackTranslator } from './controller';\nimport { resolveProviderLocale } from './locale';\nimport type { LocaleLoader, ReactiveElementMixinBase } from './types';\n\nexport interface I18nProviderConfig {\n context: I18nContext;\n /** Override lazy loading of shipped locale packs (tests or custom loaders). */\n loader?: LocaleLoader | undefined;\n}\n\nexport type I18nProviderMixin = <Base extends ReactiveElementMixinBase>(\n Base: Base\n) => Constructor<ReactiveElement> & Base;\n\nexport function createI18nProviderMixin({ context, loader = defaultLoader }: I18nProviderConfig): I18nProviderMixin {\n return <Base extends ReactiveElementMixinBase>(Base: Base) => {\n class I18nProviderElement extends Base {\n static properties = {\n ...Base.properties,\n lang: { type: String, reflect: true },\n };\n\n lang = '';\n\n readonly #i18nProvider = new ContextProvider(this, {\n context,\n initialValue: {\n translator: getFallbackTranslator(),\n locale: DEFAULT_LOCALE,\n },\n });\n\n #registryUnsubscribe: (() => void) | undefined;\n #ambientUnsubscribe: (() => void) | undefined;\n #registryEpoch = 0;\n #lazyLayer: Partial<FlatTranslations> = {};\n #lazySeq = 0;\n /** Tracks locale used for `#lazyLayer`; ambient `lang` can change without the `lang` property. */\n #resolvedLocaleForLazy: Locale | undefined;\n /** Locale snapshot when the current `#lazySeq` async load was started (see `willUpdate` drift guard). */\n #lazyResetStartedForLocale: Locale | undefined;\n #i18nValue: I18nContextValue = {\n translator: getFallbackTranslator(),\n locale: DEFAULT_LOCALE,\n };\n #publishedLocale: Locale | undefined;\n #publishedRegistryEpoch = -1;\n #publishedLazyLayer: Partial<FlatTranslations> | undefined;\n\n protected get i18nValue(): I18nContextValue {\n return this.#i18nValue;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#registryUnsubscribe = onI18nRegistryChange(() => {\n this.#registryEpoch += 1;\n this.requestUpdate();\n });\n this.#ambientUnsubscribe = subscribeAmbientLang(() => this.requestUpdate());\n this.#resetLazyAndLoad();\n this.#publish();\n this.requestUpdate();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#registryUnsubscribe?.();\n this.#registryUnsubscribe = undefined;\n this.#ambientUnsubscribe?.();\n this.#ambientUnsubscribe = undefined;\n this.#lazySeq += 1;\n this.#lazyLayer = {};\n this.#resolvedLocaleForLazy = undefined;\n this.#lazyResetStartedForLocale = undefined;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n const locale = resolveProviderLocale(this);\n if (this.#resolvedLocaleForLazy !== locale) {\n const hadLocale = this.#resolvedLocaleForLazy !== undefined;\n this.#resolvedLocaleForLazy = locale;\n const localeDriftedBeforeFirstPaint =\n !hadLocale && this.#lazyResetStartedForLocale !== undefined && locale !== this.#lazyResetStartedForLocale;\n if (hadLocale || localeDriftedBeforeFirstPaint) {\n this.#resetLazyAndLoad();\n }\n }\n this.#publish();\n }\n\n #resetLazyAndLoad(): void {\n const localeSnapshot = resolveProviderLocale(this);\n this.#lazyResetStartedForLocale = localeSnapshot;\n this.#lazySeq += 1;\n const seq = this.#lazySeq;\n this.#lazyLayer = {};\n void (async () => {\n const { merged, loadedTags } = await mergeLocaleOverlays(localeSnapshot, loader, findLocaleKeys);\n if (seq !== this.#lazySeq) return;\n if (shouldAttemptBrowserTranslation(localeSnapshot, loadedTags, merged)) {\n const browser = await getBrowserTranslations(localeSnapshot);\n if (seq !== this.#lazySeq) return;\n if (Object.keys(browser).length) registerI18n(localeSnapshot, browser);\n }\n if (seq !== this.#lazySeq) return;\n this.#lazyLayer = merged;\n this.requestUpdate();\n })();\n }\n\n #resolvedLocale(): Locale {\n return resolveProviderLocale(this);\n }\n\n #publish(): void {\n const locale = this.#resolvedLocale();\n if (\n this.#publishedLocale === locale &&\n this.#publishedRegistryEpoch === this.#registryEpoch &&\n this.#publishedLazyLayer === this.#lazyLayer\n ) {\n return;\n }\n const registryLayer = getI18nTranslations(locale);\n const translations: FlatTranslations = {\n ...registryLayer,\n ...this.#lazyLayer,\n };\n const translator = createTranslator(translations, locale);\n this.#i18nValue = { translator, locale };\n this.#publishedLocale = locale;\n this.#publishedRegistryEpoch = this.#registryEpoch;\n this.#publishedLazyLayer = this.#lazyLayer;\n this.#i18nProvider.setValue(this.#i18nValue);\n }\n }\n return I18nProviderElement;\n };\n}\n","import { ReactiveElement } from '@videojs/element';\nimport { i18nContext } from './context';\nimport { createI18nProviderMixin, type I18nProviderMixin as ProviderMixin } from './provider-mixin';\n\nexport const I18nProviderMixin: ProviderMixin = createI18nProviderMixin({ context: i18nContext });\n\nexport class I18nProviderElement extends I18nProviderMixin(ReactiveElement) {\n static readonly tagName = 'media-i18n';\n}\n\nexport { I18nProviderElement as MediaI18nProviderElement };\n","import { type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyValues, ReactiveElement } from '@videojs/element';\nimport type { Constructor } from '@videojs/utils/types';\nimport type { I18nContext } from './context';\nimport { I18nController } from './controller';\nimport type { ReactiveElementMixinBase } from './types';\n\nexport type I18nTextMixin = <Base extends ReactiveElementMixinBase>(Base: Base) => Constructor<ReactiveElement> & Base;\n\nexport interface TextMixinConfig {\n context: I18nContext;\n}\n\nexport function createTextMixin({ context }: TextMixinConfig): I18nTextMixin {\n return (Base) => {\n class MediaText extends Base {\n static override properties = {\n token: { type: String },\n };\n\n readonly #i18n = new I18nController(this, context);\n #text: string | undefined;\n token = '';\n\n override connectedCallback(): void {\n this.#text ??= this.textContent?.trim() ?? '';\n super.connectedCallback();\n }\n\n protected override updated(changed: PropertyValues): void {\n super.updated(changed);\n if (!this.#text) {\n this.textContent = '';\n return;\n }\n\n const text: Text | string = this.token ? { key: this.token, text: this.#text } : this.#text;\n this.textContent = typeof text === 'string' ? text : translateText(text, this.#i18n.value);\n }\n }\n\n return MediaText;\n };\n}\n","import { ReactiveElement } from '@videojs/element';\n\nimport { i18nContext } from '../../i18n/context';\nimport { createTextMixin, type I18nTextMixin as TextMixin } from '../../i18n/text-mixin';\n\nexport const I18nTextMixin: TextMixin = createTextMixin({ context: i18nContext });\n\nexport class TextElement extends I18nTextMixin(ReactiveElement) {\n static readonly tagName = 'media-text';\n}\n\nexport { TextElement as MediaTextElement };\n"],"mappings":"2cAIA,SAAS,EAAgB,EAAgB,EAAa,EAAW,KAAM,CAGtE,MAFI,CAAC,EAAY,CAAc,GAAK,EAAe,KAAK,IAAM,GAAW,EACrE,CAAC,EAAY,CAAW,GAAK,EAAY,KAAK,IAAM,GAAW,EAC5D,CACR,CCNA,SAAS,EAAe,EAAM,CAC7B,IAAM,EAAgB,EAAK,aAAa,MAAM,CAAC,EAAE,KAAK,EACtD,GAAI,EAAe,OAAO,EAC1B,GAAI,SAAU,GAAQ,OAAO,EAAK,MAAS,SAAU,CACpD,IAAM,EAAe,EAAK,KAAK,KAAK,EACpC,GAAI,EAAc,OAAO,CAC1B,CACD,CAEA,SAAS,EAAgB,EAAO,CAC/B,OAAO,EAAc,EAAO,CAAc,CAC3C,CCRA,eAAe,EAAoB,EAAQ,EAAM,EAAU,CAC1D,IAAM,EAAQ,EAAS,CAAM,EACvB,EAAS,MAAM,QAAQ,IAAI,EAAM,IAAK,GAAQ,EAAK,CAAG,CAAC,CAAC,EACxD,EAAa,CAAC,EACd,EAAS,CAAC,EAChB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACtC,IAAM,EAAQ,EAAO,GACjB,GAAS,OAAO,KAAK,CAAK,CAAC,CAAC,OAAS,GAAG,EAAW,KAAK,EAAM,EAAE,CACrE,CACA,IAAK,IAAI,EAAI,EAAM,OAAS,EAAG,GAAK,EAAG,IAAK,CAC3C,IAAM,EAAQ,EAAO,GACjB,GAAO,OAAO,OAAO,EAAQ,CAAK,CACvC,CACA,MAAO,CACN,SACA,YACD,CACD,CChBA,SAAS,EAAgB,EAAK,CACzB,OAAY,CAAG,GAAK,EAAI,KAAK,IAAM,IACvC,OAAO,EAAI,KAAK,CACjB,CCRA,MAAM,EAA8B,IAAI,IACxC,IAAI,EACA,EAAS,GACb,MAAM,MAAc,CACnB,EAAS,GACT,IAAK,IAAM,KAAM,EAAa,EAAG,CAClC,EACM,MAAiB,CACjB,IACJ,EAAS,GACT,eAAe,CAAK,EAEtB,EACA,SAAS,GAAQ,CACZ,GAAY,OAAO,SAAa,MACpC,EAAW,IAAI,iBAAiB,CAAQ,EACxC,EAAS,QAAQ,SAAS,gBAAiB,CAC1C,QAAS,GACT,WAAY,GACZ,gBAAiB,CAAC,MAAM,EACxB,UAAW,EACZ,CAAC,EACF,CACA,SAAS,GAAO,CACX,EAAY,MAAQ,CAAC,IACzB,EAAS,WAAW,EACpB,EAAW,IAAK,GAChB,EAAS,GACV,CAKA,SAAS,EAAqB,EAAe,CAI5C,OAHI,OAAO,SAAa,QAA0B,CAAC,GACnD,EAAY,IAAI,CAAa,EAC7B,EAAM,MACO,CACZ,EAAY,OAAO,CAAa,EAChC,EAAK,CACN,EACD,CCtCA,SAAgB,EAAoB,EAA8B,EAAuC,CACvG,OAAO,EAAwB,EAAU,CAAS,CACpD,CAGA,SAAgB,EAAsB,EAA+C,CAInF,OAAO,EAHU,EAAwB,EAAK,IAGZ,EADhB,EAAwBA,EAD7B,EAAK,gBAAkB,OAAO,SAAa,IAAc,SAAS,gBAAkB,KACvC,CACb,CAAC,CAChD,CCmBA,SAAgB,EAAwB,CAAE,UAAS,SAASC,GAAwD,CAClH,MAA+C,IAAe,CAC5D,MAAM,UAA4B,CAAK,+BAM9B,KAAA,KAAA,GAEkB,KAAA,GAAA,IAAIC,EAAgB,KAAM,CACjD,UACA,aAAc,CACZ,WAAY,EAAsB,EAClC,OAAQ,CACV,CACF,CAAC,EAIgB,KAAA,GAAA,EACuB,KAAA,GAAA,CAAC,EAC9B,KAAA,GAAA,EAKoB,KAAA,GAAA,CAC7B,WAAY,EAAsB,EAClC,OAAQ,CACV,EAE0B,KAAA,GAAA,UA7BN,KAAA,WAAA,CAClB,GAAG,EAAK,WACR,KAAM,CAAE,KAAM,OAAQ,QAAS,EAAK,CACtC,EAIA,GAQA,GACA,GACA,GACA,GACA,GAEA,GAEA,GACA,GAIA,GACA,GACA,GAEA,IAAc,WAA8B,CAC1C,OAAO,KAAKE,EACd,CAEA,mBAAmC,CACjC,MAAM,kBAAkB,EACxB,KAAKC,GAAuB,MAA2B,CACrD,KAAKC,IAAkB,EACvB,KAAK,cAAc,CACrB,CAAC,EACD,KAAKC,GAAsB,MAA2B,KAAK,cAAc,CAAC,EAC1E,KAAKC,GAAkB,EACvB,KAAKC,GAAS,EACd,KAAK,cAAc,CACrB,CAEA,sBAAsC,CACpC,MAAM,qBAAqB,EAC3B,KAAKJ,KAAuB,EAC5B,KAAKA,GAAuB,IAAA,GAC5B,KAAKE,KAAsB,EAC3B,KAAKA,GAAsB,IAAA,GAC3B,KAAKG,IAAY,EACjB,KAAKC,GAAa,CAAC,EACnB,KAAKC,GAAyB,IAAA,GAC9B,KAAKC,GAA6B,IAAA,EACpC,CAEA,WAA8B,EAA+B,CAC3D,MAAM,WAAW,CAAO,EACxB,IAAM,EAAS,EAAsB,IAAI,EACzC,GAAI,KAAKD,KAA2B,EAAQ,CAC1C,IAAM,EAAY,KAAKA,KAA2B,IAAA,GAClD,KAAKA,GAAyB,EAC9B,IAAM,EACJ,CAAC,GAAa,KAAKC,KAA+B,IAAA,IAAa,IAAW,KAAKA,IAC7E,GAAa,IACf,KAAKL,GAAkB,CAE3B,CACA,KAAKC,GAAS,CAChB,CAEA,IAA0B,CACxB,IAAM,EAAiB,EAAsB,IAAI,EACjD,KAAKI,GAA6B,EAClC,KAAKH,IAAY,EACjB,IAAM,EAAM,KAAKA,GACjB,KAAKC,GAAa,CAAC,GACb,SAAY,CAChB,GAAM,CAAE,SAAQ,cAAe,MAAM,EAAoB,EAAgB,EAAQ,CAAc,EAC3F,OAAQ,KAAKD,GACjB,IAAI,EAAgC,EAAgB,EAAY,CAAM,EAAG,CACvE,IAAM,EAAU,MAAM,EAAuB,CAAc,EAC3D,GAAI,IAAQ,KAAKA,GAAU,OACvB,OAAO,KAAK,CAAO,CAAC,CAAC,QAAQ,EAAa,EAAgB,CAAO,CACvE,CACI,IAAQ,KAAKA,KACjB,KAAKC,GAAa,EAClB,KAAK,cAAc,EAHnB,CAIF,EAAA,CAAG,CACL,CAEA,IAA0B,CACxB,OAAO,EAAsB,IAAI,CACnC,CAEA,IAAiB,CACf,IAAM,EAAS,KAAKG,GAAgB,EACpC,GACE,KAAKC,KAAqB,GAC1B,KAAKC,KAA4B,KAAKV,IACtC,KAAKW,KAAwB,KAAKN,GAElC,OAOF,IAAM,EAAa,EAAiB,CAHlC,GAFoB,EAAoB,CAEzB,EACf,GAAG,KAAKA,EAEqC,EAAG,CAAM,EACxD,KAAKP,GAAa,CAAE,aAAY,QAAO,EACvC,KAAKW,GAAmB,EACxB,KAAKC,GAA0B,KAAKV,GACpC,KAAKW,GAAsB,KAAKN,GAChC,KAAKR,GAAc,SAAS,KAAKC,EAAU,CAC7C,CACF,CACA,OAAO,CACT,CACF,CC3JA,MAAa,EAAmC,EAAwB,CAAE,QAAS,CAAY,CAAC,EAEhG,IAAa,EAAb,cAAyC,EAAkB,CAAe,CAAC,AAAC,QAChD,KAAA,QAAA,aAC5B,ECKA,SAAgB,EAAgB,CAAE,WAA2C,CAC3E,MAAQ,IAAS,CACf,MAAM,UAAkB,CAAK,+BAKV,KAAA,GAAA,IAAI,EAAe,KAAM,CAAO,EAEzC,KAAA,MAAA,UANqB,KAAA,WAAA,CAC3B,MAAO,CAAE,KAAM,MAAO,CACxB,EAEA,GACA,GAGA,mBAAmC,CACjC,KAAKe,KAAU,KAAK,aAAa,KAAK,GAAK,GAC3C,MAAM,kBAAkB,CAC1B,CAEA,QAA2B,EAA+B,CAExD,GADA,MAAM,QAAQ,CAAO,EACjB,CAAC,KAAKA,GAAO,CACf,KAAK,YAAc,GACnB,MACF,CAEA,IAAM,EAAsB,KAAK,MAAQ,CAAE,IAAK,KAAK,MAAO,KAAM,KAAKA,EAAM,EAAI,KAAKA,GACtF,KAAK,YAAc,OAAO,GAAS,SAAW,EAAO,EAAc,EAAM,KAAKD,GAAM,KAAK,CAC3F,CACF,CAEA,OAAO,CACT,CACF,CCtCA,MAAa,EAA2B,EAAgB,CAAE,QAAS,CAAY,CAAC,EAEhF,IAAa,EAAb,cAAiC,EAAc,CAAe,CAAC,AAAC,QACpC,KAAA,QAAA,aAC5B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { u as isUndefined } from "./predicate-faYxAB6Z.js";
|
|
2
|
-
import {
|
|
2
|
+
import { rt as walkAncestors } from "./compounds-C73u1MeO.js";
|
|
3
3
|
import { r as ReactiveElement } from "./media-element-CJY3JIgc.js";
|
|
4
4
|
import { c as i18nContext, i as getFallbackTranslator, l as ContextProvider, r as I18nController } from "./container-element-HHK_KZOE.js";
|
|
5
5
|
import { DEFAULT_LOCALE, createTranslator, findLocaleKeys, getBrowserTranslations, getI18nTranslations, loadLocale, onI18nRegistryChange, registerI18n, shouldAttemptBrowserTranslation, translateText } from "./i18n.dev.js";
|
|
@@ -301,4 +301,4 @@ var TextElement = class extends I18nTextMixin(ReactiveElement) {
|
|
|
301
301
|
|
|
302
302
|
//#endregion
|
|
303
303
|
export { I18nProviderElement as n, TextElement as t };
|
|
304
|
-
//# sourceMappingURL=text-element-
|
|
304
|
+
//# sourceMappingURL=text-element-cg6l21cd.js.map
|