@videojs/html 10.0.0-beta.27 → 10.0.0-beta.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cdn/{adapter-XTen-YVQ.js → adapter-CEnNWvii.js} +17 -4
- package/cdn/adapter-CEnNWvii.js.map +1 -0
- package/cdn/adapter-DaKW8NzI.js +2 -0
- package/cdn/adapter-DaKW8NzI.js.map +1 -0
- package/cdn/audio-headless.dev.js +1 -1
- package/cdn/audio-headless.js +1 -1
- package/cdn/audio-minimal-ui.dev.js +2 -2
- package/cdn/audio-minimal-ui.js +1 -1
- package/cdn/audio-minimal.dev.js +5 -5
- package/cdn/audio-minimal.dev.js.map +1 -1
- package/cdn/audio-minimal.js +1 -1
- package/cdn/audio-minimal.js.map +1 -1
- package/cdn/audio-ui.dev.js +2 -2
- package/cdn/audio-ui.js +1 -1
- package/cdn/audio.dev.js +5 -5
- package/cdn/audio.dev.js.map +1 -1
- package/cdn/audio.js +1 -1
- package/cdn/audio.js.map +1 -1
- package/cdn/background-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-C4YYLyL2.js +8 -0
- package/cdn/compounds-C4YYLyL2.js.map +1 -0
- package/cdn/{compounds-CCvdpvge.js → compounds-C73u1MeO.js} +68 -71
- package/cdn/compounds-C73u1MeO.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-BU8LDJDL.js +2 -0
- package/cdn/create-player-BU8LDJDL.js.map +1 -0
- package/cdn/{create-player-BHFyOnWi.js → create-player-Db1CIvlK.js} +76 -424
- package/cdn/create-player-Db1CIvlK.js.map +1 -0
- package/cdn/{default-BqQDVloS.js → default-A3aM0skz.js} +2 -2
- package/cdn/default-A3aM0skz.js.map +1 -0
- package/cdn/default-BDyhiTCm.js +2 -0
- package/cdn/default-BDyhiTCm.js.map +1 -0
- package/cdn/{default-I2LasfxC.js → default-C1_k1NeB.js} +2 -2
- package/cdn/default-C1_k1NeB.js.map +1 -0
- package/cdn/default-DHrMd4ie.js +2 -0
- package/cdn/default-DHrMd4ie.js.map +1 -0
- package/cdn/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/error-surface-BID4D3DW.js +59 -0
- package/cdn/error-surface-BID4D3DW.js.map +1 -0
- package/cdn/{select-tracks-nRPBa1NC.js → error-surface-D0bo71gD.js} +442 -48
- package/cdn/error-surface-D0bo71gD.js.map +1 -0
- package/cdn/{gesture-element-BNfMI8eh.js → gesture-element-CeRy1IVs.js} +2 -2
- package/cdn/gesture-element-CeRy1IVs.js.map +1 -0
- package/cdn/{gesture-element-CG-Sx_5t.js → gesture-element-DB67OYCE.js} +3 -3
- package/cdn/gesture-element-DB67OYCE.js.map +1 -0
- package/cdn/hls-js-CiE4wOrG.js +2 -0
- package/cdn/{hls-js-6lW7L4th.js.map → hls-js-CiE4wOrG.js.map} +1 -1
- package/cdn/hls-js-DBKRCbQm.js +2 -0
- package/cdn/{hls-js-DCQzjzB5.js.map → hls-js-DBKRCbQm.js.map} +1 -1
- package/cdn/{hls-js-g1zdcyvE.js → hls-js-DX2NGCAr.js} +3 -2
- package/cdn/{hls-js-g1zdcyvE.js.map → hls-js-DX2NGCAr.js.map} +1 -1
- package/cdn/{hls-js-Cwj8UBx9.js → hls-js-JeH8yvsP.js} +3 -2
- package/cdn/{hls-js-Cwj8UBx9.js.map → hls-js-JeH8yvsP.js.map} +1 -1
- package/cdn/i18n-CE4KxKuj.js +2 -0
- package/cdn/i18n-CE4KxKuj.js.map +1 -0
- package/cdn/i18n-CpBDXf6M.js +2 -0
- package/cdn/{i18n-DfKGl5Rh.js.map → i18n-CpBDXf6M.js.map} +1 -1
- package/cdn/{i18n-Mtlmj1AA.js → i18n-D0nhPa0m.js} +2 -2
- package/cdn/{i18n-Mtlmj1AA.js.map → i18n-D0nhPa0m.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-Co8z2LkI.js +2 -0
- package/cdn/{live-button-element-CWfkQUoy.js.map → live-button-element-Co8z2LkI.js.map} +1 -1
- package/cdn/{live-button-element-B_y-ZJBy.js → live-button-element-zE-8uoR2.js} +5 -4
- package/cdn/live-button-element-zE-8uoR2.js.map +1 -0
- package/cdn/live-video-minimal.dev.js +12 -10
- 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 +13 -11
- 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 +2 -1
- 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 +3 -2
- 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 +3 -2
- 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 +3011 -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-Uxm0d3Vx.js → media-BI8caj07.js} +3 -3
- package/cdn/{media-Uxm0d3Vx.js.map → media-BI8caj07.js.map} +1 -1
- package/cdn/{media-B_gQXwri.js → media-BNuI0Im7.js} +30 -8
- package/cdn/media-BNuI0Im7.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-CQxFuDcv.js +2 -0
- package/cdn/{media-CbWsJJhU.js.map → media-CQxFuDcv.js.map} +1 -1
- package/cdn/media-CanBm0Jh.js +41 -0
- package/cdn/media-CanBm0Jh.js.map +1 -0
- package/cdn/media-D4tG62L5.js +2 -0
- package/cdn/{media-BTipOcKo.js.map → media-D4tG62L5.js.map} +1 -1
- package/cdn/{media-DRo3n8tM.js → media-DI6DvYm3.js} +4 -4
- package/cdn/{media-DRo3n8tM.js.map → media-DI6DvYm3.js.map} +1 -1
- package/cdn/media-DU3Xf5XR.js +2 -0
- package/cdn/media-DU3Xf5XR.js.map +1 -0
- package/cdn/media-mYKOAsk3.js +825 -0
- package/cdn/media-mYKOAsk3.js.map +1 -0
- package/cdn/media-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-zReLnePj.js +2 -0
- package/cdn/media-zReLnePj.js.map +1 -0
- package/cdn/{minimal-DQCLKRyR.js → minimal-3OmH0xQS.js} +2 -2
- package/cdn/minimal-3OmH0xQS.js.map +1 -0
- package/cdn/{minimal-DLosvq31.js → minimal-6w_Vyyl9.js} +2 -2
- package/cdn/minimal-6w_Vyyl9.js.map +1 -0
- package/cdn/minimal-BWLTn7oQ.js +2 -0
- package/cdn/minimal-BWLTn7oQ.js.map +1 -0
- package/cdn/minimal-DIGrklyh.js +2 -0
- package/cdn/minimal-DIGrklyh.js.map +1 -0
- package/cdn/{minimal-ui-Bxcpf5Mb.js → minimal-ui-BCIESK8f.js} +9 -9
- package/cdn/{minimal-ui-Bxcpf5Mb.js.map → minimal-ui-BCIESK8f.js.map} +1 -1
- package/cdn/minimal-ui-BXrq3z4U.js +2 -0
- package/cdn/{minimal-ui-BVKu9LWj.js.map → minimal-ui-BXrq3z4U.js.map} +1 -1
- package/cdn/{minimal-ui--JsmpU2q.js → minimal-ui-DEalpMk6.js} +5 -5
- package/cdn/{minimal-ui--JsmpU2q.js.map → minimal-ui-DEalpMk6.js.map} +1 -1
- package/cdn/minimal-ui-vY3QgohH.js +2 -0
- package/cdn/{minimal-ui-AFk6Ut5f.js.map → minimal-ui-vY3QgohH.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-C4ix6TQq.js → player-B3GlPF90.js} +3 -2
- package/cdn/{player-C4ix6TQq.js.map → player-B3GlPF90.js.map} +1 -1
- package/cdn/player-CtTC7qa5.js +2 -0
- package/cdn/{player-B0ccW5-n.js.map → player-CtTC7qa5.js.map} +1 -1
- package/cdn/player-DKkph8UM.js +2 -0
- package/cdn/{player-srq1RGTj.js.map → player-DKkph8UM.js.map} +1 -1
- package/cdn/{player-B0qnepD5.js → player-DPDmTRvg.js} +3 -2
- package/cdn/{player-B0qnepD5.js.map → player-DPDmTRvg.js.map} +1 -1
- package/cdn/player-DrDd7LJi.js +2 -0
- package/cdn/{player-iIewo8Y9.js.map → player-DrDd7LJi.js.map} +1 -1
- package/cdn/{player-D4fdOLLk.js → player-L5UpZmT4.js} +3 -2
- package/cdn/{player-D4fdOLLk.js.map → player-L5UpZmT4.js.map} +1 -1
- package/cdn/{poster-element-BP1Ypgbf.js → poster-element-B5tdJ2ub.js} +192 -39
- package/cdn/poster-element-B5tdJ2ub.js.map +1 -0
- package/cdn/poster-element-B8QwXSU_.js +2 -0
- package/cdn/poster-element-B8QwXSU_.js.map +1 -0
- package/cdn/{error-surface-drmCvBVW.js → relocation-pipelines-Dh8CcgHw.js} +5 -343
- package/cdn/relocation-pipelines-Dh8CcgHw.js.map +1 -0
- package/cdn/relocation-pipelines-DunE4gcV.js +2 -0
- package/cdn/relocation-pipelines-DunE4gcV.js.map +1 -0
- package/cdn/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-TErrbilI.js → seek-button-element-5co-k0Dx.js} +7 -6
- package/cdn/seek-button-element-5co-k0Dx.js.map +1 -0
- package/cdn/seek-button-element-B8TkILg-.js +2 -0
- package/cdn/seek-button-element-B8TkILg-.js.map +1 -0
- package/cdn/shallow-equal-C7S8rj2f.js +16 -0
- package/cdn/shallow-equal-C7S8rj2f.js.map +1 -0
- package/cdn/shallow-equal-KV1zFqZi.js +2 -0
- package/cdn/shallow-equal-KV1zFqZi.js.map +1 -0
- package/cdn/{skin-element-wPSb4AAs.js → skin-element-DrkI8xuM.js} +2 -2
- package/cdn/{skin-element-wPSb4AAs.js.map → skin-element-DrkI8xuM.js.map} +1 -1
- package/cdn/{skin-element-1_MG2zgS.js → skin-element-DvX6Bxsv.js} +2 -2
- package/cdn/{skin-element-1_MG2zgS.js.map → skin-element-DvX6Bxsv.js.map} +1 -1
- package/cdn/text-element-BoY6AhMn.js +2 -0
- package/cdn/{text-element-Bsyglab8.js.map → text-element-BoY6AhMn.js.map} +1 -1
- package/cdn/{text-element-DTB9_2HX.js → text-element-cg6l21cd.js} +3 -3
- package/cdn/{text-element-DTB9_2HX.js.map → text-element-cg6l21cd.js.map} +1 -1
- package/cdn/time-slider-chapters-element-BfLjdnU4.js +2 -0
- package/cdn/time-slider-chapters-element-BfLjdnU4.js.map +1 -0
- package/cdn/{time-slider-chapters-element-DPgaLdBt.js → time-slider-chapters-element-CznFQWFm.js} +7 -6
- package/cdn/time-slider-chapters-element-CznFQWFm.js.map +1 -0
- 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-BwzqkJNK.js} +8 -8
- package/cdn/{ui-D0AokGxw.js.map → ui-BwzqkJNK.js.map} +1 -1
- package/cdn/ui-DayfItun.js +2 -0
- package/cdn/{ui-CecDxhTX.js.map → ui-DayfItun.js.map} +1 -1
- package/cdn/ui-PSnD-pv8.js +2 -0
- package/cdn/{ui-ChWM6Xz2.js.map → ui-PSnD-pv8.js.map} +1 -1
- package/cdn/{ui-p36Szn71.js → ui-fnKp94a7.js} +10 -10
- package/cdn/{ui-p36Szn71.js.map → ui-fnKp94a7.js.map} +1 -1
- package/cdn/video-headless.dev.js +1 -1
- package/cdn/video-headless.js +1 -1
- package/cdn/video-minimal-ui.dev.js +2 -2
- package/cdn/video-minimal-ui.js +1 -1
- package/cdn/video-minimal.dev.js +8 -6
- package/cdn/video-minimal.dev.js.map +1 -1
- package/cdn/video-minimal.js +1 -1
- package/cdn/video-minimal.js.map +1 -1
- package/cdn/video-ui.dev.js +2 -2
- package/cdn/video-ui.js +1 -1
- package/cdn/video.dev.js +9 -7
- package/cdn/video.dev.js.map +1 -1
- package/cdn/video.js +1 -1
- package/cdn/video.js.map +1 -1
- package/dist/default/__generated__/skins/default-video/styles/buttons.css +132 -18
- package/dist/default/__generated__/skins/default-video/styles/captions.css +22 -0
- package/dist/default/__generated__/skins/default-video/styles/container.css +121 -8
- package/dist/default/__generated__/skins/default-video/styles/controls.css +436 -21
- package/dist/default/__generated__/skins/default-video/styles/dialog.css +169 -0
- package/dist/default/__generated__/skins/default-video/styles/indicator.css +459 -0
- package/dist/default/__generated__/skins/default-video/styles/menus.css +254 -0
- package/dist/default/__generated__/skins/default-video/styles/overlays.css +26 -2
- package/dist/default/__generated__/skins/default-video/styles/popups.css +338 -12
- package/dist/default/__generated__/skins/default-video/styles/poster.css +4 -4
- package/dist/default/__generated__/skins/default-video/styles/sliders.css +355 -31
- package/dist/default/__generated__/skins/default-video/styles/styles.css +2455 -216
- package/dist/default/__generated__/skins/default-video/styles/theme.css +4 -19
- package/dist/default/__generated__/skins/default-video/styles/video.css +29 -0
- package/dist/default/__generated__/skins/minimal-video/styles/base.css +25 -0
- package/dist/default/__generated__/skins/minimal-video/styles/buttons.css +266 -0
- package/dist/default/__generated__/skins/minimal-video/styles/captions.css +22 -0
- package/dist/default/__generated__/skins/minimal-video/styles/container.css +158 -0
- package/dist/default/__generated__/skins/minimal-video/styles/controls.css +182 -0
- package/dist/default/__generated__/skins/minimal-video/styles/dialog.css +77 -0
- package/dist/default/__generated__/skins/minimal-video/styles/indicator.css +322 -0
- package/dist/default/__generated__/skins/minimal-video/styles/menus.css +254 -0
- package/dist/default/__generated__/skins/minimal-video/styles/overlays.css +35 -0
- package/dist/default/__generated__/skins/minimal-video/styles/popups.css +371 -0
- package/dist/default/__generated__/skins/minimal-video/styles/poster.css +47 -0
- package/dist/default/__generated__/skins/minimal-video/styles/sliders.css +436 -0
- package/dist/default/__generated__/skins/minimal-video/styles/styles.css +2246 -0
- package/dist/default/__generated__/skins/minimal-video/styles/theme.css +7 -0
- package/dist/default/__generated__/skins/minimal-video/styles/video.css +29 -0
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
- package/dist/default/define/audio/minimal-skin.css +117 -118
- package/dist/default/define/audio/skin.css +95 -99
- package/dist/default/define/live-audio/minimal-skin.css +117 -118
- package/dist/default/define/live-audio/skin.css +95 -99
- package/dist/default/define/live-video/minimal-skin.css +158 -137
- 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 +120 -106
- package/dist/default/define/live-video/skin.js +1 -1
- package/dist/default/define/live-video/skin.js.map +1 -1
- package/dist/default/define/live-video/skin.tailwind.js +1 -1
- package/dist/default/define/live-video/skin.tailwind.js.map +1 -1
- package/dist/default/define/ui/gesture.js +7 -0
- package/dist/default/define/ui/gesture.js.map +1 -0
- package/dist/default/define/video/minimal-skin.css +158 -137
- 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 +120 -106
- package/dist/default/define/video/skin.js +1 -1
- package/dist/default/define/video/skin.js.map +1 -1
- package/dist/default/define/video/skin.tailwind.js +1 -1
- package/dist/default/define/video/skin.tailwind.js.map +1 -1
- package/dist/default/icons/dist/element/default/icons.js +1 -1
- package/dist/default/icons/dist/element/default/icons.js.map +1 -1
- package/dist/default/icons/dist/element/minimal/icons.js +1 -1
- package/dist/default/icons/dist/element/minimal/icons.js.map +1 -1
- package/dist/default/icons/dist/html/default/airplay-exit.js +1 -1
- package/dist/default/icons/dist/html/default/airplay-exit.js.map +1 -1
- package/dist/default/icons/dist/html/minimal/airplay-exit.js +1 -1
- package/dist/default/icons/dist/html/minimal/airplay-exit.js.map +1 -1
- package/dist/default/icons/dist/render/default/index.js +1 -1
- package/dist/default/icons/dist/render/default/index.js.map +1 -1
- package/dist/default/icons/dist/render/minimal/index.js +1 -1
- package/dist/default/icons/dist/render/minimal/index.js.map +1 -1
- package/dist/default/media/hls-background-video/media.js +18 -0
- package/dist/default/media/hls-background-video/media.js.map +1 -1
- package/dist/default/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/button.js +3 -1
- package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/poster.js +8 -1
- package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js +13 -13
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +3 -3
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -6
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +4 -4
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
- package/dist/default/store/provider-mixin.js +22 -8
- package/dist/default/store/provider-mixin.js.map +1 -1
- package/dist/default/ui/audio-track-radio-group/audio-track-radio-group-element.js +1 -1
- package/dist/default/ui/audio-track-radio-group/audio-track-radio-group-element.js.map +1 -1
- package/dist/default/ui/captions-radio-group/captions-radio-group-element.js +1 -1
- package/dist/default/ui/captions-radio-group/captions-radio-group-element.js.map +1 -1
- package/dist/default/ui/gesture/gesture-element.js.map +1 -1
- package/dist/default/ui/hotkey/hotkey-element.js.map +1 -1
- package/dist/default/ui/menu/context.js.map +1 -1
- package/dist/default/ui/menu/menu-element.js +28 -27
- package/dist/default/ui/menu/menu-element.js.map +1 -1
- package/dist/default/ui/menu/menu-radio-group-element.js +14 -14
- package/dist/default/ui/menu/menu-radio-group-element.js.map +1 -1
- package/dist/default/ui/playback-rate-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/default/ui/playback-rate-radio-group/playback-rate-radio-group-element.js +1 -1
- package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group-element.js.map +1 -1
- package/dist/default/ui/poster/poster-element.js +138 -8
- package/dist/default/ui/poster/poster-element.js.map +1 -1
- package/dist/default/ui/quality-radio-group/quality-radio-group-element.js +1 -1
- package/dist/default/ui/quality-radio-group/quality-radio-group-element.js.map +1 -1
- package/dist/default/ui/slider/slider-preview-element.js.map +1 -1
- package/dist/dev/__generated__/skins/default-video/styles/buttons.css +132 -18
- package/dist/dev/__generated__/skins/default-video/styles/captions.css +22 -0
- package/dist/dev/__generated__/skins/default-video/styles/container.css +121 -8
- package/dist/dev/__generated__/skins/default-video/styles/controls.css +436 -21
- package/dist/dev/__generated__/skins/default-video/styles/dialog.css +169 -0
- package/dist/dev/__generated__/skins/default-video/styles/indicator.css +459 -0
- package/dist/dev/__generated__/skins/default-video/styles/menus.css +254 -0
- package/dist/dev/__generated__/skins/default-video/styles/overlays.css +26 -2
- package/dist/dev/__generated__/skins/default-video/styles/popups.css +338 -12
- package/dist/dev/__generated__/skins/default-video/styles/poster.css +4 -4
- package/dist/dev/__generated__/skins/default-video/styles/sliders.css +355 -31
- package/dist/dev/__generated__/skins/default-video/styles/styles.css +2455 -216
- package/dist/dev/__generated__/skins/default-video/styles/theme.css +4 -19
- package/dist/dev/__generated__/skins/default-video/styles/video.css +29 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/base.css +25 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/buttons.css +266 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/captions.css +22 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/container.css +158 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/controls.css +182 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/dialog.css +77 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/indicator.css +322 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/menus.css +254 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/overlays.css +35 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/popups.css +371 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/poster.css +47 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/sliders.css +436 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/styles.css +2246 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/theme.css +7 -0
- package/dist/dev/__generated__/skins/minimal-video/styles/video.css +29 -0
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
- package/dist/dev/define/audio/minimal-skin.css +117 -118
- package/dist/dev/define/audio/skin.css +95 -99
- package/dist/dev/define/live-audio/minimal-skin.css +117 -118
- package/dist/dev/define/live-audio/skin.css +95 -99
- package/dist/dev/define/live-video/minimal-skin.css +158 -137
- package/dist/dev/define/live-video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/define/live-video/minimal-skin.js +3 -1
- package/dist/dev/define/live-video/minimal-skin.js.map +1 -1
- package/dist/dev/define/live-video/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/live-video/minimal-skin.tailwind.js +3 -1
- package/dist/dev/define/live-video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/define/live-video/skin.css +120 -106
- package/dist/dev/define/live-video/skin.d.ts.map +1 -1
- package/dist/dev/define/live-video/skin.js +3 -1
- package/dist/dev/define/live-video/skin.js.map +1 -1
- package/dist/dev/define/live-video/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/live-video/skin.tailwind.js +4 -2
- package/dist/dev/define/live-video/skin.tailwind.js.map +1 -1
- package/dist/dev/define/ui/gesture.d.ts +8 -0
- package/dist/dev/define/ui/gesture.d.ts.map +1 -0
- package/dist/dev/define/ui/gesture.js +7 -0
- package/dist/dev/define/ui/gesture.js.map +1 -0
- package/dist/dev/define/video/minimal-skin.css +158 -137
- package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/define/video/minimal-skin.js +3 -1
- package/dist/dev/define/video/minimal-skin.js.map +1 -1
- package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/video/minimal-skin.tailwind.js +3 -1
- package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/define/video/skin.css +120 -106
- package/dist/dev/define/video/skin.d.ts.map +1 -1
- package/dist/dev/define/video/skin.js +3 -1
- package/dist/dev/define/video/skin.js.map +1 -1
- package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/video/skin.tailwind.js +4 -2
- package/dist/dev/define/video/skin.tailwind.js.map +1 -1
- package/dist/dev/media/hls-background-video/media.d.ts +16 -0
- package/dist/dev/media/hls-background-video/media.d.ts.map +1 -1
- package/dist/dev/media/hls-background-video/media.js +18 -0
- package/dist/dev/media/hls-background-video/media.js.map +1 -1
- package/dist/dev/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/icons/dist/element/default/icons.js +1 -1
- package/dist/dev/packages/icons/dist/element/default/icons.js.map +1 -1
- package/dist/dev/packages/icons/dist/element/minimal/icons.js +1 -1
- package/dist/dev/packages/icons/dist/element/minimal/icons.js.map +1 -1
- package/dist/dev/packages/icons/dist/html/default/airplay-exit.js +1 -1
- package/dist/dev/packages/icons/dist/html/default/airplay-exit.js.map +1 -1
- package/dist/dev/packages/icons/dist/html/minimal/airplay-exit.js +1 -1
- package/dist/dev/packages/icons/dist/html/minimal/airplay-exit.js.map +1 -1
- package/dist/dev/packages/icons/dist/render/default/index.js +1 -1
- package/dist/dev/packages/icons/dist/render/default/index.js.map +1 -1
- package/dist/dev/packages/icons/dist/render/minimal/index.js +1 -1
- package/dist/dev/packages/icons/dist/render/minimal/index.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/button.js +3 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/poster.js +8 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/slider.js +13 -13
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js +3 -3
- package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -6
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/shared/tailwind/icon-state.js +4 -4
- package/dist/dev/packages/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
- package/dist/dev/store/provider-mixin.d.ts.map +1 -1
- package/dist/dev/store/provider-mixin.js +24 -8
- package/dist/dev/store/provider-mixin.js.map +1 -1
- package/dist/dev/store/types.d.ts +2 -2
- package/dist/dev/store/types.d.ts.map +1 -1
- package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group-element.js +1 -1
- package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group-element.js.map +1 -1
- package/dist/dev/ui/captions-radio-group/captions-radio-group-element.js +1 -1
- package/dist/dev/ui/captions-radio-group/captions-radio-group-element.js.map +1 -1
- package/dist/dev/ui/gesture/gesture-element.d.ts +7 -7
- package/dist/dev/ui/gesture/gesture-element.d.ts.map +1 -1
- package/dist/dev/ui/gesture/gesture-element.js.map +1 -1
- package/dist/dev/ui/hotkey/hotkey-element.d.ts +6 -6
- package/dist/dev/ui/hotkey/hotkey-element.d.ts.map +1 -1
- package/dist/dev/ui/hotkey/hotkey-element.js.map +1 -1
- package/dist/dev/ui/menu/context.d.ts +8 -8
- package/dist/dev/ui/menu/context.d.ts.map +1 -1
- package/dist/dev/ui/menu/context.js.map +1 -1
- package/dist/dev/ui/menu/menu-element.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-element.js +28 -27
- package/dist/dev/ui/menu/menu-element.js.map +1 -1
- package/dist/dev/ui/menu/menu-radio-group-element.d.ts +1 -1
- package/dist/dev/ui/menu/menu-radio-group-element.d.ts.map +1 -1
- package/dist/dev/ui/menu/menu-radio-group-element.js +14 -14
- package/dist/dev/ui/menu/menu-radio-group-element.js.map +1 -1
- package/dist/dev/ui/playback-rate-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/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group-element.js +1 -1
- package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group-element.js.map +1 -1
- package/dist/dev/ui/poster/poster-element.d.ts +20 -18
- package/dist/dev/ui/poster/poster-element.d.ts.map +1 -1
- package/dist/dev/ui/poster/poster-element.js +145 -8
- package/dist/dev/ui/poster/poster-element.js.map +1 -1
- package/dist/dev/ui/quality-radio-group/quality-radio-group-element.js +1 -1
- package/dist/dev/ui/quality-radio-group/quality-radio-group-element.js.map +1 -1
- package/dist/dev/ui/slider/slider-preview-element.d.ts +2 -2
- package/dist/dev/ui/slider/slider-preview-element.d.ts.map +1 -1
- package/dist/dev/ui/slider/slider-preview-element.js.map +1 -1
- package/docs/README.md +1 -1
- package/docs/concepts/features.md +2 -2
- package/docs/concepts/media-sources.md +79 -1
- package/docs/concepts/skins.md +122 -108
- package/docs/how-to/build-your-own-component.md +1 -1
- package/docs/how-to/customize-skins.md +499 -469
- 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/menu.md +3 -19
- package/docs/reference/mute-button.md +34 -0
- package/docs/reference/popover.md +2 -2
- package/docs/reference/poster.md +211 -21
- package/docs/reference/slider.md +1 -1
- package/docs/reference/time-slider.md +1 -1
- package/docs/reference/tooltip.md +6 -6
- package/docs/reference/volume-slider.md +2 -2
- package/package.json +15 -9
- package/cdn/adapter-Bk03SAxn.js +0 -2
- package/cdn/adapter-Bk03SAxn.js.map +0 -1
- package/cdn/adapter-XTen-YVQ.js.map +0 -1
- package/cdn/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/default-BqQDVloS.js.map +0 -1
- package/cdn/default-CXWVp2oG.js +0 -2
- package/cdn/default-CXWVp2oG.js.map +0 -1
- package/cdn/default-Dw6cIEqT.js +0 -2
- package/cdn/default-Dw6cIEqT.js.map +0 -1
- package/cdn/default-I2LasfxC.js.map +0 -1
- package/cdn/error-surface-DCT1m2p1.js +0 -2
- package/cdn/error-surface-DCT1m2p1.js.map +0 -1
- package/cdn/error-surface-drmCvBVW.js.map +0 -1
- package/cdn/gesture-element-BNfMI8eh.js.map +0 -1
- package/cdn/gesture-element-CG-Sx_5t.js.map +0 -1
- 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-BTipOcKo.js +0 -2
- 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-CbWsJJhU.js +0 -2
- package/cdn/media-Cp3acYc8.js.map +0 -1
- package/cdn/media-Dq4zmIJa2.js +0 -2
- package/cdn/media-Dq4zmIJa2.js.map +0 -1
- package/cdn/media-suYcjCG22.js +0 -445
- package/cdn/media-suYcjCG22.js.map +0 -1
- package/cdn/minimal-BedCvMBG.js +0 -2
- package/cdn/minimal-BedCvMBG.js.map +0 -1
- package/cdn/minimal-BoP112ye.js +0 -2
- package/cdn/minimal-BoP112ye.js.map +0 -1
- package/cdn/minimal-DLosvq31.js.map +0 -1
- package/cdn/minimal-DQCLKRyR.js.map +0 -1
- package/cdn/minimal-ui-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/select-tracks-nRPBa1NC.js.map +0 -1
- package/cdn/select-tracks-xV1s28xD.js +0 -59
- package/cdn/select-tracks-xV1s28xD.js.map +0 -1
- package/cdn/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/time-slider-chapters-element-MdlcovBu.js.map +0 -1
- 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":"spotify-audio.dev.js","names":["#controller","#target","#beginLoad","#createPlayer","#attachId","#controllerReady","#pendingLoad","#creatingController","#loadComplete","#resetState","#src","#source","#readyState","#error","#snapshotProps","#paused","#ended","#seeking","#pauseRequested","#currentTime","#closeToEnded","#afterLoad","#duration","#autoplay","#loop","#controls","#playsInline","#preload","#poster","#createControllerApi","#isStale","#bindControllerEvents","#loaded","#waiting","#onLoaded","#onControllerReady","#onPlaybackUpdate","#restartFromEnd","#syncDuration","#syncPosition","#syncPlayState","#checkEnded","#isStarting"],"sources":["../../../media/dist/dev/dom/spotify/props.js","../../../media/dist/dev/dom/spotify/source.js","../../../media/dist/dev/dom/spotify/iframe-api.js","../../../media/dist/dev/dom/spotify/media.js","../../src/media/spotify-audio/media.ts","../../src/define/media/spotify-audio.ts"],"sourcesContent":["//#region src/dom/spotify/props.ts\nconst spotifyMediaDefaultProps = {\n\tsrc: \"\",\n\tautoplay: false,\n\tloop: false,\n\tcontrols: false,\n\tplaysInline: true,\n\tpreload: \"metadata\",\n\tposter: \"\",\n\tsource: null\n};\n//#endregion\nexport { spotifyMediaDefaultProps };\n\n//# sourceMappingURL=props.js.map","import { serializeEmbedParams } from \"../utils/embed-params.js\";\n//#region src/dom/spotify/source.ts\n/** Extract a Spotify entity id from any recognized URL or `spotify:` URI. */\nfunction parseSpotifyEntityId(src) {\n\treturn parseSpotifySource(src)?.id ?? null;\n}\n/**\n* Parse a Spotify source string. Recognizes `open.spotify.com` URLs for every\n* embeddable entity — including the localized (`/intl-de/`) and already-embedded\n* (`/embed/`) forms, since the entity type and id sit in the same place in all of\n* them — `spotify:<type>:<id>` URIs, and start positions via the `t` parameter.\n*/\nfunction parseSpotifySource(src) {\n\tif (!src) return null;\n\tconst match = MATCH_URI.exec(src) ?? MATCH_SRC.exec(src);\n\tconst type = match?.[1]?.toLowerCase();\n\tconst id = match?.[2];\n\tif (!type || !id) return null;\n\treturn {\n\t\ttype,\n\t\tid,\n\t\tstartTime: parseStartTime(src)\n\t};\n}\n/** Build the iframe `src` URL for an initial Spotify embed from the given props. */\nfunction buildSpotifyIframeSrc(src, props = {}) {\n\tconst parsed = parseSpotifySource(src);\n\tif (!parsed) return \"\";\n\tconst { preferVideo, referrerPolicy: _referrerPolicy, ...spotify } = props.source?.engine?.spotify ?? {};\n\tconst params = {\n\t\tt: parsed.startTime,\n\t\t...spotify\n\t};\n\tconst videoPath = preferVideo ? \"/video\" : \"\";\n\tconst query = serializeEmbedParams(params);\n\treturn `${EMBED_BASE}/embed/${parsed.type}/${parsed.id}${videoPath}${query ? `?${query}` : \"\"}`;\n}\n/** Parse the `t` parameter from a Spotify share URL. Spotify spells it in seconds. */\nfunction parseStartTime(url) {\n\tconst value = /[?&]t=(\\d+)/.exec(url)?.[1];\n\treturn value ? Number.parseInt(value, 10) : null;\n}\nconst EMBED_BASE = \"https://open.spotify.com\";\nconst MATCH_SRC = /open\\.spotify\\.com\\/(?:[\\w-]+\\/)*?(track|episode|album|playlist|show|artist)\\/(\\w+)/i;\nconst MATCH_URI = /^spotify:(track|episode|album|playlist|show|artist):(\\w+)$/i;\n//#endregion\nexport { buildSpotifyIframeSrc, parseSpotifyEntityId, parseSpotifySource };\n\n//# sourceMappingURL=source.js.map","import { loadScript } from \"@videojs/utils/dom\";\n//#region src/dom/spotify/iframe-api.ts\nconst API_URL = \"https://open.spotify.com/embed/iframe-api/v1\";\nlet apiPromise = null;\n/** Load the iframe API once, reusing it if another host already pulled it in. */\nfunction loadSpotifyIframeApi() {\n\tconst globals = globalThis;\n\tconst existing = globals.SpotifyIframeApi;\n\tif (existing) return Promise.resolve(existing);\n\tapiPromise ??= new Promise((resolve, reject) => {\n\t\tconst hostReady = globals.onSpotifyIframeApiReady;\n\t\tglobals.onSpotifyIframeApiReady = (api) => {\n\t\t\tresolve(api);\n\t\t\thostReady?.(api);\n\t\t};\n\t\tloadScript(API_URL).catch(reject);\n\t}).catch((error) => {\n\t\tapiPromise = null;\n\t\tthrow error;\n\t});\n\treturn apiPromise;\n}\n//#endregion\nexport { loadSpotifyIframeApi };\n\n//# sourceMappingURL=iframe-api.js.map","import { EMPTY_TEXT_TRACKS, EMPTY_TIME_RANGES } from \"../../core/constants.js\";\nimport { MediaError } from \"../../core/media-error.js\";\nimport { createTimeRange } from \"../utils/time-ranges.js\";\nimport { MediaPlayedRangesMixin } from \"../media-played-ranges/media-played-ranges.js\";\nimport { loadSpotifyIframeApi } from \"./iframe-api.js\";\nimport { spotifyMediaDefaultProps } from \"./props.js\";\nimport { buildSpotifyIframeSrc, parseSpotifySource } from \"./source.js\";\nimport { isNumber } from \"@videojs/utils/predicate\";\nimport { deepEqual } from \"@videojs/utils/object\";\nimport { createPublicPromise, tryCall } from \"@videojs/utils/function\";\n//#region src/dom/spotify/media.ts\nconst SpotifyMediaBase = MediaPlayedRangesMixin(EventTarget);\n/**\n* @fires sourcechange - Fired when `source` changes, either directly or by resolving a new `src`. Read `source` for the new value.\n*/\nvar SpotifyMedia = class extends SpotifyMediaBase {\n\t#target = null;\n\t#controller = null;\n\t#controllerReady = false;\n\t#pendingLoad = false;\n\t#creatingController = false;\n\t#loadComplete = createPublicPromise();\n\t#attachId = 0;\n\t#src = spotifyMediaDefaultProps.src;\n\t#autoplay = spotifyMediaDefaultProps.autoplay;\n\t#loop = spotifyMediaDefaultProps.loop;\n\t#controls = spotifyMediaDefaultProps.controls;\n\t#playsInline = spotifyMediaDefaultProps.playsInline;\n\t#preload = spotifyMediaDefaultProps.preload;\n\t#poster = spotifyMediaDefaultProps.poster;\n\t#source = spotifyMediaDefaultProps.source;\n\t#paused = true;\n\t#ended = false;\n\t#seeking = false;\n\t#loaded = false;\n\t#currentTime = 0;\n\t#duration = NaN;\n\t#readyState = READY_STATE_HAVE_NOTHING;\n\t#error = null;\n\t#waiting = false;\n\t#pauseRequested = false;\n\t#closeToEnded = false;\n\tstatic PLAYER_SOFTWARE_NAME = \"spotify-audio\";\n\t/** Underlying Spotify iframe API controller (null until the API loads). */\n\tget engine() {\n\t\treturn this.#controller;\n\t}\n\t/** The iframe holding the embed, which everything from the embed URL down is written to. */\n\tget target() {\n\t\treturn this.#target;\n\t}\n\t/** Bind the iframe hosting the embed; the API and controller follow as soon as an embed URL resolves. */\n\tattach(target) {\n\t\tif (!target || this.#target === target) return;\n\t\tif (this.#target) this.detach();\n\t\tthis.#target = target;\n\t\tthis.#beginLoad();\n\t\tthis.#createPlayer();\n\t}\n\tdetach() {\n\t\tif (!this.#target) return;\n\t\tthis.#attachId++;\n\t\ttryCall(() => {\n\t\t\tif (this.#controller) {\n\t\t\t\tthis.#controller.iframeElement = createControllerPlaceholderFrame();\n\t\t\t\tthis.#controller.destroy();\n\t\t\t}\n\t\t});\n\t\tthis.#controller = null;\n\t\tthis.#controllerReady = false;\n\t\tthis.#pendingLoad = false;\n\t\tthis.#creatingController = false;\n\t\tthis.#target = null;\n\t\tthis.#loadComplete.resolve();\n\t\tthis.#resetState();\n\t}\n\tdestroy() {\n\t\tthis.detach();\n\t\tsuper.destroy();\n\t}\n\tget src() {\n\t\treturn this.#src;\n\t}\n\t/** Spotify URL or URI. Setting it re-derives `source`, carrying its embed options over. */\n\tset src(value) {\n\t\tconst { engine } = this.#source ?? {};\n\t\tconst next = {\n\t\t\t...engine && { engine },\n\t\t\t...value && { src: value }\n\t\t};\n\t\tthis.source = Object.keys(next).length > 0 ? next : null;\n\t}\n\tget currentSrc() {\n\t\treturn this.#target?.getAttribute(\"src\") ?? \"\";\n\t}\n\tget readyState() {\n\t\treturn this.#readyState;\n\t}\n\t/** Reload the current source via the iframe API; deferred until the controller is ready. */\n\tasync load() {\n\t\tif (!this.#controller || !this.#controllerReady) {\n\t\t\tthis.#pendingLoad = !!this.#target;\n\t\t\tif (this.#target && !this.#controller && !this.#creatingController) {\n\t\t\t\tconst load = this.#beginLoad();\n\t\t\t\tawait Promise.resolve();\n\t\t\t\tif (load !== this.#loadComplete) return;\n\t\t\t\tthis.#createPlayer();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst load = this.#beginLoad();\n\t\tthis.#resetState();\n\t\tthis.dispatchEvent(new Event(\"emptied\"));\n\t\tif (!this.#src) {\n\t\t\tload.resolve();\n\t\t\ttryCall(() => this.#controller?.pause());\n\t\t\treturn;\n\t\t}\n\t\tthis.dispatchEvent(new Event(\"loadstart\"));\n\t\tconst parsed = parseSpotifySource(this.#src);\n\t\tif (!parsed) {\n\t\t\tthis.#error = new MediaError(`Unrecognized Spotify source: ${this.#src}`, MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);\n\t\t\tthis.dispatchEvent(new Event(\"error\"));\n\t\t\tload.resolve();\n\t\t\treturn;\n\t\t}\n\t\tconst target = this.#target;\n\t\tconst embedSrc = buildSpotifyIframeSrc(this.#src, this.#snapshotProps());\n\t\tconst embeddedSrc = target?.getAttribute(\"src\") ?? \"\";\n\t\tconst rebuild = embedOptionsOf(embedSrc) !== embedOptionsOf(embeddedSrc) || isVideoEmbed(embedSrc) && embedPathOf(embedSrc) !== embedPathOf(embeddedSrc);\n\t\tif (target && embedSrc && rebuild) {\n\t\t\ttarget.src = embedSrc;\n\t\t\treturn;\n\t\t}\n\t\tthis.#controller.loadUri(`spotify:${parsed.type}:${parsed.id}`);\n\t\tconst startTime = this.#source?.engine?.spotify?.t ?? parsed.startTime;\n\t\tif (isNumber(startTime)) this.currentTime = startTime;\n\t}\n\t#beginLoad() {\n\t\tthis.#loadComplete.resolve();\n\t\tthis.#loadComplete = createPublicPromise();\n\t\treturn this.#loadComplete;\n\t}\n\tget paused() {\n\t\treturn this.#paused;\n\t}\n\tget ended() {\n\t\treturn this.#ended;\n\t}\n\tget seeking() {\n\t\treturn this.#seeking;\n\t}\n\tasync play() {\n\t\tawait this.#loadComplete;\n\t\tif (!this.#src) return;\n\t\tthis.#controller?.resume();\n\t}\n\tpause() {\n\t\tthis.#pauseRequested = true;\n\t\tthis.#controller?.pause();\n\t}\n\tget currentTime() {\n\t\treturn this.#currentTime;\n\t}\n\tset currentTime(value) {\n\t\tif (this.#currentTime === value) return;\n\t\tthis.#seeking = true;\n\t\tthis.#closeToEnded = false;\n\t\tthis.#ended = false;\n\t\tthis.#currentTime = value;\n\t\tthis.dispatchEvent(new Event(\"seeking\"));\n\t\tthis.dispatchEvent(new Event(\"timeupdate\"));\n\t\tthis.#afterLoad((controller) => controller.seek(value));\n\t}\n\tget duration() {\n\t\treturn this.#duration;\n\t}\n\tget autoplay() {\n\t\treturn this.#autoplay;\n\t}\n\tset autoplay(value) {\n\t\tthis.#autoplay = value;\n\t}\n\tget loop() {\n\t\treturn this.#loop;\n\t}\n\tset loop(value) {\n\t\tthis.#loop = value;\n\t}\n\tget controls() {\n\t\treturn this.#controls;\n\t}\n\tset controls(value) {\n\t\tthis.#controls = value;\n\t}\n\tget playsInline() {\n\t\treturn this.#playsInline;\n\t}\n\tset playsInline(value) {\n\t\tthis.#playsInline = value;\n\t}\n\tget preload() {\n\t\treturn this.#preload;\n\t}\n\tset preload(value) {\n\t\tthis.#preload = value;\n\t}\n\tget poster() {\n\t\treturn this.#poster;\n\t}\n\tset poster(value) {\n\t\tthis.#poster = value;\n\t}\n\t/** Spotify URL or URI in `src`, plus embed options under `engine.spotify`. Replacing it re-derives `src`. */\n\tget source() {\n\t\treturn this.#source;\n\t}\n\tset source(value) {\n\t\tconst source = value ?? null;\n\t\tif (source === this.#source) return;\n\t\tconst src = source?.src ?? \"\";\n\t\tconst srcChanged = this.#src !== src;\n\t\tconst engineChanged = !deepEqual(this.#source?.engine?.spotify ?? null, source?.engine?.spotify ?? null);\n\t\tthis.#source = source;\n\t\tthis.#src = src;\n\t\tif (srcChanged || engineChanged) this.load();\n\t\tthis.dispatchEvent(new Event(\"sourcechange\"));\n\t}\n\tget buffered() {\n\t\treturn this.#currentTime > 0 ? createTimeRange(0, this.#currentTime) : EMPTY_TIME_RANGES;\n\t}\n\tget seekable() {\n\t\treturn this.#duration > 0 && Number.isFinite(this.#duration) ? createTimeRange(0, this.#duration) : EMPTY_TIME_RANGES;\n\t}\n\tget error() {\n\t\treturn this.#error;\n\t}\n\t/** Always empty: the embed exposes no captions or other text tracks. */\n\tget textTracks() {\n\t\treturn EMPTY_TEXT_TRACKS;\n\t}\n\t#createPlayer() {\n\t\tconst target = this.#target;\n\t\tif (!target || this.#controller || this.#creatingController) return false;\n\t\tif (!target.getAttribute(\"src\")) {\n\t\t\tconst initialSrc = buildSpotifyIframeSrc(this.#src, this.#snapshotProps());\n\t\t\tif (!initialSrc) {\n\t\t\t\tthis.#loadComplete.resolve();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\ttarget.src = initialSrc;\n\t\t}\n\t\tthis.#creatingController = true;\n\t\tthis.dispatchEvent(new Event(\"loadstart\"));\n\t\tthis.#createControllerApi(target);\n\t\treturn true;\n\t}\n\tasync #createControllerApi(target) {\n\t\tconst attachId = this.#attachId;\n\t\tlet api;\n\t\ttry {\n\t\t\tapi = await loadSpotifyIframeApi();\n\t\t} catch {\n\t\t\tif (this.#isStale(attachId)) return;\n\t\t\tthis.#creatingController = false;\n\t\t\tthis.#error = new MediaError(\"Failed to load the Spotify iframe API\", MediaError.MEDIA_ERR_NETWORK);\n\t\t\tthis.dispatchEvent(new Event(\"error\"));\n\t\t\tthis.#loadComplete.resolve();\n\t\t\treturn;\n\t\t}\n\t\tif (this.#isStale(attachId) || this.#target !== target) return;\n\t\tconst { referrerPolicy: _referrerPolicy, ...options } = this.#source?.engine?.spotify ?? {};\n\t\tconst controller = await new Promise((resolve) => api.createController(createControllerPlaceholder(), options, resolve));\n\t\tif (this.#isStale(attachId) || this.#target !== target) {\n\t\t\ttryCall(() => controller.destroy());\n\t\t\treturn;\n\t\t}\n\t\tcontroller.iframeElement = target;\n\t\tthis.#controller = controller;\n\t\tthis.#creatingController = false;\n\t\tthis.#bindControllerEvents(controller, attachId);\n\t}\n\t#isStale(attachId) {\n\t\treturn attachId !== this.#attachId;\n\t}\n\t#afterLoad(fn) {\n\t\tthis.#loadComplete.then(() => {\n\t\t\tconst controller = this.#controller;\n\t\t\tif (controller) tryCall(() => fn(controller));\n\t\t}, () => {});\n\t}\n\t#snapshotProps() {\n\t\treturn {\n\t\t\tautoplay: this.#autoplay,\n\t\t\tloop: this.#loop,\n\t\t\tcontrols: this.#controls,\n\t\t\tplaysInline: this.#playsInline,\n\t\t\tpreload: this.#preload || spotifyMediaDefaultProps.preload,\n\t\t\tsource: this.#source\n\t\t};\n\t}\n\t#resetState() {\n\t\tthis.#currentTime = 0;\n\t\tthis.#duration = NaN;\n\t\tthis.#paused = !this.#autoplay;\n\t\tthis.#ended = false;\n\t\tthis.#readyState = READY_STATE_HAVE_NOTHING;\n\t\tthis.#seeking = false;\n\t\tthis.#loaded = false;\n\t\tthis.#waiting = false;\n\t\tthis.#pauseRequested = false;\n\t\tthis.#closeToEnded = false;\n\t\tthis.#error = null;\n\t}\n\t#onControllerReady() {\n\t\tthis.#controllerReady = true;\n\t\tif (this.#pendingLoad) {\n\t\t\tthis.#pendingLoad = false;\n\t\t\tthis.load();\n\t\t\treturn;\n\t\t}\n\t\tthis.#onLoaded();\n\t}\n\t#onLoaded() {\n\t\tif (this.#loaded) return;\n\t\tthis.#loaded = true;\n\t\tthis.#readyState = READY_STATE_HAVE_METADATA;\n\t\tfor (const type of [\n\t\t\t\"loadedmetadata\",\n\t\t\t\"durationchange\",\n\t\t\t\"loadcomplete\"\n\t\t]) this.dispatchEvent(new Event(type));\n\t\tthis.#loadComplete.resolve();\n\t\tif (this.#autoplay) this.play();\n\t}\n\t#bindControllerEvents(controller, attachId) {\n\t\tcontroller.addListener(\"ready\", () => {\n\t\t\tif (this.#isStale(attachId)) return;\n\t\t\tthis.#onControllerReady();\n\t\t});\n\t\tcontroller.addListener(\"playback_update\", (event) => {\n\t\t\tif (this.#isStale(attachId)) return;\n\t\t\tthis.#onPlaybackUpdate(event.data);\n\t\t});\n\t}\n\t#onPlaybackUpdate(data) {\n\t\tif (this.#src && !this.#loaded) this.#onLoaded();\n\t\tif (this.#restartFromEnd(data)) return;\n\t\tthis.#syncDuration(data.duration);\n\t\tthis.#syncPosition(data.position);\n\t\tif (this.#syncPlayState(data)) return;\n\t\tthis.#checkEnded();\n\t}\n\t#isStarting(data) {\n\t\treturn data.isBuffering || !data.isPaused;\n\t}\n\t#restartFromEnd(data) {\n\t\tif (!this.#closeToEnded || !this.#paused || !this.#isStarting(data)) return false;\n\t\tthis.#closeToEnded = false;\n\t\tthis.currentTime = REPLAY_POSITION;\n\t\treturn true;\n\t}\n\t#syncDuration(duration) {\n\t\tconst seconds = duration / 1e3;\n\t\tif (seconds === this.#duration) return;\n\t\tthis.#closeToEnded = false;\n\t\tthis.#duration = seconds;\n\t\tthis.dispatchEvent(new Event(\"durationchange\"));\n\t}\n\t#syncPosition(position) {\n\t\tconst seconds = position / 1e3;\n\t\tif (this.#seeking) {\n\t\t\tif (seconds < Math.floor(this.#currentTime) || seconds > this.#currentTime + SNAPSHOT_INTERVAL) return;\n\t\t\tthis.#seeking = false;\n\t\t\tthis.dispatchEvent(new Event(\"seeked\"));\n\t\t}\n\t\tif (seconds === this.#currentTime) return;\n\t\tif (Math.ceil(seconds) < this.#duration) {\n\t\t\tthis.#closeToEnded = false;\n\t\t\tthis.#ended = false;\n\t\t}\n\t\tthis.#currentTime = seconds;\n\t\tthis.dispatchEvent(new Event(\"timeupdate\"));\n\t}\n\t#syncPlayState(data) {\n\t\tif (!this.#paused && data.isPaused) {\n\t\t\tif (data.isBuffering && !this.#pauseRequested) {\n\t\t\t\tif (this.#waiting) return false;\n\t\t\t\tthis.#waiting = true;\n\t\t\t\tthis.dispatchEvent(new Event(\"waiting\"));\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tthis.#pauseRequested = false;\n\t\t\tthis.#waiting = false;\n\t\t\tthis.#paused = true;\n\t\t\tthis.dispatchEvent(new Event(\"pause\"));\n\t\t\treturn true;\n\t\t}\n\t\tif (this.#paused && this.#isStarting(data)) {\n\t\t\tthis.#pauseRequested = false;\n\t\t\tthis.#paused = false;\n\t\t\tthis.#ended = false;\n\t\t\tthis.dispatchEvent(new Event(\"play\"));\n\t\t\tthis.#waiting = data.isBuffering;\n\t\t\tif (!this.#waiting) this.#readyState = READY_STATE_HAVE_FUTURE_DATA;\n\t\t\tthis.dispatchEvent(new Event(this.#waiting ? \"waiting\" : \"playing\"));\n\t\t\treturn true;\n\t\t}\n\t\tif (this.#waiting && !data.isPaused) {\n\t\t\tthis.#waiting = false;\n\t\t\tthis.#readyState = READY_STATE_HAVE_FUTURE_DATA;\n\t\t\tthis.dispatchEvent(new Event(\"playing\"));\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\t#checkEnded() {\n\t\tif (this.#paused || this.#seeking || this.#closeToEnded) return;\n\t\tif (!(this.#duration > 0) || !Number.isFinite(this.#duration)) return;\n\t\tif (Math.ceil(this.#currentTime) < this.#duration) return;\n\t\tthis.#closeToEnded = true;\n\t\tif (this.#loop) {\n\t\t\tthis.currentTime = REPLAY_POSITION;\n\t\t\treturn;\n\t\t}\n\t\tthis.#paused = true;\n\t\tthis.#ended = true;\n\t\tthis.pause();\n\t\tthis.dispatchEvent(new Event(\"pause\"));\n\t\tthis.dispatchEvent(new Event(\"ended\"));\n\t}\n};\nfunction createControllerPlaceholder() {\n\treturn globalThis.document.createElement(\"div\");\n}\nfunction createControllerPlaceholderFrame() {\n\treturn globalThis.document.createElement(\"iframe\");\n}\nfunction embedOptionsOf(src) {\n\tconst [, query] = src.split(\"?\");\n\tconst params = new URLSearchParams(query);\n\tparams.delete(\"t\");\n\tparams.sort();\n\treturn `${isVideoEmbed(src) ? \"video\" : \"audio\"}?${params}`;\n}\nfunction embedPathOf(src) {\n\treturn src.split(\"?\")[0] ?? \"\";\n}\nfunction isVideoEmbed(src) {\n\treturn embedPathOf(src).endsWith(\"/video\");\n}\nconst READY_STATE_HAVE_NOTHING = 0;\nconst READY_STATE_HAVE_METADATA = 1;\nconst READY_STATE_HAVE_FUTURE_DATA = 3;\nconst REPLAY_POSITION = 1;\nconst SNAPSHOT_INTERVAL = 1;\n//#endregion\nexport { SpotifyMedia };\n\n//# sourceMappingURL=media.js.map","import { CustomMediaElement } from '@videojs/media/dom/custom-media-element';\nimport { buildSpotifyIframeSrc, SpotifyMedia } from '@videojs/media/dom/spotify';\nimport { escapeHtml } from '@videojs/utils/string';\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nclass SpotifyCustomMediaElement extends CustomMediaElement('iframe', SpotifyMedia) {\n static override getTemplateHTML = (attrs: Record<string, string>): string => {\n const initialSrc = buildSpotifyIframeSrc(attrs.src ?? '', templateAttrsToEmbedProps(attrs));\n const srcAttr = initialSrc ? ` src=\"${escapeHtml(initialSrc)}\"` : '';\n return /*html*/ `\n <style>\n :host {\n display: block;\n min-width: 160px;\n min-height: 80px;\n position: relative;\n }\n iframe {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n /*\n * Without Spotify's own chrome the embed is a transport and nothing else:\n * its player UI would otherwise show through whatever skin is drawn over\n * it. Hidden rather than merely inert, and important so a consumer's own\n * display rule cannot put it back on screen. An iframe in a hidden subtree\n * still loads and plays its src.\n */\n :host(:not([controls])) {\n display: none !important;\n }\n </style>\n <iframe\n part=\"iframe\"\n ${srcAttr}\n allow=\"autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture\"\n frameborder=\"0\"\n width=\"100%\"\n height=\"100%\"\n referrerpolicy=\"${escapeHtml(attrs.referrerpolicy ?? '')}\"\n ></iframe>\n `;\n };\n}\n\nfunction templateAttrsToEmbedProps(attrs: Record<string, string>) {\n return {\n autoplay: attrs.autoplay !== undefined,\n loop: attrs.loop !== undefined,\n controls: attrs.controls !== undefined,\n playsInline: attrs.playsinline !== undefined,\n preload: (attrs.preload as 'none' | 'metadata' | 'auto' | undefined) ?? 'metadata',\n };\n}\n\nexport class SpotifyAudio extends MediaAttachMixin(SpotifyCustomMediaElement) {}\n","import { SpotifyAudio } from '../../media/spotify-audio';\nimport { safeDefine } from '../safe-define';\n\nexport class SpotifyAudioElement extends SpotifyAudio {\n static readonly tagName = 'spotify-audio';\n}\n\nsafeDefine(SpotifyAudioElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [SpotifyAudioElement.tagName]: SpotifyAudioElement;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{o as e}from"../predicate-LbFu-fPH.js";import{t}from"../deep-equal-CcwdHo6t.js";import{t as n}from"../custom-media-element-8pSkwn42.js";import{a as r}from"../attributes-CwICYz98.js";import{i}from"../context-C2rsoDxk.js";import{t as a}from"../script-D3ZkiqwO.js";import{n as o,r as s,t as c}from"../media-played-ranges-CM2zeOGr.js";import{n as l,t as u}from"../embed-params-D2e8u0d4.js";import{n as d,r as f}from"../constants-B4LD5zrj.js";import{t as p}from"../media-error-CtsbOTR1.js";import{t as m}from"../media-attach-mixin-Igi3-1UG.js";const h={src:``,autoplay:!1,loop:!1,controls:!1,playsInline:!0,preload:`metadata`,poster:``,source:null};function g(e){if(!e)return null;let t=x.exec(e)??b.exec(e),n=t?.[1]?.toLowerCase(),r=t?.[2];return!n||!r?null:{type:n,id:r,startTime:v(e)}}function _(e,t={}){let n=g(e);if(!n)return``;let{preferVideo:r,referrerPolicy:i,...a}=t.source?.engine?.spotify??{},o={t:n.startTime,...a},s=r?`/video`:``,c=u(o);return`${y}/embed/${n.type}/${n.id}${s}${c?`?${c}`:``}`}function v(e){let t=/[?&]t=(\d+)/.exec(e)?.[1];return t?Number.parseInt(t,10):null}const y=`https://open.spotify.com`,b=/open\.spotify\.com\/(?:[\w-]+\/)*?(track|episode|album|playlist|show|artist)\/(\w+)/i,x=/^spotify:(track|episode|album|playlist|show|artist):(\w+)$/i;let S=null;function C(){let e=globalThis,t=e.SpotifyIframeApi;return t?Promise.resolve(t):(S??=new Promise((t,n)=>{let r=e.onSpotifyIframeApiReady;e.onSpotifyIframeApiReady=e=>{t(e),r?.(e)},a(`https://open.spotify.com/embed/iframe-api/v1`).catch(n)}).catch(e=>{throw S=null,e}),S)}const w=c(EventTarget);var T=class extends w{#e=null;#t=null;#n=!1;#r=!1;#i=!1;#a=s();#o=0;#s=h.src;#c=h.autoplay;#l=h.loop;#u=h.controls;#d=h.playsInline;#f=h.preload;#p=h.poster;#m=h.source;#h=!0;#g=!1;#_=!1;#v=!1;#y=0;#b=NaN;#x=j;#S=null;#C=!1;#w=!1;#T=!1;static PLAYER_SOFTWARE_NAME=`spotify-audio`;get engine(){return this.#t}get target(){return this.#e}attach(e){!e||this.#e===e||(this.#e&&this.detach(),this.#e=e,this.#E(),this.#D())}detach(){this.#e&&(this.#o++,l(()=>{this.#t&&(this.#t.iframeElement=D(),this.#t.destroy())}),this.#t=null,this.#n=!1,this.#r=!1,this.#i=!1,this.#e=null,this.#a.resolve(),this.#M())}destroy(){this.detach(),super.destroy()}get src(){return this.#s}set src(e){let{engine:t}=this.#m??{},n={...t&&{engine:t},...e&&{src:e}};this.source=Object.keys(n).length>0?n:null}get currentSrc(){return this.#e?.getAttribute(`src`)??``}get readyState(){return this.#x}async load(){if(!this.#t||!this.#n){if(this.#r=!!this.#e,this.#e&&!this.#t&&!this.#i){let e=this.#E();if(await Promise.resolve(),e!==this.#a)return;this.#D()}return}let t=this.#E();if(this.#M(),this.dispatchEvent(new Event(`emptied`)),!this.#s){t.resolve(),l(()=>this.#t?.pause());return}this.dispatchEvent(new Event(`loadstart`));let n=g(this.#s);if(!n){this.#S=new p(`Unrecognized Spotify source: ${this.#s}`,p.MEDIA_ERR_SRC_NOT_SUPPORTED),this.dispatchEvent(new Event(`error`)),t.resolve();return}let r=this.#e,i=_(this.#s,this.#j()),a=r?.getAttribute(`src`)??``,o=O(i)!==O(a)||A(i)&&k(i)!==k(a);if(r&&i&&o){r.src=i;return}this.#t.loadUri(`spotify:${n.type}:${n.id}`);let s=this.#m?.engine?.spotify?.t??n.startTime;e(s)&&(this.currentTime=s)}#E(){return this.#a.resolve(),this.#a=s(),this.#a}get paused(){return this.#h}get ended(){return this.#g}get seeking(){return this.#_}async play(){await this.#a,this.#s&&this.#t?.resume()}pause(){this.#w=!0,this.#t?.pause()}get currentTime(){return this.#y}set currentTime(e){this.#y!==e&&(this.#_=!0,this.#T=!1,this.#g=!1,this.#y=e,this.dispatchEvent(new Event(`seeking`)),this.dispatchEvent(new Event(`timeupdate`)),this.#A(t=>t.seek(e)))}get duration(){return this.#b}get autoplay(){return this.#c}set autoplay(e){this.#c=e}get loop(){return this.#l}set loop(e){this.#l=e}get controls(){return this.#u}set controls(e){this.#u=e}get playsInline(){return this.#d}set playsInline(e){this.#d=e}get preload(){return this.#f}set preload(e){this.#f=e}get poster(){return this.#p}set poster(e){this.#p=e}get source(){return this.#m}set source(e){let n=e??null;if(n===this.#m)return;let r=n?.src??``,i=this.#s!==r,a=!t(this.#m?.engine?.spotify??null,n?.engine?.spotify??null);this.#m=n,this.#s=r,(i||a)&&this.load(),this.dispatchEvent(new Event(`sourcechange`))}get buffered(){return this.#y>0?o(0,this.#y):f}get seekable(){return this.#b>0&&Number.isFinite(this.#b)?o(0,this.#b):f}get error(){return this.#S}get textTracks(){return d}#D(){let e=this.#e;if(!e||this.#t||this.#i)return!1;if(!e.getAttribute(`src`)){let t=_(this.#s,this.#j());if(!t)return this.#a.resolve(),!1;e.src=t}return this.#i=!0,this.dispatchEvent(new Event(`loadstart`)),this.#O(e),!0}async#O(e){let t=this.#o,n;try{n=await C()}catch{if(this.#k(t))return;this.#i=!1,this.#S=new p(`Failed to load the Spotify iframe API`,p.MEDIA_ERR_NETWORK),this.dispatchEvent(new Event(`error`)),this.#a.resolve();return}if(this.#k(t)||this.#e!==e)return;let{referrerPolicy:r,...i}=this.#m?.engine?.spotify??{},a=await new Promise(e=>n.createController(E(),i,e));if(this.#k(t)||this.#e!==e){l(()=>a.destroy());return}a.iframeElement=e,this.#t=a,this.#i=!1,this.#F(a,t)}#k(e){return e!==this.#o}#A(e){this.#a.then(()=>{let t=this.#t;t&&l(()=>e(t))},()=>{})}#j(){return{autoplay:this.#c,loop:this.#l,controls:this.#u,playsInline:this.#d,preload:this.#f||h.preload,source:this.#m}}#M(){this.#y=0,this.#b=NaN,this.#h=!this.#c,this.#g=!1,this.#x=j,this.#_=!1,this.#v=!1,this.#C=!1,this.#w=!1,this.#T=!1,this.#S=null}#N(){if(this.#n=!0,this.#r){this.#r=!1,this.load();return}this.#P()}#P(){if(!this.#v){this.#v=!0,this.#x=M;for(let e of[`loadedmetadata`,`durationchange`,`loadcomplete`])this.dispatchEvent(new Event(e));this.#a.resolve(),this.#c&&this.play()}}#F(e,t){e.addListener(`ready`,()=>{this.#k(t)||this.#N()}),e.addListener(`playback_update`,e=>{this.#k(t)||this.#I(e.data)})}#I(e){this.#s&&!this.#v&&this.#P(),!this.#R(e)&&(this.#z(e.duration),this.#B(e.position),!this.#V(e)&&this.#H())}#L(e){return e.isBuffering||!e.isPaused}#R(e){return!this.#T||!this.#h||!this.#L(e)?!1:(this.#T=!1,this.currentTime=P,!0)}#z(e){let t=e/1e3;t!==this.#b&&(this.#T=!1,this.#b=t,this.dispatchEvent(new Event(`durationchange`)))}#B(e){let t=e/1e3;if(this.#_){if(t<Math.floor(this.#y)||t>this.#y+F)return;this.#_=!1,this.dispatchEvent(new Event(`seeked`))}t!==this.#y&&(Math.ceil(t)<this.#b&&(this.#T=!1,this.#g=!1),this.#y=t,this.dispatchEvent(new Event(`timeupdate`)))}#V(e){return!this.#h&&e.isPaused?e.isBuffering&&!this.#w?this.#C?!1:(this.#C=!0,this.dispatchEvent(new Event(`waiting`)),!0):(this.#w=!1,this.#C=!1,this.#h=!0,this.dispatchEvent(new Event(`pause`)),!0):this.#h&&this.#L(e)?(this.#w=!1,this.#h=!1,this.#g=!1,this.dispatchEvent(new Event(`play`)),this.#C=e.isBuffering,this.#C||(this.#x=N),this.dispatchEvent(new Event(this.#C?`waiting`:`playing`)),!0):this.#C&&!e.isPaused?(this.#C=!1,this.#x=N,this.dispatchEvent(new Event(`playing`)),!0):!1}#H(){if(!(this.#h||this.#_||this.#T)&&!(!(this.#b>0)||!Number.isFinite(this.#b))&&!(Math.ceil(this.#y)<this.#b)){if(this.#T=!0,this.#l){this.currentTime=P;return}this.#h=!0,this.#g=!0,this.pause(),this.dispatchEvent(new Event(`pause`)),this.dispatchEvent(new Event(`ended`))}}};function E(){return globalThis.document.createElement(`div`)}function D(){return globalThis.document.createElement(`iframe`)}function O(e){let[,t]=e.split(`?`),n=new URLSearchParams(t);return n.delete(`t`),n.sort(),`${A(e)?`video`:`audio`}?${n}`}function k(e){return e.split(`?`)[0]??``}function A(e){return k(e).endsWith(`/video`)}const j=0,M=1,N=3,P=1,F=1;var I=class extends n(`iframe`,T){static{this.getTemplateHTML=e=>{let t=_(e.src??``,L(e));return`<style> :host { display: block; min-width: 160px; min-height: 80px; position: relative; } iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; } /* * Without Spotify's own chrome the embed is a transport and nothing else: * its player UI would otherwise show through whatever skin is drawn over * it. Hidden rather than merely inert, and important so a consumer's own * display rule cannot put it back on screen. An iframe in a hidden subtree * still loads and plays its src. */ :host(:not([controls])) { display: none !important; } </style><iframe part="iframe" ${t?` src="${r(t)}"`:``} allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" frameborder="0" width="100%" height="100%" referrerpolicy="${r(e.referrerpolicy??``)}" ></iframe>`}}};function L(e){return{autoplay:e.autoplay!==void 0,loop:e.loop!==void 0,controls:e.controls!==void 0,playsInline:e.playsinline!==void 0,preload:e.preload??`metadata`}}var R=class extends m(I){},z=class extends R{static{this.tagName=`spotify-audio`}};i(z);export{z as SpotifyAudioElement};
|
|
2
|
+
//# sourceMappingURL=spotify-audio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spotify-audio.js","names":["#controller","#target","#beginLoad","#createPlayer","#attachId","#controllerReady","#pendingLoad","#creatingController","#loadComplete","#resetState","#src","#source","#readyState","#error","#snapshotProps","#paused","#ended","#seeking","#pauseRequested","#currentTime","#closeToEnded","#afterLoad","#duration","#autoplay","#loop","#controls","#playsInline","#preload","#poster","#createControllerApi","#isStale","#bindControllerEvents","#loaded","#waiting","#onLoaded","#onControllerReady","#onPlaybackUpdate","#restartFromEnd","#syncDuration","#syncPosition","#syncPlayState","#checkEnded","#isStarting"],"sources":["../../../media/dist/default/dom/spotify/props.js","../../../media/dist/default/dom/spotify/source.js","../../../media/dist/default/dom/spotify/iframe-api.js","../../../media/dist/default/dom/spotify/media.js","../../src/media/spotify-audio/media.ts","../../src/define/media/spotify-audio.ts"],"sourcesContent":["//#region src/dom/spotify/props.ts\nconst spotifyMediaDefaultProps = {\n\tsrc: \"\",\n\tautoplay: false,\n\tloop: false,\n\tcontrols: false,\n\tplaysInline: true,\n\tpreload: \"metadata\",\n\tposter: \"\",\n\tsource: null\n};\n//#endregion\nexport { spotifyMediaDefaultProps };\n\n//# sourceMappingURL=props.js.map","import { serializeEmbedParams } from \"../utils/embed-params.js\";\n//#region src/dom/spotify/source.ts\n/** Extract a Spotify entity id from any recognized URL or `spotify:` URI. */\nfunction parseSpotifyEntityId(src) {\n\treturn parseSpotifySource(src)?.id ?? null;\n}\n/**\n* Parse a Spotify source string. Recognizes `open.spotify.com` URLs for every\n* embeddable entity — including the localized (`/intl-de/`) and already-embedded\n* (`/embed/`) forms, since the entity type and id sit in the same place in all of\n* them — `spotify:<type>:<id>` URIs, and start positions via the `t` parameter.\n*/\nfunction parseSpotifySource(src) {\n\tif (!src) return null;\n\tconst match = MATCH_URI.exec(src) ?? MATCH_SRC.exec(src);\n\tconst type = match?.[1]?.toLowerCase();\n\tconst id = match?.[2];\n\tif (!type || !id) return null;\n\treturn {\n\t\ttype,\n\t\tid,\n\t\tstartTime: parseStartTime(src)\n\t};\n}\n/** Build the iframe `src` URL for an initial Spotify embed from the given props. */\nfunction buildSpotifyIframeSrc(src, props = {}) {\n\tconst parsed = parseSpotifySource(src);\n\tif (!parsed) return \"\";\n\tconst { preferVideo, referrerPolicy: _referrerPolicy, ...spotify } = props.source?.engine?.spotify ?? {};\n\tconst params = {\n\t\tt: parsed.startTime,\n\t\t...spotify\n\t};\n\tconst videoPath = preferVideo ? \"/video\" : \"\";\n\tconst query = serializeEmbedParams(params);\n\treturn `${EMBED_BASE}/embed/${parsed.type}/${parsed.id}${videoPath}${query ? `?${query}` : \"\"}`;\n}\n/** Parse the `t` parameter from a Spotify share URL. Spotify spells it in seconds. */\nfunction parseStartTime(url) {\n\tconst value = /[?&]t=(\\d+)/.exec(url)?.[1];\n\treturn value ? Number.parseInt(value, 10) : null;\n}\nconst EMBED_BASE = \"https://open.spotify.com\";\nconst MATCH_SRC = /open\\.spotify\\.com\\/(?:[\\w-]+\\/)*?(track|episode|album|playlist|show|artist)\\/(\\w+)/i;\nconst MATCH_URI = /^spotify:(track|episode|album|playlist|show|artist):(\\w+)$/i;\n//#endregion\nexport { buildSpotifyIframeSrc, parseSpotifyEntityId, parseSpotifySource };\n\n//# sourceMappingURL=source.js.map","import { loadScript } from \"@videojs/utils/dom\";\n//#region src/dom/spotify/iframe-api.ts\nconst API_URL = \"https://open.spotify.com/embed/iframe-api/v1\";\nlet apiPromise = null;\n/** Load the iframe API once, reusing it if another host already pulled it in. */\nfunction loadSpotifyIframeApi() {\n\tconst globals = globalThis;\n\tconst existing = globals.SpotifyIframeApi;\n\tif (existing) return Promise.resolve(existing);\n\tapiPromise ??= new Promise((resolve, reject) => {\n\t\tconst hostReady = globals.onSpotifyIframeApiReady;\n\t\tglobals.onSpotifyIframeApiReady = (api) => {\n\t\t\tresolve(api);\n\t\t\thostReady?.(api);\n\t\t};\n\t\tloadScript(API_URL).catch(reject);\n\t}).catch((error) => {\n\t\tapiPromise = null;\n\t\tthrow error;\n\t});\n\treturn apiPromise;\n}\n//#endregion\nexport { loadSpotifyIframeApi };\n\n//# sourceMappingURL=iframe-api.js.map","import { EMPTY_TEXT_TRACKS, EMPTY_TIME_RANGES } from \"../../core/constants.js\";\nimport { MediaError } from \"../../core/media-error.js\";\nimport { createTimeRange } from \"../utils/time-ranges.js\";\nimport { MediaPlayedRangesMixin } from \"../media-played-ranges/media-played-ranges.js\";\nimport { loadSpotifyIframeApi } from \"./iframe-api.js\";\nimport { spotifyMediaDefaultProps } from \"./props.js\";\nimport { buildSpotifyIframeSrc, parseSpotifySource } from \"./source.js\";\nimport { isNumber } from \"@videojs/utils/predicate\";\nimport { deepEqual } from \"@videojs/utils/object\";\nimport { createPublicPromise, tryCall } from \"@videojs/utils/function\";\n//#region src/dom/spotify/media.ts\nconst SpotifyMediaBase = MediaPlayedRangesMixin(EventTarget);\n/**\n* @fires sourcechange - Fired when `source` changes, either directly or by resolving a new `src`. Read `source` for the new value.\n*/\nvar SpotifyMedia = class extends SpotifyMediaBase {\n\t#target = null;\n\t#controller = null;\n\t#controllerReady = false;\n\t#pendingLoad = false;\n\t#creatingController = false;\n\t#loadComplete = createPublicPromise();\n\t#attachId = 0;\n\t#src = spotifyMediaDefaultProps.src;\n\t#autoplay = spotifyMediaDefaultProps.autoplay;\n\t#loop = spotifyMediaDefaultProps.loop;\n\t#controls = spotifyMediaDefaultProps.controls;\n\t#playsInline = spotifyMediaDefaultProps.playsInline;\n\t#preload = spotifyMediaDefaultProps.preload;\n\t#poster = spotifyMediaDefaultProps.poster;\n\t#source = spotifyMediaDefaultProps.source;\n\t#paused = true;\n\t#ended = false;\n\t#seeking = false;\n\t#loaded = false;\n\t#currentTime = 0;\n\t#duration = NaN;\n\t#readyState = READY_STATE_HAVE_NOTHING;\n\t#error = null;\n\t#waiting = false;\n\t#pauseRequested = false;\n\t#closeToEnded = false;\n\tstatic PLAYER_SOFTWARE_NAME = \"spotify-audio\";\n\t/** Underlying Spotify iframe API controller (null until the API loads). */\n\tget engine() {\n\t\treturn this.#controller;\n\t}\n\t/** The iframe holding the embed, which everything from the embed URL down is written to. */\n\tget target() {\n\t\treturn this.#target;\n\t}\n\t/** Bind the iframe hosting the embed; the API and controller follow as soon as an embed URL resolves. */\n\tattach(target) {\n\t\tif (!target || this.#target === target) return;\n\t\tif (this.#target) this.detach();\n\t\tthis.#target = target;\n\t\tthis.#beginLoad();\n\t\tthis.#createPlayer();\n\t}\n\tdetach() {\n\t\tif (!this.#target) return;\n\t\tthis.#attachId++;\n\t\ttryCall(() => {\n\t\t\tif (this.#controller) {\n\t\t\t\tthis.#controller.iframeElement = createControllerPlaceholderFrame();\n\t\t\t\tthis.#controller.destroy();\n\t\t\t}\n\t\t});\n\t\tthis.#controller = null;\n\t\tthis.#controllerReady = false;\n\t\tthis.#pendingLoad = false;\n\t\tthis.#creatingController = false;\n\t\tthis.#target = null;\n\t\tthis.#loadComplete.resolve();\n\t\tthis.#resetState();\n\t}\n\tdestroy() {\n\t\tthis.detach();\n\t\tsuper.destroy();\n\t}\n\tget src() {\n\t\treturn this.#src;\n\t}\n\t/** Spotify URL or URI. Setting it re-derives `source`, carrying its embed options over. */\n\tset src(value) {\n\t\tconst { engine } = this.#source ?? {};\n\t\tconst next = {\n\t\t\t...engine && { engine },\n\t\t\t...value && { src: value }\n\t\t};\n\t\tthis.source = Object.keys(next).length > 0 ? next : null;\n\t}\n\tget currentSrc() {\n\t\treturn this.#target?.getAttribute(\"src\") ?? \"\";\n\t}\n\tget readyState() {\n\t\treturn this.#readyState;\n\t}\n\t/** Reload the current source via the iframe API; deferred until the controller is ready. */\n\tasync load() {\n\t\tif (!this.#controller || !this.#controllerReady) {\n\t\t\tthis.#pendingLoad = !!this.#target;\n\t\t\tif (this.#target && !this.#controller && !this.#creatingController) {\n\t\t\t\tconst load = this.#beginLoad();\n\t\t\t\tawait Promise.resolve();\n\t\t\t\tif (load !== this.#loadComplete) return;\n\t\t\t\tthis.#createPlayer();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst load = this.#beginLoad();\n\t\tthis.#resetState();\n\t\tthis.dispatchEvent(new Event(\"emptied\"));\n\t\tif (!this.#src) {\n\t\t\tload.resolve();\n\t\t\ttryCall(() => this.#controller?.pause());\n\t\t\treturn;\n\t\t}\n\t\tthis.dispatchEvent(new Event(\"loadstart\"));\n\t\tconst parsed = parseSpotifySource(this.#src);\n\t\tif (!parsed) {\n\t\t\tthis.#error = new MediaError(`Unrecognized Spotify source: ${this.#src}`, MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);\n\t\t\tthis.dispatchEvent(new Event(\"error\"));\n\t\t\tload.resolve();\n\t\t\treturn;\n\t\t}\n\t\tconst target = this.#target;\n\t\tconst embedSrc = buildSpotifyIframeSrc(this.#src, this.#snapshotProps());\n\t\tconst embeddedSrc = target?.getAttribute(\"src\") ?? \"\";\n\t\tconst rebuild = embedOptionsOf(embedSrc) !== embedOptionsOf(embeddedSrc) || isVideoEmbed(embedSrc) && embedPathOf(embedSrc) !== embedPathOf(embeddedSrc);\n\t\tif (target && embedSrc && rebuild) {\n\t\t\ttarget.src = embedSrc;\n\t\t\treturn;\n\t\t}\n\t\tthis.#controller.loadUri(`spotify:${parsed.type}:${parsed.id}`);\n\t\tconst startTime = this.#source?.engine?.spotify?.t ?? parsed.startTime;\n\t\tif (isNumber(startTime)) this.currentTime = startTime;\n\t}\n\t#beginLoad() {\n\t\tthis.#loadComplete.resolve();\n\t\tthis.#loadComplete = createPublicPromise();\n\t\treturn this.#loadComplete;\n\t}\n\tget paused() {\n\t\treturn this.#paused;\n\t}\n\tget ended() {\n\t\treturn this.#ended;\n\t}\n\tget seeking() {\n\t\treturn this.#seeking;\n\t}\n\tasync play() {\n\t\tawait this.#loadComplete;\n\t\tif (!this.#src) return;\n\t\tthis.#controller?.resume();\n\t}\n\tpause() {\n\t\tthis.#pauseRequested = true;\n\t\tthis.#controller?.pause();\n\t}\n\tget currentTime() {\n\t\treturn this.#currentTime;\n\t}\n\tset currentTime(value) {\n\t\tif (this.#currentTime === value) return;\n\t\tthis.#seeking = true;\n\t\tthis.#closeToEnded = false;\n\t\tthis.#ended = false;\n\t\tthis.#currentTime = value;\n\t\tthis.dispatchEvent(new Event(\"seeking\"));\n\t\tthis.dispatchEvent(new Event(\"timeupdate\"));\n\t\tthis.#afterLoad((controller) => controller.seek(value));\n\t}\n\tget duration() {\n\t\treturn this.#duration;\n\t}\n\tget autoplay() {\n\t\treturn this.#autoplay;\n\t}\n\tset autoplay(value) {\n\t\tthis.#autoplay = value;\n\t}\n\tget loop() {\n\t\treturn this.#loop;\n\t}\n\tset loop(value) {\n\t\tthis.#loop = value;\n\t}\n\tget controls() {\n\t\treturn this.#controls;\n\t}\n\tset controls(value) {\n\t\tthis.#controls = value;\n\t}\n\tget playsInline() {\n\t\treturn this.#playsInline;\n\t}\n\tset playsInline(value) {\n\t\tthis.#playsInline = value;\n\t}\n\tget preload() {\n\t\treturn this.#preload;\n\t}\n\tset preload(value) {\n\t\tthis.#preload = value;\n\t}\n\tget poster() {\n\t\treturn this.#poster;\n\t}\n\tset poster(value) {\n\t\tthis.#poster = value;\n\t}\n\t/** Spotify URL or URI in `src`, plus embed options under `engine.spotify`. Replacing it re-derives `src`. */\n\tget source() {\n\t\treturn this.#source;\n\t}\n\tset source(value) {\n\t\tconst source = value ?? null;\n\t\tif (source === this.#source) return;\n\t\tconst src = source?.src ?? \"\";\n\t\tconst srcChanged = this.#src !== src;\n\t\tconst engineChanged = !deepEqual(this.#source?.engine?.spotify ?? null, source?.engine?.spotify ?? null);\n\t\tthis.#source = source;\n\t\tthis.#src = src;\n\t\tif (srcChanged || engineChanged) this.load();\n\t\tthis.dispatchEvent(new Event(\"sourcechange\"));\n\t}\n\tget buffered() {\n\t\treturn this.#currentTime > 0 ? createTimeRange(0, this.#currentTime) : EMPTY_TIME_RANGES;\n\t}\n\tget seekable() {\n\t\treturn this.#duration > 0 && Number.isFinite(this.#duration) ? createTimeRange(0, this.#duration) : EMPTY_TIME_RANGES;\n\t}\n\tget error() {\n\t\treturn this.#error;\n\t}\n\t/** Always empty: the embed exposes no captions or other text tracks. */\n\tget textTracks() {\n\t\treturn EMPTY_TEXT_TRACKS;\n\t}\n\t#createPlayer() {\n\t\tconst target = this.#target;\n\t\tif (!target || this.#controller || this.#creatingController) return false;\n\t\tif (!target.getAttribute(\"src\")) {\n\t\t\tconst initialSrc = buildSpotifyIframeSrc(this.#src, this.#snapshotProps());\n\t\t\tif (!initialSrc) {\n\t\t\t\tthis.#loadComplete.resolve();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\ttarget.src = initialSrc;\n\t\t}\n\t\tthis.#creatingController = true;\n\t\tthis.dispatchEvent(new Event(\"loadstart\"));\n\t\tthis.#createControllerApi(target);\n\t\treturn true;\n\t}\n\tasync #createControllerApi(target) {\n\t\tconst attachId = this.#attachId;\n\t\tlet api;\n\t\ttry {\n\t\t\tapi = await loadSpotifyIframeApi();\n\t\t} catch {\n\t\t\tif (this.#isStale(attachId)) return;\n\t\t\tthis.#creatingController = false;\n\t\t\tthis.#error = new MediaError(\"Failed to load the Spotify iframe API\", MediaError.MEDIA_ERR_NETWORK);\n\t\t\tthis.dispatchEvent(new Event(\"error\"));\n\t\t\tthis.#loadComplete.resolve();\n\t\t\treturn;\n\t\t}\n\t\tif (this.#isStale(attachId) || this.#target !== target) return;\n\t\tconst { referrerPolicy: _referrerPolicy, ...options } = this.#source?.engine?.spotify ?? {};\n\t\tconst controller = await new Promise((resolve) => api.createController(createControllerPlaceholder(), options, resolve));\n\t\tif (this.#isStale(attachId) || this.#target !== target) {\n\t\t\ttryCall(() => controller.destroy());\n\t\t\treturn;\n\t\t}\n\t\tcontroller.iframeElement = target;\n\t\tthis.#controller = controller;\n\t\tthis.#creatingController = false;\n\t\tthis.#bindControllerEvents(controller, attachId);\n\t}\n\t#isStale(attachId) {\n\t\treturn attachId !== this.#attachId;\n\t}\n\t#afterLoad(fn) {\n\t\tthis.#loadComplete.then(() => {\n\t\t\tconst controller = this.#controller;\n\t\t\tif (controller) tryCall(() => fn(controller));\n\t\t}, () => {});\n\t}\n\t#snapshotProps() {\n\t\treturn {\n\t\t\tautoplay: this.#autoplay,\n\t\t\tloop: this.#loop,\n\t\t\tcontrols: this.#controls,\n\t\t\tplaysInline: this.#playsInline,\n\t\t\tpreload: this.#preload || spotifyMediaDefaultProps.preload,\n\t\t\tsource: this.#source\n\t\t};\n\t}\n\t#resetState() {\n\t\tthis.#currentTime = 0;\n\t\tthis.#duration = NaN;\n\t\tthis.#paused = !this.#autoplay;\n\t\tthis.#ended = false;\n\t\tthis.#readyState = READY_STATE_HAVE_NOTHING;\n\t\tthis.#seeking = false;\n\t\tthis.#loaded = false;\n\t\tthis.#waiting = false;\n\t\tthis.#pauseRequested = false;\n\t\tthis.#closeToEnded = false;\n\t\tthis.#error = null;\n\t}\n\t#onControllerReady() {\n\t\tthis.#controllerReady = true;\n\t\tif (this.#pendingLoad) {\n\t\t\tthis.#pendingLoad = false;\n\t\t\tthis.load();\n\t\t\treturn;\n\t\t}\n\t\tthis.#onLoaded();\n\t}\n\t#onLoaded() {\n\t\tif (this.#loaded) return;\n\t\tthis.#loaded = true;\n\t\tthis.#readyState = READY_STATE_HAVE_METADATA;\n\t\tfor (const type of [\n\t\t\t\"loadedmetadata\",\n\t\t\t\"durationchange\",\n\t\t\t\"loadcomplete\"\n\t\t]) this.dispatchEvent(new Event(type));\n\t\tthis.#loadComplete.resolve();\n\t\tif (this.#autoplay) this.play();\n\t}\n\t#bindControllerEvents(controller, attachId) {\n\t\tcontroller.addListener(\"ready\", () => {\n\t\t\tif (this.#isStale(attachId)) return;\n\t\t\tthis.#onControllerReady();\n\t\t});\n\t\tcontroller.addListener(\"playback_update\", (event) => {\n\t\t\tif (this.#isStale(attachId)) return;\n\t\t\tthis.#onPlaybackUpdate(event.data);\n\t\t});\n\t}\n\t#onPlaybackUpdate(data) {\n\t\tif (this.#src && !this.#loaded) this.#onLoaded();\n\t\tif (this.#restartFromEnd(data)) return;\n\t\tthis.#syncDuration(data.duration);\n\t\tthis.#syncPosition(data.position);\n\t\tif (this.#syncPlayState(data)) return;\n\t\tthis.#checkEnded();\n\t}\n\t#isStarting(data) {\n\t\treturn data.isBuffering || !data.isPaused;\n\t}\n\t#restartFromEnd(data) {\n\t\tif (!this.#closeToEnded || !this.#paused || !this.#isStarting(data)) return false;\n\t\tthis.#closeToEnded = false;\n\t\tthis.currentTime = REPLAY_POSITION;\n\t\treturn true;\n\t}\n\t#syncDuration(duration) {\n\t\tconst seconds = duration / 1e3;\n\t\tif (seconds === this.#duration) return;\n\t\tthis.#closeToEnded = false;\n\t\tthis.#duration = seconds;\n\t\tthis.dispatchEvent(new Event(\"durationchange\"));\n\t}\n\t#syncPosition(position) {\n\t\tconst seconds = position / 1e3;\n\t\tif (this.#seeking) {\n\t\t\tif (seconds < Math.floor(this.#currentTime) || seconds > this.#currentTime + SNAPSHOT_INTERVAL) return;\n\t\t\tthis.#seeking = false;\n\t\t\tthis.dispatchEvent(new Event(\"seeked\"));\n\t\t}\n\t\tif (seconds === this.#currentTime) return;\n\t\tif (Math.ceil(seconds) < this.#duration) {\n\t\t\tthis.#closeToEnded = false;\n\t\t\tthis.#ended = false;\n\t\t}\n\t\tthis.#currentTime = seconds;\n\t\tthis.dispatchEvent(new Event(\"timeupdate\"));\n\t}\n\t#syncPlayState(data) {\n\t\tif (!this.#paused && data.isPaused) {\n\t\t\tif (data.isBuffering && !this.#pauseRequested) {\n\t\t\t\tif (this.#waiting) return false;\n\t\t\t\tthis.#waiting = true;\n\t\t\t\tthis.dispatchEvent(new Event(\"waiting\"));\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tthis.#pauseRequested = false;\n\t\t\tthis.#waiting = false;\n\t\t\tthis.#paused = true;\n\t\t\tthis.dispatchEvent(new Event(\"pause\"));\n\t\t\treturn true;\n\t\t}\n\t\tif (this.#paused && this.#isStarting(data)) {\n\t\t\tthis.#pauseRequested = false;\n\t\t\tthis.#paused = false;\n\t\t\tthis.#ended = false;\n\t\t\tthis.dispatchEvent(new Event(\"play\"));\n\t\t\tthis.#waiting = data.isBuffering;\n\t\t\tif (!this.#waiting) this.#readyState = READY_STATE_HAVE_FUTURE_DATA;\n\t\t\tthis.dispatchEvent(new Event(this.#waiting ? \"waiting\" : \"playing\"));\n\t\t\treturn true;\n\t\t}\n\t\tif (this.#waiting && !data.isPaused) {\n\t\t\tthis.#waiting = false;\n\t\t\tthis.#readyState = READY_STATE_HAVE_FUTURE_DATA;\n\t\t\tthis.dispatchEvent(new Event(\"playing\"));\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\t#checkEnded() {\n\t\tif (this.#paused || this.#seeking || this.#closeToEnded) return;\n\t\tif (!(this.#duration > 0) || !Number.isFinite(this.#duration)) return;\n\t\tif (Math.ceil(this.#currentTime) < this.#duration) return;\n\t\tthis.#closeToEnded = true;\n\t\tif (this.#loop) {\n\t\t\tthis.currentTime = REPLAY_POSITION;\n\t\t\treturn;\n\t\t}\n\t\tthis.#paused = true;\n\t\tthis.#ended = true;\n\t\tthis.pause();\n\t\tthis.dispatchEvent(new Event(\"pause\"));\n\t\tthis.dispatchEvent(new Event(\"ended\"));\n\t}\n};\nfunction createControllerPlaceholder() {\n\treturn globalThis.document.createElement(\"div\");\n}\nfunction createControllerPlaceholderFrame() {\n\treturn globalThis.document.createElement(\"iframe\");\n}\nfunction embedOptionsOf(src) {\n\tconst [, query] = src.split(\"?\");\n\tconst params = new URLSearchParams(query);\n\tparams.delete(\"t\");\n\tparams.sort();\n\treturn `${isVideoEmbed(src) ? \"video\" : \"audio\"}?${params}`;\n}\nfunction embedPathOf(src) {\n\treturn src.split(\"?\")[0] ?? \"\";\n}\nfunction isVideoEmbed(src) {\n\treturn embedPathOf(src).endsWith(\"/video\");\n}\nconst READY_STATE_HAVE_NOTHING = 0;\nconst READY_STATE_HAVE_METADATA = 1;\nconst READY_STATE_HAVE_FUTURE_DATA = 3;\nconst REPLAY_POSITION = 1;\nconst SNAPSHOT_INTERVAL = 1;\n//#endregion\nexport { SpotifyMedia };\n\n//# sourceMappingURL=media.js.map","import { CustomMediaElement } from '@videojs/media/dom/custom-media-element';\nimport { buildSpotifyIframeSrc, SpotifyMedia } from '@videojs/media/dom/spotify';\nimport { escapeHtml } from '@videojs/utils/string';\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nclass SpotifyCustomMediaElement extends CustomMediaElement('iframe', SpotifyMedia) {\n static override getTemplateHTML = (attrs: Record<string, string>): string => {\n const initialSrc = buildSpotifyIframeSrc(attrs.src ?? '', templateAttrsToEmbedProps(attrs));\n const srcAttr = initialSrc ? ` src=\"${escapeHtml(initialSrc)}\"` : '';\n return /*html*/ `\n <style>\n :host {\n display: block;\n min-width: 160px;\n min-height: 80px;\n position: relative;\n }\n iframe {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n /*\n * Without Spotify's own chrome the embed is a transport and nothing else:\n * its player UI would otherwise show through whatever skin is drawn over\n * it. Hidden rather than merely inert, and important so a consumer's own\n * display rule cannot put it back on screen. An iframe in a hidden subtree\n * still loads and plays its src.\n */\n :host(:not([controls])) {\n display: none !important;\n }\n </style>\n <iframe\n part=\"iframe\"\n ${srcAttr}\n allow=\"autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture\"\n frameborder=\"0\"\n width=\"100%\"\n height=\"100%\"\n referrerpolicy=\"${escapeHtml(attrs.referrerpolicy ?? '')}\"\n ></iframe>\n `;\n };\n}\n\nfunction templateAttrsToEmbedProps(attrs: Record<string, string>) {\n return {\n autoplay: attrs.autoplay !== undefined,\n loop: attrs.loop !== undefined,\n controls: attrs.controls !== undefined,\n playsInline: attrs.playsinline !== undefined,\n preload: (attrs.preload as 'none' | 'metadata' | 'auto' | undefined) ?? 'metadata',\n };\n}\n\nexport class SpotifyAudio extends MediaAttachMixin(SpotifyCustomMediaElement) {}\n","import { SpotifyAudio } from '../../media/spotify-audio';\nimport { safeDefine } from '../safe-define';\n\nexport class SpotifyAudioElement extends SpotifyAudio {\n static readonly tagName = 'spotify-audio';\n}\n\nsafeDefine(SpotifyAudioElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [SpotifyAudioElement.tagName]: SpotifyAudioElement;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|