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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/cdn/audio-headless.dev.js +1 -1
  2. package/cdn/audio-headless.js +1 -1
  3. package/cdn/audio-minimal-ui.dev.js +1 -1
  4. package/cdn/audio-minimal-ui.js +1 -1
  5. package/cdn/audio-minimal.dev.js +4 -4
  6. package/cdn/audio-minimal.dev.js.map +1 -1
  7. package/cdn/audio-minimal.js +1 -1
  8. package/cdn/audio-minimal.js.map +1 -1
  9. package/cdn/audio-ui.dev.js +1 -1
  10. package/cdn/audio-ui.js +1 -1
  11. package/cdn/audio.dev.js +4 -4
  12. package/cdn/audio.dev.js.map +1 -1
  13. package/cdn/audio.js +1 -1
  14. package/cdn/audio.js.map +1 -1
  15. package/cdn/background-video-WKumpp49.js +59 -0
  16. package/cdn/background-video-WKumpp49.js.map +1 -0
  17. package/cdn/background-video-YHY_3-lX.js +2 -0
  18. package/cdn/background-video-YHY_3-lX.js.map +1 -0
  19. package/cdn/background.dev.js +3 -56
  20. package/cdn/background.dev.js.map +1 -1
  21. package/cdn/background.js +1 -1
  22. package/cdn/background.js.map +1 -1
  23. package/cdn/bn-CcLIScl6.js +108 -0
  24. package/cdn/bn-CcLIScl6.js.map +1 -0
  25. package/cdn/bn-KcCmQhYd.js +2 -0
  26. package/cdn/bn-KcCmQhYd.js.map +1 -0
  27. package/cdn/compounds-BEO1d3ZM.js +8 -0
  28. package/cdn/compounds-BEO1d3ZM.js.map +1 -0
  29. package/cdn/{compounds-CCvdpvge.js → compounds-nk9RJtBK.js} +8 -15
  30. package/cdn/compounds-nk9RJtBK.js.map +1 -0
  31. package/cdn/container-element-Dd0ZCdhK.js +14 -0
  32. package/cdn/container-element-Dd0ZCdhK.js.map +1 -0
  33. package/cdn/container-element-HHK_KZOE.js +376 -0
  34. package/cdn/container-element-HHK_KZOE.js.map +1 -0
  35. package/cdn/{create-player-BHFyOnWi.js → create-player-DK9WOywd.js} +19 -379
  36. package/cdn/create-player-DK9WOywd.js.map +1 -0
  37. package/cdn/create-player-hSdQMP5p.js +2 -0
  38. package/cdn/create-player-hSdQMP5p.js.map +1 -0
  39. package/cdn/embed-params-D2e8u0d4.js +2 -0
  40. package/cdn/embed-params-D2e8u0d4.js.map +1 -0
  41. package/cdn/embed-params-W6T88S8x.js +39 -0
  42. package/cdn/embed-params-W6T88S8x.js.map +1 -0
  43. package/cdn/{gesture-element-CG-Sx_5t.js → gesture-element-6Ld1YwIL.js} +3 -3
  44. package/cdn/{gesture-element-CG-Sx_5t.js.map → gesture-element-6Ld1YwIL.js.map} +1 -1
  45. package/cdn/gesture-element-BC48ucj9.js +2 -0
  46. package/cdn/{gesture-element-BNfMI8eh.js.map → gesture-element-BC48ucj9.js.map} +1 -1
  47. package/cdn/{hls-js-g1zdcyvE.js → hls-js-BEuVm0u9.js} +3 -2
  48. package/cdn/{hls-js-g1zdcyvE.js.map → hls-js-BEuVm0u9.js.map} +1 -1
  49. package/cdn/hls-js-C4P_b2tT.js +2 -0
  50. package/cdn/{hls-js-6lW7L4th.js.map → hls-js-C4P_b2tT.js.map} +1 -1
  51. package/cdn/hls-js-CATW7NBm.js +2 -0
  52. package/cdn/{hls-js-DCQzjzB5.js.map → hls-js-CATW7NBm.js.map} +1 -1
  53. package/cdn/{hls-js-Cwj8UBx9.js → hls-js-WCNy9MVh.js} +3 -2
  54. package/cdn/{hls-js-Cwj8UBx9.js.map → hls-js-WCNy9MVh.js.map} +1 -1
  55. package/cdn/i18n-CE4KxKuj.js +2 -0
  56. package/cdn/i18n-CE4KxKuj.js.map +1 -0
  57. package/cdn/{i18n-Mtlmj1AA.js → i18n-Ch4t6EjV.js} +2 -2
  58. package/cdn/{i18n-Mtlmj1AA.js.map → i18n-Ch4t6EjV.js.map} +1 -1
  59. package/cdn/i18n-Dc7WM2xd.js +2 -0
  60. package/cdn/{i18n-DfKGl5Rh.js.map → i18n-Dc7WM2xd.js.map} +1 -1
  61. package/cdn/i18n-DyF_NfCk.js +157 -0
  62. package/cdn/i18n-DyF_NfCk.js.map +1 -0
  63. package/cdn/i18n.dev.js +3 -152
  64. package/cdn/i18n.dev.js.map +1 -1
  65. package/cdn/i18n.js +1 -1
  66. package/cdn/i18n.js.map +1 -1
  67. package/cdn/{live-button-element-B_y-ZJBy.js → live-button-element-Bae44kBN.js} +5 -4
  68. package/cdn/live-button-element-Bae44kBN.js.map +1 -0
  69. package/cdn/live-button-element-DaHgnYdw.js +2 -0
  70. package/cdn/{live-button-element-CWfkQUoy.js.map → live-button-element-DaHgnYdw.js.map} +1 -1
  71. package/cdn/live-video-minimal.dev.js +8 -8
  72. package/cdn/live-video-minimal.dev.js.map +1 -1
  73. package/cdn/live-video-minimal.js +1 -1
  74. package/cdn/live-video-minimal.js.map +1 -1
  75. package/cdn/live-video.dev.js +9 -9
  76. package/cdn/live-video.dev.js.map +1 -1
  77. package/cdn/live-video.js +1 -1
  78. package/cdn/live-video.js.map +1 -1
  79. package/cdn/locales/bn.dev.js +1 -1
  80. package/cdn/locales/bn.js +1 -1
  81. package/cdn/media/background-video.dev.d.ts +1 -0
  82. package/cdn/media/background-video.dev.js +3 -0
  83. package/cdn/media/background-video.js +1 -0
  84. package/cdn/media/cloudflare-video.dev.d.ts +1 -0
  85. package/cdn/media/cloudflare-video.dev.js +668 -0
  86. package/cdn/media/cloudflare-video.dev.js.map +1 -0
  87. package/cdn/media/cloudflare-video.js +2 -0
  88. package/cdn/media/cloudflare-video.js.map +1 -0
  89. package/cdn/media/container.dev.d.ts +1 -0
  90. package/cdn/media/container.dev.js +8 -0
  91. package/cdn/media/container.dev.js.map +1 -0
  92. package/cdn/media/container.js +2 -0
  93. package/cdn/media/container.js.map +1 -0
  94. package/cdn/media/dash-video.dev.js +2 -1
  95. package/cdn/media/dash-video.js +2 -2
  96. package/cdn/media/dash-video.js.map +1 -1
  97. package/cdn/media/google-cast.dev.js +2 -31
  98. package/cdn/media/google-cast.dev.js.map +1 -1
  99. package/cdn/media/google-cast.js +3 -3
  100. package/cdn/media/google-cast.js.map +1 -1
  101. package/cdn/media/hls-audio.dev.js +1 -0
  102. package/cdn/media/hls-audio.js +1 -1
  103. package/cdn/media/hls-audio.js.map +1 -1
  104. package/cdn/media/hls-background-video.dev.js +2 -1
  105. package/cdn/media/hls-background-video.js +1 -1
  106. package/cdn/media/hls-background-video.js.map +1 -1
  107. package/cdn/media/hls-video.dev.js +2 -1
  108. package/cdn/media/hls-video.js +1 -1
  109. package/cdn/media/hls-video.js.map +1 -1
  110. package/cdn/media/hlsjs-video.dev.js +2 -1
  111. package/cdn/media/hlsjs-video.js +1 -1
  112. package/cdn/media/hlsjs-video.js.map +1 -1
  113. package/cdn/media/mux-audio/hls-js.dev.js +3 -1
  114. package/cdn/media/mux-audio/hls-js.js +1 -1
  115. package/cdn/media/mux-audio/spf.dev.js +1 -0
  116. package/cdn/media/mux-audio/spf.js +1 -1
  117. package/cdn/media/mux-audio/spf.js.map +1 -1
  118. package/cdn/media/mux-audio.dev.js +3 -1
  119. package/cdn/media/mux-audio.js +1 -1
  120. package/cdn/media/mux-background-video.dev.js +2 -1
  121. package/cdn/media/mux-background-video.js +1 -1
  122. package/cdn/media/mux-background-video.js.map +1 -1
  123. package/cdn/media/mux-data.dev.js +2 -1
  124. package/cdn/media/mux-data.dev.js.map +1 -1
  125. package/cdn/media/mux-data.js +2 -2
  126. package/cdn/media/mux-data.js.map +1 -1
  127. package/cdn/media/mux-video/hls-js.dev.js +3 -1
  128. package/cdn/media/mux-video/hls-js.js +1 -1
  129. package/cdn/media/mux-video/spf.dev.js +2 -1
  130. package/cdn/media/mux-video/spf.js +1 -1
  131. package/cdn/media/mux-video/spf.js.map +1 -1
  132. package/cdn/media/mux-video.dev.js +3 -1
  133. package/cdn/media/mux-video.js +1 -1
  134. package/cdn/media/native-hls-video.dev.js +1 -0
  135. package/cdn/media/native-hls-video.js +1 -1
  136. package/cdn/media/native-hls-video.js.map +1 -1
  137. package/cdn/media/spotify-audio.dev.d.ts +1 -0
  138. package/cdn/media/spotify-audio.dev.js +605 -0
  139. package/cdn/media/spotify-audio.dev.js.map +1 -0
  140. package/cdn/media/spotify-audio.js +2 -0
  141. package/cdn/media/spotify-audio.js.map +1 -0
  142. package/cdn/media/tiktok-video.dev.d.ts +1 -0
  143. package/cdn/media/tiktok-video.dev.js +636 -0
  144. package/cdn/media/tiktok-video.dev.js.map +1 -0
  145. package/cdn/media/tiktok-video.js +2 -0
  146. package/cdn/media/tiktok-video.js.map +1 -0
  147. package/cdn/media/twitch-video.dev.d.ts +1 -0
  148. package/cdn/media/twitch-video.dev.js +627 -0
  149. package/cdn/media/twitch-video.dev.js.map +1 -0
  150. package/cdn/media/twitch-video.js +2 -0
  151. package/cdn/media/twitch-video.js.map +1 -0
  152. package/cdn/media/vimeo-video.dev.d.ts +1 -0
  153. package/cdn/media/vimeo-video.dev.js +2989 -0
  154. package/cdn/media/vimeo-video.dev.js.map +1 -0
  155. package/cdn/media/vimeo-video.js +16 -0
  156. package/cdn/media/vimeo-video.js.map +1 -0
  157. package/cdn/media/youtube-video.dev.d.ts +1 -0
  158. package/cdn/media/youtube-video.dev.js +713 -0
  159. package/cdn/media/youtube-video.dev.js.map +1 -0
  160. package/cdn/media/youtube-video.js +2 -0
  161. package/cdn/media/youtube-video.js.map +1 -0
  162. package/cdn/{media-Cp3acYc8.js → media-BavrGKqa.js} +274 -5
  163. package/cdn/media-BavrGKqa.js.map +1 -0
  164. package/cdn/media-Bmablv4g.js +2 -0
  165. package/cdn/media-Bmablv4g.js.map +1 -0
  166. package/cdn/{media-B_gQXwri.js → media-COIe3uI5.js} +12 -3
  167. package/cdn/media-COIe3uI5.js.map +1 -0
  168. package/cdn/{media-CbWsJJhU.js → media-CPVSKLdk.js} +2 -2
  169. package/cdn/{media-CbWsJJhU.js.map → media-CPVSKLdk.js.map} +1 -1
  170. package/cdn/media-CanBm0Jh.js +41 -0
  171. package/cdn/media-CanBm0Jh.js.map +1 -0
  172. package/cdn/{media-Dq4zmIJa2.js → media-Dq4zmIJa.js} +1 -1
  173. package/cdn/media-Dq4zmIJa.js.map +1 -0
  174. package/cdn/{media-DRo3n8tM.js → media-oa3nyL2o.js} +3 -3
  175. package/cdn/{media-DRo3n8tM.js.map → media-oa3nyL2o.js.map} +1 -1
  176. package/cdn/media-played-ranges-CM2zeOGr.js +2 -0
  177. package/cdn/media-played-ranges-CM2zeOGr.js.map +1 -0
  178. package/cdn/media-played-ranges-Yd9acuMt.js +156 -0
  179. package/cdn/media-played-ranges-Yd9acuMt.js.map +1 -0
  180. package/cdn/{media-suYcjCG22.js → media-suYcjCG2.js} +1 -1
  181. package/cdn/media-suYcjCG2.js.map +1 -0
  182. package/cdn/minimal-ui-8iRZf_72.js +2 -0
  183. package/cdn/{minimal-ui-AFk6Ut5f.js.map → minimal-ui-8iRZf_72.js.map} +1 -1
  184. package/cdn/{minimal-ui--JsmpU2q.js → minimal-ui-BpHxIo4z.js} +5 -5
  185. package/cdn/{minimal-ui--JsmpU2q.js.map → minimal-ui-BpHxIo4z.js.map} +1 -1
  186. package/cdn/{minimal-ui-Bxcpf5Mb.js → minimal-ui-CRKvUmB8.js} +9 -9
  187. package/cdn/{minimal-ui-Bxcpf5Mb.js.map → minimal-ui-CRKvUmB8.js.map} +1 -1
  188. package/cdn/minimal-ui-Et2Wcn7r.js +2 -0
  189. package/cdn/{minimal-ui-BVKu9LWj.js.map → minimal-ui-Et2Wcn7r.js.map} +1 -1
  190. package/cdn/mixin-BqN0V06a.js +2 -0
  191. package/cdn/{mixin-DiB7dIef.js.map → mixin-BqN0V06a.js.map} +1 -1
  192. package/cdn/{mixin-CkNZwQXF.js → mixin-C193v40v.js} +67 -67
  193. package/cdn/mixin-C193v40v.js.map +1 -0
  194. package/cdn/noop-BxkeRIz9.js +6 -0
  195. package/cdn/noop-BxkeRIz9.js.map +1 -0
  196. package/cdn/noop-Ch0IHcOP.js +2 -0
  197. package/cdn/noop-Ch0IHcOP.js.map +1 -0
  198. package/cdn/{player-D4fdOLLk.js → player-B2oraRyD.js} +3 -2
  199. package/cdn/{player-D4fdOLLk.js.map → player-B2oraRyD.js.map} +1 -1
  200. package/cdn/player-BRQLp5bX.js +2 -0
  201. package/cdn/{player-srq1RGTj.js.map → player-BRQLp5bX.js.map} +1 -1
  202. package/cdn/player-BloX4l6F.js +2 -0
  203. package/cdn/{player-iIewo8Y9.js.map → player-BloX4l6F.js.map} +1 -1
  204. package/cdn/{player-B0qnepD5.js → player-CKTAtwit.js} +3 -2
  205. package/cdn/{player-B0qnepD5.js.map → player-CKTAtwit.js.map} +1 -1
  206. package/cdn/{player-C4ix6TQq.js → player-DM9rUXg-.js} +3 -2
  207. package/cdn/{player-C4ix6TQq.js.map → player-DM9rUXg-.js.map} +1 -1
  208. package/cdn/player-rCFqzWrA.js +2 -0
  209. package/cdn/{player-B0ccW5-n.js.map → player-rCFqzWrA.js.map} +1 -1
  210. package/cdn/{poster-element-BP1Ypgbf.js → poster-element-BGr1VQJB.js} +16 -4
  211. package/cdn/poster-element-BGr1VQJB.js.map +1 -0
  212. package/cdn/poster-element-DBmgOyep.js +2 -0
  213. package/cdn/poster-element-DBmgOyep.js.map +1 -0
  214. package/cdn/script-D3ZkiqwO.js +2 -0
  215. package/cdn/script-D3ZkiqwO.js.map +1 -0
  216. package/cdn/script-erPJaaTz.js +33 -0
  217. package/cdn/script-erPJaaTz.js.map +1 -0
  218. package/cdn/seek-button-element-FlgBVoGM.js +2 -0
  219. package/cdn/seek-button-element-FlgBVoGM.js.map +1 -0
  220. package/cdn/{seek-button-element-TErrbilI.js → seek-button-element-XMTLIxZj.js} +6 -5
  221. package/cdn/seek-button-element-XMTLIxZj.js.map +1 -0
  222. package/cdn/{skin-element-wPSb4AAs.js → skin-element-DL-Kqa5f.js} +2 -2
  223. package/cdn/{skin-element-wPSb4AAs.js.map → skin-element-DL-Kqa5f.js.map} +1 -1
  224. package/cdn/{skin-element-1_MG2zgS.js → skin-element-DNytI-uu.js} +2 -2
  225. package/cdn/{skin-element-1_MG2zgS.js.map → skin-element-DNytI-uu.js.map} +1 -1
  226. package/cdn/{text-element-DTB9_2HX.js → text-element-D88ArbZz.js} +3 -3
  227. package/cdn/{text-element-DTB9_2HX.js.map → text-element-D88ArbZz.js.map} +1 -1
  228. package/cdn/text-element-DeWBNKXb.js +2 -0
  229. package/cdn/{text-element-Bsyglab8.js.map → text-element-DeWBNKXb.js.map} +1 -1
  230. package/cdn/{time-slider-chapters-element-DPgaLdBt.js → time-slider-chapters-element-DJ0abZXI.js} +5 -4
  231. package/cdn/time-slider-chapters-element-DJ0abZXI.js.map +1 -0
  232. package/cdn/time-slider-chapters-element-DW8YyJn8.js +2 -0
  233. package/cdn/{time-slider-chapters-element-MdlcovBu.js.map → time-slider-chapters-element-DW8YyJn8.js.map} +1 -1
  234. package/cdn/{translate-text-DP0CzUCC.js → translate-text-BWvoW5-r.js} +2 -7
  235. package/cdn/translate-text-BWvoW5-r.js.map +1 -0
  236. package/cdn/translate-text-TzSgu_oe.js +2 -0
  237. package/cdn/translate-text-TzSgu_oe.js.map +1 -0
  238. package/cdn/{ui-D0AokGxw.js → ui-BU3_2gDQ.js} +8 -8
  239. package/cdn/{ui-D0AokGxw.js.map → ui-BU3_2gDQ.js.map} +1 -1
  240. package/cdn/{ui-p36Szn71.js → ui-BsaWWE4y.js} +10 -10
  241. package/cdn/{ui-p36Szn71.js.map → ui-BsaWWE4y.js.map} +1 -1
  242. package/cdn/ui-C0isALTQ.js +2 -0
  243. package/cdn/{ui-CecDxhTX.js.map → ui-C0isALTQ.js.map} +1 -1
  244. package/cdn/ui-DVpkE1MN.js +2 -0
  245. package/cdn/{ui-ChWM6Xz2.js.map → ui-DVpkE1MN.js.map} +1 -1
  246. package/cdn/video-headless.dev.js +1 -1
  247. package/cdn/video-headless.js +1 -1
  248. package/cdn/video-minimal-ui.dev.js +1 -1
  249. package/cdn/video-minimal-ui.js +1 -1
  250. package/cdn/video-minimal.dev.js +4 -4
  251. package/cdn/video-minimal.dev.js.map +1 -1
  252. package/cdn/video-minimal.js +1 -1
  253. package/cdn/video-minimal.js.map +1 -1
  254. package/cdn/video-ui.dev.js +1 -1
  255. package/cdn/video-ui.js +1 -1
  256. package/cdn/video.dev.js +5 -5
  257. package/cdn/video.dev.js.map +1 -1
  258. package/cdn/video.js +1 -1
  259. package/cdn/video.js.map +1 -1
  260. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  261. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  262. package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
  263. package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  264. package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js +1 -1
  265. package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -1
  266. package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js +1 -1
  267. package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -1
  268. package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js +1 -1
  269. package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -1
  270. package/dist/default/_virtual/inline-css_src/define/live-video/skin.js +1 -1
  271. package/dist/default/_virtual/inline-css_src/define/live-video/skin.js.map +1 -1
  272. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  273. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  274. package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
  275. package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  276. package/dist/default/define/audio/minimal-skin.css +16 -19
  277. package/dist/default/define/audio/skin.css +27 -30
  278. package/dist/default/define/live-audio/minimal-skin.css +16 -19
  279. package/dist/default/define/live-audio/skin.css +27 -30
  280. package/dist/default/define/live-video/minimal-skin.css +20 -19
  281. package/dist/default/define/live-video/skin.css +31 -30
  282. package/dist/default/define/video/minimal-skin.css +20 -19
  283. package/dist/default/define/video/skin.css +31 -30
  284. package/dist/default/media/tiktok-video/media.js +3 -2
  285. package/dist/default/media/tiktok-video/media.js.map +1 -1
  286. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +6 -6
  287. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  288. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +1 -1
  289. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  290. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +4 -4
  291. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  292. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +1 -1
  293. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  294. package/dist/default/ui/playback-rate-button/playback-rate-button-element.js +1 -2
  295. package/dist/default/ui/playback-rate-button/playback-rate-button-element.js.map +1 -1
  296. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  297. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  298. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
  299. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  300. package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js +1 -1
  301. package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -1
  302. package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js +1 -1
  303. package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -1
  304. package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js +1 -1
  305. package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -1
  306. package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js +1 -1
  307. package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js.map +1 -1
  308. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  309. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  310. package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
  311. package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  312. package/dist/dev/define/audio/minimal-skin.css +16 -19
  313. package/dist/dev/define/audio/skin.css +27 -30
  314. package/dist/dev/define/live-audio/minimal-skin.css +16 -19
  315. package/dist/dev/define/live-audio/skin.css +27 -30
  316. package/dist/dev/define/live-video/minimal-skin.css +20 -19
  317. package/dist/dev/define/live-video/skin.css +31 -30
  318. package/dist/dev/define/video/minimal-skin.css +20 -19
  319. package/dist/dev/define/video/skin.css +31 -30
  320. package/dist/dev/media/tiktok-video/media.d.ts.map +1 -1
  321. package/dist/dev/media/tiktok-video/media.js +10 -7
  322. package/dist/dev/media/tiktok-video/media.js.map +1 -1
  323. package/dist/dev/packages/skins/dist/default/default/tailwind/components/slider.js +6 -6
  324. package/dist/dev/packages/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  325. package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js +1 -1
  326. package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  327. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/slider.js +4 -4
  328. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  329. package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js +1 -1
  330. package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  331. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts.map +1 -1
  332. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js +1 -2
  333. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js.map +1 -1
  334. package/docs/README.md +1 -1
  335. package/docs/concepts/features.md +2 -2
  336. package/docs/concepts/media-sources.md +79 -1
  337. package/docs/concepts/skins.md +31 -30
  338. package/docs/how-to/build-your-own-component.md +1 -1
  339. package/docs/how-to/customize-skins.md +94 -98
  340. package/docs/how-to/migrate-from-media-chrome.md +359 -0
  341. package/docs/how-to/migrate-from-mux-player.md +535 -0
  342. package/docs/how-to/migrate-from-plyr.md +394 -0
  343. package/docs/how-to/migrate-from-video-js-8.md +594 -0
  344. package/docs/llms.txt +9 -0
  345. package/docs/reference/feature-volume.md +3 -1
  346. package/docs/reference/mute-button.md +34 -0
  347. package/docs/reference/volume-slider.md +1 -1
  348. package/package.json +10 -9
  349. package/cdn/bn-DdelKD_n.js +0 -108
  350. package/cdn/bn-DdelKD_n.js.map +0 -1
  351. package/cdn/bn-YS8ruMcO.js +0 -2
  352. package/cdn/bn-YS8ruMcO.js.map +0 -1
  353. package/cdn/compounds-CCvdpvge.js.map +0 -1
  354. package/cdn/compounds-CJ6SbYAh.js +0 -8
  355. package/cdn/compounds-CJ6SbYAh.js.map +0 -1
  356. package/cdn/create-player-BHFyOnWi.js.map +0 -1
  357. package/cdn/create-player-CbpxjDaZ.js +0 -14
  358. package/cdn/create-player-CbpxjDaZ.js.map +0 -1
  359. package/cdn/gesture-element-BNfMI8eh.js +0 -2
  360. package/cdn/hls-js-6lW7L4th.js +0 -2
  361. package/cdn/hls-js-DCQzjzB5.js +0 -2
  362. package/cdn/i18n-DfKGl5Rh.js +0 -2
  363. package/cdn/live-button-element-B_y-ZJBy.js.map +0 -1
  364. package/cdn/live-button-element-CWfkQUoy.js +0 -2
  365. package/cdn/media-5ODYtX1-.js +0 -2
  366. package/cdn/media-5ODYtX1-.js.map +0 -1
  367. package/cdn/media-B_gQXwri.js.map +0 -1
  368. package/cdn/media-CPWNSZFX.js +0 -41
  369. package/cdn/media-CPWNSZFX.js.map +0 -1
  370. package/cdn/media-Cp3acYc8.js.map +0 -1
  371. package/cdn/media-Dq4zmIJa2.js.map +0 -1
  372. package/cdn/media-suYcjCG22.js.map +0 -1
  373. package/cdn/minimal-ui-AFk6Ut5f.js +0 -2
  374. package/cdn/minimal-ui-BVKu9LWj.js +0 -2
  375. package/cdn/mixin-CkNZwQXF.js.map +0 -1
  376. package/cdn/mixin-DiB7dIef.js +0 -2
  377. package/cdn/player-B0ccW5-n.js +0 -2
  378. package/cdn/player-iIewo8Y9.js +0 -2
  379. package/cdn/player-srq1RGTj.js +0 -2
  380. package/cdn/poster-element-BP1Ypgbf.js.map +0 -1
  381. package/cdn/poster-element-S-rr412t.js +0 -2
  382. package/cdn/poster-element-S-rr412t.js.map +0 -1
  383. package/cdn/seek-button-element-DxLmm58Y.js +0 -2
  384. package/cdn/seek-button-element-DxLmm58Y.js.map +0 -1
  385. package/cdn/seek-button-element-TErrbilI.js.map +0 -1
  386. package/cdn/text-element-Bsyglab8.js +0 -2
  387. package/cdn/time-slider-chapters-element-DPgaLdBt.js.map +0 -1
  388. package/cdn/time-slider-chapters-element-MdlcovBu.js +0 -2
  389. package/cdn/translate-text-BPMWpzFm.js +0 -2
  390. package/cdn/translate-text-BPMWpzFm.js.map +0 -1
  391. package/cdn/translate-text-DP0CzUCC.js.map +0 -1
  392. package/cdn/ui-CecDxhTX.js +0 -2
  393. package/cdn/ui-ChWM6Xz2.js +0 -2
