@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":"live-audio.js","names":[],"sources":["../inline-css:src/define/live-audio/skin.js","../src/define/live-audio/skin.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}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}.media-sr-only{white-space:nowrap;clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.media-default-skin *,.media-default-skin :before,.media-default-skin :after{box-sizing:border-box}.media-default-skin img,.media-default-skin video,.media-default-skin svg{max-width:100%;display:block}.media-default-skin button{font:inherit}.media-default-skin [hidden][hidden]{display:none}@media (prefers-reduced-motion:no-preference){.media-default-skin{interpolate-size:allow-keywords}}.media-default-skin{--accent-color:var(--media-accent-color,var(--default-accent-color));--accent-contrast-color:contrast-color(var(--accent-color));--accent-background-color:var(--media-accent-color,oklch(from var(--default-accent-color) l c h / calc(alpha * .1)));--accent-text-color:var(--media-accent-text-color,contrast-color(var(--media-accent-color,oklch(0% 0 0))));--shadow-current-color:oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .15));--shadow-subtle-current-color:oklch(from var(--shadow-current-color) l c h / calc(alpha * .4));--scrollbar-thumb-color:oklch(from currentColor l c h / .3);--scale:1;--scale-unit:var(--media-scale-unit,16px);--size:calc(var(--scale-unit) * var(--scale));--spacing:calc(var(--size) / 4);--font-size-medium:calc(.9375 * var(--size));--font-size-base:calc(.8125 * var(--size));--font-size-small:calc(.6875 * var(--size));--font-size-tiny:calc(.5625 * var(--size));--media-icon-size:calc(1.125 * var(--size));--container-border-radius:var(--media-border-radius,1.75rem);width:100%;height:100%;font-family:Inter Variable,Inter,ui-sans-serif,system-ui,sans-serif;font-size:var(--font-size-base);-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;letter-spacing:normal;outline-offset:-4px;scrollbar-color:var(--scrollbar-thumb-color) transparent;scrollbar-width:thin;border-radius:var(--container-border-radius,1.75rem);isolation:isolate;outline:2px solid #0000;line-height:1.5;transition-property:outline-offset,outline-color;transition-duration:.1s;transition-timing-function:ease-out;display:block;position:relative;container:media-root/inline-size;&:focus-visible{outline-color:var(--focus-ring-color);outline-offset:2px}&::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:9999px}@media (prefers-reduced-transparency:reduce) or (prefers-contrast:more){--scrollbar-thumb-color:oklch(from currentColor l c h / .8);scrollbar-width:auto}}.media-default-skin .media-surface{background-color:var(--surface-background-color);box-shadow:0 0 0 1px var(--surface-outer-border-color), 0 1px 3px 0 var(--surface-shadow-color), 0 1px 2px -1px var(--surface-shadow-color);backdrop-filter:var(--surface-backdrop-filter);&:after{z-index:10;pointer-events:none;content:\\\"\\\";border-radius:inherit;box-shadow:inset 0 1px 0 0 var(--surface-inner-border-color), inset 0 0 0 1px oklch(from var(--surface-inner-border-color) l c h / calc(alpha * .5));position:absolute;inset:0}}.media-default-skin .media-buffering-indicator{z-index:10;color:oklch(100% 0 0);pointer-events:none;place-content:center;display:none;position:absolute;inset:0;&:not([data-visible]){--media-spinner-animation:none}&[data-visible]{display:grid}@media (prefers-reduced-motion:reduce){--media-spinner-animation:none}}.media-default-skin .media-error{outline:none}.media-default-skin .media-error:not([data-open]){display:none}.media-default-skin .media-error__title{font-weight:600;line-height:1.25}.media-default-skin .media-error__description{overflow-wrap:anywhere;opacity:.7}.media-default-skin .media-error__actions{gap:calc(var(--spacing) * 2);display:flex;&>*{flex:1}}.media-default-skin .media-error[data-open]~.media-controls *{visibility:hidden}.media-default-skin .media-controls{--media-popover-side-offset:calc(var(--spacing) * (var(--base-side-offset,2) + 1));--media-tooltip-side-offset:var(--media-popover-side-offset);--media-popover-boundary-offset:calc(var(--spacing) * var(--base-boundary-offset,2));--media-tooltip-boundary-offset:var(--media-popover-boundary-offset);padding:calc(var(--spacing) * 1);text-shadow:0 1px 0 var(--shadow-current-color);border-radius:3.40282e38px;align-items:center;display:flex;container:media-controls/inline-size;&:dir(rtl){flex-direction:row-reverse}}.media-default-skin .media-time-controls{gap:calc(var(--spacing) * 2.5);flex:1;align-items:center;display:flex;container:media-time-controls/inline-size;&:dir(rtl){flex-direction:row-reverse}&>.media-time:last-child{@container media-time-controls (width<16rem){display:none}}}.media-default-skin .media-time{font-variant-numeric:tabular-nums}.media-default-skin .media-time[role=button]{cursor:pointer;outline-offset:-2px;border-radius:calc(var(--spacing) * 1);outline:2px solid #0000;transition-property:outline-color,outline-offset;transition-duration:.1s;transition-timing-function:ease-out;&:focus-visible{outline-color:var(--focus-ring-color);outline-offset:2px}}.media-default-skin .media-button{height:calc(var(--spacing) * 9);min-height:0;padding:calc(var(--spacing) * 2) calc(var(--spacing) * 4);text-align:center;touch-action:manipulation;cursor:pointer;user-select:none;outline-offset:-2px;will-change:scale;border:none;border-radius:3.40282e38px;outline:2px solid #0000;flex-shrink:0;justify-content:center;align-items:center;transition-property:background-color,color,outline-offset,scale;transition-duration:.15s;transition-timing-function:ease-out;display:flex;&:focus-visible{outline-color:var(--focus-ring-color);outline-offset:2px}&:active:not([aria-disabled=true]){scale:.97}&[aria-disabled=true]{cursor:not-allowed;opacity:.5}}.media-default-skin .media-button--primary{color:var(--accent-contrast-color);text-shadow:none;background:var(--accent-color);font-weight:500}.media-default-skin .media-button--subtle{color:inherit;text-shadow:inherit;background:0 0;&:not([aria-disabled=true]){&:hover,&:focus-visible,&[aria-expanded=true]{color:var(--accent-text-color);background-color:var(--accent-background-color);text-decoration:none}}}.media-default-skin .media-button--icon{aspect-ratio:1;padding:0;display:grid;&:active:not([aria-disabled=true]){scale:.97}& .media-icon__container{display:grid}& .media-icon{filter:drop-shadow(0 1px 0 var(--shadow-current-color));grid-area:1/1;transition-property:opacity,scale;transition-duration:.15s;transition-timing-function:ease-out}}.media-default-skin .media-button--seek{& .media-icon__label{font-variant-numeric:tabular-nums;letter-spacing:-.05em;font-size:.715em;font-weight:500;position:absolute;bottom:-3px;right:-1px}&:has(.media-icon--flipped) .media-icon__label{right:unset;left:-1px}}.media-default-skin .media-button--playback-rate{font-variant-numeric:tabular-nums;padding:0;&:after{content:attr(data-rate) \\\"×\\\";width:4ch}&[data-inline-rate-label]:after{content:none}}.media-default-skin .media-button--settings{& .media-icon--settings{transition:transform .15s ease-in-out;@media (prefers-reduced-motion:reduce){transition-duration:0s}}&[aria-expanded=true] .media-icon--settings{transform:rotate(90deg)}}.media-default-skin .media-button--live{gap:calc(var(--spacing) * 1.5);aspect-ratio:auto;width:auto;padding:calc(var(--spacing) * 2) calc(var(--spacing) * 3);font-size:var(--font-size-small);text-transform:uppercase;letter-spacing:.05em;align-items:center;font-weight:600;line-height:1;display:inline-flex;&:before{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2);content:\\\"\\\";background-color:oklch(from currentColor l c h / .4);border-radius:50%;flex-shrink:0;transition:background-color .15s ease-out;display:inline-block}&[data-live-edge]:before{background-color:oklch(65% .22 27)}}@media (prefers-reduced-motion:reduce){.media-default-skin .media-button{will-change:auto;transition-property:background-color,color;scale:1}}.media-default-skin .media-button-group{align-items:center;gap:1px;display:flex;&:dir(rtl){flex-direction:row-reverse}}.media-default-skin .media-badge{padding:calc(var(--spacing) * .5) calc(var(--spacing) * 1.5);font-size:var(--font-size-small);color:oklch(from currentColor l c h / .85);white-space:nowrap;background-color:oklch(from currentColor l c h / .1);border-radius:3.40282e38px;font-weight:500;line-height:1}.media-default-skin .media-icon__container{position:relative}.media-default-skin .media-icon{width:var(--media-icon-size);height:var(--media-icon-size);flex-shrink:0}.media-default-skin .media-icon--flipped,.media-default-skin:dir(rtl) .media-menu__chevron{scale:-1 1}.media-default-skin:dir(rtl) .media-menu__chevron.media-icon--flipped{scale:1}.media-default-skin .media-slider{--track-size:calc(var(--spacing) * 1);--track-highlighted-size:calc(var(--spacing) * 1.75);--track-border-radius:99px;--thumb-size:calc(var(--spacing) * 3);--chapter-gap:calc(var(--spacing) * 1);--chapter-inset-start:calc(var(--chapter-gap) / 2);--chapter-inset-end:calc(var(--chapter-gap) / 2);cursor:pointer;outline:none;flex:1;justify-content:center;align-items:center;display:flex;position:relative;&[data-orientation=horizontal]{width:var(--slider-width,100%);min-width:calc(var(--spacing) * 20);height:var(--slider-height,calc(var(--spacing) * 8))}&[data-orientation=vertical]{width:var(--slider-width,calc(var(--spacing) * 8));height:var(--slider-height,calc(var(--spacing) * 20))}& .media-slider__track{user-select:none;background-color:oklch(from currentColor l c h / .2);border-radius:var(--track-border-radius);isolation:isolate;position:relative;overflow:hidden;&[data-orientation=horizontal]{width:100%;height:var(--track-size)}&[data-orientation=vertical]{width:var(--track-size);height:100%}}& .media-slider__buffer,& .media-slider__fill{pointer-events:none;border-radius:inherit;position:absolute;&[data-orientation=horizontal]{inset-block:0;width:100%;left:0}&[data-orientation=vertical]{inset-inline:0;height:100%;bottom:0}@media (prefers-reduced-motion:no-preference){transition:clip-path .2s ease-out}}&[data-dragging],&[data-seeking]{& .media-slider__fill,& .media-slider__buffer{transition-duration:0s}}& .media-slider__buffer{background-color:oklch(from currentColor l c h / .2);&[data-orientation=horizontal]{clip-path:inset(0 calc(100% - var(--media-slider-buffer)) 0 0 round var(--track-border-radius))}&[data-orientation=vertical]{clip-path:inset(calc(100% - var(--media-slider-buffer)) 0 0 0 round var(--track-border-radius))}}& .media-slider__fill{background-color:var(--accent-color);&[data-orientation=horizontal]{clip-path:inset(0 calc(100% - var(--media-slider-fill)) 0 0 round var(--track-border-radius))}&[data-orientation=vertical]{clip-path:inset(calc(100% - var(--media-slider-fill)) 0 0 0 round var(--track-border-radius))}}&[data-dragging]{& .media-slider__fill[data-orientation=horizontal]{clip-path:inset(0 calc(100% - var(--media-slider-pointer)) 0 0 round var(--track-border-radius))}& .media-slider__fill[data-orientation=vertical]{clip-path:inset(calc(100% - var(--media-slider-pointer)) 0 0 0 round var(--track-border-radius))}}& .media-slider__chapters{border-radius:inherit;flex:1;align-items:center;min-width:0;min-height:0;display:flex;position:relative;&[data-orientation=horizontal]{width:100%;height:100%}&[data-orientation=vertical]{flex-direction:column-reverse;width:100%;height:100%}}& .media-slider__chapter{border-radius:inherit;justify-content:center;align-items:center;min-width:0;min-height:0;display:flex;position:absolute;inset:0;&:first-child{--chapter-inset-start:0px}&:last-child{--chapter-inset-end:0px}& .media-slider__chapter-track{border-radius:inherit;@media (prefers-reduced-motion:no-preference){transition:height .2s ease-out,width .2s ease-out}}&[data-orientation=horizontal]{clip-path:inset(0 calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start));& .media-slider__chapter-track{height:var(--track-size);clip-path:inset(0 calc(100% - var(--media-slider-chapter-end) + var(--chapter-inset-end)) 0 calc(var(--media-slider-chapter-start) + var(--chapter-inset-start)) round var(--track-border-radius))}&[data-highlighted] .media-slider__chapter-track{height:var(--track-highlighted-size)}}&[data-orientation=vertical]{clip-path:inset(calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start) 0);& .media-slider__chapter-track{width:var(--track-size);clip-path:inset(calc(100% - var(--media-slider-chapter-end) + var(--chapter-inset-end)) 0 calc(var(--media-slider-chapter-start) + var(--chapter-inset-start)) 0 round var(--track-border-radius))}&[data-highlighted] .media-slider__chapter-track{width:var(--track-highlighted-size)}}}& .media-slider__thumb{z-index:10;width:var(--thumb-size);height:var(--thumb-size);user-select:none;outline-offset:-4px;box-shadow:0 0 0 1px var(--shadow-current-color,oklch(0% 0 0/.1)), 0 1px 3px 0 oklch(0% 0 0/.35), 0 1px 2px -1px oklch(0% 0 0/.35);opacity:0;background-color:currentColor;border-radius:3.40282e38px;outline:4px solid #0000;position:absolute;translate:-50% -50%;scale:.8;&[data-orientation=horizontal]{top:50%;left:var(--media-slider-fill)}&[data-orientation=vertical]{top:calc(100% - var(--media-slider-fill));left:50%}&:focus-visible{outline-color:oklch(from currentColor l c h / .15);outline-offset:0;opacity:1}&:after{content:\\\"\\\";border-radius:inherit;position:absolute;inset:-4px;box-shadow:0 0 0 2px}&:not(:focus-visible):after{opacity:0;scale:.5}&.media-slider__thumb--persistent{opacity:1;scale:1}@media (hover:hover) and (pointer:fine){&:hover{outline-color:oklch(from currentColor l c h / .15);outline-offset:0}}@media (prefers-reduced-motion:no-preference){transition-property:opacity,outline-offset,left,top,scale;transition-duration:.15s;transition-timing-function:ease-out;&:after{transition-property:opacity,scale;transition-duration:.15s;transition-timing-function:ease-out}}}@media (hover:hover) and (pointer:fine){&:hover .media-slider__thumb{opacity:1;scale:1}}&[data-dragging] .media-slider__thumb{opacity:1;scale:.9;@media (prefers-reduced-motion:no-preference){transition-property:opacity,outline-offset,scale}&[data-orientation=horizontal]{left:var(--media-slider-pointer)}&[data-orientation=vertical]{top:calc(100% - var(--media-slider-pointer))}}& .media-slider__preview{--max-size-factor:36;--max-size:min(calc(var(--spacing) * var(--max-size-factor)), 100cqi);min-width:var(--max-size);height:calc(var(--spacing) * 1);@container media-root (width>42rem){--max-size-factor:48}& .media-slider__thumbnail,& .media-slider__value{max-width:var(--max-size);opacity:0;filter:blur(8px);transform-origin:bottom;scale:.8;translate:-50% calc(var(--spacing) * 2);transition-duration:.15s;transition-timing-function:ease-out;position:absolute;left:50%}& .media-slider__thumbnail{--thumbnail-max-width:var(--max-size);--thumbnail-max-height:var(--max-size);bottom:calc(100% + (var(--spacing) * 9))}& .media-slider__value{bottom:calc(100% + (var(--spacing) * 10.5));text-shadow:0 1px 0 var(--shadow-current-color);flex-direction:column;align-items:center;display:flex}& .media-slider__chapter-title{min-width:0;max-width:var(--max-size);padding-inline:calc(var(--spacing) * 6);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;&:empty{display:none}}&:before{z-index:1;width:calc(var(--spacing) * 1);height:calc(var(--spacing) * 1);pointer-events:none;content:\\\"\\\";box-shadow:0 0 0 1px var(--shadow-current-color,oklch(0% 0 0/.15)), 0 1px 2px 0 oklch(0% 0 0/.35);opacity:0;background-color:currentColor;border-radius:100%;transition-property:opacity,scale;transition-duration:.2s;transition-timing-function:ease-out;position:absolute;top:50%;left:50%;translate:-50% -50%;scale:.5}}&:is([data-pointing],:has(:focus-visible)) .media-slider__preview :is(.media-slider__value,.media-slider__thumbnail),& .media-slider__preview[data-pointing]:not([data-dragging]):before{opacity:1;filter:blur();scale:1}}.media-default-skin{--popup-transition:opacity var(--popup-transition-timing-function) var(--popup-transition-duration), filter var(--popup-transition-timing-function) var(--popup-transition-duration), transform var(--popup-transition-timing-function) var(--popup-transition-duration), scale var(--popup-transition-timing-function) var(--popup-transition-duration)}.media-default-skin .media-popover,.media-default-skin .media-tooltip{--popup-translate-distance:calc(.5 * var(--scale-unit));color:inherit;transition:var(--popup-transition);border:0;margin:0;overflow:visible;&[data-starting-style],&[data-ending-style]{opacity:0;filter:blur(4px);transform:translate(var(--popup-translate-x-distance,0), var(--popup-translate-y-distance,0));scale:.95}&[data-ending-style]{transition-duration:max(0s, calc(var(--popup-transition-duration) - 50ms));transform:none}&[data-side=top]{--popup-translate-y-distance:var(--popup-translate-distance);transform-origin:bottom}&[data-side=bottom]{--popup-translate-y-distance:calc(var(--popup-translate-distance) * -1);transform-origin:top}&[data-side=left]{--popup-translate-x-distance:var(--popup-translate-distance);transform-origin:100%}&[data-side=right]{--popup-translate-x-distance:calc(var(--popup-translate-distance) * -1);transform-origin:0}&:before{pointer-events:inherit;content:\\\"\\\";position:absolute}&[data-side=top]:before,&[data-side=bottom]:before{width:100%;inset-inline:0}&[data-side=top]:before{top:100%}&[data-side=bottom]:before{bottom:100%}&[data-side=left]:before,&[data-side=right]:before{height:100%;inset-block:0}&[data-side=left]:before{left:100%}&[data-side=right]:before{right:100%}}.media-default-skin .media-popover{&[data-side=top]:before,&[data-side=bottom]:before{height:var(--media-popover-side-offset)}&[data-side=left]:before,&[data-side=right]:before{width:var(--media-popover-side-offset)}}.media-default-skin .media-popover--volume{padding:calc(var(--spacing) * 3) 0;border-radius:3.40282e38px;&:has(media-volume-slider[data-hidden]){display:none}}.media-default-skin .media-tooltip{padding:calc(var(--spacing) * 1) calc(var(--spacing) * 2.5);font-size:var(--font-size-base);white-space:nowrap;border-radius:3.40282e38px;&[data-open]{column-gap:calc(var(--spacing) * 1);align-items:center;display:flex}&[data-side=top]:before,&[data-side=bottom]:before{height:var(--media-tooltip-side-offset)}&[data-side=left]:before,&[data-side=right]:before{width:var(--media-tooltip-side-offset)}& .media-tooltip__kbd{min-width:1.5em;font-family:inherit;font-size:var(--font-size-small);text-align:center;background-color:oklch(from currentColor l c h / .3);border-radius:calc(var(--spacing) * 1);padding:.1em;font-weight:600;line-height:1.25}}.media-default-skin .media-menu{--menu-transition-duration:.25s;--menu-max-height:calc(var(--spacing) * 56);--menu-padding:calc(var(--spacing) * 1);--menu-border-radius:calc(var(--spacing) * 3);--menu-item-border-radius:calc(var(--menu-border-radius) - var(--menu-padding));box-sizing:border-box;min-width:max-content;max-width:var(--media-popover-available-width,none);max-height:min(var(--media-popover-available-height,var(--menu-max-height)), var(--menu-max-height));padding:var(--menu-padding);overscroll-behavior:none;border-radius:var(--menu-border-radius);overflow:auto;@media (prefers-reduced-motion:reduce){--menu-transition-duration:0s}&>.media-menu__panel{inset-inline:0;z-index:10;max-height:inherit;padding:var(--menu-padding);overscroll-behavior:none;transition-timing-function:ease-out;transition-duration:var(--menu-transition-duration);outline:none;transition-property:translate,filter;position:absolute;top:0;overflow:auto;translate:0;&:where([data-starting-style],[data-ending-style]){pointer-events:none;filter:blur(8px);overflow:hidden;translate:100%}&:dir(rtl):where([data-starting-style],[data-ending-style]){translate:-100%}}& .media-menu__separator{margin-block:calc(var(--spacing) * 1);border-bottom:1px solid oklch(0% 0 0/.1);box-shadow:0 1px oklch(100% 0 0/.075)}& .media-menu__group{anchor-scope:--menu-item-highlight-anchor;gap:calc(var(--spacing) * .5);flex-direction:column;display:flex;@supports (top:anchor(top)){&:before{position-anchor:--menu-item-highlight-anchor;inset:anchor(inside);overflow-anchor:none;pointer-events:none;content:\\\"\\\";background-color:var(--accent-background-color);border-radius:var(--menu-item-border-radius);transition:inset .1s ease-in-out;position:absolute}&:has([data-highlighted=\\\"\\\"]):before{transition-duration:0s}}}& .media-menu__item,& .media-menu__back{gap:calc(var(--spacing) * 1.5);padding:calc(var(--spacing) * 1.5) calc(var(--spacing) * 2);text-align:start;text-shadow:0 1px 0 var(--shadow-current-color);cursor:pointer;user-select:none;outline-offset:-2px;border-radius:var(--menu-item-border-radius);outline:2px solid #0000;align-items:center;transition:background-color .1s ease-in-out,color .1s ease-in-out;display:flex;position:relative;& .media-icon{color:oklch(from currentColor l c h / .65);filter:drop-shadow(0 1px 0 var(--shadow-current-color));flex-shrink:0}&:focus-visible{outline-color:var(--focus-ring-color);outline-offset:2px}&:hover,&[data-highlighted]{color:var(--accent-text-color);background-color:var(--accent-background-color);& .media-icon{color:inherit}}@supports (top:anchor(top)){transition-duration:50ms;&:hover,&[data-highlighted]{transition-duration:.2s}}}& .media-menu__indicator{margin-inline:auto calc(var(--spacing) * -1);opacity:0;flex-shrink:0;& .media-icon{filter:drop-shadow(0 1px 0 var(--shadow-current-color))}}& .media-menu__item{font-variant-numeric:tabular-nums;color:inherit;justify-content:space-between;&[aria-disabled=true]{pointer-events:none;cursor:not-allowed;opacity:.5}&[aria-checked=true] .media-menu__indicator{opacity:1}&[data-availability=unavailable],&[data-availability=unsupported]{display:none}&[data-highlighted]{@supports (top:anchor(top)){anchor-name:--menu-item-highlight-anchor;background-color:#0000}}}& .media-menu__tier{padding-inline-start:calc(var(--spacing) * .5);font-size:var(--font-size-tiny);color:oklch(from currentColor l c h / .7);padding-top:1px;font-weight:600;line-height:1}& .media-menu__back{width:100%;margin-bottom:calc(var(--spacing) * .5)}& .media-menu__hint{gap:calc(var(--spacing) * 1);min-width:0;color:oklch(from currentColor l c h / .65);align-items:center;margin-inline-start:auto;padding-inline-start:calc(var(--spacing) * 2);display:inline-flex}& .media-menu__hint-label{max-width:calc(var(--spacing) * 24);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}& .media-menu__chevron{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}&.media-menu--settings{width:var(--media-menu-width);min-width:calc(var(--spacing) * 48);height:var(--media-menu-height);transition:var(--popup-transition), width var(--popup-transition-timing-function) var(--menu-transition-duration), height var(--popup-transition-timing-function) var(--menu-transition-duration);overflow:hidden;&>:not([data-submenu]){transition:translate var(--menu-transition-duration) ease-out, filter var(--menu-transition-duration) ease-out;translate:0}&[data-submenu-expanded=true]>:not([data-submenu]){filter:blur(8px);translate:-100%}&:dir(rtl)[data-submenu-expanded=true]>:not([data-submenu]){translate:100%}&[data-submenu-expanded]>:not([data-submenu]):before{display:none}&[data-starting-style],&[data-ending-style]{transition:var(--popup-transition)}}}.media-button--play .media-icon--restart,.media-button--play .media-icon--play,.media-button--play .media-icon--pause,.media-button--mute .media-icon--volume-off,.media-button--mute .media-icon--volume-low,.media-button--mute .media-icon--volume-high{opacity:0;display:none}.media-button--play[data-ended] .media-icon--restart,.media-button--play:not([data-ended])[data-paused] .media-icon--play,.media-button--play:not([data-ended]):not([data-started]) .media-icon--play,.media-button--play[data-started]:not([data-paused]):not([data-ended]) .media-icon--pause,.media-button--mute[data-muted] .media-icon--volume-off,.media-button--mute:not([data-muted])[data-volume-level=low] .media-icon--volume-low,.media-button--mute:not([data-muted]):not([data-volume-level=low]) .media-icon--volume-high{opacity:1;display:block}.media-default-skin--audio{--default-accent-color:light-dark(oklch(0% 0 0),oklch(100% 0 0));--text-color:light-dark(oklch(0% 0 0),oklch(100% 0 0));--border-color:oklch(0% 0 0/.1);--focus-ring-color:light-dark(oklch(0% 0 0),oklch(100% 0 0));--surface-background-color:light-dark(oklch(100% 0 0/.5),oklch(0% 0 0/.4));--surface-inner-border-color:oklch(100% 0 0/.1);--surface-outer-border-color:oklch(0% 0 0/.05);--surface-shadow-color:oklch(0% 0 0/.15);--surface-backdrop-filter:blur(16px) saturate(1.5);--error-dialog-transition-duration:.25s;--error-dialog-transition-delay:.1s;--popup-transition-duration:.1s;--popup-transition-timing-function:ease-out;@media (prefers-reduced-motion:reduce){--error-dialog-transition-duration:50ms;--error-dialog-transition-delay:0s;--popup-transition-duration:0s}@media (prefers-reduced-transparency:reduce) or (prefers-contrast:more){--surface-background-color:light-dark(oklch(100% 0 0),oklch(0% 0 0));--surface-inner-border-color:light-dark(oklch(100% 0 0/.1),oklch(100% 0 0/.2));--surface-outer-border-color:light-dark(oklch(0% 0 0/.05),#0000)}}.media-default-skin--audio .media-error__dialog{z-index:20;gap:calc(var(--spacing) * 3);padding-inline:calc(var(--spacing) * 5) calc(var(--spacing) * .5);color:var(--text-color);background-color:var(--surface-background-color);backdrop-filter:var(--surface-backdrop-filter);transition-delay:var(--error-dialog-transition-delay);transition-timing-function:ease-out;transition-duration:var(--error-dialog-transition-duration);border-radius:3.40282e38px;align-items:center;transition-property:opacity,filter;display:flex;position:absolute;inset:0}.media-default-skin .media-error[data-starting-style] .media-error__dialog,.media-default-skin .media-error[data-ending-style] .media-error__dialog{opacity:0;filter:blur(4px)}.media-default-skin .media-error[data-ending-style] .media-error__dialog{transition-delay:0s}.media-default-skin--audio .media-error__content{gap:calc(var(--spacing) * 2);flex:1;align-items:center;display:flex}.media-default-skin--audio .media-controls{--base-boundary-offset:2;color:var(--text-color);& .media-time-controls{padding-inline:calc(var(--spacing) * 3)}& .media-button--seek{@container media-root (width<32rem){display:none}}}.media-default-skin--audio .media-button--play__wrapper{display:inline-flex;position:relative}.media-default-skin--audio .media-button--play__wrapper .media-buffering-indicator{color:inherit}.media-default-skin--audio .media-button--play__wrapper:has(.media-buffering-indicator[data-visible]) .media-button--play .media-icon{opacity:0}.media-default-skin--audio .media-slider__track{background-color:light-dark(oklch(0% 0 0/.1),oklch(100% 0 0/.2));box-shadow:0 0 0 1px light-dark(#0000,oklch(0% 0 0/.05))}\";","import { renderIcon } from '@videojs/icons/render';\nimport { createShadowStyle, createTemplate } from '@videojs/utils/dom';\nimport { safeDefine } from '../safe-define';\nimport { SkinElement } from '../skin-element';\nimport styles from './skin.css?inline';\n\n// Register the live audio player, container, and all UI custom elements.\nimport './ui';\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"media-default-skin media-default-skin--audio\">\n <!-- @deprecated slot=\"media\" is no longer required, use the default slot instead -->\n <slot name=\"media\"></slot>\n <slot></slot>\n\n <media-error-dialog class=\"media-error\">\n <div class=\"media-error__dialog\">\n <div class=\"media-error__content\">\n <media-alert-dialog-title class=\"media-error__title\"></media-alert-dialog-title>\n <media-alert-dialog-description class=\"media-error__description\"></media-alert-dialog-description>\n </div>\n <div class=\"media-error__actions\">\n <media-alert-dialog-close class=\"media-button media-button--subtle\"></media-alert-dialog-close>\n </div>\n </div>\n </media-error-dialog>\n\n <div class=\"media-surface media-controls\">\n <media-tooltip-group>\n <div class=\"media-button-group\">\n <span class=\"media-button--play__wrapper\">\n <media-buffering-indicator class=\"media-buffering-indicator\">\n ${renderIcon('spinner', { class: 'media-icon' })}\n </media-buffering-indicator>\n <media-play-button commandfor=\"play-tooltip\" class=\"media-button media-button--subtle media-button--icon media-button--play\">\n ${renderIcon('restart', { class: 'media-icon media-icon--restart' })}\n ${renderIcon('play', { class: 'media-icon media-icon--play' })}\n ${renderIcon('pause', { class: 'media-icon media-icon--pause' })}\n </media-play-button>\n <media-tooltip id=\"play-tooltip\" side=\"top\" boundary=\"viewport\" class=\"media-surface media-tooltip\">\n <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"media-tooltip__kbd\"></media-tooltip-shortcut>\n </media-tooltip>\n </span>\n\n <media-live-button class=\"media-button media-button--subtle media-button--live\"></media-live-button>\n </div>\n\n <div class=\"media-time-controls\" aria-hidden=\"true\"></div>\n\n <div class=\"media-button-group\">\n <media-mute-button commandfor=\"live-audio-volume-popover\" class=\"media-button media-button--subtle media-button--icon media-button--mute\">\n ${renderIcon('volume-off', { class: 'media-icon media-icon--volume-off' })}\n ${renderIcon('volume-low', { class: 'media-icon media-icon--volume-low' })}\n ${renderIcon('volume-high', { class: 'media-icon media-icon--volume-high' })}\n </media-mute-button>\n\n <media-popover id=\"live-audio-volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"top\" boundary=\"viewport\" class=\"media-surface media-popover media-popover--volume\">\n <media-volume-slider class=\"media-slider\" orientation=\"vertical\" thumb-alignment=\"edge\">\n <media-slider-track class=\"media-slider__track\">\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n </media-slider-track>\n <media-slider-thumb class=\"media-slider__thumb media-slider__thumb--persistent\"></media-slider-thumb>\n </media-volume-slider>\n </media-popover>\n </div>\n </media-tooltip-group>\n </div>\n\n <!-- Hotkeys -->\n <media-hotkey keys=\"Space\" action=\"togglePaused\"></media-hotkey>\n <media-hotkey keys=\"k\" action=\"togglePaused\"></media-hotkey>\n <media-hotkey keys=\"m\" action=\"toggleMuted\"></media-hotkey>\n <media-hotkey keys=\"ArrowUp\" action=\"volumeStep\" value=\"0.05\"></media-hotkey>\n <media-hotkey keys=\"ArrowDown\" action=\"volumeStep\" value=\"-0.05\"></media-hotkey>\n </media-container>\n `;\n}\n\nexport class LiveAudioSkinElement extends SkinElement {\n static readonly tagName = 'live-audio-skin';\n static styles = createShadowStyle(styles);\n static template = createTemplate(getTemplateHTML());\n}\n\nsafeDefine(LiveAudioSkinElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [LiveAudioSkinElement.tagName]: LiveAudioSkinElement;\n }\n}\n"],"mappings":"kPAAA,IAAA,EAAe,201BCSf,SAAS,GAAkB,CACzB,MAAO,4vBAAA,EAAA,UAAA,CAAA,MAAA,YAAA,CAAA,EAAA,6JAAA,EAAA,UAAA,CAAA,MAAA,gCAAA,CAAA,EAAA,GAAA,EAAA,OAAA,CAAA,MAAA,6BAAA,CAAA,EAAA,GAAA,EAAA,QAAA,CAAA,MAAA,8BAAA,CAAA,EAAA,wlBAAA,EAAA,aAAA,CAAA,MAAA,mCAAA,CAAA,EAAA,GAAA,EAAA,aAAA,CAAA,MAAA,mCAAA,CAAA,EAAA,GAAA,EAAA,cAAA,CAAA,MAAA,oCAAA,CAAA,EAAA,27BAoET,CAQA,EAAW,cAN+B,CAAY,QAC1B,KAAA,QAAA,yBACV,KAAA,OAAA,EAAkB,CAAM,SACtB,KAAA,SAAA,EAAe,EAAgB,CAAC,EACpD,CAE+B"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { C as
|
|
1
|
+
import { C as resolveLabel, E as applyElementProps, H as selectTime, M as selectBuffer, P as selectLive, T as logMissingFeature, W as defaults, k as createButton, w as applyStateDataAttrs } from "./compounds-BA8gXlmJ.js";
|
|
2
2
|
import { r as resolveText$1 } from "./translate-text-BWvoW5-r.js";
|
|
3
3
|
import { t as MediaElement } from "./media-element-CJY3JIgc.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
7
|
import { resolveText, translateText } from "./i18n.dev.js";
|
|
8
8
|
|
|
9
9
|
//#region ../core/dist/dev/i18n/text/live.js
|
|
@@ -233,4 +233,4 @@ var LiveButtonElement = class extends MediaElement {
|
|
|
233
233
|
|
|
234
234
|
//#endregion
|
|
235
235
|
export { LiveButtonElement as t };
|
|
236
|
-
//# sourceMappingURL=live-button-element-
|
|
236
|
+
//# sourceMappingURL=live-button-element-BFufqFFV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-button-element-CylfQD0v.js","names":["#props","#media","#isAtLiveEdge","resolveText","#i18n","#defaultContent","#disconnect","#getMedia"],"sources":["../../core/dist/dev/i18n/text/live.js","../../core/dist/dev/core/ui/live-button/live-button-core.js","../../core/dist/dev/core/ui/live-button/live-button-data-attrs.js","../src/ui/live-button/live-button-element.ts"],"sourcesContent":["//#region src/core/i18n/text/live.ts\nconst prefix = \"live.\";\nconst playingText = {\n\tkey: `${prefix}playing`,\n\ttext: \"Playing live\"\n};\nconst seekToEdgeText = {\n\tkey: `${prefix}seekToEdge`,\n\ttext: \"Seek to live edge\"\n};\nconst badgeText = {\n\tkey: `${prefix}badge`,\n\ttext: \"Live\"\n};\n//#endregion\nexport { badgeText, playingText, seekToEdgeText };\n\n//# sourceMappingURL=live.js.map","import { resolveText } from \"../../i18n/resolve-text.js\";\nimport { resolveLabel } from \"../utils/resolve-label.js\";\nimport { badgeText, playingText, seekToEdgeText } from \"../../../i18n/text/live.js\";\nimport { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\n//#region src/core/ui/live-button/live-button-core.ts\n/**\n* Fallback offset (in seconds) from the end of the seekable window used to\n* decide \"at live edge\" when `liveEdgeStart` is unavailable.\n*/\nconst LIVE_EDGE_OFFSET = 10;\n/**\n* Grace window (in seconds) before `liveEdgeStart` that still counts as\n* \"at the live edge\". Absorbs the small gap between the player's initial\n* playback position (e.g. hls.js `liveSyncDuration`) and the manifest's\n* `HOLD-BACK`, so autoplay reliably reports live.\n*/\nconst LIVE_EDGE_TOLERANCE = 5;\n/**\n* Core state machine for a \"Live\" button. Indicates whether the player is\n* playing at the live edge and seeks to the Seekable Live Edge when activated.\n*\n* @see https://github.com/video-dev/media-ui-extensions/blob/main/proposals/0007-live-edge.md\n*/\nvar LiveButtonCore = class LiveButtonCore {\n\t/** Default visible text used when no children are provided. */\n\tstatic defaultText = badgeText;\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\tlive: false,\n\t\tliveEdge: false,\n\t\tlabel: \"\"\n\t});\n\t#props = { ...LiveButtonCore.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, LiveButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst label = resolveLabel(this.#props.label, state);\n\t\tif (label) return label;\n\t\tif (state.liveEdge) return playingText;\n\t\treturn seekToEdgeText;\n\t}\n\tgetAttrs(state) {\n\t\tconst inactive = this.#props.disabled || state.liveEdge;\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": inactive ? \"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 live = isLiveMedia(media);\n\t\tconst liveEdge = live && this.#isAtLiveEdge(media);\n\t\tthis.state.patch({\n\t\t\tlive,\n\t\t\tliveEdge\n\t\t});\n\t\tthis.state.patch({ label: resolveText(this.getLabel(this.state.current)) });\n\t\treturn this.state.current;\n\t}\n\t/** Seek to the Seekable Live Edge. No-op when not live or already at edge. */\n\tasync seekToLive(media) {\n\t\tif (this.#props.disabled) return;\n\t\tif (!isLiveMedia(media)) return;\n\t\tif (this.#isAtLiveEdge(media)) return;\n\t\tconst target = liveEdgeTarget(media);\n\t\tif (target == null) return;\n\t\tawait media.seek(target);\n\t}\n\t#isAtLiveEdge(media) {\n\t\tconst { currentTime, liveEdgeStart } = media;\n\t\tif (Number.isFinite(liveEdgeStart)) return currentTime >= liveEdgeStart - LIVE_EDGE_TOLERANCE;\n\t\tconst target = liveEdgeTarget(media);\n\t\tif (target == null) return false;\n\t\treturn currentTime >= target - LIVE_EDGE_OFFSET;\n\t}\n};\nfunction isLiveMedia(media) {\n\treturn !Number.isNaN(media.targetLiveWindow);\n}\nfunction liveEdgeTarget(media) {\n\tconst { seekable } = media;\n\tif (seekable.length === 0) return null;\n\tconst end = seekable[seekable.length - 1][1];\n\treturn Number.isFinite(end) ? end : null;\n}\n//#endregion\nexport { LiveButtonCore };\n\n//# sourceMappingURL=live-button-core.js.map","//#region src/core/ui/live-button/live-button-data-attrs.ts\nconst LiveButtonDataAttrs = {\n\t/** Present when the stream is live (or DVR). */\n\tlive: \"data-live\",\n\t/** Present when playback is at the live edge. */\n\tliveEdge: \"data-live-edge\"\n};\n//#endregion\nexport { LiveButtonDataAttrs };\n\n//# sourceMappingURL=live-button-data-attrs.js.map","import { LiveButtonCore, LiveButtonDataAttrs, type LiveButtonMediaState } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createButton,\n logMissingFeature,\n selectBuffer,\n selectLive,\n selectTime,\n} from '@videojs/core/dom';\nimport { resolveText, type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport type { State } from '@videojs/store';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\n/**\n * `<media-live-button>` — selects from `live`, `time`, and `buffer` features\n * and composes them into the `LiveButtonMediaState` consumed by\n * `LiveButtonCore`.\n *\n * Doesn't extend `MediaButtonElement` because that base couples a button to\n * a single feature selector; the LiveButton needs three.\n */\nexport class LiveButtonElement extends MediaElement {\n static readonly tagName = 'media-live-button';\n\n static override properties: PropertyDeclarationMap = {\n label: { type: String },\n disabled: { type: Boolean },\n };\n\n disabled = false;\n label: Text | string = '';\n\n protected readonly core = new LiveButtonCore();\n\n protected readonly live = new PlayerController(this, playerContext, selectLive);\n protected readonly time = new PlayerController(this, playerContext, selectTime);\n protected readonly buffer = new PlayerController(this, playerContext, selectBuffer);\n readonly #i18n = new I18nController(this, i18nContext);\n\n get $state(): State<LiveButtonCore.State> {\n return this.core.state;\n }\n\n #defaultContent = false;\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#defaultContent ||= !this.textContent?.trim();\n if (this.#defaultContent) {\n this.textContent = translateText(LiveButtonCore.defaultText, this.#i18n.value);\n }\n\n this.#disconnect = new AbortController();\n\n const buttonProps = createButton({\n onActivate: () => {\n const media = this.#getMedia();\n if (media) this.core.seekToLive(media);\n },\n isDisabled: () => this.disabled || !this.#getMedia(),\n });\n\n applyElementProps(this, buttonProps, { signal: this.#disconnect.signal });\n\n if (__DEV__ && !this.#getMedia()) {\n logMissingFeature(this.localName, this.live.displayName ?? 'live');\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n /** Returns the button's current label derived from media state. */\n getLabel(): string | undefined {\n return this.core.state.current.label ? resolveText(this.core.state.current.label) : undefined;\n }\n\n /** Resolved label for tooltips and other display surfaces. */\n getResolvedLabel(): string | undefined {\n const media = this.#getMedia();\n if (!media) return undefined;\n const state = this.core.getState();\n return translateText(this.core.getLabel(state), this.#i18n.value);\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.core.setProps(this);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n if (this.#defaultContent) {\n this.textContent = translateText(LiveButtonCore.defaultText, this.#i18n.value);\n }\n\n const media = this.#getMedia();\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n const attrs = this.core.getAttrs(state);\n applyElementProps(this, {\n ...attrs,\n 'aria-label': translateText(attrs['aria-label'], this.#i18n.value),\n });\n applyStateDataAttrs(this, state, LiveButtonDataAttrs);\n }\n\n /**\n * Compose the LiveButton media state from the three feature slices.\n * Returns `null` when any are missing so the button stays disabled until\n * all three features are registered on the player.\n */\n #getMedia(): LiveButtonMediaState | null {\n const live = this.live.value;\n const time = this.time.value;\n const buffer = this.buffer.value;\n if (!live || !time || !buffer) return null;\n return {\n currentTime: time.currentTime,\n seek: time.seek,\n seekable: buffer.seekable,\n liveEdgeStart: live.liveEdgeStart,\n targetLiveWindow: live.targetLiveWindow,\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"live-button-element-BFufqFFV.js","names":["#props","#media","#isAtLiveEdge","resolveText","#i18n","#defaultContent","#disconnect","#getMedia"],"sources":["../../core/dist/dev/i18n/text/live.js","../../core/dist/dev/core/ui/live-button/live-button-core.js","../../core/dist/dev/core/ui/live-button/live-button-data-attrs.js","../src/ui/live-button/live-button-element.ts"],"sourcesContent":["//#region src/core/i18n/text/live.ts\nconst prefix = \"live.\";\nconst playingText = {\n\tkey: `${prefix}playing`,\n\ttext: \"Playing live\"\n};\nconst seekToEdgeText = {\n\tkey: `${prefix}seekToEdge`,\n\ttext: \"Seek to live edge\"\n};\nconst badgeText = {\n\tkey: `${prefix}badge`,\n\ttext: \"Live\"\n};\n//#endregion\nexport { badgeText, playingText, seekToEdgeText };\n\n//# sourceMappingURL=live.js.map","import { resolveText } from \"../../i18n/resolve-text.js\";\nimport { resolveLabel } from \"../utils/resolve-label.js\";\nimport { badgeText, playingText, seekToEdgeText } from \"../../../i18n/text/live.js\";\nimport { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\n//#region src/core/ui/live-button/live-button-core.ts\n/**\n* Fallback offset (in seconds) from the end of the seekable window used to\n* decide \"at live edge\" when `liveEdgeStart` is unavailable.\n*/\nconst LIVE_EDGE_OFFSET = 10;\n/**\n* Grace window (in seconds) before `liveEdgeStart` that still counts as\n* \"at the live edge\". Absorbs the small gap between the player's initial\n* playback position (e.g. hls.js `liveSyncDuration`) and the manifest's\n* `HOLD-BACK`, so autoplay reliably reports live.\n*/\nconst LIVE_EDGE_TOLERANCE = 5;\n/**\n* Core state machine for a \"Live\" button. Indicates whether the player is\n* playing at the live edge and seeks to the Seekable Live Edge when activated.\n*\n* @see https://github.com/video-dev/media-ui-extensions/blob/main/proposals/0007-live-edge.md\n*/\nvar LiveButtonCore = class LiveButtonCore {\n\t/** Default visible text used when no children are provided. */\n\tstatic defaultText = badgeText;\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\tlive: false,\n\t\tliveEdge: false,\n\t\tlabel: \"\"\n\t});\n\t#props = { ...LiveButtonCore.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, LiveButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst label = resolveLabel(this.#props.label, state);\n\t\tif (label) return label;\n\t\tif (state.liveEdge) return playingText;\n\t\treturn seekToEdgeText;\n\t}\n\tgetAttrs(state) {\n\t\tconst inactive = this.#props.disabled || state.liveEdge;\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": inactive ? \"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 live = isLiveMedia(media);\n\t\tconst liveEdge = live && this.#isAtLiveEdge(media);\n\t\tthis.state.patch({\n\t\t\tlive,\n\t\t\tliveEdge\n\t\t});\n\t\tthis.state.patch({ label: resolveText(this.getLabel(this.state.current)) });\n\t\treturn this.state.current;\n\t}\n\t/** Seek to the Seekable Live Edge. No-op when not live or already at edge. */\n\tasync seekToLive(media) {\n\t\tif (this.#props.disabled) return;\n\t\tif (!isLiveMedia(media)) return;\n\t\tif (this.#isAtLiveEdge(media)) return;\n\t\tconst target = liveEdgeTarget(media);\n\t\tif (target == null) return;\n\t\tawait media.seek(target);\n\t}\n\t#isAtLiveEdge(media) {\n\t\tconst { currentTime, liveEdgeStart } = media;\n\t\tif (Number.isFinite(liveEdgeStart)) return currentTime >= liveEdgeStart - LIVE_EDGE_TOLERANCE;\n\t\tconst target = liveEdgeTarget(media);\n\t\tif (target == null) return false;\n\t\treturn currentTime >= target - LIVE_EDGE_OFFSET;\n\t}\n};\nfunction isLiveMedia(media) {\n\treturn !Number.isNaN(media.targetLiveWindow);\n}\nfunction liveEdgeTarget(media) {\n\tconst { seekable } = media;\n\tif (seekable.length === 0) return null;\n\tconst end = seekable[seekable.length - 1][1];\n\treturn Number.isFinite(end) ? end : null;\n}\n//#endregion\nexport { LiveButtonCore };\n\n//# sourceMappingURL=live-button-core.js.map","//#region src/core/ui/live-button/live-button-data-attrs.ts\nconst LiveButtonDataAttrs = {\n\t/** Present when the stream is live (or DVR). */\n\tlive: \"data-live\",\n\t/** Present when playback is at the live edge. */\n\tliveEdge: \"data-live-edge\"\n};\n//#endregion\nexport { LiveButtonDataAttrs };\n\n//# sourceMappingURL=live-button-data-attrs.js.map","import { LiveButtonCore, LiveButtonDataAttrs, type LiveButtonMediaState } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createButton,\n logMissingFeature,\n selectBuffer,\n selectLive,\n selectTime,\n} from '@videojs/core/dom';\nimport { resolveText, type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport type { State } from '@videojs/store';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\n/**\n * `<media-live-button>` — selects from `live`, `time`, and `buffer` features\n * and composes them into the `LiveButtonMediaState` consumed by\n * `LiveButtonCore`.\n *\n * Doesn't extend `MediaButtonElement` because that base couples a button to\n * a single feature selector; the LiveButton needs three.\n */\nexport class LiveButtonElement extends MediaElement {\n static readonly tagName = 'media-live-button';\n\n static override properties: PropertyDeclarationMap = {\n label: { type: String },\n disabled: { type: Boolean },\n };\n\n disabled = false;\n label: Text | string = '';\n\n protected readonly core = new LiveButtonCore();\n\n protected readonly live = new PlayerController(this, playerContext, selectLive);\n protected readonly time = new PlayerController(this, playerContext, selectTime);\n protected readonly buffer = new PlayerController(this, playerContext, selectBuffer);\n readonly #i18n = new I18nController(this, i18nContext);\n\n get $state(): State<LiveButtonCore.State> {\n return this.core.state;\n }\n\n #defaultContent = false;\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#defaultContent ||= !this.textContent?.trim();\n if (this.#defaultContent) {\n this.textContent = translateText(LiveButtonCore.defaultText, this.#i18n.value);\n }\n\n this.#disconnect = new AbortController();\n\n const buttonProps = createButton({\n onActivate: () => {\n const media = this.#getMedia();\n if (media) this.core.seekToLive(media);\n },\n isDisabled: () => this.disabled || !this.#getMedia(),\n });\n\n applyElementProps(this, buttonProps, { signal: this.#disconnect.signal });\n\n if (__DEV__ && !this.#getMedia()) {\n logMissingFeature(this.localName, this.live.displayName ?? 'live');\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n /** Returns the button's current label derived from media state. */\n getLabel(): string | undefined {\n return this.core.state.current.label ? resolveText(this.core.state.current.label) : undefined;\n }\n\n /** Resolved label for tooltips and other display surfaces. */\n getResolvedLabel(): string | undefined {\n const media = this.#getMedia();\n if (!media) return undefined;\n const state = this.core.getState();\n return translateText(this.core.getLabel(state), this.#i18n.value);\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.core.setProps(this);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n if (this.#defaultContent) {\n this.textContent = translateText(LiveButtonCore.defaultText, this.#i18n.value);\n }\n\n const media = this.#getMedia();\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n const attrs = this.core.getAttrs(state);\n applyElementProps(this, {\n ...attrs,\n 'aria-label': translateText(attrs['aria-label'], this.#i18n.value),\n });\n applyStateDataAttrs(this, state, LiveButtonDataAttrs);\n }\n\n /**\n * Compose the LiveButton media state from the three feature slices.\n * Returns `null` when any are missing so the button stays disabled until\n * all three features are registered on the player.\n */\n #getMedia(): LiveButtonMediaState | null {\n const live = this.live.value;\n const time = this.time.value;\n const buffer = this.buffer.value;\n if (!live || !time || !buffer) return null;\n return {\n currentTime: time.currentTime,\n seek: time.seek,\n seekable: buffer.seekable,\n liveEdgeStart: live.liveEdgeStart,\n targetLiveWindow: live.targetLiveWindow,\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{C as e,N as t,O as n,T as r,U as i,V as a,j as o,w as s}from"./compounds-DKoFv2f8.js";import{r as c}from"./translate-text-TzSgu_oe.js";import{t as l}from"./media-element-Cp5PrNre.js";import{r as u}from"./context-C2rsoDxk.js";import{c as d,r as f}from"./container-element-Dd0ZCdhK.js";import{l as p,n as m}from"./create-player-D5WQ_jzZ.js";import{resolveText as h,translateText as g}from"./i18n.js";const _=`live.`,v={key:`${_}playing`,text:`Playing live`},y={key:`${_}seekToEdge`,text:`Seek to live edge`},b={key:`${_}badge`,text:`Live`};var x=class t{static defaultText=b;static defaultProps={label:``,disabled:!1};state=p({live:!1,liveEdge:!1,label:``});#e={...t.defaultProps};#t=null;constructor(e){e&&this.setProps(e)}setProps(e){this.#e=i(e,t.defaultProps)}getLabel(t){return e(this.#e.label,t)||(t.liveEdge?v:y)}getAttrs(e){let t=this.#e.disabled||e.liveEdge;return{"aria-label":this.getLabel(e),"aria-disabled":t?`true`:void 0}}setMedia(e){this.#t=e}getState(){let e=this.#t,t=S(e),n=t&&this.#n(e);return this.state.patch({live:t,liveEdge:n}),this.state.patch({label:c(this.getLabel(this.state.current))}),this.state.current}async seekToLive(e){if(this.#e.disabled||!S(e)||this.#n(e))return;let t=C(e);t!=null&&await e.seek(t)}#n(e){let{currentTime:t,liveEdgeStart:n}=e;if(Number.isFinite(n))return t>=n-5;let r=C(e);return r!=null&&t>=r-10}};function S(e){return!Number.isNaN(e.targetLiveWindow)}function C(e){let{seekable:t}=e;if(t.length===0)return null;let n=t[t.length-1][1];return Number.isFinite(n)?n:null}const w={live:`data-live`,liveEdge:`data-live-edge`};var T=class extends l{constructor(...e){super(...e),this.disabled=!1,this.label=``,this.core=new x,this.live=new m(this,u,t),this.time=new m(this,u,a),this.buffer=new m(this,u,o),this.#e=new f(this,d),this.#t=!1,this.#n=null}static{this.tagName=`media-live-button`}static{this.properties={label:{type:String},disabled:{type:Boolean}}}#e;get $state(){return this.core.state}#t;#n;connectedCallback(){if(super.connectedCallback(),this.destroyed)return;this.#t||=!this.textContent?.trim(),this.#t&&(this.textContent=g(x.defaultText,this.#e.value)),this.#n=new AbortController;let e=n({onActivate:()=>{let e=this.#r();e&&this.core.seekToLive(e)},isDisabled:()=>this.disabled||!this.#r()});r(this,e,{signal:this.#n.signal})}disconnectedCallback(){super.disconnectedCallback(),this.#n?.abort(),this.#n=null}getLabel(){return this.core.state.current.label?h(this.core.state.current.label):void 0}getResolvedLabel(){if(!this.#r())return;let e=this.core.getState();return g(this.core.getLabel(e),this.#e.value)}willUpdate(e){super.willUpdate(e),this.core.setProps(this)}update(e){super.update(e),this.#t&&(this.textContent=g(x.defaultText,this.#e.value));let t=this.#r();if(!t)return;this.core.setMedia(t);let n=this.core.getState(),i=this.core.getAttrs(n);r(this,{...i,"aria-label":g(i[`aria-label`],this.#e.value)}),s(this,n,w)}#r(){let e=this.live.value,t=this.time.value,n=this.buffer.value;return!e||!t||!n?null:{currentTime:t.currentTime,seek:t.seek,seekable:n.seekable,liveEdgeStart:e.liveEdgeStart,targetLiveWindow:e.targetLiveWindow}}};export{T as t};
|
|
2
|
+
//# sourceMappingURL=live-button-element-CEbrR59d.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-button-element-C-WypudK.js","names":["#props","#media","#isAtLiveEdge","resolveText","#i18n","#defaultContent","#disconnect","#getMedia"],"sources":["../../core/dist/default/i18n/text/live.js","../../core/dist/default/core/ui/live-button/live-button-core.js","../../core/dist/default/core/ui/live-button/live-button-data-attrs.js","../src/ui/live-button/live-button-element.ts"],"sourcesContent":["//#region src/core/i18n/text/live.ts\nconst prefix = \"live.\";\nconst playingText = {\n\tkey: `${prefix}playing`,\n\ttext: \"Playing live\"\n};\nconst seekToEdgeText = {\n\tkey: `${prefix}seekToEdge`,\n\ttext: \"Seek to live edge\"\n};\nconst badgeText = {\n\tkey: `${prefix}badge`,\n\ttext: \"Live\"\n};\n//#endregion\nexport { badgeText, playingText, seekToEdgeText };\n\n//# sourceMappingURL=live.js.map","import { resolveText } from \"../../i18n/resolve-text.js\";\nimport { resolveLabel } from \"../utils/resolve-label.js\";\nimport { badgeText, playingText, seekToEdgeText } from \"../../../i18n/text/live.js\";\nimport { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\n//#region src/core/ui/live-button/live-button-core.ts\n/**\n* Fallback offset (in seconds) from the end of the seekable window used to\n* decide \"at live edge\" when `liveEdgeStart` is unavailable.\n*/\nconst LIVE_EDGE_OFFSET = 10;\n/**\n* Grace window (in seconds) before `liveEdgeStart` that still counts as\n* \"at the live edge\". Absorbs the small gap between the player's initial\n* playback position (e.g. hls.js `liveSyncDuration`) and the manifest's\n* `HOLD-BACK`, so autoplay reliably reports live.\n*/\nconst LIVE_EDGE_TOLERANCE = 5;\n/**\n* Core state machine for a \"Live\" button. Indicates whether the player is\n* playing at the live edge and seeks to the Seekable Live Edge when activated.\n*\n* @see https://github.com/video-dev/media-ui-extensions/blob/main/proposals/0007-live-edge.md\n*/\nvar LiveButtonCore = class LiveButtonCore {\n\t/** Default visible text used when no children are provided. */\n\tstatic defaultText = badgeText;\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\tlive: false,\n\t\tliveEdge: false,\n\t\tlabel: \"\"\n\t});\n\t#props = { ...LiveButtonCore.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, LiveButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst label = resolveLabel(this.#props.label, state);\n\t\tif (label) return label;\n\t\tif (state.liveEdge) return playingText;\n\t\treturn seekToEdgeText;\n\t}\n\tgetAttrs(state) {\n\t\tconst inactive = this.#props.disabled || state.liveEdge;\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": inactive ? \"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 live = isLiveMedia(media);\n\t\tconst liveEdge = live && this.#isAtLiveEdge(media);\n\t\tthis.state.patch({\n\t\t\tlive,\n\t\t\tliveEdge\n\t\t});\n\t\tthis.state.patch({ label: resolveText(this.getLabel(this.state.current)) });\n\t\treturn this.state.current;\n\t}\n\t/** Seek to the Seekable Live Edge. No-op when not live or already at edge. */\n\tasync seekToLive(media) {\n\t\tif (this.#props.disabled) return;\n\t\tif (!isLiveMedia(media)) return;\n\t\tif (this.#isAtLiveEdge(media)) return;\n\t\tconst target = liveEdgeTarget(media);\n\t\tif (target == null) return;\n\t\tawait media.seek(target);\n\t}\n\t#isAtLiveEdge(media) {\n\t\tconst { currentTime, liveEdgeStart } = media;\n\t\tif (Number.isFinite(liveEdgeStart)) return currentTime >= liveEdgeStart - LIVE_EDGE_TOLERANCE;\n\t\tconst target = liveEdgeTarget(media);\n\t\tif (target == null) return false;\n\t\treturn currentTime >= target - LIVE_EDGE_OFFSET;\n\t}\n};\nfunction isLiveMedia(media) {\n\treturn !Number.isNaN(media.targetLiveWindow);\n}\nfunction liveEdgeTarget(media) {\n\tconst { seekable } = media;\n\tif (seekable.length === 0) return null;\n\tconst end = seekable[seekable.length - 1][1];\n\treturn Number.isFinite(end) ? end : null;\n}\n//#endregion\nexport { LiveButtonCore };\n\n//# sourceMappingURL=live-button-core.js.map","//#region src/core/ui/live-button/live-button-data-attrs.ts\nconst LiveButtonDataAttrs = {\n\t/** Present when the stream is live (or DVR). */\n\tlive: \"data-live\",\n\t/** Present when playback is at the live edge. */\n\tliveEdge: \"data-live-edge\"\n};\n//#endregion\nexport { LiveButtonDataAttrs };\n\n//# sourceMappingURL=live-button-data-attrs.js.map","import { LiveButtonCore, LiveButtonDataAttrs, type LiveButtonMediaState } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createButton,\n logMissingFeature,\n selectBuffer,\n selectLive,\n selectTime,\n} from '@videojs/core/dom';\nimport { resolveText, type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport type { State } from '@videojs/store';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\n/**\n * `<media-live-button>` — selects from `live`, `time`, and `buffer` features\n * and composes them into the `LiveButtonMediaState` consumed by\n * `LiveButtonCore`.\n *\n * Doesn't extend `MediaButtonElement` because that base couples a button to\n * a single feature selector; the LiveButton needs three.\n */\nexport class LiveButtonElement extends MediaElement {\n static readonly tagName = 'media-live-button';\n\n static override properties: PropertyDeclarationMap = {\n label: { type: String },\n disabled: { type: Boolean },\n };\n\n disabled = false;\n label: Text | string = '';\n\n protected readonly core = new LiveButtonCore();\n\n protected readonly live = new PlayerController(this, playerContext, selectLive);\n protected readonly time = new PlayerController(this, playerContext, selectTime);\n protected readonly buffer = new PlayerController(this, playerContext, selectBuffer);\n readonly #i18n = new I18nController(this, i18nContext);\n\n get $state(): State<LiveButtonCore.State> {\n return this.core.state;\n }\n\n #defaultContent = false;\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#defaultContent ||= !this.textContent?.trim();\n if (this.#defaultContent) {\n this.textContent = translateText(LiveButtonCore.defaultText, this.#i18n.value);\n }\n\n this.#disconnect = new AbortController();\n\n const buttonProps = createButton({\n onActivate: () => {\n const media = this.#getMedia();\n if (media) this.core.seekToLive(media);\n },\n isDisabled: () => this.disabled || !this.#getMedia(),\n });\n\n applyElementProps(this, buttonProps, { signal: this.#disconnect.signal });\n\n if (__DEV__ && !this.#getMedia()) {\n logMissingFeature(this.localName, this.live.displayName ?? 'live');\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n /** Returns the button's current label derived from media state. */\n getLabel(): string | undefined {\n return this.core.state.current.label ? resolveText(this.core.state.current.label) : undefined;\n }\n\n /** Resolved label for tooltips and other display surfaces. */\n getResolvedLabel(): string | undefined {\n const media = this.#getMedia();\n if (!media) return undefined;\n const state = this.core.getState();\n return translateText(this.core.getLabel(state), this.#i18n.value);\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.core.setProps(this);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n if (this.#defaultContent) {\n this.textContent = translateText(LiveButtonCore.defaultText, this.#i18n.value);\n }\n\n const media = this.#getMedia();\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n const attrs = this.core.getAttrs(state);\n applyElementProps(this, {\n ...attrs,\n 'aria-label': translateText(attrs['aria-label'], this.#i18n.value),\n });\n applyStateDataAttrs(this, state, LiveButtonDataAttrs);\n }\n\n /**\n * Compose the LiveButton media state from the three feature slices.\n * Returns `null` when any are missing so the button stays disabled until\n * all three features are registered on the player.\n */\n #getMedia(): LiveButtonMediaState | null {\n const live = this.live.value;\n const time = this.time.value;\n const buffer = this.buffer.value;\n if (!live || !time || !buffer) return null;\n return {\n currentTime: time.currentTime,\n seek: time.seek,\n seekable: buffer.seekable,\n liveEdgeStart: live.liveEdgeStart,\n targetLiveWindow: live.targetLiveWindow,\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"live-button-element-CEbrR59d.js","names":["#props","#media","#isAtLiveEdge","resolveText","#i18n","#defaultContent","#disconnect","#getMedia"],"sources":["../../core/dist/default/i18n/text/live.js","../../core/dist/default/core/ui/live-button/live-button-core.js","../../core/dist/default/core/ui/live-button/live-button-data-attrs.js","../src/ui/live-button/live-button-element.ts"],"sourcesContent":["//#region src/core/i18n/text/live.ts\nconst prefix = \"live.\";\nconst playingText = {\n\tkey: `${prefix}playing`,\n\ttext: \"Playing live\"\n};\nconst seekToEdgeText = {\n\tkey: `${prefix}seekToEdge`,\n\ttext: \"Seek to live edge\"\n};\nconst badgeText = {\n\tkey: `${prefix}badge`,\n\ttext: \"Live\"\n};\n//#endregion\nexport { badgeText, playingText, seekToEdgeText };\n\n//# sourceMappingURL=live.js.map","import { resolveText } from \"../../i18n/resolve-text.js\";\nimport { resolveLabel } from \"../utils/resolve-label.js\";\nimport { badgeText, playingText, seekToEdgeText } from \"../../../i18n/text/live.js\";\nimport { createState } from \"@videojs/store\";\nimport { defaults } from \"@videojs/utils/object\";\n//#region src/core/ui/live-button/live-button-core.ts\n/**\n* Fallback offset (in seconds) from the end of the seekable window used to\n* decide \"at live edge\" when `liveEdgeStart` is unavailable.\n*/\nconst LIVE_EDGE_OFFSET = 10;\n/**\n* Grace window (in seconds) before `liveEdgeStart` that still counts as\n* \"at the live edge\". Absorbs the small gap between the player's initial\n* playback position (e.g. hls.js `liveSyncDuration`) and the manifest's\n* `HOLD-BACK`, so autoplay reliably reports live.\n*/\nconst LIVE_EDGE_TOLERANCE = 5;\n/**\n* Core state machine for a \"Live\" button. Indicates whether the player is\n* playing at the live edge and seeks to the Seekable Live Edge when activated.\n*\n* @see https://github.com/video-dev/media-ui-extensions/blob/main/proposals/0007-live-edge.md\n*/\nvar LiveButtonCore = class LiveButtonCore {\n\t/** Default visible text used when no children are provided. */\n\tstatic defaultText = badgeText;\n\tstatic defaultProps = {\n\t\tlabel: \"\",\n\t\tdisabled: false\n\t};\n\tstate = createState({\n\t\tlive: false,\n\t\tliveEdge: false,\n\t\tlabel: \"\"\n\t});\n\t#props = { ...LiveButtonCore.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, LiveButtonCore.defaultProps);\n\t}\n\tgetLabel(state) {\n\t\tconst label = resolveLabel(this.#props.label, state);\n\t\tif (label) return label;\n\t\tif (state.liveEdge) return playingText;\n\t\treturn seekToEdgeText;\n\t}\n\tgetAttrs(state) {\n\t\tconst inactive = this.#props.disabled || state.liveEdge;\n\t\treturn {\n\t\t\t\"aria-label\": this.getLabel(state),\n\t\t\t\"aria-disabled\": inactive ? \"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 live = isLiveMedia(media);\n\t\tconst liveEdge = live && this.#isAtLiveEdge(media);\n\t\tthis.state.patch({\n\t\t\tlive,\n\t\t\tliveEdge\n\t\t});\n\t\tthis.state.patch({ label: resolveText(this.getLabel(this.state.current)) });\n\t\treturn this.state.current;\n\t}\n\t/** Seek to the Seekable Live Edge. No-op when not live or already at edge. */\n\tasync seekToLive(media) {\n\t\tif (this.#props.disabled) return;\n\t\tif (!isLiveMedia(media)) return;\n\t\tif (this.#isAtLiveEdge(media)) return;\n\t\tconst target = liveEdgeTarget(media);\n\t\tif (target == null) return;\n\t\tawait media.seek(target);\n\t}\n\t#isAtLiveEdge(media) {\n\t\tconst { currentTime, liveEdgeStart } = media;\n\t\tif (Number.isFinite(liveEdgeStart)) return currentTime >= liveEdgeStart - LIVE_EDGE_TOLERANCE;\n\t\tconst target = liveEdgeTarget(media);\n\t\tif (target == null) return false;\n\t\treturn currentTime >= target - LIVE_EDGE_OFFSET;\n\t}\n};\nfunction isLiveMedia(media) {\n\treturn !Number.isNaN(media.targetLiveWindow);\n}\nfunction liveEdgeTarget(media) {\n\tconst { seekable } = media;\n\tif (seekable.length === 0) return null;\n\tconst end = seekable[seekable.length - 1][1];\n\treturn Number.isFinite(end) ? end : null;\n}\n//#endregion\nexport { LiveButtonCore };\n\n//# sourceMappingURL=live-button-core.js.map","//#region src/core/ui/live-button/live-button-data-attrs.ts\nconst LiveButtonDataAttrs = {\n\t/** Present when the stream is live (or DVR). */\n\tlive: \"data-live\",\n\t/** Present when playback is at the live edge. */\n\tliveEdge: \"data-live-edge\"\n};\n//#endregion\nexport { LiveButtonDataAttrs };\n\n//# sourceMappingURL=live-button-data-attrs.js.map","import { LiveButtonCore, LiveButtonDataAttrs, type LiveButtonMediaState } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createButton,\n logMissingFeature,\n selectBuffer,\n selectLive,\n selectTime,\n} from '@videojs/core/dom';\nimport { resolveText, type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport type { State } from '@videojs/store';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\n/**\n * `<media-live-button>` — selects from `live`, `time`, and `buffer` features\n * and composes them into the `LiveButtonMediaState` consumed by\n * `LiveButtonCore`.\n *\n * Doesn't extend `MediaButtonElement` because that base couples a button to\n * a single feature selector; the LiveButton needs three.\n */\nexport class LiveButtonElement extends MediaElement {\n static readonly tagName = 'media-live-button';\n\n static override properties: PropertyDeclarationMap = {\n label: { type: String },\n disabled: { type: Boolean },\n };\n\n disabled = false;\n label: Text | string = '';\n\n protected readonly core = new LiveButtonCore();\n\n protected readonly live = new PlayerController(this, playerContext, selectLive);\n protected readonly time = new PlayerController(this, playerContext, selectTime);\n protected readonly buffer = new PlayerController(this, playerContext, selectBuffer);\n readonly #i18n = new I18nController(this, i18nContext);\n\n get $state(): State<LiveButtonCore.State> {\n return this.core.state;\n }\n\n #defaultContent = false;\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#defaultContent ||= !this.textContent?.trim();\n if (this.#defaultContent) {\n this.textContent = translateText(LiveButtonCore.defaultText, this.#i18n.value);\n }\n\n this.#disconnect = new AbortController();\n\n const buttonProps = createButton({\n onActivate: () => {\n const media = this.#getMedia();\n if (media) this.core.seekToLive(media);\n },\n isDisabled: () => this.disabled || !this.#getMedia(),\n });\n\n applyElementProps(this, buttonProps, { signal: this.#disconnect.signal });\n\n if (__DEV__ && !this.#getMedia()) {\n logMissingFeature(this.localName, this.live.displayName ?? 'live');\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n /** Returns the button's current label derived from media state. */\n getLabel(): string | undefined {\n return this.core.state.current.label ? resolveText(this.core.state.current.label) : undefined;\n }\n\n /** Resolved label for tooltips and other display surfaces. */\n getResolvedLabel(): string | undefined {\n const media = this.#getMedia();\n if (!media) return undefined;\n const state = this.core.getState();\n return translateText(this.core.getLabel(state), this.#i18n.value);\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.core.setProps(this);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n if (this.#defaultContent) {\n this.textContent = translateText(LiveButtonCore.defaultText, this.#i18n.value);\n }\n\n const media = this.#getMedia();\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n const attrs = this.core.getAttrs(state);\n applyElementProps(this, {\n ...attrs,\n 'aria-label': translateText(attrs['aria-label'], this.#i18n.value),\n });\n applyStateDataAttrs(this, state, LiveButtonDataAttrs);\n }\n\n /**\n * Compose the LiveButton media state from the three feature slices.\n * Returns `null` when any are missing so the button stays disabled until\n * all three features are registered on the player.\n */\n #getMedia(): LiveButtonMediaState | null {\n const live = this.live.value;\n const time = this.time.value;\n const buffer = this.buffer.value;\n if (!live || !time || !buffer) return null;\n return {\n currentTime: time.currentTime,\n seek: time.seek,\n seekable: buffer.seekable,\n liveEdgeStart: live.liveEdgeStart,\n targetLiveWindow: live.targetLiveWindow,\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./minimal-BWLTn7oQ.js";import"./minimal-ui-ClCvmIm4.js";
|