@videojs/html 10.0.0-beta.27 → 10.0.0-beta.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (676) hide show
  1. package/cdn/{adapter-XTen-YVQ.js → adapter-CEnNWvii.js} +17 -4
  2. package/cdn/adapter-CEnNWvii.js.map +1 -0
  3. package/cdn/adapter-DaKW8NzI.js +2 -0
  4. package/cdn/adapter-DaKW8NzI.js.map +1 -0
  5. package/cdn/audio-headless.dev.js +1 -1
  6. package/cdn/audio-headless.js +1 -1
  7. package/cdn/audio-minimal-ui.dev.js +2 -2
  8. package/cdn/audio-minimal-ui.js +1 -1
  9. package/cdn/audio-minimal.dev.js +5 -5
  10. package/cdn/audio-minimal.dev.js.map +1 -1
  11. package/cdn/audio-minimal.js +1 -1
  12. package/cdn/audio-minimal.js.map +1 -1
  13. package/cdn/audio-ui.dev.js +2 -2
  14. package/cdn/audio-ui.js +1 -1
  15. package/cdn/audio.dev.js +5 -5
  16. package/cdn/audio.dev.js.map +1 -1
  17. package/cdn/audio.js +1 -1
  18. package/cdn/audio.js.map +1 -1
  19. package/cdn/background-video-WKumpp49.js +59 -0
  20. package/cdn/background-video-WKumpp49.js.map +1 -0
  21. package/cdn/background-video-YHY_3-lX.js +2 -0
  22. package/cdn/background-video-YHY_3-lX.js.map +1 -0
  23. package/cdn/background.dev.js +3 -56
  24. package/cdn/background.dev.js.map +1 -1
  25. package/cdn/background.js +1 -1
  26. package/cdn/background.js.map +1 -1
  27. package/cdn/bn-CcLIScl6.js +108 -0
  28. package/cdn/bn-CcLIScl6.js.map +1 -0
  29. package/cdn/bn-KcCmQhYd.js +2 -0
  30. package/cdn/bn-KcCmQhYd.js.map +1 -0
  31. package/cdn/compounds-C4YYLyL2.js +8 -0
  32. package/cdn/compounds-C4YYLyL2.js.map +1 -0
  33. package/cdn/{compounds-CCvdpvge.js → compounds-C73u1MeO.js} +68 -71
  34. package/cdn/compounds-C73u1MeO.js.map +1 -0
  35. package/cdn/container-element-Dd0ZCdhK.js +14 -0
  36. package/cdn/container-element-Dd0ZCdhK.js.map +1 -0
  37. package/cdn/container-element-HHK_KZOE.js +376 -0
  38. package/cdn/container-element-HHK_KZOE.js.map +1 -0
  39. package/cdn/create-player-BU8LDJDL.js +2 -0
  40. package/cdn/create-player-BU8LDJDL.js.map +1 -0
  41. package/cdn/{create-player-BHFyOnWi.js → create-player-Db1CIvlK.js} +76 -424
  42. package/cdn/create-player-Db1CIvlK.js.map +1 -0
  43. package/cdn/{default-BqQDVloS.js → default-A3aM0skz.js} +2 -2
  44. package/cdn/default-A3aM0skz.js.map +1 -0
  45. package/cdn/default-BDyhiTCm.js +2 -0
  46. package/cdn/default-BDyhiTCm.js.map +1 -0
  47. package/cdn/{default-I2LasfxC.js → default-C1_k1NeB.js} +2 -2
  48. package/cdn/default-C1_k1NeB.js.map +1 -0
  49. package/cdn/default-DHrMd4ie.js +2 -0
  50. package/cdn/default-DHrMd4ie.js.map +1 -0
  51. package/cdn/embed-params-D2e8u0d4.js +2 -0
  52. package/cdn/embed-params-D2e8u0d4.js.map +1 -0
  53. package/cdn/embed-params-W6T88S8x.js +39 -0
  54. package/cdn/embed-params-W6T88S8x.js.map +1 -0
  55. package/cdn/error-surface-BID4D3DW.js +59 -0
  56. package/cdn/error-surface-BID4D3DW.js.map +1 -0
  57. package/cdn/{select-tracks-nRPBa1NC.js → error-surface-D0bo71gD.js} +442 -48
  58. package/cdn/error-surface-D0bo71gD.js.map +1 -0
  59. package/cdn/{gesture-element-BNfMI8eh.js → gesture-element-CeRy1IVs.js} +2 -2
  60. package/cdn/gesture-element-CeRy1IVs.js.map +1 -0
  61. package/cdn/{gesture-element-CG-Sx_5t.js → gesture-element-DB67OYCE.js} +3 -3
  62. package/cdn/gesture-element-DB67OYCE.js.map +1 -0
  63. package/cdn/hls-js-CiE4wOrG.js +2 -0
  64. package/cdn/{hls-js-6lW7L4th.js.map → hls-js-CiE4wOrG.js.map} +1 -1
  65. package/cdn/hls-js-DBKRCbQm.js +2 -0
  66. package/cdn/{hls-js-DCQzjzB5.js.map → hls-js-DBKRCbQm.js.map} +1 -1
  67. package/cdn/{hls-js-g1zdcyvE.js → hls-js-DX2NGCAr.js} +3 -2
  68. package/cdn/{hls-js-g1zdcyvE.js.map → hls-js-DX2NGCAr.js.map} +1 -1
  69. package/cdn/{hls-js-Cwj8UBx9.js → hls-js-JeH8yvsP.js} +3 -2
  70. package/cdn/{hls-js-Cwj8UBx9.js.map → hls-js-JeH8yvsP.js.map} +1 -1
  71. package/cdn/i18n-CE4KxKuj.js +2 -0
  72. package/cdn/i18n-CE4KxKuj.js.map +1 -0
  73. package/cdn/i18n-CpBDXf6M.js +2 -0
  74. package/cdn/{i18n-DfKGl5Rh.js.map → i18n-CpBDXf6M.js.map} +1 -1
  75. package/cdn/{i18n-Mtlmj1AA.js → i18n-D0nhPa0m.js} +2 -2
  76. package/cdn/{i18n-Mtlmj1AA.js.map → i18n-D0nhPa0m.js.map} +1 -1
  77. package/cdn/i18n-DyF_NfCk.js +157 -0
  78. package/cdn/i18n-DyF_NfCk.js.map +1 -0
  79. package/cdn/i18n.dev.js +3 -152
  80. package/cdn/i18n.dev.js.map +1 -1
  81. package/cdn/i18n.js +1 -1
  82. package/cdn/i18n.js.map +1 -1
  83. package/cdn/live-button-element-Co8z2LkI.js +2 -0
  84. package/cdn/{live-button-element-CWfkQUoy.js.map → live-button-element-Co8z2LkI.js.map} +1 -1
  85. package/cdn/{live-button-element-B_y-ZJBy.js → live-button-element-zE-8uoR2.js} +5 -4
  86. package/cdn/live-button-element-zE-8uoR2.js.map +1 -0
  87. package/cdn/live-video-minimal.dev.js +12 -10
  88. package/cdn/live-video-minimal.dev.js.map +1 -1
  89. package/cdn/live-video-minimal.js +1 -1
  90. package/cdn/live-video-minimal.js.map +1 -1
  91. package/cdn/live-video.dev.js +13 -11
  92. package/cdn/live-video.dev.js.map +1 -1
  93. package/cdn/live-video.js +1 -1
  94. package/cdn/live-video.js.map +1 -1
  95. package/cdn/locales/bn.dev.js +1 -1
  96. package/cdn/locales/bn.js +1 -1
  97. package/cdn/media/background-video.dev.d.ts +1 -0
  98. package/cdn/media/background-video.dev.js +3 -0
  99. package/cdn/media/background-video.js +1 -0
  100. package/cdn/media/cloudflare-video.dev.d.ts +1 -0
  101. package/cdn/media/cloudflare-video.dev.js +668 -0
  102. package/cdn/media/cloudflare-video.dev.js.map +1 -0
  103. package/cdn/media/cloudflare-video.js +2 -0
  104. package/cdn/media/cloudflare-video.js.map +1 -0
  105. package/cdn/media/container.dev.d.ts +1 -0
  106. package/cdn/media/container.dev.js +8 -0
  107. package/cdn/media/container.dev.js.map +1 -0
  108. package/cdn/media/container.js +2 -0
  109. package/cdn/media/container.js.map +1 -0
  110. package/cdn/media/dash-video.dev.js +2 -1
  111. package/cdn/media/dash-video.js +2 -2
  112. package/cdn/media/dash-video.js.map +1 -1
  113. package/cdn/media/google-cast.dev.js +2 -31
  114. package/cdn/media/google-cast.dev.js.map +1 -1
  115. package/cdn/media/google-cast.js +3 -3
  116. package/cdn/media/google-cast.js.map +1 -1
  117. package/cdn/media/hls-audio.dev.js +2 -1
  118. package/cdn/media/hls-audio.js +1 -1
  119. package/cdn/media/hls-audio.js.map +1 -1
  120. package/cdn/media/hls-background-video.dev.js +2 -1
  121. package/cdn/media/hls-background-video.js +1 -1
  122. package/cdn/media/hls-background-video.js.map +1 -1
  123. package/cdn/media/hls-video.dev.js +2 -1
  124. package/cdn/media/hls-video.js +1 -1
  125. package/cdn/media/hls-video.js.map +1 -1
  126. package/cdn/media/hlsjs-video.dev.js +2 -1
  127. package/cdn/media/hlsjs-video.js +1 -1
  128. package/cdn/media/hlsjs-video.js.map +1 -1
  129. package/cdn/media/mux-audio/hls-js.dev.js +3 -1
  130. package/cdn/media/mux-audio/hls-js.js +1 -1
  131. package/cdn/media/mux-audio/spf.dev.js +3 -2
  132. package/cdn/media/mux-audio/spf.js +1 -1
  133. package/cdn/media/mux-audio/spf.js.map +1 -1
  134. package/cdn/media/mux-audio.dev.js +3 -1
  135. package/cdn/media/mux-audio.js +1 -1
  136. package/cdn/media/mux-background-video.dev.js +2 -1
  137. package/cdn/media/mux-background-video.js +1 -1
  138. package/cdn/media/mux-background-video.js.map +1 -1
  139. package/cdn/media/mux-data.dev.js +2 -1
  140. package/cdn/media/mux-data.dev.js.map +1 -1
  141. package/cdn/media/mux-data.js +2 -2
  142. package/cdn/media/mux-data.js.map +1 -1
  143. package/cdn/media/mux-video/hls-js.dev.js +3 -1
  144. package/cdn/media/mux-video/hls-js.js +1 -1
  145. package/cdn/media/mux-video/spf.dev.js +3 -2
  146. package/cdn/media/mux-video/spf.js +1 -1
  147. package/cdn/media/mux-video/spf.js.map +1 -1
  148. package/cdn/media/mux-video.dev.js +3 -1
  149. package/cdn/media/mux-video.js +1 -1
  150. package/cdn/media/native-hls-video.dev.js +1 -0
  151. package/cdn/media/native-hls-video.js +1 -1
  152. package/cdn/media/native-hls-video.js.map +1 -1
  153. package/cdn/media/spotify-audio.dev.d.ts +1 -0
  154. package/cdn/media/spotify-audio.dev.js +605 -0
  155. package/cdn/media/spotify-audio.dev.js.map +1 -0
  156. package/cdn/media/spotify-audio.js +2 -0
  157. package/cdn/media/spotify-audio.js.map +1 -0
  158. package/cdn/media/tiktok-video.dev.d.ts +1 -0
  159. package/cdn/media/tiktok-video.dev.js +636 -0
  160. package/cdn/media/tiktok-video.dev.js.map +1 -0
  161. package/cdn/media/tiktok-video.js +2 -0
  162. package/cdn/media/tiktok-video.js.map +1 -0
  163. package/cdn/media/twitch-video.dev.d.ts +1 -0
  164. package/cdn/media/twitch-video.dev.js +627 -0
  165. package/cdn/media/twitch-video.dev.js.map +1 -0
  166. package/cdn/media/twitch-video.js +2 -0
  167. package/cdn/media/twitch-video.js.map +1 -0
  168. package/cdn/media/vimeo-video.dev.d.ts +1 -0
  169. package/cdn/media/vimeo-video.dev.js +3011 -0
  170. package/cdn/media/vimeo-video.dev.js.map +1 -0
  171. package/cdn/media/vimeo-video.js +16 -0
  172. package/cdn/media/vimeo-video.js.map +1 -0
  173. package/cdn/media/youtube-video.dev.d.ts +1 -0
  174. package/cdn/media/youtube-video.dev.js +713 -0
  175. package/cdn/media/youtube-video.dev.js.map +1 -0
  176. package/cdn/media/youtube-video.js +2 -0
  177. package/cdn/media/youtube-video.js.map +1 -0
  178. package/cdn/{media-Uxm0d3Vx.js → media-BI8caj07.js} +3 -3
  179. package/cdn/{media-Uxm0d3Vx.js.map → media-BI8caj07.js.map} +1 -1
  180. package/cdn/{media-B_gQXwri.js → media-BNuI0Im7.js} +30 -8
  181. package/cdn/media-BNuI0Im7.js.map +1 -0
  182. package/cdn/{media-Cp3acYc8.js → media-BavrGKqa.js} +274 -5
  183. package/cdn/media-BavrGKqa.js.map +1 -0
  184. package/cdn/media-CQxFuDcv.js +2 -0
  185. package/cdn/{media-CbWsJJhU.js.map → media-CQxFuDcv.js.map} +1 -1
  186. package/cdn/media-CanBm0Jh.js +41 -0
  187. package/cdn/media-CanBm0Jh.js.map +1 -0
  188. package/cdn/media-D4tG62L5.js +2 -0
  189. package/cdn/{media-BTipOcKo.js.map → media-D4tG62L5.js.map} +1 -1
  190. package/cdn/{media-DRo3n8tM.js → media-DI6DvYm3.js} +4 -4
  191. package/cdn/{media-DRo3n8tM.js.map → media-DI6DvYm3.js.map} +1 -1
  192. package/cdn/media-DU3Xf5XR.js +2 -0
  193. package/cdn/media-DU3Xf5XR.js.map +1 -0
  194. package/cdn/media-mYKOAsk3.js +825 -0
  195. package/cdn/media-mYKOAsk3.js.map +1 -0
  196. package/cdn/media-played-ranges-CM2zeOGr.js +2 -0
  197. package/cdn/media-played-ranges-CM2zeOGr.js.map +1 -0
  198. package/cdn/media-played-ranges-Yd9acuMt.js +156 -0
  199. package/cdn/media-played-ranges-Yd9acuMt.js.map +1 -0
  200. package/cdn/media-zReLnePj.js +2 -0
  201. package/cdn/media-zReLnePj.js.map +1 -0
  202. package/cdn/{minimal-DQCLKRyR.js → minimal-3OmH0xQS.js} +2 -2
  203. package/cdn/minimal-3OmH0xQS.js.map +1 -0
  204. package/cdn/{minimal-DLosvq31.js → minimal-6w_Vyyl9.js} +2 -2
  205. package/cdn/minimal-6w_Vyyl9.js.map +1 -0
  206. package/cdn/minimal-BWLTn7oQ.js +2 -0
  207. package/cdn/minimal-BWLTn7oQ.js.map +1 -0
  208. package/cdn/minimal-DIGrklyh.js +2 -0
  209. package/cdn/minimal-DIGrklyh.js.map +1 -0
  210. package/cdn/{minimal-ui-Bxcpf5Mb.js → minimal-ui-BCIESK8f.js} +9 -9
  211. package/cdn/{minimal-ui-Bxcpf5Mb.js.map → minimal-ui-BCIESK8f.js.map} +1 -1
  212. package/cdn/minimal-ui-BXrq3z4U.js +2 -0
  213. package/cdn/{minimal-ui-BVKu9LWj.js.map → minimal-ui-BXrq3z4U.js.map} +1 -1
  214. package/cdn/{minimal-ui--JsmpU2q.js → minimal-ui-DEalpMk6.js} +5 -5
  215. package/cdn/{minimal-ui--JsmpU2q.js.map → minimal-ui-DEalpMk6.js.map} +1 -1
  216. package/cdn/minimal-ui-vY3QgohH.js +2 -0
  217. package/cdn/{minimal-ui-AFk6Ut5f.js.map → minimal-ui-vY3QgohH.js.map} +1 -1
  218. package/cdn/mixin-BqN0V06a.js +2 -0
  219. package/cdn/{mixin-DiB7dIef.js.map → mixin-BqN0V06a.js.map} +1 -1
  220. package/cdn/{mixin-CkNZwQXF.js → mixin-C193v40v.js} +67 -67
  221. package/cdn/mixin-C193v40v.js.map +1 -0
  222. package/cdn/noop-BxkeRIz9.js +6 -0
  223. package/cdn/noop-BxkeRIz9.js.map +1 -0
  224. package/cdn/noop-Ch0IHcOP.js +2 -0
  225. package/cdn/noop-Ch0IHcOP.js.map +1 -0
  226. package/cdn/{player-C4ix6TQq.js → player-B3GlPF90.js} +3 -2
  227. package/cdn/{player-C4ix6TQq.js.map → player-B3GlPF90.js.map} +1 -1
  228. package/cdn/player-CtTC7qa5.js +2 -0
  229. package/cdn/{player-B0ccW5-n.js.map → player-CtTC7qa5.js.map} +1 -1
  230. package/cdn/player-DKkph8UM.js +2 -0
  231. package/cdn/{player-srq1RGTj.js.map → player-DKkph8UM.js.map} +1 -1
  232. package/cdn/{player-B0qnepD5.js → player-DPDmTRvg.js} +3 -2
  233. package/cdn/{player-B0qnepD5.js.map → player-DPDmTRvg.js.map} +1 -1
  234. package/cdn/player-DrDd7LJi.js +2 -0
  235. package/cdn/{player-iIewo8Y9.js.map → player-DrDd7LJi.js.map} +1 -1
  236. package/cdn/{player-D4fdOLLk.js → player-L5UpZmT4.js} +3 -2
  237. package/cdn/{player-D4fdOLLk.js.map → player-L5UpZmT4.js.map} +1 -1
  238. package/cdn/{poster-element-BP1Ypgbf.js → poster-element-B5tdJ2ub.js} +192 -39
  239. package/cdn/poster-element-B5tdJ2ub.js.map +1 -0
  240. package/cdn/poster-element-B8QwXSU_.js +2 -0
  241. package/cdn/poster-element-B8QwXSU_.js.map +1 -0
  242. package/cdn/{error-surface-drmCvBVW.js → relocation-pipelines-Dh8CcgHw.js} +5 -343
  243. package/cdn/relocation-pipelines-Dh8CcgHw.js.map +1 -0
  244. package/cdn/relocation-pipelines-DunE4gcV.js +2 -0
  245. package/cdn/relocation-pipelines-DunE4gcV.js.map +1 -0
  246. package/cdn/script-D3ZkiqwO.js +2 -0
  247. package/cdn/script-D3ZkiqwO.js.map +1 -0
  248. package/cdn/script-erPJaaTz.js +33 -0
  249. package/cdn/script-erPJaaTz.js.map +1 -0
  250. package/cdn/{seek-button-element-TErrbilI.js → seek-button-element-5co-k0Dx.js} +7 -6
  251. package/cdn/seek-button-element-5co-k0Dx.js.map +1 -0
  252. package/cdn/seek-button-element-B8TkILg-.js +2 -0
  253. package/cdn/seek-button-element-B8TkILg-.js.map +1 -0
  254. package/cdn/shallow-equal-C7S8rj2f.js +16 -0
  255. package/cdn/shallow-equal-C7S8rj2f.js.map +1 -0
  256. package/cdn/shallow-equal-KV1zFqZi.js +2 -0
  257. package/cdn/shallow-equal-KV1zFqZi.js.map +1 -0
  258. package/cdn/{skin-element-wPSb4AAs.js → skin-element-DrkI8xuM.js} +2 -2
  259. package/cdn/{skin-element-wPSb4AAs.js.map → skin-element-DrkI8xuM.js.map} +1 -1
  260. package/cdn/{skin-element-1_MG2zgS.js → skin-element-DvX6Bxsv.js} +2 -2
  261. package/cdn/{skin-element-1_MG2zgS.js.map → skin-element-DvX6Bxsv.js.map} +1 -1
  262. package/cdn/text-element-BoY6AhMn.js +2 -0
  263. package/cdn/{text-element-Bsyglab8.js.map → text-element-BoY6AhMn.js.map} +1 -1
  264. package/cdn/{text-element-DTB9_2HX.js → text-element-cg6l21cd.js} +3 -3
  265. package/cdn/{text-element-DTB9_2HX.js.map → text-element-cg6l21cd.js.map} +1 -1
  266. package/cdn/time-slider-chapters-element-BfLjdnU4.js +2 -0
  267. package/cdn/time-slider-chapters-element-BfLjdnU4.js.map +1 -0
  268. package/cdn/{time-slider-chapters-element-DPgaLdBt.js → time-slider-chapters-element-CznFQWFm.js} +7 -6
  269. package/cdn/time-slider-chapters-element-CznFQWFm.js.map +1 -0
  270. package/cdn/{translate-text-DP0CzUCC.js → translate-text-BWvoW5-r.js} +2 -7
  271. package/cdn/translate-text-BWvoW5-r.js.map +1 -0
  272. package/cdn/translate-text-TzSgu_oe.js +2 -0
  273. package/cdn/translate-text-TzSgu_oe.js.map +1 -0
  274. package/cdn/{ui-D0AokGxw.js → ui-BwzqkJNK.js} +8 -8
  275. package/cdn/{ui-D0AokGxw.js.map → ui-BwzqkJNK.js.map} +1 -1
  276. package/cdn/ui-DayfItun.js +2 -0
  277. package/cdn/{ui-CecDxhTX.js.map → ui-DayfItun.js.map} +1 -1
  278. package/cdn/ui-PSnD-pv8.js +2 -0
  279. package/cdn/{ui-ChWM6Xz2.js.map → ui-PSnD-pv8.js.map} +1 -1
  280. package/cdn/{ui-p36Szn71.js → ui-fnKp94a7.js} +10 -10
  281. package/cdn/{ui-p36Szn71.js.map → ui-fnKp94a7.js.map} +1 -1
  282. package/cdn/video-headless.dev.js +1 -1
  283. package/cdn/video-headless.js +1 -1
  284. package/cdn/video-minimal-ui.dev.js +2 -2
  285. package/cdn/video-minimal-ui.js +1 -1
  286. package/cdn/video-minimal.dev.js +8 -6
  287. package/cdn/video-minimal.dev.js.map +1 -1
  288. package/cdn/video-minimal.js +1 -1
  289. package/cdn/video-minimal.js.map +1 -1
  290. package/cdn/video-ui.dev.js +2 -2
  291. package/cdn/video-ui.js +1 -1
  292. package/cdn/video.dev.js +9 -7
  293. package/cdn/video.dev.js.map +1 -1
  294. package/cdn/video.js +1 -1
  295. package/cdn/video.js.map +1 -1
  296. package/dist/default/__generated__/skins/default-video/styles/buttons.css +132 -18
  297. package/dist/default/__generated__/skins/default-video/styles/captions.css +22 -0
  298. package/dist/default/__generated__/skins/default-video/styles/container.css +121 -8
  299. package/dist/default/__generated__/skins/default-video/styles/controls.css +436 -21
  300. package/dist/default/__generated__/skins/default-video/styles/dialog.css +169 -0
  301. package/dist/default/__generated__/skins/default-video/styles/indicator.css +459 -0
  302. package/dist/default/__generated__/skins/default-video/styles/menus.css +254 -0
  303. package/dist/default/__generated__/skins/default-video/styles/overlays.css +26 -2
  304. package/dist/default/__generated__/skins/default-video/styles/popups.css +338 -12
  305. package/dist/default/__generated__/skins/default-video/styles/poster.css +4 -4
  306. package/dist/default/__generated__/skins/default-video/styles/sliders.css +355 -31
  307. package/dist/default/__generated__/skins/default-video/styles/styles.css +2455 -216
  308. package/dist/default/__generated__/skins/default-video/styles/theme.css +4 -19
  309. package/dist/default/__generated__/skins/default-video/styles/video.css +29 -0
  310. package/dist/default/__generated__/skins/minimal-video/styles/base.css +25 -0
  311. package/dist/default/__generated__/skins/minimal-video/styles/buttons.css +266 -0
  312. package/dist/default/__generated__/skins/minimal-video/styles/captions.css +22 -0
  313. package/dist/default/__generated__/skins/minimal-video/styles/container.css +158 -0
  314. package/dist/default/__generated__/skins/minimal-video/styles/controls.css +182 -0
  315. package/dist/default/__generated__/skins/minimal-video/styles/dialog.css +77 -0
  316. package/dist/default/__generated__/skins/minimal-video/styles/indicator.css +322 -0
  317. package/dist/default/__generated__/skins/minimal-video/styles/menus.css +254 -0
  318. package/dist/default/__generated__/skins/minimal-video/styles/overlays.css +35 -0
  319. package/dist/default/__generated__/skins/minimal-video/styles/popups.css +371 -0
  320. package/dist/default/__generated__/skins/minimal-video/styles/poster.css +47 -0
  321. package/dist/default/__generated__/skins/minimal-video/styles/sliders.css +436 -0
  322. package/dist/default/__generated__/skins/minimal-video/styles/styles.css +2246 -0
  323. package/dist/default/__generated__/skins/minimal-video/styles/theme.css +7 -0
  324. package/dist/default/__generated__/skins/minimal-video/styles/video.css +29 -0
  325. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  326. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  327. package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
  328. package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  329. package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js +1 -1
  330. package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -1
  331. package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js +1 -1
  332. package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -1
  333. package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js +1 -1
  334. package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -1
  335. package/dist/default/_virtual/inline-css_src/define/live-video/skin.js +1 -1
  336. package/dist/default/_virtual/inline-css_src/define/live-video/skin.js.map +1 -1
  337. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  338. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  339. package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
  340. package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  341. package/dist/default/define/audio/minimal-skin.css +117 -118
  342. package/dist/default/define/audio/skin.css +95 -99
  343. package/dist/default/define/live-audio/minimal-skin.css +117 -118
  344. package/dist/default/define/live-audio/skin.css +95 -99
  345. package/dist/default/define/live-video/minimal-skin.css +158 -137
  346. package/dist/default/define/live-video/minimal-skin.js +1 -1
  347. package/dist/default/define/live-video/minimal-skin.js.map +1 -1
  348. package/dist/default/define/live-video/minimal-skin.tailwind.js +1 -1
  349. package/dist/default/define/live-video/minimal-skin.tailwind.js.map +1 -1
  350. package/dist/default/define/live-video/skin.css +120 -106
  351. package/dist/default/define/live-video/skin.js +1 -1
  352. package/dist/default/define/live-video/skin.js.map +1 -1
  353. package/dist/default/define/live-video/skin.tailwind.js +1 -1
  354. package/dist/default/define/live-video/skin.tailwind.js.map +1 -1
  355. package/dist/default/define/ui/gesture.js +7 -0
  356. package/dist/default/define/ui/gesture.js.map +1 -0
  357. package/dist/default/define/video/minimal-skin.css +158 -137
  358. package/dist/default/define/video/minimal-skin.js +1 -1
  359. package/dist/default/define/video/minimal-skin.js.map +1 -1
  360. package/dist/default/define/video/minimal-skin.tailwind.js +1 -1
  361. package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
  362. package/dist/default/define/video/skin.css +120 -106
  363. package/dist/default/define/video/skin.js +1 -1
  364. package/dist/default/define/video/skin.js.map +1 -1
  365. package/dist/default/define/video/skin.tailwind.js +1 -1
  366. package/dist/default/define/video/skin.tailwind.js.map +1 -1
  367. package/dist/default/icons/dist/element/default/icons.js +1 -1
  368. package/dist/default/icons/dist/element/default/icons.js.map +1 -1
  369. package/dist/default/icons/dist/element/minimal/icons.js +1 -1
  370. package/dist/default/icons/dist/element/minimal/icons.js.map +1 -1
  371. package/dist/default/icons/dist/html/default/airplay-exit.js +1 -1
  372. package/dist/default/icons/dist/html/default/airplay-exit.js.map +1 -1
  373. package/dist/default/icons/dist/html/minimal/airplay-exit.js +1 -1
  374. package/dist/default/icons/dist/html/minimal/airplay-exit.js.map +1 -1
  375. package/dist/default/icons/dist/render/default/index.js +1 -1
  376. package/dist/default/icons/dist/render/default/index.js.map +1 -1
  377. package/dist/default/icons/dist/render/minimal/index.js +1 -1
  378. package/dist/default/icons/dist/render/minimal/index.js.map +1 -1
  379. package/dist/default/media/hls-background-video/media.js +18 -0
  380. package/dist/default/media/hls-background-video/media.js.map +1 -1
  381. package/dist/default/media/tiktok-video/media.js +3 -2
  382. package/dist/default/media/tiktok-video/media.js.map +1 -1
  383. package/dist/default/skins/dist/default/default/tailwind/components/button.js +3 -1
  384. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  385. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +8 -1
  386. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  387. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +13 -13
  388. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  389. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
  390. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
  391. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +3 -3
  392. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  393. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
  394. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  395. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
  396. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  397. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
  398. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
  399. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -6
  400. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  401. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +4 -4
  402. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  403. package/dist/default/store/provider-mixin.js +22 -8
  404. package/dist/default/store/provider-mixin.js.map +1 -1
  405. package/dist/default/ui/audio-track-radio-group/audio-track-radio-group-element.js +1 -1
  406. package/dist/default/ui/audio-track-radio-group/audio-track-radio-group-element.js.map +1 -1
  407. package/dist/default/ui/captions-radio-group/captions-radio-group-element.js +1 -1
  408. package/dist/default/ui/captions-radio-group/captions-radio-group-element.js.map +1 -1
  409. package/dist/default/ui/gesture/gesture-element.js.map +1 -1
  410. package/dist/default/ui/hotkey/hotkey-element.js.map +1 -1
  411. package/dist/default/ui/menu/context.js.map +1 -1
  412. package/dist/default/ui/menu/menu-element.js +28 -27
  413. package/dist/default/ui/menu/menu-element.js.map +1 -1
  414. package/dist/default/ui/menu/menu-radio-group-element.js +14 -14
  415. package/dist/default/ui/menu/menu-radio-group-element.js.map +1 -1
  416. package/dist/default/ui/playback-rate-button/playback-rate-button-element.js +1 -2
  417. package/dist/default/ui/playback-rate-button/playback-rate-button-element.js.map +1 -1
  418. package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group-element.js +1 -1
  419. package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group-element.js.map +1 -1
  420. package/dist/default/ui/poster/poster-element.js +138 -8
  421. package/dist/default/ui/poster/poster-element.js.map +1 -1
  422. package/dist/default/ui/quality-radio-group/quality-radio-group-element.js +1 -1
  423. package/dist/default/ui/quality-radio-group/quality-radio-group-element.js.map +1 -1
  424. package/dist/default/ui/slider/slider-preview-element.js.map +1 -1
  425. package/dist/dev/__generated__/skins/default-video/styles/buttons.css +132 -18
  426. package/dist/dev/__generated__/skins/default-video/styles/captions.css +22 -0
  427. package/dist/dev/__generated__/skins/default-video/styles/container.css +121 -8
  428. package/dist/dev/__generated__/skins/default-video/styles/controls.css +436 -21
  429. package/dist/dev/__generated__/skins/default-video/styles/dialog.css +169 -0
  430. package/dist/dev/__generated__/skins/default-video/styles/indicator.css +459 -0
  431. package/dist/dev/__generated__/skins/default-video/styles/menus.css +254 -0
  432. package/dist/dev/__generated__/skins/default-video/styles/overlays.css +26 -2
  433. package/dist/dev/__generated__/skins/default-video/styles/popups.css +338 -12
  434. package/dist/dev/__generated__/skins/default-video/styles/poster.css +4 -4
  435. package/dist/dev/__generated__/skins/default-video/styles/sliders.css +355 -31
  436. package/dist/dev/__generated__/skins/default-video/styles/styles.css +2455 -216
  437. package/dist/dev/__generated__/skins/default-video/styles/theme.css +4 -19
  438. package/dist/dev/__generated__/skins/default-video/styles/video.css +29 -0
  439. package/dist/dev/__generated__/skins/minimal-video/styles/base.css +25 -0
  440. package/dist/dev/__generated__/skins/minimal-video/styles/buttons.css +266 -0
  441. package/dist/dev/__generated__/skins/minimal-video/styles/captions.css +22 -0
  442. package/dist/dev/__generated__/skins/minimal-video/styles/container.css +158 -0
  443. package/dist/dev/__generated__/skins/minimal-video/styles/controls.css +182 -0
  444. package/dist/dev/__generated__/skins/minimal-video/styles/dialog.css +77 -0
  445. package/dist/dev/__generated__/skins/minimal-video/styles/indicator.css +322 -0
  446. package/dist/dev/__generated__/skins/minimal-video/styles/menus.css +254 -0
  447. package/dist/dev/__generated__/skins/minimal-video/styles/overlays.css +35 -0
  448. package/dist/dev/__generated__/skins/minimal-video/styles/popups.css +371 -0
  449. package/dist/dev/__generated__/skins/minimal-video/styles/poster.css +47 -0
  450. package/dist/dev/__generated__/skins/minimal-video/styles/sliders.css +436 -0
  451. package/dist/dev/__generated__/skins/minimal-video/styles/styles.css +2246 -0
  452. package/dist/dev/__generated__/skins/minimal-video/styles/theme.css +7 -0
  453. package/dist/dev/__generated__/skins/minimal-video/styles/video.css +29 -0
  454. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  455. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  456. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
  457. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  458. package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js +1 -1
  459. package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -1
  460. package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js +1 -1
  461. package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -1
  462. package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js +1 -1
  463. package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -1
  464. package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js +1 -1
  465. package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js.map +1 -1
  466. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  467. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  468. package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
  469. package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  470. package/dist/dev/define/audio/minimal-skin.css +117 -118
  471. package/dist/dev/define/audio/skin.css +95 -99
  472. package/dist/dev/define/live-audio/minimal-skin.css +117 -118
  473. package/dist/dev/define/live-audio/skin.css +95 -99
  474. package/dist/dev/define/live-video/minimal-skin.css +158 -137
  475. package/dist/dev/define/live-video/minimal-skin.d.ts.map +1 -1
  476. package/dist/dev/define/live-video/minimal-skin.js +3 -1
  477. package/dist/dev/define/live-video/minimal-skin.js.map +1 -1
  478. package/dist/dev/define/live-video/minimal-skin.tailwind.d.ts.map +1 -1
  479. package/dist/dev/define/live-video/minimal-skin.tailwind.js +3 -1
  480. package/dist/dev/define/live-video/minimal-skin.tailwind.js.map +1 -1
  481. package/dist/dev/define/live-video/skin.css +120 -106
  482. package/dist/dev/define/live-video/skin.d.ts.map +1 -1
  483. package/dist/dev/define/live-video/skin.js +3 -1
  484. package/dist/dev/define/live-video/skin.js.map +1 -1
  485. package/dist/dev/define/live-video/skin.tailwind.d.ts.map +1 -1
  486. package/dist/dev/define/live-video/skin.tailwind.js +4 -2
  487. package/dist/dev/define/live-video/skin.tailwind.js.map +1 -1
  488. package/dist/dev/define/ui/gesture.d.ts +8 -0
  489. package/dist/dev/define/ui/gesture.d.ts.map +1 -0
  490. package/dist/dev/define/ui/gesture.js +7 -0
  491. package/dist/dev/define/ui/gesture.js.map +1 -0
  492. package/dist/dev/define/video/minimal-skin.css +158 -137
  493. package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
  494. package/dist/dev/define/video/minimal-skin.js +3 -1
  495. package/dist/dev/define/video/minimal-skin.js.map +1 -1
  496. package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
  497. package/dist/dev/define/video/minimal-skin.tailwind.js +3 -1
  498. package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
  499. package/dist/dev/define/video/skin.css +120 -106
  500. package/dist/dev/define/video/skin.d.ts.map +1 -1
  501. package/dist/dev/define/video/skin.js +3 -1
  502. package/dist/dev/define/video/skin.js.map +1 -1
  503. package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
  504. package/dist/dev/define/video/skin.tailwind.js +4 -2
  505. package/dist/dev/define/video/skin.tailwind.js.map +1 -1
  506. package/dist/dev/media/hls-background-video/media.d.ts +16 -0
  507. package/dist/dev/media/hls-background-video/media.d.ts.map +1 -1
  508. package/dist/dev/media/hls-background-video/media.js +18 -0
  509. package/dist/dev/media/hls-background-video/media.js.map +1 -1
  510. package/dist/dev/media/tiktok-video/media.d.ts.map +1 -1
  511. package/dist/dev/media/tiktok-video/media.js +10 -7
  512. package/dist/dev/media/tiktok-video/media.js.map +1 -1
  513. package/dist/dev/packages/icons/dist/element/default/icons.js +1 -1
  514. package/dist/dev/packages/icons/dist/element/default/icons.js.map +1 -1
  515. package/dist/dev/packages/icons/dist/element/minimal/icons.js +1 -1
  516. package/dist/dev/packages/icons/dist/element/minimal/icons.js.map +1 -1
  517. package/dist/dev/packages/icons/dist/html/default/airplay-exit.js +1 -1
  518. package/dist/dev/packages/icons/dist/html/default/airplay-exit.js.map +1 -1
  519. package/dist/dev/packages/icons/dist/html/minimal/airplay-exit.js +1 -1
  520. package/dist/dev/packages/icons/dist/html/minimal/airplay-exit.js.map +1 -1
  521. package/dist/dev/packages/icons/dist/render/default/index.js +1 -1
  522. package/dist/dev/packages/icons/dist/render/default/index.js.map +1 -1
  523. package/dist/dev/packages/icons/dist/render/minimal/index.js +1 -1
  524. package/dist/dev/packages/icons/dist/render/minimal/index.js.map +1 -1
  525. package/dist/dev/packages/skins/dist/default/default/tailwind/components/button.js +3 -1
  526. package/dist/dev/packages/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  527. package/dist/dev/packages/skins/dist/default/default/tailwind/components/poster.js +8 -1
  528. package/dist/dev/packages/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  529. package/dist/dev/packages/skins/dist/default/default/tailwind/components/slider.js +13 -13
  530. package/dist/dev/packages/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  531. package/dist/dev/packages/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
  532. package/dist/dev/packages/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
  533. package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js +3 -3
  534. package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  535. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
  536. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  537. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
  538. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  539. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
  540. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
  541. package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -6
  542. package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  543. package/dist/dev/packages/skins/dist/default/shared/tailwind/icon-state.js +4 -4
  544. package/dist/dev/packages/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  545. package/dist/dev/store/provider-mixin.d.ts.map +1 -1
  546. package/dist/dev/store/provider-mixin.js +24 -8
  547. package/dist/dev/store/provider-mixin.js.map +1 -1
  548. package/dist/dev/store/types.d.ts +2 -2
  549. package/dist/dev/store/types.d.ts.map +1 -1
  550. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group-element.js +1 -1
  551. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group-element.js.map +1 -1
  552. package/dist/dev/ui/captions-radio-group/captions-radio-group-element.js +1 -1
  553. package/dist/dev/ui/captions-radio-group/captions-radio-group-element.js.map +1 -1
  554. package/dist/dev/ui/gesture/gesture-element.d.ts +7 -7
  555. package/dist/dev/ui/gesture/gesture-element.d.ts.map +1 -1
  556. package/dist/dev/ui/gesture/gesture-element.js.map +1 -1
  557. package/dist/dev/ui/hotkey/hotkey-element.d.ts +6 -6
  558. package/dist/dev/ui/hotkey/hotkey-element.d.ts.map +1 -1
  559. package/dist/dev/ui/hotkey/hotkey-element.js.map +1 -1
  560. package/dist/dev/ui/menu/context.d.ts +8 -8
  561. package/dist/dev/ui/menu/context.d.ts.map +1 -1
  562. package/dist/dev/ui/menu/context.js.map +1 -1
  563. package/dist/dev/ui/menu/menu-element.d.ts.map +1 -1
  564. package/dist/dev/ui/menu/menu-element.js +28 -27
  565. package/dist/dev/ui/menu/menu-element.js.map +1 -1
  566. package/dist/dev/ui/menu/menu-radio-group-element.d.ts +1 -1
  567. package/dist/dev/ui/menu/menu-radio-group-element.d.ts.map +1 -1
  568. package/dist/dev/ui/menu/menu-radio-group-element.js +14 -14
  569. package/dist/dev/ui/menu/menu-radio-group-element.js.map +1 -1
  570. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts.map +1 -1
  571. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js +1 -2
  572. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js.map +1 -1
  573. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group-element.js +1 -1
  574. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group-element.js.map +1 -1
  575. package/dist/dev/ui/poster/poster-element.d.ts +20 -18
  576. package/dist/dev/ui/poster/poster-element.d.ts.map +1 -1
  577. package/dist/dev/ui/poster/poster-element.js +145 -8
  578. package/dist/dev/ui/poster/poster-element.js.map +1 -1
  579. package/dist/dev/ui/quality-radio-group/quality-radio-group-element.js +1 -1
  580. package/dist/dev/ui/quality-radio-group/quality-radio-group-element.js.map +1 -1
  581. package/dist/dev/ui/slider/slider-preview-element.d.ts +2 -2
  582. package/dist/dev/ui/slider/slider-preview-element.d.ts.map +1 -1
  583. package/dist/dev/ui/slider/slider-preview-element.js.map +1 -1
  584. package/docs/README.md +1 -1
  585. package/docs/concepts/features.md +2 -2
  586. package/docs/concepts/media-sources.md +79 -1
  587. package/docs/concepts/skins.md +122 -108
  588. package/docs/how-to/build-your-own-component.md +1 -1
  589. package/docs/how-to/customize-skins.md +499 -469
  590. package/docs/how-to/migrate-from-media-chrome.md +359 -0
  591. package/docs/how-to/migrate-from-mux-player.md +535 -0
  592. package/docs/how-to/migrate-from-plyr.md +394 -0
  593. package/docs/how-to/migrate-from-video-js-8.md +594 -0
  594. package/docs/llms.txt +9 -0
  595. package/docs/reference/feature-volume.md +3 -1
  596. package/docs/reference/menu.md +3 -19
  597. package/docs/reference/mute-button.md +34 -0
  598. package/docs/reference/popover.md +2 -2
  599. package/docs/reference/poster.md +211 -21
  600. package/docs/reference/slider.md +1 -1
  601. package/docs/reference/time-slider.md +1 -1
  602. package/docs/reference/tooltip.md +6 -6
  603. package/docs/reference/volume-slider.md +2 -2
  604. package/package.json +15 -9
  605. package/cdn/adapter-Bk03SAxn.js +0 -2
  606. package/cdn/adapter-Bk03SAxn.js.map +0 -1
  607. package/cdn/adapter-XTen-YVQ.js.map +0 -1
  608. package/cdn/bn-DdelKD_n.js +0 -108
  609. package/cdn/bn-DdelKD_n.js.map +0 -1
  610. package/cdn/bn-YS8ruMcO.js +0 -2
  611. package/cdn/bn-YS8ruMcO.js.map +0 -1
  612. package/cdn/compounds-CCvdpvge.js.map +0 -1
  613. package/cdn/compounds-CJ6SbYAh.js +0 -8
  614. package/cdn/compounds-CJ6SbYAh.js.map +0 -1
  615. package/cdn/create-player-BHFyOnWi.js.map +0 -1
  616. package/cdn/create-player-CbpxjDaZ.js +0 -14
  617. package/cdn/create-player-CbpxjDaZ.js.map +0 -1
  618. package/cdn/default-BqQDVloS.js.map +0 -1
  619. package/cdn/default-CXWVp2oG.js +0 -2
  620. package/cdn/default-CXWVp2oG.js.map +0 -1
  621. package/cdn/default-Dw6cIEqT.js +0 -2
  622. package/cdn/default-Dw6cIEqT.js.map +0 -1
  623. package/cdn/default-I2LasfxC.js.map +0 -1
  624. package/cdn/error-surface-DCT1m2p1.js +0 -2
  625. package/cdn/error-surface-DCT1m2p1.js.map +0 -1
  626. package/cdn/error-surface-drmCvBVW.js.map +0 -1
  627. package/cdn/gesture-element-BNfMI8eh.js.map +0 -1
  628. package/cdn/gesture-element-CG-Sx_5t.js.map +0 -1
  629. package/cdn/hls-js-6lW7L4th.js +0 -2
  630. package/cdn/hls-js-DCQzjzB5.js +0 -2
  631. package/cdn/i18n-DfKGl5Rh.js +0 -2
  632. package/cdn/live-button-element-B_y-ZJBy.js.map +0 -1
  633. package/cdn/live-button-element-CWfkQUoy.js +0 -2
  634. package/cdn/media-5ODYtX1-.js +0 -2
  635. package/cdn/media-5ODYtX1-.js.map +0 -1
  636. package/cdn/media-BTipOcKo.js +0 -2
  637. package/cdn/media-B_gQXwri.js.map +0 -1
  638. package/cdn/media-CPWNSZFX.js +0 -41
  639. package/cdn/media-CPWNSZFX.js.map +0 -1
  640. package/cdn/media-CbWsJJhU.js +0 -2
  641. package/cdn/media-Cp3acYc8.js.map +0 -1
  642. package/cdn/media-Dq4zmIJa2.js +0 -2
  643. package/cdn/media-Dq4zmIJa2.js.map +0 -1
  644. package/cdn/media-suYcjCG22.js +0 -445
  645. package/cdn/media-suYcjCG22.js.map +0 -1
  646. package/cdn/minimal-BedCvMBG.js +0 -2
  647. package/cdn/minimal-BedCvMBG.js.map +0 -1
  648. package/cdn/minimal-BoP112ye.js +0 -2
  649. package/cdn/minimal-BoP112ye.js.map +0 -1
  650. package/cdn/minimal-DLosvq31.js.map +0 -1
  651. package/cdn/minimal-DQCLKRyR.js.map +0 -1
  652. package/cdn/minimal-ui-AFk6Ut5f.js +0 -2
  653. package/cdn/minimal-ui-BVKu9LWj.js +0 -2
  654. package/cdn/mixin-CkNZwQXF.js.map +0 -1
  655. package/cdn/mixin-DiB7dIef.js +0 -2
  656. package/cdn/player-B0ccW5-n.js +0 -2
  657. package/cdn/player-iIewo8Y9.js +0 -2
  658. package/cdn/player-srq1RGTj.js +0 -2
  659. package/cdn/poster-element-BP1Ypgbf.js.map +0 -1
  660. package/cdn/poster-element-S-rr412t.js +0 -2
  661. package/cdn/poster-element-S-rr412t.js.map +0 -1
  662. package/cdn/seek-button-element-DxLmm58Y.js +0 -2
  663. package/cdn/seek-button-element-DxLmm58Y.js.map +0 -1
  664. package/cdn/seek-button-element-TErrbilI.js.map +0 -1
  665. package/cdn/select-tracks-nRPBa1NC.js.map +0 -1
  666. package/cdn/select-tracks-xV1s28xD.js +0 -59
  667. package/cdn/select-tracks-xV1s28xD.js.map +0 -1
  668. package/cdn/text-element-Bsyglab8.js +0 -2
  669. package/cdn/time-slider-chapters-element-DPgaLdBt.js.map +0 -1
  670. package/cdn/time-slider-chapters-element-MdlcovBu.js +0 -2
  671. package/cdn/time-slider-chapters-element-MdlcovBu.js.map +0 -1
  672. package/cdn/translate-text-BPMWpzFm.js +0 -2
  673. package/cdn/translate-text-BPMWpzFm.js.map +0 -1
  674. package/cdn/translate-text-DP0CzUCC.js.map +0 -1
  675. package/cdn/ui-CecDxhTX.js +0 -2
  676. package/cdn/ui-ChWM6Xz2.js +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twitch-video.dev.js","names":["#messages","#target","#beginLoad","#createPlayer","#attachId","#playerReady","#pendingLoad","#rebuilding","#embedSrc","#loadComplete","#resetState","#src","#source","#readyState","#sendCommand","#error","#kind","#snapshotProps","#playback","#paused","#seeking","#currentTime","#afterLoad","#duration","#volume","#muted","#playbackRate","#autoplay","#defaultMuted","#loop","#controls","#playsInline","#preload","#poster","#progress","#isFullscreen","#onMessage","#loaded","#isStale","#onEmbedEvent","#onUpdateState","#onLoaded"],"sources":["../../../media/dist/dev/dom/twitch/props.js","../../../media/dist/dev/dom/twitch/player-api.js","../../../media/dist/dev/dom/twitch/source.js","../../../media/dist/dev/dom/twitch/media.js","../../src/media/twitch-video/media.ts","../../src/define/media/twitch-video.ts"],"sourcesContent":["//#region src/dom/twitch/props.ts\nconst twitchMediaDefaultProps = {\n\tsrc: \"\",\n\tautoplay: false,\n\tdefaultMuted: false,\n\tmuted: false,\n\tloop: false,\n\tcontrols: false,\n\tplaysInline: true,\n\tpreload: \"metadata\",\n\tposter: \"\",\n\tsource: null\n};\n//#endregion\nexport { twitchMediaDefaultProps };\n\n//# sourceMappingURL=props.js.map","import { isObject, isString } from \"@videojs/utils/predicate\";\n//#region src/dom/twitch/player-api.ts\n/** Embed origin: where the embed is served from and where commands are posted. */\nconst TWITCH_PLAYER_ORIGIN = \"https://player.twitch.tv\";\n/** Namespace on the commands the host posts, and on the state snapshots that come back. */\nconst PLAYER_PROXY_NAMESPACE = \"twitch-embed-player-proxy\";\n/** Namespace on the lifecycle events the embed emits. */\nconst EMBED_NAMESPACE = \"twitch-embed\";\nconst PLAYBACK_BUFFERING = \"Buffering\";\nconst PLAYBACK_PLAYING = \"Playing\";\nconst PLAYBACK_ENDED = \"Ended\";\n/** Narrow a `message` payload to something the embed sent; any page can post here, so the namespace is the filter. */\nfunction isTwitchMessage(data) {\n\tif (!isObject(data)) return false;\n\tconst { namespace, eventName } = data;\n\treturn isString(eventName) && (namespace === \"twitch-embed\" || namespace === \"twitch-embed-player-proxy\");\n}\n//#endregion\nexport { EMBED_NAMESPACE, PLAYBACK_BUFFERING, PLAYBACK_ENDED, PLAYBACK_PLAYING, PLAYER_PROXY_NAMESPACE, TWITCH_PLAYER_ORIGIN, isTwitchMessage };\n\n//# sourceMappingURL=player-api.js.map","import { TWITCH_PLAYER_ORIGIN } from \"./player-api.js\";\nimport { twitchMediaDefaultProps } from \"./props.js\";\nimport { isNil, isString } from \"@videojs/utils/predicate\";\n//#region src/dom/twitch/source.ts\n/** Extract a Twitch VOD id from any recognized video URL. */\nfunction parseTwitchVideoId(src) {\n\treturn parseTwitchSource(src)?.id ?? null;\n}\n/**\n* Parse a Twitch source string. Recognizes VOD URLs (`twitch.tv/videos/<id>`\n* and `twitch.tv/?video=<id>`) and channel URLs (`twitch.tv/<channel>`), with\n* or without the `www.` and `go.` hosts, and with or without a trailing slash.\n*/\nfunction parseTwitchSource(src) {\n\tif (!src) return null;\n\tconst videoId = MATCH_VIDEO.exec(src)?.[1];\n\tif (videoId) return {\n\t\tkind: \"video\",\n\t\tid: videoId,\n\t\tchannel: null\n\t};\n\tconst channel = MATCH_CHANNEL.exec(src)?.[1];\n\tif (channel) return {\n\t\tkind: \"channel\",\n\t\tid: null,\n\t\tchannel\n\t};\n\treturn null;\n}\n/** Build the iframe `src` URL for an initial Twitch embed from the given props. */\nfunction buildTwitchIframeSrc(src, props = {}) {\n\tconst parsed = parseTwitchSource(src);\n\tif (!parsed) return \"\";\n\tconst { parent, referrerPolicy: _referrerPolicy, ...twitch } = props.source?.engine?.twitch ?? {};\n\tconst params = {\n\t\t...parsed.kind === \"video\" ? { video: `v${parsed.id}` } : { channel: parsed.channel },\n\t\tcontrols: props.controls === true ? null : false,\n\t\tautoplay: props.autoplay === true ? null : false,\n\t\tmuted: props.defaultMuted ?? twitchMediaDefaultProps.defaultMuted,\n\t\tpreload: props.preload ?? twitchMediaDefaultProps.preload,\n\t\t...twitch\n\t};\n\tconst query = new URLSearchParams();\n\tfor (const key in params) {\n\t\tconst value = params[key];\n\t\tif (isNil(value) || value === \"\") continue;\n\t\tquery.set(key, String(value));\n\t}\n\tfor (const host of resolveParentHosts(parent)) query.append(\"parent\", host);\n\tif (!query.has(\"parent\")) console.warn(\"[vjs-twitch] The Twitch embed refuses to play without a `parent` hostname. Set `engine.twitch.parent` to the host page.\");\n\treturn `${TWITCH_PLAYER_ORIGIN}/?${query.toString()}`;\n}\n/** The configured parent hostnames plus the page's own, deduplicated. */\nfunction resolveParentHosts(parent) {\n\tconst hosts = [...isString(parent) ? [parent] : parent ?? [], globalThis.location?.hostname];\n\treturn [...new Set(hosts.filter((host) => isString(host) && host !== \"\"))];\n}\nconst MATCH_VIDEO = /(?:^|\\/\\/)(?:www\\.|go\\.)?twitch\\.tv\\/(?:videos?\\/|\\?video=)(\\d+)\\/?(?:$|\\?)/;\nconst MATCH_CHANNEL = /(?:^|\\/\\/)(?:www\\.|go\\.)?twitch\\.tv\\/([a-zA-Z0-9_]+)\\/?(?:$|\\?)/;\n//#endregion\nexport { buildTwitchIframeSrc, parseTwitchSource, parseTwitchVideoId };\n\n//# sourceMappingURL=source.js.map","import { EMPTY_TEXT_TRACKS, EMPTY_TIME_RANGES } from \"../../core/constants.js\";\nimport { MediaError } from \"../../core/media-error.js\";\nimport { createTimeRange } from \"../utils/time-ranges.js\";\nimport { MediaPlayedRangesMixin } from \"../media-played-ranges/media-played-ranges.js\";\nimport { PLAYBACK_ENDED, PLAYER_PROXY_NAMESPACE, TWITCH_PLAYER_ORIGIN, isTwitchMessage } from \"./player-api.js\";\nimport { twitchMediaDefaultProps } from \"./props.js\";\nimport { buildTwitchIframeSrc, parseTwitchSource } from \"./source.js\";\nimport { isNumber, isUndefined } from \"@videojs/utils/predicate\";\nimport { deepEqual } from \"@videojs/utils/object\";\nimport { createPublicPromise } from \"@videojs/utils/function\";\n//#region src/dom/twitch/media.ts\nconst TwitchMediaBase = MediaPlayedRangesMixin(EventTarget);\n/**\n* @fires sourcechange - Fired when `source` changes, either directly or by resolving a new `src`. Read `source` for the new value.\n*/\nvar TwitchMedia = class extends TwitchMediaBase {\n\t#target = null;\n\t#messages = null;\n\t#playerReady = false;\n\t#pendingLoad = false;\n\t#rebuilding = false;\n\t#loadComplete = createPublicPromise();\n\t#attachId = 0;\n\t#embedSrc = \"\";\n\t#src = twitchMediaDefaultProps.src;\n\t#autoplay = twitchMediaDefaultProps.autoplay;\n\t#defaultMuted = twitchMediaDefaultProps.defaultMuted;\n\t#loop = twitchMediaDefaultProps.loop;\n\t#controls = twitchMediaDefaultProps.controls;\n\t#playsInline = twitchMediaDefaultProps.playsInline;\n\t#preload = twitchMediaDefaultProps.preload;\n\t#poster = twitchMediaDefaultProps.poster;\n\t#source = twitchMediaDefaultProps.source;\n\t#kind = null;\n\t#playback = null;\n\t#paused = true;\n\t#seeking = false;\n\t#loaded = false;\n\t#currentTime = 0;\n\t#duration = NaN;\n\t#volume = 1;\n\t#muted = false;\n\t#playbackRate = 1;\n\t#progress = 0;\n\t#readyState = READY_STATE_HAVE_NOTHING;\n\t#error = null;\n\t#isFullscreen = false;\n\tstatic PLAYER_SOFTWARE_NAME = \"twitch-video\";\n\t/** The embed's own window, which every command is posted to. Null until an embed is bound and in a document. */\n\tget engine() {\n\t\treturn this.#messages ? this.#target?.contentWindow ?? null : null;\n\t}\n\tget target() {\n\t\treturn this.#target;\n\t}\n\t/** Bind the iframe hosting the embed. The embed follows once a URL resolves; `load()` retries if none does yet. */\n\tattach(target) {\n\t\tif (!target || this.#target === target) return;\n\t\tif (this.#target) this.detach();\n\t\tthis.#target = target;\n\t\tthis.#beginLoad();\n\t\tthis.#createPlayer();\n\t}\n\tdetach() {\n\t\tif (!this.#target) return;\n\t\tthis.#attachId++;\n\t\tthis.#messages?.abort();\n\t\tthis.#messages = null;\n\t\tthis.#playerReady = false;\n\t\tthis.#pendingLoad = false;\n\t\tthis.#rebuilding = false;\n\t\tthis.#embedSrc = \"\";\n\t\tthis.#target = null;\n\t\tthis.#loadComplete.resolve();\n\t\tthis.#resetState();\n\t}\n\tdestroy() {\n\t\tthis.detach();\n\t\tsuper.destroy();\n\t}\n\tget src() {\n\t\treturn this.#src;\n\t}\n\t/** Twitch VOD or channel URL. Setting it re-derives `source`, carrying its embed parameters over. */\n\tset src(value) {\n\t\tconst { engine } = this.#source ?? {};\n\t\tconst next = {\n\t\t\t...engine && { engine },\n\t\t\t...value && { src: value }\n\t\t};\n\t\tthis.source = Object.keys(next).length > 0 ? next : null;\n\t}\n\tget currentSrc() {\n\t\treturn this.#target?.getAttribute(\"src\") ?? \"\";\n\t}\n\tget readyState() {\n\t\treturn this.#readyState;\n\t}\n\t/** Reload the current source, swapping it into the running embed where possible. */\n\tasync load() {\n\t\tif (!this.#messages || !this.#playerReady) {\n\t\t\tthis.#pendingLoad = !!this.#target;\n\t\t\tif (this.#target && !this.#messages) {\n\t\t\t\tconst load = this.#beginLoad();\n\t\t\t\tawait Promise.resolve();\n\t\t\t\tif (load !== this.#loadComplete) return;\n\t\t\t\tthis.#pendingLoad = false;\n\t\t\t\tthis.#createPlayer();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst load = this.#beginLoad();\n\t\tthis.#resetState();\n\t\tthis.dispatchEvent(new Event(\"emptied\"));\n\t\tif (!this.#src) {\n\t\t\tload.resolve();\n\t\t\tthis.#sendCommand(2);\n\t\t\treturn;\n\t\t}\n\t\tthis.dispatchEvent(new Event(\"loadstart\"));\n\t\tconst parsed = parseTwitchSource(this.#src);\n\t\tif (!parsed) {\n\t\t\tthis.#error = new MediaError(`Unrecognized Twitch source: ${this.#src}`, MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);\n\t\t\tthis.dispatchEvent(new Event(\"error\"));\n\t\t\tload.resolve();\n\t\t\treturn;\n\t\t}\n\t\tthis.#kind = parsed.kind;\n\t\tconst nextEmbedSrc = buildTwitchIframeSrc(this.#src, this.#snapshotProps());\n\t\tif (isContentOnlyChange(this.#embedSrc, nextEmbedSrc)) {\n\t\t\tthis.#embedSrc = nextEmbedSrc;\n\t\t\tif (parsed.kind === \"video\") this.#sendCommand(9, `v${parsed.id}`);\n\t\t\telse this.#sendCommand(5, parsed.channel);\n\t\t\treturn;\n\t\t}\n\t\tthis.#embedSrc = nextEmbedSrc;\n\t\tthis.#playerReady = false;\n\t\tthis.#rebuilding = true;\n\t\tif (this.#target) this.#target.src = nextEmbedSrc;\n\t}\n\t#beginLoad() {\n\t\tthis.#loadComplete.resolve();\n\t\tthis.#loadComplete = createPublicPromise();\n\t\treturn this.#loadComplete;\n\t}\n\tget paused() {\n\t\tif (!this.#playback) return this.#paused;\n\t\treturn this.#playback !== \"Playing\" && this.#playback !== \"Buffering\";\n\t}\n\tget ended() {\n\t\tif (this.#kind === \"channel\") return false;\n\t\treturn this.#playback === PLAYBACK_ENDED;\n\t}\n\tget seeking() {\n\t\treturn this.#seeking;\n\t}\n\tasync play() {\n\t\tawait this.#loadComplete;\n\t\tif (!this.#src) return;\n\t\tthis.#paused = false;\n\t\tthis.#sendCommand(3);\n\t}\n\tpause() {\n\t\tthis.#paused = true;\n\t\tthis.#sendCommand(2);\n\t}\n\tget currentTime() {\n\t\treturn this.#currentTime;\n\t}\n\tset currentTime(value) {\n\t\tif (this.#currentTime === value) return;\n\t\tthis.#currentTime = value;\n\t\tthis.#afterLoad(() => this.#sendCommand(4, value));\n\t}\n\tget duration() {\n\t\treturn this.#duration;\n\t}\n\tget volume() {\n\t\treturn this.#volume;\n\t}\n\tset volume(value) {\n\t\tif (this.#volume === value) return;\n\t\tthis.#volume = value;\n\t\tthis.dispatchEvent(new Event(\"volumechange\"));\n\t\tthis.#afterLoad(() => this.#sendCommand(11, value));\n\t}\n\tget muted() {\n\t\treturn this.#muted;\n\t}\n\tset muted(value) {\n\t\tif (this.#muted === value) return;\n\t\tthis.#muted = value;\n\t\tthis.dispatchEvent(new Event(\"volumechange\"));\n\t\tthis.#afterLoad(() => this.#sendCommand(10, value));\n\t}\n\tget playbackRate() {\n\t\treturn this.#playbackRate;\n\t}\n\tset playbackRate(value) {\n\t\tthis.#playbackRate = value;\n\t}\n\tget autoplay() {\n\t\treturn this.#autoplay;\n\t}\n\tset autoplay(value) {\n\t\tthis.#autoplay = value;\n\t}\n\tget defaultMuted() {\n\t\treturn this.#defaultMuted;\n\t}\n\tset defaultMuted(value) {\n\t\tthis.#defaultMuted = value;\n\t}\n\tget loop() {\n\t\treturn this.#loop;\n\t}\n\tset loop(value) {\n\t\tthis.#loop = value;\n\t}\n\tget controls() {\n\t\treturn this.#controls;\n\t}\n\tset controls(value) {\n\t\tthis.#controls = value;\n\t}\n\tget playsInline() {\n\t\treturn this.#playsInline;\n\t}\n\tset playsInline(value) {\n\t\tthis.#playsInline = value;\n\t}\n\tget preload() {\n\t\treturn this.#preload;\n\t}\n\tset preload(value) {\n\t\tthis.#preload = value;\n\t}\n\tget poster() {\n\t\treturn this.#poster;\n\t}\n\tset poster(value) {\n\t\tthis.#poster = value;\n\t}\n\t/** Twitch VOD or channel URL in `src`, plus embed parameters under `engine.twitch`. Replacing it re-derives `src`. */\n\tget source() {\n\t\treturn this.#source;\n\t}\n\tset source(value) {\n\t\tconst source = value ?? null;\n\t\tif (source === this.#source) return;\n\t\tconst src = source?.src ?? \"\";\n\t\tconst srcChanged = this.#src !== src;\n\t\tconst engineChanged = !deepEqual(this.#source?.engine?.twitch ?? null, source?.engine?.twitch ?? null);\n\t\tthis.#source = source;\n\t\tthis.#src = src;\n\t\tif (srcChanged || engineChanged) this.load();\n\t\tthis.dispatchEvent(new Event(\"sourcechange\"));\n\t}\n\tget buffered() {\n\t\treturn this.#progress > 0 ? createTimeRange(this.#currentTime, this.#currentTime + this.#progress) : EMPTY_TIME_RANGES;\n\t}\n\tget seekable() {\n\t\treturn this.#duration > 0 && Number.isFinite(this.#duration) ? createTimeRange(0, this.#duration) : EMPTY_TIME_RANGES;\n\t}\n\tget error() {\n\t\treturn this.#error;\n\t}\n\tget textTracks() {\n\t\treturn EMPTY_TEXT_TRACKS;\n\t}\n\tget isFullscreen() {\n\t\treturn this.#isFullscreen;\n\t}\n\tasync requestFullscreen() {\n\t\tif (!this.#target?.requestFullscreen) return;\n\t\tawait this.#target.requestFullscreen();\n\t\tthis.#isFullscreen = true;\n\t}\n\tasync exitFullscreen() {\n\t\tconst doc = globalThis.document;\n\t\tif (doc?.fullscreenElement && doc.fullscreenElement === this.#target) await doc.exitFullscreen();\n\t\tthis.#isFullscreen = false;\n\t}\n\t#createPlayer() {\n\t\tconst target = this.#target;\n\t\tif (!target || this.#messages) return false;\n\t\tconst existingSrc = target.getAttribute(\"src\");\n\t\tif (!existingSrc) {\n\t\t\tconst initialSrc = buildTwitchIframeSrc(this.#src, this.#snapshotProps());\n\t\t\tif (!initialSrc) {\n\t\t\t\tthis.#loadComplete.resolve();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\ttarget.src = initialSrc;\n\t\t} else {\n\t\t\tconst withParent = withPageParent(existingSrc);\n\t\t\tif (withParent !== existingSrc) target.src = withParent;\n\t\t}\n\t\tthis.#kind = parseTwitchSource(this.#src)?.kind ?? null;\n\t\tthis.#embedSrc = target.getAttribute(\"src\") ?? \"\";\n\t\tconst attachId = this.#attachId;\n\t\tthis.#messages = new AbortController();\n\t\tglobalThis.addEventListener(\"message\", (event) => void this.#onMessage(event, attachId), { signal: this.#messages.signal });\n\t\tthis.dispatchEvent(new Event(\"loadstart\"));\n\t\treturn true;\n\t}\n\t#isStale(attachId) {\n\t\treturn attachId !== this.#attachId;\n\t}\n\t#afterLoad(fn) {\n\t\tthis.#loadComplete.then(() => {\n\t\t\tif (!this.#messages) return;\n\t\t\tfn();\n\t\t}, () => {});\n\t}\n\t#sendCommand(command, params) {\n\t\tconst embedWindow = this.#target?.contentWindow;\n\t\tif (!embedWindow) return;\n\t\tconst message = {\n\t\t\tnamespace: PLAYER_PROXY_NAMESPACE,\n\t\t\teventName: command,\n\t\t\tparams\n\t\t};\n\t\tembedWindow.postMessage(message, TWITCH_PLAYER_ORIGIN);\n\t}\n\t#snapshotProps() {\n\t\treturn {\n\t\t\tautoplay: this.#autoplay,\n\t\t\tdefaultMuted: this.#defaultMuted,\n\t\t\tloop: this.#loop,\n\t\t\tcontrols: this.#controls,\n\t\t\tplaysInline: this.#playsInline,\n\t\t\tpreload: this.#preload || twitchMediaDefaultProps.preload,\n\t\t\tsource: this.#source\n\t\t};\n\t}\n\t#resetState() {\n\t\tthis.#kind = null;\n\t\tthis.#playback = null;\n\t\tthis.#currentTime = 0;\n\t\tthis.#duration = NaN;\n\t\tthis.#muted = false;\n\t\tthis.#paused = !this.#autoplay;\n\t\tthis.#playbackRate = 1;\n\t\tthis.#progress = 0;\n\t\tthis.#readyState = READY_STATE_HAVE_NOTHING;\n\t\tthis.#seeking = false;\n\t\tthis.#loaded = false;\n\t\tthis.#volume = 1;\n\t\tthis.#error = null;\n\t\tthis.#isFullscreen = false;\n\t}\n\tasync #onMessage(event, attachId) {\n\t\tif (this.#isStale(attachId)) return;\n\t\tconst embedWindow = this.#target?.contentWindow;\n\t\tif (!embedWindow || event.source !== embedWindow) return;\n\t\tconst { data } = event;\n\t\tif (!isTwitchMessage(data)) return;\n\t\tif (data.namespace === \"twitch-embed\") {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, STATE_SETTLE_MS));\n\t\t\tif (this.#isStale(attachId)) return;\n\t\t\tthis.#onEmbedEvent(data.eventName);\n\t\t\treturn;\n\t\t}\n\t\tif (data.eventName === \"UPDATE_STATE\") this.#onUpdateState(data.params ?? {});\n\t}\n\t#onEmbedEvent(eventName) {\n\t\tif (eventName !== \"ready\" && !this.#src) return;\n\t\tswitch (eventName) {\n\t\t\tcase \"ready\":\n\t\t\t\tthis.#playerReady = true;\n\t\t\t\tthis.#rebuilding = false;\n\t\t\t\tif (this.#pendingLoad) {\n\t\t\t\t\tthis.#pendingLoad = false;\n\t\t\t\t\tthis.load();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.#onLoaded();\n\t\t\t\treturn;\n\t\t\tcase \"seek\":\n\t\t\t\tthis.#seeking = true;\n\t\t\t\tthis.dispatchEvent(new Event(\"seeking\"));\n\t\t\t\treturn;\n\t\t\tcase \"playing\":\n\t\t\t\tif (this.#seeking) {\n\t\t\t\t\tthis.#seeking = false;\n\t\t\t\t\tthis.dispatchEvent(new Event(\"seeked\"));\n\t\t\t\t}\n\t\t\t\tthis.#readyState = READY_STATE_HAVE_FUTURE_DATA;\n\t\t\t\tthis.dispatchEvent(new Event(\"playing\"));\n\t\t\t\treturn;\n\t\t\tcase \"ended\":\n\t\t\t\tthis.dispatchEvent(new Event(\"ended\"));\n\t\t\t\tif (this.#loop) {\n\t\t\t\t\tthis.currentTime = 0;\n\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tdefault: this.dispatchEvent(new Event(eventName));\n\t\t}\n\t}\n\t#onUpdateState(state) {\n\t\tif (this.#rebuilding) return;\n\t\tif (!this.#src) return;\n\t\tif (this.#playerReady && !this.#loaded) this.#onLoaded();\n\t\tif (state.playback && state.playback !== this.#playback) {\n\t\t\tif (state.playback === \"Buffering\") this.dispatchEvent(new Event(\"waiting\"));\n\t\t\tthis.#playback = state.playback;\n\t\t}\n\t\tif (this.#kind !== \"channel\" && isNumber(state.duration) && state.duration !== this.#duration) {\n\t\t\tthis.#duration = state.duration;\n\t\t\tthis.dispatchEvent(new Event(\"durationchange\"));\n\t\t}\n\t\tif (isNumber(state.currentTime) && state.currentTime !== this.#currentTime) {\n\t\t\tthis.#currentTime = state.currentTime;\n\t\t\tthis.dispatchEvent(new Event(\"timeupdate\"));\n\t\t}\n\t\tconst volumeChanged = isNumber(state.volume) && state.volume !== this.#volume;\n\t\tconst mutedChanged = !isUndefined(state.muted) && state.muted !== this.#muted;\n\t\tif (volumeChanged || mutedChanged) {\n\t\t\tif (isNumber(state.volume)) this.#volume = state.volume;\n\t\t\tif (!isUndefined(state.muted)) this.#muted = state.muted;\n\t\t\tthis.dispatchEvent(new Event(\"volumechange\"));\n\t\t}\n\t\tconst bufferSize = state.stats?.videoStats?.bufferSize;\n\t\tif (isNumber(bufferSize) && bufferSize !== this.#progress) {\n\t\t\tthis.#progress = bufferSize;\n\t\t\tif (this.#readyState >= READY_STATE_HAVE_FUTURE_DATA && bufferSize > 0) this.#readyState = READY_STATE_HAVE_ENOUGH_DATA;\n\t\t\tthis.dispatchEvent(new Event(\"progress\"));\n\t\t}\n\t}\n\t#onLoaded() {\n\t\tif (this.#loaded) return;\n\t\tthis.#loaded = true;\n\t\tthis.#readyState = READY_STATE_HAVE_METADATA;\n\t\tthis.dispatchEvent(new Event(\"loadedmetadata\"));\n\t\tif (this.#kind === \"channel\") {\n\t\t\tthis.#duration = Number.POSITIVE_INFINITY;\n\t\t\tthis.dispatchEvent(new Event(\"durationchange\"));\n\t\t}\n\t\tthis.dispatchEvent(new Event(\"loadcomplete\"));\n\t\tthis.#loadComplete.resolve();\n\t}\n};\nfunction isContentOnlyChange(current, next) {\n\tconst currentBase = withoutContent(current);\n\tconst nextBase = withoutContent(next);\n\treturn currentBase !== null && currentBase === nextBase;\n}\nfunction withPageParent(embedSrc) {\n\tconst hostname = globalThis.location?.hostname;\n\tif (!hostname) return embedSrc;\n\tlet url;\n\ttry {\n\t\turl = new URL(embedSrc);\n\t} catch {\n\t\treturn embedSrc;\n\t}\n\tif (url.origin !== \"https://player.twitch.tv\") return embedSrc;\n\tif (url.searchParams.getAll(\"parent\").includes(hostname)) return embedSrc;\n\turl.searchParams.append(\"parent\", hostname);\n\treturn url.toString();\n}\nfunction withoutContent(embedSrc) {\n\tif (!embedSrc) return null;\n\ttry {\n\t\tconst url = new URL(embedSrc);\n\t\turl.searchParams.delete(\"video\");\n\t\turl.searchParams.delete(\"channel\");\n\t\treturn url.toString();\n\t} catch {\n\t\treturn null;\n\t}\n}\nconst STATE_SETTLE_MS = 10;\nconst READY_STATE_HAVE_NOTHING = 0;\nconst READY_STATE_HAVE_METADATA = 1;\nconst READY_STATE_HAVE_FUTURE_DATA = 3;\nconst READY_STATE_HAVE_ENOUGH_DATA = 4;\n//#endregion\nexport { TwitchMedia };\n\n//# sourceMappingURL=media.js.map","import { CustomMediaElement } from '@videojs/media/dom/custom-media-element';\nimport { buildTwitchIframeSrc, TwitchMedia } from '@videojs/media/dom/twitch';\nimport { escapeHtml } from '@videojs/utils/string';\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nclass TwitchCustomMediaElement extends CustomMediaElement('iframe', TwitchMedia) {\n static override getTemplateHTML = (attrs: Record<string, string>): string => {\n const initialSrc = buildTwitchIframeSrc(attrs.src ?? '', templateAttrsToEmbedProps(attrs));\n const srcAttr = initialSrc ? ` src=\"${escapeHtml(initialSrc)}\"` : '';\n return /*html*/ `\n <style>\n :host {\n display: inline-block;\n min-width: 300px;\n min-height: 150px;\n position: relative;\n }\n iframe {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n :host(:not([controls])) {\n pointer-events: none;\n }\n </style>\n <iframe\n part=\"iframe\"\n ${srcAttr}\n allow=\"accelerometer; fullscreen; autoplay; encrypted-media; picture-in-picture;\"\n sandbox=\"allow-modals allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox\"\n scrolling=\"no\"\n frameborder=\"0\"\n width=\"100%\"\n height=\"100%\"\n referrerpolicy=\"${escapeHtml(attrs.referrerpolicy ?? '')}\"\n ></iframe>\n `;\n };\n}\n\nfunction templateAttrsToEmbedProps(attrs: Record<string, string>) {\n return {\n autoplay: attrs.autoplay !== undefined,\n defaultMuted: attrs.muted !== undefined,\n loop: attrs.loop !== undefined,\n controls: attrs.controls !== undefined,\n playsInline: attrs.playsinline !== undefined,\n preload: (attrs.preload as 'none' | 'metadata' | 'auto' | undefined) ?? 'metadata',\n };\n}\n\nexport class TwitchVideo extends MediaAttachMixin(TwitchCustomMediaElement) {}\n","import { TwitchVideo } from '../../media/twitch-video';\nimport { safeDefine } from '../safe-define';\n\nexport class TwitchVideoElement extends TwitchVideo {\n static readonly tagName = 'twitch-video';\n}\n\nsafeDefine(TwitchVideoElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TwitchVideoElement.tagName]: TwitchVideoElement;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{i as e,l as t,o as n,s as r,u as i}from"../predicate-LbFu-fPH.js";import{t as a}from"../deep-equal-CcwdHo6t.js";import{t as o}from"../custom-media-element-8pSkwn42.js";import{a as s}from"../attributes-CwICYz98.js";import{i as c}from"../context-C2rsoDxk.js";import{n as l,r as u,t as d}from"../media-played-ranges-CM2zeOGr.js";import{n as f,r as p}from"../constants-B4LD5zrj.js";import{t as m}from"../media-error-CtsbOTR1.js";import{t as h}from"../media-attach-mixin-Igi3-1UG.js";const g={src:``,autoplay:!1,defaultMuted:!1,muted:!1,loop:!1,controls:!1,playsInline:!0,preload:`metadata`,poster:``,source:null},_=`https://player.twitch.tv`;function v(e){if(!r(e))return!1;let{namespace:n,eventName:i}=e;return t(i)&&(n===`twitch-embed`||n===`twitch-embed-player-proxy`)}function y(e){if(!e)return null;let t=S.exec(e)?.[1];if(t)return{kind:`video`,id:t,channel:null};let n=C.exec(e)?.[1];return n?{kind:`channel`,id:null,channel:n}:null}function b(t,n={}){let r=y(t);if(!r)return``;let{parent:i,referrerPolicy:a,...o}=n.source?.engine?.twitch??{},s={...r.kind===`video`?{video:`v${r.id}`}:{channel:r.channel},controls:n.controls===!0&&null,autoplay:n.autoplay===!0&&null,muted:n.defaultMuted??g.defaultMuted,preload:n.preload??g.preload,...o},c=new URLSearchParams;for(let t in s){let n=s[t];e(n)||n===``||c.set(t,String(n))}for(let e of x(i))c.append(`parent`,e);return`${_}/?${c.toString()}`}function x(e){let n=[...t(e)?[e]:e??[],globalThis.location?.hostname];return[...new Set(n.filter(e=>t(e)&&e!==``))]}const S=/(?:^|\/\/)(?:www\.|go\.)?twitch\.tv\/(?:videos?\/|\?video=)(\d+)\/?(?:$|\?)/,C=/(?:^|\/\/)(?:www\.|go\.)?twitch\.tv\/([a-zA-Z0-9_]+)\/?(?:$|\?)/,w=d(EventTarget);var T=class extends w{#e=null;#t=null;#n=!1;#r=!1;#i=!1;#a=u();#o=0;#s=``;#c=g.src;#l=g.autoplay;#u=g.defaultMuted;#d=g.loop;#f=g.controls;#p=g.playsInline;#m=g.preload;#h=g.poster;#g=g.source;#_=null;#v=null;#y=!0;#b=!1;#x=!1;#S=0;#C=NaN;#w=1;#T=!1;#E=1;#D=0;#O=A;#k=null;#A=!1;static PLAYER_SOFTWARE_NAME=`twitch-video`;get engine(){return this.#t?this.#e?.contentWindow??null:null}get target(){return this.#e}attach(e){!e||this.#e===e||(this.#e&&this.detach(),this.#e=e,this.#j(),this.#M())}detach(){this.#e&&(this.#o++,this.#t?.abort(),this.#t=null,this.#n=!1,this.#r=!1,this.#i=!1,this.#s=``,this.#e=null,this.#a.resolve(),this.#L())}destroy(){this.detach(),super.destroy()}get src(){return this.#c}set src(e){let{engine:t}=this.#g??{},n={...t&&{engine:t},...e&&{src:e}};this.source=Object.keys(n).length>0?n:null}get currentSrc(){return this.#e?.getAttribute(`src`)??``}get readyState(){return this.#O}async load(){if(!this.#t||!this.#n){if(this.#r=!!this.#e,this.#e&&!this.#t){let e=this.#j();if(await Promise.resolve(),e!==this.#a)return;this.#r=!1,this.#M()}return}let e=this.#j();if(this.#L(),this.dispatchEvent(new Event(`emptied`)),!this.#c){e.resolve(),this.#F(2);return}this.dispatchEvent(new Event(`loadstart`));let t=y(this.#c);if(!t){this.#k=new m(`Unrecognized Twitch source: ${this.#c}`,m.MEDIA_ERR_SRC_NOT_SUPPORTED),this.dispatchEvent(new Event(`error`)),e.resolve();return}this.#_=t.kind;let n=b(this.#c,this.#I());if(E(this.#s,n)){this.#s=n,t.kind===`video`?this.#F(9,`v${t.id}`):this.#F(5,t.channel);return}this.#s=n,this.#n=!1,this.#i=!0,this.#e&&(this.#e.src=n)}#j(){return this.#a.resolve(),this.#a=u(),this.#a}get paused(){return this.#v?this.#v!==`Playing`&&this.#v!==`Buffering`:this.#y}get ended(){return this.#_!==`channel`&&this.#v===`Ended`}get seeking(){return this.#b}async play(){await this.#a,this.#c&&(this.#y=!1,this.#F(3))}pause(){this.#y=!0,this.#F(2)}get currentTime(){return this.#S}set currentTime(e){this.#S!==e&&(this.#S=e,this.#P(()=>this.#F(4,e)))}get duration(){return this.#C}get volume(){return this.#w}set volume(e){this.#w!==e&&(this.#w=e,this.dispatchEvent(new Event(`volumechange`)),this.#P(()=>this.#F(11,e)))}get muted(){return this.#T}set muted(e){this.#T!==e&&(this.#T=e,this.dispatchEvent(new Event(`volumechange`)),this.#P(()=>this.#F(10,e)))}get playbackRate(){return this.#E}set playbackRate(e){this.#E=e}get autoplay(){return this.#l}set autoplay(e){this.#l=e}get defaultMuted(){return this.#u}set defaultMuted(e){this.#u=e}get loop(){return this.#d}set loop(e){this.#d=e}get controls(){return this.#f}set controls(e){this.#f=e}get playsInline(){return this.#p}set playsInline(e){this.#p=e}get preload(){return this.#m}set preload(e){this.#m=e}get poster(){return this.#h}set poster(e){this.#h=e}get source(){return this.#g}set source(e){let t=e??null;if(t===this.#g)return;let n=t?.src??``,r=this.#c!==n,i=!a(this.#g?.engine?.twitch??null,t?.engine?.twitch??null);this.#g=t,this.#c=n,(r||i)&&this.load(),this.dispatchEvent(new Event(`sourcechange`))}get buffered(){return this.#D>0?l(this.#S,this.#S+this.#D):p}get seekable(){return this.#C>0&&Number.isFinite(this.#C)?l(0,this.#C):p}get error(){return this.#k}get textTracks(){return f}get isFullscreen(){return this.#A}async requestFullscreen(){this.#e?.requestFullscreen&&(await this.#e.requestFullscreen(),this.#A=!0)}async exitFullscreen(){let e=globalThis.document;e?.fullscreenElement&&e.fullscreenElement===this.#e&&await e.exitFullscreen(),this.#A=!1}#M(){let e=this.#e;if(!e||this.#t)return!1;let t=e.getAttribute(`src`);if(t){let n=D(t);n!==t&&(e.src=n)}else{let t=b(this.#c,this.#I());if(!t)return this.#a.resolve(),!1;e.src=t}this.#_=y(this.#c)?.kind??null,this.#s=e.getAttribute(`src`)??``;let n=this.#o;return this.#t=new AbortController,globalThis.addEventListener(`message`,e=>void this.#R(e,n),{signal:this.#t.signal}),this.dispatchEvent(new Event(`loadstart`)),!0}#N(e){return e!==this.#o}#P(e){this.#a.then(()=>{this.#t&&e()},()=>{})}#F(e,t){let n=this.#e?.contentWindow;if(!n)return;let r={namespace:`twitch-embed-player-proxy`,eventName:e,params:t};n.postMessage(r,_)}#I(){return{autoplay:this.#l,defaultMuted:this.#u,loop:this.#d,controls:this.#f,playsInline:this.#p,preload:this.#m||g.preload,source:this.#g}}#L(){this.#_=null,this.#v=null,this.#S=0,this.#C=NaN,this.#T=!1,this.#y=!this.#l,this.#E=1,this.#D=0,this.#O=A,this.#b=!1,this.#x=!1,this.#w=1,this.#k=null,this.#A=!1}async#R(e,t){if(this.#N(t))return;let n=this.#e?.contentWindow;if(!n||e.source!==n)return;let{data:r}=e;if(v(r)){if(r.namespace===`twitch-embed`){if(await new Promise(e=>setTimeout(e,k)),this.#N(t))return;this.#z(r.eventName);return}r.eventName===`UPDATE_STATE`&&this.#B(r.params??{})}}#z(e){if(!(e!==`ready`&&!this.#c))switch(e){case`ready`:if(this.#n=!0,this.#i=!1,this.#r){this.#r=!1,this.load();return}this.#V();return;case`seek`:this.#b=!0,this.dispatchEvent(new Event(`seeking`));return;case`playing`:this.#b&&(this.#b=!1,this.dispatchEvent(new Event(`seeked`))),this.#O=M,this.dispatchEvent(new Event(`playing`));return;case`ended`:this.dispatchEvent(new Event(`ended`)),this.#d&&(this.currentTime=0,this.play());return;default:this.dispatchEvent(new Event(e))}}#B(e){if(this.#i||!this.#c)return;this.#n&&!this.#x&&this.#V(),e.playback&&e.playback!==this.#v&&(e.playback===`Buffering`&&this.dispatchEvent(new Event(`waiting`)),this.#v=e.playback),this.#_!==`channel`&&n(e.duration)&&e.duration!==this.#C&&(this.#C=e.duration,this.dispatchEvent(new Event(`durationchange`))),n(e.currentTime)&&e.currentTime!==this.#S&&(this.#S=e.currentTime,this.dispatchEvent(new Event(`timeupdate`)));let t=n(e.volume)&&e.volume!==this.#w,r=!i(e.muted)&&e.muted!==this.#T;(t||r)&&(n(e.volume)&&(this.#w=e.volume),i(e.muted)||(this.#T=e.muted),this.dispatchEvent(new Event(`volumechange`)));let a=e.stats?.videoStats?.bufferSize;n(a)&&a!==this.#D&&(this.#D=a,this.#O>=M&&a>0&&(this.#O=N),this.dispatchEvent(new Event(`progress`)))}#V(){this.#x||(this.#x=!0,this.#O=j,this.dispatchEvent(new Event(`loadedmetadata`)),this.#_===`channel`&&(this.#C=1/0,this.dispatchEvent(new Event(`durationchange`))),this.dispatchEvent(new Event(`loadcomplete`)),this.#a.resolve())}};function E(e,t){let n=O(e),r=O(t);return n!==null&&n===r}function D(e){let t=globalThis.location?.hostname;if(!t)return e;let n;try{n=new URL(e)}catch{return e}return n.origin!==`https://player.twitch.tv`||n.searchParams.getAll(`parent`).includes(t)?e:(n.searchParams.append(`parent`,t),n.toString())}function O(e){if(!e)return null;try{let t=new URL(e);return t.searchParams.delete(`video`),t.searchParams.delete(`channel`),t.toString()}catch{return null}}const k=10,A=0,j=1,M=3,N=4;var P=class extends o(`iframe`,T){static{this.getTemplateHTML=e=>{let t=b(e.src??``,F(e));return`<style> :host { display: inline-block; min-width: 300px; min-height: 150px; position: relative; } iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; } :host(:not([controls])) { pointer-events: none; } </style><iframe part="iframe" ${t?` src="${s(t)}"`:``} allow="accelerometer; fullscreen; autoplay; encrypted-media; picture-in-picture;" sandbox="allow-modals allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox" scrolling="no" frameborder="0" width="100%" height="100%" referrerpolicy="${s(e.referrerpolicy??``)}" ></iframe>`}}};function F(e){return{autoplay:e.autoplay!==void 0,defaultMuted:e.muted!==void 0,loop:e.loop!==void 0,controls:e.controls!==void 0,playsInline:e.playsinline!==void 0,preload:e.preload??`metadata`}}var I=class extends h(P){},L=class extends I{static{this.tagName=`twitch-video`}};c(L);export{L as TwitchVideoElement};
