@videojs/html 10.0.0-beta.29 → 10.0.0-beta.30
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/{ar-BgO-vdw6.js → ar-BbHGxPgW.js} +2 -2
- package/cdn/{ar-BgO-vdw6.js.map → ar-BbHGxPgW.js.map} +1 -1
- package/cdn/{ar-DGKbeOEU.js → ar-DsPINVvV.js} +2 -2
- package/cdn/{ar-DGKbeOEU.js.map → ar-DsPINVvV.js.map} +1 -1
- package/cdn/audio-headless.dev.js +1 -1
- package/cdn/audio-headless.js +1 -1
- package/cdn/audio-minimal-ui.dev.js +1 -1
- package/cdn/audio-minimal-ui.js +1 -1
- package/cdn/audio-minimal.dev.js +4 -4
- package/cdn/audio-minimal.dev.js.map +1 -1
- package/cdn/audio-minimal.js +1 -1
- package/cdn/audio-minimal.js.map +1 -1
- package/cdn/audio-ui.dev.js +1 -1
- package/cdn/audio-ui.js +1 -1
- package/cdn/audio.dev.js +4 -4
- package/cdn/audio.dev.js.map +1 -1
- package/cdn/audio.js +1 -1
- package/cdn/audio.js.map +1 -1
- package/cdn/{az-BXA58gAV.js → az-BNG9I9VB.js} +2 -2
- package/cdn/{az-BXA58gAV.js.map → az-BNG9I9VB.js.map} +1 -1
- package/cdn/{az-BT93Xmvh.js → az-q6l4N3j1.js} +2 -2
- package/cdn/{az-BT93Xmvh.js.map → az-q6l4N3j1.js.map} +1 -1
- package/cdn/background.dev.js +1 -1
- package/cdn/background.js +1 -1
- package/cdn/{bg-CNMY77ir.js → bg-BdKU1ynW.js} +2 -2
- package/cdn/{bg-CNMY77ir.js.map → bg-BdKU1ynW.js.map} +1 -1
- package/cdn/{bg-B3I4SlRq.js → bg-DCWtl1c4.js} +2 -2
- package/cdn/{bg-B3I4SlRq.js.map → bg-DCWtl1c4.js.map} +1 -1
- package/cdn/{bn-KcCmQhYd.js → bn-BbmORCrv.js} +2 -2
- package/cdn/{bn-KcCmQhYd.js.map → bn-BbmORCrv.js.map} +1 -1
- package/cdn/{bn-CcLIScl6.js → bn-DZmQ9OJ-.js} +2 -2
- package/cdn/{bn-CcLIScl6.js.map → bn-DZmQ9OJ-.js.map} +1 -1
- package/cdn/{bs-BGd6Lc0X.js → bs-BvptjSqN.js} +2 -2
- package/cdn/{bs-BGd6Lc0X.js.map → bs-BvptjSqN.js.map} +1 -1
- package/cdn/{bs-CS5F7Fa6.js → bs-Cw5PmwUl.js} +2 -2
- package/cdn/{bs-CS5F7Fa6.js.map → bs-Cw5PmwUl.js.map} +1 -1
- package/cdn/{ca-BIdQJZV-.js → ca-Cn5dI2Qs.js} +2 -2
- package/cdn/{ca-BIdQJZV-.js.map → ca-Cn5dI2Qs.js.map} +1 -1
- package/cdn/{ca-tFUfQ2mI.js → ca-CoCZNriH.js} +2 -2
- package/cdn/{ca-tFUfQ2mI.js.map → ca-CoCZNriH.js.map} +1 -1
- package/cdn/compounds-CHlzbAKu.js +8 -0
- package/cdn/compounds-CHlzbAKu.js.map +1 -0
- package/cdn/{compounds-C73u1MeO.js → compounds-D1FPw7jg.js} +99 -109
- package/cdn/compounds-D1FPw7jg.js.map +1 -0
- package/cdn/{create-player-Db1CIvlK.js → create-player-5UrHNqBI.js} +704 -704
- package/cdn/create-player-5UrHNqBI.js.map +1 -0
- package/cdn/create-player-LjvbIxIq.js +2 -0
- package/cdn/create-player-LjvbIxIq.js.map +1 -0
- package/cdn/{cs-B9lsmY_k.js → cs-BV3Sx3fM.js} +2 -2
- package/cdn/{cs-B9lsmY_k.js.map → cs-BV3Sx3fM.js.map} +1 -1
- package/cdn/{cs-CGi94LND.js → cs-D5U7GOvT.js} +2 -2
- package/cdn/{cs-CGi94LND.js.map → cs-D5U7GOvT.js.map} +1 -1
- package/cdn/{cy-m5eMZq7d.js → cy-C1ARfOdw.js} +2 -2
- package/cdn/{cy-m5eMZq7d.js.map → cy-C1ARfOdw.js.map} +1 -1
- package/cdn/{cy-DW6qAdUj.js → cy-DudRluPj.js} +2 -2
- package/cdn/{cy-DW6qAdUj.js.map → cy-DudRluPj.js.map} +1 -1
- package/cdn/{da-B5RntG8L.js → da-B7ZwuW3M.js} +2 -2
- package/cdn/{da-B5RntG8L.js.map → da-B7ZwuW3M.js.map} +1 -1
- package/cdn/{da-BW7obU8g.js → da-II10K6Ey.js} +2 -2
- package/cdn/{da-BW7obU8g.js.map → da-II10K6Ey.js.map} +1 -1
- package/cdn/{de-D3KzJ5Tz.js → de-B6OPMaJ5.js} +2 -2
- package/cdn/{de-D3KzJ5Tz.js.map → de-B6OPMaJ5.js.map} +1 -1
- package/cdn/{de-B1BbfHoj.js → de-Dp0rNs6I.js} +2 -2
- package/cdn/{de-B1BbfHoj.js.map → de-Dp0rNs6I.js.map} +1 -1
- package/cdn/device-pixel-ratio-BuD3pqk8.js +2 -0
- package/cdn/device-pixel-ratio-BuD3pqk8.js.map +1 -0
- package/cdn/device-pixel-ratio-mmUkCbE0.js +48 -0
- package/cdn/device-pixel-ratio-mmUkCbE0.js.map +1 -0
- package/cdn/{el-DpHi5eUV.js → el-EOboxCMK.js} +2 -2
- package/cdn/{el-DpHi5eUV.js.map → el-EOboxCMK.js.map} +1 -1
- package/cdn/{el-B0opiKbz.js → el-KnLx85RQ.js} +2 -2
- package/cdn/{el-B0opiKbz.js.map → el-KnLx85RQ.js.map} +1 -1
- package/cdn/{error-surface-D0bo71gD.js → error-surface-BOIu7qNS.js} +30 -13
- package/cdn/error-surface-BOIu7qNS.js.map +1 -0
- package/cdn/{error-surface-BID4D3DW.js → error-surface-CK9nYgD5.js} +2 -2
- package/cdn/error-surface-CK9nYgD5.js.map +1 -0
- package/cdn/{es-DPmLLGjd.js → es--93P_KGd.js} +2 -2
- package/cdn/{es-DPmLLGjd.js.map → es--93P_KGd.js.map} +1 -1
- package/cdn/{es-R4DSKG7w.js → es-COk6VYCt.js} +2 -2
- package/cdn/{es-R4DSKG7w.js.map → es-COk6VYCt.js.map} +1 -1
- package/cdn/{et-DQHjBg68.js → et-B_7oInYP.js} +2 -2
- package/cdn/{et-DQHjBg68.js.map → et-B_7oInYP.js.map} +1 -1
- package/cdn/{et-Ba6ZgMTe.js → et-aUy-aqQn.js} +2 -2
- package/cdn/{et-Ba6ZgMTe.js.map → et-aUy-aqQn.js.map} +1 -1
- package/cdn/{eu-CBUcm8xq.js → eu-B6ITLPO5.js} +2 -2
- package/cdn/{eu-CBUcm8xq.js.map → eu-B6ITLPO5.js.map} +1 -1
- package/cdn/{eu-DXctohCN.js → eu-BG9wftF5.js} +2 -2
- package/cdn/{eu-DXctohCN.js.map → eu-BG9wftF5.js.map} +1 -1
- package/cdn/{fa-BSekhYli.js → fa-Dh0ufSh-.js} +2 -2
- package/cdn/{fa-BSekhYli.js.map → fa-Dh0ufSh-.js.map} +1 -1
- package/cdn/{fa-DVErbQrK.js → fa-Vvr1px4j.js} +2 -2
- package/cdn/{fa-DVErbQrK.js.map → fa-Vvr1px4j.js.map} +1 -1
- package/cdn/{fi-CvnyRW00.js → fi-BG_ciEXf.js} +2 -2
- package/cdn/{fi-CvnyRW00.js.map → fi-BG_ciEXf.js.map} +1 -1
- package/cdn/{fi-CFpiNsK2.js → fi-XtLm7xkM.js} +2 -2
- package/cdn/{fi-CFpiNsK2.js.map → fi-XtLm7xkM.js.map} +1 -1
- package/cdn/{fr-V1tRQlCS.js → fr-BXWr8Jqu.js} +2 -2
- package/cdn/{fr-V1tRQlCS.js.map → fr-BXWr8Jqu.js.map} +1 -1
- package/cdn/{fr-DFpP-osm.js → fr-CHcVddjH.js} +2 -2
- package/cdn/{fr-DFpP-osm.js.map → fr-CHcVddjH.js.map} +1 -1
- package/cdn/{gd-BSg8cDZO.js → gd-4GF6aH0c.js} +2 -2
- package/cdn/{gd-BSg8cDZO.js.map → gd-4GF6aH0c.js.map} +1 -1
- package/cdn/{gd-qpj49Ajf.js → gd-DjfDHZSD.js} +2 -2
- package/cdn/{gd-qpj49Ajf.js.map → gd-DjfDHZSD.js.map} +1 -1
- package/cdn/{gesture-element-CeRy1IVs.js → gesture-element-BbNy1Pjt.js} +2 -2
- package/cdn/{gesture-element-CeRy1IVs.js.map → gesture-element-BbNy1Pjt.js.map} +1 -1
- package/cdn/{gesture-element-DB67OYCE.js → gesture-element-KdpjbbBD.js} +3 -3
- package/cdn/{gesture-element-DB67OYCE.js.map → gesture-element-KdpjbbBD.js.map} +1 -1
- package/cdn/{gl-BkUKK3Id.js → gl-CMgj66_6.js} +2 -2
- package/cdn/{gl-BkUKK3Id.js.map → gl-CMgj66_6.js.map} +1 -1
- package/cdn/{gl-9SEblv-S.js → gl-D9ioIzwX.js} +2 -2
- package/cdn/{gl-9SEblv-S.js.map → gl-D9ioIzwX.js.map} +1 -1
- package/cdn/{he-1PXxurjR.js → he-CfWrcfG4.js} +2 -2
- package/cdn/{he-1PXxurjR.js.map → he-CfWrcfG4.js.map} +1 -1
- package/cdn/{he-DA_NFjk3.js → he-DfwOOgbT.js} +2 -2
- package/cdn/{he-DA_NFjk3.js.map → he-DfwOOgbT.js.map} +1 -1
- package/cdn/{hi-u7gnYTbQ.js → hi-BZ3n5dDB.js} +2 -2
- package/cdn/{hi-u7gnYTbQ.js.map → hi-BZ3n5dDB.js.map} +1 -1
- package/cdn/{hi-qm1t0A8G.js → hi-D3c9qx7l.js} +2 -2
- package/cdn/{hi-qm1t0A8G.js.map → hi-D3c9qx7l.js.map} +1 -1
- package/cdn/{hr-BlnRGxrs.js → hr-DEA0U32S.js} +2 -2
- package/cdn/{hr-BlnRGxrs.js.map → hr-DEA0U32S.js.map} +1 -1
- package/cdn/{hr-YlMHxjnx.js → hr-WZJQxYNC.js} +2 -2
- package/cdn/{hr-YlMHxjnx.js.map → hr-WZJQxYNC.js.map} +1 -1
- package/cdn/{hu-Cpl4civp.js → hu-Ci9TDNn-.js} +2 -2
- package/cdn/{hu-Cpl4civp.js.map → hu-Ci9TDNn-.js.map} +1 -1
- package/cdn/{hu-CfmcttWR.js → hu-XOjo5JlM.js} +2 -2
- package/cdn/{hu-CfmcttWR.js.map → hu-XOjo5JlM.js.map} +1 -1
- package/cdn/{i18n-D0nhPa0m.js → i18n-DeI9j-ko.js} +2 -2
- package/cdn/{i18n-D0nhPa0m.js.map → i18n-DeI9j-ko.js.map} +1 -1
- package/cdn/i18n-R3TQ8P2f.js +2 -0
- package/cdn/{i18n-CpBDXf6M.js.map → i18n-R3TQ8P2f.js.map} +1 -1
- package/cdn/i18n.dev.js +53 -53
- package/cdn/i18n.js +1 -1
- package/cdn/{id-COi2HloV.js → id-D2Z0jj2m.js} +2 -2
- package/cdn/{id-COi2HloV.js.map → id-D2Z0jj2m.js.map} +1 -1
- package/cdn/{id-Be_i6jhO.js → id-D9XC3sJi.js} +2 -2
- package/cdn/{id-Be_i6jhO.js.map → id-D9XC3sJi.js.map} +1 -1
- package/cdn/{it-B18weK94.js → it-CDVRQsJC.js} +2 -2
- package/cdn/{it-B18weK94.js.map → it-CDVRQsJC.js.map} +1 -1
- package/cdn/{it-DKKYDPD1.js → it-tbmwIgns.js} +2 -2
- package/cdn/{it-DKKYDPD1.js.map → it-tbmwIgns.js.map} +1 -1
- package/cdn/{ja-CeZwzavz.js → ja-Di4sbE9W.js} +2 -2
- package/cdn/{ja-CeZwzavz.js.map → ja-Di4sbE9W.js.map} +1 -1
- package/cdn/{ja-Bk6dXsfM.js → ja-DuWgmes7.js} +2 -2
- package/cdn/{ja-Bk6dXsfM.js.map → ja-DuWgmes7.js.map} +1 -1
- package/cdn/{ko-DpALhNiw.js → ko-BX5hcvm_.js} +2 -2
- package/cdn/{ko-DpALhNiw.js.map → ko-BX5hcvm_.js.map} +1 -1
- package/cdn/{ko-DzP46eEm.js → ko-CvalpIGs.js} +2 -2
- package/cdn/{ko-DzP46eEm.js.map → ko-CvalpIGs.js.map} +1 -1
- package/cdn/{live-button-element-Co8z2LkI.js → live-button-element-C-WypudK.js} +2 -2
- package/cdn/{live-button-element-Co8z2LkI.js.map → live-button-element-C-WypudK.js.map} +1 -1
- package/cdn/{live-button-element-zE-8uoR2.js → live-button-element-CylfQD0v.js} +3 -3
- package/cdn/{live-button-element-zE-8uoR2.js.map → live-button-element-CylfQD0v.js.map} +1 -1
- package/cdn/live-video-minimal.dev.js +7 -7
- 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 +8 -8
- 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/ar.dev.js +1 -1
- package/cdn/locales/ar.js +1 -1
- package/cdn/locales/az.dev.js +1 -1
- package/cdn/locales/az.js +1 -1
- package/cdn/locales/bg.dev.js +1 -1
- package/cdn/locales/bg.js +1 -1
- package/cdn/locales/bn.dev.js +1 -1
- package/cdn/locales/bn.js +1 -1
- package/cdn/locales/bs.dev.js +1 -1
- package/cdn/locales/bs.js +1 -1
- package/cdn/locales/ca.dev.js +1 -1
- package/cdn/locales/ca.js +1 -1
- package/cdn/locales/cs.dev.js +1 -1
- package/cdn/locales/cs.js +1 -1
- package/cdn/locales/cy.dev.js +1 -1
- package/cdn/locales/cy.js +1 -1
- package/cdn/locales/da.dev.js +1 -1
- package/cdn/locales/da.js +1 -1
- package/cdn/locales/de.dev.js +1 -1
- package/cdn/locales/de.js +1 -1
- package/cdn/locales/el.dev.js +1 -1
- package/cdn/locales/el.js +1 -1
- package/cdn/locales/es.dev.js +1 -1
- package/cdn/locales/es.js +1 -1
- package/cdn/locales/et.dev.js +1 -1
- package/cdn/locales/et.js +1 -1
- package/cdn/locales/eu.dev.js +1 -1
- package/cdn/locales/eu.js +1 -1
- package/cdn/locales/fa.dev.js +1 -1
- package/cdn/locales/fa.js +1 -1
- package/cdn/locales/fi.dev.js +1 -1
- package/cdn/locales/fi.js +1 -1
- package/cdn/locales/fr.dev.js +1 -1
- package/cdn/locales/fr.js +1 -1
- package/cdn/locales/gd.dev.js +1 -1
- package/cdn/locales/gd.js +1 -1
- package/cdn/locales/gl.dev.js +1 -1
- package/cdn/locales/gl.js +1 -1
- package/cdn/locales/he.dev.js +1 -1
- package/cdn/locales/he.js +1 -1
- package/cdn/locales/hi.dev.js +1 -1
- package/cdn/locales/hi.js +1 -1
- package/cdn/locales/hr.dev.js +1 -1
- package/cdn/locales/hr.js +1 -1
- package/cdn/locales/hu.dev.js +1 -1
- package/cdn/locales/hu.js +1 -1
- package/cdn/locales/id.dev.js +1 -1
- package/cdn/locales/id.js +1 -1
- package/cdn/locales/it.dev.js +1 -1
- package/cdn/locales/it.js +1 -1
- package/cdn/locales/ja.dev.js +1 -1
- package/cdn/locales/ja.js +1 -1
- package/cdn/locales/ko.dev.js +1 -1
- package/cdn/locales/ko.js +1 -1
- package/cdn/locales/lt.dev.js +1 -1
- package/cdn/locales/lt.js +1 -1
- package/cdn/locales/lv.dev.js +1 -1
- package/cdn/locales/lv.js +1 -1
- package/cdn/locales/mr.dev.js +1 -1
- package/cdn/locales/mr.js +1 -1
- package/cdn/locales/nb.dev.js +1 -1
- package/cdn/locales/nb.js +1 -1
- package/cdn/locales/ne.dev.js +1 -1
- package/cdn/locales/ne.js +1 -1
- package/cdn/locales/nl.dev.js +1 -1
- package/cdn/locales/nl.js +1 -1
- package/cdn/locales/nn.dev.js +1 -1
- package/cdn/locales/nn.js +1 -1
- package/cdn/locales/oc.dev.js +1 -1
- package/cdn/locales/oc.js +1 -1
- package/cdn/locales/pl.dev.js +1 -1
- package/cdn/locales/pl.js +1 -1
- package/cdn/locales/pt-BR.dev.js +1 -1
- package/cdn/locales/pt-BR.js +1 -1
- package/cdn/locales/pt-PT.dev.js +1 -1
- package/cdn/locales/pt-PT.js +1 -1
- package/cdn/locales/pt.dev.js +1 -1
- package/cdn/locales/pt.js +1 -1
- package/cdn/locales/ro.dev.js +1 -1
- package/cdn/locales/ro.js +1 -1
- package/cdn/locales/ru.dev.js +1 -1
- package/cdn/locales/ru.js +1 -1
- package/cdn/locales/sk.dev.js +1 -1
- package/cdn/locales/sk.js +1 -1
- package/cdn/locales/sl.dev.js +1 -1
- package/cdn/locales/sl.js +1 -1
- package/cdn/locales/sr.dev.js +1 -1
- package/cdn/locales/sr.js +1 -1
- package/cdn/locales/sv.dev.js +1 -1
- package/cdn/locales/sv.js +1 -1
- package/cdn/locales/te.dev.js +1 -1
- package/cdn/locales/te.js +1 -1
- package/cdn/locales/th.dev.js +1 -1
- package/cdn/locales/th.js +1 -1
- package/cdn/locales/tr.dev.js +1 -1
- package/cdn/locales/tr.js +1 -1
- package/cdn/locales/uk.dev.js +1 -1
- package/cdn/locales/uk.js +1 -1
- package/cdn/locales/vi.dev.js +1 -1
- package/cdn/locales/vi.js +1 -1
- package/cdn/locales/zh-CN.dev.js +1 -1
- package/cdn/locales/zh-CN.js +1 -1
- package/cdn/locales/zh-TW.dev.js +1 -1
- package/cdn/locales/zh-TW.js +1 -1
- package/cdn/locales/zh.dev.js +1 -1
- package/cdn/locales/zh.js +1 -1
- package/cdn/{lt-CJC2CVhF.js → lt-DLXeAqcs.js} +2 -2
- package/cdn/{lt-CJC2CVhF.js.map → lt-DLXeAqcs.js.map} +1 -1
- package/cdn/{lt-y_SCQZXc.js → lt-ZQzwrnWQ.js} +2 -2
- package/cdn/{lt-y_SCQZXc.js.map → lt-ZQzwrnWQ.js.map} +1 -1
- package/cdn/{lv-E4LvfHSK.js → lv-CsVQVy3v.js} +2 -2
- package/cdn/{lv-E4LvfHSK.js.map → lv-CsVQVy3v.js.map} +1 -1
- package/cdn/{lv-CfdIbjKR.js → lv-RRA9zY_N.js} +2 -2
- package/cdn/{lv-CfdIbjKR.js.map → lv-RRA9zY_N.js.map} +1 -1
- package/cdn/media/cloudflare-video.dev.js +2 -2
- package/cdn/media/cloudflare-video.js +1 -1
- package/cdn/media/hls-audio.dev.js +1 -1
- package/cdn/media/hls-audio.js +1 -1
- package/cdn/media/hls-background-video.dev.js +1 -1
- package/cdn/media/hls-background-video.js +1 -1
- package/cdn/media/hls-video.dev.js +1 -1
- package/cdn/media/hls-video.js +1 -1
- package/cdn/media/mux-audio/spf.dev.js +1 -1
- package/cdn/media/mux-audio/spf.js +1 -1
- package/cdn/media/mux-background-video.dev.js +1 -1
- package/cdn/media/mux-background-video.js +1 -1
- package/cdn/media/mux-data.dev.js +1 -1
- package/cdn/media/mux-data.dev.js.map +1 -1
- package/cdn/media/mux-data.js +1 -1
- package/cdn/media/mux-data.js.map +1 -1
- package/cdn/media/mux-video/spf.dev.js +1 -1
- package/cdn/media/mux-video/spf.js +1 -1
- package/cdn/media/shaka-video.dev.d.ts +1 -0
- package/cdn/media/shaka-video.dev.js +35132 -0
- package/cdn/media/shaka-video.dev.js.map +1 -0
- package/cdn/media/shaka-video.js +55 -0
- package/cdn/media/shaka-video.js.map +1 -0
- package/cdn/media/spotify-audio.dev.js +2 -2
- package/cdn/media/spotify-audio.js +1 -1
- package/cdn/media/tiktok-video.dev.js +2 -2
- package/cdn/media/tiktok-video.js +1 -1
- package/cdn/media/twitch-video.dev.js +1 -1
- package/cdn/media/twitch-video.js +1 -1
- package/cdn/media/vimeo-video.dev.js +2 -2
- package/cdn/media/vimeo-video.js +2 -2
- package/cdn/media/youtube-video.dev.js +2 -2
- package/cdn/media/youtube-video.js +1 -1
- package/cdn/{media-mYKOAsk3.js → media-B4uT13xV.js} +13 -29
- package/cdn/media-B4uT13xV.js.map +1 -0
- package/cdn/{media-DI6DvYm3.js → media-B6LoDnMy.js} +57 -3
- package/cdn/media-B6LoDnMy.js.map +1 -0
- package/cdn/media-D6Xer97u.js +2 -0
- package/cdn/media-D6Xer97u.js.map +1 -0
- package/cdn/media-DdApyCAP.js +2 -0
- package/cdn/media-DdApyCAP.js.map +1 -0
- package/cdn/{media-D4tG62L5.js → media-YTtOjoEw.js} +2 -2
- package/cdn/{media-D4tG62L5.js.map → media-YTtOjoEw.js.map} +1 -1
- package/cdn/{media-BI8caj07.js → media-aZ7x4gGL.js} +3 -3
- package/cdn/{media-BI8caj07.js.map → media-aZ7x4gGL.js.map} +1 -1
- package/cdn/minimal-ui-D3XCtSx_.js +2 -0
- package/cdn/{minimal-ui-BXrq3z4U.js.map → minimal-ui-D3XCtSx_.js.map} +1 -1
- package/cdn/{minimal-ui-BCIESK8f.js → minimal-ui-KUzZkG_3.js} +8 -8
- package/cdn/{minimal-ui-BCIESK8f.js.map → minimal-ui-KUzZkG_3.js.map} +1 -1
- package/cdn/{minimal-ui-DEalpMk6.js → minimal-ui-ajeAXABk.js} +4 -4
- package/cdn/{minimal-ui-DEalpMk6.js.map → minimal-ui-ajeAXABk.js.map} +1 -1
- package/cdn/{minimal-ui-vY3QgohH.js → minimal-ui-p9QCZfCz.js} +2 -2
- package/cdn/{minimal-ui-vY3QgohH.js.map → minimal-ui-p9QCZfCz.js.map} +1 -1
- package/cdn/{mr-C4OijKV_.js → mr-CZ7oMzua.js} +2 -2
- package/cdn/{mr-C4OijKV_.js.map → mr-CZ7oMzua.js.map} +1 -1
- package/cdn/{mr-DmbgkSem.js → mr-CgFYVcpx.js} +2 -2
- package/cdn/{mr-DmbgkSem.js.map → mr-CgFYVcpx.js.map} +1 -1
- package/cdn/{nb-Bx5aKqbD.js → nb-DWtHJLYf.js} +2 -2
- package/cdn/{nb-Bx5aKqbD.js.map → nb-DWtHJLYf.js.map} +1 -1
- package/cdn/{nb-DQ3Nq1ZC.js → nb-ahqFuIy4.js} +2 -2
- package/cdn/{nb-DQ3Nq1ZC.js.map → nb-ahqFuIy4.js.map} +1 -1
- package/cdn/{ne-DTL8Y04V.js → ne-CFkutVHH.js} +2 -2
- package/cdn/{ne-DTL8Y04V.js.map → ne-CFkutVHH.js.map} +1 -1
- package/cdn/{ne-BM_WgrGC.js → ne-DQx0S7DC.js} +2 -2
- package/cdn/{ne-BM_WgrGC.js.map → ne-DQx0S7DC.js.map} +1 -1
- package/cdn/{nl-C7CWKQe5.js → nl-BbWS-uoT.js} +2 -2
- package/cdn/{nl-C7CWKQe5.js.map → nl-BbWS-uoT.js.map} +1 -1
- package/cdn/{nl-DMt-nkiN.js → nl-V4DJd2nd.js} +2 -2
- package/cdn/{nl-DMt-nkiN.js.map → nl-V4DJd2nd.js.map} +1 -1
- package/cdn/{nn-BOoGZjkf.js → nn-BoY6X0bu.js} +2 -2
- package/cdn/{nn-BOoGZjkf.js.map → nn-BoY6X0bu.js.map} +1 -1
- package/cdn/{nn-CT846E14.js → nn-Bp2EWBHZ.js} +2 -2
- package/cdn/{nn-CT846E14.js.map → nn-Bp2EWBHZ.js.map} +1 -1
- package/cdn/observe-elements-B4q3zaDw.js +79 -0
- package/cdn/observe-elements-B4q3zaDw.js.map +1 -0
- package/cdn/observe-elements-BivD4tHs.js +2 -0
- package/cdn/observe-elements-BivD4tHs.js.map +1 -0
- package/cdn/{oc-DQgnGeb2.js → oc-BJrdQkma.js} +2 -2
- package/cdn/{oc-DQgnGeb2.js.map → oc-BJrdQkma.js.map} +1 -1
- package/cdn/{oc-ClJwr9d0.js → oc-Dto6NU-U.js} +2 -2
- package/cdn/{oc-ClJwr9d0.js.map → oc-Dto6NU-U.js.map} +1 -1
- package/cdn/{pl-B7SFuF8C.js → pl-BmUKjVFU.js} +2 -2
- package/cdn/{pl-B7SFuF8C.js.map → pl-BmUKjVFU.js.map} +1 -1
- package/cdn/{pl-DWVOOhfp.js → pl-HlPnZjYT.js} +2 -2
- package/cdn/{pl-DWVOOhfp.js.map → pl-HlPnZjYT.js.map} +1 -1
- package/cdn/{player-B3GlPF90.js → player-B5zkgqwT.js} +2 -2
- package/cdn/{player-B3GlPF90.js.map → player-B5zkgqwT.js.map} +1 -1
- package/cdn/{player-DPDmTRvg.js → player-BXQMSpgR.js} +2 -2
- package/cdn/{player-DPDmTRvg.js.map → player-BXQMSpgR.js.map} +1 -1
- package/cdn/{player-CtTC7qa5.js → player-BuxifKSM.js} +2 -2
- package/cdn/{player-CtTC7qa5.js.map → player-BuxifKSM.js.map} +1 -1
- package/cdn/{player-DrDd7LJi.js → player-CngT-cVQ.js} +2 -2
- package/cdn/{player-DrDd7LJi.js.map → player-CngT-cVQ.js.map} +1 -1
- package/cdn/{player-L5UpZmT4.js → player-DMP2pc3L.js} +2 -2
- package/cdn/{player-L5UpZmT4.js.map → player-DMP2pc3L.js.map} +1 -1
- package/cdn/{player-DKkph8UM.js → player-POHYt5tr.js} +2 -2
- package/cdn/{player-DKkph8UM.js.map → player-POHYt5tr.js.map} +1 -1
- package/cdn/{poster-element-B5tdJ2ub.js → poster-element-CuCEBVr3.js} +3 -11
- package/cdn/poster-element-CuCEBVr3.js.map +1 -0
- package/cdn/{poster-element-B8QwXSU_.js → poster-element-Djlm5fwC.js} +2 -2
- package/cdn/{poster-element-B8QwXSU_.js.map → poster-element-Djlm5fwC.js.map} +1 -1
- package/cdn/{pt-BR-Dx0zZKM6.js → pt-BR-Cfv1ox9K.js} +2 -2
- package/cdn/{pt-BR-Dx0zZKM6.js.map → pt-BR-Cfv1ox9K.js.map} +1 -1
- package/cdn/{pt-BR-BweixWSY.js → pt-BR-j4XWQBdJ.js} +2 -2
- package/cdn/{pt-BR-BweixWSY.js.map → pt-BR-j4XWQBdJ.js.map} +1 -1
- package/cdn/{pt-C0Z9dXhV.js → pt-BUBSLaBp.js} +3 -3
- package/cdn/{pt-C0Z9dXhV.js.map → pt-BUBSLaBp.js.map} +1 -1
- package/cdn/{pt-PT-Di4o8ntw.js → pt-PT-DQ0otVWH.js} +2 -2
- package/cdn/{pt-PT-Di4o8ntw.js.map → pt-PT-DQ0otVWH.js.map} +1 -1
- package/cdn/{pt-PT-DlHt57Eg.js → pt-PT-DdJVXfMB.js} +2 -2
- package/cdn/{pt-PT-DlHt57Eg.js.map → pt-PT-DdJVXfMB.js.map} +1 -1
- package/cdn/pt-akbpk7gG.js +2 -0
- package/cdn/{pt-ohZp6iM5.js.map → pt-akbpk7gG.js.map} +1 -1
- package/cdn/relocation-pipelines-CBzRuD_s.js +2 -0
- package/cdn/relocation-pipelines-CBzRuD_s.js.map +1 -0
- package/cdn/{relocation-pipelines-Dh8CcgHw.js → relocation-pipelines-R2UVEy5p.js} +38 -2
- package/cdn/relocation-pipelines-R2UVEy5p.js.map +1 -0
- package/cdn/resolution-C4bCDOw4.js +2 -0
- package/cdn/resolution-C4bCDOw4.js.map +1 -0
- package/cdn/resolution-DPr_vTWF.js +29 -0
- package/cdn/resolution-DPr_vTWF.js.map +1 -0
- package/cdn/{ro-BB4KBp_W.js → ro-BiexogxI.js} +2 -2
- package/cdn/{ro-BB4KBp_W.js.map → ro-BiexogxI.js.map} +1 -1
- package/cdn/{ro-BU9kKrWV.js → ro-X-mft-iF.js} +2 -2
- package/cdn/{ro-BU9kKrWV.js.map → ro-X-mft-iF.js.map} +1 -1
- package/cdn/rolldown-runtime-KW3qVizi.js +42 -0
- package/cdn/rolldown-runtime-QTnfLwEv.js +1 -0
- package/cdn/{ru-CajU7FT2.js → ru-15_5g81L.js} +2 -2
- package/cdn/{ru-CajU7FT2.js.map → ru-15_5g81L.js.map} +1 -1
- package/cdn/{ru-BrWt8VXI.js → ru-GHEfsz_c.js} +2 -2
- package/cdn/{ru-BrWt8VXI.js.map → ru-GHEfsz_c.js.map} +1 -1
- package/cdn/{seek-button-element-5co-k0Dx.js → seek-button-element-BD2caCd5.js} +3 -3
- package/cdn/{seek-button-element-5co-k0Dx.js.map → seek-button-element-BD2caCd5.js.map} +1 -1
- package/cdn/{seek-button-element-B8TkILg-.js → seek-button-element-CgaXVFPS.js} +2 -2
- package/cdn/{seek-button-element-B8TkILg-.js.map → seek-button-element-CgaXVFPS.js.map} +1 -1
- package/cdn/{sk-DOZafohX.js → sk-BEvGx8AE.js} +2 -2
- package/cdn/{sk-DOZafohX.js.map → sk-BEvGx8AE.js.map} +1 -1
- package/cdn/{sk-XGkesNm5.js → sk-CbZOx0Xf.js} +2 -2
- package/cdn/{sk-XGkesNm5.js.map → sk-CbZOx0Xf.js.map} +1 -1
- package/cdn/{skin-element-DrkI8xuM.js → skin-element-DE8OodF5.js} +2 -2
- package/cdn/skin-element-DE8OodF5.js.map +1 -0
- package/cdn/{skin-element-DvX6Bxsv.js → skin-element-PDwjO4v0.js} +2 -10
- package/cdn/{skin-element-DvX6Bxsv.js.map → skin-element-PDwjO4v0.js.map} +1 -1
- package/cdn/{sl-CHuwx211.js → sl-BqYDAX6g.js} +2 -2
- package/cdn/{sl-CHuwx211.js.map → sl-BqYDAX6g.js.map} +1 -1
- package/cdn/{sl-CuZgo3JI.js → sl-D7uEXtkn.js} +2 -2
- package/cdn/{sl-CuZgo3JI.js.map → sl-D7uEXtkn.js.map} +1 -1
- package/cdn/{sr-BsZrd40u.js → sr-CBBykxkN.js} +2 -2
- package/cdn/{sr-BsZrd40u.js.map → sr-CBBykxkN.js.map} +1 -1
- package/cdn/{sr-CzT_52m8.js → sr-D10ir4DL.js} +2 -2
- package/cdn/{sr-CzT_52m8.js.map → sr-D10ir4DL.js.map} +1 -1
- package/cdn/{sv-CsISpTMM.js → sv-BGcohnZb.js} +2 -2
- package/cdn/{sv-CsISpTMM.js.map → sv-BGcohnZb.js.map} +1 -1
- package/cdn/{sv-hxsarb6k.js → sv-he8gk9up.js} +2 -2
- package/cdn/{sv-hxsarb6k.js.map → sv-he8gk9up.js.map} +1 -1
- package/cdn/{te-DUaUnw1d.js → te-DhEDBJ0Q.js} +2 -2
- package/cdn/{te-DUaUnw1d.js.map → te-DhEDBJ0Q.js.map} +1 -1
- package/cdn/{te-CG0NRKuG.js → te-Dw2hLtHG.js} +2 -2
- package/cdn/{te-CG0NRKuG.js.map → te-Dw2hLtHG.js.map} +1 -1
- package/cdn/{text-element-BoY6AhMn.js → text-element-BJyj7nLo.js} +2 -2
- package/cdn/{text-element-BoY6AhMn.js.map → text-element-BJyj7nLo.js.map} +1 -1
- package/cdn/{text-element-cg6l21cd.js → text-element-dyiwucQB.js} +2 -2
- package/cdn/{text-element-cg6l21cd.js.map → text-element-dyiwucQB.js.map} +1 -1
- package/cdn/{th-BYS5ZpYb.js → th-B3iYzmd5.js} +2 -2
- package/cdn/{th-BYS5ZpYb.js.map → th-B3iYzmd5.js.map} +1 -1
- package/cdn/{th-Bx_CvtvC.js → th-BMZDRGQ7.js} +2 -2
- package/cdn/{th-Bx_CvtvC.js.map → th-BMZDRGQ7.js.map} +1 -1
- package/cdn/{time-slider-chapters-element-CznFQWFm.js → time-slider-chapters-element-BTMqnBhM.js} +3 -3
- package/cdn/{time-slider-chapters-element-CznFQWFm.js.map → time-slider-chapters-element-BTMqnBhM.js.map} +1 -1
- package/cdn/{time-slider-chapters-element-BfLjdnU4.js → time-slider-chapters-element-b6oeaZtJ.js} +2 -2
- package/cdn/{time-slider-chapters-element-BfLjdnU4.js.map → time-slider-chapters-element-b6oeaZtJ.js.map} +1 -1
- package/cdn/{tr-5Cegmhcj.js → tr-BJOEOizJ.js} +2 -2
- package/cdn/{tr-5Cegmhcj.js.map → tr-BJOEOizJ.js.map} +1 -1
- package/cdn/{tr-BV5YcpOy.js → tr-CdLz59Rt.js} +2 -2
- package/cdn/{tr-BV5YcpOy.js.map → tr-CdLz59Rt.js.map} +1 -1
- package/cdn/{ui-BwzqkJNK.js → ui-BsUcH4YJ.js} +7 -7
- package/cdn/{ui-BwzqkJNK.js.map → ui-BsUcH4YJ.js.map} +1 -1
- package/cdn/{ui-fnKp94a7.js → ui-CtONjPC2.js} +9 -9
- package/cdn/{ui-fnKp94a7.js.map → ui-CtONjPC2.js.map} +1 -1
- package/cdn/ui-CxftD4RF.js +2 -0
- package/cdn/{ui-DayfItun.js.map → ui-CxftD4RF.js.map} +1 -1
- package/cdn/ui-DLvwCbsU.js +2 -0
- package/cdn/{ui-PSnD-pv8.js.map → ui-DLvwCbsU.js.map} +1 -1
- package/cdn/{uk-DsHkf0ZB.js → uk-BTa1prcg.js} +2 -2
- package/cdn/{uk-DsHkf0ZB.js.map → uk-BTa1prcg.js.map} +1 -1
- package/cdn/{uk-D2WGhYFz.js → uk-BW53WsQa.js} +2 -2
- package/cdn/{uk-D2WGhYFz.js.map → uk-BW53WsQa.js.map} +1 -1
- package/cdn/{vi-DBLOO1G4.js → vi-CGDf02ms.js} +2 -2
- package/cdn/{vi-DBLOO1G4.js.map → vi-CGDf02ms.js.map} +1 -1
- package/cdn/{vi-CORn5e7t.js → vi-CcOG_Tlw.js} +2 -2
- package/cdn/{vi-CORn5e7t.js.map → vi-CcOG_Tlw.js.map} +1 -1
- package/cdn/video-headless.dev.js +1 -1
- package/cdn/video-headless.js +1 -1
- package/cdn/video-minimal-ui.dev.js +1 -1
- package/cdn/video-minimal-ui.js +1 -1
- package/cdn/video-minimal.dev.js +4 -4
- package/cdn/video-minimal.dev.js.map +1 -1
- package/cdn/video-minimal.js +1 -1
- package/cdn/video-minimal.js.map +1 -1
- package/cdn/video-ui.dev.js +1 -1
- package/cdn/video-ui.js +1 -1
- package/cdn/video.dev.js +5 -5
- package/cdn/video.dev.js.map +1 -1
- package/cdn/video.js +1 -1
- package/cdn/video.js.map +1 -1
- package/cdn/{zh-R2vnxJiQ.js → zh-34ObMhvt.js} +3 -3
- package/cdn/{zh-R2vnxJiQ.js.map → zh-34ObMhvt.js.map} +1 -1
- package/cdn/{zh-CN-Cga4L1h3.js → zh-CN-C_IU0JUw.js} +2 -2
- package/cdn/{zh-CN-Cga4L1h3.js.map → zh-CN-C_IU0JUw.js.map} +1 -1
- package/cdn/{zh-CN-xq6taoBE.js → zh-CN-rZeJec8v.js} +2 -2
- package/cdn/{zh-CN-xq6taoBE.js.map → zh-CN-rZeJec8v.js.map} +1 -1
- package/cdn/zh-Cf3NSZs8.js +2 -0
- package/cdn/{zh-CtBcRYRs.js.map → zh-Cf3NSZs8.js.map} +1 -1
- package/cdn/{zh-TW-DWI1-WUt.js → zh-TW-5fFrgVzt.js} +2 -2
- package/cdn/{zh-TW-DWI1-WUt.js.map → zh-TW-5fFrgVzt.js.map} +1 -1
- package/cdn/{zh-TW-Dca2WbyD.js → zh-TW-BvuhCu_U.js} +2 -2
- package/cdn/{zh-TW-Dca2WbyD.js.map → zh-TW-BvuhCu_U.js.map} +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
- package/dist/default/define/audio/minimal-skin.css +1 -3
- package/dist/default/define/audio/skin.css +1 -3
- package/dist/default/define/live-audio/minimal-skin.css +1 -3
- package/dist/default/define/live-audio/skin.css +1 -3
- package/dist/default/define/live-video/minimal-skin.css +2 -31
- package/dist/default/define/live-video/skin.css +2 -33
- package/dist/default/define/media/shaka-video.js +13 -0
- package/dist/default/define/media/shaka-video.js.map +1 -0
- package/dist/default/define/skin-element.js +0 -8
- package/dist/default/define/skin-element.js.map +1 -1
- package/dist/default/define/ui/title.js +7 -0
- package/dist/default/define/ui/title.js.map +1 -0
- package/dist/default/define/video/minimal-skin.css +2 -31
- package/dist/default/define/video/skin.css +2 -33
- package/dist/default/index.js +2 -1
- package/dist/default/media/shaka-video/media.js +9 -0
- package/dist/default/media/shaka-video/media.js.map +1 -0
- package/dist/default/skins/dist/default/default/tailwind/components/button.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/menu.js +2 -2
- package/dist/default/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/poster.js +1 -7
- package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +1 -10
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js +2 -2
- package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +1 -7
- package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +1 -10
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/ui/poster/poster-element.js +0 -8
- package/dist/default/ui/poster/poster-element.js.map +1 -1
- package/dist/default/ui/thumbnail/thumbnail-element.js +22 -7
- package/dist/default/ui/thumbnail/thumbnail-element.js.map +1 -1
- package/dist/default/ui/time/time-element.js +2 -3
- package/dist/default/ui/time/time-element.js.map +1 -1
- package/dist/default/ui/title/title-element.js +37 -0
- package/dist/default/ui/title/title-element.js.map +1 -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 +1 -3
- package/dist/dev/define/audio/skin.css +1 -3
- package/dist/dev/define/live-audio/minimal-skin.css +1 -3
- package/dist/dev/define/live-audio/skin.css +1 -3
- package/dist/dev/define/live-video/minimal-skin.css +2 -31
- package/dist/dev/define/live-video/skin.css +2 -33
- package/dist/dev/define/media/shaka-video.d.ts +14 -0
- package/dist/dev/define/media/shaka-video.d.ts.map +1 -0
- package/dist/dev/define/media/shaka-video.js +13 -0
- package/dist/dev/define/media/shaka-video.js.map +1 -0
- package/dist/dev/define/skin-element.d.ts +0 -2
- package/dist/dev/define/skin-element.d.ts.map +1 -1
- package/dist/dev/define/skin-element.js +0 -8
- package/dist/dev/define/skin-element.js.map +1 -1
- package/dist/dev/define/ui/title.d.ts +8 -0
- package/dist/dev/define/ui/title.d.ts.map +1 -0
- package/dist/dev/define/ui/title.js +7 -0
- package/dist/dev/define/ui/title.js.map +1 -0
- package/dist/dev/define/video/minimal-skin.css +2 -31
- package/dist/dev/define/video/skin.css +2 -33
- package/dist/dev/index.d.ts +3 -2
- package/dist/dev/index.js +2 -1
- package/dist/dev/media/shaka-video/index.d.ts +2 -0
- package/dist/dev/media/shaka-video/media.d.ts +19 -0
- package/dist/dev/media/shaka-video/media.d.ts.map +1 -0
- package/dist/dev/media/shaka-video/media.js +9 -0
- package/dist/dev/media/shaka-video/media.js.map +1 -0
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/button.js +1 -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/menu.js +2 -2
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/poster.js +1 -7
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js +1 -10
- 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/button.js +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/menu.js +2 -2
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/poster.js +1 -7
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js +1 -10
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/ui/captions-button/captions-button-element.d.ts +1 -0
- package/dist/dev/ui/captions-button/captions-button-element.d.ts.map +1 -1
- package/dist/dev/ui/poster/poster-element.d.ts +0 -2
- package/dist/dev/ui/poster/poster-element.d.ts.map +1 -1
- package/dist/dev/ui/poster/poster-element.js +0 -8
- package/dist/dev/ui/poster/poster-element.js.map +1 -1
- package/dist/dev/ui/thumbnail/thumbnail-element.d.ts.map +1 -1
- package/dist/dev/ui/thumbnail/thumbnail-element.js +22 -7
- package/dist/dev/ui/thumbnail/thumbnail-element.js.map +1 -1
- package/dist/dev/ui/time/time-element.d.ts.map +1 -1
- package/dist/dev/ui/time/time-element.js +2 -3
- package/dist/dev/ui/time/time-element.js.map +1 -1
- package/dist/dev/ui/title/title-element.d.ts +18 -0
- package/dist/dev/ui/title/title-element.d.ts.map +1 -0
- package/dist/dev/ui/title/title-element.js +38 -0
- package/dist/dev/ui/title/title-element.js.map +1 -0
- package/docs/README.md +1 -1
- package/docs/concepts/presets.md +4 -4
- package/docs/concepts/skins.md +6 -37
- package/docs/how-to/add-a-poster-placeholder.md +52 -0
- package/docs/how-to/customize-skins.md +6 -70
- package/docs/how-to/migrate-from-mux-player.md +12 -6
- package/docs/llms.txt +3 -0
- package/docs/reference/feature-fullscreen.md +7 -8
- package/docs/reference/feature-metadata.md +141 -0
- package/docs/reference/feature-orientation-lock.md +99 -7
- package/docs/reference/feature-text-tracks.md +10 -0
- package/docs/reference/menu.md +0 -1
- package/docs/reference/thumbnail.md +4 -0
- package/docs/reference/title.md +211 -0
- package/package.json +9 -9
- package/cdn/compounds-C4YYLyL2.js +0 -8
- package/cdn/compounds-C4YYLyL2.js.map +0 -1
- package/cdn/compounds-C73u1MeO.js.map +0 -1
- package/cdn/create-player-BU8LDJDL.js +0 -2
- package/cdn/create-player-BU8LDJDL.js.map +0 -1
- package/cdn/create-player-Db1CIvlK.js.map +0 -1
- package/cdn/error-surface-BID4D3DW.js.map +0 -1
- package/cdn/error-surface-D0bo71gD.js.map +0 -1
- package/cdn/i18n-CpBDXf6M.js +0 -2
- package/cdn/media-CQxFuDcv.js +0 -2
- package/cdn/media-CQxFuDcv.js.map +0 -1
- package/cdn/media-DI6DvYm3.js.map +0 -1
- package/cdn/media-mYKOAsk3.js.map +0 -1
- package/cdn/media-zReLnePj.js +0 -2
- package/cdn/media-zReLnePj.js.map +0 -1
- package/cdn/minimal-ui-BXrq3z4U.js +0 -2
- package/cdn/poster-element-B5tdJ2ub.js.map +0 -1
- package/cdn/pt-ohZp6iM5.js +0 -2
- package/cdn/relocation-pipelines-Dh8CcgHw.js.map +0 -1
- package/cdn/relocation-pipelines-DunE4gcV.js +0 -2
- package/cdn/relocation-pipelines-DunE4gcV.js.map +0 -1
- package/cdn/rolldown-runtime-DK3Fl9T5.js +0 -1
- package/cdn/rolldown-runtime-w6R9maHv.js +0 -18
- package/cdn/skin-element-DrkI8xuM.js.map +0 -1
- package/cdn/ui-DayfItun.js +0 -2
- package/cdn/ui-PSnD-pv8.js +0 -2
- package/cdn/zh-CtBcRYRs.js +0 -2
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { a as isNull, r as isFunction, s as isObject, u as isUndefined } from "./predicate-faYxAB6Z.js";
|
|
1
|
+
import { a as isNull, i as isNil, r as isFunction, s as isObject, u as isUndefined } from "./predicate-faYxAB6Z.js";
|
|
2
2
|
import { n as getCanonicalLocaleKey, s as DEFAULT_LOCALE, t as findLocaleKeys } from "./i18n-DyF_NfCk.js";
|
|
3
3
|
import { t as shallowEqual } from "./shallow-equal-C7S8rj2f.js";
|
|
4
4
|
import { n as ContextConsumer } from "./media-element-CJY3JIgc.js";
|
|
5
5
|
import { n as mediaContext, r as playerContext, t as containerContext } from "./context-OhQY847V.js";
|
|
6
6
|
import { l as ContextProvider } from "./container-element-HHK_KZOE.js";
|
|
7
|
-
import { n as kebabCase, t as camelCase } from "./casing-Cu0fL85w.js";
|
|
8
7
|
import { t as listen } from "./listen-CdeggIF8.js";
|
|
9
8
|
import { t as noop } from "./noop-BxkeRIz9.js";
|
|
9
|
+
import { n as kebabCase, t as camelCase } from "./casing-Cu0fL85w.js";
|
|
10
10
|
import { n as isCaptionOrSubtitleTrack, t as findTrackElement } from "./text-track-DMA7pa8W.js";
|
|
11
11
|
import { t as isWebKitAirPlayCapable } from "./webkit-C682yTT7.js";
|
|
12
|
-
import { t as anyAbortSignal } from "./abort-CUxJsUWY.js";
|
|
13
12
|
import { n as EMPTY_TEXT_TRACKS, r as EMPTY_TIME_RANGES, t as EMPTY_REMOTE } from "./constants-CsSwyIX6.js";
|
|
13
|
+
import { t as anyAbortSignal } from "./abort-CUxJsUWY.js";
|
|
14
14
|
|
|
15
15
|
//#region ../utils/dist/dom/event.js
|
|
16
16
|
/** Resolve the deepest event target, preferring composedPath for shadow DOM. */
|
|
@@ -107,743 +107,392 @@ function serializeTimeRanges(ranges) {
|
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
//#endregion
|
|
110
|
-
//#region ../
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
#keys = /* @__PURE__ */ new Map();
|
|
114
|
-
/** The attach-scoped signal. Aborts on detach or reattach. */
|
|
115
|
-
get base() {
|
|
116
|
-
return (this.#base ??= new AbortController()).signal;
|
|
117
|
-
}
|
|
118
|
-
/** Clears all keyed signals, leaving base intact. */
|
|
119
|
-
clear() {
|
|
120
|
-
for (const controller of this.#keys.values()) controller.abort();
|
|
121
|
-
this.#keys.clear();
|
|
122
|
-
}
|
|
123
|
-
/** Resets base and clears all keyed signals. */
|
|
124
|
-
reset() {
|
|
125
|
-
this.clear();
|
|
126
|
-
this.#base?.abort();
|
|
127
|
-
this.#base = void 0;
|
|
128
|
-
}
|
|
129
|
-
/** Creates a new signal for the key, superseding any previous signal. */
|
|
130
|
-
supersede(key) {
|
|
131
|
-
this.#keys.get(key)?.abort();
|
|
132
|
-
const controller = new AbortController();
|
|
133
|
-
this.#keys.set(key, controller);
|
|
134
|
-
return anyAbortSignal([this.base, controller.signal]);
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
//#endregion
|
|
139
|
-
//#region ../store/dist/dev/core/combine.js
|
|
140
|
-
/**
|
|
141
|
-
* Combines multiple slices into a single slice.
|
|
142
|
-
*
|
|
143
|
-
* @param slices - The slices to combine.
|
|
144
|
-
* @returns A new slice that represents the combination of the input slices.
|
|
145
|
-
*/
|
|
146
|
-
function combine(...slices) {
|
|
147
|
-
const derivedDefinitions = slices.map((slice) => slice.derived ?? {});
|
|
148
|
-
warnDuplicates("derived", derivedDefinitions);
|
|
110
|
+
//#region ../core/dist/dev/dom/feature.js
|
|
111
|
+
function definePlayerFeature(definition) {
|
|
112
|
+
const preserved = Object.values(definition.config ?? {}).map((entry) => entry.state);
|
|
149
113
|
return {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
warnDuplicates("state", states);
|
|
153
|
-
warnOverlaps(states, derivedDefinitions);
|
|
154
|
-
return Object.assign({}, ...states);
|
|
155
|
-
},
|
|
156
|
-
preserve: Array.from(new Set(slices.flatMap((slice) => slice.preserve ?? []))),
|
|
157
|
-
derived: Object.assign({}, ...derivedDefinitions),
|
|
158
|
-
attach: (ctx) => {
|
|
159
|
-
for (const slice of slices) try {
|
|
160
|
-
slice.attach?.(ctx);
|
|
161
|
-
} catch (err) {
|
|
162
|
-
ctx.reportError(err);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
114
|
+
...definition,
|
|
115
|
+
...preserved.length > 0 ? { preserve: preserved } : {}
|
|
165
116
|
};
|
|
166
117
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
seen
|
|
118
|
+
/** Merge the configuration declarations from the selected player features. */
|
|
119
|
+
function combinePlayerFeatureConfigs(features) {
|
|
120
|
+
const definitions = features.map((feature) => feature.config ?? {});
|
|
121
|
+
{
|
|
122
|
+
const seen = /* @__PURE__ */ new Set();
|
|
123
|
+
for (const definition of definitions) for (const key of Object.keys(definition)) {
|
|
124
|
+
if (seen.has(key)) console.warn(`[vjs-core] duplicate config key "${key}" — later feature overwrites earlier one`);
|
|
125
|
+
seen.add(key);
|
|
126
|
+
}
|
|
172
127
|
}
|
|
128
|
+
return Object.assign({}, ...definitions);
|
|
173
129
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
130
|
+
/** Forward one configuration input through its feature-owned private action. */
|
|
131
|
+
function setPlayerConfigValue(store, entry, value) {
|
|
132
|
+
const action = store[entry.action];
|
|
133
|
+
if (typeof action !== "function") throw new TypeError(`Missing config action "${String(entry.action)}"`);
|
|
134
|
+
action(value);
|
|
177
135
|
}
|
|
178
136
|
|
|
179
137
|
//#endregion
|
|
180
|
-
//#region ../
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
cause;
|
|
184
|
-
constructor(code, options) {
|
|
185
|
-
super(options?.message ?? code);
|
|
186
|
-
this.name = "StoreError";
|
|
187
|
-
this.code = code;
|
|
188
|
-
this.cause = options?.cause;
|
|
189
|
-
}
|
|
190
|
-
};
|
|
191
|
-
function throwNoTargetError() {
|
|
192
|
-
throw new StoreError("NO_TARGET");
|
|
138
|
+
//#region ../media/dist/dev/core/predicate.js
|
|
139
|
+
function hasMetadata(media) {
|
|
140
|
+
return media.readyState >= 1;
|
|
193
141
|
}
|
|
194
|
-
function
|
|
195
|
-
|
|
142
|
+
function isMediaPauseCapable(value) {
|
|
143
|
+
if (!isObject(value)) return false;
|
|
144
|
+
const media = value;
|
|
145
|
+
return !isUndefined(media.paused) && !isUndefined(media.ended) && isFunction(media.pause);
|
|
196
146
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
147
|
+
function isMediaSeekCapable(value) {
|
|
148
|
+
if (!isObject(value)) return false;
|
|
149
|
+
const media = value;
|
|
150
|
+
return !isUndefined(media.currentTime) && !isUndefined(media.duration) && !isUndefined(media.seeking);
|
|
151
|
+
}
|
|
152
|
+
function isMediaSourceCapable(value) {
|
|
153
|
+
if (!isObject(value)) return false;
|
|
154
|
+
const media = value;
|
|
155
|
+
return !isUndefined(media.src) && !isUndefined(media.currentSrc) && !isUndefined(media.readyState) && isFunction(media.load);
|
|
156
|
+
}
|
|
157
|
+
function isMediaVolumeCapable(value) {
|
|
158
|
+
if (!isObject(value)) return false;
|
|
159
|
+
const media = value;
|
|
160
|
+
return !isUndefined(media.volume) && !isUndefined(media.muted);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Whether the media reports a mute at all, which is a narrower question than
|
|
164
|
+
* `isMediaVolumeCapable`: an embed can take a mute command while offering no way
|
|
165
|
+
* to set a level.
|
|
166
|
+
*/
|
|
167
|
+
function isMediaMutedCapable(value) {
|
|
168
|
+
if (!isObject(value)) return false;
|
|
169
|
+
return !isUndefined(value.muted);
|
|
170
|
+
}
|
|
171
|
+
function isMediaPlaybackRateCapable(value) {
|
|
172
|
+
if (!isObject(value)) return false;
|
|
173
|
+
return !isUndefined(value.playbackRate);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Only `requestPictureInPicture` is required. A native video element carries it
|
|
177
|
+
* but leaves exiting to `document`, so demanding the pair would rule out the one
|
|
178
|
+
* media that most certainly can.
|
|
179
|
+
*/
|
|
180
|
+
function isMediaPictureInPictureCapable(value) {
|
|
181
|
+
if (!isObject(value)) return false;
|
|
182
|
+
return isFunction(value.requestPictureInPicture);
|
|
183
|
+
}
|
|
184
|
+
function isMediaBufferCapable(value) {
|
|
185
|
+
if (!isObject(value)) return false;
|
|
186
|
+
const media = value;
|
|
187
|
+
return !isUndefined(media.buffered) && media.buffered !== EMPTY_TIME_RANGES && !isUndefined(media.seekable) && media.seekable !== EMPTY_TIME_RANGES;
|
|
188
|
+
}
|
|
189
|
+
function isMediaErrorCapable(value) {
|
|
190
|
+
if (!isObject(value)) return false;
|
|
191
|
+
return !isUndefined(value.error);
|
|
192
|
+
}
|
|
193
|
+
function isMediaTextTrackCapable(value) {
|
|
194
|
+
if (!isObject(value)) return false;
|
|
195
|
+
const media = value;
|
|
196
|
+
return !isUndefined(media.textTracks) && media.textTracks !== EMPTY_TEXT_TRACKS;
|
|
197
|
+
}
|
|
198
|
+
function isMediaVideoRenditionCapable(value) {
|
|
199
|
+
if (!isObject(value)) return false;
|
|
200
|
+
return !isUndefined(value.videoRenditions);
|
|
201
|
+
}
|
|
202
|
+
function isMediaAudioTrackCapable(value) {
|
|
203
|
+
if (!isObject(value)) return false;
|
|
204
|
+
return !isUndefined(value.audioTracks);
|
|
205
|
+
}
|
|
206
|
+
function isMediaVideoDimensionsCapable(value) {
|
|
207
|
+
if (!isObject(value)) return false;
|
|
208
|
+
const media = value;
|
|
209
|
+
return !isUndefined(media.videoWidth) && !isUndefined(media.videoHeight);
|
|
210
|
+
}
|
|
211
|
+
function isMediaRemotePlaybackCapable(value) {
|
|
212
|
+
if (!isObject(value)) return false;
|
|
213
|
+
const media = value;
|
|
214
|
+
return isObject(media.remote) && media.remote !== EMPTY_REMOTE;
|
|
215
|
+
}
|
|
216
|
+
function isMediaStreamTypeCapable(value) {
|
|
217
|
+
if (!isObject(value)) return false;
|
|
218
|
+
return !isUndefined(value.streamType);
|
|
219
|
+
}
|
|
220
|
+
function isMediaContentDataCapable(value) {
|
|
221
|
+
if (!isObject(value)) return false;
|
|
222
|
+
return !isUndefined(value.contentData);
|
|
223
|
+
}
|
|
224
|
+
function isMediaLiveCapable(value) {
|
|
225
|
+
if (!isObject(value)) return false;
|
|
226
|
+
const media = value;
|
|
227
|
+
return !isUndefined(media.liveEdgeStart) && !isUndefined(media.targetLiveWindow);
|
|
228
|
+
}
|
|
229
|
+
function isQuerySelectorAllCapable(value) {
|
|
230
|
+
return isObject(value) && "querySelectorAll" in value && isFunction(value.querySelectorAll);
|
|
202
231
|
}
|
|
203
232
|
|
|
204
233
|
//#endregion
|
|
205
|
-
//#region ../
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
if (isFlushScheduled) return;
|
|
209
|
-
isFlushScheduled = true;
|
|
210
|
-
queueMicrotask(flush);
|
|
234
|
+
//#region ../core/dist/dev/dom/store/features/audio-track.js
|
|
235
|
+
function getTrackValue(track, index) {
|
|
236
|
+
return track.id || String(index);
|
|
211
237
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
238
|
+
function toMediaTrack(track) {
|
|
239
|
+
return {
|
|
240
|
+
...track.id !== void 0 && { id: track.id },
|
|
241
|
+
...track.kind !== void 0 && { kind: track.kind },
|
|
242
|
+
label: track.label,
|
|
243
|
+
language: track.language,
|
|
244
|
+
enabled: track.enabled
|
|
245
|
+
};
|
|
217
246
|
}
|
|
218
|
-
const
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
patch(partial) {
|
|
230
|
-
const next = { ...this.#current };
|
|
231
|
-
let changed = false;
|
|
232
|
-
for (const key of Reflect.ownKeys(partial)) {
|
|
233
|
-
if (!hasOwnProp$1.call(partial, key)) continue;
|
|
234
|
-
const value = partial[key];
|
|
235
|
-
if (!Object.is(this.#current[key], value)) {
|
|
236
|
-
next[key] = value;
|
|
237
|
-
changed = true;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
if (changed) {
|
|
241
|
-
this.#current = Object.freeze(next);
|
|
242
|
-
this.#markPending();
|
|
247
|
+
const audioTrackFeature = definePlayerFeature({
|
|
248
|
+
name: "audioTrack",
|
|
249
|
+
state: ({ target }) => ({
|
|
250
|
+
audioTrackList: [],
|
|
251
|
+
selectAudioTrack(value) {
|
|
252
|
+
const { media } = target();
|
|
253
|
+
if (!isMediaAudioTrackCapable(media)) return;
|
|
254
|
+
const tracks = [...media.audioTracks];
|
|
255
|
+
const track = tracks.find((candidate, index) => getTrackValue(candidate, index) === value);
|
|
256
|
+
if (!track) return;
|
|
257
|
+
for (const candidate of tracks) candidate.enabled = candidate === track;
|
|
243
258
|
}
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
259
|
+
}),
|
|
260
|
+
attach({ target, signal, set }) {
|
|
261
|
+
const { media } = target;
|
|
262
|
+
let audioTracks = null;
|
|
263
|
+
let cleanup = null;
|
|
264
|
+
const getAudioTracks = () => isMediaAudioTrackCapable(media) ? media.audioTracks : null;
|
|
265
|
+
const sync = (list = getAudioTracks()) => {
|
|
266
|
+
set({ audioTrackList: list ? [...list].map(toMediaTrack) : [] });
|
|
267
|
+
};
|
|
268
|
+
const bind = () => {
|
|
269
|
+
const nextAudioTracks = getAudioTracks();
|
|
270
|
+
if (nextAudioTracks === audioTracks) {
|
|
271
|
+
sync(nextAudioTracks);
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
cleanup?.abort();
|
|
275
|
+
cleanup = new AbortController();
|
|
276
|
+
audioTracks = nextAudioTracks;
|
|
277
|
+
if (audioTracks) {
|
|
278
|
+
listen(audioTracks, "addtrack", () => sync(audioTracks), { signal: cleanup.signal });
|
|
279
|
+
listen(audioTracks, "removetrack", () => sync(audioTracks), { signal: cleanup.signal });
|
|
280
|
+
listen(audioTracks, "change", () => sync(audioTracks), { signal: cleanup.signal });
|
|
281
|
+
}
|
|
282
|
+
sync(audioTracks);
|
|
260
283
|
};
|
|
284
|
+
bind();
|
|
285
|
+
listen(media, "loadstart", bind, { signal });
|
|
286
|
+
signal.addEventListener("abort", () => cleanup?.abort(), { once: true });
|
|
261
287
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
//#endregion
|
|
291
|
+
//#region ../core/dist/dev/dom/store/features/buffer.js
|
|
292
|
+
const bufferFeature = definePlayerFeature({
|
|
293
|
+
name: "buffer",
|
|
294
|
+
state: () => ({
|
|
295
|
+
buffered: [],
|
|
296
|
+
seekable: []
|
|
297
|
+
}),
|
|
298
|
+
attach({ target, signal, set }) {
|
|
299
|
+
const { media } = target;
|
|
300
|
+
if (!isMediaBufferCapable(media)) return;
|
|
301
|
+
const sync = () => set({
|
|
302
|
+
buffered: serializeTimeRanges(media.buffered),
|
|
303
|
+
seekable: serializeTimeRanges(media.seekable)
|
|
304
|
+
});
|
|
305
|
+
sync();
|
|
306
|
+
listen(media, "progress", sync, { signal });
|
|
307
|
+
listen(media, "emptied", sync, { signal });
|
|
266
308
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
309
|
+
});
|
|
310
|
+
|
|
311
|
+
//#endregion
|
|
312
|
+
//#region ../core/dist/dev/dom/gesture/region.js
|
|
313
|
+
/**
|
|
314
|
+
* Determine which named region a pointer position falls into.
|
|
315
|
+
*
|
|
316
|
+
* Regions divide the container width equally based on how many are active:
|
|
317
|
+
* - `left` + `right` → halves (50% / 50%)
|
|
318
|
+
* - `left` + `center` + `right` → thirds (33% / 34% / 33%)
|
|
319
|
+
*
|
|
320
|
+
* Single region: `left` covers the left half, `right` the right half,
|
|
321
|
+
* and `center` covers the full surface. Partial two-region combos
|
|
322
|
+
* (e.g. `left` + `center`) use the same natural zones — positions outside
|
|
323
|
+
* all active zones return `null` so full-surface gestures can handle them.
|
|
324
|
+
*/
|
|
325
|
+
function resolveRegion(clientX, containerRect, activeRegions) {
|
|
326
|
+
if (activeRegions.size === 0) return null;
|
|
327
|
+
const relativeX = clientX - containerRect.left;
|
|
328
|
+
const width = containerRect.width;
|
|
329
|
+
if (width === 0) return null;
|
|
330
|
+
const ratio = relativeX / width;
|
|
331
|
+
if (activeRegions.size === 2 && activeRegions.has("left") && activeRegions.has("right")) return ratio < .5 ? "left" : "right";
|
|
332
|
+
if (activeRegions.size === 3) {
|
|
333
|
+
if (ratio < 1 / 3) return "left";
|
|
334
|
+
if (ratio < 2 / 3) return "center";
|
|
335
|
+
return "right";
|
|
271
336
|
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
337
|
+
if (activeRegions.has("left") && ratio < .5) return "left";
|
|
338
|
+
if (activeRegions.has("right") && ratio >= .5) return "right";
|
|
339
|
+
if (activeRegions.has("center")) {
|
|
340
|
+
if (activeRegions.size === 1) return "center";
|
|
341
|
+
if (ratio >= 1 / 3 && ratio < 2 / 3) return "center";
|
|
342
|
+
}
|
|
343
|
+
return null;
|
|
275
344
|
}
|
|
276
345
|
|
|
277
346
|
//#endregion
|
|
278
|
-
//#region ../
|
|
279
|
-
const
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
for (const key of Object.keys(state.current)) Object.defineProperty(store, key, {
|
|
324
|
-
get: () => state.current[key],
|
|
325
|
-
enumerable: true
|
|
326
|
-
});
|
|
327
|
-
for (const key of Object.getOwnPropertySymbols(sourceState)) {
|
|
328
|
-
if (typeof sourceState[key] !== "function") continue;
|
|
329
|
-
Object.defineProperty(store, key, { get: () => sourceState[key] });
|
|
330
|
-
}
|
|
331
|
-
try {
|
|
332
|
-
options.onSetup?.({
|
|
333
|
-
store,
|
|
334
|
-
signal: setupAbort.signal
|
|
335
|
-
});
|
|
336
|
-
} catch (error) {
|
|
337
|
-
reportError(error);
|
|
338
|
-
}
|
|
339
|
-
return store;
|
|
340
|
-
function derive(source) {
|
|
341
|
-
const result = {};
|
|
342
|
-
const definitions = slice.derived;
|
|
343
|
-
if (!definitions) return result;
|
|
344
|
-
const ctx = { get: () => source };
|
|
345
|
-
for (const key of Object.keys(definitions)) result[key] = definitions[key](ctx);
|
|
346
|
-
return result;
|
|
347
|
-
}
|
|
348
|
-
function publish(source, derived) {
|
|
349
|
-
const result = {};
|
|
350
|
-
for (const key of Object.keys(source)) result[key] = source[key];
|
|
351
|
-
return Object.assign(result, derived);
|
|
352
|
-
}
|
|
353
|
-
function setSource(partial) {
|
|
354
|
-
const patched = patchSource(sourceState, partial);
|
|
355
|
-
if (!patched) return;
|
|
356
|
-
const nextDerived = derive(patched.next);
|
|
357
|
-
sourceState = patched.next;
|
|
358
|
-
state.replace(publish(sourceState, nextDerived));
|
|
359
|
-
}
|
|
360
|
-
function attach(newTarget) {
|
|
361
|
-
if (destroyed) throwDestroyedError();
|
|
362
|
-
signals.reset();
|
|
363
|
-
target = newTarget;
|
|
364
|
-
const attachContext = {
|
|
365
|
-
target: newTarget,
|
|
366
|
-
signal: signals.base,
|
|
367
|
-
get: () => sourceState,
|
|
368
|
-
set: (partial) => {
|
|
369
|
-
try {
|
|
370
|
-
setSource(partial);
|
|
347
|
+
//#region ../core/dist/dev/dom/gesture/coordinator.js
|
|
348
|
+
const TAP_THRESHOLD$1 = 250;
|
|
349
|
+
var GestureCoordinator = class {
|
|
350
|
+
#target;
|
|
351
|
+
#bindings = [];
|
|
352
|
+
#recognizers = /* @__PURE__ */ new Set();
|
|
353
|
+
#disconnect = null;
|
|
354
|
+
#subscribers = /* @__PURE__ */ new Set();
|
|
355
|
+
constructor(target) {
|
|
356
|
+
this.#target = target;
|
|
357
|
+
}
|
|
358
|
+
get bindings() {
|
|
359
|
+
return this.#bindings;
|
|
360
|
+
}
|
|
361
|
+
subscribe(callback) {
|
|
362
|
+
this.#subscribers.add(callback);
|
|
363
|
+
return () => this.#subscribers.delete(callback);
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Whether a registered binding claims this tap for the given action. A claimed tap
|
|
367
|
+
* belongs to the gesture layer, so callers should leave it alone. Taps on interactive
|
|
368
|
+
* targets (buttons, sliders) are never claimed — the same filtering the pointerup
|
|
369
|
+
* listener applies. A disabled binding still claims: disabling a gesture opts out of
|
|
370
|
+
* the action, it doesn't hand the tap back to a fallback handler.
|
|
371
|
+
*/
|
|
372
|
+
claimsTap(event, action) {
|
|
373
|
+
if (isInteractiveTarget(event)) return false;
|
|
374
|
+
return this.#bindings.some((b) => b.type === "tap" && b.action === action && (!b.pointer || b.pointer === event.pointerType));
|
|
375
|
+
}
|
|
376
|
+
add(binding) {
|
|
377
|
+
const wrapped = {
|
|
378
|
+
...binding,
|
|
379
|
+
onActivate: (event) => {
|
|
380
|
+
if (this.#subscribers.size > 0) {
|
|
381
|
+
const activateEvent = {
|
|
382
|
+
type: binding.type,
|
|
383
|
+
source: "gesture",
|
|
384
|
+
action: binding.action,
|
|
385
|
+
value: binding.value,
|
|
386
|
+
region: binding.region,
|
|
387
|
+
pointer: binding.pointer,
|
|
388
|
+
event
|
|
389
|
+
};
|
|
390
|
+
for (const cb of this.#subscribers) try {
|
|
391
|
+
cb(activateEvent);
|
|
371
392
|
} catch (error) {
|
|
372
|
-
|
|
393
|
+
console.warn("[vjs-gesture] subscribe callback threw:", error);
|
|
373
394
|
}
|
|
374
|
-
},
|
|
375
|
-
reportError,
|
|
376
|
-
store: {
|
|
377
|
-
get state() {
|
|
378
|
-
return state.current;
|
|
379
|
-
},
|
|
380
|
-
subscribe
|
|
381
395
|
}
|
|
382
|
-
|
|
383
|
-
try {
|
|
384
|
-
slice.attach?.(attachContext);
|
|
385
|
-
} catch (error) {
|
|
386
|
-
reportError(error);
|
|
396
|
+
binding.onActivate(event);
|
|
387
397
|
}
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
if (isNull(target)) return;
|
|
401
|
-
signals.reset();
|
|
402
|
-
target = null;
|
|
403
|
-
const resetState = { ...initialSourceState };
|
|
404
|
-
for (const key of slice.preserve ?? []) resetState[key] = sourceState[key];
|
|
405
|
-
setSource(resetState);
|
|
406
|
-
}
|
|
407
|
-
function destroy() {
|
|
408
|
-
if (destroyed) return;
|
|
409
|
-
destroyed = true;
|
|
410
|
-
detach();
|
|
411
|
-
setupAbort.abort();
|
|
412
|
-
}
|
|
413
|
-
function subscribe(callback, options) {
|
|
414
|
-
return state.subscribe(callback, options);
|
|
415
|
-
}
|
|
416
|
-
function reportError(error) {
|
|
417
|
-
if (options.onError) options.onError({
|
|
418
|
-
store,
|
|
419
|
-
error
|
|
420
|
-
});
|
|
421
|
-
else console.error("[vjs-store]", error);
|
|
422
|
-
}
|
|
423
|
-
});
|
|
424
|
-
}
|
|
425
|
-
function freezeCopy(value) {
|
|
426
|
-
return Object.freeze({ ...value });
|
|
427
|
-
}
|
|
428
|
-
function patchSource(current, partial) {
|
|
429
|
-
const next = { ...current };
|
|
430
|
-
let changed = false;
|
|
431
|
-
for (const key of Reflect.ownKeys(partial)) {
|
|
432
|
-
if (!hasOwnProp.call(partial, key)) continue;
|
|
433
|
-
const value = partial[key];
|
|
434
|
-
if (Object.is(current[key], value)) continue;
|
|
435
|
-
next[key] = value;
|
|
436
|
-
changed = true;
|
|
398
|
+
};
|
|
399
|
+
this.#bindings.push(wrapped);
|
|
400
|
+
this.#recognizers.add(wrapped.recognizer);
|
|
401
|
+
this.#connect();
|
|
402
|
+
let removed = false;
|
|
403
|
+
return () => {
|
|
404
|
+
if (removed) return;
|
|
405
|
+
removed = true;
|
|
406
|
+
const idx = this.#bindings.indexOf(wrapped);
|
|
407
|
+
if (idx !== -1) this.#bindings.splice(idx, 1);
|
|
408
|
+
this.#maybeDisconnect();
|
|
409
|
+
};
|
|
437
410
|
}
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
411
|
+
#connect() {
|
|
412
|
+
if (this.#disconnect) return;
|
|
413
|
+
this.#disconnect = new AbortController();
|
|
414
|
+
const { signal } = this.#disconnect;
|
|
415
|
+
let pointerDownTime = 0;
|
|
416
|
+
listen(this.#target, "pointerdown", (event) => {
|
|
417
|
+
if (event.button !== 0) return;
|
|
418
|
+
pointerDownTime = Date.now();
|
|
419
|
+
}, { signal });
|
|
420
|
+
listen(this.#target, "pointerup", (event) => {
|
|
421
|
+
if (event.button !== 0) return;
|
|
422
|
+
if (Date.now() - pointerDownTime > TAP_THRESHOLD$1) return;
|
|
423
|
+
if (isInteractiveTarget(event)) return;
|
|
424
|
+
const pointerType = event.pointerType;
|
|
425
|
+
const clientX = event.clientX;
|
|
426
|
+
const target = this.#target;
|
|
427
|
+
const bindings = this.#bindings;
|
|
428
|
+
const matches = { resolve: (type) => matchBindings(bindings, type, pointerType, clientX, target) };
|
|
429
|
+
for (const recognizer of this.#recognizers) recognizer.handleUp(matches, event);
|
|
430
|
+
}, { signal });
|
|
431
|
+
}
|
|
432
|
+
#maybeDisconnect() {
|
|
433
|
+
if (this.#bindings.length > 0) return;
|
|
434
|
+
for (const recognizer of this.#recognizers) recognizer.reset();
|
|
435
|
+
this.#recognizers.clear();
|
|
436
|
+
this.#disconnect?.abort();
|
|
437
|
+
this.#disconnect = null;
|
|
438
|
+
}
|
|
439
|
+
};
|
|
440
|
+
const coordinators = /* @__PURE__ */ new WeakMap();
|
|
441
|
+
/** Look up the gesture coordinator for a target element, if one exists. */
|
|
442
|
+
function findGestureCoordinator(target) {
|
|
443
|
+
return coordinators.get(target);
|
|
442
444
|
}
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
if (arguments.length === 1) {
|
|
449
|
-
const feature = definition;
|
|
450
|
-
const preserved = Object.values(feature.config ?? {}).map((entry) => entry.state);
|
|
451
|
-
return {
|
|
452
|
-
...feature,
|
|
453
|
-
...preserved.length > 0 ? { preserve: preserved } : {}
|
|
454
|
-
};
|
|
445
|
+
function getGestureCoordinator(target) {
|
|
446
|
+
let coordinator = coordinators.get(target);
|
|
447
|
+
if (!coordinator) {
|
|
448
|
+
coordinator = new GestureCoordinator(target);
|
|
449
|
+
coordinators.set(target, coordinator);
|
|
455
450
|
}
|
|
456
|
-
|
|
457
|
-
const forConfig = (featureConfig) => definePlayerSlice({
|
|
458
|
-
...isUndefined(name) ? {} : { name },
|
|
459
|
-
state: (ctx) => state(ctx, featureConfig),
|
|
460
|
-
...attach ? { attach: (ctx) => attach(ctx, featureConfig) } : {}
|
|
461
|
-
});
|
|
462
|
-
const defaultFeature = forConfig(defaultConfig);
|
|
463
|
-
const feature = ((featureConfig) => isUndefined(featureConfig) ? defaultFeature : forConfig(featureConfig));
|
|
464
|
-
feature.state = defaultFeature.state;
|
|
465
|
-
if (defaultFeature.attach) feature.attach = defaultFeature.attach;
|
|
466
|
-
if (!isUndefined(name)) Object.defineProperty(feature, "name", { value: name });
|
|
467
|
-
return feature;
|
|
451
|
+
return coordinator;
|
|
468
452
|
}
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
const
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
453
|
+
function matchBindings(bindings, type, pointerType, clientX, target) {
|
|
454
|
+
const rect = target.getBoundingClientRect();
|
|
455
|
+
const activeRegions = getActiveRegions(bindings, type, pointerType);
|
|
456
|
+
const region = activeRegions.size > 0 ? resolveRegion(clientX, rect, activeRegions) : null;
|
|
457
|
+
const matches = [];
|
|
458
|
+
for (const binding of bindings) {
|
|
459
|
+
if (binding.disabled) continue;
|
|
460
|
+
if (binding.type !== type) continue;
|
|
461
|
+
if (binding.pointer && binding.pointer !== pointerType) continue;
|
|
462
|
+
if (binding.region) {
|
|
463
|
+
if (binding.region !== region) continue;
|
|
464
|
+
} else if (region !== null) continue;
|
|
465
|
+
matches.push(binding);
|
|
478
466
|
}
|
|
479
|
-
return
|
|
467
|
+
return matches;
|
|
480
468
|
}
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
const
|
|
484
|
-
|
|
485
|
-
|
|
469
|
+
function getActiveRegions(bindings, type, pointerType) {
|
|
470
|
+
const regions = /* @__PURE__ */ new Set();
|
|
471
|
+
for (const binding of bindings) {
|
|
472
|
+
if (binding.disabled) continue;
|
|
473
|
+
if (binding.type !== type) continue;
|
|
474
|
+
if (binding.pointer && binding.pointer !== pointerType) continue;
|
|
475
|
+
if (binding.region) regions.add(binding.region);
|
|
476
|
+
}
|
|
477
|
+
return regions;
|
|
486
478
|
}
|
|
487
479
|
|
|
488
480
|
//#endregion
|
|
489
|
-
//#region ../
|
|
490
|
-
function
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
function isMediaPauseCapable(value) {
|
|
494
|
-
if (!isObject(value)) return false;
|
|
495
|
-
const media = value;
|
|
496
|
-
return !isUndefined(media.paused) && !isUndefined(media.ended) && isFunction(media.pause);
|
|
497
|
-
}
|
|
498
|
-
function isMediaSeekCapable(value) {
|
|
499
|
-
if (!isObject(value)) return false;
|
|
500
|
-
const media = value;
|
|
501
|
-
return !isUndefined(media.currentTime) && !isUndefined(media.duration) && !isUndefined(media.seeking);
|
|
502
|
-
}
|
|
503
|
-
function isMediaSourceCapable(value) {
|
|
504
|
-
if (!isObject(value)) return false;
|
|
505
|
-
const media = value;
|
|
506
|
-
return !isUndefined(media.src) && !isUndefined(media.currentSrc) && !isUndefined(media.readyState) && isFunction(media.load);
|
|
507
|
-
}
|
|
508
|
-
function isMediaVolumeCapable(value) {
|
|
509
|
-
if (!isObject(value)) return false;
|
|
510
|
-
const media = value;
|
|
511
|
-
return !isUndefined(media.volume) && !isUndefined(media.muted);
|
|
512
|
-
}
|
|
513
|
-
/**
|
|
514
|
-
* Whether the media reports a mute at all, which is a narrower question than
|
|
515
|
-
* `isMediaVolumeCapable`: an embed can take a mute command while offering no way
|
|
516
|
-
* to set a level.
|
|
517
|
-
*/
|
|
518
|
-
function isMediaMutedCapable(value) {
|
|
519
|
-
if (!isObject(value)) return false;
|
|
520
|
-
return !isUndefined(value.muted);
|
|
521
|
-
}
|
|
522
|
-
function isMediaPlaybackRateCapable(value) {
|
|
523
|
-
if (!isObject(value)) return false;
|
|
524
|
-
return !isUndefined(value.playbackRate);
|
|
525
|
-
}
|
|
526
|
-
/**
|
|
527
|
-
* Only `requestPictureInPicture` is required. A native video element carries it
|
|
528
|
-
* but leaves exiting to `document`, so demanding the pair would rule out the one
|
|
529
|
-
* media that most certainly can.
|
|
530
|
-
*/
|
|
531
|
-
function isMediaPictureInPictureCapable(value) {
|
|
532
|
-
if (!isObject(value)) return false;
|
|
533
|
-
return isFunction(value.requestPictureInPicture);
|
|
534
|
-
}
|
|
535
|
-
function isMediaBufferCapable(value) {
|
|
536
|
-
if (!isObject(value)) return false;
|
|
537
|
-
const media = value;
|
|
538
|
-
return !isUndefined(media.buffered) && media.buffered !== EMPTY_TIME_RANGES && !isUndefined(media.seekable) && media.seekable !== EMPTY_TIME_RANGES;
|
|
539
|
-
}
|
|
540
|
-
function isMediaErrorCapable(value) {
|
|
541
|
-
if (!isObject(value)) return false;
|
|
542
|
-
return !isUndefined(value.error);
|
|
543
|
-
}
|
|
544
|
-
function isMediaTextTrackCapable(value) {
|
|
545
|
-
if (!isObject(value)) return false;
|
|
546
|
-
const media = value;
|
|
547
|
-
return !isUndefined(media.textTracks) && media.textTracks !== EMPTY_TEXT_TRACKS;
|
|
548
|
-
}
|
|
549
|
-
function isMediaVideoRenditionCapable(value) {
|
|
550
|
-
if (!isObject(value)) return false;
|
|
551
|
-
return !isUndefined(value.videoRenditions);
|
|
552
|
-
}
|
|
553
|
-
function isMediaAudioTrackCapable(value) {
|
|
554
|
-
if (!isObject(value)) return false;
|
|
555
|
-
return !isUndefined(value.audioTracks);
|
|
556
|
-
}
|
|
557
|
-
function isMediaVideoDimensionsCapable(value) {
|
|
558
|
-
if (!isObject(value)) return false;
|
|
559
|
-
const media = value;
|
|
560
|
-
return !isUndefined(media.videoWidth) && !isUndefined(media.videoHeight);
|
|
561
|
-
}
|
|
562
|
-
function isMediaRemotePlaybackCapable(value) {
|
|
563
|
-
if (!isObject(value)) return false;
|
|
564
|
-
const media = value;
|
|
565
|
-
return isObject(media.remote) && media.remote !== EMPTY_REMOTE;
|
|
566
|
-
}
|
|
567
|
-
function isMediaStreamTypeCapable(value) {
|
|
568
|
-
if (!isObject(value)) return false;
|
|
569
|
-
return !isUndefined(value.streamType);
|
|
481
|
+
//#region ../core/dist/dev/dom/presentation/remote-playback.js
|
|
482
|
+
function resolveRemote(media) {
|
|
483
|
+
const target = media;
|
|
484
|
+
if (isObject(target.remote) && "state" in target.remote && "prompt" in target.remote) return target.remote;
|
|
570
485
|
}
|
|
571
|
-
function
|
|
572
|
-
|
|
573
|
-
return !isUndefined(value.contentData);
|
|
486
|
+
function isRemotePlaybackConnected(media) {
|
|
487
|
+
return resolveRemote(media)?.state === "connected";
|
|
574
488
|
}
|
|
575
|
-
function
|
|
576
|
-
|
|
577
|
-
const media = value;
|
|
578
|
-
return !isUndefined(media.liveEdgeStart) && !isUndefined(media.targetLiveWindow);
|
|
489
|
+
function isRemotePlaybackConnecting(media) {
|
|
490
|
+
return resolveRemote(media)?.state === "connecting";
|
|
579
491
|
}
|
|
580
|
-
function
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
//#endregion
|
|
585
|
-
//#region ../core/dist/dev/dom/store/features/audio-track.js
|
|
586
|
-
function getTrackValue(track, index) {
|
|
587
|
-
return track.id || String(index);
|
|
588
|
-
}
|
|
589
|
-
function toMediaTrack(track) {
|
|
590
|
-
return {
|
|
591
|
-
...track.id !== void 0 && { id: track.id },
|
|
592
|
-
...track.kind !== void 0 && { kind: track.kind },
|
|
593
|
-
label: track.label,
|
|
594
|
-
language: track.language,
|
|
595
|
-
enabled: track.enabled
|
|
596
|
-
};
|
|
597
|
-
}
|
|
598
|
-
const audioTrackFeature = definePlayerFeature({
|
|
599
|
-
name: "audioTrack",
|
|
600
|
-
state: ({ target }) => ({
|
|
601
|
-
audioTrackList: [],
|
|
602
|
-
selectAudioTrack(value) {
|
|
603
|
-
const { media } = target();
|
|
604
|
-
if (!isMediaAudioTrackCapable(media)) return;
|
|
605
|
-
const tracks = [...media.audioTracks];
|
|
606
|
-
const track = tracks.find((candidate, index) => getTrackValue(candidate, index) === value);
|
|
607
|
-
if (!track) return;
|
|
608
|
-
for (const candidate of tracks) candidate.enabled = candidate === track;
|
|
609
|
-
}
|
|
610
|
-
}),
|
|
611
|
-
attach({ target, signal, set }) {
|
|
612
|
-
const { media } = target;
|
|
613
|
-
let audioTracks = null;
|
|
614
|
-
let cleanup = null;
|
|
615
|
-
const getAudioTracks = () => isMediaAudioTrackCapable(media) ? media.audioTracks : null;
|
|
616
|
-
const sync = (list = getAudioTracks()) => {
|
|
617
|
-
set({ audioTrackList: list ? [...list].map(toMediaTrack) : [] });
|
|
618
|
-
};
|
|
619
|
-
const bind = () => {
|
|
620
|
-
const nextAudioTracks = getAudioTracks();
|
|
621
|
-
if (nextAudioTracks === audioTracks) {
|
|
622
|
-
sync(nextAudioTracks);
|
|
623
|
-
return;
|
|
624
|
-
}
|
|
625
|
-
cleanup?.abort();
|
|
626
|
-
cleanup = new AbortController();
|
|
627
|
-
audioTracks = nextAudioTracks;
|
|
628
|
-
if (audioTracks) {
|
|
629
|
-
listen(audioTracks, "addtrack", () => sync(audioTracks), { signal: cleanup.signal });
|
|
630
|
-
listen(audioTracks, "removetrack", () => sync(audioTracks), { signal: cleanup.signal });
|
|
631
|
-
listen(audioTracks, "change", () => sync(audioTracks), { signal: cleanup.signal });
|
|
632
|
-
}
|
|
633
|
-
sync(audioTracks);
|
|
634
|
-
};
|
|
635
|
-
bind();
|
|
636
|
-
listen(media, "loadstart", bind, { signal });
|
|
637
|
-
signal.addEventListener("abort", () => cleanup?.abort(), { once: true });
|
|
638
|
-
}
|
|
639
|
-
});
|
|
640
|
-
|
|
641
|
-
//#endregion
|
|
642
|
-
//#region ../core/dist/dev/dom/store/features/buffer.js
|
|
643
|
-
const bufferFeature = definePlayerFeature({
|
|
644
|
-
name: "buffer",
|
|
645
|
-
state: () => ({
|
|
646
|
-
buffered: [],
|
|
647
|
-
seekable: []
|
|
648
|
-
}),
|
|
649
|
-
attach({ target, signal, set }) {
|
|
650
|
-
const { media } = target;
|
|
651
|
-
if (!isMediaBufferCapable(media)) return;
|
|
652
|
-
const sync = () => set({
|
|
653
|
-
buffered: serializeTimeRanges(media.buffered),
|
|
654
|
-
seekable: serializeTimeRanges(media.seekable)
|
|
655
|
-
});
|
|
656
|
-
sync();
|
|
657
|
-
listen(media, "progress", sync, { signal });
|
|
658
|
-
listen(media, "emptied", sync, { signal });
|
|
659
|
-
}
|
|
660
|
-
});
|
|
661
|
-
|
|
662
|
-
//#endregion
|
|
663
|
-
//#region ../core/dist/dev/dom/gesture/region.js
|
|
664
|
-
/**
|
|
665
|
-
* Determine which named region a pointer position falls into.
|
|
666
|
-
*
|
|
667
|
-
* Regions divide the container width equally based on how many are active:
|
|
668
|
-
* - `left` + `right` → halves (50% / 50%)
|
|
669
|
-
* - `left` + `center` + `right` → thirds (33% / 34% / 33%)
|
|
670
|
-
*
|
|
671
|
-
* Single region: `left` covers the left half, `right` the right half,
|
|
672
|
-
* and `center` covers the full surface. Partial two-region combos
|
|
673
|
-
* (e.g. `left` + `center`) use the same natural zones — positions outside
|
|
674
|
-
* all active zones return `null` so full-surface gestures can handle them.
|
|
675
|
-
*/
|
|
676
|
-
function resolveRegion(clientX, containerRect, activeRegions) {
|
|
677
|
-
if (activeRegions.size === 0) return null;
|
|
678
|
-
const relativeX = clientX - containerRect.left;
|
|
679
|
-
const width = containerRect.width;
|
|
680
|
-
if (width === 0) return null;
|
|
681
|
-
const ratio = relativeX / width;
|
|
682
|
-
if (activeRegions.size === 2 && activeRegions.has("left") && activeRegions.has("right")) return ratio < .5 ? "left" : "right";
|
|
683
|
-
if (activeRegions.size === 3) {
|
|
684
|
-
if (ratio < 1 / 3) return "left";
|
|
685
|
-
if (ratio < 2 / 3) return "center";
|
|
686
|
-
return "right";
|
|
687
|
-
}
|
|
688
|
-
if (activeRegions.has("left") && ratio < .5) return "left";
|
|
689
|
-
if (activeRegions.has("right") && ratio >= .5) return "right";
|
|
690
|
-
if (activeRegions.has("center")) {
|
|
691
|
-
if (activeRegions.size === 1) return "center";
|
|
692
|
-
if (ratio >= 1 / 3 && ratio < 2 / 3) return "center";
|
|
693
|
-
}
|
|
694
|
-
return null;
|
|
695
|
-
}
|
|
696
|
-
|
|
697
|
-
//#endregion
|
|
698
|
-
//#region ../core/dist/dev/dom/gesture/coordinator.js
|
|
699
|
-
const TAP_THRESHOLD$1 = 250;
|
|
700
|
-
var GestureCoordinator = class {
|
|
701
|
-
#target;
|
|
702
|
-
#bindings = [];
|
|
703
|
-
#recognizers = /* @__PURE__ */ new Set();
|
|
704
|
-
#disconnect = null;
|
|
705
|
-
#subscribers = /* @__PURE__ */ new Set();
|
|
706
|
-
constructor(target) {
|
|
707
|
-
this.#target = target;
|
|
708
|
-
}
|
|
709
|
-
get bindings() {
|
|
710
|
-
return this.#bindings;
|
|
711
|
-
}
|
|
712
|
-
subscribe(callback) {
|
|
713
|
-
this.#subscribers.add(callback);
|
|
714
|
-
return () => this.#subscribers.delete(callback);
|
|
715
|
-
}
|
|
716
|
-
/**
|
|
717
|
-
* Whether a registered binding claims this tap for the given action. A claimed tap
|
|
718
|
-
* belongs to the gesture layer, so callers should leave it alone. Taps on interactive
|
|
719
|
-
* targets (buttons, sliders) are never claimed — the same filtering the pointerup
|
|
720
|
-
* listener applies. A disabled binding still claims: disabling a gesture opts out of
|
|
721
|
-
* the action, it doesn't hand the tap back to a fallback handler.
|
|
722
|
-
*/
|
|
723
|
-
claimsTap(event, action) {
|
|
724
|
-
if (isInteractiveTarget(event)) return false;
|
|
725
|
-
return this.#bindings.some((b) => b.type === "tap" && b.action === action && (!b.pointer || b.pointer === event.pointerType));
|
|
726
|
-
}
|
|
727
|
-
add(binding) {
|
|
728
|
-
const wrapped = {
|
|
729
|
-
...binding,
|
|
730
|
-
onActivate: (event) => {
|
|
731
|
-
if (this.#subscribers.size > 0) {
|
|
732
|
-
const activateEvent = {
|
|
733
|
-
type: binding.type,
|
|
734
|
-
source: "gesture",
|
|
735
|
-
action: binding.action,
|
|
736
|
-
value: binding.value,
|
|
737
|
-
region: binding.region,
|
|
738
|
-
pointer: binding.pointer,
|
|
739
|
-
event
|
|
740
|
-
};
|
|
741
|
-
for (const cb of this.#subscribers) try {
|
|
742
|
-
cb(activateEvent);
|
|
743
|
-
} catch (error) {
|
|
744
|
-
console.warn("[vjs-gesture] subscribe callback threw:", error);
|
|
745
|
-
}
|
|
746
|
-
}
|
|
747
|
-
binding.onActivate(event);
|
|
748
|
-
}
|
|
749
|
-
};
|
|
750
|
-
this.#bindings.push(wrapped);
|
|
751
|
-
this.#recognizers.add(wrapped.recognizer);
|
|
752
|
-
this.#connect();
|
|
753
|
-
let removed = false;
|
|
754
|
-
return () => {
|
|
755
|
-
if (removed) return;
|
|
756
|
-
removed = true;
|
|
757
|
-
const idx = this.#bindings.indexOf(wrapped);
|
|
758
|
-
if (idx !== -1) this.#bindings.splice(idx, 1);
|
|
759
|
-
this.#maybeDisconnect();
|
|
760
|
-
};
|
|
761
|
-
}
|
|
762
|
-
#connect() {
|
|
763
|
-
if (this.#disconnect) return;
|
|
764
|
-
this.#disconnect = new AbortController();
|
|
765
|
-
const { signal } = this.#disconnect;
|
|
766
|
-
let pointerDownTime = 0;
|
|
767
|
-
listen(this.#target, "pointerdown", (event) => {
|
|
768
|
-
if (event.button !== 0) return;
|
|
769
|
-
pointerDownTime = Date.now();
|
|
770
|
-
}, { signal });
|
|
771
|
-
listen(this.#target, "pointerup", (event) => {
|
|
772
|
-
if (event.button !== 0) return;
|
|
773
|
-
if (Date.now() - pointerDownTime > TAP_THRESHOLD$1) return;
|
|
774
|
-
if (isInteractiveTarget(event)) return;
|
|
775
|
-
const pointerType = event.pointerType;
|
|
776
|
-
const clientX = event.clientX;
|
|
777
|
-
const target = this.#target;
|
|
778
|
-
const bindings = this.#bindings;
|
|
779
|
-
const matches = { resolve: (type) => matchBindings(bindings, type, pointerType, clientX, target) };
|
|
780
|
-
for (const recognizer of this.#recognizers) recognizer.handleUp(matches, event);
|
|
781
|
-
}, { signal });
|
|
782
|
-
}
|
|
783
|
-
#maybeDisconnect() {
|
|
784
|
-
if (this.#bindings.length > 0) return;
|
|
785
|
-
for (const recognizer of this.#recognizers) recognizer.reset();
|
|
786
|
-
this.#recognizers.clear();
|
|
787
|
-
this.#disconnect?.abort();
|
|
788
|
-
this.#disconnect = null;
|
|
789
|
-
}
|
|
790
|
-
};
|
|
791
|
-
const coordinators = /* @__PURE__ */ new WeakMap();
|
|
792
|
-
/** Look up the gesture coordinator for a target element, if one exists. */
|
|
793
|
-
function findGestureCoordinator(target) {
|
|
794
|
-
return coordinators.get(target);
|
|
795
|
-
}
|
|
796
|
-
function getGestureCoordinator(target) {
|
|
797
|
-
let coordinator = coordinators.get(target);
|
|
798
|
-
if (!coordinator) {
|
|
799
|
-
coordinator = new GestureCoordinator(target);
|
|
800
|
-
coordinators.set(target, coordinator);
|
|
801
|
-
}
|
|
802
|
-
return coordinator;
|
|
803
|
-
}
|
|
804
|
-
function matchBindings(bindings, type, pointerType, clientX, target) {
|
|
805
|
-
const rect = target.getBoundingClientRect();
|
|
806
|
-
const activeRegions = getActiveRegions(bindings, type, pointerType);
|
|
807
|
-
const region = activeRegions.size > 0 ? resolveRegion(clientX, rect, activeRegions) : null;
|
|
808
|
-
const matches = [];
|
|
809
|
-
for (const binding of bindings) {
|
|
810
|
-
if (binding.disabled) continue;
|
|
811
|
-
if (binding.type !== type) continue;
|
|
812
|
-
if (binding.pointer && binding.pointer !== pointerType) continue;
|
|
813
|
-
if (binding.region) {
|
|
814
|
-
if (binding.region !== region) continue;
|
|
815
|
-
} else if (region !== null) continue;
|
|
816
|
-
matches.push(binding);
|
|
817
|
-
}
|
|
818
|
-
return matches;
|
|
819
|
-
}
|
|
820
|
-
function getActiveRegions(bindings, type, pointerType) {
|
|
821
|
-
const regions = /* @__PURE__ */ new Set();
|
|
822
|
-
for (const binding of bindings) {
|
|
823
|
-
if (binding.disabled) continue;
|
|
824
|
-
if (binding.type !== type) continue;
|
|
825
|
-
if (binding.pointer && binding.pointer !== pointerType) continue;
|
|
826
|
-
if (binding.region) regions.add(binding.region);
|
|
827
|
-
}
|
|
828
|
-
return regions;
|
|
829
|
-
}
|
|
830
|
-
|
|
831
|
-
//#endregion
|
|
832
|
-
//#region ../core/dist/dev/dom/presentation/remote-playback.js
|
|
833
|
-
function resolveRemote(media) {
|
|
834
|
-
const target = media;
|
|
835
|
-
if (isObject(target.remote) && "state" in target.remote && "prompt" in target.remote) return target.remote;
|
|
836
|
-
}
|
|
837
|
-
function isRemotePlaybackConnected(media) {
|
|
838
|
-
return resolveRemote(media)?.state === "connected";
|
|
839
|
-
}
|
|
840
|
-
function isRemotePlaybackConnecting(media) {
|
|
841
|
-
return resolveRemote(media)?.state === "connecting";
|
|
842
|
-
}
|
|
843
|
-
async function requestRemotePlayback(media) {
|
|
844
|
-
const remote = resolveRemote(media);
|
|
845
|
-
if (!remote) throw new DOMException("Remote playback not supported", "NotSupportedError");
|
|
846
|
-
return remote.prompt();
|
|
492
|
+
async function requestRemotePlayback(media) {
|
|
493
|
+
const remote = resolveRemote(media);
|
|
494
|
+
if (!remote) throw new DOMException("Remote playback not supported", "NotSupportedError");
|
|
495
|
+
return remote.prompt();
|
|
847
496
|
}
|
|
848
497
|
|
|
849
498
|
//#endregion
|
|
@@ -1239,11 +888,13 @@ const DEFAULT_POSTER = "";
|
|
|
1239
888
|
const metadataFeature = definePlayerFeature({
|
|
1240
889
|
name: "metadata",
|
|
1241
890
|
config: {
|
|
891
|
+
/** The title to display. Takes precedence over the title the media carries. */
|
|
1242
892
|
title: {
|
|
1243
893
|
action: SET_USER_TITLE,
|
|
1244
894
|
state: USER_TITLE,
|
|
1245
895
|
html: { attribute: "content-title" }
|
|
1246
896
|
},
|
|
897
|
+
/** The poster to display. Takes precedence over the poster the media carries. */
|
|
1247
898
|
poster: {
|
|
1248
899
|
action: SET_USER_POSTER,
|
|
1249
900
|
state: USER_POSTER
|
|
@@ -1258,7 +909,12 @@ const metadataFeature = definePlayerFeature({
|
|
|
1258
909
|
[SET_USER_POSTER]: (value) => set({ [USER_POSTER]: value })
|
|
1259
910
|
}),
|
|
1260
911
|
derived: {
|
|
912
|
+
/** The resolved content title. Set it through the player, not through the store. */
|
|
1261
913
|
title: ({ get }) => get()[USER_TITLE] ?? get()[MEDIA_TITLE] ?? DEFAULT_TITLE,
|
|
914
|
+
/**
|
|
915
|
+
* The resolved poster URL, independent of the media element's own `poster`.
|
|
916
|
+
* Set it through the player, not through the store.
|
|
917
|
+
*/
|
|
1262
918
|
poster: ({ get }) => get()[USER_POSTER] ?? get()[MEDIA_POSTER] ?? DEFAULT_POSTER
|
|
1263
919
|
},
|
|
1264
920
|
attach({ target, signal, set }) {
|
|
@@ -1570,6 +1226,15 @@ function showOnly(tracks, active) {
|
|
|
1570
1226
|
if (track.mode !== mode) track.mode = mode;
|
|
1571
1227
|
}
|
|
1572
1228
|
}
|
|
1229
|
+
/**
|
|
1230
|
+
* Map a media element's `crossOrigin` to a CORS mode. Per the CORS-settings
|
|
1231
|
+
* attribute, any value other than `use-credentials` is Anonymous — including
|
|
1232
|
+
* the empty string and unknown keywords.
|
|
1233
|
+
*/
|
|
1234
|
+
function toCorsMode(value) {
|
|
1235
|
+
if (isNil(value)) return null;
|
|
1236
|
+
return value.toLowerCase() === "use-credentials" ? "use-credentials" : "anonymous";
|
|
1237
|
+
}
|
|
1573
1238
|
function findLocaleTrack(tracks, locale) {
|
|
1574
1239
|
const localeKey = getCanonicalLocaleKey(locale);
|
|
1575
1240
|
const keys = findLocaleKeys(locale);
|
|
@@ -1589,6 +1254,7 @@ const textTrackFeature = definePlayerFeature({
|
|
|
1589
1254
|
chaptersCues: [],
|
|
1590
1255
|
thumbnailCues: [],
|
|
1591
1256
|
thumbnailTrackSrc: null,
|
|
1257
|
+
thumbnailTrackCrossOrigin: null,
|
|
1592
1258
|
textTrackList: [],
|
|
1593
1259
|
subtitlesShowing: false,
|
|
1594
1260
|
toggleSubtitles(forceShow) {
|
|
@@ -1653,7 +1319,11 @@ const textTrackFeature = definePlayerFeature({
|
|
|
1653
1319
|
const chaptersCues = chaptersTrack?.cues ? Array.from(chaptersTrack.cues) : [];
|
|
1654
1320
|
const thumbnailCues = thumbnailTrack?.cues ? Array.from(thumbnailTrack.cues) : [];
|
|
1655
1321
|
let thumbnailTrackSrc = null;
|
|
1656
|
-
|
|
1322
|
+
let thumbnailTrackCrossOrigin = null;
|
|
1323
|
+
if (thumbnailTrack) {
|
|
1324
|
+
thumbnailTrackSrc = findTrackElement(media, thumbnailTrack)?.src ?? null;
|
|
1325
|
+
thumbnailTrackCrossOrigin = isMediaSourceCapable(media) ? toCorsMode(media.crossOrigin) : null;
|
|
1326
|
+
}
|
|
1657
1327
|
const tracks = isQuerySelectorAllCapable(media) && media.querySelectorAll("track") || [];
|
|
1658
1328
|
const shadowTracks = media instanceof HTMLElement && media.shadowRoot?.querySelectorAll("track") || [];
|
|
1659
1329
|
for (const trackEl of [...tracks, ...shadowTracks]) if (!trackEl.track?.cues?.length) listen(trackEl, "load", sync, { signal: trackCleanup.signal });
|
|
@@ -1661,6 +1331,7 @@ const textTrackFeature = definePlayerFeature({
|
|
|
1661
1331
|
chaptersCues,
|
|
1662
1332
|
thumbnailCues,
|
|
1663
1333
|
thumbnailTrackSrc,
|
|
1334
|
+
thumbnailTrackCrossOrigin,
|
|
1664
1335
|
textTrackList,
|
|
1665
1336
|
subtitlesShowing
|
|
1666
1337
|
});
|
|
@@ -1797,6 +1468,335 @@ function canSetVolume() {
|
|
|
1797
1468
|
}
|
|
1798
1469
|
}
|
|
1799
1470
|
|
|
1471
|
+
//#endregion
|
|
1472
|
+
//#region ../store/dist/dev/core/abort-controller-registry.js
|
|
1473
|
+
var AbortControllerRegistry = class {
|
|
1474
|
+
#base;
|
|
1475
|
+
#keys = /* @__PURE__ */ new Map();
|
|
1476
|
+
/** The attach-scoped signal. Aborts on detach or reattach. */
|
|
1477
|
+
get base() {
|
|
1478
|
+
return (this.#base ??= new AbortController()).signal;
|
|
1479
|
+
}
|
|
1480
|
+
/** Clears all keyed signals, leaving base intact. */
|
|
1481
|
+
clear() {
|
|
1482
|
+
for (const controller of this.#keys.values()) controller.abort();
|
|
1483
|
+
this.#keys.clear();
|
|
1484
|
+
}
|
|
1485
|
+
/** Resets base and clears all keyed signals. */
|
|
1486
|
+
reset() {
|
|
1487
|
+
this.clear();
|
|
1488
|
+
this.#base?.abort();
|
|
1489
|
+
this.#base = void 0;
|
|
1490
|
+
}
|
|
1491
|
+
/** Creates a new signal for the key, superseding any previous signal. */
|
|
1492
|
+
supersede(key) {
|
|
1493
|
+
this.#keys.get(key)?.abort();
|
|
1494
|
+
const controller = new AbortController();
|
|
1495
|
+
this.#keys.set(key, controller);
|
|
1496
|
+
return anyAbortSignal([this.base, controller.signal]);
|
|
1497
|
+
}
|
|
1498
|
+
};
|
|
1499
|
+
|
|
1500
|
+
//#endregion
|
|
1501
|
+
//#region ../store/dist/dev/core/combine.js
|
|
1502
|
+
/**
|
|
1503
|
+
* Combines multiple slices into a single slice.
|
|
1504
|
+
*
|
|
1505
|
+
* @param slices - The slices to combine.
|
|
1506
|
+
* @returns A new slice that represents the combination of the input slices.
|
|
1507
|
+
*/
|
|
1508
|
+
function combine(...slices) {
|
|
1509
|
+
const derivedDefinitions = slices.map((slice) => slice.derived ?? {});
|
|
1510
|
+
warnDuplicates("derived", derivedDefinitions);
|
|
1511
|
+
return {
|
|
1512
|
+
state: (ctx) => {
|
|
1513
|
+
const states = slices.map((slice) => slice.state(ctx));
|
|
1514
|
+
warnDuplicates("state", states);
|
|
1515
|
+
warnOverlaps(states, derivedDefinitions);
|
|
1516
|
+
return Object.assign({}, ...states);
|
|
1517
|
+
},
|
|
1518
|
+
preserve: Array.from(new Set(slices.flatMap((slice) => slice.preserve ?? []))),
|
|
1519
|
+
derived: Object.assign({}, ...derivedDefinitions),
|
|
1520
|
+
attach: (ctx) => {
|
|
1521
|
+
for (const slice of slices) try {
|
|
1522
|
+
slice.attach?.(ctx);
|
|
1523
|
+
} catch (err) {
|
|
1524
|
+
ctx.reportError(err);
|
|
1525
|
+
}
|
|
1526
|
+
}
|
|
1527
|
+
};
|
|
1528
|
+
}
|
|
1529
|
+
function warnDuplicates(namespace, objects) {
|
|
1530
|
+
const seen = /* @__PURE__ */ new Set();
|
|
1531
|
+
for (const object of objects) for (const key of Reflect.ownKeys(object)) {
|
|
1532
|
+
if (seen.has(key)) console.warn(`[vjs-store] combine(): duplicate ${namespace} key "${String(key)}" — later slice overwrites earlier one`);
|
|
1533
|
+
seen.add(key);
|
|
1534
|
+
}
|
|
1535
|
+
}
|
|
1536
|
+
function warnOverlaps(states, derivedDefinitions) {
|
|
1537
|
+
const stateKeys = new Set(states.flatMap((state) => Reflect.ownKeys(state)));
|
|
1538
|
+
for (const key of new Set(derivedDefinitions.flatMap((derived) => Reflect.ownKeys(derived)))) if (stateKeys.has(key)) console.warn(`[vjs-store] combine(): state and derived key "${String(key)}" overlap — derived state overwrites source state`);
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
//#endregion
|
|
1542
|
+
//#region ../store/dist/dev/core/errors.js
|
|
1543
|
+
var StoreError = class extends Error {
|
|
1544
|
+
code;
|
|
1545
|
+
cause;
|
|
1546
|
+
constructor(code, options) {
|
|
1547
|
+
super(options?.message ?? code);
|
|
1548
|
+
this.name = "StoreError";
|
|
1549
|
+
this.code = code;
|
|
1550
|
+
this.cause = options?.cause;
|
|
1551
|
+
}
|
|
1552
|
+
};
|
|
1553
|
+
function throwNoTargetError() {
|
|
1554
|
+
throw new StoreError("NO_TARGET");
|
|
1555
|
+
}
|
|
1556
|
+
function throwDestroyedError() {
|
|
1557
|
+
throw new StoreError("DESTROYED");
|
|
1558
|
+
}
|
|
1559
|
+
|
|
1560
|
+
//#endregion
|
|
1561
|
+
//#region ../store/dist/dev/core/state.js
|
|
1562
|
+
let isFlushScheduled = false;
|
|
1563
|
+
function scheduleFlush() {
|
|
1564
|
+
if (isFlushScheduled) return;
|
|
1565
|
+
isFlushScheduled = true;
|
|
1566
|
+
queueMicrotask(flush);
|
|
1567
|
+
}
|
|
1568
|
+
const pendingContainers = /* @__PURE__ */ new Set();
|
|
1569
|
+
function flush() {
|
|
1570
|
+
isFlushScheduled = false;
|
|
1571
|
+
for (const container of pendingContainers) container.flush();
|
|
1572
|
+
pendingContainers.clear();
|
|
1573
|
+
}
|
|
1574
|
+
const hasOwnProp$1 = Object.prototype.hasOwnProperty;
|
|
1575
|
+
var StateContainer = class {
|
|
1576
|
+
#current;
|
|
1577
|
+
#listeners = /* @__PURE__ */ new Set();
|
|
1578
|
+
#pending = false;
|
|
1579
|
+
constructor(initial) {
|
|
1580
|
+
this.#current = Object.freeze({ ...initial });
|
|
1581
|
+
}
|
|
1582
|
+
get current() {
|
|
1583
|
+
return this.#current;
|
|
1584
|
+
}
|
|
1585
|
+
patch(partial) {
|
|
1586
|
+
const next = { ...this.#current };
|
|
1587
|
+
let changed = false;
|
|
1588
|
+
for (const key of Reflect.ownKeys(partial)) {
|
|
1589
|
+
if (!hasOwnProp$1.call(partial, key)) continue;
|
|
1590
|
+
const value = partial[key];
|
|
1591
|
+
if (!Object.is(this.#current[key], value)) {
|
|
1592
|
+
next[key] = value;
|
|
1593
|
+
changed = true;
|
|
1594
|
+
}
|
|
1595
|
+
}
|
|
1596
|
+
if (changed) {
|
|
1597
|
+
this.#current = Object.freeze(next);
|
|
1598
|
+
this.#markPending();
|
|
1599
|
+
}
|
|
1600
|
+
}
|
|
1601
|
+
replace(next) {
|
|
1602
|
+
if (shallowEqual(this.#current, next)) return;
|
|
1603
|
+
this.#current = Object.freeze({ ...next });
|
|
1604
|
+
this.#markPending();
|
|
1605
|
+
}
|
|
1606
|
+
subscribe(callback, options) {
|
|
1607
|
+
const signal = options?.signal;
|
|
1608
|
+
if (signal?.aborted) return noop;
|
|
1609
|
+
this.#listeners.add(callback);
|
|
1610
|
+
if (!signal) return () => this.#listeners.delete(callback);
|
|
1611
|
+
const onAbort = () => this.#listeners.delete(callback);
|
|
1612
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
1613
|
+
return () => {
|
|
1614
|
+
signal.removeEventListener("abort", onAbort);
|
|
1615
|
+
this.#listeners.delete(callback);
|
|
1616
|
+
};
|
|
1617
|
+
}
|
|
1618
|
+
flush() {
|
|
1619
|
+
if (!this.#pending) return;
|
|
1620
|
+
this.#pending = false;
|
|
1621
|
+
for (const fn of this.#listeners) fn();
|
|
1622
|
+
}
|
|
1623
|
+
#markPending() {
|
|
1624
|
+
this.#pending = true;
|
|
1625
|
+
pendingContainers.add(this);
|
|
1626
|
+
scheduleFlush();
|
|
1627
|
+
}
|
|
1628
|
+
};
|
|
1629
|
+
function createState(initial) {
|
|
1630
|
+
return new StateContainer(initial);
|
|
1631
|
+
}
|
|
1632
|
+
|
|
1633
|
+
//#endregion
|
|
1634
|
+
//#region ../store/dist/dev/core/store.js
|
|
1635
|
+
const STORE_SYMBOL = Symbol.for("@videojs/store");
|
|
1636
|
+
const hasOwnProp = Object.prototype.hasOwnProperty;
|
|
1637
|
+
function createStore() {
|
|
1638
|
+
return ((slice, options = {}) => {
|
|
1639
|
+
let target = null;
|
|
1640
|
+
let destroyed = false;
|
|
1641
|
+
const setupAbort = new AbortController();
|
|
1642
|
+
const signals = new AbortControllerRegistry();
|
|
1643
|
+
let sourceState;
|
|
1644
|
+
let state;
|
|
1645
|
+
function validate() {
|
|
1646
|
+
if (destroyed) throwDestroyedError();
|
|
1647
|
+
if (!target) throwNoTargetError();
|
|
1648
|
+
}
|
|
1649
|
+
const initialSourceState = freezeCopy(slice.state({
|
|
1650
|
+
target: () => {
|
|
1651
|
+
validate();
|
|
1652
|
+
return target;
|
|
1653
|
+
},
|
|
1654
|
+
signals,
|
|
1655
|
+
get: () => sourceState,
|
|
1656
|
+
set: (partial) => setSource(partial)
|
|
1657
|
+
}));
|
|
1658
|
+
sourceState = initialSourceState;
|
|
1659
|
+
const initialDerivedState = derive(sourceState);
|
|
1660
|
+
state = createState(publish(sourceState, initialDerivedState));
|
|
1661
|
+
const store = {
|
|
1662
|
+
[STORE_SYMBOL]: true,
|
|
1663
|
+
get $state() {
|
|
1664
|
+
return state;
|
|
1665
|
+
},
|
|
1666
|
+
get target() {
|
|
1667
|
+
return target;
|
|
1668
|
+
},
|
|
1669
|
+
get destroyed() {
|
|
1670
|
+
return destroyed;
|
|
1671
|
+
},
|
|
1672
|
+
get state() {
|
|
1673
|
+
return state.current;
|
|
1674
|
+
},
|
|
1675
|
+
attach,
|
|
1676
|
+
destroy,
|
|
1677
|
+
subscribe
|
|
1678
|
+
};
|
|
1679
|
+
for (const key of Object.keys(state.current)) Object.defineProperty(store, key, {
|
|
1680
|
+
get: () => state.current[key],
|
|
1681
|
+
enumerable: true
|
|
1682
|
+
});
|
|
1683
|
+
for (const key of Object.getOwnPropertySymbols(sourceState)) {
|
|
1684
|
+
if (typeof sourceState[key] !== "function") continue;
|
|
1685
|
+
Object.defineProperty(store, key, { get: () => sourceState[key] });
|
|
1686
|
+
}
|
|
1687
|
+
try {
|
|
1688
|
+
options.onSetup?.({
|
|
1689
|
+
store,
|
|
1690
|
+
signal: setupAbort.signal
|
|
1691
|
+
});
|
|
1692
|
+
} catch (error) {
|
|
1693
|
+
reportError(error);
|
|
1694
|
+
}
|
|
1695
|
+
return store;
|
|
1696
|
+
function derive(source) {
|
|
1697
|
+
const result = {};
|
|
1698
|
+
const definitions = slice.derived;
|
|
1699
|
+
if (!definitions) return result;
|
|
1700
|
+
const ctx = { get: () => source };
|
|
1701
|
+
for (const key of Object.keys(definitions)) result[key] = definitions[key](ctx);
|
|
1702
|
+
return result;
|
|
1703
|
+
}
|
|
1704
|
+
function publish(source, derived) {
|
|
1705
|
+
const result = {};
|
|
1706
|
+
for (const key of Object.keys(source)) result[key] = source[key];
|
|
1707
|
+
return Object.assign(result, derived);
|
|
1708
|
+
}
|
|
1709
|
+
function setSource(partial) {
|
|
1710
|
+
const patched = patchSource(sourceState, partial);
|
|
1711
|
+
if (!patched) return;
|
|
1712
|
+
const nextDerived = derive(patched.next);
|
|
1713
|
+
sourceState = patched.next;
|
|
1714
|
+
state.replace(publish(sourceState, nextDerived));
|
|
1715
|
+
}
|
|
1716
|
+
function attach(newTarget) {
|
|
1717
|
+
if (destroyed) throwDestroyedError();
|
|
1718
|
+
signals.reset();
|
|
1719
|
+
target = newTarget;
|
|
1720
|
+
const attachContext = {
|
|
1721
|
+
target: newTarget,
|
|
1722
|
+
signal: signals.base,
|
|
1723
|
+
get: () => sourceState,
|
|
1724
|
+
set: (partial) => {
|
|
1725
|
+
try {
|
|
1726
|
+
setSource(partial);
|
|
1727
|
+
} catch (error) {
|
|
1728
|
+
reportError(error);
|
|
1729
|
+
}
|
|
1730
|
+
},
|
|
1731
|
+
reportError,
|
|
1732
|
+
store: {
|
|
1733
|
+
get state() {
|
|
1734
|
+
return state.current;
|
|
1735
|
+
},
|
|
1736
|
+
subscribe
|
|
1737
|
+
}
|
|
1738
|
+
};
|
|
1739
|
+
try {
|
|
1740
|
+
slice.attach?.(attachContext);
|
|
1741
|
+
} catch (error) {
|
|
1742
|
+
reportError(error);
|
|
1743
|
+
}
|
|
1744
|
+
try {
|
|
1745
|
+
options.onAttach?.({
|
|
1746
|
+
store,
|
|
1747
|
+
target: newTarget,
|
|
1748
|
+
signal: signals.base
|
|
1749
|
+
});
|
|
1750
|
+
} catch (error) {
|
|
1751
|
+
reportError(error);
|
|
1752
|
+
}
|
|
1753
|
+
return detach;
|
|
1754
|
+
}
|
|
1755
|
+
function detach() {
|
|
1756
|
+
if (isNull(target)) return;
|
|
1757
|
+
signals.reset();
|
|
1758
|
+
target = null;
|
|
1759
|
+
const resetState = { ...initialSourceState };
|
|
1760
|
+
for (const key of slice.preserve ?? []) resetState[key] = sourceState[key];
|
|
1761
|
+
setSource(resetState);
|
|
1762
|
+
}
|
|
1763
|
+
function destroy() {
|
|
1764
|
+
if (destroyed) return;
|
|
1765
|
+
destroyed = true;
|
|
1766
|
+
detach();
|
|
1767
|
+
setupAbort.abort();
|
|
1768
|
+
}
|
|
1769
|
+
function subscribe(callback, options) {
|
|
1770
|
+
return state.subscribe(callback, options);
|
|
1771
|
+
}
|
|
1772
|
+
function reportError(error) {
|
|
1773
|
+
if (options.onError) options.onError({
|
|
1774
|
+
store,
|
|
1775
|
+
error
|
|
1776
|
+
});
|
|
1777
|
+
else console.error("[vjs-store]", error);
|
|
1778
|
+
}
|
|
1779
|
+
});
|
|
1780
|
+
}
|
|
1781
|
+
function freezeCopy(value) {
|
|
1782
|
+
return Object.freeze({ ...value });
|
|
1783
|
+
}
|
|
1784
|
+
function patchSource(current, partial) {
|
|
1785
|
+
const next = { ...current };
|
|
1786
|
+
let changed = false;
|
|
1787
|
+
for (const key of Reflect.ownKeys(partial)) {
|
|
1788
|
+
if (!hasOwnProp.call(partial, key)) continue;
|
|
1789
|
+
const value = partial[key];
|
|
1790
|
+
if (Object.is(current[key], value)) continue;
|
|
1791
|
+
next[key] = value;
|
|
1792
|
+
changed = true;
|
|
1793
|
+
}
|
|
1794
|
+
return changed ? { next: Object.freeze(next) } : null;
|
|
1795
|
+
}
|
|
1796
|
+
function isStore(value) {
|
|
1797
|
+
return isObject(value) && STORE_SYMBOL in value;
|
|
1798
|
+
}
|
|
1799
|
+
|
|
1800
1800
|
//#endregion
|
|
1801
1801
|
//#region ../core/dist/dev/dom/store/features/presets.js
|
|
1802
1802
|
const videoFeatures = [
|
|
@@ -2266,5 +2266,5 @@ function createPlayer(config) {
|
|
|
2266
2266
|
}
|
|
2267
2267
|
|
|
2268
2268
|
//#endregion
|
|
2269
|
-
export {
|
|
2270
|
-
//# sourceMappingURL=create-player-
|
|
2269
|
+
export { isMediaStreamTypeCapable as A, errorFeature as C, audioTrackFeature as D, bufferFeature as E, isEditableTarget as M, isInteractiveActivation as N, isMediaBufferCapable as O, fullscreenFeature as S, getGestureCoordinator as T, playbackRateFeature as _, backgroundFeatures as a, metadataFeature as b, createState as c, volumeFeature as d, timeFeature as f, qualityFeature as g, remotePlaybackFeature as h, audioFeatures as i, definePlayerFeature as j, isMediaSeekCapable as k, throwNoTargetError as l, sourceFeature as m, PlayerController as n, liveVideoFeatures as o, textTrackFeature as p, SnapshotController as r, videoFeatures as s, createPlayer as t, AbortControllerRegistry as u, playbackFeature as v, controlsFeature as w, liveFeature as x, pipFeature as y };
|
|
2270
|
+
//# sourceMappingURL=create-player-5UrHNqBI.js.map
|