@@ -0,0 +1,668 @@
1
+ import { t as deepEqual } from "../deep-equal-DOfcXiSw.js";
2
+ import { t as CustomMediaElement } from "../custom-media-element-D2JoODKd.js";
3
+ import { a as escapeHtml } from "../attributes-c6az3W3y.js";
4
+ import { i as safeDefine } from "../context-OhQY847V.js";
5
+ import { t as loadScript } from "../script-erPJaaTz.js";
6
+ import { n as createTimeRange, r as createPublicPromise, t as MediaPlayedRangesMixin } from "../media-played-ranges-Yd9acuMt.js";
7
+ import { n as tryCall, t as serializeEmbedParams } from "../embed-params-W6T88S8x.js";
8
+ import { n as EMPTY_TEXT_TRACKS, r as EMPTY_TIME_RANGES } from "../constants-CsSwyIX6.js";
9
+ import { t as MediaError } from "../media-error-zO-Hg4un.js";
10
+ import { t as MediaAttachMixin } from "../media-attach-mixin-uThv5NL_.js";
11
+
12
+ //#region ../media/dist/dev/dom/cloudflare/props.js
13
+ const cloudflareMediaDefaultProps = {
14
+ src: "",
15
+ autoplay: false,
16
+ defaultMuted: false,
17
+ muted: false,
18
+ loop: false,
19
+ controls: false,
20
+ playsInline: true,
21
+ preload: "metadata",
22
+ poster: "",
23
+ source: null
24
+ };
25
+
26
+ //#endregion
27
+ //#region ../media/dist/dev/dom/cloudflare/source.js
28
+ /**
29
+ * Parse a Cloudflare Stream source string. Recognizes `videodelivery.net` and
30
+ * `cloudflarestream.com` URLs (embed, iframe, manifest, and thumbnail paths all
31
+ * carry the id in the same position), raw 32-character video UIDs, and signed
32
+ * tokens, which stand in for the UID wherever it appears.
33
+ */
34
+ function parseCloudflareSource(src) {
35
+ if (!src) return null;
36
+ const id = MATCH_SRC.exec(src)?.[1] ?? (MATCH_VIDEO_ID.test(src) || MATCH_SIGNED_TOKEN.test(src) ? src : null);
37
+ if (!id) return null;
38
+ return {
39
+ id,
40
+ signed: MATCH_SIGNED_TOKEN.test(id),
41
+ origin: MATCH_CUSTOMER_ORIGIN.exec(src)?.[1] ?? null
42
+ };
43
+ }
44
+ /** Build the iframe `src` URL for an initial Cloudflare Stream embed from the given props. */
45
+ function buildCloudflareIframeSrc(src, props = {}) {
46
+ const parsed = parseCloudflareSource(src);
47
+ if (!parsed) return "";
48
+ const { referrerPolicy: _referrerPolicy, ...cloudflare } = props.source?.engine?.cloudflare ?? {};
49
+ const params = {
50
+ controls: props.controls === true ? null : 0,
51
+ autoplay: props.autoplay || null,
52
+ loop: props.loop || null,
53
+ muted: props.defaultMuted || null,
54
+ preload: props.preload || cloudflareMediaDefaultProps.preload,
55
+ poster: props.poster || null,
56
+ ...cloudflare
57
+ };
58
+ return `${parsed.origin ? `${parsed.origin}/${parsed.id}/iframe` : `${EMBED_BASE}/${parsed.id}`}?${serializeEmbedParams(params)}`;
59
+ }
60
+ const EMBED_BASE = "https://iframe.videodelivery.net";
61
+ const MATCH_SRC = /(?:cloudflarestream\.com|videodelivery\.net)\/([\w-.]+)/i;
62
+ const MATCH_CUSTOMER_ORIGIN = /^(https?:\/\/customer-[\w-]+\.cloudflarestream\.com)/i;
63
+ const MATCH_VIDEO_ID = /^[a-z\d]{32}$/i;
64
+ const MATCH_SIGNED_TOKEN = /^[\w-]+\.[\w-]+\.[\w-]+$/;
65
+
66
+ //#endregion
67
+ //#region ../media/dist/dev/dom/cloudflare/stream-api.js
68
+ const API_URL = "https://embed.videodelivery.net/embed/sdk.latest.js";
69
+ /** Load the Stream SDK once, reusing it if another host already pulled it in. */
70
+ async function loadCloudflareStreamApi() {
71
+ const existing = globalThis.Stream;
72
+ if (existing) return existing;
73
+ await loadScript(API_URL);
74
+ const api = globalThis.Stream;
75
+ if (!api) throw new Error("Cloudflare Stream SDK failed to load");
76
+ return api;
77
+ }
78
+
79
+ //#endregion
80
+ //#region ../media/dist/dev/dom/cloudflare/media.js
81
+ const CloudflareMediaBase = MediaPlayedRangesMixin(EventTarget);
82
+ /**
83
+ * @fires sourcechange - Fired when `source` changes, either directly or by resolving a new `src`. Read `source` for the new value.
84
+ */
85
+ var CloudflareMedia = class extends CloudflareMediaBase {
86
+ #target = null;
87
+ #player = null;
88
+ #creatingPlayer = false;
89
+ #pendingLoad = false;
90
+ #loadComplete = createPublicPromise();
91
+ #attachId = 0;
92
+ #playerListeners = [];
93
+ #src = cloudflareMediaDefaultProps.src;
94
+ #autoplay = cloudflareMediaDefaultProps.autoplay;
95
+ #defaultMuted = cloudflareMediaDefaultProps.defaultMuted;
96
+ #loop = cloudflareMediaDefaultProps.loop;
97
+ #controls = cloudflareMediaDefaultProps.controls;
98
+ #playsInline = cloudflareMediaDefaultProps.playsInline;
99
+ #preload = cloudflareMediaDefaultProps.preload;
100
+ #poster = cloudflareMediaDefaultProps.poster;
101
+ #source = cloudflareMediaDefaultProps.source;
102
+ #paused = true;
103
+ #ended = false;
104
+ #seeking = false;
105
+ #loaded = false;
106
+ #srcUnsupported = false;
107
+ #currentTime = 0;
108
+ #duration = NaN;
109
+ #volume = 1;
110
+ #muted = false;
111
+ #playbackRate = 1;
112
+ #progress = 0;
113
+ #videoWidth = NaN;
114
+ #videoHeight = NaN;
115
+ #readyState = READY_STATE_HAVE_NOTHING;
116
+ #error = null;
117
+ #isFullscreen = false;
118
+ #textTracksHost = null;
119
+ static PLAYER_SOFTWARE_NAME = "cloudflare-video";
120
+ /** Underlying Stream SDK player instance (null until the SDK loads). */
121
+ get engine() {
122
+ return this.#player;
123
+ }
124
+ get target() {
125
+ return this.#target;
126
+ }
127
+ /** Bind the embed iframe. The SDK and player follow once an embed URL resolves, which may not be until `load()`. */
128
+ attach(target) {
129
+ if (!target || this.#target === target) return;
130
+ if (this.#target) this.detach();
131
+ this.#target = target;
132
+ this.#beginLoad();
133
+ this.#createPlayer();
134
+ }
135
+ detach() {
136
+ if (!this.#target) return;
137
+ this.#attachId++;
138
+ this.#unbindPlayerEvents();
139
+ this.#pauseEmbed();
140
+ this.#player = null;
141
+ this.#creatingPlayer = false;
142
+ this.#pendingLoad = false;
143
+ this.#textTracksHost = null;
144
+ this.#target = null;
145
+ this.#loadComplete.resolve();
146
+ this.#resetState();
147
+ }
148
+ destroy() {
149
+ this.detach();
150
+ super.destroy();
151
+ }
152
+ get src() {
153
+ return this.#src;
154
+ }
155
+ /** Cloudflare URL, video UID, or signed token. Setting it re-derives `source`, carrying its embed parameters over. */
156
+ set src(value) {
157
+ const { engine } = this.#source ?? {};
158
+ const next = {
159
+ ...engine && { engine },
160
+ ...value && { src: value }
161
+ };
162
+ this.source = Object.keys(next).length > 0 ? next : null;
163
+ }
164
+ get currentSrc() {
165
+ return this.#target?.getAttribute("src") ?? "";
166
+ }
167
+ get readyState() {
168
+ return this.#readyState;
169
+ }
170
+ /** Reload the current source through the Stream player; no-op until `attach()`. */
171
+ async load() {
172
+ if (!this.#player) {
173
+ if (!this.#target) return;
174
+ if (this.#creatingPlayer) {
175
+ this.#pendingLoad = true;
176
+ return;
177
+ }
178
+ const load = this.#beginLoad();
179
+ this.#resetState();
180
+ await Promise.resolve();
181
+ if (load !== this.#loadComplete) return;
182
+ this.#createPlayer();
183
+ return;
184
+ }
185
+ const load = this.#beginLoad();
186
+ this.#resetState();
187
+ this.dispatchEvent(new Event("emptied"));
188
+ if (!this.#src) {
189
+ load.resolve();
190
+ this.#pauseEmbed();
191
+ return;
192
+ }
193
+ this.dispatchEvent(new Event("loadstart"));
194
+ const parsed = parseCloudflareSource(this.#src);
195
+ if (!parsed) {
196
+ this.#srcUnsupported = true;
197
+ this.#error = new MediaError(`Unrecognized Cloudflare Stream source: ${this.#src}`, MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);
198
+ this.dispatchEvent(new Event("error"));
199
+ load.resolve();
200
+ this.#pauseEmbed();
201
+ return;
202
+ }
203
+ const target = this.#target;
204
+ const nextSrc = buildCloudflareIframeSrc(this.#src, this.#snapshotProps());
205
+ if (target && nextSrc && embedParamsOf(nextSrc) !== embedParamsOf(target.getAttribute("src") ?? "")) {
206
+ target.src = nextSrc;
207
+ return;
208
+ }
209
+ this.#player.src = parsed.id;
210
+ }
211
+ #beginLoad() {
212
+ this.#loadComplete.resolve();
213
+ this.#loadComplete = createPublicPromise();
214
+ return this.#loadComplete;
215
+ }
216
+ get #hasSource() {
217
+ return !!this.#src && !this.#srcUnsupported;
218
+ }
219
+ get paused() {
220
+ return this.#paused;
221
+ }
222
+ get ended() {
223
+ return this.#ended;
224
+ }
225
+ get seeking() {
226
+ return this.#seeking;
227
+ }
228
+ async play() {
229
+ await this.#loadComplete;
230
+ if (!this.#hasSource) return;
231
+ await this.#player?.play();
232
+ }
233
+ pause() {
234
+ this.#player?.pause();
235
+ }
236
+ get currentTime() {
237
+ return this.#currentTime;
238
+ }
239
+ set currentTime(value) {
240
+ if (this.#currentTime === value) return;
241
+ this.#currentTime = value;
242
+ this.#afterLoad((p) => {
243
+ p.currentTime = value;
244
+ });
245
+ }
246
+ get duration() {
247
+ return this.#duration;
248
+ }
249
+ get volume() {
250
+ return this.#volume;
251
+ }
252
+ set volume(value) {
253
+ if (this.#volume === value) return;
254
+ this.#volume = value;
255
+ this.#afterLoad((p) => {
256
+ p.volume = value;
257
+ });
258
+ }
259
+ get muted() {
260
+ return this.#muted;
261
+ }
262
+ set muted(value) {
263
+ if (this.#muted === value) return;
264
+ this.#muted = value;
265
+ this.#afterLoad((p) => {
266
+ p.muted = value;
267
+ });
268
+ }
269
+ get playbackRate() {
270
+ return this.#playbackRate;
271
+ }
272
+ set playbackRate(value) {
273
+ if (this.#playbackRate === value) return;
274
+ this.#playbackRate = value;
275
+ this.#afterLoad((p) => {
276
+ p.playbackRate = value;
277
+ });
278
+ }
279
+ get autoplay() {
280
+ return this.#autoplay;
281
+ }
282
+ set autoplay(value) {
283
+ this.#autoplay = value;
284
+ this.#afterLoad((p) => {
285
+ p.autoplay = value;
286
+ });
287
+ }
288
+ get defaultMuted() {
289
+ return this.#defaultMuted;
290
+ }
291
+ set defaultMuted(value) {
292
+ this.#defaultMuted = value;
293
+ if (!this.#loaded) this.#muted = value;
294
+ }
295
+ get loop() {
296
+ return this.#loop;
297
+ }
298
+ set loop(value) {
299
+ this.#loop = value;
300
+ this.#afterLoad((p) => {
301
+ p.loop = value;
302
+ });
303
+ }
304
+ get controls() {
305
+ return this.#controls;
306
+ }
307
+ set controls(value) {
308
+ this.#controls = value;
309
+ this.#afterLoad((p) => {
310
+ p.controls = value;
311
+ });
312
+ }
313
+ get playsInline() {
314
+ return this.#playsInline;
315
+ }
316
+ set playsInline(value) {
317
+ this.#playsInline = value;
318
+ }
319
+ get preload() {
320
+ return this.#preload;
321
+ }
322
+ set preload(value) {
323
+ this.#preload = value;
324
+ this.#afterLoad((p) => {
325
+ p.preload = value;
326
+ });
327
+ }
328
+ get poster() {
329
+ return this.#poster;
330
+ }
331
+ set poster(value) {
332
+ this.#poster = value;
333
+ this.#afterLoad((p) => {
334
+ p.poster = value;
335
+ });
336
+ }
337
+ /** Structured source: `src` plus embed parameters under `engine.cloudflare`. Replacing it re-derives `src`. */
338
+ get source() {
339
+ return this.#source;
340
+ }
341
+ set source(value) {
342
+ const source = value ?? null;
343
+ if (source === this.#source) return;
344
+ const src = source?.src ?? "";
345
+ const srcChanged = this.#src !== src;
346
+ const engineChanged = !deepEqual(this.#source?.engine?.cloudflare ?? null, source?.engine?.cloudflare ?? null);
347
+ this.#source = source;
348
+ this.#src = src;
349
+ if (srcChanged || engineChanged) this.load();
350
+ this.dispatchEvent(new Event("sourcechange"));
351
+ }
352
+ get buffered() {
353
+ return this.#progress > 0 ? createTimeRange(0, this.#progress) : EMPTY_TIME_RANGES;
354
+ }
355
+ get seekable() {
356
+ return this.#duration > 0 && Number.isFinite(this.#duration) ? createTimeRange(0, this.#duration) : EMPTY_TIME_RANGES;
357
+ }
358
+ get error() {
359
+ return this.#error;
360
+ }
361
+ /** Always empty: the SDK exposes no track API, and the embed owns the track picked by `defaultTextTrack`. */
362
+ get textTracks() {
363
+ this.#textTracksHost ??= globalThis.document?.createElement("video") ?? null;
364
+ return this.#textTracksHost?.textTracks ?? EMPTY_TEXT_TRACKS;
365
+ }
366
+ get videoWidth() {
367
+ return this.#videoWidth;
368
+ }
369
+ get videoHeight() {
370
+ return this.#videoHeight;
371
+ }
372
+ get isFullscreen() {
373
+ return this.#isFullscreen;
374
+ }
375
+ async requestFullscreen() {
376
+ if (!this.#target?.requestFullscreen) return;
377
+ await this.#target.requestFullscreen();
378
+ this.#isFullscreen = true;
379
+ }
380
+ async exitFullscreen() {
381
+ const doc = globalThis.document;
382
+ if (doc?.fullscreenElement && doc.fullscreenElement === this.#target) await doc.exitFullscreen();
383
+ this.#isFullscreen = false;
384
+ }
385
+ #createPlayer() {
386
+ const target = this.#target;
387
+ if (!target || this.#player || this.#creatingPlayer) return false;
388
+ let serverRendered = false;
389
+ if (!target.getAttribute("src")) {
390
+ const initialSrc = buildCloudflareIframeSrc(this.#src, this.#snapshotProps());
391
+ if (!initialSrc) {
392
+ this.#loadComplete.resolve();
393
+ return false;
394
+ }
395
+ target.src = initialSrc;
396
+ } else serverRendered = hasEmbedNavigated(target);
397
+ this.#creatingPlayer = true;
398
+ this.dispatchEvent(new Event("loadstart"));
399
+ this.#createPlayerApi(target, serverRendered);
400
+ return true;
401
+ }
402
+ async #createPlayerApi(target, serverRendered) {
403
+ const attachId = this.#attachId;
404
+ let api;
405
+ try {
406
+ api = await loadCloudflareStreamApi();
407
+ } catch {
408
+ if (this.#isStale(attachId)) return;
409
+ this.#creatingPlayer = false;
410
+ this.#error = new MediaError("Failed to load the Cloudflare Stream SDK", MediaError.MEDIA_ERR_NETWORK);
411
+ this.dispatchEvent(new Event("error"));
412
+ this.#loadComplete.resolve();
413
+ return;
414
+ }
415
+ if (this.#isStale(attachId) || this.#target !== target) return;
416
+ if (serverRendered) target.src = target.src;
417
+ const player = api(target);
418
+ this.#player = player;
419
+ this.#creatingPlayer = false;
420
+ this.#bindPlayerEvents(player, attachId);
421
+ if (this.#pendingLoad) {
422
+ this.#pendingLoad = false;
423
+ this.load();
424
+ }
425
+ }
426
+ #isStale(attachId) {
427
+ return attachId !== this.#attachId;
428
+ }
429
+ #pauseEmbed() {
430
+ tryCall(() => this.#player?.pause());
431
+ }
432
+ #afterLoad(fn) {
433
+ this.#loadComplete.then(() => {
434
+ const player = this.#player;
435
+ if (player) tryCall(() => fn(player));
436
+ }, () => {});
437
+ }
438
+ get #nextMuted() {
439
+ return this.#defaultMuted || this.#muted;
440
+ }
441
+ #snapshotProps() {
442
+ return {
443
+ autoplay: this.#autoplay,
444
+ defaultMuted: this.#nextMuted,
445
+ loop: this.#loop,
446
+ controls: this.#controls,
447
+ preload: this.#preload || cloudflareMediaDefaultProps.preload,
448
+ poster: this.#poster,
449
+ source: this.#source
450
+ };
451
+ }
452
+ #resetState() {
453
+ this.#currentTime = 0;
454
+ this.#duration = NaN;
455
+ this.#muted = this.#nextMuted;
456
+ this.#paused = !this.#autoplay;
457
+ this.#ended = false;
458
+ this.#playbackRate = 1;
459
+ this.#progress = 0;
460
+ this.#readyState = READY_STATE_HAVE_NOTHING;
461
+ this.#seeking = false;
462
+ this.#loaded = false;
463
+ this.#srcUnsupported = false;
464
+ this.#volume = 1;
465
+ this.#error = null;
466
+ this.#videoWidth = NaN;
467
+ this.#videoHeight = NaN;
468
+ this.#isFullscreen = false;
469
+ }
470
+ #onLoaded() {
471
+ if (this.#loaded) return;
472
+ this.#loaded = true;
473
+ this.#readyState = READY_STATE_HAVE_METADATA;
474
+ const player = this.#player;
475
+ if (player) {
476
+ this.#duration = toDuration(player.duration);
477
+ this.#muted = player.muted;
478
+ this.#volume = player.volume;
479
+ this.#playbackRate = player.playbackRate;
480
+ this.#videoWidth = player.videoWidth;
481
+ this.#videoHeight = player.videoHeight;
482
+ }
483
+ for (const type of [
484
+ "loadedmetadata",
485
+ "durationchange",
486
+ "volumechange",
487
+ "loadcomplete"
488
+ ]) this.dispatchEvent(new Event(type));
489
+ this.#loadComplete.resolve();
490
+ }
491
+ #onError() {
492
+ this.#error = new MediaError("Cloudflare Stream playback error", MediaError.MEDIA_ERR_CUSTOM, true);
493
+ this.dispatchEvent(new Event("error"));
494
+ this.#loadComplete.resolve();
495
+ }
496
+ #bindPlayerEvents(player, attachId) {
497
+ const listen = (type, handle) => {
498
+ const listener = () => {
499
+ if (this.#isStale(attachId) || !this.#hasSource) return;
500
+ handle();
501
+ };
502
+ player.addEventListener(type, listener);
503
+ this.#playerListeners.push([type, listener]);
504
+ };
505
+ const on = (type, update) => listen(type, () => {
506
+ update?.();
507
+ this.dispatchEvent(new Event(type));
508
+ });
509
+ listen("loadedmetadata", () => this.#onLoaded());
510
+ on("loadeddata", () => {
511
+ this.#readyState = READY_STATE_HAVE_CURRENT_DATA;
512
+ });
513
+ on("play", () => {
514
+ this.#paused = false;
515
+ this.#ended = false;
516
+ });
517
+ on("playing", () => {
518
+ this.#readyState = READY_STATE_HAVE_FUTURE_DATA;
519
+ this.#paused = false;
520
+ });
521
+ on("pause", () => {
522
+ this.#paused = true;
523
+ });
524
+ on("ended", () => {
525
+ this.#paused = true;
526
+ this.#ended = true;
527
+ });
528
+ on("timeupdate", () => {
529
+ this.#currentTime = player.currentTime;
530
+ });
531
+ on("durationchange", () => {
532
+ this.#duration = toDuration(player.duration);
533
+ });
534
+ on("volumechange", () => {
535
+ this.#volume = player.volume;
536
+ this.#muted = player.muted;
537
+ });
538
+ on("ratechange", () => {
539
+ this.#playbackRate = player.playbackRate;
540
+ });
541
+ on("progress", () => {
542
+ this.#progress = toBufferedEnd(player);
543
+ });
544
+ on("seeking", () => {
545
+ this.#seeking = true;
546
+ });
547
+ on("seeked", () => {
548
+ this.#seeking = false;
549
+ this.#currentTime = player.currentTime;
550
+ });
551
+ on("resize", () => {
552
+ this.#videoWidth = player.videoWidth;
553
+ this.#videoHeight = player.videoHeight;
554
+ });
555
+ for (const type of PASSTHROUGH_EVENTS) on(type);
556
+ listen("error", () => this.#onError());
557
+ }
558
+ #unbindPlayerEvents() {
559
+ for (const [type, listener] of this.#playerListeners) tryCall(() => this.#player?.removeEventListener(type, listener));
560
+ this.#playerListeners.length = 0;
561
+ }
562
+ };
563
+ const PASSTHROUGH_EVENTS = [
564
+ "waiting",
565
+ "stalled",
566
+ "suspend",
567
+ "abort",
568
+ "canplay",
569
+ "canplaythrough",
570
+ "encrypted",
571
+ "waitingforkey",
572
+ "stream-adstart",
573
+ "stream-adend",
574
+ "stream-adtimeout"
575
+ ];
576
+ /** The embed reports `0` until it knows the duration; `HTMLMediaElement` reports `NaN`. */
577
+ function toDuration(duration) {
578
+ return duration > 0 ? duration : NaN;
579
+ }
580
+ function toBufferedEnd(player) {
581
+ const { buffered } = player;
582
+ return buffered?.length ? buffered.end(buffered.length - 1) : 0;
583
+ }
584
+ function embedParamsOf(src) {
585
+ try {
586
+ const url = new URL(src);
587
+ return `${url.origin}${url.search}`;
588
+ } catch {
589
+ return "";
590
+ }
591
+ }
592
+ function hasEmbedNavigated(target) {
593
+ const frame = target.contentWindow;
594
+ if (!frame) return false;
595
+ try {
596
+ return frame.location.href !== "about:blank";
597
+ } catch {
598
+ return true;
599
+ }
600
+ }
601
+ const READY_STATE_HAVE_NOTHING = 0;
602
+ const READY_STATE_HAVE_METADATA = 1;
603
+ const READY_STATE_HAVE_CURRENT_DATA = 2;
604
+ const READY_STATE_HAVE_FUTURE_DATA = 3;
605
+
606
+ //#endregion
607
+ //#region src/media/cloudflare-video/media.ts
608
+ var CloudflareCustomMediaElement = class extends CustomMediaElement("iframe", CloudflareMedia) {
609
+ static {
610
+ this.getTemplateHTML = (attrs) => {
611
+ const initialSrc = buildCloudflareIframeSrc(attrs.src ?? "", templateAttrsToEmbedProps(attrs));
612
+ return `
613
+ <style>
614
+ :host {
615
+ display: inline-block;
616
+ min-width: 300px;
617
+ min-height: 150px;
618
+ position: relative;
619
+ }
620
+ iframe {
621
+ position: absolute;
622
+ inset: 0;
623
+ width: 100%;
624
+ height: 100%;
625
+ border: 0;
626
+ }
627
+ :host(:not([controls])) {
628
+ pointer-events: none;
629
+ }
630
+ </style>
631
+ <iframe
632
+ part="iframe"
633
+ ${initialSrc ? ` src="${escapeHtml(initialSrc)}"` : ""}
634
+ allow="accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture"
635
+ allowfullscreen
636
+ frameborder="0"
637
+ width="100%"
638
+ height="100%"
639
+ referrerpolicy="${escapeHtml(attrs.referrerpolicy ?? "")}"
640
+ ></iframe>
641
+ `;
642
+ };
643
+ }
644
+ };
645
+ function templateAttrsToEmbedProps(attrs) {
646
+ return {
647
+ autoplay: attrs.autoplay !== void 0,
648
+ defaultMuted: attrs.muted !== void 0,
649
+ loop: attrs.loop !== void 0,
650
+ controls: attrs.controls !== void 0,
651
+ preload: attrs.preload ?? "metadata",
652
+ poster: attrs.poster ?? ""
653
+ };
654
+ }
655
+ var CloudflareVideo = class extends MediaAttachMixin(CloudflareCustomMediaElement) {};
656
+
657
+ //#endregion
658
+ //#region src/define/media/cloudflare-video.ts
659
+ var CloudflareVideoElement = class extends CloudflareVideo {
660
+ static {
661
+ this.tagName = "cloudflare-video";
662
+ }
663
+ };
664
+ safeDefine(CloudflareVideoElement);
665
+
666
+ //#endregion
667
+ export { CloudflareVideoElement };
668
+ //# sourceMappingURL=cloudflare-video.dev.js.map