2
+ //# sourceMappingURL=twitch-video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twitch-video.js","names":["#messages","#target","#beginLoad","#createPlayer","#attachId","#playerReady","#pendingLoad","#rebuilding","#embedSrc","#loadComplete","#resetState","#src","#source","#readyState","#sendCommand","#error","#kind","#snapshotProps","#playback","#paused","#seeking","#currentTime","#afterLoad","#duration","#volume","#muted","#playbackRate","#autoplay","#defaultMuted","#loop","#controls","#playsInline","#preload","#poster","#progress","#isFullscreen","#onMessage","#loaded","#isStale","#onEmbedEvent","#onUpdateState","#onLoaded"],"sources":["../../../media/dist/default/dom/twitch/props.js","../../../media/dist/default/dom/twitch/player-api.js","../../../media/dist/default/dom/twitch/source.js","../../../media/dist/default/dom/twitch/media.js","../../src/media/twitch-video/media.ts","../../src/define/media/twitch-video.ts"],"sourcesContent":["//#region src/dom/twitch/props.ts\nconst twitchMediaDefaultProps = {\n\tsrc: \"\",\n\tautoplay: false,\n\tdefaultMuted: false,\n\tmuted: false,\n\tloop: false,\n\tcontrols: false,\n\tplaysInline: true,\n\tpreload: \"metadata\",\n\tposter: \"\",\n\tsource: null\n};\n//#endregion\nexport { twitchMediaDefaultProps };\n\n//# sourceMappingURL=props.js.map","import { isObject, isString } from \"@videojs/utils/predicate\";\n//#region src/dom/twitch/player-api.ts\n/** Embed origin: where the embed is served from and where commands are posted. */\nconst TWITCH_PLAYER_ORIGIN = \"https://player.twitch.tv\";\n/** Namespace on the commands the host posts, and on the state snapshots that come back. */\nconst PLAYER_PROXY_NAMESPACE = \"twitch-embed-player-proxy\";\n/** Namespace on the lifecycle events the embed emits. */\nconst EMBED_NAMESPACE = \"twitch-embed\";\nconst PLAYBACK_BUFFERING = \"Buffering\";\nconst PLAYBACK_PLAYING = \"Playing\";\nconst PLAYBACK_ENDED = \"Ended\";\n/** Narrow a `message` payload to something the embed sent; any page can post here, so the namespace is the filter. */\nfunction isTwitchMessage(data) {\n\tif (!isObject(data)) return false;\n\tconst { namespace, eventName } = data;\n\treturn isString(eventName) && (namespace === \"twitch-embed\" || namespace === \"twitch-embed-player-proxy\");\n}\n//#endregion\nexport { EMBED_NAMESPACE, PLAYBACK_BUFFERING, PLAYBACK_ENDED, PLAYBACK_PLAYING, PLAYER_PROXY_NAMESPACE, TWITCH_PLAYER_ORIGIN, isTwitchMessage };\n\n//# sourceMappingURL=player-api.js.map","import { TWITCH_PLAYER_ORIGIN } from \"./player-api.js\";\nimport { twitchMediaDefaultProps } from \"./props.js\";\nimport { isNil, isString } from \"@videojs/utils/predicate\";\n//#region src/dom/twitch/source.ts\n/** Extract a Twitch VOD id from any recognized video URL. */\nfunction parseTwitchVideoId(src) {\n\treturn parseTwitchSource(src)?.id ?? null;\n}\n/**\n* Parse a Twitch source string. Recognizes VOD URLs (`twitch.tv/videos/<id>`\n* and `twitch.tv/?video=<id>`) and channel URLs (`twitch.tv/<channel>`), with\n* or without the `www.` and `go.` hosts, and with or without a trailing slash.\n*/\nfunction parseTwitchSource(src) {\n\tif (!src) return null;\n\tconst videoId = MATCH_VIDEO.exec(src)?.[1];\n\tif (videoId) return {\n\t\tkind: \"video\",\n\t\tid: videoId,\n\t\tchannel: null\n\t};\n\tconst channel = MATCH_CHANNEL.exec(src)?.[1];\n\tif (channel) return {\n\t\tkind: \"channel\",\n\t\tid: null,\n\t\tchannel\n\t};\n\treturn null;\n}\n/** Build the iframe `src` URL for an initial Twitch embed from the given props. */\nfunction buildTwitchIframeSrc(src, props = {}) {\n\tconst parsed = parseTwitchSource(src);\n\tif (!parsed) return \"\";\n\tconst { parent, referrerPolicy: _referrerPolicy, ...twitch } = props.source?.engine?.twitch ?? {};\n\tconst params = {\n\t\t...parsed.kind === \"video\" ? { video: `v${parsed.id}` } : { channel: parsed.channel },\n\t\tcontrols: props.controls === true ? null : false,\n\t\tautoplay: props.autoplay === true ? null : false,\n\t\tmuted: props.defaultMuted ?? twitchMediaDefaultProps.defaultMuted,\n\t\tpreload: props.preload ?? twitchMediaDefaultProps.preload,\n\t\t...twitch\n\t};\n\tconst query = new URLSearchParams();\n\tfor (const key in params) {\n\t\tconst value = params[key];\n\t\tif (isNil(value) || value === \"\") continue;\n\t\tquery.set(key, String(value));\n\t}\n\tfor (const host of resolveParentHosts(parent)) query.append(\"parent\", host);\n\treturn `${TWITCH_PLAYER_ORIGIN}/?${query.toString()}`;\n}\n/** The configured parent hostnames plus the page's own, deduplicated. */\nfunction resolveParentHosts(parent) {\n\tconst hosts = [...isString(parent) ? [parent] : parent ?? [], globalThis.location?.hostname];\n\treturn [...new Set(hosts.filter((host) => isString(host) && host !== \"\"))];\n}\nconst MATCH_VIDEO = /(?:^|\\/\\/)(?:www\\.|go\\.)?twitch\\.tv\\/(?:videos?\\/|\\?video=)(\\d+)\\/?(?:$|\\?)/;\nconst MATCH_CHANNEL = /(?:^|\\/\\/)(?:www\\.|go\\.)?twitch\\.tv\\/([a-zA-Z0-9_]+)\\/?(?:$|\\?)/;\n//#endregion\nexport { buildTwitchIframeSrc, parseTwitchSource, parseTwitchVideoId };\n\n//# sourceMappingURL=source.js.map","import { EMPTY_TEXT_TRACKS, EMPTY_TIME_RANGES } from \"../../core/constants.js\";\nimport { MediaError } from \"../../core/media-error.js\";\nimport { createTimeRange } from \"../utils/time-ranges.js\";\nimport { MediaPlayedRangesMixin } from \"../media-played-ranges/media-played-ranges.js\";\nimport { PLAYBACK_ENDED, PLAYER_PROXY_NAMESPACE, TWITCH_PLAYER_ORIGIN, isTwitchMessage } from \"./player-api.js\";\nimport { twitchMediaDefaultProps } from \"./props.js\";\nimport { buildTwitchIframeSrc, parseTwitchSource } from \"./source.js\";\nimport { isNumber, isUndefined } from \"@videojs/utils/predicate\";\nimport { deepEqual } from \"@videojs/utils/object\";\nimport { createPublicPromise } from \"@videojs/utils/function\";\n//#region src/dom/twitch/media.ts\nconst TwitchMediaBase = MediaPlayedRangesMixin(EventTarget);\n/**\n* @fires sourcechange - Fired when `source` changes, either directly or by resolving a new `src`. Read `source` for the new value.\n*/\nvar TwitchMedia = class extends TwitchMediaBase {\n\t#target = null;\n\t#messages = null;\n\t#playerReady = false;\n\t#pendingLoad = false;\n\t#rebuilding = false;\n\t#loadComplete = createPublicPromise();\n\t#attachId = 0;\n\t#embedSrc = \"\";\n\t#src = twitchMediaDefaultProps.src;\n\t#autoplay = twitchMediaDefaultProps.autoplay;\n\t#defaultMuted = twitchMediaDefaultProps.defaultMuted;\n\t#loop = twitchMediaDefaultProps.loop;\n\t#controls = twitchMediaDefaultProps.controls;\n\t#playsInline = twitchMediaDefaultProps.playsInline;\n\t#preload = twitchMediaDefaultProps.preload;\n\t#poster = twitchMediaDefaultProps.poster;\n\t#source = twitchMediaDefaultProps.source;\n\t#kind = null;\n\t#playback = null;\n\t#paused = true;\n\t#seeking = false;\n\t#loaded = false;\n\t#currentTime = 0;\n\t#duration = NaN;\n\t#volume = 1;\n\t#muted = false;\n\t#playbackRate = 1;\n\t#progress = 0;\n\t#readyState = READY_STATE_HAVE_NOTHING;\n\t#error = null;\n\t#isFullscreen = false;\n\tstatic PLAYER_SOFTWARE_NAME = \"twitch-video\";\n\t/** The embed's own window, which every command is posted to. Null until an embed is bound and in a document. */\n\tget engine() {\n\t\treturn this.#messages ? this.#target?.contentWindow ?? null : null;\n\t}\n\tget target() {\n\t\treturn this.#target;\n\t}\n\t/** Bind the iframe hosting the embed. The embed follows once a URL resolves; `load()` retries if none does yet. */\n\tattach(target) {\n\t\tif (!target || this.#target === target) return;\n\t\tif (this.#target) this.detach();\n\t\tthis.#target = target;\n\t\tthis.#beginLoad();\n\t\tthis.#createPlayer();\n\t}\n\tdetach() {\n\t\tif (!this.#target) return;\n\t\tthis.#attachId++;\n\t\tthis.#messages?.abort();\n\t\tthis.#messages = null;\n\t\tthis.#playerReady = false;\n\t\tthis.#pendingLoad = false;\n\t\tthis.#rebuilding = false;\n\t\tthis.#embedSrc = \"\";\n\t\tthis.#target = null;\n\t\tthis.#loadComplete.resolve();\n\t\tthis.#resetState();\n\t}\n\tdestroy() {\n\t\tthis.detach();\n\t\tsuper.destroy();\n\t}\n\tget src() {\n\t\treturn this.#src;\n\t}\n\t/** Twitch VOD or channel URL. Setting it re-derives `source`, carrying its embed parameters over. */\n\tset src(value) {\n\t\tconst { engine } = this.#source ?? {};\n\t\tconst next = {\n\t\t\t...engine && { engine },\n\t\t\t...value && { src: value }\n\t\t};\n\t\tthis.source = Object.keys(next).length > 0 ? next : null;\n\t}\n\tget currentSrc() {\n\t\treturn this.#target?.getAttribute(\"src\") ?? \"\";\n\t}\n\tget readyState() {\n\t\treturn this.#readyState;\n\t}\n\t/** Reload the current source, swapping it into the running embed where possible. */\n\tasync load() {\n\t\tif (!this.#messages || !this.#playerReady) {\n\t\t\tthis.#pendingLoad = !!this.#target;\n\t\t\tif (this.#target && !this.#messages) {\n\t\t\t\tconst load = this.#beginLoad();\n\t\t\t\tawait Promise.resolve();\n\t\t\t\tif (load !== this.#loadComplete) return;\n\t\t\t\tthis.#pendingLoad = false;\n\t\t\t\tthis.#createPlayer();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst load = this.#beginLoad();\n\t\tthis.#resetState();\n\t\tthis.dispatchEvent(new Event(\"emptied\"));\n\t\tif (!this.#src) {\n\t\t\tload.resolve();\n\t\t\tthis.#sendCommand(2);\n\t\t\treturn;\n\t\t}\n\t\tthis.dispatchEvent(new Event(\"loadstart\"));\n\t\tconst parsed = parseTwitchSource(this.#src);\n\t\tif (!parsed) {\n\t\t\tthis.#error = new MediaError(`Unrecognized Twitch source: ${this.#src}`, MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);\n\t\t\tthis.dispatchEvent(new Event(\"error\"));\n\t\t\tload.resolve();\n\t\t\treturn;\n\t\t}\n\t\tthis.#kind = parsed.kind;\n\t\tconst nextEmbedSrc = buildTwitchIframeSrc(this.#src, this.#snapshotProps());\n\t\tif (isContentOnlyChange(this.#embedSrc, nextEmbedSrc)) {\n\t\t\tthis.#embedSrc = nextEmbedSrc;\n\t\t\tif (parsed.kind === \"video\") this.#sendCommand(9, `v${parsed.id}`);\n\t\t\telse this.#sendCommand(5, parsed.channel);\n\t\t\treturn;\n\t\t}\n\t\tthis.#embedSrc = nextEmbedSrc;\n\t\tthis.#playerReady = false;\n\t\tthis.#rebuilding = true;\n\t\tif (this.#target) this.#target.src = nextEmbedSrc;\n\t}\n\t#beginLoad() {\n\t\tthis.#loadComplete.resolve();\n\t\tthis.#loadComplete = createPublicPromise();\n\t\treturn this.#loadComplete;\n\t}\n\tget paused() {\n\t\tif (!this.#playback) return this.#paused;\n\t\treturn this.#playback !== \"Playing\" && this.#playback !== \"Buffering\";\n\t}\n\tget ended() {\n\t\tif (this.#kind === \"channel\") return false;\n\t\treturn this.#playback === PLAYBACK_ENDED;\n\t}\n\tget seeking() {\n\t\treturn this.#seeking;\n\t}\n\tasync play() {\n\t\tawait this.#loadComplete;\n\t\tif (!this.#src) return;\n\t\tthis.#paused = false;\n\t\tthis.#sendCommand(3);\n\t}\n\tpause() {\n\t\tthis.#paused = true;\n\t\tthis.#sendCommand(2);\n\t}\n\tget currentTime() {\n\t\treturn this.#currentTime;\n\t}\n\tset currentTime(value) {\n\t\tif (this.#currentTime === value) return;\n\t\tthis.#currentTime = value;\n\t\tthis.#afterLoad(() => this.#sendCommand(4, value));\n\t}\n\tget duration() {\n\t\treturn this.#duration;\n\t}\n\tget volume() {\n\t\treturn this.#volume;\n\t}\n\tset volume(value) {\n\t\tif (this.#volume === value) return;\n\t\tthis.#volume = value;\n\t\tthis.dispatchEvent(new Event(\"volumechange\"));\n\t\tthis.#afterLoad(() => this.#sendCommand(11, value));\n\t}\n\tget muted() {\n\t\treturn this.#muted;\n\t}\n\tset muted(value) {\n\t\tif (this.#muted === value) return;\n\t\tthis.#muted = value;\n\t\tthis.dispatchEvent(new Event(\"volumechange\"));\n\t\tthis.#afterLoad(() => this.#sendCommand(10, value));\n\t}\n\tget playbackRate() {\n\t\treturn this.#playbackRate;\n\t}\n\tset playbackRate(value) {\n\t\tthis.#playbackRate = value;\n\t}\n\tget autoplay() {\n\t\treturn this.#autoplay;\n\t}\n\tset autoplay(value) {\n\t\tthis.#autoplay = value;\n\t}\n\tget defaultMuted() {\n\t\treturn this.#defaultMuted;\n\t}\n\tset defaultMuted(value) {\n\t\tthis.#defaultMuted = value;\n\t}\n\tget loop() {\n\t\treturn this.#loop;\n\t}\n\tset loop(value) {\n\t\tthis.#loop = value;\n\t}\n\tget controls() {\n\t\treturn this.#controls;\n\t}\n\tset controls(value) {\n\t\tthis.#controls = value;\n\t}\n\tget playsInline() {\n\t\treturn this.#playsInline;\n\t}\n\tset playsInline(value) {\n\t\tthis.#playsInline = value;\n\t}\n\tget preload() {\n\t\treturn this.#preload;\n\t}\n\tset preload(value) {\n\t\tthis.#preload = value;\n\t}\n\tget poster() {\n\t\treturn this.#poster;\n\t}\n\tset poster(value) {\n\t\tthis.#poster = value;\n\t}\n\t/** Twitch VOD or channel URL in `src`, plus embed parameters under `engine.twitch`. Replacing it re-derives `src`. */\n\tget source() {\n\t\treturn this.#source;\n\t}\n\tset source(value) {\n\t\tconst source = value ?? null;\n\t\tif (source === this.#source) return;\n\t\tconst src = source?.src ?? \"\";\n\t\tconst srcChanged = this.#src !== src;\n\t\tconst engineChanged = !deepEqual(this.#source?.engine?.twitch ?? null, source?.engine?.twitch ?? null);\n\t\tthis.#source = source;\n\t\tthis.#src = src;\n\t\tif (srcChanged || engineChanged) this.load();\n\t\tthis.dispatchEvent(new Event(\"sourcechange\"));\n\t}\n\tget buffered() {\n\t\treturn this.#progress > 0 ? createTimeRange(this.#currentTime, this.#currentTime + this.#progress) : EMPTY_TIME_RANGES;\n\t}\n\tget seekable() {\n\t\treturn this.#duration > 0 && Number.isFinite(this.#duration) ? createTimeRange(0, this.#duration) : EMPTY_TIME_RANGES;\n\t}\n\tget error() {\n\t\treturn this.#error;\n\t}\n\tget textTracks() {\n\t\treturn EMPTY_TEXT_TRACKS;\n\t}\n\tget isFullscreen() {\n\t\treturn this.#isFullscreen;\n\t}\n\tasync requestFullscreen() {\n\t\tif (!this.#target?.requestFullscreen) return;\n\t\tawait this.#target.requestFullscreen();\n\t\tthis.#isFullscreen = true;\n\t}\n\tasync exitFullscreen() {\n\t\tconst doc = globalThis.document;\n\t\tif (doc?.fullscreenElement && doc.fullscreenElement === this.#target) await doc.exitFullscreen();\n\t\tthis.#isFullscreen = false;\n\t}\n\t#createPlayer() {\n\t\tconst target = this.#target;\n\t\tif (!target || this.#messages) return false;\n\t\tconst existingSrc = target.getAttribute(\"src\");\n\t\tif (!existingSrc) {\n\t\t\tconst initialSrc = buildTwitchIframeSrc(this.#src, this.#snapshotProps());\n\t\t\tif (!initialSrc) {\n\t\t\t\tthis.#loadComplete.resolve();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\ttarget.src = initialSrc;\n\t\t} else {\n\t\t\tconst withParent = withPageParent(existingSrc);\n\t\t\tif (withParent !== existingSrc) target.src = withParent;\n\t\t}\n\t\tthis.#kind = parseTwitchSource(this.#src)?.kind ?? null;\n\t\tthis.#embedSrc = target.getAttribute(\"src\") ?? \"\";\n\t\tconst attachId = this.#attachId;\n\t\tthis.#messages = new AbortController();\n\t\tglobalThis.addEventListener(\"message\", (event) => void this.#onMessage(event, attachId), { signal: this.#messages.signal });\n\t\tthis.dispatchEvent(new Event(\"loadstart\"));\n\t\treturn true;\n\t}\n\t#isStale(attachId) {\n\t\treturn attachId !== this.#attachId;\n\t}\n\t#afterLoad(fn) {\n\t\tthis.#loadComplete.then(() => {\n\t\t\tif (!this.#messages) return;\n\t\t\tfn();\n\t\t}, () => {});\n\t}\n\t#sendCommand(command, params) {\n\t\tconst embedWindow = this.#target?.contentWindow;\n\t\tif (!embedWindow) return;\n\t\tconst message = {\n\t\t\tnamespace: PLAYER_PROXY_NAMESPACE,\n\t\t\teventName: command,\n\t\t\tparams\n\t\t};\n\t\tembedWindow.postMessage(message, TWITCH_PLAYER_ORIGIN);\n\t}\n\t#snapshotProps() {\n\t\treturn {\n\t\t\tautoplay: this.#autoplay,\n\t\t\tdefaultMuted: this.#defaultMuted,\n\t\t\tloop: this.#loop,\n\t\t\tcontrols: this.#controls,\n\t\t\tplaysInline: this.#playsInline,\n\t\t\tpreload: this.#preload || twitchMediaDefaultProps.preload,\n\t\t\tsource: this.#source\n\t\t};\n\t}\n\t#resetState() {\n\t\tthis.#kind = null;\n\t\tthis.#playback = null;\n\t\tthis.#currentTime = 0;\n\t\tthis.#duration = NaN;\n\t\tthis.#muted = false;\n\t\tthis.#paused = !this.#autoplay;\n\t\tthis.#playbackRate = 1;\n\t\tthis.#progress = 0;\n\t\tthis.#readyState = READY_STATE_HAVE_NOTHING;\n\t\tthis.#seeking = false;\n\t\tthis.#loaded = false;\n\t\tthis.#volume = 1;\n\t\tthis.#error = null;\n\t\tthis.#isFullscreen = false;\n\t}\n\tasync #onMessage(event, attachId) {\n\t\tif (this.#isStale(attachId)) return;\n\t\tconst embedWindow = this.#target?.contentWindow;\n\t\tif (!embedWindow || event.source !== embedWindow) return;\n\t\tconst { data } = event;\n\t\tif (!isTwitchMessage(data)) return;\n\t\tif (data.namespace === \"twitch-embed\") {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, STATE_SETTLE_MS));\n\t\t\tif (this.#isStale(attachId)) return;\n\t\t\tthis.#onEmbedEvent(data.eventName);\n\t\t\treturn;\n\t\t}\n\t\tif (data.eventName === \"UPDATE_STATE\") this.#onUpdateState(data.params ?? {});\n\t}\n\t#onEmbedEvent(eventName) {\n\t\tif (eventName !== \"ready\" && !this.#src) return;\n\t\tswitch (eventName) {\n\t\t\tcase \"ready\":\n\t\t\t\tthis.#playerReady = true;\n\t\t\t\tthis.#rebuilding = false;\n\t\t\t\tif (this.#pendingLoad) {\n\t\t\t\t\tthis.#pendingLoad = false;\n\t\t\t\t\tthis.load();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.#onLoaded();\n\t\t\t\treturn;\n\t\t\tcase \"seek\":\n\t\t\t\tthis.#seeking = true;\n\t\t\t\tthis.dispatchEvent(new Event(\"seeking\"));\n\t\t\t\treturn;\n\t\t\tcase \"playing\":\n\t\t\t\tif (this.#seeking) {\n\t\t\t\t\tthis.#seeking = false;\n\t\t\t\t\tthis.dispatchEvent(new Event(\"seeked\"));\n\t\t\t\t}\n\t\t\t\tthis.#readyState = READY_STATE_HAVE_FUTURE_DATA;\n\t\t\t\tthis.dispatchEvent(new Event(\"playing\"));\n\t\t\t\treturn;\n\t\t\tcase \"ended\":\n\t\t\t\tthis.dispatchEvent(new Event(\"ended\"));\n\t\t\t\tif (this.#loop) {\n\t\t\t\t\tthis.currentTime = 0;\n\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tdefault: this.dispatchEvent(new Event(eventName));\n\t\t}\n\t}\n\t#onUpdateState(state) {\n\t\tif (this.#rebuilding) return;\n\t\tif (!this.#src) return;\n\t\tif (this.#playerReady && !this.#loaded) this.#onLoaded();\n\t\tif (state.playback && state.playback !== this.#playback) {\n\t\t\tif (state.playback === \"Buffering\") this.dispatchEvent(new Event(\"waiting\"));\n\t\t\tthis.#playback = state.playback;\n\t\t}\n\t\tif (this.#kind !== \"channel\" && isNumber(state.duration) && state.duration !== this.#duration) {\n\t\t\tthis.#duration = state.duration;\n\t\t\tthis.dispatchEvent(new Event(\"durationchange\"));\n\t\t}\n\t\tif (isNumber(state.currentTime) && state.currentTime !== this.#currentTime) {\n\t\t\tthis.#currentTime = state.currentTime;\n\t\t\tthis.dispatchEvent(new Event(\"timeupdate\"));\n\t\t}\n\t\tconst volumeChanged = isNumber(state.volume) && state.volume !== this.#volume;\n\t\tconst mutedChanged = !isUndefined(state.muted) && state.muted !== this.#muted;\n\t\tif (volumeChanged || mutedChanged) {\n\t\t\tif (isNumber(state.volume)) this.#volume = state.volume;\n\t\t\tif (!isUndefined(state.muted)) this.#muted = state.muted;\n\t\t\tthis.dispatchEvent(new Event(\"volumechange\"));\n\t\t}\n\t\tconst bufferSize = state.stats?.videoStats?.bufferSize;\n\t\tif (isNumber(bufferSize) && bufferSize !== this.#progress) {\n\t\t\tthis.#progress = bufferSize;\n\t\t\tif (this.#readyState >= READY_STATE_HAVE_FUTURE_DATA && bufferSize > 0) this.#readyState = READY_STATE_HAVE_ENOUGH_DATA;\n\t\t\tthis.dispatchEvent(new Event(\"progress\"));\n\t\t}\n\t}\n\t#onLoaded() {\n\t\tif (this.#loaded) return;\n\t\tthis.#loaded = true;\n\t\tthis.#readyState = READY_STATE_HAVE_METADATA;\n\t\tthis.dispatchEvent(new Event(\"loadedmetadata\"));\n\t\tif (this.#kind === \"channel\") {\n\t\t\tthis.#duration = Number.POSITIVE_INFINITY;\n\t\t\tthis.dispatchEvent(new Event(\"durationchange\"));\n\t\t}\n\t\tthis.dispatchEvent(new Event(\"loadcomplete\"));\n\t\tthis.#loadComplete.resolve();\n\t}\n};\nfunction isContentOnlyChange(current, next) {\n\tconst currentBase = withoutContent(current);\n\tconst nextBase = withoutContent(next);\n\treturn currentBase !== null && currentBase === nextBase;\n}\nfunction withPageParent(embedSrc) {\n\tconst hostname = globalThis.location?.hostname;\n\tif (!hostname) return embedSrc;\n\tlet url;\n\ttry {\n\t\turl = new URL(embedSrc);\n\t} catch {\n\t\treturn embedSrc;\n\t}\n\tif (url.origin !== \"https://player.twitch.tv\") return embedSrc;\n\tif (url.searchParams.getAll(\"parent\").includes(hostname)) return embedSrc;\n\turl.searchParams.append(\"parent\", hostname);\n\treturn url.toString();\n}\nfunction withoutContent(embedSrc) {\n\tif (!embedSrc) return null;\n\ttry {\n\t\tconst url = new URL(embedSrc);\n\t\turl.searchParams.delete(\"video\");\n\t\turl.searchParams.delete(\"channel\");\n\t\treturn url.toString();\n\t} catch {\n\t\treturn null;\n\t}\n}\nconst STATE_SETTLE_MS = 10;\nconst READY_STATE_HAVE_NOTHING = 0;\nconst READY_STATE_HAVE_METADATA = 1;\nconst READY_STATE_HAVE_FUTURE_DATA = 3;\nconst READY_STATE_HAVE_ENOUGH_DATA = 4;\n//#endregion\nexport { TwitchMedia };\n\n//# sourceMappingURL=media.js.map","import { CustomMediaElement } from '@videojs/media/dom/custom-media-element';\nimport { buildTwitchIframeSrc, TwitchMedia } from '@videojs/media/dom/twitch';\nimport { escapeHtml } from '@videojs/utils/string';\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nclass TwitchCustomMediaElement extends CustomMediaElement('iframe', TwitchMedia) {\n static override getTemplateHTML = (attrs: Record<string, string>): string => {\n const initialSrc = buildTwitchIframeSrc(attrs.src ?? '', templateAttrsToEmbedProps(attrs));\n const srcAttr = initialSrc ? ` src=\"${escapeHtml(initialSrc)}\"` : '';\n return /*html*/ `\n <style>\n :host {\n display: inline-block;\n min-width: 300px;\n min-height: 150px;\n position: relative;\n }\n iframe {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n :host(:not([controls])) {\n pointer-events: none;\n }\n </style>\n <iframe\n part=\"iframe\"\n ${srcAttr}\n allow=\"accelerometer; fullscreen; autoplay; encrypted-media; picture-in-picture;\"\n sandbox=\"allow-modals allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox\"\n scrolling=\"no\"\n frameborder=\"0\"\n width=\"100%\"\n height=\"100%\"\n referrerpolicy=\"${escapeHtml(attrs.referrerpolicy ?? '')}\"\n ></iframe>\n `;\n };\n}\n\nfunction templateAttrsToEmbedProps(attrs: Record<string, string>) {\n return {\n autoplay: attrs.autoplay !== undefined,\n defaultMuted: attrs.muted !== undefined,\n loop: attrs.loop !== undefined,\n controls: attrs.controls !== undefined,\n playsInline: attrs.playsinline !== undefined,\n preload: (attrs.preload as 'none' | 'metadata' | 'auto' | undefined) ?? 'metadata',\n };\n}\n\nexport class TwitchVideo extends MediaAttachMixin(TwitchCustomMediaElement) {}\n","import { TwitchVideo } from '../../media/twitch-video';\nimport { safeDefine } from '../safe-define';\n\nexport class TwitchVideoElement extends TwitchVideo {\n static readonly tagName = 'twitch-video';\n}\n\nsafeDefine(TwitchVideoElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TwitchVideoElement.tagName]: TwitchVideoElement;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};