@videojs/html 10.0.0-beta.27 → 10.0.0-beta.28
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-headless.dev.js +1 -1
- package/cdn/audio-headless.js +1 -1
- 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-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-video-WKumpp49.js +59 -0
- package/cdn/background-video-WKumpp49.js.map +1 -0
- package/cdn/background-video-YHY_3-lX.js +2 -0
- package/cdn/background-video-YHY_3-lX.js.map +1 -0
- package/cdn/background.dev.js +3 -56
- package/cdn/background.dev.js.map +1 -1
- package/cdn/background.js +1 -1
- package/cdn/background.js.map +1 -1
- package/cdn/bn-CcLIScl6.js +108 -0
- package/cdn/bn-CcLIScl6.js.map +1 -0
- package/cdn/bn-KcCmQhYd.js +2 -0
- package/cdn/bn-KcCmQhYd.js.map +1 -0
- package/cdn/compounds-BEO1d3ZM.js +8 -0
- package/cdn/compounds-BEO1d3ZM.js.map +1 -0
- package/cdn/{compounds-CCvdpvge.js → compounds-nk9RJtBK.js} +8 -15
- package/cdn/compounds-nk9RJtBK.js.map +1 -0
- package/cdn/container-element-Dd0ZCdhK.js +14 -0
- package/cdn/container-element-Dd0ZCdhK.js.map +1 -0
- package/cdn/container-element-HHK_KZOE.js +376 -0
- package/cdn/container-element-HHK_KZOE.js.map +1 -0
- package/cdn/{create-player-BHFyOnWi.js → create-player-DK9WOywd.js} +19 -379
- package/cdn/create-player-DK9WOywd.js.map +1 -0
- package/cdn/create-player-hSdQMP5p.js +2 -0
- package/cdn/create-player-hSdQMP5p.js.map +1 -0
- package/cdn/embed-params-D2e8u0d4.js +2 -0
- package/cdn/embed-params-D2e8u0d4.js.map +1 -0
- package/cdn/embed-params-W6T88S8x.js +39 -0
- package/cdn/embed-params-W6T88S8x.js.map +1 -0
- package/cdn/{gesture-element-CG-Sx_5t.js → gesture-element-6Ld1YwIL.js} +3 -3
- package/cdn/{gesture-element-CG-Sx_5t.js.map → gesture-element-6Ld1YwIL.js.map} +1 -1
- package/cdn/gesture-element-BC48ucj9.js +2 -0
- package/cdn/{gesture-element-BNfMI8eh.js.map → gesture-element-BC48ucj9.js.map} +1 -1
- package/cdn/{hls-js-g1zdcyvE.js → hls-js-BEuVm0u9.js} +3 -2
- package/cdn/{hls-js-g1zdcyvE.js.map → hls-js-BEuVm0u9.js.map} +1 -1
- package/cdn/hls-js-C4P_b2tT.js +2 -0
- package/cdn/{hls-js-6lW7L4th.js.map → hls-js-C4P_b2tT.js.map} +1 -1
- package/cdn/hls-js-CATW7NBm.js +2 -0
- package/cdn/{hls-js-DCQzjzB5.js.map → hls-js-CATW7NBm.js.map} +1 -1
- package/cdn/{hls-js-Cwj8UBx9.js → hls-js-WCNy9MVh.js} +3 -2
- package/cdn/{hls-js-Cwj8UBx9.js.map → hls-js-WCNy9MVh.js.map} +1 -1
- package/cdn/i18n-CE4KxKuj.js +2 -0
- package/cdn/i18n-CE4KxKuj.js.map +1 -0
- package/cdn/{i18n-Mtlmj1AA.js → i18n-Ch4t6EjV.js} +2 -2
- package/cdn/{i18n-Mtlmj1AA.js.map → i18n-Ch4t6EjV.js.map} +1 -1
- package/cdn/i18n-Dc7WM2xd.js +2 -0
- package/cdn/{i18n-DfKGl5Rh.js.map → i18n-Dc7WM2xd.js.map} +1 -1
- package/cdn/i18n-DyF_NfCk.js +157 -0
- package/cdn/i18n-DyF_NfCk.js.map +1 -0
- package/cdn/i18n.dev.js +3 -152
- package/cdn/i18n.dev.js.map +1 -1
- package/cdn/i18n.js +1 -1
- package/cdn/i18n.js.map +1 -1
- package/cdn/{live-button-element-B_y-ZJBy.js → live-button-element-Bae44kBN.js} +5 -4
- package/cdn/live-button-element-Bae44kBN.js.map +1 -0
- package/cdn/live-button-element-DaHgnYdw.js +2 -0
- package/cdn/{live-button-element-CWfkQUoy.js.map → live-button-element-DaHgnYdw.js.map} +1 -1
- package/cdn/live-video-minimal.dev.js +8 -8
- package/cdn/live-video-minimal.dev.js.map +1 -1
- package/cdn/live-video-minimal.js +1 -1
- package/cdn/live-video-minimal.js.map +1 -1
- package/cdn/live-video.dev.js +9 -9
- 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/locales/bn.dev.js +1 -1
- package/cdn/locales/bn.js +1 -1
- package/cdn/media/background-video.dev.d.ts +1 -0
- package/cdn/media/background-video.dev.js +3 -0
- package/cdn/media/background-video.js +1 -0
- package/cdn/media/cloudflare-video.dev.d.ts +1 -0
- package/cdn/media/cloudflare-video.dev.js +668 -0
- package/cdn/media/cloudflare-video.dev.js.map +1 -0
- package/cdn/media/cloudflare-video.js +2 -0
- package/cdn/media/cloudflare-video.js.map +1 -0
- package/cdn/media/container.dev.d.ts +1 -0
- package/cdn/media/container.dev.js +8 -0
- package/cdn/media/container.dev.js.map +1 -0
- package/cdn/media/container.js +2 -0
- package/cdn/media/container.js.map +1 -0
- package/cdn/media/dash-video.dev.js +2 -1
- package/cdn/media/dash-video.js +2 -2
- package/cdn/media/dash-video.js.map +1 -1
- package/cdn/media/google-cast.dev.js +2 -31
- package/cdn/media/google-cast.dev.js.map +1 -1
- package/cdn/media/google-cast.js +3 -3
- package/cdn/media/google-cast.js.map +1 -1
- package/cdn/media/hls-audio.dev.js +1 -0
- package/cdn/media/hls-audio.js +1 -1
- package/cdn/media/hls-audio.js.map +1 -1
- package/cdn/media/hls-background-video.dev.js +2 -1
- package/cdn/media/hls-background-video.js +1 -1
- package/cdn/media/hls-background-video.js.map +1 -1
- package/cdn/media/hls-video.dev.js +2 -1
- package/cdn/media/hls-video.js +1 -1
- package/cdn/media/hls-video.js.map +1 -1
- package/cdn/media/hlsjs-video.dev.js +2 -1
- package/cdn/media/hlsjs-video.js +1 -1
- package/cdn/media/hlsjs-video.js.map +1 -1
- package/cdn/media/mux-audio/hls-js.dev.js +3 -1
- package/cdn/media/mux-audio/hls-js.js +1 -1
- package/cdn/media/mux-audio/spf.dev.js +1 -0
- package/cdn/media/mux-audio/spf.js +1 -1
- package/cdn/media/mux-audio/spf.js.map +1 -1
- package/cdn/media/mux-audio.dev.js +3 -1
- package/cdn/media/mux-audio.js +1 -1
- package/cdn/media/mux-background-video.dev.js +2 -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 +2 -1
- package/cdn/media/mux-data.dev.js.map +1 -1
- package/cdn/media/mux-data.js +2 -2
- package/cdn/media/mux-data.js.map +1 -1
- package/cdn/media/mux-video/hls-js.dev.js +3 -1
- package/cdn/media/mux-video/hls-js.js +1 -1
- package/cdn/media/mux-video/spf.dev.js +2 -1
- package/cdn/media/mux-video/spf.js +1 -1
- package/cdn/media/mux-video/spf.js.map +1 -1
- package/cdn/media/mux-video.dev.js +3 -1
- package/cdn/media/mux-video.js +1 -1
- package/cdn/media/native-hls-video.dev.js +1 -0
- package/cdn/media/native-hls-video.js +1 -1
- package/cdn/media/native-hls-video.js.map +1 -1
- package/cdn/media/spotify-audio.dev.d.ts +1 -0
- package/cdn/media/spotify-audio.dev.js +605 -0
- package/cdn/media/spotify-audio.dev.js.map +1 -0
- package/cdn/media/spotify-audio.js +2 -0
- package/cdn/media/spotify-audio.js.map +1 -0
- package/cdn/media/tiktok-video.dev.d.ts +1 -0
- package/cdn/media/tiktok-video.dev.js +636 -0
- package/cdn/media/tiktok-video.dev.js.map +1 -0
- package/cdn/media/tiktok-video.js +2 -0
- package/cdn/media/tiktok-video.js.map +1 -0
- package/cdn/media/twitch-video.dev.d.ts +1 -0
- package/cdn/media/twitch-video.dev.js +627 -0
- package/cdn/media/twitch-video.dev.js.map +1 -0
- package/cdn/media/twitch-video.js +2 -0
- package/cdn/media/twitch-video.js.map +1 -0
- package/cdn/media/vimeo-video.dev.d.ts +1 -0
- package/cdn/media/vimeo-video.dev.js +2989 -0
- package/cdn/media/vimeo-video.dev.js.map +1 -0
- package/cdn/media/vimeo-video.js +16 -0
- package/cdn/media/vimeo-video.js.map +1 -0
- package/cdn/media/youtube-video.dev.d.ts +1 -0
- package/cdn/media/youtube-video.dev.js +713 -0
- package/cdn/media/youtube-video.dev.js.map +1 -0
- package/cdn/media/youtube-video.js +2 -0
- package/cdn/media/youtube-video.js.map +1 -0
- package/cdn/{media-Cp3acYc8.js → media-BavrGKqa.js} +274 -5
- package/cdn/media-BavrGKqa.js.map +1 -0
- package/cdn/media-Bmablv4g.js +2 -0
- package/cdn/media-Bmablv4g.js.map +1 -0
- package/cdn/{media-B_gQXwri.js → media-COIe3uI5.js} +12 -3
- package/cdn/media-COIe3uI5.js.map +1 -0
- package/cdn/{media-CbWsJJhU.js → media-CPVSKLdk.js} +2 -2
- package/cdn/{media-CbWsJJhU.js.map → media-CPVSKLdk.js.map} +1 -1
- package/cdn/media-CanBm0Jh.js +41 -0
- package/cdn/media-CanBm0Jh.js.map +1 -0
- package/cdn/{media-Dq4zmIJa2.js → media-Dq4zmIJa.js} +1 -1
- package/cdn/media-Dq4zmIJa.js.map +1 -0
- package/cdn/{media-DRo3n8tM.js → media-oa3nyL2o.js} +3 -3
- package/cdn/{media-DRo3n8tM.js.map → media-oa3nyL2o.js.map} +1 -1
- package/cdn/media-played-ranges-CM2zeOGr.js +2 -0
- package/cdn/media-played-ranges-CM2zeOGr.js.map +1 -0
- package/cdn/media-played-ranges-Yd9acuMt.js +156 -0
- package/cdn/media-played-ranges-Yd9acuMt.js.map +1 -0
- package/cdn/{media-suYcjCG22.js → media-suYcjCG2.js} +1 -1
- package/cdn/media-suYcjCG2.js.map +1 -0
- package/cdn/minimal-ui-8iRZf_72.js +2 -0
- package/cdn/{minimal-ui-AFk6Ut5f.js.map → minimal-ui-8iRZf_72.js.map} +1 -1
- package/cdn/{minimal-ui--JsmpU2q.js → minimal-ui-BpHxIo4z.js} +5 -5
- package/cdn/{minimal-ui--JsmpU2q.js.map → minimal-ui-BpHxIo4z.js.map} +1 -1
- package/cdn/{minimal-ui-Bxcpf5Mb.js → minimal-ui-CRKvUmB8.js} +9 -9
- package/cdn/{minimal-ui-Bxcpf5Mb.js.map → minimal-ui-CRKvUmB8.js.map} +1 -1
- package/cdn/minimal-ui-Et2Wcn7r.js +2 -0
- package/cdn/{minimal-ui-BVKu9LWj.js.map → minimal-ui-Et2Wcn7r.js.map} +1 -1
- package/cdn/mixin-BqN0V06a.js +2 -0
- package/cdn/{mixin-DiB7dIef.js.map → mixin-BqN0V06a.js.map} +1 -1
- package/cdn/{mixin-CkNZwQXF.js → mixin-C193v40v.js} +67 -67
- package/cdn/mixin-C193v40v.js.map +1 -0
- package/cdn/noop-BxkeRIz9.js +6 -0
- package/cdn/noop-BxkeRIz9.js.map +1 -0
- package/cdn/noop-Ch0IHcOP.js +2 -0
- package/cdn/noop-Ch0IHcOP.js.map +1 -0
- package/cdn/{player-D4fdOLLk.js → player-B2oraRyD.js} +3 -2
- package/cdn/{player-D4fdOLLk.js.map → player-B2oraRyD.js.map} +1 -1
- package/cdn/player-BRQLp5bX.js +2 -0
- package/cdn/{player-srq1RGTj.js.map → player-BRQLp5bX.js.map} +1 -1
- package/cdn/player-BloX4l6F.js +2 -0
- package/cdn/{player-iIewo8Y9.js.map → player-BloX4l6F.js.map} +1 -1
- package/cdn/{player-B0qnepD5.js → player-CKTAtwit.js} +3 -2
- package/cdn/{player-B0qnepD5.js.map → player-CKTAtwit.js.map} +1 -1
- package/cdn/{player-C4ix6TQq.js → player-DM9rUXg-.js} +3 -2
- package/cdn/{player-C4ix6TQq.js.map → player-DM9rUXg-.js.map} +1 -1
- package/cdn/player-rCFqzWrA.js +2 -0
- package/cdn/{player-B0ccW5-n.js.map → player-rCFqzWrA.js.map} +1 -1
- package/cdn/{poster-element-BP1Ypgbf.js → poster-element-BGr1VQJB.js} +16 -4
- package/cdn/poster-element-BGr1VQJB.js.map +1 -0
- package/cdn/poster-element-DBmgOyep.js +2 -0
- package/cdn/poster-element-DBmgOyep.js.map +1 -0
- package/cdn/script-D3ZkiqwO.js +2 -0
- package/cdn/script-D3ZkiqwO.js.map +1 -0
- package/cdn/script-erPJaaTz.js +33 -0
- package/cdn/script-erPJaaTz.js.map +1 -0
- package/cdn/seek-button-element-FlgBVoGM.js +2 -0
- package/cdn/seek-button-element-FlgBVoGM.js.map +1 -0
- package/cdn/{seek-button-element-TErrbilI.js → seek-button-element-XMTLIxZj.js} +6 -5
- package/cdn/seek-button-element-XMTLIxZj.js.map +1 -0
- package/cdn/{skin-element-wPSb4AAs.js → skin-element-DL-Kqa5f.js} +2 -2
- package/cdn/{skin-element-wPSb4AAs.js.map → skin-element-DL-Kqa5f.js.map} +1 -1
- package/cdn/{skin-element-1_MG2zgS.js → skin-element-DNytI-uu.js} +2 -2
- package/cdn/{skin-element-1_MG2zgS.js.map → skin-element-DNytI-uu.js.map} +1 -1
- package/cdn/{text-element-DTB9_2HX.js → text-element-D88ArbZz.js} +3 -3
- package/cdn/{text-element-DTB9_2HX.js.map → text-element-D88ArbZz.js.map} +1 -1
- package/cdn/text-element-DeWBNKXb.js +2 -0
- package/cdn/{text-element-Bsyglab8.js.map → text-element-DeWBNKXb.js.map} +1 -1
- package/cdn/{time-slider-chapters-element-DPgaLdBt.js → time-slider-chapters-element-DJ0abZXI.js} +5 -4
- package/cdn/time-slider-chapters-element-DJ0abZXI.js.map +1 -0
- package/cdn/time-slider-chapters-element-DW8YyJn8.js +2 -0
- package/cdn/{time-slider-chapters-element-MdlcovBu.js.map → time-slider-chapters-element-DW8YyJn8.js.map} +1 -1
- package/cdn/{translate-text-DP0CzUCC.js → translate-text-BWvoW5-r.js} +2 -7
- package/cdn/translate-text-BWvoW5-r.js.map +1 -0
- package/cdn/translate-text-TzSgu_oe.js +2 -0
- package/cdn/translate-text-TzSgu_oe.js.map +1 -0
- package/cdn/{ui-D0AokGxw.js → ui-BU3_2gDQ.js} +8 -8
- package/cdn/{ui-D0AokGxw.js.map → ui-BU3_2gDQ.js.map} +1 -1
- package/cdn/{ui-p36Szn71.js → ui-BsaWWE4y.js} +10 -10
- package/cdn/{ui-p36Szn71.js.map → ui-BsaWWE4y.js.map} +1 -1
- package/cdn/ui-C0isALTQ.js +2 -0
- package/cdn/{ui-CecDxhTX.js.map → ui-C0isALTQ.js.map} +1 -1
- package/cdn/ui-DVpkE1MN.js +2 -0
- package/cdn/{ui-ChWM6Xz2.js.map → ui-DVpkE1MN.js.map} +1 -1
- package/cdn/video-headless.dev.js +1 -1
- package/cdn/video-headless.js +1 -1
- package/cdn/video-minimal-ui.dev.js +1 -1
- package/cdn/video-minimal-ui.js +1 -1
- package/cdn/video-minimal.dev.js +4 -4
- package/cdn/video-minimal.dev.js.map +1 -1
- package/cdn/video-minimal.js +1 -1
- package/cdn/video-minimal.js.map +1 -1
- package/cdn/video-ui.dev.js +1 -1
- package/cdn/video-ui.js +1 -1
- package/cdn/video.dev.js +5 -5
- 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 +16 -19
- package/dist/default/define/audio/skin.css +27 -30
- package/dist/default/define/live-audio/minimal-skin.css +16 -19
- package/dist/default/define/live-audio/skin.css +27 -30
- package/dist/default/define/live-video/minimal-skin.css +20 -19
- package/dist/default/define/live-video/skin.css +31 -30
- package/dist/default/define/video/minimal-skin.css +20 -19
- package/dist/default/define/video/skin.css +31 -30
- package/dist/default/media/tiktok-video/media.js +3 -2
- package/dist/default/media/tiktok-video/media.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js +6 -6
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +4 -4
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/ui/playback-rate-button/playback-rate-button-element.js +1 -2
- package/dist/default/ui/playback-rate-button/playback-rate-button-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 +16 -19
- package/dist/dev/define/audio/skin.css +27 -30
- package/dist/dev/define/live-audio/minimal-skin.css +16 -19
- package/dist/dev/define/live-audio/skin.css +27 -30
- package/dist/dev/define/live-video/minimal-skin.css +20 -19
- package/dist/dev/define/live-video/skin.css +31 -30
- package/dist/dev/define/video/minimal-skin.css +20 -19
- package/dist/dev/define/video/skin.css +31 -30
- package/dist/dev/media/tiktok-video/media.d.ts.map +1 -1
- package/dist/dev/media/tiktok-video/media.js +10 -7
- package/dist/dev/media/tiktok-video/media.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/slider.js +6 -6
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/slider.js +4 -4
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts.map +1 -1
- package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js +1 -2
- package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js.map +1 -1
- package/docs/README.md +1 -1
- package/docs/concepts/features.md +2 -2
- package/docs/concepts/media-sources.md +79 -1
- package/docs/concepts/skins.md +31 -30
- package/docs/how-to/build-your-own-component.md +1 -1
- package/docs/how-to/customize-skins.md +94 -98
- package/docs/how-to/migrate-from-media-chrome.md +359 -0
- package/docs/how-to/migrate-from-mux-player.md +535 -0
- package/docs/how-to/migrate-from-plyr.md +394 -0
- package/docs/how-to/migrate-from-video-js-8.md +594 -0
- package/docs/llms.txt +9 -0
- package/docs/reference/feature-volume.md +3 -1
- package/docs/reference/mute-button.md +34 -0
- package/docs/reference/volume-slider.md +1 -1
- package/package.json +10 -9
- package/cdn/bn-DdelKD_n.js +0 -108
- package/cdn/bn-DdelKD_n.js.map +0 -1
- package/cdn/bn-YS8ruMcO.js +0 -2
- package/cdn/bn-YS8ruMcO.js.map +0 -1
- package/cdn/compounds-CCvdpvge.js.map +0 -1
- package/cdn/compounds-CJ6SbYAh.js +0 -8
- package/cdn/compounds-CJ6SbYAh.js.map +0 -1
- package/cdn/create-player-BHFyOnWi.js.map +0 -1
- package/cdn/create-player-CbpxjDaZ.js +0 -14
- package/cdn/create-player-CbpxjDaZ.js.map +0 -1
- package/cdn/gesture-element-BNfMI8eh.js +0 -2
- package/cdn/hls-js-6lW7L4th.js +0 -2
- package/cdn/hls-js-DCQzjzB5.js +0 -2
- package/cdn/i18n-DfKGl5Rh.js +0 -2
- package/cdn/live-button-element-B_y-ZJBy.js.map +0 -1
- package/cdn/live-button-element-CWfkQUoy.js +0 -2
- package/cdn/media-5ODYtX1-.js +0 -2
- package/cdn/media-5ODYtX1-.js.map +0 -1
- package/cdn/media-B_gQXwri.js.map +0 -1
- package/cdn/media-CPWNSZFX.js +0 -41
- package/cdn/media-CPWNSZFX.js.map +0 -1
- package/cdn/media-Cp3acYc8.js.map +0 -1
- package/cdn/media-Dq4zmIJa2.js.map +0 -1
- package/cdn/media-suYcjCG22.js.map +0 -1
- package/cdn/minimal-ui-AFk6Ut5f.js +0 -2
- package/cdn/minimal-ui-BVKu9LWj.js +0 -2
- package/cdn/mixin-CkNZwQXF.js.map +0 -1
- package/cdn/mixin-DiB7dIef.js +0 -2
- package/cdn/player-B0ccW5-n.js +0 -2
- package/cdn/player-iIewo8Y9.js +0 -2
- package/cdn/player-srq1RGTj.js +0 -2
- package/cdn/poster-element-BP1Ypgbf.js.map +0 -1
- package/cdn/poster-element-S-rr412t.js +0 -2
- package/cdn/poster-element-S-rr412t.js.map +0 -1
- package/cdn/seek-button-element-DxLmm58Y.js +0 -2
- package/cdn/seek-button-element-DxLmm58Y.js.map +0 -1
- package/cdn/seek-button-element-TErrbilI.js.map +0 -1
- package/cdn/text-element-Bsyglab8.js +0 -2
- package/cdn/time-slider-chapters-element-DPgaLdBt.js.map +0 -1
- package/cdn/time-slider-chapters-element-MdlcovBu.js +0 -2
- package/cdn/translate-text-BPMWpzFm.js +0 -2
- package/cdn/translate-text-BPMWpzFm.js.map +0 -1
- package/cdn/translate-text-DP0CzUCC.js.map +0 -1
- package/cdn/ui-CecDxhTX.js +0 -2
- package/cdn/ui-ChWM6Xz2.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-played-ranges-CM2zeOGr.js","names":["#disconnect","#onPlaybackStart","#currentTime","#onPlaybackStop","#commitCurrentRange","#onSeeked","#host","#currentPlayedRange","#addPlayedRange","#playedRanges","#rangeEpsilon"],"sources":["../../utils/dist/function/public-promise.js","../../media/dist/default/dom/utils/time-ranges.js","../../media/dist/default/dom/media-played-ranges/media-played-ranges.js"],"sourcesContent":["//#region src/function/public-promise.ts\n/**\n* A promise that can be settled from outside its executor.\n*\n* Useful as a barrier that one piece of code waits on and another settles — for\n* example an in-flight load that callers await until whichever event finishes it\n* resolves.\n*\n* @example\n* ```ts\n* const ready = createPublicPromise<void>();\n* element.addEventListener('load', () => ready.resolve(), { once: true });\n* await ready;\n* ```\n*/\nfunction createPublicPromise() {\n\tlet resolve;\n\tlet reject;\n\tconst promise = new Promise((res, rej) => {\n\t\tresolve = res;\n\t\treject = rej;\n\t});\n\tpromise.resolve = resolve;\n\tpromise.reject = reject;\n\treturn promise;\n}\n//#endregion\nexport { createPublicPromise };\n\n//# sourceMappingURL=public-promise.js.map","//#region src/dom/utils/time-ranges.ts\n/**\n* A `TimeRanges`-shaped object holding a single range. Embed hosts only ever\n* know one contiguous buffered or seekable span, so they report it through this\n* rather than constructing a real `TimeRanges`, which has no public constructor.\n*/\nfunction createTimeRange(start, end) {\n\treturn {\n\t\tlength: 1,\n\t\tstart: () => start,\n\t\tend: () => end\n\t};\n}\n//#endregion\nexport { createTimeRange };\n\n//# sourceMappingURL=time-ranges.js.map","import { isNumber } from \"@videojs/utils/predicate\";\n//#region src/dom/media-played-ranges/media-played-ranges.ts\n/**\n* Mixin that tracks played ranges for media hosts lacking a native\n* `HTMLMediaElement.played` (e.g. iframe-based embeds like Vimeo).\n*\n* Listens for standard media events the host dispatches on itself\n* (`play`, `pause`, `ended`, `seeking`, `seeked`) and derives a\n* `TimeRanges`-like `played` value from the host's `currentTime` / `paused`.\n*\n* @example\n* class VimeoMedia extends MediaPlayedRangesMixin(EventTarget) { ... }\n*/\nfunction MediaPlayedRangesMixin(BaseClass) {\n\tclass MediaPlayedRanges extends BaseClass {\n\t\t#playedRanges = [];\n\t\t#currentPlayedRange = null;\n\t\t#rangeEpsilon = .5;\n\t\t#disconnect = new AbortController();\n\t\tconstructor(...args) {\n\t\t\tsuper(...args);\n\t\t\tconst options = { signal: this.#disconnect.signal };\n\t\t\tthis.addEventListener(\"play\", () => this.#onPlaybackStart(this.#currentTime), options);\n\t\t\tthis.addEventListener(\"pause\", () => this.#onPlaybackStop(this.#currentTime), options);\n\t\t\tthis.addEventListener(\"ended\", () => this.#onPlaybackStop(this.#currentTime), options);\n\t\t\tthis.addEventListener(\"seeking\", () => this.#commitCurrentRange(), options);\n\t\t\tthis.addEventListener(\"seeked\", () => this.#onSeeked(this.#currentTime), options);\n\t\t}\n\t\t/** The host (subclass) supplies `currentTime` / `paused`. */\n\t\tget #host() {\n\t\t\treturn this;\n\t\t}\n\t\tget #currentTime() {\n\t\t\treturn this.#host.currentTime;\n\t\t}\n\t\tget played() {\n\t\t\tconst time = this.#currentTime;\n\t\t\tif (!this.#host.paused && !this.#currentPlayedRange && isNumber(time)) this.#currentPlayedRange = {\n\t\t\t\tstart: time,\n\t\t\t\tend: time\n\t\t\t};\n\t\t\tif (this.#currentPlayedRange && isNumber(time)) {\n\t\t\t\tif (time > this.#currentPlayedRange.end) this.#currentPlayedRange.end = time;\n\t\t\t\tthis.#addPlayedRange(this.#currentPlayedRange.start, this.#currentPlayedRange.end);\n\t\t\t}\n\t\t\tif (!this.#playedRanges.length) return createTimeRanges([[0, 0]]);\n\t\t\treturn createTimeRanges(this.#playedRanges.map((r) => [r.start, r.end]));\n\t\t}\n\t\tdestroy() {\n\t\t\tthis.#disconnect.abort();\n\t\t\tsuper.destroy?.();\n\t\t}\n\t\t#onPlaybackStart(time) {\n\t\t\tconst t = isNumber(time) ? time : this.#currentTime;\n\t\t\tif (!this.#currentPlayedRange) this.#currentPlayedRange = {\n\t\t\t\tstart: t,\n\t\t\t\tend: t\n\t\t\t};\n\t\t}\n\t\t#onSeeked(time) {\n\t\t\tconst t = isNumber(time) ? time : this.#currentTime;\n\t\t\tthis.#currentPlayedRange = {\n\t\t\t\tstart: t,\n\t\t\t\tend: t\n\t\t\t};\n\t\t}\n\t\t#onPlaybackStop(time) {\n\t\t\tconst t = isNumber(time) ? time : this.#currentTime;\n\t\t\tthis.#commitCurrentRange(t);\n\t\t}\n\t\t#commitCurrentRange(time) {\n\t\t\tif (!this.#currentPlayedRange) return;\n\t\t\tif (isNumber(time)) this.#currentPlayedRange.end = time;\n\t\t\tconst { start, end } = this.#currentPlayedRange;\n\t\t\tthis.#currentPlayedRange = null;\n\t\t\tthis.#addPlayedRange(start, end);\n\t\t}\n\t\t#addPlayedRange(start, end) {\n\t\t\tif (start >= end) return;\n\t\t\tconst allRanges = [...this.#playedRanges, {\n\t\t\t\tstart,\n\t\t\t\tend\n\t\t\t}];\n\t\t\tallRanges.sort((a, b) => a.start - b.start);\n\t\t\tconst merged = [];\n\t\t\tfor (const range of allRanges) {\n\t\t\t\tconst last = merged.length ? merged[merged.length - 1] : null;\n\t\t\t\tif (!last) {\n\t\t\t\t\tmerged.push({ ...range });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (range.start <= last.end + this.#rangeEpsilon) {\n\t\t\t\t\tlast.start = Math.min(last.start, range.start);\n\t\t\t\t\tlast.end = Math.max(last.end, range.end);\n\t\t\t\t} else merged.push({ ...range });\n\t\t\t}\n\t\t\tthis.#playedRanges = merged;\n\t\t}\n\t}\n\treturn MediaPlayedRanges;\n}\nfunction createTimeRanges(ranges) {\n\tObject.defineProperties(ranges, {\n\t\tstart: { value: (i) => ranges[i]?.[0] ?? 0 },\n\t\tend: { value: (i) => ranges[i]?.[1] ?? 0 }\n\t});\n\treturn ranges;\n}\n//#endregion\nexport { MediaPlayedRangesMixin };\n\n//# sourceMappingURL=media-played-ranges.js.map"],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { o as isNumber } from "./predicate-faYxAB6Z.js";
|
|
2
|
+
|
|
3
|
+
//#region ../utils/dist/function/public-promise.js
|
|
4
|
+
/**
|
|
5
|
+
* A promise that can be settled from outside its executor.
|
|
6
|
+
*
|
|
7
|
+
* Useful as a barrier that one piece of code waits on and another settles — for
|
|
8
|
+
* example an in-flight load that callers await until whichever event finishes it
|
|
9
|
+
* resolves.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const ready = createPublicPromise<void>();
|
|
14
|
+
* element.addEventListener('load', () => ready.resolve(), { once: true });
|
|
15
|
+
* await ready;
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
function createPublicPromise() {
|
|
19
|
+
let resolve;
|
|
20
|
+
let reject;
|
|
21
|
+
const promise = new Promise((res, rej) => {
|
|
22
|
+
resolve = res;
|
|
23
|
+
reject = rej;
|
|
24
|
+
});
|
|
25
|
+
promise.resolve = resolve;
|
|
26
|
+
promise.reject = reject;
|
|
27
|
+
return promise;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
//#endregion
|
|
31
|
+
//#region ../media/dist/dev/dom/utils/time-ranges.js
|
|
32
|
+
/**
|
|
33
|
+
* A `TimeRanges`-shaped object holding a single range. Embed hosts only ever
|
|
34
|
+
* know one contiguous buffered or seekable span, so they report it through this
|
|
35
|
+
* rather than constructing a real `TimeRanges`, which has no public constructor.
|
|
36
|
+
*/
|
|
37
|
+
function createTimeRange(start, end) {
|
|
38
|
+
return {
|
|
39
|
+
length: 1,
|
|
40
|
+
start: () => start,
|
|
41
|
+
end: () => end
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//#endregion
|
|
46
|
+
//#region ../media/dist/dev/dom/media-played-ranges/media-played-ranges.js
|
|
47
|
+
/**
|
|
48
|
+
* Mixin that tracks played ranges for media hosts lacking a native
|
|
49
|
+
* `HTMLMediaElement.played` (e.g. iframe-based embeds like Vimeo).
|
|
50
|
+
*
|
|
51
|
+
* Listens for standard media events the host dispatches on itself
|
|
52
|
+
* (`play`, `pause`, `ended`, `seeking`, `seeked`) and derives a
|
|
53
|
+
* `TimeRanges`-like `played` value from the host's `currentTime` / `paused`.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* class VimeoMedia extends MediaPlayedRangesMixin(EventTarget) { ... }
|
|
57
|
+
*/
|
|
58
|
+
function MediaPlayedRangesMixin(BaseClass) {
|
|
59
|
+
class MediaPlayedRanges extends BaseClass {
|
|
60
|
+
#playedRanges = [];
|
|
61
|
+
#currentPlayedRange = null;
|
|
62
|
+
#rangeEpsilon = .5;
|
|
63
|
+
#disconnect = new AbortController();
|
|
64
|
+
constructor(...args) {
|
|
65
|
+
super(...args);
|
|
66
|
+
const options = { signal: this.#disconnect.signal };
|
|
67
|
+
this.addEventListener("play", () => this.#onPlaybackStart(this.#currentTime), options);
|
|
68
|
+
this.addEventListener("pause", () => this.#onPlaybackStop(this.#currentTime), options);
|
|
69
|
+
this.addEventListener("ended", () => this.#onPlaybackStop(this.#currentTime), options);
|
|
70
|
+
this.addEventListener("seeking", () => this.#commitCurrentRange(), options);
|
|
71
|
+
this.addEventListener("seeked", () => this.#onSeeked(this.#currentTime), options);
|
|
72
|
+
}
|
|
73
|
+
/** The host (subclass) supplies `currentTime` / `paused`. */
|
|
74
|
+
get #host() {
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
get #currentTime() {
|
|
78
|
+
return this.#host.currentTime;
|
|
79
|
+
}
|
|
80
|
+
get played() {
|
|
81
|
+
const time = this.#currentTime;
|
|
82
|
+
if (!this.#host.paused && !this.#currentPlayedRange && isNumber(time)) this.#currentPlayedRange = {
|
|
83
|
+
start: time,
|
|
84
|
+
end: time
|
|
85
|
+
};
|
|
86
|
+
if (this.#currentPlayedRange && isNumber(time)) {
|
|
87
|
+
if (time > this.#currentPlayedRange.end) this.#currentPlayedRange.end = time;
|
|
88
|
+
this.#addPlayedRange(this.#currentPlayedRange.start, this.#currentPlayedRange.end);
|
|
89
|
+
}
|
|
90
|
+
if (!this.#playedRanges.length) return createTimeRanges([[0, 0]]);
|
|
91
|
+
return createTimeRanges(this.#playedRanges.map((r) => [r.start, r.end]));
|
|
92
|
+
}
|
|
93
|
+
destroy() {
|
|
94
|
+
this.#disconnect.abort();
|
|
95
|
+
super.destroy?.();
|
|
96
|
+
}
|
|
97
|
+
#onPlaybackStart(time) {
|
|
98
|
+
const t = isNumber(time) ? time : this.#currentTime;
|
|
99
|
+
if (!this.#currentPlayedRange) this.#currentPlayedRange = {
|
|
100
|
+
start: t,
|
|
101
|
+
end: t
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
#onSeeked(time) {
|
|
105
|
+
const t = isNumber(time) ? time : this.#currentTime;
|
|
106
|
+
this.#currentPlayedRange = {
|
|
107
|
+
start: t,
|
|
108
|
+
end: t
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
#onPlaybackStop(time) {
|
|
112
|
+
const t = isNumber(time) ? time : this.#currentTime;
|
|
113
|
+
this.#commitCurrentRange(t);
|
|
114
|
+
}
|
|
115
|
+
#commitCurrentRange(time) {
|
|
116
|
+
if (!this.#currentPlayedRange) return;
|
|
117
|
+
if (isNumber(time)) this.#currentPlayedRange.end = time;
|
|
118
|
+
const { start, end } = this.#currentPlayedRange;
|
|
119
|
+
this.#currentPlayedRange = null;
|
|
120
|
+
this.#addPlayedRange(start, end);
|
|
121
|
+
}
|
|
122
|
+
#addPlayedRange(start, end) {
|
|
123
|
+
if (start >= end) return;
|
|
124
|
+
const allRanges = [...this.#playedRanges, {
|
|
125
|
+
start,
|
|
126
|
+
end
|
|
127
|
+
}];
|
|
128
|
+
allRanges.sort((a, b) => a.start - b.start);
|
|
129
|
+
const merged = [];
|
|
130
|
+
for (const range of allRanges) {
|
|
131
|
+
const last = merged.length ? merged[merged.length - 1] : null;
|
|
132
|
+
if (!last) {
|
|
133
|
+
merged.push({ ...range });
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (range.start <= last.end + this.#rangeEpsilon) {
|
|
137
|
+
last.start = Math.min(last.start, range.start);
|
|
138
|
+
last.end = Math.max(last.end, range.end);
|
|
139
|
+
} else merged.push({ ...range });
|
|
140
|
+
}
|
|
141
|
+
this.#playedRanges = merged;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return MediaPlayedRanges;
|
|
145
|
+
}
|
|
146
|
+
function createTimeRanges(ranges) {
|
|
147
|
+
Object.defineProperties(ranges, {
|
|
148
|
+
start: { value: (i) => ranges[i]?.[0] ?? 0 },
|
|
149
|
+
end: { value: (i) => ranges[i]?.[1] ?? 0 }
|
|
150
|
+
});
|
|
151
|
+
return ranges;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
//#endregion
|
|
155
|
+
export { createTimeRange as n, createPublicPromise as r, MediaPlayedRangesMixin as t };
|
|
156
|
+
//# sourceMappingURL=media-played-ranges-Yd9acuMt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-played-ranges-Yd9acuMt.js","names":["#disconnect","#onPlaybackStart","#currentTime","#onPlaybackStop","#commitCurrentRange","#onSeeked","#host","#currentPlayedRange","#addPlayedRange","#playedRanges","#rangeEpsilon"],"sources":["../../utils/dist/function/public-promise.js","../../media/dist/dev/dom/utils/time-ranges.js","../../media/dist/dev/dom/media-played-ranges/media-played-ranges.js"],"sourcesContent":["//#region src/function/public-promise.ts\n/**\n* A promise that can be settled from outside its executor.\n*\n* Useful as a barrier that one piece of code waits on and another settles — for\n* example an in-flight load that callers await until whichever event finishes it\n* resolves.\n*\n* @example\n* ```ts\n* const ready = createPublicPromise<void>();\n* element.addEventListener('load', () => ready.resolve(), { once: true });\n* await ready;\n* ```\n*/\nfunction createPublicPromise() {\n\tlet resolve;\n\tlet reject;\n\tconst promise = new Promise((res, rej) => {\n\t\tresolve = res;\n\t\treject = rej;\n\t});\n\tpromise.resolve = resolve;\n\tpromise.reject = reject;\n\treturn promise;\n}\n//#endregion\nexport { createPublicPromise };\n\n//# sourceMappingURL=public-promise.js.map","//#region src/dom/utils/time-ranges.ts\n/**\n* A `TimeRanges`-shaped object holding a single range. Embed hosts only ever\n* know one contiguous buffered or seekable span, so they report it through this\n* rather than constructing a real `TimeRanges`, which has no public constructor.\n*/\nfunction createTimeRange(start, end) {\n\treturn {\n\t\tlength: 1,\n\t\tstart: () => start,\n\t\tend: () => end\n\t};\n}\n//#endregion\nexport { createTimeRange };\n\n//# sourceMappingURL=time-ranges.js.map","import { isNumber } from \"@videojs/utils/predicate\";\n//#region src/dom/media-played-ranges/media-played-ranges.ts\n/**\n* Mixin that tracks played ranges for media hosts lacking a native\n* `HTMLMediaElement.played` (e.g. iframe-based embeds like Vimeo).\n*\n* Listens for standard media events the host dispatches on itself\n* (`play`, `pause`, `ended`, `seeking`, `seeked`) and derives a\n* `TimeRanges`-like `played` value from the host's `currentTime` / `paused`.\n*\n* @example\n* class VimeoMedia extends MediaPlayedRangesMixin(EventTarget) { ... }\n*/\nfunction MediaPlayedRangesMixin(BaseClass) {\n\tclass MediaPlayedRanges extends BaseClass {\n\t\t#playedRanges = [];\n\t\t#currentPlayedRange = null;\n\t\t#rangeEpsilon = .5;\n\t\t#disconnect = new AbortController();\n\t\tconstructor(...args) {\n\t\t\tsuper(...args);\n\t\t\tconst options = { signal: this.#disconnect.signal };\n\t\t\tthis.addEventListener(\"play\", () => this.#onPlaybackStart(this.#currentTime), options);\n\t\t\tthis.addEventListener(\"pause\", () => this.#onPlaybackStop(this.#currentTime), options);\n\t\t\tthis.addEventListener(\"ended\", () => this.#onPlaybackStop(this.#currentTime), options);\n\t\t\tthis.addEventListener(\"seeking\", () => this.#commitCurrentRange(), options);\n\t\t\tthis.addEventListener(\"seeked\", () => this.#onSeeked(this.#currentTime), options);\n\t\t}\n\t\t/** The host (subclass) supplies `currentTime` / `paused`. */\n\t\tget #host() {\n\t\t\treturn this;\n\t\t}\n\t\tget #currentTime() {\n\t\t\treturn this.#host.currentTime;\n\t\t}\n\t\tget played() {\n\t\t\tconst time = this.#currentTime;\n\t\t\tif (!this.#host.paused && !this.#currentPlayedRange && isNumber(time)) this.#currentPlayedRange = {\n\t\t\t\tstart: time,\n\t\t\t\tend: time\n\t\t\t};\n\t\t\tif (this.#currentPlayedRange && isNumber(time)) {\n\t\t\t\tif (time > this.#currentPlayedRange.end) this.#currentPlayedRange.end = time;\n\t\t\t\tthis.#addPlayedRange(this.#currentPlayedRange.start, this.#currentPlayedRange.end);\n\t\t\t}\n\t\t\tif (!this.#playedRanges.length) return createTimeRanges([[0, 0]]);\n\t\t\treturn createTimeRanges(this.#playedRanges.map((r) => [r.start, r.end]));\n\t\t}\n\t\tdestroy() {\n\t\t\tthis.#disconnect.abort();\n\t\t\tsuper.destroy?.();\n\t\t}\n\t\t#onPlaybackStart(time) {\n\t\t\tconst t = isNumber(time) ? time : this.#currentTime;\n\t\t\tif (!this.#currentPlayedRange) this.#currentPlayedRange = {\n\t\t\t\tstart: t,\n\t\t\t\tend: t\n\t\t\t};\n\t\t}\n\t\t#onSeeked(time) {\n\t\t\tconst t = isNumber(time) ? time : this.#currentTime;\n\t\t\tthis.#currentPlayedRange = {\n\t\t\t\tstart: t,\n\t\t\t\tend: t\n\t\t\t};\n\t\t}\n\t\t#onPlaybackStop(time) {\n\t\t\tconst t = isNumber(time) ? time : this.#currentTime;\n\t\t\tthis.#commitCurrentRange(t);\n\t\t}\n\t\t#commitCurrentRange(time) {\n\t\t\tif (!this.#currentPlayedRange) return;\n\t\t\tif (isNumber(time)) this.#currentPlayedRange.end = time;\n\t\t\tconst { start, end } = this.#currentPlayedRange;\n\t\t\tthis.#currentPlayedRange = null;\n\t\t\tthis.#addPlayedRange(start, end);\n\t\t}\n\t\t#addPlayedRange(start, end) {\n\t\t\tif (start >= end) return;\n\t\t\tconst allRanges = [...this.#playedRanges, {\n\t\t\t\tstart,\n\t\t\t\tend\n\t\t\t}];\n\t\t\tallRanges.sort((a, b) => a.start - b.start);\n\t\t\tconst merged = [];\n\t\t\tfor (const range of allRanges) {\n\t\t\t\tconst last = merged.length ? merged[merged.length - 1] : null;\n\t\t\t\tif (!last) {\n\t\t\t\t\tmerged.push({ ...range });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (range.start <= last.end + this.#rangeEpsilon) {\n\t\t\t\t\tlast.start = Math.min(last.start, range.start);\n\t\t\t\t\tlast.end = Math.max(last.end, range.end);\n\t\t\t\t} else merged.push({ ...range });\n\t\t\t}\n\t\t\tthis.#playedRanges = merged;\n\t\t}\n\t}\n\treturn MediaPlayedRanges;\n}\nfunction createTimeRanges(ranges) {\n\tObject.defineProperties(ranges, {\n\t\tstart: { value: (i) => ranges[i]?.[0] ?? 0 },\n\t\tend: { value: (i) => ranges[i]?.[1] ?? 0 }\n\t});\n\treturn ranges;\n}\n//#endregion\nexport { MediaPlayedRangesMixin };\n\n//# sourceMappingURL=media-played-ranges.js.map"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-suYcjCG2.js","names":["#config","#engine","#createEngine","#signals","#cancelPendingPlay","#loadstartListener","#target","#media"],"sources":["../../spf/dist/dev/playback/behaviors/select-tracks.js","../../spf/dist/dev/playback/engines/hls/engine-background-video.js","../../spf/dist/dev/playback/adapters/hls-background-video/adapter.js","../../spf/dist/dev/playback/adapters/hls-background-video/host.js","../../spf/dist/dev/playback/adapters/hls-background-video/media.js","../src/media/hls-background-video/media.ts"],"sourcesContent":["import { computed } from \"../../core/signals/primitives.js\";\nimport { defineBehavior } from \"../../core/composition/create-composition.js\";\nimport { createMachineReactor } from \"../../core/reactors/create-machine-reactor.js\";\nimport { isResolvedPresentation } from \"../../media/types/index.js\";\nimport { AUDIO_TYPE_CONFIG, VIDEO_TYPE_CONFIG } from \"../primitives/track-types.js\";\nimport { pickAudioTrack, pickFirstTrackId } from \"../../media/primitives/select-tracks.js\";\n//#region src/playback/behaviors/select-tracks.ts\n/**\n* **Default audio/video track selection on src load / unselect on src unload.**\n* When a presentation is resolved, sets `selectedVideoTrackId` /\n* `selectedAudioTrackId` to a per-type-picker default if no selection already\n* exists. When the presentation is unset/reset (transitions back to unresolved),\n* clears the selection so a stale id from the previous source doesn't persist.\n*\n* Lifecycle-driven: each transition fires its work once. Does not police the\n* selection between transitions; external writes (user picks, ABR, programmatic\n* filter-driven re-picks) are left alone.\n*\n* Picker is config-driven: each per-type export wires a sensible default\n* (`pickAudioTrack` for audio — three-tier language-aware; `pickFirstTrackId`\n* for video) and the caller can supply their own via `config.picker` for custom\n* selection logic. The behavior's `config` is forwarded to the picker as its\n* second argument, so options like `preferredAudioLanguage` reach the picker\n* without an intermediate wrapping layer.\n*\n* Compose `selectVideoTrack` for the simple \"pick a default video track\"\n* behavior, or `switchVideoTrack` (`./track-switching.ts`) for the\n* ABR-driven variant. Compose `selectAudioTrack` for the simple default\n* pick, or `switchAudioTrack` (`./track-switching.ts`) for the\n* filter-reactive + mid-stream-flush slot-owner variant — when audio-abr\n* lands, `switchAudioTrack` extends into `switchAudioQuality`. Compose\n* only one per type — they're alternatives, not stackable (each writes\n* the same `selected*TrackId` slot). The simple variants tree-shake out\n* the heavier machinery (bandwidth estimator, quality selection, flush\n* orchestration).\n*\n* Text selection has no simple variant here — it's owned by `switchTextTrack`\n* (`./track-switching.ts`), which resolves standing `userTextTrackSelection`\n* intent against the constrained, CDN-scoped renditions.\n*/\nfunction setupTrackSelection({ state, config: { selectedKey, picker, pickerConfig } }) {\n\tconst derivedStateSignal = computed(() => isResolvedPresentation(state.presentation.get()) ? \"presentation-resolved\" : \"presentation-unresolved\");\n\treturn createMachineReactor({\n\t\tinitial: \"presentation-unresolved\",\n\t\tmonitor: () => derivedStateSignal.get(),\n\t\tstates: {\n\t\t\t\"presentation-unresolved\": {},\n\t\t\t\"presentation-resolved\": { entry: () => {\n\t\t\t\tif (!state[selectedKey].get()) {\n\t\t\t\t\tconst id = picker(state.presentation.get(), pickerConfig);\n\t\t\t\t\tif (id) state[selectedKey].set(id);\n\t\t\t\t}\n\t\t\t\treturn () => state[selectedKey].set(void 0);\n\t\t\t} }\n\t\t}\n\t});\n}\n/** Default video picker: first track in the video selection set. */\nconst defaultVideoPicker = (presentation) => pickFirstTrackId(presentation, \"video\");\n/**\n* Select a video track when a presentation loads. Clears the selection on\n* src unload.\n*\n* This is the simple, non-ABR counterpart to `switchVideoTrack` — compose\n* one or the other, not both (both write `selectedVideoTrackId`). Composing\n* `selectVideoTrack` alone tree-shakes out the ABR code path\n* (bandwidth-estimator, quality-selection); use it for sources without\n* meaningful quality variants, test setups, or players that intentionally\n* pin a quality.\n*\n* @example\n* const reactor = selectVideoTrack.setup({ state });\n*/\nconst selectVideoTrack = defineBehavior({\n\tstateKeys: [\"presentation\", \"selectedVideoTrackId\"],\n\tcontextKeys: [],\n\tsetup: ({ state, config }) => setupTrackSelection({\n\t\tstate,\n\t\tconfig: {\n\t\t\tselectedKey: VIDEO_TYPE_CONFIG.selectedKey,\n\t\t\tpicker: config?.picker ?? defaultVideoPicker,\n\t\t\tpickerConfig: config\n\t\t}\n\t})\n});\ndefineBehavior({\n\tstateKeys: [\"presentation\", \"selectedAudioTrackId\"],\n\tcontextKeys: [],\n\tsetup: ({ state, config }) => setupTrackSelection({\n\t\tstate,\n\t\tconfig: {\n\t\t\tselectedKey: AUDIO_TYPE_CONFIG.selectedKey,\n\t\t\tpicker: config?.picker ?? pickAudioTrack,\n\t\t\tpickerConfig: config\n\t\t}\n\t})\n});\n//#endregion\nexport { selectVideoTrack };\n\n//# sourceMappingURL=select-tracks.js.map","import { createComposition } from \"../../../core/composition/create-composition.js\";\nimport { makeShareSignals } from \"../../../core/composition/share-signals.js\";\nimport { loadVideoSegments } from \"../../behaviors/dom/load-segments.js\";\nimport { trackCurrentTime } from \"../../behaviors/dom/track-current-time.js\";\nimport { parseMultivariantPlaylist } from \"../../../media/hls/parse-multivariant.js\";\nimport { getResolvedSelectedTrackDuration } from \"../../../media/utils/track-selection.js\";\nimport { calculatePresentationDuration } from \"../../behaviors/calculate-presentation-duration.js\";\nimport { endOfStream } from \"../../behaviors/dom/end-of-stream.js\";\nimport { setupVideoBufferActors } from \"../../behaviors/dom/setup-buffer-actors.js\";\nimport { setupMediaSource } from \"../../behaviors/dom/setup-mediasource.js\";\nimport { updateMediaSourceDuration } from \"../../behaviors/dom/update-mediasource-duration.js\";\nimport { resolvePresentation } from \"../../behaviors/resolve-presentation.js\";\nimport { resolveVideoTrack } from \"../../behaviors/resolve-track.js\";\nimport { pickHighestResolutionVideoTrack } from \"../../../media/primitives/select-tracks.js\";\nimport { selectVideoTrack } from \"../../behaviors/select-tracks.js\";\n//#region src/playback/engines/hls/engine-background-video.ts\nconst shareSignals = makeShareSignals();\n/**\n* Create a background-video playback engine.\n*\n* Subtractive composition over the HLS engine baseline:\n* audio-side, text-side, ABR-driven, preload-monitoring, and play/seek\n* load-trigger behaviors are removed. `selectVideoTrack` (with a\n* max-resolution picker by default) replaces `switchVideoQuality`, pinning\n* a single rendition for the session. The initial state seeds\n* `loadActivated: true` so the composition behaves as if preload has\n* already been activated — appropriate for ambient / hero / GIF-replacement\n* surfaces that should start loading the moment a src is set.\n*\n* Native `loop` / `muted` / `autoplay` are adapter concerns and live on\n* `HlsBackgroundVideoMediaElement` rather than the engine.\n*\n* @example\n* ```ts\n* let signals: BackgroundVideoEngineSignals;\n* const engine = createBackgroundVideoEngine({\n* onSignalsReady: (refs) => {\n* signals = refs;\n* },\n* });\n*\n* signals.context.mediaElement.set(videoEl);\n* signals.state.presentation.set({ url: 'https://example.com/stream.m3u8' });\n*\n* await engine.destroy();\n* ```\n*/\nfunction createBackgroundVideoEngine(config = {}) {\n\tconst finalConfig = {\n\t\t...config,\n\t\tpicker: config.picker ?? pickHighestResolutionVideoTrack,\n\t\tparsePresentation: config.parsePresentation ?? parseMultivariantPlaylist,\n\t\tresolveDuration: getResolvedSelectedTrackDuration\n\t};\n\treturn createComposition([\n\t\tresolvePresentation,\n\t\tcalculatePresentationDuration,\n\t\tselectVideoTrack,\n\t\tresolveVideoTrack,\n\t\tloadVideoSegments,\n\t\tsetupMediaSource,\n\t\tupdateMediaSourceDuration,\n\t\tsetupVideoBufferActors,\n\t\ttrackCurrentTime,\n\t\tendOfStream,\n\t\tshareSignals\n\t], {\n\t\tconfig: finalConfig,\n\t\tinitialState: { loadActivated: true }\n\t});\n}\n//#endregion\nexport { createBackgroundVideoEngine };\n\n//# sourceMappingURL=engine-background-video.js.map","import { pickTrackUnderPixelArea } from \"../../../media/primitives/select-tracks.js\";\nimport { createBackgroundVideoEngine } from \"../../engines/hls/engine-background-video.js\";\n//#region src/playback/adapters/hls-background-video/adapter.ts\nconst hlsBackgroundVideoMediaDefaultProps = { src: \"\" };\n/**\n* Mixin that adds the background-video SPF playback engine to any base class,\n* for an HLS URL.\n*\n* `src` is the whole surface, and the picker always pins the top rendition on\n* offer. There is no cap of its own because the manifest is the better place to\n* narrow one: a delivery param — `?max_resolution=720p` on a Mux stream URL, for\n* one — keeps the renditions it excludes out of the manifest entirely, rather\n* than fetched-then-unpicked. Deriving a cap from the screen instead is on the\n* roadmap, and lands here when it does.\n*\n* `@videojs/spf/mux-background-video` is this same Media under a Mux-flavored\n* name — an alias, not a variant. Nothing about the surface changes with the\n* import path.\n*\n* Everything else the use case fixes rather than exposes: video-only, looping,\n* muted, autoplaying, loading as soon as there is a source. `attach` writes that\n* onto the element and nothing here declares `loop` / `muted` / `autoplay` /\n* `preload` of its own — a host-bound Media inherits all four from the host\n* already, and shadowing them with fixed values would only make reads describe\n* an intention rather than what the element is doing.\n*\n* A new src re-resolves the presentation, tearing down the state, SourceBuffers,\n* and in-flight requests the previous one built before the next begins. The\n* engine instance and the attached media element are both kept, so neither has to\n* be rewired.\n*\n* @example\n* class HlsBackgroundVideoMedia extends HlsBackgroundVideoMediaMixin(BackgroundVideoHost) {}\n*\n* const media = new HlsBackgroundVideoMedia();\n* media.attach(document.querySelector('video'));\n* media.src = 'https://stream.mux.com/PLAYBACK_ID.m3u8?max_resolution=720p';\n* media.play();\n*/\nfunction HlsBackgroundVideoMediaMixin(BaseClass) {\n\tclass HlsBackgroundVideoMediaImpl extends BaseClass {\n\t\t#engine;\n\t\t#config;\n\t\t#signals;\n\t\t/** Pending loadstart listener from a deferred play() retry, if any. */\n\t\t#loadstartListener = null;\n\t\tconstructor(...args) {\n\t\t\tsuper(...args);\n\t\t\tconst { config } = args?.[0] ?? {};\n\t\t\tthis.#config = config;\n\t\t\tthis.#engine = this.#createEngine();\n\t\t}\n\t\tget engine() {\n\t\t\treturn this.#engine;\n\t\t}\n\t\tattach(mediaElement) {\n\t\t\tsuper.attach?.(mediaElement);\n\t\t\tmediaElement.loop = true;\n\t\t\tmediaElement.muted = true;\n\t\t\tmediaElement.autoplay = true;\n\t\t\tmediaElement.preload = \"auto\";\n\t\t\tthis.#signals.context.mediaElement.set(mediaElement);\n\t\t}\n\t\tdetach() {\n\t\t\tthis.#cancelPendingPlay();\n\t\t\tthis.#signals.context.mediaElement.set(void 0);\n\t\t\tsuper.detach?.();\n\t\t}\n\t\tdestroy() {\n\t\t\tthis.#cancelPendingPlay();\n\t\t\tthis.#engine.destroy();\n\t\t}\n\t\tget src() {\n\t\t\treturn this.#signals.state.presentation.get()?.url ?? \"\";\n\t\t}\n\t\tset src(value) {\n\t\t\tif (value === this.src) return;\n\t\t\tthis.#cancelPendingPlay();\n\t\t\tthis.#signals.state.presentation.set(value ? { url: value } : void 0);\n\t\t}\n\t\tasync play() {\n\t\t\tconst mediaElement = this.#signals.context.mediaElement.get();\n\t\t\tif (!mediaElement) return Promise.reject(/* @__PURE__ */ new Error(\"HlsBackgroundVideoMediaElement: no media element attached\"));\n\t\t\ttry {\n\t\t\t\treturn await mediaElement.play();\n\t\t\t} catch (err) {\n\t\t\t\tif (this.src) return new Promise((resolve, reject) => {\n\t\t\t\t\tconst listener = () => {\n\t\t\t\t\t\tthis.#loadstartListener = null;\n\t\t\t\t\t\tmediaElement.play().then(resolve, reject);\n\t\t\t\t\t};\n\t\t\t\t\tthis.#loadstartListener = listener;\n\t\t\t\t\tmediaElement.addEventListener(\"loadstart\", listener, { once: true });\n\t\t\t\t});\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t\t#createEngine() {\n\t\t\tconst adapterPicker = (presentation) => {\n\t\t\t\treturn pickTrackUnderPixelArea((presentation.selectionSets?.find((s) => s.type === \"video\"))?.switchingSets[0]?.tracks ?? [])?.id;\n\t\t\t};\n\t\t\treturn createBackgroundVideoEngine({\n\t\t\t\tpicker: adapterPicker,\n\t\t\t\t...this.#config,\n\t\t\t\tonSignalsReady: (signals) => {\n\t\t\t\t\tthis.#signals = signals;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t#cancelPendingPlay() {\n\t\t\tif (!this.#loadstartListener) return;\n\t\t\tthis.#signals.context.mediaElement.get()?.removeEventListener(\"loadstart\", this.#loadstartListener);\n\t\t\tthis.#loadstartListener = null;\n\t\t}\n\t}\n\treturn HlsBackgroundVideoMediaImpl;\n}\n/** Standalone SPF background-video adapter with no base class. */\nvar HlsBackgroundVideoMediaElement = class extends HlsBackgroundVideoMediaMixin(class {}) {};\n//#endregion\nexport { HlsBackgroundVideoMediaElement, HlsBackgroundVideoMediaMixin, hlsBackgroundVideoMediaDefaultProps };\n\n//# sourceMappingURL=adapter.js.map","//#region src/playback/adapters/hls-background-video/host.ts\n/**\n* The `<video>` binding a background video uses: somewhere to keep the attached\n* element, and the four properties the Media fixes on it.\n*\n* That is the whole surface anything here reaches. The engine drives playback,\n* the element exposes `src` and nothing else, and the background player\n* subscribes to no store features, so nothing asks a background video for\n* `currentTime`, `play()`, picture-in-picture, fullscreen, forwarded events, or\n* media components. Holding the host to what is reachable is what keeps this\n* entry free of `@videojs/media`, and small enough to suit a component whose\n* whole pitch is its size.\n*\n* An `EventTarget`, because a Media is one: the store and the element layers\n* take anything they attach as an event source, and inheriting the three methods\n* satisfies that for free rather than by stubbing them.\n*\n* ⚠️ It still implements too little to carry the rest of the media surface, which\n* bounds what may consume it: a store feature reading a property outside this set\n* gets `undefined` rather than an error. A Media needing more of that surface\n* belongs on a host that provides it.\n*/\nvar BackgroundVideoHost = class extends EventTarget {\n\t#target = null;\n\tattach(target) {\n\t\tif (!target || this.#target === target) return;\n\t\tthis.#target = target;\n\t}\n\tdetach() {\n\t\tthis.#target = null;\n\t}\n\tget loop() {\n\t\treturn this.#target?.loop ?? false;\n\t}\n\tset loop(value) {\n\t\tif (this.#target) this.#target.loop = value;\n\t}\n\tget muted() {\n\t\treturn this.#target?.muted ?? false;\n\t}\n\tset muted(value) {\n\t\tif (this.#target) this.#target.muted = value;\n\t}\n\tget autoplay() {\n\t\treturn this.#target?.autoplay ?? false;\n\t}\n\tset autoplay(value) {\n\t\tif (this.#target) this.#target.autoplay = value;\n\t}\n\tget preload() {\n\t\treturn this.#target?.preload ?? \"metadata\";\n\t}\n\tset preload(value) {\n\t\tif (this.#target) this.#target.preload = value;\n\t}\n};\n//#endregion\nexport { BackgroundVideoHost };\n\n//# sourceMappingURL=host.js.map","import { HlsBackgroundVideoMediaMixin } from \"./adapter.js\";\nimport { BackgroundVideoHost } from \"./host.js\";\n//#region src/playback/adapters/hls-background-video/media.ts\nconst HlsBackgroundVideoMediaBase = HlsBackgroundVideoMediaMixin(BackgroundVideoHost);\n/**\n* The background-video Media, bound to a `<video>` through\n* {@link BackgroundVideoHost}.\n*\n* That host carries the attached element and the four properties `attach` fixes,\n* which is all this Media's surface needs, and it is local — so this entry has\n* no `@videojs/media` dependency.\n*\n* No `MediaTracksMixin`, unlike `HlsVideoMedia`: the engine subtracts audio and\n* text entirely and pins one video rendition for the session, so there are no\n* track lists for a consumer to project or switch between.\n*/\nvar HlsBackgroundVideoMedia = class extends HlsBackgroundVideoMediaBase {};\n//#endregion\nexport { HlsBackgroundVideoMedia };\n\n//# sourceMappingURL=media.js.map","import type { Media } from '@videojs/media/dom';\nimport { HlsBackgroundVideoMedia } from '@videojs/spf/hls-background-video';\nimport { type CustomElement, namedNodeMapToObject } from '@videojs/utils/dom';\nimport type { Constructor } from '@videojs/utils/types';\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\nimport { getTemplateHTML } from '../background-video/template';\n\n// `MediaAttachMixin` is typed as returning its base, so its `disconnectedCallback`\n// isn't visible for `super` to reach. `CustomElement` declares the lifecycle\n// callbacks this element overrides.\nconst HlsBackgroundVideoBase = MediaAttachMixin(HTMLElement) as unknown as Constructor<CustomElement>;\n\n/**\n * A muted, looping, chrome-less video over the SPF background-video engine.\n *\n * The SPF-backed counterpart to `<background-video>`, which plays its source\n * natively. This one streams HLS through the engine, which pins a single\n * rendition for the session rather than adapting, and drops audio and text\n * handling entirely — the shape an ambient hero video actually wants.\n *\n * Nearer an image than a player, and `src` is the whole surface. Replaces the\n * standalone `mux-background-video` package, whose `audio`, `debug`, `preload`,\n * and `max-resolution` attributes are all deliberately absent. Capping which\n * rendition is fetched is a delivery param on the URL — `?max_resolution=720p`\n * on a Mux stream, for one — which keeps the renditions it excludes out of the\n * manifest rather than merely unpicked; `preload` would have nothing to say,\n * since the engine loads from the moment it has a source. And unlike\n * `<background-video>` there are no `nomuted` / `noloop` / `noautoplay` opt-outs:\n * those three are what this element is for, so the adapter fixes them on at\n * attach.\n *\n * Takes no structured `source` — `src` is an HLS URL, as the package it replaces\n * required. Mux playback-ID identity, poster, and storyboard belong to\n * `<mux-video>`; none of them mean anything without controls to hang them on.\n *\n * `<mux-background-video>` is this element under the name the package it replaces\n * used. Same class, so the tag is a naming choice and nothing more.\n *\n * @example\n * ```html\n * <hls-background-video src=\"https://stream.mux.com/PLAYBACK_ID.m3u8?max_resolution=720p\">\n * <img src=\"https://image.mux.com/PLAYBACK_ID/thumbnail.webp?time=0\" alt=\"\" />\n * </hls-background-video>\n * ```\n */\n// Deliberately not `CustomMediaElement`, matching `<background-video>`: a\n// background video needs one property, not the full WHATWG media API.\nexport class HlsBackgroundVideo extends HlsBackgroundVideoBase {\n static shadowRootOptions = { mode: 'open' as ShadowRootMode };\n static getTemplateHTML = getTemplateHTML;\n\n static get observedAttributes(): string[] {\n return ['src'];\n }\n\n #media = new HlsBackgroundVideoMedia();\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n this.attachShadow((this.constructor as typeof HlsBackgroundVideo).shadowRootOptions);\n\n const attrs = {\n ...namedNodeMapToObject(this.attributes),\n muted: '',\n loop: '',\n autoplay: '',\n playsinline: '',\n disableremoteplayback: '',\n disablepictureinpicture: '',\n };\n\n this.shadowRoot!.innerHTML = getTemplateHTML(attrs);\n }\n\n // Neither Chrome nor Firefox honor a `muted` attribute set after\n // `document.createElement`, and autoplay is refused without it. Attaching is\n // what sets the property — along with the rest of the fixed behavior — so\n // nothing here needs to repeat it.\n const video = this.video;\n if (video) this.#media.attach(video);\n }\n\n /** Register the Media (not the inner `<video>`) with the provider. */\n getMediaTarget(): Media | null {\n return this.#media as unknown as Media;\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback?.();\n if (this.hasAttribute('keep-alive')) return;\n // Deferred so a synchronous reparent (remove then insert) doesn't tear down\n // the engine, matching `CustomMediaElement`.\n queueMicrotask(() => {\n if (!this.isConnected) this.#media.destroy();\n });\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void {\n if (oldValue === newValue) return;\n\n if (name === 'src') this.src = newValue ?? '';\n }\n\n /** The inner `<video>` the engine renders into. */\n get video(): HTMLVideoElement | null {\n const video = this.shadowRoot?.querySelector('video');\n return video instanceof HTMLVideoElement ? video : null;\n }\n\n /** HLS manifest URL. Assigning a new one restarts playback from scratch. */\n get src(): string {\n return this.#media.src;\n }\n\n set src(value: string) {\n this.#media.src = value;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as e,d as t,f as n,h as r,i,l as a,m as o,n as s,o as c,p as l,s as u}from"./compounds-BEO1d3ZM.js";import{i as d}from"./context-C2rsoDxk.js";import{t as f}from"./container-element-Dd0ZCdhK.js";import{n as p,r as m,t as h}from"./seek-button-element-FlgBVoGM.js";import{t as g}from"./player-BloX4l6F.js";d(g),d(f),s(),u(),a(),c(),i(),e(),d(r),d(o),d(l),d(n),d(m),d(p),d(t),d(h);
|
|
2
|
+
//# sourceMappingURL=minimal-ui-8iRZf_72.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimal-ui-
|
|
1
|
+
{"version":3,"file":"minimal-ui-8iRZf_72.js","names":[],"sources":["../src/define/audio/minimal-ui.ts"],"sourcesContent":["// Registers the audio player, container, and all audio UI custom elements\n// used by the minimal skin without creating a skin element. Use this entry\n// when building an ejected (light DOM) player layout.\nimport { MediaContainerElement } from '../../media/container-element';\nimport { BufferingIndicatorElement } from '../../ui/buffering-indicator/buffering-indicator-element';\nimport { HotkeyElement } from '../../ui/hotkey/hotkey-element';\nimport { MuteButtonElement } from '../../ui/mute-button/mute-button-element';\nimport { PlayButtonElement } from '../../ui/play-button/play-button-element';\nimport { PlaybackRateButtonElement } from '../../ui/playback-rate-button/playback-rate-button-element';\nimport { PlaybackRateRadioGroupElement } from '../../ui/playback-rate-radio-group/playback-rate-radio-group-element';\nimport { PopoverElement } from '../../ui/popover/popover-element';\nimport { SeekButtonElement } from '../../ui/seek-button/seek-button-element';\nimport { safeDefine } from '../safe-define';\nimport {\n defineErrorDialog,\n defineMenu,\n defineTime,\n defineTimeSlider,\n defineTooltip,\n defineVolumeSlider,\n} from '../ui/compounds';\n\n// Value import — player.ts body runs before this module's body.\nimport { AudioPlayerElement } from './player';\n\n// ── Registration (providers / parents first) ────────────────────────────\n\nsafeDefine(AudioPlayerElement);\nsafeDefine(MediaContainerElement);\n\n// Compound groups.\ndefineErrorDialog();\ndefineTimeSlider();\ndefineVolumeSlider();\ndefineTime();\ndefineMenu();\ndefineTooltip();\n\n// Standalone elements.\nsafeDefine(BufferingIndicatorElement);\nsafeDefine(HotkeyElement);\nsafeDefine(MuteButtonElement);\nsafeDefine(PlayButtonElement);\nsafeDefine(PlaybackRateButtonElement);\nsafeDefine(PlaybackRateRadioGroupElement);\nsafeDefine(PopoverElement);\nsafeDefine(SeekButtonElement);\n"],"mappings":"wTA2BA,EAAW,CAAkB,EAC7B,EAAW,CAAqB,EAGhC,EAAkB,EAClB,EAAiB,EACjB,EAAmB,EACnB,EAAW,EACX,EAAW,EACX,EAAc,EAGd,EAAW,CAAyB,EACpC,EAAW,CAAa,EACxB,EAAW,CAAiB,EAC5B,EAAW,CAAiB,EAC5B,EAAW,CAAyB,EACpC,EAAW,CAA6B,EACxC,EAAW,CAAc,EACzB,EAAW,CAAiB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { c as defineTooltip, d as PopoverElement, f as PlayButtonElement,
|
|
2
|
-
import { i as MediaContainerElement } from "./create-player-BHFyOnWi.js";
|
|
1
|
+
import { c as defineTooltip, d as PopoverElement, f as PlayButtonElement, h as BufferingIndicatorElement, i as defineMenu, l as defineVolumeSlider, m as HotkeyElement, n as defineErrorDialog, o as defineTime, p as MuteButtonElement, s as defineTimeSlider } from "./compounds-nk9RJtBK.js";
|
|
3
2
|
import { i as safeDefine } from "./context-OhQY847V.js";
|
|
4
|
-
import {
|
|
5
|
-
import { t as
|
|
3
|
+
import { t as MediaContainerElement } from "./container-element-HHK_KZOE.js";
|
|
4
|
+
import { n as PlaybackRateRadioGroupElement, r as PlaybackRateButtonElement, t as SeekButtonElement } from "./seek-button-element-XMTLIxZj.js";
|
|
5
|
+
import { t as AudioPlayerElement } from "./player-B2oraRyD.js";
|
|
6
6
|
|
|
7
7
|
//#region src/define/audio/minimal-ui.ts
|
|
8
8
|
safeDefine(AudioPlayerElement);
|
|
@@ -23,4 +23,4 @@ safeDefine(PopoverElement);
|
|
|
23
23
|
safeDefine(SeekButtonElement);
|
|
24
24
|
|
|
25
25
|
//#endregion
|
|
26
|
-
//# sourceMappingURL=minimal-ui
|
|
26
|
+
//# sourceMappingURL=minimal-ui-BpHxIo4z.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimal-ui
|
|
1
|
+
{"version":3,"file":"minimal-ui-BpHxIo4z.js","names":[],"sources":["../src/define/audio/minimal-ui.ts"],"sourcesContent":["// Registers the audio player, container, and all audio UI custom elements\n// used by the minimal skin without creating a skin element. Use this entry\n// when building an ejected (light DOM) player layout.\nimport { MediaContainerElement } from '../../media/container-element';\nimport { BufferingIndicatorElement } from '../../ui/buffering-indicator/buffering-indicator-element';\nimport { HotkeyElement } from '../../ui/hotkey/hotkey-element';\nimport { MuteButtonElement } from '../../ui/mute-button/mute-button-element';\nimport { PlayButtonElement } from '../../ui/play-button/play-button-element';\nimport { PlaybackRateButtonElement } from '../../ui/playback-rate-button/playback-rate-button-element';\nimport { PlaybackRateRadioGroupElement } from '../../ui/playback-rate-radio-group/playback-rate-radio-group-element';\nimport { PopoverElement } from '../../ui/popover/popover-element';\nimport { SeekButtonElement } from '../../ui/seek-button/seek-button-element';\nimport { safeDefine } from '../safe-define';\nimport {\n defineErrorDialog,\n defineMenu,\n defineTime,\n defineTimeSlider,\n defineTooltip,\n defineVolumeSlider,\n} from '../ui/compounds';\n\n// Value import — player.ts body runs before this module's body.\nimport { AudioPlayerElement } from './player';\n\n// ── Registration (providers / parents first) ────────────────────────────\n\nsafeDefine(AudioPlayerElement);\nsafeDefine(MediaContainerElement);\n\n// Compound groups.\ndefineErrorDialog();\ndefineTimeSlider();\ndefineVolumeSlider();\ndefineTime();\ndefineMenu();\ndefineTooltip();\n\n// Standalone elements.\nsafeDefine(BufferingIndicatorElement);\nsafeDefine(HotkeyElement);\nsafeDefine(MuteButtonElement);\nsafeDefine(PlayButtonElement);\nsafeDefine(PlaybackRateButtonElement);\nsafeDefine(PlaybackRateRadioGroupElement);\nsafeDefine(PopoverElement);\nsafeDefine(SeekButtonElement);\n"],"mappings":";;;;;;;AA2BA,WAAW,kBAAkB;AAC7B,WAAW,qBAAqB;AAGhC,kBAAkB;AAClB,iBAAiB;AACjB,mBAAmB;AACnB,WAAW;AACX,WAAW;AACX,cAAc;AAGd,WAAW,yBAAyB;AACpC,WAAW,aAAa;AACxB,WAAW,iBAAiB;AAC5B,WAAW,iBAAiB;AAC5B,WAAW,yBAAyB;AACpC,WAAW,6BAA6B;AACxC,WAAW,cAAc;AACzB,WAAW,iBAAiB"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { c as defineTooltip, d as PopoverElement, f as PlayButtonElement,
|
|
2
|
-
import { i as MediaContainerElement } from "./create-player-BHFyOnWi.js";
|
|
1
|
+
import { c as defineTooltip, d as PopoverElement, f as PlayButtonElement, h as BufferingIndicatorElement, i as defineMenu, l as defineVolumeSlider, m as HotkeyElement, n as defineErrorDialog, o as defineTime, p as MuteButtonElement, r as defineInputIndicators, s as defineTimeSlider, t as defineControls } from "./compounds-nk9RJtBK.js";
|
|
3
2
|
import { i as safeDefine } from "./context-OhQY847V.js";
|
|
4
|
-
import "./
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { n as
|
|
9
|
-
import { t as
|
|
3
|
+
import { t as MediaContainerElement } from "./container-element-HHK_KZOE.js";
|
|
4
|
+
import "./i18n-Ch4t6EjV.js";
|
|
5
|
+
import { t as GestureElement } from "./gesture-element-6Ld1YwIL.js";
|
|
6
|
+
import { i as AudioTrackRadioGroupElement, n as TimeSliderChapterTitleElement, r as QualityRadioGroupElement, t as TimeSliderChaptersElement } from "./time-slider-chapters-element-DJ0abZXI.js";
|
|
7
|
+
import { a as CaptionsRadioGroupElement, i as CastButtonElement, n as PiPButtonElement, o as CaptionsButtonElement, r as FullscreenButtonElement, s as AirPlayButtonElement, t as PosterElement } from "./poster-element-BGr1VQJB.js";
|
|
8
|
+
import { n as PlaybackRateRadioGroupElement, r as PlaybackRateButtonElement, t as SeekButtonElement } from "./seek-button-element-XMTLIxZj.js";
|
|
9
|
+
import { t as VideoPlayerElement } from "./player-CKTAtwit.js";
|
|
10
10
|
|
|
11
11
|
//#region src/define/video/minimal-ui.ts
|
|
12
12
|
safeDefine(VideoPlayerElement);
|
|
@@ -41,4 +41,4 @@ safeDefine(QualityRadioGroupElement);
|
|
|
41
41
|
safeDefine(SeekButtonElement);
|
|
42
42
|
|
|
43
43
|
//#endregion
|
|
44
|
-
//# sourceMappingURL=minimal-ui-
|
|
44
|
+
//# sourceMappingURL=minimal-ui-CRKvUmB8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimal-ui-
|
|
1
|
+
{"version":3,"file":"minimal-ui-CRKvUmB8.js","names":[],"sources":["../src/define/video/minimal-ui.ts"],"sourcesContent":["// Registers the video player, container, and all video UI custom elements\n// used by the minimal skin without creating a skin element. Use this entry\n// when building an ejected (light DOM) player layout.\n\nimport { MediaContainerElement } from '../../media/container-element';\nimport { AirPlayButtonElement } from '../../ui/airplay-button/airplay-button-element';\nimport { AudioTrackRadioGroupElement } from '../../ui/audio-track-radio-group/audio-track-radio-group-element';\nimport { BufferingIndicatorElement } from '../../ui/buffering-indicator/buffering-indicator-element';\nimport { CaptionsButtonElement } from '../../ui/captions-button/captions-button-element';\nimport { CaptionsRadioGroupElement } from '../../ui/captions-radio-group/captions-radio-group-element';\nimport { CastButtonElement } from '../../ui/cast-button/cast-button-element';\nimport { FullscreenButtonElement } from '../../ui/fullscreen-button/fullscreen-button-element';\nimport { GestureElement } from '../../ui/gesture/gesture-element';\nimport { HotkeyElement } from '../../ui/hotkey/hotkey-element';\nimport { MuteButtonElement } from '../../ui/mute-button/mute-button-element';\nimport { PiPButtonElement } from '../../ui/pip-button/pip-button-element';\nimport { PlayButtonElement } from '../../ui/play-button/play-button-element';\nimport { PlaybackRateButtonElement } from '../../ui/playback-rate-button/playback-rate-button-element';\nimport { PlaybackRateRadioGroupElement } from '../../ui/playback-rate-radio-group/playback-rate-radio-group-element';\nimport { PopoverElement } from '../../ui/popover/popover-element';\nimport { PosterElement } from '../../ui/poster/poster-element';\nimport { QualityRadioGroupElement } from '../../ui/quality-radio-group/quality-radio-group-element';\nimport { SeekButtonElement } from '../../ui/seek-button/seek-button-element';\nimport { TimeSliderChapterTitleElement } from '../../ui/time-slider/time-slider-chapters/time-slider-chapter-title-element';\nimport { TimeSliderChaptersElement } from '../../ui/time-slider/time-slider-chapters/time-slider-chapters-element';\nimport { safeDefine } from '../safe-define';\nimport {\n defineControls,\n defineErrorDialog,\n defineInputIndicators,\n defineMenu,\n defineTime,\n defineTimeSlider,\n defineTooltip,\n defineVolumeSlider,\n} from '../ui/compounds';\nimport '../i18n';\n\n// Value import — player.ts body runs before this module's body.\nimport { VideoPlayerElement } from './player';\n\n// ── Registration (providers / parents first) ────────────────────────────\n\nsafeDefine(VideoPlayerElement);\nsafeDefine(MediaContainerElement);\n\n// Compound groups.\ndefineControls();\ndefineErrorDialog();\ndefineInputIndicators();\ndefineTimeSlider();\nsafeDefine(TimeSliderChaptersElement);\nsafeDefine(TimeSliderChapterTitleElement);\ndefineVolumeSlider();\ndefineTime();\ndefineMenu();\ndefineTooltip();\n\n// Standalone elements.\nsafeDefine(AirPlayButtonElement);\nsafeDefine(AudioTrackRadioGroupElement);\nsafeDefine(BufferingIndicatorElement);\nsafeDefine(CaptionsButtonElement);\nsafeDefine(CastButtonElement);\nsafeDefine(FullscreenButtonElement);\nsafeDefine(GestureElement);\nsafeDefine(HotkeyElement);\nsafeDefine(MuteButtonElement);\nsafeDefine(PiPButtonElement);\nsafeDefine(PlayButtonElement);\nsafeDefine(PlaybackRateButtonElement);\nsafeDefine(PlaybackRateRadioGroupElement);\nsafeDefine(CaptionsRadioGroupElement);\nsafeDefine(PopoverElement);\nsafeDefine(PosterElement);\nsafeDefine(QualityRadioGroupElement);\nsafeDefine(SeekButtonElement);\n"],"mappings":";;;;;;;;;;;AA2CA,WAAW,kBAAkB;AAC7B,WAAW,qBAAqB;AAGhC,eAAe;AACf,kBAAkB;AAClB,sBAAsB;AACtB,iBAAiB;AACjB,WAAW,yBAAyB;AACpC,WAAW,6BAA6B;AACxC,mBAAmB;AACnB,WAAW;AACX,WAAW;AACX,cAAc;AAGd,WAAW,oBAAoB;AAC/B,WAAW,2BAA2B;AACtC,WAAW,yBAAyB;AACpC,WAAW,qBAAqB;AAChC,WAAW,iBAAiB;AAC5B,WAAW,uBAAuB;AAClC,WAAW,cAAc;AACzB,WAAW,aAAa;AACxB,WAAW,iBAAiB;AAC5B,WAAW,gBAAgB;AAC3B,WAAW,iBAAiB;AAC5B,WAAW,yBAAyB;AACpC,WAAW,6BAA6B;AACxC,WAAW,yBAAyB;AACpC,WAAW,cAAc;AACzB,WAAW,aAAa;AACxB,WAAW,wBAAwB;AACnC,WAAW,iBAAiB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as e,d as t,f as n,h as r,i,l as a,m as o,n as s,o as c,p as l,r as u,s as d,t as f}from"./compounds-BEO1d3ZM.js";import{i as p}from"./context-C2rsoDxk.js";import{t as m}from"./container-element-Dd0ZCdhK.js";import"./i18n-Dc7WM2xd.js";import{t as h}from"./gesture-element-BC48ucj9.js";import{i as g,n as _,r as v,t as y}from"./time-slider-chapters-element-DW8YyJn8.js";import{a as b,i as x,n as S,o as C,r as w,s as T,t as E}from"./poster-element-DBmgOyep.js";import{n as D,r as O,t as k}from"./seek-button-element-FlgBVoGM.js";import{t as A}from"./player-rCFqzWrA.js";p(A),p(m),f(),s(),u(),d(),p(y),p(_),a(),c(),i(),e(),p(T),p(g),p(r),p(C),p(x),p(w),p(h),p(o),p(l),p(S),p(n),p(O),p(D),p(b),p(t),p(E),p(v),p(k);
|
|
2
|
+
//# sourceMappingURL=minimal-ui-Et2Wcn7r.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimal-ui-
|
|
1
|
+
{"version":3,"file":"minimal-ui-Et2Wcn7r.js","names":[],"sources":["../src/define/video/minimal-ui.ts"],"sourcesContent":["// Registers the video player, container, and all video UI custom elements\n// used by the minimal skin without creating a skin element. Use this entry\n// when building an ejected (light DOM) player layout.\n\nimport { MediaContainerElement } from '../../media/container-element';\nimport { AirPlayButtonElement } from '../../ui/airplay-button/airplay-button-element';\nimport { AudioTrackRadioGroupElement } from '../../ui/audio-track-radio-group/audio-track-radio-group-element';\nimport { BufferingIndicatorElement } from '../../ui/buffering-indicator/buffering-indicator-element';\nimport { CaptionsButtonElement } from '../../ui/captions-button/captions-button-element';\nimport { CaptionsRadioGroupElement } from '../../ui/captions-radio-group/captions-radio-group-element';\nimport { CastButtonElement } from '../../ui/cast-button/cast-button-element';\nimport { FullscreenButtonElement } from '../../ui/fullscreen-button/fullscreen-button-element';\nimport { GestureElement } from '../../ui/gesture/gesture-element';\nimport { HotkeyElement } from '../../ui/hotkey/hotkey-element';\nimport { MuteButtonElement } from '../../ui/mute-button/mute-button-element';\nimport { PiPButtonElement } from '../../ui/pip-button/pip-button-element';\nimport { PlayButtonElement } from '../../ui/play-button/play-button-element';\nimport { PlaybackRateButtonElement } from '../../ui/playback-rate-button/playback-rate-button-element';\nimport { PlaybackRateRadioGroupElement } from '../../ui/playback-rate-radio-group/playback-rate-radio-group-element';\nimport { PopoverElement } from '../../ui/popover/popover-element';\nimport { PosterElement } from '../../ui/poster/poster-element';\nimport { QualityRadioGroupElement } from '../../ui/quality-radio-group/quality-radio-group-element';\nimport { SeekButtonElement } from '../../ui/seek-button/seek-button-element';\nimport { TimeSliderChapterTitleElement } from '../../ui/time-slider/time-slider-chapters/time-slider-chapter-title-element';\nimport { TimeSliderChaptersElement } from '../../ui/time-slider/time-slider-chapters/time-slider-chapters-element';\nimport { safeDefine } from '../safe-define';\nimport {\n defineControls,\n defineErrorDialog,\n defineInputIndicators,\n defineMenu,\n defineTime,\n defineTimeSlider,\n defineTooltip,\n defineVolumeSlider,\n} from '../ui/compounds';\nimport '../i18n';\n\n// Value import — player.ts body runs before this module's body.\nimport { VideoPlayerElement } from './player';\n\n// ── Registration (providers / parents first) ────────────────────────────\n\nsafeDefine(VideoPlayerElement);\nsafeDefine(MediaContainerElement);\n\n// Compound groups.\ndefineControls();\ndefineErrorDialog();\ndefineInputIndicators();\ndefineTimeSlider();\nsafeDefine(TimeSliderChaptersElement);\nsafeDefine(TimeSliderChapterTitleElement);\ndefineVolumeSlider();\ndefineTime();\ndefineMenu();\ndefineTooltip();\n\n// Standalone elements.\nsafeDefine(AirPlayButtonElement);\nsafeDefine(AudioTrackRadioGroupElement);\nsafeDefine(BufferingIndicatorElement);\nsafeDefine(CaptionsButtonElement);\nsafeDefine(CastButtonElement);\nsafeDefine(FullscreenButtonElement);\nsafeDefine(GestureElement);\nsafeDefine(HotkeyElement);\nsafeDefine(MuteButtonElement);\nsafeDefine(PiPButtonElement);\nsafeDefine(PlayButtonElement);\nsafeDefine(PlaybackRateButtonElement);\nsafeDefine(PlaybackRateRadioGroupElement);\nsafeDefine(CaptionsRadioGroupElement);\nsafeDefine(PopoverElement);\nsafeDefine(PosterElement);\nsafeDefine(QualityRadioGroupElement);\nsafeDefine(SeekButtonElement);\n"],"mappings":"kkBA2CA,EAAW,CAAkB,EAC7B,EAAW,CAAqB,EAGhC,EAAe,EACf,EAAkB,EAClB,EAAsB,EACtB,EAAiB,EACjB,EAAW,CAAyB,EACpC,EAAW,CAA6B,EACxC,EAAmB,EACnB,EAAW,EACX,EAAW,EACX,EAAc,EAGd,EAAW,CAAoB,EAC/B,EAAW,CAA2B,EACtC,EAAW,CAAyB,EACpC,EAAW,CAAqB,EAChC,EAAW,CAAiB,EAC5B,EAAW,CAAuB,EAClC,EAAW,CAAc,EACzB,EAAW,CAAa,EACxB,EAAW,CAAiB,EAC5B,EAAW,CAAgB,EAC3B,EAAW,CAAiB,EAC5B,EAAW,CAAyB,EACpC,EAAW,CAA6B,EACxC,EAAW,CAAyB,EACpC,EAAW,CAAc,EACzB,EAAW,CAAa,EACxB,EAAW,CAAwB,EACnC,EAAW,CAAiB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,t}from"./predicate-LbFu-fPH.js";const n=new WeakMap;function r(e){return n.get(e)??i(e,{})}function i(e,t){let r=n.get(e);return r||n.set(e,r={}),Object.assign(r,t)}var a=class extends Event{rendition;constructor(e,t){super(e),this.rendition=t.rendition}};function o(e,t){let n=r(e).media?.deref()?.audioRenditions;r(t).media=r(e).media,r(t).track=e;let i=r(e).renditionSet;i.add(t);let o=i.size-1;o in u.prototype||Object.defineProperty(u.prototype,o,{get(){return l(this)[o]}}),queueMicrotask(()=>{!n||!e.enabled||n.dispatchEvent(new a(`addrendition`,{rendition:t}))})}function s(e){let t=r(e).media?.deref()?.audioRenditions,n=r(e).track;r(n).renditionSet.delete(e),queueMicrotask(()=>{!t||!n.enabled||t.dispatchEvent(new a(`removerendition`,{rendition:e}))})}function c(e){let t=r(e).media?.deref()?.audioRenditions;!t||r(t).changeRequested||(r(t).changeRequested=!0,queueMicrotask(()=>{delete r(t).changeRequested,r(e).track.enabled&&t.dispatchEvent(new Event(`change`))}))}function l(e){let t=r(e).media?.deref();return t?[...t.audioTracks].filter(e=>e.enabled).flatMap(e=>[...r(e).renditionSet]):[]}var u=class extends EventTarget{#e;#t;#n;[Symbol.iterator](){return l(this).values()}get length(){return l(this).length}getRenditionById(e){return l(this).find(t=>`${t.id}`==`${e}`)??null}get selectedIndex(){return l(this).findIndex(e=>e.selected)}set selectedIndex(e){for(let[t,n]of l(this).entries())n.selected=t===e}get onaddrendition(){return this.#e}set onaddrendition(t){this.#e&&=(this.removeEventListener(`addrendition`,this.#e),void 0),e(t)&&(this.#e=t,this.addEventListener(`addrendition`,t))}get onremoverendition(){return this.#t}set onremoverendition(t){this.#t&&=(this.removeEventListener(`removerendition`,this.#t),void 0),e(t)&&(this.#t=t,this.addEventListener(`removerendition`,t))}get onchange(){return this.#n}set onchange(t){this.#n&&=(this.removeEventListener(`change`,this.#n),void 0),e(t)&&(this.#n=t,this.addEventListener(`change`,t))}},d=class extends Event{track;constructor(e,t){super(e),this.track=t.track}};function f(e,t){let n=e.audioTracks;r(t).media=new WeakRef(e),r(t).renditionSet||(r(t).renditionSet=new Set);let i=r(n).trackSet;i.add(t);let a=i.size-1;a in h.prototype||Object.defineProperty(h.prototype,a,{get(){return[...r(this).trackSet][a]}}),queueMicrotask(()=>{n.dispatchEvent(new d(`addtrack`,{track:t}))})}function p(e){let t=r(e).media?.deref()?.audioTracks;t&&r(t).trackSet.delete(e)&&queueMicrotask(()=>{t.dispatchEvent(new d(`removetrack`,{track:e}))})}function m(e){let t=r(e).media?.deref()?.audioTracks;!t||r(t).changeRequested||(r(t).changeRequested=!0,queueMicrotask(()=>{delete r(t).changeRequested,t.dispatchEvent(new Event(`change`))}))}var h=class extends EventTarget{#e;#t;#n;constructor(){super(),r(this).trackSet=new Set}get#r(){return r(this).trackSet}[Symbol.iterator](){return this.#r.values()}get length(){return this.#r.size}getTrackById(e){return[...this.#r].find(t=>t.id===e)??null}get onaddtrack(){return this.#e}set onaddtrack(t){this.#e&&=(this.removeEventListener(`addtrack`,this.#e),void 0),e(t)&&(this.#e=t,this.addEventListener(`addtrack`,t))}get onremovetrack(){return this.#t}set onremovetrack(t){this.#t&&=(this.removeEventListener(`removetrack`,this.#t),void 0),e(t)&&(this.#t=t,this.addEventListener(`removetrack`,t))}get onchange(){return this.#n}set onchange(t){this.#n&&=(this.removeEventListener(`change`,this.#n),void 0),e(t)&&(this.#n=t,this.addEventListener(`change`,t))}},g=class{src;id;bitrate;codec;#e=!1;get selected(){return this.#e}set selected(e){this.#e!==e&&(this.#e=e,c(this))}},_=class{id;kind;label=``;language=``;sourceBuffer;#e=!1;addRendition(e,t,n){let r=new g;return r.src=e,r.codec=t,r.bitrate=n,o(this,r),r}removeRendition(e){s(e)}get enabled(){return this.#e}set enabled(e){this.#e!==e&&(this.#e=e,m(this))}};function v(e,t){let n=r(e).media?.deref()?.videoRenditions;r(t).media=r(e).media,r(t).track=e;let i=r(e).renditionSet;i.add(t);let o=i.size-1;o in C.prototype||Object.defineProperty(C.prototype,o,{get(){return S(this)[o]}}),queueMicrotask(()=>{!n||!e.selected||n.dispatchEvent(new a(`addrendition`,{rendition:t}))})}function y(e){let t=r(e).media?.deref()?.videoRenditions,n=r(e).track;r(n).renditionSet.delete(e),queueMicrotask(()=>{!t||!n.selected||t.dispatchEvent(new a(`removerendition`,{rendition:e}))})}function b(e){let t=r(e).media?.deref()?.videoRenditions;!t||r(t).changeRequested||(r(t).changeRequested=!0,queueMicrotask(()=>{delete r(t).changeRequested,r(e).track.selected&&t.dispatchEvent(new Event(`change`))}))}function x(e){let t=r(e).media?.deref()?.videoRenditions;!t||r(t).activeChangeRequested||(r(t).activeChangeRequested=!0,queueMicrotask(()=>{delete r(t).activeChangeRequested,r(e).track.selected&&t.dispatchEvent(new Event(`activechange`))}))}function S(e){let t=r(e).media?.deref();return t?[...t.videoTracks].filter(e=>e.selected).flatMap(e=>[...r(e).renditionSet]):[]}var C=class extends EventTarget{#e;#t;#n;[Symbol.iterator](){return S(this).values()}get length(){return S(this).length}getRenditionById(e){return S(this).find(t=>`${t.id}`==`${e}`)??null}get selectedIndex(){return S(this).findIndex(e=>e.selected)}set selectedIndex(e){for(let[t,n]of S(this).entries())n.selected=t===e}get onaddrendition(){return this.#e}set onaddrendition(t){this.#e&&=(this.removeEventListener(`addrendition`,this.#e),void 0),e(t)&&(this.#e=t,this.addEventListener(`addrendition`,t))}get onremoverendition(){return this.#t}set onremoverendition(t){this.#t&&=(this.removeEventListener(`removerendition`,this.#t),void 0),e(t)&&(this.#t=t,this.addEventListener(`removerendition`,t))}get onchange(){return this.#n}set onchange(t){this.#n&&=(this.removeEventListener(`change`,this.#n),void 0),e(t)&&(this.#n=t,this.addEventListener(`change`,t))}};function w(e,t){let n=e.videoTracks;r(t).media=new WeakRef(e),r(t).renditionSet||(r(t).renditionSet=new Set);let i=r(n).trackSet;i.add(t);let a=i.size-1;a in D.prototype||Object.defineProperty(D.prototype,a,{get(){return[...r(this).trackSet][a]}}),queueMicrotask(()=>{n.dispatchEvent(new d(`addtrack`,{track:t}))})}function T(e){let t=r(e).media?.deref()?.videoTracks;t&&r(t).trackSet.delete(e)&&queueMicrotask(()=>{t.dispatchEvent(new d(`removetrack`,{track:e}))})}function E(e){let t=r(e).media?.deref()?.videoTracks??[],n=!1;for(let r of t)r!==e&&(r.selected=!1,n=!0);n&&(r(t).changeRequested||(r(t).changeRequested=!0,queueMicrotask(()=>{delete r(t).changeRequested,t.dispatchEvent(new Event(`change`))})))}var D=class extends EventTarget{#e;#t;#n;constructor(){super(),r(this).trackSet=new Set}get#r(){return r(this).trackSet}[Symbol.iterator](){return this.#r.values()}get length(){return this.#r.size}getTrackById(e){return[...this.#r].find(t=>t.id===e)??null}get selectedIndex(){return[...this.#r].findIndex(e=>e.selected)}get onaddtrack(){return this.#e}set onaddtrack(t){this.#e&&=(this.removeEventListener(`addtrack`,this.#e),void 0),e(t)&&(this.#e=t,this.addEventListener(`addtrack`,t))}get onremovetrack(){return this.#t}set onremovetrack(t){this.#t&&=(this.removeEventListener(`removetrack`,this.#t),void 0),e(t)&&(this.#t=t,this.addEventListener(`removetrack`,t))}get onchange(){return this.#n}set onchange(t){this.#n&&=(this.removeEventListener(`change`,this.#n),void 0),e(t)&&(this.#n=t,this.addEventListener(`change`,t))}},O=class{src;id;width;height;bitrate;frameRate;codec;#e=!1;#t=!1;get selected(){return this.#e}set selected(e){this.#e!==e&&(this.#e=e,b(this))}get active(){return this.#t}set active(e){this.#t!==e&&(this.#t=e,x(this))}},k=class{id;kind;label=``;language=``;sourceBuffer;#e=!1;addRendition(e,t,n,r,i,a){let o=new O;return o.src=e,o.width=t,o.height=n,o.frameRate=a,o.bitrate=i,o.codec=r,v(this,o),o}removeRendition(e){y(e)}get selected(){return this.#e}set selected(e){this.#e!==e&&(this.#e=e,e===!0&&E(this))}};const A=globalThis.HTMLMediaElement,j=L(A,`video`),M=L(A,`audio`);function N(e){if(!e?.prototype)return e;let t=e.prototype,n=L(e,`video`);(!n||`${n}`.includes(`[native code]`))&&Object.defineProperty(t,"videoTracks",{get(){return z(this)}});let i=L(e,`audio`);if((!i||`${i}`.includes(`[native code]`))&&Object.defineProperty(t,"audioTracks",{get(){return B(this)}}),P(t,`addVideoTrack`)||(t.addVideoTrack=function(e,t=``,n=``){let r=new k;return r.kind=e,r.label=t,r.language=n,w(this,r),r}),P(t,`removeVideoTrack`)||(t.removeVideoTrack=T),P(t,`addAudioTrack`)||(t.addAudioTrack=function(e,t=``,n=``){let r=new _;return r.kind=e,r.label=t,r.language=n,f(this,r),r}),P(t,`removeAudioTrack`)||(t.removeAudioTrack=p),!P(t,`detach`)){let e=t.detach;t.detach=function(){let t=r(this);t.videoTracksCleanup?.abort(),t.audioTracksCleanup?.abort(),delete t.videoTracks,delete t.audioTracks,delete t.videoTracksCleanup,delete t.audioTracksCleanup,e?.call(this)}}return P(t,`videoRenditions`)||Object.defineProperty(t,"videoRenditions",{get(){return F(this)}}),P(t,`audioRenditions`)||Object.defineProperty(t,"audioRenditions",{get(){return I(this)}}),e}function P(e,t){return Object.hasOwn(e,t)}function F(e){let t=r(e).videoRenditions;return t||(t=new C,r(t).media=new WeakRef(e),r(e).videoRenditions=t),t}function I(e){let t=r(e).audioRenditions;return t||(t=new u,r(t).media=new WeakRef(e),r(e).audioRenditions=t),t}function L(e,t){if(e?.prototype)return Object.getOwnPropertyDescriptor(e.prototype,`${t}Tracks`)?.get}function R(e){return t(e,[`addEventListener`,`removeEventListener`])}function z(e){let t=r(e).videoTracks;if(!t){t=new D,r(e).videoTracks=t;let n=e.target,i=j&&n?j.call(n):void 0;if(R(i)){let n=t;for(let t of i)w(e,t);let a=()=>{n.dispatchEvent(new Event(`change`))},o=t=>{[...n].some(e=>e instanceof k)||w(e,t.track)},s=e=>{T(e.track)},c=e=>{if(e.track instanceof k)for(let e of i)T(e)},l=new AbortController,{signal:u}=l;r(e).videoTracksCleanup=l,i.addEventListener(`change`,a,{signal:u}),i.addEventListener(`addtrack`,o,{signal:u}),i.addEventListener(`removetrack`,s,{signal:u}),n.addEventListener(`addtrack`,c,{signal:u})}}return t}function B(e){let t=r(e).audioTracks;if(!t){t=new h,r(e).audioTracks=t;let n=e.target,i=M&&n?M.call(n):void 0;if(R(i)){let n=t;for(let t of i)f(e,t);let a=()=>{n.dispatchEvent(new Event(`change`))},o=t=>{[...n].some(e=>e instanceof _)||f(e,t.track)},s=e=>{p(e.track)},c=e=>{if(e.track instanceof _)for(let e of i)p(e)},l=new AbortController,{signal:u}=l;r(e).audioTracksCleanup=l,i.addEventListener(`change`,a,{signal:u}),i.addEventListener(`addtrack`,o,{signal:u}),i.addEventListener(`removetrack`,s,{signal:u}),n.addEventListener(`addtrack`,c,{signal:u})}}return t}export{N as t};
|
|
2
|
+
//# sourceMappingURL=mixin-BqN0V06a.js.map
|