@videojs/html 10.0.0-beta.30 → 10.0.0-beta.31
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/audio-minimal-ui.dev.js +1 -1
- package/cdn/audio-minimal-ui.js +1 -1
- package/cdn/audio-minimal.dev.js +4 -4
- 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-player.dev.js +1 -0
- package/cdn/audio-player.js +1 -0
- package/cdn/audio-ui.dev.js +1 -1
- package/cdn/audio-ui.js +1 -1
- package/cdn/audio.dev.js +4 -4
- 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/{compounds-D1FPw7jg.js → compounds-BA8gXlmJ.js} +32 -188
- package/cdn/compounds-BA8gXlmJ.js.map +1 -0
- package/cdn/compounds-DKoFv2f8.js +8 -0
- package/cdn/compounds-DKoFv2f8.js.map +1 -0
- package/cdn/{create-player-5UrHNqBI.js → create-player-BEEc22xK.js} +18 -2
- package/cdn/{create-player-5UrHNqBI.js.map → create-player-BEEc22xK.js.map} +1 -1
- package/cdn/create-player-D5WQ_jzZ.js +2 -0
- package/cdn/{create-player-LjvbIxIq.js.map → create-player-D5WQ_jzZ.js.map} +1 -1
- package/cdn/{gesture-element-BbNy1Pjt.js → gesture-element-CxdagZOo.js} +2 -2
- package/cdn/{gesture-element-BbNy1Pjt.js.map → gesture-element-CxdagZOo.js.map} +1 -1
- package/cdn/{gesture-element-KdpjbbBD.js → gesture-element-x6kojUJk.js} +3 -3
- package/cdn/{gesture-element-KdpjbbBD.js.map → gesture-element-x6kojUJk.js.map} +1 -1
- package/cdn/i18n-CE4KxKuj.js.map +1 -1
- package/cdn/{i18n-DeI9j-ko.js → i18n-C_WyuIHd.js} +2 -2
- package/cdn/{i18n-DeI9j-ko.js.map → i18n-C_WyuIHd.js.map} +1 -1
- package/cdn/i18n-DyF_NfCk.js.map +1 -1
- package/cdn/i18n-o3_t8fxw.js +2 -0
- package/cdn/{i18n-R3TQ8P2f.js.map → i18n-o3_t8fxw.js.map} +1 -1
- package/cdn/live-audio-minimal-ui.dev.js +2 -0
- package/cdn/live-audio-minimal-ui.js +1 -0
- package/cdn/live-audio-minimal.dev.d.ts +1 -0
- package/cdn/live-audio-minimal.dev.js +97 -0
- package/cdn/live-audio-minimal.dev.js.map +1 -0
- package/cdn/live-audio-minimal.js +2 -0
- package/cdn/live-audio-minimal.js.map +1 -0
- package/cdn/live-audio-player.dev.d.ts +1 -0
- package/cdn/live-audio-player.dev.js +1 -0
- package/cdn/live-audio-player.js +1 -0
- package/cdn/live-audio-ui.dev.d.ts +1 -0
- package/cdn/live-audio-ui.dev.js +2 -0
- package/cdn/live-audio-ui.js +1 -0
- package/cdn/live-audio.dev.d.ts +1 -0
- package/cdn/live-audio.dev.js +97 -0
- package/cdn/live-audio.dev.js.map +1 -0
- package/cdn/live-audio.js +2 -0
- package/cdn/live-audio.js.map +1 -0
- package/cdn/{live-button-element-CylfQD0v.js → live-button-element-BFufqFFV.js} +3 -3
- package/cdn/{live-button-element-CylfQD0v.js.map → live-button-element-BFufqFFV.js.map} +1 -1
- package/cdn/live-button-element-CEbrR59d.js +2 -0
- package/cdn/{live-button-element-C-WypudK.js.map → live-button-element-CEbrR59d.js.map} +1 -1
- package/cdn/live-video-minimal-ui.dev.d.ts +1 -0
- package/cdn/live-video-minimal-ui.dev.js +2 -0
- package/cdn/live-video-minimal-ui.js +1 -0
- package/cdn/live-video-minimal.dev.js +5 -36
- 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-player.dev.d.ts +1 -0
- package/cdn/live-video-player.dev.js +1 -0
- package/cdn/live-video-player.js +1 -0
- package/cdn/live-video-ui.dev.d.ts +1 -0
- package/cdn/live-video-ui.dev.js +2 -0
- package/cdn/live-video-ui.js +1 -0
- package/cdn/live-video.dev.js +5 -38
- 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-background-video.dev.js +1 -1
- package/cdn/media/hls-background-video.js +1 -1
- package/cdn/media/hls-background-video.js.map +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-background-video.js.map +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-B4uT13xV.js → media-B4uT13xV2.js} +1 -1
- package/cdn/media-B4uT13xV2.js.map +1 -0
- package/cdn/{media-D6Xer97u.js → media-D6Xer97u2.js} +1 -1
- package/cdn/media-D6Xer97u2.js.map +1 -0
- package/cdn/minimal-ui-0eDc51VS.js +2 -0
- package/cdn/{minimal-ui-D3XCtSx_.js.map → minimal-ui-0eDc51VS.js.map} +1 -1
- package/cdn/minimal-ui-C2vRjwax.js +36 -0
- package/cdn/minimal-ui-C2vRjwax.js.map +1 -0
- package/cdn/{minimal-ui-ajeAXABk.js → minimal-ui-CLBGXvp5.js} +4 -4
- package/cdn/{minimal-ui-ajeAXABk.js.map → minimal-ui-CLBGXvp5.js.map} +1 -1
- package/cdn/minimal-ui-ClCvmIm4.js +2 -0
- package/cdn/minimal-ui-ClCvmIm4.js.map +1 -0
- package/cdn/minimal-ui-DDM48qb3.js +2 -0
- package/cdn/minimal-ui-DDM48qb3.js.map +1 -0
- package/cdn/minimal-ui-DY4C1zGt.js +23 -0
- package/cdn/minimal-ui-DY4C1zGt.js.map +1 -0
- package/cdn/{minimal-ui-KUzZkG_3.js → minimal-ui-Dk4_XLp4.js} +8 -8
- package/cdn/{minimal-ui-KUzZkG_3.js.map → minimal-ui-Dk4_XLp4.js.map} +1 -1
- package/cdn/{minimal-ui-p9QCZfCz.js → minimal-ui-JHiRECkp.js} +2 -2
- package/cdn/{minimal-ui-p9QCZfCz.js.map → minimal-ui-JHiRECkp.js.map} +1 -1
- package/cdn/{player-POHYt5tr.js → player-BGAk4zHP.js} +2 -2
- package/cdn/{player-POHYt5tr.js.map → player-BGAk4zHP.js.map} +1 -1
- package/cdn/{player-CngT-cVQ.js → player-Bb9oakYz.js} +2 -2
- package/cdn/{player-CngT-cVQ.js.map → player-Bb9oakYz.js.map} +1 -1
- package/cdn/{player-BXQMSpgR.js → player-BrlY19A2.js} +2 -2
- package/cdn/{player-BXQMSpgR.js.map → player-BrlY19A2.js.map} +1 -1
- package/cdn/{player-BuxifKSM.js → player-CQENs37B.js} +2 -2
- package/cdn/{player-BuxifKSM.js.map → player-CQENs37B.js.map} +1 -1
- package/cdn/player-DdOHaN9e.js +2 -0
- package/cdn/player-DdOHaN9e.js.map +1 -0
- package/cdn/{player-B5zkgqwT.js → player-DtcVc6sP.js} +2 -2
- package/cdn/{player-B5zkgqwT.js.map → player-DtcVc6sP.js.map} +1 -1
- package/cdn/{player-DMP2pc3L.js → player-bEUswOOg.js} +2 -2
- package/cdn/{player-DMP2pc3L.js.map → player-bEUswOOg.js.map} +1 -1
- package/cdn/player-qLOeas8M.js +18 -0
- package/cdn/player-qLOeas8M.js.map +1 -0
- package/cdn/poster-element-BA7p_OJL.js +2 -0
- package/cdn/{poster-element-Djlm5fwC.js.map → poster-element-BA7p_OJL.js.map} +1 -1
- package/cdn/{poster-element-CuCEBVr3.js → poster-element-BTynHaSW.js} +4 -3
- package/cdn/{poster-element-CuCEBVr3.js.map → poster-element-BTynHaSW.js.map} +1 -1
- package/cdn/radio-options-controller-Cz5yFvUh.js +138 -0
- package/cdn/radio-options-controller-Cz5yFvUh.js.map +1 -0
- package/cdn/radio-options-controller-hybHJkeC.js +2 -0
- package/cdn/radio-options-controller-hybHJkeC.js.map +1 -0
- package/cdn/seek-button-element-C4g3qPbc.js +2 -0
- package/cdn/{seek-button-element-CgaXVFPS.js.map → seek-button-element-C4g3qPbc.js.map} +1 -1
- package/cdn/{seek-button-element-BD2caCd5.js → seek-button-element-CirtfRSE.js} +4 -3
- package/cdn/seek-button-element-CirtfRSE.js.map +1 -0
- package/cdn/{skin-element-PDwjO4v0.js → skin-element-BF1a0EIj.js} +2 -2
- package/cdn/{skin-element-PDwjO4v0.js.map → skin-element-BF1a0EIj.js.map} +1 -1
- package/cdn/skin-element-BTt7JKoR.js +2 -0
- package/cdn/{skin-element-DE8OodF5.js.map → skin-element-BTt7JKoR.js.map} +1 -1
- package/cdn/template-BKUlUXWF.js +2 -0
- package/cdn/template-BKUlUXWF.js.map +1 -0
- package/cdn/template-ClYP_1RH.js +31 -0
- package/cdn/template-ClYP_1RH.js.map +1 -0
- package/cdn/text-element-DW2FuvdI.js +2 -0
- package/cdn/text-element-DW2FuvdI.js.map +1 -0
- package/cdn/{text-element-dyiwucQB.js → text-element-LzVNdZbp.js} +50 -2
- package/cdn/text-element-LzVNdZbp.js.map +1 -0
- package/cdn/time-slider-chapters-element-Bf4gYppH.js +2 -0
- package/cdn/{time-slider-chapters-element-b6oeaZtJ.js.map → time-slider-chapters-element-Bf4gYppH.js.map} +1 -1
- package/cdn/{time-slider-chapters-element-BTMqnBhM.js → time-slider-chapters-element-DMkTYNg3.js} +5 -3
- package/cdn/time-slider-chapters-element-DMkTYNg3.js.map +1 -0
- package/cdn/{ui-BsUcH4YJ.js → ui-BL6b1m09.js} +7 -7
- package/cdn/{ui-BsUcH4YJ.js.map → ui-BL6b1m09.js.map} +1 -1
- package/cdn/ui-BbpSrILu.js +2 -0
- package/cdn/{ui-DLvwCbsU.js.map → ui-BbpSrILu.js.map} +1 -1
- package/cdn/ui-BmCfIOl5.js +38 -0
- package/cdn/ui-BmCfIOl5.js.map +1 -0
- package/cdn/ui-Bu9GX-M_.js +28 -0
- package/cdn/ui-Bu9GX-M_.js.map +1 -0
- package/cdn/ui-CBrFrvmm.js +2 -0
- package/cdn/{ui-CxftD4RF.js.map → ui-CBrFrvmm.js.map} +1 -1
- package/cdn/{ui-CtONjPC2.js → ui-CQsP0EFA.js} +9 -9
- package/cdn/{ui-CtONjPC2.js.map → ui-CQsP0EFA.js.map} +1 -1
- package/cdn/ui-Crbp7m4I.js +2 -0
- package/cdn/ui-Crbp7m4I.js.map +1 -0
- package/cdn/ui-DRKjxVsj.js +2 -0
- package/cdn/ui-DRKjxVsj.js.map +1 -0
- package/cdn/video-minimal-ui.dev.js +1 -1
- package/cdn/video-minimal-ui.js +1 -1
- package/cdn/video-minimal.dev.js +13 -12
- 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-player.dev.d.ts +1 -0
- package/cdn/video-player.dev.js +1 -0
- package/cdn/video-player.js +1 -0
- package/cdn/video-ui.dev.js +1 -1
- package/cdn/video-ui.js +1 -1
- package/cdn/video.dev.js +14 -13
- package/cdn/video.dev.js.map +1 -1
- package/cdn/video.js +1 -1
- package/cdn/video.js.map +1 -1
- 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 +39 -7
- package/dist/default/define/audio/skin.css +31 -7
- package/dist/default/define/live-audio/minimal-skin.css +39 -7
- package/dist/default/define/live-audio/skin.css +31 -7
- package/dist/default/define/live-video/minimal-skin.css +39 -7
- 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 +31 -7
- 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/video/minimal-skin.css +39 -7
- 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 +31 -7
- 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/i18n/provider-mixin.js +24 -0
- package/dist/default/i18n/provider-mixin.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/button-group.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/button-group.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/menu.js +8 -7
- package/dist/default/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/time.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js +8 -7
- package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +2 -2
- package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
- package/dist/default/ui/slider/slider-element.js +1 -2
- package/dist/default/ui/slider/slider-element.js.map +1 -1
- package/dist/default/ui/time-slider/time-slider-element.js +1 -2
- package/dist/default/ui/time-slider/time-slider-element.js.map +1 -1
- package/dist/default/ui/volume-slider/volume-slider-element.js +1 -2
- package/dist/default/ui/volume-slider/volume-slider-element.js.map +1 -1
- 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 +39 -7
- package/dist/dev/define/audio/skin.css +31 -7
- package/dist/dev/define/live-audio/minimal-skin.css +39 -7
- package/dist/dev/define/live-audio/skin.css +31 -7
- package/dist/dev/define/live-video/minimal-skin.css +39 -7
- package/dist/dev/define/live-video/minimal-skin.js +1 -1
- package/dist/dev/define/live-video/minimal-skin.js.map +1 -1
- package/dist/dev/define/live-video/minimal-skin.tailwind.js +1 -1
- package/dist/dev/define/live-video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/define/live-video/skin.css +31 -7
- package/dist/dev/define/live-video/skin.js +1 -1
- package/dist/dev/define/live-video/skin.js.map +1 -1
- package/dist/dev/define/live-video/skin.tailwind.js +1 -1
- package/dist/dev/define/live-video/skin.tailwind.js.map +1 -1
- package/dist/dev/define/video/minimal-skin.css +39 -7
- package/dist/dev/define/video/minimal-skin.js +8 -8
- package/dist/dev/define/video/minimal-skin.js.map +1 -1
- package/dist/dev/define/video/minimal-skin.tailwind.js +12 -12
- package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/define/video/skin.css +31 -7
- package/dist/dev/define/video/skin.js +8 -8
- package/dist/dev/define/video/skin.js.map +1 -1
- package/dist/dev/define/video/skin.tailwind.js +12 -12
- package/dist/dev/define/video/skin.tailwind.js.map +1 -1
- package/dist/dev/i18n/provider-mixin.d.ts.map +1 -1
- package/dist/dev/i18n/provider-mixin.js +24 -0
- package/dist/dev/i18n/provider-mixin.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/button-group.js +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/button-group.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/controls.js +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/menu.js +8 -7
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/time.js +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/time.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/button-group.js +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/menu.js +8 -7
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/time.js +2 -2
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
- package/dist/dev/ui/slider/slider-element.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-element.js +1 -2
- package/dist/dev/ui/slider/slider-element.js.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-element.d.ts.map +1 -1
- package/dist/dev/ui/time-slider/time-slider-element.js +1 -2
- package/dist/dev/ui/time-slider/time-slider-element.js.map +1 -1
- package/dist/dev/ui/volume-slider/volume-slider-element.d.ts.map +1 -1
- package/dist/dev/ui/volume-slider/volume-slider-element.js +1 -2
- package/dist/dev/ui/volume-slider/volume-slider-element.js.map +1 -1
- package/docs/README.md +1 -1
- package/docs/concepts/media-sources.md +26 -2
- package/docs/concepts/skins.md +39 -15
- package/docs/how-to/customize-skins.md +7662 -48
- package/docs/how-to/i18n-switch-locale.md +27 -0
- package/docs/how-to/installation.md +4 -4
- package/docs/how-to/migrate-from-plyr.md +1 -5
- package/docs/llms.txt +7 -0
- package/docs/reference/cloudflare-video.md +483 -0
- package/docs/reference/dash-video.md +54 -0
- package/docs/reference/feature-metadata.md +3 -1
- package/docs/reference/hlsjs-video.md +626 -0
- package/docs/reference/native-hls-video.md +40 -0
- package/docs/reference/shaka-video.md +588 -0
- package/docs/reference/spotify-audio.md +394 -0
- package/docs/reference/tiktok-video.md +504 -0
- package/docs/reference/title.md +1 -1
- package/docs/reference/twitch-video.md +447 -0
- package/docs/reference/vimeo-video.md +1038 -0
- package/docs/reference/youtube-video.md +573 -0
- package/package.json +9 -9
- package/cdn/audio-headless.dev.js +0 -1
- package/cdn/audio-headless.js +0 -1
- package/cdn/compounds-CHlzbAKu.js +0 -8
- package/cdn/compounds-CHlzbAKu.js.map +0 -1
- package/cdn/compounds-D1FPw7jg.js.map +0 -1
- package/cdn/create-player-LjvbIxIq.js +0 -2
- package/cdn/i18n-R3TQ8P2f.js +0 -2
- package/cdn/live-button-element-C-WypudK.js +0 -2
- package/cdn/media-B4uT13xV.js.map +0 -1
- package/cdn/media-D6Xer97u.js.map +0 -1
- package/cdn/minimal-ui-D3XCtSx_.js +0 -2
- package/cdn/poster-element-Djlm5fwC.js +0 -2
- package/cdn/seek-button-element-BD2caCd5.js.map +0 -1
- package/cdn/seek-button-element-CgaXVFPS.js +0 -2
- package/cdn/skin-element-DE8OodF5.js +0 -2
- package/cdn/text-element-BJyj7nLo.js +0 -2
- package/cdn/text-element-BJyj7nLo.js.map +0 -1
- package/cdn/text-element-dyiwucQB.js.map +0 -1
- package/cdn/time-slider-chapters-element-BTMqnBhM.js.map +0 -1
- package/cdn/time-slider-chapters-element-b6oeaZtJ.js +0 -2
- package/cdn/ui-CxftD4RF.js +0 -2
- package/cdn/ui-DLvwCbsU.js +0 -2
- package/cdn/video-headless.dev.js +0 -1
- package/cdn/video-headless.js +0 -1
- /package/cdn/{audio-headless.dev.d.ts → audio-player.dev.d.ts} +0 -0
- /package/cdn/{video-headless.dev.d.ts → live-audio-minimal-ui.dev.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio-options-controller-hybHJkeC.js","names":["#host","#config","#disconnect","#handleValueChange","#contentKey","#translator","#setItemLabel"],"sources":["../../core/dist/default/i18n/text/menu.js","../src/i18n/cache-key.ts","../src/ui/radio-options/radio-options-controller.ts"],"sourcesContent":["//#region src/core/i18n/text/menu.ts\nconst prefix = \"menu.\";\nconst settingsText = {\n\tkey: `${prefix}settings`,\n\ttext: \"Settings\"\n};\nconst qualityText = {\n\tkey: `${prefix}quality`,\n\ttext: \"Quality\"\n};\nconst audioText = {\n\tkey: `${prefix}audio`,\n\ttext: \"Audio\"\n};\nconst defaultText = {\n\tkey: `${prefix}default`,\n\ttext: \"Default\"\n};\nconst speedText = {\n\tkey: `${prefix}speed`,\n\ttext: \"Speed\"\n};\nconst captionsText = {\n\tkey: `${prefix}captions`,\n\ttext: \"Captions\"\n};\nconst playbackRateText = {\n\tkey: `${prefix}playbackRate`,\n\ttext: \"Playback rate\"\n};\nconst backText = {\n\tkey: `${prefix}back`,\n\ttext: \"Back\"\n};\nconst offText = {\n\tkey: `${prefix}off`,\n\ttext: \"Off\"\n};\nconst autoText = {\n\tkey: `${prefix}auto`,\n\ttext: \"Auto\"\n};\nconst autoWithLabelText = {\n\tkey: `${prefix}autoWithLabel`,\n\ttext: \"Auto ({label})\"\n};\nconst subtitlesText = {\n\tkey: `${prefix}subtitles`,\n\ttext: \"Subtitles\"\n};\n//#endregion\nexport { audioText, autoText, autoWithLabelText, backText, captionsText, defaultText, offText, playbackRateText, qualityText, settingsText, speedText, subtitlesText };\n\n//# sourceMappingURL=menu.js.map","import type { Text, TextParams } from '@videojs/core/i18n';\n\n/** Serialize text content and parameters so dynamic labels invalidate their caches. */\nexport function cacheKey(text: Text | string, params?: TextParams): string {\n return JSON.stringify([text, params]);\n}\n","import type { RadioOption, RadioOptionsState } from '@videojs/core';\nimport { applyElementProps } from '@videojs/core/dom';\nimport { type Translator, translateText } from '@videojs/core/i18n';\nimport type { ReactiveController, ReactiveControllerHost } from '@videojs/element';\nimport { cloneTemplateRoot, getTemplateElement, getTemplateRoot } from '@videojs/utils/dom';\n\nimport { cacheKey } from '../../i18n/cache-key';\nimport { MenuItemIndicatorElement } from '../menu/menu-item-indicator-element';\nimport { MenuRadioItemElement } from '../menu/menu-radio-item-element';\n\nexport type RadioOptionsControllerHost = ReactiveControllerHost &\n HTMLElement & {\n value: string;\n };\n\nexport interface RadioOptionsControllerConfig<Option extends RadioOption> {\n renderItem?: ((item: MenuRadioItemElement, label: string, option: Option) => void) | undefined;\n setItemAttributes?: ((item: MenuRadioItemElement, option: Option) => void) | undefined;\n getOptionCacheKey?: ((option: Option) => string) | undefined;\n onValueChange: (value: string) => void;\n}\n\n/** Renders normalized options into menu radio items and manages their interaction lifecycle. */\nexport class RadioOptionsController<Option extends RadioOption> implements ReactiveController {\n readonly #host: RadioOptionsControllerHost;\n readonly #config: RadioOptionsControllerConfig<Option>;\n\n #contentKey = '';\n #translator: Translator | null = null;\n #disconnect: AbortController | null = null;\n\n constructor(host: RadioOptionsControllerHost, config: RadioOptionsControllerConfig<Option>) {\n this.#host = host;\n this.#config = config;\n host.addController(this);\n }\n\n hostConnected(): void {\n this.#disconnect = new AbortController();\n this.#host.addEventListener('value-change', this.#handleValueChange, { signal: this.#disconnect.signal });\n }\n\n hostDisconnected(): void {\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n hostDestroyed(): void {\n this.hostDisconnected();\n }\n\n sync(state: RadioOptionsState<Option>, translator: Translator, locale: string): void {\n this.#host.value = state.value;\n applyElementProps(this.#host, {\n 'aria-disabled': state.disabled ? 'true' : undefined,\n hidden: state.hidden ? '' : undefined,\n });\n\n const template = getTemplateElement(this.#host);\n const templateRoot = template ? getTemplateRoot(template) : null;\n const itemRoot = templateRoot?.localName === MenuRadioItemElement.tagName ? templateRoot : null;\n const contentKey = `${state.options\n .map(\n (option) =>\n `${option.value}:${cacheKey(option.label, option.labelParams)}:${this.#config.getOptionCacheKey?.(option) ?? ''}`\n )\n .join('|')}::${locale}::${template?.innerHTML ?? ''}`;\n\n if (contentKey !== this.#contentKey || translator !== this.#translator) {\n this.#contentKey = contentKey;\n this.#translator = translator;\n\n for (const child of [...this.#host.children]) {\n if (child === template) continue;\n child.remove();\n }\n\n const items = state.options.map((option) => {\n const item = itemRoot\n ? (cloneTemplateRoot(itemRoot, this.#host.ownerDocument) as MenuRadioItemElement)\n : (this.#host.ownerDocument.createElement(MenuRadioItemElement.tagName) as MenuRadioItemElement);\n item.value = option.value;\n this.#config.setItemAttributes?.(item, option);\n const label = translateText(option.label, translator, option.labelParams);\n if (this.#config.renderItem) this.#config.renderItem(item, label, option);\n else this.#setItemLabel(item, label);\n return item;\n });\n\n this.#host.append(...items);\n }\n\n const optionsByValue = new Map(state.options.map((option) => [option.value, option]));\n\n for (const item of this.#host.querySelectorAll<MenuRadioItemElement>(MenuRadioItemElement.tagName)) {\n const checked = item.value === state.value;\n const option = optionsByValue.get(item.value);\n\n item.disabled = state.disabled || option?.disabled === true;\n\n for (const indicator of item.querySelectorAll<MenuItemIndicatorElement>(MenuItemIndicatorElement.tagName)) {\n indicator.checked = checked;\n }\n }\n }\n\n #handleValueChange = (event: Event): void => {\n if (event.target !== this.#host) return;\n\n const { value } = (event as CustomEvent<{ value: string }>).detail;\n this.#config.onValueChange(value);\n };\n\n #setItemLabel(item: MenuRadioItemElement, label: string): void {\n const labelPart = item.querySelector<HTMLElement>('[data-part~=\"label\"]');\n\n if (labelPart) labelPart.textContent = label;\n else item.textContent = label;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{u as e}from"./predicate-LbFu-fPH.js";import{C as t,L as n,T as r,U as i,V as a,_ as o,b as s,w as c,y as l}from"./compounds-DKoFv2f8.js";import{r as u}from"./translate-text-TzSgu_oe.js";import{r as d}from"./context-C2rsoDxk.js";import{c as f,r as p}from"./container-element-Dd0ZCdhK.js";import{l as m,n as h}from"./create-player-D5WQ_jzZ.js";import{s as g,t as _}from"./radio-options-controller-hybHJkeC.js";import{translateText as v}from"./i18n.js";var y=class e{static defaultProps={label:``,disabled:!1,menuTrigger:!1};state=m({rate:1,label:``});#e={...e.defaultProps};#t=null;constructor(e){e&&this.setProps(e)}setProps(t){this.#e=i(t,e.defaultProps)}getLabel(e){let n=t(this.#e.label,e);return n===void 0?s:n}getLabelParams(e){if(t(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:u(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 n{static defaultProps={label:``,formatRate:x,disabled:!1};state=m({rate:1,value:`1`,options:[],disabled:!0,hidden:!0,availability:`unavailable`,label:``});#e={...n.defaultProps};#t=null;constructor(e){e&&this.setProps(e)}setProps(e){this.#e=i(e,n.defaultProps)}getLabel(e){let n=t(this.#e.label,e);return n===void 0?g:n}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:u(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=m({seeking:!1,direction:`forward`,label:``});#e={...e.defaultProps};#t=null;constructor(e){e&&this.setProps(e)}setProps(t){this.#e=i(t,e.defaultProps)}getLabel(e){let n=t(this.#e.label,e);return n===void 0?e.direction===`backward`?E:T:n}getLabelParams(e){if(t(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:u(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 h(this,d,n),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)&&r(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 p(this,f),this.#n=new h(this,d,n),this.#r=new _(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,n=null;t&&(this.#e.setProps({formatRate:this.formatRate,disabled:this.disabled}),this.#e.setMedia(t),n=this.#e.getState(),this.applyDefaultAriaLabel(v(this.#e.getLabel(n),this.#t.value,this.#e.getLabelParams(n))),this.#r.sync(n,this.#t.value,this.#t.locale),this.publishMenuTriggerState(n.disabled,n.availability)),super.update(e),n&&c(this,n,C)}},j=class extends l{constructor(...e){super(...e),this.seconds=D.defaultProps.seconds,this.core=new D,this.stateAttrMap=O,this.mediaState=new h(this,d,a),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-C4g3qPbc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seek-button-element-CgaXVFPS.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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"}
|
|
1
|
+
{"version":3,"file":"seek-button-element-C4g3qPbc.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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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { u as isUndefined } from "./predicate-faYxAB6Z.js";
|
|
2
|
-
import { C as
|
|
2
|
+
import { C as resolveLabel, E as applyElementProps, H as selectTime, R as selectPlaybackRate, T as logMissingFeature, W as defaults, _ as MenuRadioGroupElement, b as rateText, w as applyStateDataAttrs, y as MediaButtonElement } from "./compounds-BA8gXlmJ.js";
|
|
3
3
|
import { r as resolveText$1 } from "./translate-text-BWvoW5-r.js";
|
|
4
4
|
import { r as playerContext } from "./context-OhQY847V.js";
|
|
5
5
|
import { c as i18nContext, r as I18nController } from "./container-element-HHK_KZOE.js";
|
|
6
|
-
import {
|
|
6
|
+
import { l as createState, n as PlayerController } from "./create-player-BEEc22xK.js";
|
|
7
|
+
import { s as playbackRateText, t as RadioOptionsController } from "./radio-options-controller-Cz5yFvUh.js";
|
|
7
8
|
import { translateText } from "./i18n.dev.js";
|
|
8
9
|
|
|
9
10
|
//#region ../core/dist/dev/core/ui/playback-rate-button/playback-rate-button-core.js
|
|
@@ -367,4 +368,4 @@ var SeekButtonElement = class extends MediaButtonElement {
|
|
|
367
368
|
|
|
368
369
|
//#endregion
|
|
369
370
|
export { PlaybackRateRadioGroupElement as n, PlaybackRateButtonElement as r, SeekButtonElement as t };
|
|
370
|
-
//# sourceMappingURL=seek-button-element-
|
|
371
|
+
//# sourceMappingURL=seek-button-element-CirtfRSE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seek-button-element-CirtfRSE.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,6 +1,6 @@
|
|
|
1
|
-
import { nt as renderTemplate } from "./compounds-D1FPw7jg.js";
|
|
2
1
|
import { r as ReactiveElement } from "./media-element-CJY3JIgc.js";
|
|
3
2
|
import { n as createShadowStyle, r as ensureGlobalStyle, t as applyShadowStyles } from "./shadow-styles-BkjnRJ4e.js";
|
|
3
|
+
import { a as renderTemplate } from "./template-ClYP_1RH.js";
|
|
4
4
|
|
|
5
5
|
//#region inline-css:src/define/global.js
|
|
6
6
|
var global_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";
|
|
@@ -38,4 +38,4 @@ var SkinElement = class extends ReactiveElement {
|
|
|
38
38
|
|
|
39
39
|
//#endregion
|
|
40
40
|
export { SkinElement as t };
|
|
41
|
-
//# sourceMappingURL=skin-element-
|
|
41
|
+
//# sourceMappingURL=skin-element-BF1a0EIj.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin-element-
|
|
1
|
+
{"version":3,"file":"skin-element-BF1a0EIj.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 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;;2BACJ,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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e}from"./media-element-Cp5PrNre.js";import{n as t,r as n,t as r}from"./shadow-styles-DQiIr3u8.js";import{a as i}from"./template-BKUlUXWF.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=t(`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 e{static{this.shadowRootOptions={mode:`open`}}constructor(){if(super(),n(`__media-styles`,a),!this.shadowRoot){let e=this.constructor;this.attachShadow(e.shadowRootOptions),e.template&&i(this.shadowRoot,e.template);let t=[o];e.styles&&t.push(e.styles),r(this.shadowRoot,t)}}};export{s as t};
|
|
2
|
+
//# sourceMappingURL=skin-element-BTt7JKoR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin-element-
|
|
1
|
+
{"version":3,"file":"skin-element-BTt7JKoR.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 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":"yJAAA,IAAA,EAAe,ugBEWf,MACM,EAAc,EAAkBA,wLAAY,EAOlD,IAAa,EAAb,cAAiC,CAAgB,QACJ,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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e){let t=globalThis.document;if(!t)return null;let n=t.createElement(`template`);return n.innerHTML=e,n}function t(e){for(let t of e.children)if(t.localName===`template`&&`content`in t)return t;return null}function n(e){let t=e.content.firstElementChild;return t&&!t.nextElementSibling?t:null}function r(e,t=e.ownerDocument){return t.importNode(e,!0)}function i(e,t){e.appendChild(e.ownerDocument.importNode(t.content,!0))}export{i as a,n as i,e as n,t as r,r as t};
|
|
2
|
+
//# sourceMappingURL=template-BKUlUXWF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-BKUlUXWF.js","names":[],"sources":["../../utils/dist/dom/template.js"],"sourcesContent":["//#region src/dom/template.ts\n/** Create an `HTMLTemplateElement` from an HTML string, or `null` when `document` is unavailable (SSR). */\nfunction createTemplate(html) {\n\tconst doc = globalThis.document;\n\tif (!doc) return null;\n\tconst template = doc.createElement(\"template\");\n\ttemplate.innerHTML = html;\n\treturn template;\n}\n/** Return the first direct-child template in a container. */\nfunction getTemplateElement(container) {\n\tfor (const child of container.children) if (child.localName === \"template\" && \"content\" in child) return child;\n\treturn null;\n}\n/** Return a template's only element root, or `null` when it does not contain exactly one. */\nfunction getTemplateRoot(template) {\n\tconst root = template.content.firstElementChild;\n\treturn root && !root.nextElementSibling ? root : null;\n}\n/** Deep-clone a resolved template root into the target document. */\nfunction cloneTemplateRoot(root, targetDocument = root.ownerDocument) {\n\treturn targetDocument.importNode(root, true);\n}\n/** Deep-clone a template's content into a container. */\nfunction renderTemplate(container, template) {\n\tcontainer.appendChild(container.ownerDocument.importNode(template.content, true));\n}\n//#endregion\nexport { cloneTemplateRoot, createTemplate, getTemplateElement, getTemplateRoot, renderTemplate };\n\n//# sourceMappingURL=template.js.map"],"mappings":"AAEA,SAAS,EAAe,EAAM,CAC7B,IAAM,EAAM,WAAW,SACvB,GAAI,CAAC,EAAK,OAAO,KACjB,IAAM,EAAW,EAAI,cAAc,UAAU,EAE7C,MADA,GAAS,UAAY,EACd,CACR,CAEA,SAAS,EAAmB,EAAW,CACtC,IAAK,IAAM,KAAS,EAAU,SAAU,GAAI,EAAM,YAAc,YAAc,YAAa,EAAO,OAAO,EACzG,OAAO,IACR,CAEA,SAAS,EAAgB,EAAU,CAClC,IAAM,EAAO,EAAS,QAAQ,kBAC9B,OAAO,GAAQ,CAAC,EAAK,mBAAqB,EAAO,IAClD,CAEA,SAAS,EAAkB,EAAM,EAAiB,EAAK,cAAe,CACrE,OAAO,EAAe,WAAW,EAAM,EAAI,CAC5C,CAEA,SAAS,EAAe,EAAW,EAAU,CAC5C,EAAU,YAAY,EAAU,cAAc,WAAW,EAAS,QAAS,EAAI,CAAC,CACjF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//#region ../utils/dist/dom/template.js
|
|
2
|
+
/** Create an `HTMLTemplateElement` from an HTML string, or `null` when `document` is unavailable (SSR). */
|
|
3
|
+
function createTemplate(html) {
|
|
4
|
+
const doc = globalThis.document;
|
|
5
|
+
if (!doc) return null;
|
|
6
|
+
const template = doc.createElement("template");
|
|
7
|
+
template.innerHTML = html;
|
|
8
|
+
return template;
|
|
9
|
+
}
|
|
10
|
+
/** Return the first direct-child template in a container. */
|
|
11
|
+
function getTemplateElement(container) {
|
|
12
|
+
for (const child of container.children) if (child.localName === "template" && "content" in child) return child;
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
/** Return a template's only element root, or `null` when it does not contain exactly one. */
|
|
16
|
+
function getTemplateRoot(template) {
|
|
17
|
+
const root = template.content.firstElementChild;
|
|
18
|
+
return root && !root.nextElementSibling ? root : null;
|
|
19
|
+
}
|
|
20
|
+
/** Deep-clone a resolved template root into the target document. */
|
|
21
|
+
function cloneTemplateRoot(root, targetDocument = root.ownerDocument) {
|
|
22
|
+
return targetDocument.importNode(root, true);
|
|
23
|
+
}
|
|
24
|
+
/** Deep-clone a template's content into a container. */
|
|
25
|
+
function renderTemplate(container, template) {
|
|
26
|
+
container.appendChild(container.ownerDocument.importNode(template.content, true));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
export { renderTemplate as a, getTemplateRoot as i, createTemplate as n, getTemplateElement as r, cloneTemplateRoot as t };
|
|
31
|
+
//# sourceMappingURL=template-ClYP_1RH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-ClYP_1RH.js","names":[],"sources":["../../utils/dist/dom/template.js"],"sourcesContent":["//#region src/dom/template.ts\n/** Create an `HTMLTemplateElement` from an HTML string, or `null` when `document` is unavailable (SSR). */\nfunction createTemplate(html) {\n\tconst doc = globalThis.document;\n\tif (!doc) return null;\n\tconst template = doc.createElement(\"template\");\n\ttemplate.innerHTML = html;\n\treturn template;\n}\n/** Return the first direct-child template in a container. */\nfunction getTemplateElement(container) {\n\tfor (const child of container.children) if (child.localName === \"template\" && \"content\" in child) return child;\n\treturn null;\n}\n/** Return a template's only element root, or `null` when it does not contain exactly one. */\nfunction getTemplateRoot(template) {\n\tconst root = template.content.firstElementChild;\n\treturn root && !root.nextElementSibling ? root : null;\n}\n/** Deep-clone a resolved template root into the target document. */\nfunction cloneTemplateRoot(root, targetDocument = root.ownerDocument) {\n\treturn targetDocument.importNode(root, true);\n}\n/** Deep-clone a template's content into a container. */\nfunction renderTemplate(container, template) {\n\tcontainer.appendChild(container.ownerDocument.importNode(template.content, true));\n}\n//#endregion\nexport { cloneTemplateRoot, createTemplate, getTemplateElement, getTemplateRoot, renderTemplate };\n\n//# sourceMappingURL=template.js.map"],"mappings":";;AAEA,SAAS,eAAe,MAAM;CAC7B,MAAM,MAAM,WAAW;CACvB,IAAI,CAAC,KAAK,OAAO;CACjB,MAAM,WAAW,IAAI,cAAc,UAAU;CAC7C,SAAS,YAAY;CACrB,OAAO;AACR;;AAEA,SAAS,mBAAmB,WAAW;CACtC,KAAK,MAAM,SAAS,UAAU,UAAU,IAAI,MAAM,cAAc,cAAc,aAAa,OAAO,OAAO;CACzG,OAAO;AACR;;AAEA,SAAS,gBAAgB,UAAU;CAClC,MAAM,OAAO,SAAS,QAAQ;CAC9B,OAAO,QAAQ,CAAC,KAAK,qBAAqB,OAAO;AAClD;;AAEA,SAAS,kBAAkB,MAAM,iBAAiB,KAAK,eAAe;CACrE,OAAO,eAAe,WAAW,MAAM,IAAI;AAC5C;;AAEA,SAAS,eAAe,WAAW,UAAU;CAC5C,UAAU,YAAY,UAAU,cAAc,WAAW,SAAS,SAAS,IAAI,CAAC;AACjF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{u as e}from"./predicate-LbFu-fPH.js";import{H as t}from"./compounds-DKoFv2f8.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";const _=new Set([`Adlm`,`Arab`,`Hebr`,`Mand`,`Mend`,`Nkoo`,`Rohg`,`Samr`,`Syrc`,`Thaa`,`Yezi`]);function v(e){try{let t=new Intl.Locale(e).maximize().script;return t&&_.has(t)?`rtl`:`ltr`}catch{return`ltr`}}function y(t,n,r=`en`){return!e(t)&&t.trim()!==``?t:!e(n)&&n.trim()!==``?n:r}function b(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 x(e){return t(e,b)}async function S(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 C(t){if(!(e(t)||t.trim()===``))return t.trim()}const w=new Set;let T,E=!1;const D=()=>{E=!1;for(let e of w)e()},O=()=>{E||(E=!0,queueMicrotask(D))};function k(){T||typeof document>`u`||(T=new MutationObserver(O),T.observe(document.documentElement,{subtree:!0,attributes:!0,attributeFilter:[`lang`],childList:!0}))}function A(){w.size||!T||(T.disconnect(),T=void 0,E=!1)}function j(e){return typeof document>`u`?()=>{}:(w.add(e),k(),()=>{w.delete(e),A()})}function M(e,t){return y(e,t)}function N(e){return M(C(e.lang),C(x(e.parentElement??(typeof document<`u`?document.documentElement:null))))}function P({context:e,loader:t=f}){return n=>{class r extends n{constructor(...t){super(...t),this.lang=``,this.dir=``,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},dir:{type:String,reflect:!0}}}#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;get i18nValue(){return this.#c}connectedCallback(){super.connectedCallback(),this.#t=p(()=>{this.#r+=1,this.requestUpdate()}),this.#n=j(()=>this.requestUpdate()),this.#p(),this.#g(),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=N(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.#p()}this.#h(t),this.#g()}#p(){let e=N(this);this.#s=e,this.#a+=1;let n=this.#a;this.#i={},(async()=>{let{merged:r,loadedTags:i}=await S(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())}})()}#m(){return N(this)}#h(e){let t=this.dir.trim().toLowerCase(),n=this.#f!==void 0&&t===this.#f;if(!this.lang.trim()){n&&(this.dir=``),this.#f=void 0;return}if(t&&!n){this.#f=void 0;return}let r=v(e);this.#f=r,this.dir!==r&&(this.dir=r)}#g(){let e=this.#m();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 F=P({context:r});var I=class extends F(n){static{this.tagName=`media-i18n`}};function L({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 R=L({context:r});var z=class extends R(n){static{this.tagName=`media-text`}};export{I as n,z as t};
|
|
2
|
+
//# sourceMappingURL=text-element-DW2FuvdI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-element-DW2FuvdI.js","names":["nearestLang","defaultLoader","ContextProvider","#i18nProvider","#i18nValue","#registryUnsubscribe","#registryEpoch","#ambientUnsubscribe","#resetLazyAndLoad","#publish","#lazySeq","#lazyLayer","#resolvedLocaleForLazy","#lazyResetStartedForLocale","#syncDirection","#derivedDirection","#resolvedLocale","#publishedLocale","#publishedRegistryEpoch","#publishedLazyLayer","#i18n","#text"],"sources":["../../utils/dist/i18n/direction.js","../../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":["//#region src/i18n/direction.ts\nconst RTL_SCRIPTS = /* @__PURE__ */ new Set([\n\t\"Adlm\",\n\t\"Arab\",\n\t\"Hebr\",\n\t\"Mand\",\n\t\"Mend\",\n\t\"Nkoo\",\n\t\"Rohg\",\n\t\"Samr\",\n\t\"Syrc\",\n\t\"Thaa\",\n\t\"Yezi\"\n]);\n/** Resolve the writing direction of a BCP 47 locale. */\nfunction getTextDirection(locale) {\n\ttry {\n\t\tconst script = new Intl.Locale(locale).maximize().script;\n\t\treturn script && RTL_SCRIPTS.has(script) ? \"rtl\" : \"ltr\";\n\t} catch {\n\t\treturn \"ltr\";\n\t}\n}\n//#endregion\nexport { getTextDirection };\n\n//# sourceMappingURL=direction.js.map","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 { getTextDirection, type TextDirection } from '@videojs/utils/i18n';\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 dir: { type: String, reflect: true },\n };\n\n lang = '';\n dir = '';\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 #derivedDirection: TextDirection | 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.#syncDirection(locale);\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 #syncDirection(locale: Locale): void {\n const current = this.dir.trim().toLowerCase();\n const isDerived = this.#derivedDirection !== undefined && current === this.#derivedDirection;\n\n if (!this.lang.trim()) {\n if (isDerived) this.dir = '';\n this.#derivedDirection = undefined;\n return;\n }\n\n if (current && !isDerived) {\n this.#derivedDirection = undefined;\n return;\n }\n\n const direction = getTextDirection(locale);\n this.#derivedDirection = direction;\n if (this.dir !== direction) this.dir = direction;\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,9 +1,34 @@
|
|
|
1
1
|
import { u as isUndefined } from "./predicate-faYxAB6Z.js";
|
|
2
|
-
import {
|
|
2
|
+
import { U as walkAncestors } from "./compounds-BA8gXlmJ.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";
|
|
6
6
|
|
|
7
|
+
//#region ../utils/dist/i18n/direction.js
|
|
8
|
+
const RTL_SCRIPTS = /* @__PURE__ */ new Set([
|
|
9
|
+
"Adlm",
|
|
10
|
+
"Arab",
|
|
11
|
+
"Hebr",
|
|
12
|
+
"Mand",
|
|
13
|
+
"Mend",
|
|
14
|
+
"Nkoo",
|
|
15
|
+
"Rohg",
|
|
16
|
+
"Samr",
|
|
17
|
+
"Syrc",
|
|
18
|
+
"Thaa",
|
|
19
|
+
"Yezi"
|
|
20
|
+
]);
|
|
21
|
+
/** Resolve the writing direction of a BCP 47 locale. */
|
|
22
|
+
function getTextDirection(locale) {
|
|
23
|
+
try {
|
|
24
|
+
const script = new Intl.Locale(locale).maximize().script;
|
|
25
|
+
return script && RTL_SCRIPTS.has(script) ? "rtl" : "ltr";
|
|
26
|
+
} catch {
|
|
27
|
+
return "ltr";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
7
32
|
//#region ../utils/dist/dom/locale/effective-locale.js
|
|
8
33
|
/** Resolves locale: explicit non-empty value → ambient `lang` → {@link fallback}. */
|
|
9
34
|
function effectiveLocale(explicitLocale, ambientLang, fallback = "en") {
|
|
@@ -127,6 +152,7 @@ function createI18nProviderMixin({ context, loader = loadLocale }) {
|
|
|
127
152
|
constructor(..._args) {
|
|
128
153
|
super(..._args);
|
|
129
154
|
this.lang = "";
|
|
155
|
+
this.dir = "";
|
|
130
156
|
this.#i18nProvider = new ContextProvider(this, {
|
|
131
157
|
context,
|
|
132
158
|
initialValue: {
|
|
@@ -149,6 +175,10 @@ function createI18nProviderMixin({ context, loader = loadLocale }) {
|
|
|
149
175
|
lang: {
|
|
150
176
|
type: String,
|
|
151
177
|
reflect: true
|
|
178
|
+
},
|
|
179
|
+
dir: {
|
|
180
|
+
type: String,
|
|
181
|
+
reflect: true
|
|
152
182
|
}
|
|
153
183
|
};
|
|
154
184
|
}
|
|
@@ -166,6 +196,7 @@ function createI18nProviderMixin({ context, loader = loadLocale }) {
|
|
|
166
196
|
#publishedLocale;
|
|
167
197
|
#publishedRegistryEpoch;
|
|
168
198
|
#publishedLazyLayer;
|
|
199
|
+
#derivedDirection;
|
|
169
200
|
get i18nValue() {
|
|
170
201
|
return this.#i18nValue;
|
|
171
202
|
}
|
|
@@ -200,6 +231,7 @@ function createI18nProviderMixin({ context, loader = loadLocale }) {
|
|
|
200
231
|
const localeDriftedBeforeFirstPaint = !hadLocale && this.#lazyResetStartedForLocale !== void 0 && locale !== this.#lazyResetStartedForLocale;
|
|
201
232
|
if (hadLocale || localeDriftedBeforeFirstPaint) this.#resetLazyAndLoad();
|
|
202
233
|
}
|
|
234
|
+
this.#syncDirection(locale);
|
|
203
235
|
this.#publish();
|
|
204
236
|
}
|
|
205
237
|
#resetLazyAndLoad() {
|
|
@@ -224,6 +256,22 @@ function createI18nProviderMixin({ context, loader = loadLocale }) {
|
|
|
224
256
|
#resolvedLocale() {
|
|
225
257
|
return resolveProviderLocale(this);
|
|
226
258
|
}
|
|
259
|
+
#syncDirection(locale) {
|
|
260
|
+
const current = this.dir.trim().toLowerCase();
|
|
261
|
+
const isDerived = this.#derivedDirection !== void 0 && current === this.#derivedDirection;
|
|
262
|
+
if (!this.lang.trim()) {
|
|
263
|
+
if (isDerived) this.dir = "";
|
|
264
|
+
this.#derivedDirection = void 0;
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
if (current && !isDerived) {
|
|
268
|
+
this.#derivedDirection = void 0;
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
const direction = getTextDirection(locale);
|
|
272
|
+
this.#derivedDirection = direction;
|
|
273
|
+
if (this.dir !== direction) this.dir = direction;
|
|
274
|
+
}
|
|
227
275
|
#publish() {
|
|
228
276
|
const locale = this.#resolvedLocale();
|
|
229
277
|
if (this.#publishedLocale === locale && this.#publishedRegistryEpoch === this.#registryEpoch && this.#publishedLazyLayer === this.#lazyLayer) return;
|
|
@@ -301,4 +349,4 @@ var TextElement = class extends I18nTextMixin(ReactiveElement) {
|
|
|
301
349
|
|
|
302
350
|
//#endregion
|
|
303
351
|
export { I18nProviderElement as n, TextElement as t };
|
|
304
|
-
//# sourceMappingURL=text-element-
|
|
352
|
+
//# sourceMappingURL=text-element-LzVNdZbp.js.map
|