@videojs/html 10.0.0-beta.17 → 10.0.0-beta.21

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 (267) hide show
  1. package/cdn/{abort-DGNIECLn.js → abort-C9UiBdVU.js} +1 -1
  2. package/cdn/{abort-DGNIECLn.js.map → abort-C9UiBdVU.js.map} +1 -1
  3. package/cdn/{abort-BL-SGV3o.js → abort-DsTff8mS.js} +1 -1
  4. package/cdn/{abort-BL-SGV3o.js.map → abort-DsTff8mS.js.map} +1 -1
  5. package/cdn/audio-minimal-ui.dev.js +4 -4
  6. package/cdn/audio-minimal-ui.js +1 -1
  7. package/cdn/audio-minimal.dev.js +7 -7
  8. package/cdn/audio-minimal.js +1 -1
  9. package/cdn/audio-ui.dev.js +4 -4
  10. package/cdn/audio-ui.js +1 -1
  11. package/cdn/audio.dev.js +6 -6
  12. package/cdn/audio.js +1 -1
  13. package/cdn/background.dev.js +4 -12
  14. package/cdn/background.dev.js.map +1 -1
  15. package/cdn/background.js +1 -1
  16. package/cdn/background.js.map +1 -1
  17. package/cdn/{compounds-VFPcCeRV.js → compounds-CM_NP-ej.js} +7 -35
  18. package/cdn/compounds-CM_NP-ej.js.map +1 -0
  19. package/cdn/compounds-Vvz-YfXP.js +8 -0
  20. package/cdn/{compounds-Df_1JbZD.js.map → compounds-Vvz-YfXP.js.map} +1 -1
  21. package/cdn/{context-CvJ83xGk.js → context-0rI_P6jf.js} +1 -1
  22. package/cdn/{context-CvJ83xGk.js.map → context-0rI_P6jf.js.map} +1 -1
  23. package/cdn/{context-C-IpVHEt.js → context-CEFisYD0.js} +1 -1
  24. package/cdn/{context-C-IpVHEt.js.map → context-CEFisYD0.js.map} +1 -1
  25. package/cdn/{create-player-CyG77t-m.js → create-player-Bi6WUwDZ.js} +140 -99
  26. package/cdn/create-player-Bi6WUwDZ.js.map +1 -0
  27. package/cdn/create-player-CKuX8YI5.js +7 -0
  28. package/cdn/create-player-CKuX8YI5.js.map +1 -0
  29. package/cdn/{hls-BrzPpueW.js → hls-BotloEPN.js} +25 -22
  30. package/cdn/hls-BotloEPN.js.map +1 -0
  31. package/cdn/hls-CBpGTZXU.js +41 -0
  32. package/cdn/hls-CBpGTZXU.js.map +1 -0
  33. package/cdn/{hotkey-element-Dlta37Be.js → hotkey-element-317kwVH5.js} +5 -5
  34. package/cdn/{hotkey-element-Dlta37Be.js.map → hotkey-element-317kwVH5.js.map} +1 -1
  35. package/cdn/{hotkey-element-DR3ZAqKa.js → hotkey-element-DRGCbVj9.js} +2 -2
  36. package/cdn/{hotkey-element-DR3ZAqKa.js.map → hotkey-element-DRGCbVj9.js.map} +1 -1
  37. package/cdn/{listen-w-Aun0yN.js → listen-CJT7C4kM.js} +1 -1
  38. package/cdn/{listen-w-Aun0yN.js.map → listen-CJT7C4kM.js.map} +1 -1
  39. package/cdn/{listen-D7fcau5d.js → listen-DFX-0NbX.js} +1 -1
  40. package/cdn/{listen-D7fcau5d.js.map → listen-DFX-0NbX.js.map} +1 -1
  41. package/cdn/media/dash-video.dev.js +16 -22
  42. package/cdn/media/dash-video.dev.js.map +1 -1
  43. package/cdn/media/dash-video.js +3 -3
  44. package/cdn/media/dash-video.js.map +1 -1
  45. package/cdn/media/hls-video.dev.js +12 -12
  46. package/cdn/media/hls-video.dev.js.map +1 -1
  47. package/cdn/media/hls-video.js +1 -1
  48. package/cdn/media/hls-video.js.map +1 -1
  49. package/cdn/media/mux-audio.dev.js +13 -13
  50. package/cdn/media/mux-audio.dev.js.map +1 -1
  51. package/cdn/media/mux-audio.js +1 -1
  52. package/cdn/media/mux-audio.js.map +1 -1
  53. package/cdn/media/mux-video.dev.js +13 -13
  54. package/cdn/media/mux-video.dev.js.map +1 -1
  55. package/cdn/media/mux-video.js +1 -1
  56. package/cdn/media/mux-video.js.map +1 -1
  57. package/cdn/media/native-hls-video.dev.js +5 -14
  58. package/cdn/media/native-hls-video.dev.js.map +1 -1
  59. package/cdn/media/native-hls-video.js +1 -1
  60. package/cdn/media/native-hls-video.js.map +1 -1
  61. package/cdn/media/simple-hls-video.dev.js +83 -85
  62. package/cdn/media/simple-hls-video.dev.js.map +1 -1
  63. package/cdn/media/simple-hls-video.js +7 -7
  64. package/cdn/media/simple-hls-video.js.map +1 -1
  65. package/cdn/media-attach-mixin-C2wz0Qbd.js +2 -0
  66. package/cdn/media-attach-mixin-C2wz0Qbd.js.map +1 -0
  67. package/cdn/{media-attach-mixin-CMH1ziXP.js → media-attach-mixin-CYoNe7Sh.js} +26 -3
  68. package/cdn/media-attach-mixin-CYoNe7Sh.js.map +1 -0
  69. package/cdn/{minimal-D9Dw-L2P.js → minimal-BnDnlwbj.js} +1 -1
  70. package/cdn/{minimal-D9Dw-L2P.js.map → minimal-BnDnlwbj.js.map} +1 -1
  71. package/cdn/{minimal-Dc5nNl_-.js → minimal-CqBxBoLe.js} +1 -1
  72. package/cdn/{minimal-Dc5nNl_-.js.map → minimal-CqBxBoLe.js.map} +1 -1
  73. package/cdn/minimal-ui-C_G24FML.js +2 -0
  74. package/cdn/{minimal-ui-B3BBK5nX.js.map → minimal-ui-C_G24FML.js.map} +1 -1
  75. package/cdn/minimal-ui-CroDYUGf.js +2 -0
  76. package/cdn/{minimal-ui-DOePmQfq.js.map → minimal-ui-CroDYUGf.js.map} +1 -1
  77. package/cdn/{minimal-ui-Cnaig4X6.js → minimal-ui-DhxN21v5.js} +5 -5
  78. package/cdn/{minimal-ui-Cnaig4X6.js.map → minimal-ui-DhxN21v5.js.map} +1 -1
  79. package/cdn/{minimal-ui-CPRSYky_.js → minimal-ui-cy2oEbFm.js} +5 -5
  80. package/cdn/{minimal-ui-CPRSYky_.js.map → minimal-ui-cy2oEbFm.js.map} +1 -1
  81. package/cdn/{mux-DGgCyz_A.js → mux-B5K6kOzg.js} +115 -145
  82. package/cdn/mux-B5K6kOzg.js.map +1 -0
  83. package/cdn/mux-DJhfbcCw.js +25 -0
  84. package/cdn/mux-DJhfbcCw.js.map +1 -0
  85. package/cdn/{native-hls-BuCYu7Rd.js → native-hls-CU2F7L5C.js} +20 -22
  86. package/cdn/native-hls-CU2F7L5C.js.map +1 -0
  87. package/cdn/native-hls-DKcYYWRt.js +2 -0
  88. package/cdn/native-hls-DKcYYWRt.js.map +1 -0
  89. package/cdn/pick-CERGq1No.js +2 -0
  90. package/cdn/pick-CERGq1No.js.map +1 -0
  91. package/cdn/pick-D-wCJ3iA.js +23 -0
  92. package/cdn/pick-D-wCJ3iA.js.map +1 -0
  93. package/cdn/player-BK35-ndY.js +2 -0
  94. package/cdn/{player-Cu5_r0Gk.js.map → player-BK35-ndY.js.map} +1 -1
  95. package/cdn/{player-eEH-XjnF.js → player-C7ajkBi4.js} +2 -2
  96. package/cdn/{player-eEH-XjnF.js.map → player-C7ajkBi4.js.map} +1 -1
  97. package/cdn/{player-DIOgBqQf.js → player-CatrGW7l.js} +4 -4
  98. package/cdn/{player-DIOgBqQf.js.map → player-CatrGW7l.js.map} +1 -1
  99. package/cdn/{player-DxBoqZVw.js → player-xstFHOgW.js} +3 -3
  100. package/cdn/{player-DxBoqZVw.js.map → player-xstFHOgW.js.map} +1 -1
  101. package/cdn/{shadow-styles-62Yo__Ni.js → shadow-styles-BYZ6q3Q4.js} +1 -1
  102. package/cdn/{shadow-styles-62Yo__Ni.js.map → shadow-styles-BYZ6q3Q4.js.map} +1 -1
  103. package/cdn/{shadow-styles-I-_QR-PM.js → shadow-styles-DKXFMmyD.js} +1 -1
  104. package/cdn/{shadow-styles-I-_QR-PM.js.map → shadow-styles-DKXFMmyD.js.map} +1 -1
  105. package/cdn/{shallow-equal-Ca0qjpLJ.js → shallow-equal-Daj3-_LC.js} +1 -1
  106. package/cdn/{shallow-equal-Ca0qjpLJ.js.map → shallow-equal-Daj3-_LC.js.map} +1 -1
  107. package/cdn/{shallow-equal-1KBb-lrM.js → shallow-equal-xh6Wj-hj.js} +1 -1
  108. package/cdn/{shallow-equal-1KBb-lrM.js.map → shallow-equal-xh6Wj-hj.js.map} +1 -1
  109. package/cdn/{skin-element-u6pdmSSs.js → skin-element-BGP23sop.js} +2 -2
  110. package/cdn/{skin-element-u6pdmSSs.js.map → skin-element-BGP23sop.js.map} +1 -1
  111. package/cdn/{skin-element-BTPr5DoY.js → skin-element-CDUkmCtS.js} +3 -3
  112. package/cdn/{skin-element-BTPr5DoY.js.map → skin-element-CDUkmCtS.js.map} +1 -1
  113. package/cdn/{ui-34pkHFdT.js → ui-AFHQtrqa.js} +6 -6
  114. package/cdn/{ui-34pkHFdT.js.map → ui-AFHQtrqa.js.map} +1 -1
  115. package/cdn/ui-B7vt9mp-.js +2 -0
  116. package/cdn/{ui-DWoV_Da1.js.map → ui-B7vt9mp-.js.map} +1 -1
  117. package/cdn/{ui-X5WOdCCw.js → ui-Em9rF9Ah.js} +6 -6
  118. package/cdn/{ui-X5WOdCCw.js.map → ui-Em9rF9Ah.js.map} +1 -1
  119. package/cdn/ui-QHwo6iyo.js +2 -0
  120. package/cdn/{ui-DXtTKomo.js.map → ui-QHwo6iyo.js.map} +1 -1
  121. package/cdn/video-host-CPRJVRi3.js +47 -0
  122. package/cdn/video-host-CPRJVRi3.js.map +1 -0
  123. package/cdn/video-host-ycP7ckxU.js +410 -0
  124. package/cdn/video-host-ycP7ckxU.js.map +1 -0
  125. package/cdn/video-minimal-ui.dev.js +4 -4
  126. package/cdn/video-minimal-ui.js +1 -1
  127. package/cdn/video-minimal.dev.js +7 -7
  128. package/cdn/video-minimal.js +1 -1
  129. package/cdn/video-ui.dev.js +4 -4
  130. package/cdn/video-ui.js +1 -1
  131. package/cdn/video.dev.js +6 -6
  132. package/cdn/video.js +1 -1
  133. package/dist/default/index.js +1 -2
  134. package/dist/default/media/dash-video/index.js +3 -12
  135. package/dist/default/media/dash-video/index.js.map +1 -1
  136. package/dist/default/media/hls-video/index.js +10 -10
  137. package/dist/default/media/hls-video/index.js.map +1 -1
  138. package/dist/default/media/mux-audio/index.js +10 -10
  139. package/dist/default/media/mux-audio/index.js.map +1 -1
  140. package/dist/default/media/mux-video/index.js +10 -10
  141. package/dist/default/media/mux-video/index.js.map +1 -1
  142. package/dist/default/media/native-hls-video/index.js +3 -12
  143. package/dist/default/media/native-hls-video/index.js.map +1 -1
  144. package/dist/default/media/simple-hls-video/index.js +3 -9
  145. package/dist/default/media/simple-hls-video/index.js.map +1 -1
  146. package/dist/default/ui/alert-dialog/alert-dialog-element.js +1 -1
  147. package/dist/default/ui/buffering-indicator/buffering-indicator-element.js +1 -1
  148. package/dist/default/ui/captions-button/captions-button-element.js +1 -1
  149. package/dist/default/ui/controls/controls-element.js +1 -1
  150. package/dist/default/ui/error-dialog/error-dialog-element.js +1 -1
  151. package/dist/default/ui/fullscreen-button/fullscreen-button-element.js +1 -1
  152. package/dist/default/ui/mute-button/mute-button-element.js +1 -1
  153. package/dist/default/ui/pip-button/pip-button-element.js +1 -1
  154. package/dist/default/ui/play-button/play-button-element.js +1 -1
  155. package/dist/default/ui/playback-rate-button/playback-rate-button-element.js +1 -1
  156. package/dist/default/ui/popover/popover-element.js +1 -1
  157. package/dist/default/ui/poster/poster-element.js +1 -1
  158. package/dist/default/ui/seek-button/seek-button-element.js +1 -1
  159. package/dist/default/ui/slider/slider-element.js +1 -1
  160. package/dist/default/ui/thumbnail/thumbnail-element.js +1 -1
  161. package/dist/default/ui/time/time-element.js +1 -1
  162. package/dist/default/ui/time-slider/time-slider-element.js +1 -1
  163. package/dist/default/ui/tooltip/tooltip-element.js +1 -1
  164. package/dist/default/ui/tooltip/tooltip-group-element.js +1 -1
  165. package/dist/default/ui/volume-slider/volume-slider-element.js +1 -1
  166. package/dist/dev/index.d.ts +1 -2
  167. package/dist/dev/index.js +1 -2
  168. package/dist/dev/media/dash-video/index.d.ts +12 -6
  169. package/dist/dev/media/dash-video/index.d.ts.map +1 -1
  170. package/dist/dev/media/dash-video/index.js +3 -12
  171. package/dist/dev/media/dash-video/index.js.map +1 -1
  172. package/dist/dev/media/hls-video/index.d.ts +12 -4
  173. package/dist/dev/media/hls-video/index.d.ts.map +1 -1
  174. package/dist/dev/media/hls-video/index.js +10 -10
  175. package/dist/dev/media/hls-video/index.js.map +1 -1
  176. package/dist/dev/media/mux-audio/index.d.ts +12 -4
  177. package/dist/dev/media/mux-audio/index.d.ts.map +1 -1
  178. package/dist/dev/media/mux-audio/index.js +10 -10
  179. package/dist/dev/media/mux-audio/index.js.map +1 -1
  180. package/dist/dev/media/mux-video/index.d.ts +12 -4
  181. package/dist/dev/media/mux-video/index.d.ts.map +1 -1
  182. package/dist/dev/media/mux-video/index.js +10 -10
  183. package/dist/dev/media/mux-video/index.js.map +1 -1
  184. package/dist/dev/media/native-hls-video/index.d.ts +12 -6
  185. package/dist/dev/media/native-hls-video/index.d.ts.map +1 -1
  186. package/dist/dev/media/native-hls-video/index.js +3 -12
  187. package/dist/dev/media/native-hls-video/index.js.map +1 -1
  188. package/dist/dev/media/simple-hls-video/index.d.ts +12 -5
  189. package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -1
  190. package/dist/dev/media/simple-hls-video/index.js +3 -9
  191. package/dist/dev/media/simple-hls-video/index.js.map +1 -1
  192. package/dist/dev/ui/alert-dialog/alert-dialog-description-element.d.ts +1 -1
  193. package/dist/dev/ui/alert-dialog/alert-dialog-element.js +1 -1
  194. package/dist/dev/ui/alert-dialog/alert-dialog-title-element.d.ts +1 -1
  195. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js +1 -1
  196. package/dist/dev/ui/captions-button/captions-button-element.d.ts +1 -1
  197. package/dist/dev/ui/captions-button/captions-button-element.js +1 -1
  198. package/dist/dev/ui/context-part-element.d.ts +1 -1
  199. package/dist/dev/ui/controls/controls-element.js +1 -1
  200. package/dist/dev/ui/controls/controls-group-element.d.ts +1 -1
  201. package/dist/dev/ui/error-dialog/error-dialog-element.js +1 -1
  202. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts +1 -1
  203. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js +1 -1
  204. package/dist/dev/ui/media-button-element.d.ts +1 -1
  205. package/dist/dev/ui/media-ui-element.d.ts +1 -1
  206. package/dist/dev/ui/mute-button/mute-button-element.d.ts +1 -1
  207. package/dist/dev/ui/mute-button/mute-button-element.js +1 -1
  208. package/dist/dev/ui/pip-button/pip-button-element.d.ts +1 -1
  209. package/dist/dev/ui/pip-button/pip-button-element.js +1 -1
  210. package/dist/dev/ui/play-button/play-button-element.d.ts +1 -1
  211. package/dist/dev/ui/play-button/play-button-element.js +1 -1
  212. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts +1 -1
  213. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js +1 -1
  214. package/dist/dev/ui/popover/popover-element.d.ts +1 -1
  215. package/dist/dev/ui/popover/popover-element.js +1 -1
  216. package/dist/dev/ui/poster/poster-element.d.ts +1 -1
  217. package/dist/dev/ui/poster/poster-element.js +1 -1
  218. package/dist/dev/ui/seek-button/seek-button-element.d.ts +1 -1
  219. package/dist/dev/ui/seek-button/seek-button-element.js +1 -1
  220. package/dist/dev/ui/slider/context.d.ts +1 -1
  221. package/dist/dev/ui/slider/slider-buffer-element.d.ts +1 -1
  222. package/dist/dev/ui/slider/slider-element.d.ts +1 -1
  223. package/dist/dev/ui/slider/slider-element.js +1 -1
  224. package/dist/dev/ui/slider/slider-fill-element.d.ts +1 -1
  225. package/dist/dev/ui/slider/slider-track-element.d.ts +1 -1
  226. package/dist/dev/ui/thumbnail/thumbnail-element.d.ts +1 -1
  227. package/dist/dev/ui/thumbnail/thumbnail-element.js +1 -1
  228. package/dist/dev/ui/time/time-element.d.ts +1 -1
  229. package/dist/dev/ui/time/time-element.js +1 -1
  230. package/dist/dev/ui/time-slider/time-slider-element.d.ts +1 -1
  231. package/dist/dev/ui/time-slider/time-slider-element.js +1 -1
  232. package/dist/dev/ui/tooltip/tooltip-element.d.ts +1 -1
  233. package/dist/dev/ui/tooltip/tooltip-element.js +1 -1
  234. package/dist/dev/ui/tooltip/tooltip-group-element.js +1 -1
  235. package/dist/dev/ui/volume-slider/volume-slider-element.d.ts +1 -1
  236. package/dist/dev/ui/volume-slider/volume-slider-element.js +1 -1
  237. package/package.json +8 -8
  238. package/cdn/compounds-Df_1JbZD.js +0 -8
  239. package/cdn/compounds-VFPcCeRV.js.map +0 -1
  240. package/cdn/create-player-CyG77t-m.js.map +0 -1
  241. package/cdn/create-player-Gom2ZZe3.js +0 -7
  242. package/cdn/create-player-Gom2ZZe3.js.map +0 -1
  243. package/cdn/hls-BAbdl84H.js +0 -41
  244. package/cdn/hls-BAbdl84H.js.map +0 -1
  245. package/cdn/hls-BrzPpueW.js.map +0 -1
  246. package/cdn/media-attach-mixin-CMH1ziXP.js.map +0 -1
  247. package/cdn/media-attach-mixin-DUzmXEJ3.js +0 -2
  248. package/cdn/media-attach-mixin-DUzmXEJ3.js.map +0 -1
  249. package/cdn/media-props-mixin-hheRmkup.js +0 -432
  250. package/cdn/media-props-mixin-hheRmkup.js.map +0 -1
  251. package/cdn/media-props-mixin-yRWj8yXF.js +0 -47
  252. package/cdn/media-props-mixin-yRWj8yXF.js.map +0 -1
  253. package/cdn/minimal-ui-B3BBK5nX.js +0 -2
  254. package/cdn/minimal-ui-DOePmQfq.js +0 -2
  255. package/cdn/mux-DGgCyz_A.js.map +0 -1
  256. package/cdn/mux-fYfPUpq3.js +0 -25
  257. package/cdn/mux-fYfPUpq3.js.map +0 -1
  258. package/cdn/native-hls-BuCYu7Rd.js.map +0 -1
  259. package/cdn/native-hls-DnqJ-0zL.js +0 -2
  260. package/cdn/native-hls-DnqJ-0zL.js.map +0 -1
  261. package/cdn/player-Cu5_r0Gk.js +0 -2
  262. package/cdn/ui-DWoV_Da1.js +0 -2
  263. package/cdn/ui-DXtTKomo.js +0 -2
  264. package/dist/default/utils/media-props-mixin.js +0 -44
  265. package/dist/default/utils/media-props-mixin.js.map +0 -1
  266. package/dist/dev/utils/media-props-mixin.js +0 -44
  267. package/dist/dev/utils/media-props-mixin.js.map +0 -1
@@ -104,4 +104,4 @@ const containerContext = createContext(CONTAINER_CONTEXT_KEY);
104
104
 
105
105
  //#endregion
106
106
  export { ContextRequestEvent as a, createContext as i, mediaContext as n, safeDefine as o, playerContext as r, containerContext as t };
107
- //# sourceMappingURL=context-CvJ83xGk.js.map
107
+ //# sourceMappingURL=context-0rI_P6jf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-CvJ83xGk.js","names":[],"sources":["../src/define/safe-define.ts","../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/development/lib/context-request-event.js","../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/development/lib/create-context.js","../src/player/context.ts"],"sourcesContent":["type DefinableElement = CustomElementConstructor & { tagName: string };\n\n/** Define a custom element only if not already registered. */\nexport function safeDefine(element: DefinableElement): void {\n const registry = globalThis.customElements;\n if (!registry || registry.get(element.tagName)) return;\n\n registry.define(element.tagName, element);\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * An event fired by a context requester to signal it desires a specified context with the given key.\n *\n * A provider should inspect the `context` property of the event to determine if it has a value that can\n * satisfy the request, calling the `callback` with the requested value if so.\n *\n * If the requested context event contains a truthy `subscribe` value, then a provider can call the callback\n * multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe`\n * method to the callback which consumers can invoke to indicate they no longer wish to receive these updates.\n *\n * If no `subscribe` value is present in the event, then the provider can assume that this is a 'one time'\n * request for the context and can therefore not track the consumer.\n */\nexport class ContextRequestEvent extends Event {\n /**\n *\n * @param context the context key to request\n * @param contextTarget the original context target of the requester\n * @param callback the callback that should be invoked when the context with the specified key is available\n * @param subscribe when, true indicates we want to subscribe to future updates\n */\n constructor(context, contextTarget, callback, subscribe) {\n super('context-request', { bubbles: true, composed: true });\n this.context = context;\n this.contextTarget = contextTarget;\n this.callback = callback;\n this.subscribe = subscribe ?? false;\n }\n}\n//# sourceMappingURL=context-request-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Creates a typed Context.\n *\n * Contexts are compared with strict equality.\n *\n * If you want two separate `createContext()` calls to referer to the same\n * context, then use a key that will by equal under strict equality like a\n * string for `Symbol.for()`:\n *\n * ```ts\n * // true\n * createContext('my-context') === createContext('my-context')\n * // true\n * createContext(Symbol.for('my-context')) === createContext(Symbol.for('my-context'))\n * ```\n *\n * If you want a context to be unique so that it's guaranteed to not collide\n * with other contexts, use a key that's unique under strict equality, like\n * a `Symbol()` or object.:\n *\n * ```\n * // false\n * createContext({}) === createContext({})\n * // false\n * createContext(Symbol('my-context')) === createContext(Symbol('my-context'))\n * ```\n *\n * @param key a context key value\n * @template ValueType the type of value that can be provided by this context.\n * @returns the context key value cast to `Context<K, ValueType>`\n */\nexport function createContext(key) {\n return key;\n}\n//# sourceMappingURL=create-context.js.map","import type { AnyPlayerStore, Media, MediaContainer, PlayerStore } from '@videojs/core/dom';\nimport type { ReactiveControllerHost } from '@videojs/element';\nimport { type Context, type ContextConsumer, createContext } from '@videojs/element/context';\n\n// ----------------------------------------\n// Player Context\n// ----------------------------------------\n\nexport const PLAYER_CONTEXT_KEY = Symbol.for('@videojs/player');\n\nexport type PlayerContextValue<Store extends PlayerStore = AnyPlayerStore> = Store;\n\nexport type PlayerContext<Store extends PlayerStore = AnyPlayerStore> = Context<\n typeof PLAYER_CONTEXT_KEY,\n PlayerContextValue<Store>\n>;\n\n/**\n * The default player context instance for consuming the player store in controllers.\n *\n * @public\n */\nexport const playerContext = createContext<PlayerContextValue, typeof PLAYER_CONTEXT_KEY>(PLAYER_CONTEXT_KEY);\n\n// ----------------------------------------\n// Media Context\n// ----------------------------------------\n\nexport const MEDIA_CONTEXT_KEY = Symbol.for('@videojs/media');\n\nexport interface MediaContextValue {\n media: Media | null;\n setMedia: (media: Media | null) => void;\n}\n\nexport type MediaContext = Context<typeof MEDIA_CONTEXT_KEY, MediaContextValue>;\n\nexport const mediaContext = createContext<MediaContextValue, typeof MEDIA_CONTEXT_KEY>(MEDIA_CONTEXT_KEY);\n\n// ----------------------------------------\n// Container Context\n// ----------------------------------------\n\nexport const CONTAINER_CONTEXT_KEY = Symbol.for('@videojs/container');\n\nexport interface ContainerContextValue {\n container: MediaContainer | null;\n setContainer: (container: MediaContainer | null) => void;\n}\n\nexport type ContainerContext = Context<typeof CONTAINER_CONTEXT_KEY, ContainerContextValue>;\n\nexport type ContainerContextConsumer = ContextConsumer<ContainerContext, ReactiveControllerHost & HTMLElement>;\n\nexport const containerContext = createContext<ContainerContextValue, typeof CONTAINER_CONTEXT_KEY>(\n CONTAINER_CONTEXT_KEY\n);\n"],"x_google_ignoreList":[1,2],"mappings":";;AAGA,SAAgB,WAAW,SAAiC;CAC1D,MAAM,WAAW,WAAW;AAC5B,KAAI,CAAC,YAAY,SAAS,IAAI,QAAQ,QAAQ,CAAE;AAEhD,UAAS,OAAO,QAAQ,SAAS,QAAQ;;;;;;;;;;;;;;;;;;;;;;;ACW3C,IAAa,sBAAb,cAAyC,MAAM;;;;;;;;CAQ3C,YAAY,SAAS,eAAe,UAAU,WAAW;AACrD,QAAM,mBAAmB;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC;AAC3D,OAAK,UAAU;AACf,OAAK,gBAAgB;AACrB,OAAK,WAAW;AAChB,OAAK,YAAY,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACKtC,SAAgB,cAAc,KAAK;AAC/B,QAAO;;;;;AC7BX,MAAa,qBAAqB,OAAO,IAAI,kBAAkB;;;;;;AAc/D,MAAa,gBAAgB,cAA6D,mBAAmB;AAM7G,MAAa,oBAAoB,OAAO,IAAI,iBAAiB;AAS7D,MAAa,eAAe,cAA2D,kBAAkB;AAMzG,MAAa,wBAAwB,OAAO,IAAI,qBAAqB;AAWrE,MAAa,mBAAmB,cAC9B,sBACD"}
1
+ {"version":3,"file":"context-0rI_P6jf.js","names":[],"sources":["../src/define/safe-define.ts","../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/development/lib/context-request-event.js","../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/development/lib/create-context.js","../src/player/context.ts"],"sourcesContent":["type DefinableElement = CustomElementConstructor & { tagName: string };\n\n/** Define a custom element only if not already registered. */\nexport function safeDefine(element: DefinableElement): void {\n const registry = globalThis.customElements;\n if (!registry || registry.get(element.tagName)) return;\n\n registry.define(element.tagName, element);\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * An event fired by a context requester to signal it desires a specified context with the given key.\n *\n * A provider should inspect the `context` property of the event to determine if it has a value that can\n * satisfy the request, calling the `callback` with the requested value if so.\n *\n * If the requested context event contains a truthy `subscribe` value, then a provider can call the callback\n * multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe`\n * method to the callback which consumers can invoke to indicate they no longer wish to receive these updates.\n *\n * If no `subscribe` value is present in the event, then the provider can assume that this is a 'one time'\n * request for the context and can therefore not track the consumer.\n */\nexport class ContextRequestEvent extends Event {\n /**\n *\n * @param context the context key to request\n * @param contextTarget the original context target of the requester\n * @param callback the callback that should be invoked when the context with the specified key is available\n * @param subscribe when, true indicates we want to subscribe to future updates\n */\n constructor(context, contextTarget, callback, subscribe) {\n super('context-request', { bubbles: true, composed: true });\n this.context = context;\n this.contextTarget = contextTarget;\n this.callback = callback;\n this.subscribe = subscribe ?? false;\n }\n}\n//# sourceMappingURL=context-request-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Creates a typed Context.\n *\n * Contexts are compared with strict equality.\n *\n * If you want two separate `createContext()` calls to referer to the same\n * context, then use a key that will by equal under strict equality like a\n * string for `Symbol.for()`:\n *\n * ```ts\n * // true\n * createContext('my-context') === createContext('my-context')\n * // true\n * createContext(Symbol.for('my-context')) === createContext(Symbol.for('my-context'))\n * ```\n *\n * If you want a context to be unique so that it's guaranteed to not collide\n * with other contexts, use a key that's unique under strict equality, like\n * a `Symbol()` or object.:\n *\n * ```\n * // false\n * createContext({}) === createContext({})\n * // false\n * createContext(Symbol('my-context')) === createContext(Symbol('my-context'))\n * ```\n *\n * @param key a context key value\n * @template ValueType the type of value that can be provided by this context.\n * @returns the context key value cast to `Context<K, ValueType>`\n */\nexport function createContext(key) {\n return key;\n}\n//# sourceMappingURL=create-context.js.map","import type { AnyPlayerStore, Media, MediaContainer, PlayerStore } from '@videojs/core/dom';\nimport type { ReactiveControllerHost } from '@videojs/element';\nimport { type Context, type ContextConsumer, createContext } from '@videojs/element/context';\n\n// ----------------------------------------\n// Player Context\n// ----------------------------------------\n\nexport const PLAYER_CONTEXT_KEY = Symbol.for('@videojs/player');\n\nexport type PlayerContextValue<Store extends PlayerStore = AnyPlayerStore> = Store;\n\nexport type PlayerContext<Store extends PlayerStore = AnyPlayerStore> = Context<\n typeof PLAYER_CONTEXT_KEY,\n PlayerContextValue<Store>\n>;\n\n/**\n * The default player context instance for consuming the player store in controllers.\n *\n * @public\n */\nexport const playerContext = createContext<PlayerContextValue, typeof PLAYER_CONTEXT_KEY>(PLAYER_CONTEXT_KEY);\n\n// ----------------------------------------\n// Media Context\n// ----------------------------------------\n\nexport const MEDIA_CONTEXT_KEY = Symbol.for('@videojs/media');\n\nexport interface MediaContextValue {\n media: Media | null;\n setMedia: (media: Media | null) => void;\n}\n\nexport type MediaContext = Context<typeof MEDIA_CONTEXT_KEY, MediaContextValue>;\n\nexport const mediaContext = createContext<MediaContextValue, typeof MEDIA_CONTEXT_KEY>(MEDIA_CONTEXT_KEY);\n\n// ----------------------------------------\n// Container Context\n// ----------------------------------------\n\nexport const CONTAINER_CONTEXT_KEY = Symbol.for('@videojs/container');\n\nexport interface ContainerContextValue {\n container: MediaContainer | null;\n setContainer: (container: MediaContainer | null) => void;\n}\n\nexport type ContainerContext = Context<typeof CONTAINER_CONTEXT_KEY, ContainerContextValue>;\n\nexport type ContainerContextConsumer = ContextConsumer<ContainerContext, ReactiveControllerHost & HTMLElement>;\n\nexport const containerContext = createContext<ContainerContextValue, typeof CONTAINER_CONTEXT_KEY>(\n CONTAINER_CONTEXT_KEY\n);\n"],"x_google_ignoreList":[1,2],"mappings":";;AAGA,SAAgB,WAAW,SAAiC;CAC1D,MAAM,WAAW,WAAW;AAC5B,KAAI,CAAC,YAAY,SAAS,IAAI,QAAQ,QAAQ,CAAE;AAEhD,UAAS,OAAO,QAAQ,SAAS,QAAQ;;;;;;;;;;;;;;;;;;;;;;;ACW3C,IAAa,sBAAb,cAAyC,MAAM;;;;;;;;CAQ3C,YAAY,SAAS,eAAe,UAAU,WAAW;AACrD,QAAM,mBAAmB;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC;AAC3D,OAAK,UAAU;AACf,OAAK,gBAAgB;AACrB,OAAK,WAAW;AAChB,OAAK,YAAY,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACKtC,SAAgB,cAAc,KAAK;AAC/B,QAAO;;;;;AC7BX,MAAa,qBAAqB,OAAO,IAAI,kBAAkB;;;;;;AAc/D,MAAa,gBAAgB,cAA6D,mBAAmB;AAM7G,MAAa,oBAAoB,OAAO,IAAI,iBAAiB;AAS7D,MAAa,eAAe,cAA2D,kBAAkB;AAMzG,MAAa,wBAAwB,OAAO,IAAI,qBAAqB;AAWrE,MAAa,mBAAmB,cAC9B,sBACD"}
@@ -11,4 +11,4 @@ var t=class extends Event{constructor(e,t,n,r){super(`context-request`,{bubbles:
11
11
  * SPDX-License-Identifier: BSD-3-Clause
12
12
  */
13
13
  function n(e){return e}const r=n(Symbol.for(`@videojs/player`)),i=n(Symbol.for(`@videojs/media`)),a=n(Symbol.for(`@videojs/container`));export{t as a,n as i,i as n,e as o,r,a as t};
14
- //# sourceMappingURL=context-C-IpVHEt.js.map
14
+ //# sourceMappingURL=context-CEFisYD0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-C-IpVHEt.js","names":["createContext"],"sources":["../src/define/safe-define.ts","../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/lib/context-request-event.js","../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/lib/create-context.js","../src/player/context.ts"],"sourcesContent":["type DefinableElement = CustomElementConstructor & { tagName: string };\n\n/** Define a custom element only if not already registered. */\nexport function safeDefine(element: DefinableElement): void {\n const registry = globalThis.customElements;\n if (!registry || registry.get(element.tagName)) return;\n\n registry.define(element.tagName, element);\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass s extends Event{constructor(s,t,e,o){super(\"context-request\",{bubbles:!0,composed:!0}),this.context=s,this.contextTarget=t,this.callback=e,this.subscribe=o??!1}}export{s as ContextRequestEvent};\n//# sourceMappingURL=context-request-event.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction n(n){return n}export{n as createContext};\n//# sourceMappingURL=create-context.js.map\n","import type { AnyPlayerStore, Media, MediaContainer, PlayerStore } from '@videojs/core/dom';\nimport type { ReactiveControllerHost } from '@videojs/element';\nimport { type Context, type ContextConsumer, createContext } from '@videojs/element/context';\n\n// ----------------------------------------\n// Player Context\n// ----------------------------------------\n\nexport const PLAYER_CONTEXT_KEY = Symbol.for('@videojs/player');\n\nexport type PlayerContextValue<Store extends PlayerStore = AnyPlayerStore> = Store;\n\nexport type PlayerContext<Store extends PlayerStore = AnyPlayerStore> = Context<\n typeof PLAYER_CONTEXT_KEY,\n PlayerContextValue<Store>\n>;\n\n/**\n * The default player context instance for consuming the player store in controllers.\n *\n * @public\n */\nexport const playerContext = createContext<PlayerContextValue, typeof PLAYER_CONTEXT_KEY>(PLAYER_CONTEXT_KEY);\n\n// ----------------------------------------\n// Media Context\n// ----------------------------------------\n\nexport const MEDIA_CONTEXT_KEY = Symbol.for('@videojs/media');\n\nexport interface MediaContextValue {\n media: Media | null;\n setMedia: (media: Media | null) => void;\n}\n\nexport type MediaContext = Context<typeof MEDIA_CONTEXT_KEY, MediaContextValue>;\n\nexport const mediaContext = createContext<MediaContextValue, typeof MEDIA_CONTEXT_KEY>(MEDIA_CONTEXT_KEY);\n\n// ----------------------------------------\n// Container Context\n// ----------------------------------------\n\nexport const CONTAINER_CONTEXT_KEY = Symbol.for('@videojs/container');\n\nexport interface ContainerContextValue {\n container: MediaContainer | null;\n setContainer: (container: MediaContainer | null) => void;\n}\n\nexport type ContainerContext = Context<typeof CONTAINER_CONTEXT_KEY, ContainerContextValue>;\n\nexport type ContainerContextConsumer = ContextConsumer<ContainerContext, ReactiveControllerHost & HTMLElement>;\n\nexport const containerContext = createContext<ContainerContextValue, typeof CONTAINER_CONTEXT_KEY>(\n CONTAINER_CONTEXT_KEY\n);\n"],"x_google_ignoreList":[1,2],"mappings":"AAGA,SAAgB,EAAW,EAAiC,CAC1D,IAAM,EAAW,WAAW,eACxB,CAAC,GAAY,EAAS,IAAI,EAAQ,QAAQ,EAE9C,EAAS,OAAO,EAAQ,QAAS,EAAQ;;;;;;ACF3C,IAAM,EAAN,cAAgB,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,kBAAkB,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,GAAG,CAAC;;;;;;ACApK,SAAS,EAAE,EAAE,CAAC,OAAO,ECiBrB,MAAa,EAAgBA,EAdK,OAAO,IAAI,kBAAkB,CAc8C,CAehG,EAAeA,EATK,OAAO,IAAI,iBAAiB,CAS4C,CAiB5F,EAAmBA,EAXK,OAAO,IAAI,qBAAqB,CAapE"}
1
+ {"version":3,"file":"context-CEFisYD0.js","names":["createContext"],"sources":["../src/define/safe-define.ts","../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/lib/context-request-event.js","../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/lib/create-context.js","../src/player/context.ts"],"sourcesContent":["type DefinableElement = CustomElementConstructor & { tagName: string };\n\n/** Define a custom element only if not already registered. */\nexport function safeDefine(element: DefinableElement): void {\n const registry = globalThis.customElements;\n if (!registry || registry.get(element.tagName)) return;\n\n registry.define(element.tagName, element);\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass s extends Event{constructor(s,t,e,o){super(\"context-request\",{bubbles:!0,composed:!0}),this.context=s,this.contextTarget=t,this.callback=e,this.subscribe=o??!1}}export{s as ContextRequestEvent};\n//# sourceMappingURL=context-request-event.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction n(n){return n}export{n as createContext};\n//# sourceMappingURL=create-context.js.map\n","import type { AnyPlayerStore, Media, MediaContainer, PlayerStore } from '@videojs/core/dom';\nimport type { ReactiveControllerHost } from '@videojs/element';\nimport { type Context, type ContextConsumer, createContext } from '@videojs/element/context';\n\n// ----------------------------------------\n// Player Context\n// ----------------------------------------\n\nexport const PLAYER_CONTEXT_KEY = Symbol.for('@videojs/player');\n\nexport type PlayerContextValue<Store extends PlayerStore = AnyPlayerStore> = Store;\n\nexport type PlayerContext<Store extends PlayerStore = AnyPlayerStore> = Context<\n typeof PLAYER_CONTEXT_KEY,\n PlayerContextValue<Store>\n>;\n\n/**\n * The default player context instance for consuming the player store in controllers.\n *\n * @public\n */\nexport const playerContext = createContext<PlayerContextValue, typeof PLAYER_CONTEXT_KEY>(PLAYER_CONTEXT_KEY);\n\n// ----------------------------------------\n// Media Context\n// ----------------------------------------\n\nexport const MEDIA_CONTEXT_KEY = Symbol.for('@videojs/media');\n\nexport interface MediaContextValue {\n media: Media | null;\n setMedia: (media: Media | null) => void;\n}\n\nexport type MediaContext = Context<typeof MEDIA_CONTEXT_KEY, MediaContextValue>;\n\nexport const mediaContext = createContext<MediaContextValue, typeof MEDIA_CONTEXT_KEY>(MEDIA_CONTEXT_KEY);\n\n// ----------------------------------------\n// Container Context\n// ----------------------------------------\n\nexport const CONTAINER_CONTEXT_KEY = Symbol.for('@videojs/container');\n\nexport interface ContainerContextValue {\n container: MediaContainer | null;\n setContainer: (container: MediaContainer | null) => void;\n}\n\nexport type ContainerContext = Context<typeof CONTAINER_CONTEXT_KEY, ContainerContextValue>;\n\nexport type ContainerContextConsumer = ContextConsumer<ContainerContext, ReactiveControllerHost & HTMLElement>;\n\nexport const containerContext = createContext<ContainerContextValue, typeof CONTAINER_CONTEXT_KEY>(\n CONTAINER_CONTEXT_KEY\n);\n"],"x_google_ignoreList":[1,2],"mappings":"AAGA,SAAgB,EAAW,EAAiC,CAC1D,IAAM,EAAW,WAAW,eACxB,CAAC,GAAY,EAAS,IAAI,EAAQ,QAAQ,EAE9C,EAAS,OAAO,EAAQ,QAAS,EAAQ;;;;;;ACF3C,IAAM,EAAN,cAAgB,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,kBAAkB,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,GAAG,CAAC;;;;;;ACApK,SAAS,EAAE,EAAE,CAAC,OAAO,ECiBrB,MAAa,EAAgBA,EAdK,OAAO,IAAI,kBAAkB,CAc8C,CAehG,EAAeA,EATK,OAAO,IAAI,iBAAiB,CAS4C,CAiB5F,EAAmBA,EAXK,OAAO,IAAI,qBAAqB,CAapE"}
@@ -1,7 +1,7 @@
1
- import { t as listen } from "./listen-w-Aun0yN.js";
2
- import { a as ContextRequestEvent, n as mediaContext, r as playerContext, t as containerContext } from "./context-CvJ83xGk.js";
3
- import { t as anyAbortSignal } from "./abort-BL-SGV3o.js";
4
- import { t as shallowEqual } from "./shallow-equal-Ca0qjpLJ.js";
1
+ import { t as listen } from "./listen-CJT7C4kM.js";
2
+ import { a as ContextRequestEvent, n as mediaContext, r as playerContext, t as containerContext } from "./context-0rI_P6jf.js";
3
+ import { t as anyAbortSignal } from "./abort-DsTff8mS.js";
4
+ import { t as shallowEqual } from "./shallow-equal-Daj3-_LC.js";
5
5
 
6
6
  //#region ../utils/dist/dom/event.js
7
7
  /** Resolve the deepest event target, preferring composedPath for shadow DOM. */
@@ -30,49 +30,64 @@ function onEvent(target, type, options) {
30
30
  }
31
31
 
32
32
  //#endregion
33
- //#region ../utils/dist/dom/predicates.js
34
- const EDITABLE_INPUT_TYPES = new Set([
35
- "text",
36
- "search",
37
- "url",
38
- "tel",
39
- "email",
40
- "password",
41
- "number"
42
- ]);
33
+ //#region ../utils/dist/dom/interactive.js
34
+ const INTERACTIVE_SELECTOR = "button,input,select,textarea,a[href],[role=\"slider\"],[role=\"button\"]";
35
+ const EDITABLE_SELECTOR = [
36
+ "textarea",
37
+ "select",
38
+ "input:not([type])",
39
+ ...[
40
+ "text",
41
+ "search",
42
+ "url",
43
+ "tel",
44
+ "email",
45
+ "password",
46
+ "number"
47
+ ].map((type) => `input[type="${type}"]`),
48
+ "[contenteditable]:not([contenteditable=\"false\"])"
49
+ ].join(",");
43
50
  function isEditableElement(el) {
44
- if (el instanceof HTMLTextAreaElement) return true;
45
- if (el instanceof HTMLSelectElement) return true;
46
- if (el instanceof HTMLInputElement) return EDITABLE_INPUT_TYPES.has(el.type.toLowerCase());
47
- if (!(el instanceof HTMLElement)) return false;
48
- const editable = el.getAttribute("contenteditable");
49
- return editable !== null && editable !== "false";
51
+ return el.matches(EDITABLE_SELECTOR);
50
52
  }
51
53
  /** Whether the keyboard event target is an editable element (input, textarea, etc). */
52
54
  function isEditableTarget(event) {
53
55
  const target = resolveEventTarget(event);
54
56
  return target instanceof Element && isEditableElement(target);
55
57
  }
56
- const INTERACTIVE_SELECTOR = "button, input, select, textarea, [role=\"button\"], [role=\"slider\"]";
57
58
  /** Whether the event originated from an interactive control (button, slider, etc). */
58
59
  function isInteractiveTarget(event) {
59
60
  const target = resolveEventTarget(event);
60
61
  if (!(target instanceof Element)) return false;
61
62
  return target.closest(INTERACTIVE_SELECTOR) !== null;
62
63
  }
64
+ const ACTIVATION_KEYS = new Set([" ", "Enter"]);
65
+ /**
66
+ * Selector for elements that use Space/Enter as a native activation key.
67
+ * Narrower than `INTERACTIVE_SELECTOR` — excludes editable elements like
68
+ * `input`, `textarea`, `select` where Space/Enter is text input, not activation.
69
+ */
70
+ const ACTIVATABLE_SELECTOR = "button,a[href],[role=\"slider\"],[role=\"button\"]";
71
+ /** Whether the event is an activation key on an activatable element (button, link, slider). */
72
+ function isInteractiveActivation(event) {
73
+ if (!ACTIVATION_KEYS.has(event.key)) return false;
74
+ const target = resolveEventTarget(event);
75
+ return target instanceof Element && target.matches(ACTIVATABLE_SELECTOR);
76
+ }
63
77
 
64
78
  //#endregion
65
79
  //#region ../utils/dist/dom/text-track.js
66
80
  /** Find the `<track>` element that owns the given `TextTrack`. */
67
81
  function findTrackElement(media, track) {
68
- for (const el of media.querySelectorAll?.("track") ?? []) if (el.track === track) return el;
82
+ if (!(media instanceof HTMLElement)) return null;
83
+ for (const el of media.querySelectorAll("track")) if (el.track === track) return el;
69
84
  return null;
70
85
  }
71
86
  function getTextTrackList(media, filterPred) {
72
- if (!media?.textTracks) return [];
73
- return Array.from(media.textTracks).filter(filterPred).sort(sortByTextTrackKind);
87
+ if (!media.textTracks) return [];
88
+ return Array.from(media.textTracks).filter(filterPred).sort(sortByKind);
74
89
  }
75
- function sortByTextTrackKind(a, b) {
90
+ function sortByKind(a, b) {
76
91
  return a.kind > b.kind ? 1 : a.kind < b.kind ? -1 : 0;
77
92
  }
78
93
 
@@ -1017,6 +1032,39 @@ function isStore(value) {
1017
1032
  //#region ../core/dist/dev/dom/feature.js
1018
1033
  const definePlayerFeature = defineSlice();
1019
1034
 
1035
+ //#endregion
1036
+ //#region ../core/dist/dev/dom/media/predicate.js
1037
+ function hasMetadata(media) {
1038
+ return media.readyState >= 1;
1039
+ }
1040
+ function isMediaPauseCapable(value) {
1041
+ return isObject(value) && "paused" in value && "ended" in value && isFunction(value.pause);
1042
+ }
1043
+ function isMediaSeekCapable(value) {
1044
+ return isObject(value) && "currentTime" in value && "duration" in value && "seeking" in value;
1045
+ }
1046
+ function isMediaSourceCapable(value) {
1047
+ return isObject(value) && "src" in value && "currentSrc" in value && "readyState" in value && isFunction(value.load);
1048
+ }
1049
+ function isMediaVolumeCapable(value) {
1050
+ return isObject(value) && "volume" in value && "muted" in value;
1051
+ }
1052
+ function isMediaPlaybackRateCapable(value) {
1053
+ return isObject(value) && "playbackRate" in value;
1054
+ }
1055
+ function isMediaBufferCapable(value) {
1056
+ return isObject(value) && "buffered" in value && "seekable" in value;
1057
+ }
1058
+ function isMediaErrorCapable(value) {
1059
+ return isObject(value) && "error" in value;
1060
+ }
1061
+ function isMediaTextTrackCapable(value) {
1062
+ return isObject(value) && "textTracks" in value;
1063
+ }
1064
+ function isQuerySelectorAllCapable(value) {
1065
+ return isObject(value) && "querySelectorAll" in value && isFunction(value.querySelectorAll);
1066
+ }
1067
+
1020
1068
  //#endregion
1021
1069
  //#region ../core/dist/dev/dom/store/features/buffer.js
1022
1070
  const bufferFeature = definePlayerFeature({
@@ -1027,6 +1075,7 @@ const bufferFeature = definePlayerFeature({
1027
1075
  }),
1028
1076
  attach({ target, signal, set }) {
1029
1077
  const { media } = target;
1078
+ if (!isMediaBufferCapable(media)) return;
1030
1079
  const sync = () => set({
1031
1080
  buffered: serializeTimeRanges(media.buffered),
1032
1081
  seekable: serializeTimeRanges(media.seekable)
@@ -1104,10 +1153,12 @@ var GestureCoordinator = class {
1104
1153
  this.#disconnect = new AbortController();
1105
1154
  const { signal } = this.#disconnect;
1106
1155
  let pointerDownTime = 0;
1107
- listen(this.#target, "pointerdown", () => {
1156
+ listen(this.#target, "pointerdown", (event) => {
1157
+ if (event.button !== 0) return;
1108
1158
  pointerDownTime = Date.now();
1109
1159
  }, { signal });
1110
1160
  listen(this.#target, "pointerup", (event) => {
1161
+ if (event.button !== 0) return;
1111
1162
  if (Date.now() - pointerDownTime > TAP_THRESHOLD$1) return;
1112
1163
  if (isInteractiveTarget(event)) return;
1113
1164
  const pointerType = event.pointerType;
@@ -1186,13 +1237,13 @@ const controlsFeature = definePlayerFeature({
1186
1237
  }),
1187
1238
  attach({ target, signal, get, set }) {
1188
1239
  const { media, container } = target;
1189
- if (isNull(container)) {
1190
- console.warn("[vjs] controlsFeature requires a container element for activity tracking.");
1240
+ if (!isMediaPauseCapable(media) || isNull(container)) {
1241
+ if (isNull(container)) console.warn("[vjs] controlsFeature requires a container element for activity tracking.");
1191
1242
  return;
1192
1243
  }
1193
- function computeVisible(userActive) {
1244
+ const computeVisible = (userActive) => {
1194
1245
  return userActive || media.paused;
1195
- }
1246
+ };
1196
1247
  let idleTimer;
1197
1248
  function clearIdle() {
1198
1249
  clearTimeout(idleTimer);
@@ -1233,11 +1284,11 @@ const controlsFeature = definePlayerFeature({
1233
1284
  else setActive();
1234
1285
  } else setActive();
1235
1286
  }
1236
- function onPlaybackChange() {
1287
+ const onPlaybackChange = () => {
1237
1288
  const { userActive } = get();
1238
1289
  set({ controlsVisible: computeVisible(userActive) });
1239
1290
  if (!media.paused && userActive) scheduleIdle();
1240
- }
1291
+ };
1241
1292
  listen(container, "pointermove", setActive, { signal });
1242
1293
  listen(container, "pointerdown", onPointerDown, { signal });
1243
1294
  listen(container, "pointerup", onPointerUp, { signal });
@@ -1264,6 +1315,7 @@ const errorFeature = definePlayerFeature({
1264
1315
  }),
1265
1316
  attach({ target, signal, set }) {
1266
1317
  const { media } = target;
1318
+ if (!isMediaErrorCapable(media)) return;
1267
1319
  const syncError = () => set({ error: media.error });
1268
1320
  listen(media, "error", syncError, { signal });
1269
1321
  listen(media, "emptied", () => set({ error: null }), { signal });
@@ -1272,58 +1324,49 @@ const errorFeature = definePlayerFeature({
1272
1324
 
1273
1325
  //#endregion
1274
1326
  //#region ../core/dist/dev/dom/presentation/fullscreen.js
1275
- /** Check if the Fullscreen API is supported on this platform. */
1276
1327
  function isFullscreenEnabled() {
1277
1328
  const doc = document;
1278
1329
  if (doc.fullscreenEnabled || doc.webkitFullscreenEnabled) return true;
1279
1330
  return isFunction(document.createElement("video").webkitEnterFullscreen);
1280
1331
  }
1281
- /** Get the current fullscreen element from the document. */
1282
1332
  function getFullscreenElement() {
1283
1333
  const doc = document;
1284
1334
  return doc.fullscreenElement ?? doc.webkitFullscreenElement ?? null;
1285
1335
  }
1286
- /**
1287
- * Check if a specific element (or its media) is currently in fullscreen.
1288
- *
1289
- * Uses `:fullscreen` pseudo-class which works across Shadow DOM boundaries.
1290
- */
1291
1336
  function isFullscreenElement(container, media) {
1292
- const video = media;
1293
- if (video.webkitDisplayingFullscreen && video.webkitPresentationMode === "fullscreen") return true;
1337
+ if (media instanceof HTMLMediaElement) {
1338
+ const video = media;
1339
+ if (video.webkitDisplayingFullscreen && video.webkitPresentationMode === "fullscreen") return true;
1340
+ }
1294
1341
  const target = container ?? media;
1295
1342
  if (getFullscreenElement() === target) return true;
1296
- try {
1343
+ if (target instanceof Element) try {
1297
1344
  return target.matches(":fullscreen");
1298
1345
  } catch {
1299
1346
  return false;
1300
1347
  }
1348
+ return false;
1301
1349
  }
1302
- /**
1303
- * Request fullscreen mode.
1304
- *
1305
- * Tries container first (to show custom UI), falls back to media element
1306
- * for platforms that only support video fullscreen (iOS Safari).
1307
- */
1308
1350
  async function requestFullscreen(container, media) {
1309
1351
  const doc = document;
1310
- const video = media;
1311
1352
  if (container && (doc.fullscreenEnabled || doc.webkitFullscreenEnabled)) {
1312
1353
  const el = container;
1313
1354
  if (isFunction(el.requestFullscreen)) return el.requestFullscreen();
1314
1355
  if (isFunction(el.webkitRequestFullscreen)) return el.webkitRequestFullscreen();
1315
1356
  }
1316
- if (isFunction(video.webkitEnterFullscreen)) {
1317
- video.webkitEnterFullscreen();
1318
- return;
1357
+ if (media instanceof HTMLMediaElement) {
1358
+ const video = media;
1359
+ if (isFunction(video.webkitEnterFullscreen)) {
1360
+ video.webkitEnterFullscreen();
1361
+ return;
1362
+ }
1363
+ if (isFunction(media.requestFullscreen)) return media.requestFullscreen();
1319
1364
  }
1320
- if (isFunction(media.requestFullscreen)) return media.requestFullscreen();
1321
1365
  throw new DOMException("Fullscreen not supported", "NotSupportedError");
1322
1366
  }
1323
- /** Exit fullscreen mode. */
1324
1367
  async function exitFullscreen(media) {
1325
1368
  const doc = document;
1326
- if (media) {
1369
+ if (media instanceof HTMLMediaElement) {
1327
1370
  const video = media;
1328
1371
  if (isFunction(video.webkitExitFullscreen) && video.webkitDisplayingFullscreen) {
1329
1372
  video.webkitExitFullscreen();
@@ -1340,11 +1383,6 @@ function resolveMediaTarget(media) {
1340
1383
  const target = media.target;
1341
1384
  return target instanceof HTMLMediaElement ? target : media;
1342
1385
  }
1343
- /**
1344
- * Check if Picture-in-Picture is supported on this platform.
1345
- *
1346
- * Note: Safari PWAs don't support PiP even though the API exists.
1347
- */
1348
1386
  function isPictureInPictureEnabled() {
1349
1387
  if (document.pictureInPictureEnabled) {
1350
1388
  const isSafari = /.*Version\/.*Safari\/.*/.test(navigator.userAgent);
@@ -1353,22 +1391,16 @@ function isPictureInPictureEnabled() {
1353
1391
  }
1354
1392
  return isFunction(document.createElement("video").webkitSetPresentationMode);
1355
1393
  }
1356
- /**
1357
- * Check if Picture-in-Picture is currently active for a media element.
1358
- */
1359
1394
  function isPictureInPictureElement(media) {
1360
1395
  const target = resolveMediaTarget(media);
1361
1396
  if (document.pictureInPictureElement === target) return true;
1362
- return target.webkitPresentationMode === "picture-in-picture";
1397
+ if (target instanceof HTMLVideoElement) return target.webkitPresentationMode === "picture-in-picture";
1398
+ return false;
1363
1399
  }
1364
- /**
1365
- * Request Picture-in-Picture mode.
1366
- *
1367
- * Uses standard API where available, falls back to iOS Safari's
1368
- * WebKit presentation mode.
1369
- */
1370
1400
  async function requestPictureInPicture(media) {
1371
- const video = resolveMediaTarget(media);
1401
+ const target = resolveMediaTarget(media);
1402
+ if (!(target instanceof HTMLVideoElement)) throw new DOMException("Picture-in-Picture not supported", "NotSupportedError");
1403
+ const video = target;
1372
1404
  if (isFunction(video.webkitSetPresentationMode)) {
1373
1405
  video.webkitSetPresentationMode("picture-in-picture");
1374
1406
  return;
@@ -1379,18 +1411,15 @@ async function requestPictureInPicture(media) {
1379
1411
  }
1380
1412
  throw new DOMException("Picture-in-Picture not supported", "NotSupportedError");
1381
1413
  }
1382
- /**
1383
- * Exit Picture-in-Picture mode.
1384
- *
1385
- * Uses standard API where available, falls back to iOS Safari's
1386
- * WebKit presentation mode.
1387
- */
1388
1414
  async function exitPictureInPicture(media) {
1389
1415
  if (media) {
1390
- const video = resolveMediaTarget(media);
1391
- if (isFunction(video.webkitSetPresentationMode) && video.webkitPresentationMode === "picture-in-picture") {
1392
- video.webkitSetPresentationMode("inline");
1393
- return;
1416
+ const target = resolveMediaTarget(media);
1417
+ if (target instanceof HTMLVideoElement) {
1418
+ const video = target;
1419
+ if (isFunction(video.webkitSetPresentationMode) && video.webkitPresentationMode === "picture-in-picture") {
1420
+ video.webkitSetPresentationMode("inline");
1421
+ return;
1422
+ }
1394
1423
  }
1395
1424
  }
1396
1425
  if (isFunction(document.exitPictureInPicture)) return document.exitPictureInPicture();
@@ -1477,10 +1506,12 @@ const playbackFeature = definePlayerFeature({
1477
1506
  return target().media.play();
1478
1507
  },
1479
1508
  pause() {
1480
- target().media.pause();
1509
+ const { media } = target();
1510
+ if (isMediaPauseCapable(media)) media.pause();
1481
1511
  },
1482
1512
  togglePaused() {
1483
1513
  const media = target().media;
1514
+ if (!isMediaPauseCapable(media)) return false;
1484
1515
  if (media.paused) {
1485
1516
  media.play();
1486
1517
  return true;
@@ -1491,6 +1522,7 @@ const playbackFeature = definePlayerFeature({
1491
1522
  }),
1492
1523
  attach({ target, signal, set }) {
1493
1524
  const { media } = target;
1525
+ if (!isMediaPauseCapable(media) || !isMediaSeekCapable(media) || !isMediaSourceCapable(media)) return;
1494
1526
  const sync = () => set({
1495
1527
  paused: media.paused,
1496
1528
  ended: media.ended,
@@ -1526,11 +1558,13 @@ const playbackRateFeature = definePlayerFeature({
1526
1558
  playbackRates: DEFAULT_RATES,
1527
1559
  playbackRate: 1,
1528
1560
  setPlaybackRate(rate) {
1529
- target().media.playbackRate = rate;
1561
+ const { media } = target();
1562
+ if (isMediaPlaybackRateCapable(media)) media.playbackRate = rate;
1530
1563
  }
1531
1564
  }),
1532
1565
  attach({ target, signal, set }) {
1533
1566
  const { media } = target;
1567
+ if (!isMediaPlaybackRateCapable(media)) return;
1534
1568
  const sync = () => set({ playbackRate: media.playbackRate });
1535
1569
  sync();
1536
1570
  listen(media, "ratechange", sync, { signal });
@@ -1547,6 +1581,7 @@ const sourceFeature = definePlayerFeature({
1547
1581
  loadSource(src) {
1548
1582
  signals.clear();
1549
1583
  const { media } = target();
1584
+ if (!isMediaSourceCapable(media)) return src;
1550
1585
  media.src = src;
1551
1586
  media.load();
1552
1587
  return src;
@@ -1554,6 +1589,7 @@ const sourceFeature = definePlayerFeature({
1554
1589
  }),
1555
1590
  attach({ target, signal, set }) {
1556
1591
  const { media } = target;
1592
+ if (!isMediaSourceCapable(media)) return;
1557
1593
  const sync = () => set({
1558
1594
  source: media.currentSrc || media.src || null,
1559
1595
  canPlay: media.readyState >= HTMLMediaElement.HAVE_ENOUGH_DATA
@@ -1577,7 +1613,9 @@ const textTrackFeature = definePlayerFeature({
1577
1613
  textTrackList: [],
1578
1614
  subtitlesShowing: false,
1579
1615
  toggleSubtitles(forceShow) {
1580
- const subtitlesTracks = getTextTrackList(target().media, (track) => track.kind === "subtitles" || track.kind === "captions");
1616
+ const { media } = target();
1617
+ if (!isMediaTextTrackCapable(media)) return false;
1618
+ const subtitlesTracks = getTextTrackList(media, (track) => track.kind === "subtitles" || track.kind === "captions");
1581
1619
  if (!subtitlesTracks.length) return false;
1582
1620
  const showing = subtitlesTracks.some((track) => track.mode === "showing");
1583
1621
  const nextShowing = forceShow ?? !showing;
@@ -1587,8 +1625,9 @@ const textTrackFeature = definePlayerFeature({
1587
1625
  }),
1588
1626
  attach({ target, signal, set }) {
1589
1627
  const { media } = target;
1628
+ if (!isMediaTextTrackCapable(media)) return;
1590
1629
  let trackCleanup = null;
1591
- function sync() {
1630
+ const sync = () => {
1592
1631
  trackCleanup?.abort();
1593
1632
  trackCleanup = new AbortController();
1594
1633
  let chaptersTrack = null;
@@ -1611,8 +1650,8 @@ const textTrackFeature = definePlayerFeature({
1611
1650
  const thumbnailCues = thumbnailTrack?.cues ? Array.from(thumbnailTrack.cues) : [];
1612
1651
  let thumbnailTrackSrc = null;
1613
1652
  if (thumbnailTrack) thumbnailTrackSrc = findTrackElement(media, thumbnailTrack)?.src ?? null;
1614
- const tracks = media.querySelectorAll?.("track") ?? [];
1615
- const shadowTracks = media.shadowRoot?.querySelectorAll?.("track") ?? [];
1653
+ const tracks = isQuerySelectorAllCapable(media) && media.querySelectorAll("track") || [];
1654
+ const shadowTracks = media instanceof HTMLElement && media.shadowRoot?.querySelectorAll("track") || [];
1616
1655
  for (const trackEl of [...tracks, ...shadowTracks]) if (!trackEl.track?.cues?.length) listen(trackEl, "load", sync, { signal: trackCleanup.signal });
1617
1656
  set({
1618
1657
  chaptersCues,
@@ -1621,22 +1660,19 @@ const textTrackFeature = definePlayerFeature({
1621
1660
  textTrackList,
1622
1661
  subtitlesShowing
1623
1662
  });
1624
- }
1663
+ };
1625
1664
  sync();
1626
- listen(media.textTracks, "addtrack", sync, { signal });
1627
- listen(media.textTracks, "removetrack", sync, { signal });
1628
- listen(media.textTracks, "change", sync, { signal });
1665
+ const textTracks = media.textTracks;
1666
+ if (textTracks instanceof EventTarget) {
1667
+ listen(textTracks, "addtrack", sync, { signal });
1668
+ listen(textTracks, "removetrack", sync, { signal });
1669
+ listen(textTracks, "change", sync, { signal });
1670
+ }
1629
1671
  listen(media, "loadstart", sync, { signal });
1630
1672
  signal.addEventListener("abort", () => trackCleanup?.abort(), { once: true });
1631
1673
  }
1632
1674
  });
1633
1675
 
1634
- //#endregion
1635
- //#region ../core/dist/dev/dom/media/predicate.js
1636
- function hasMetadata(media) {
1637
- return media.readyState >= HTMLMediaElement.HAVE_METADATA;
1638
- }
1639
-
1640
1676
  //#endregion
1641
1677
  //#region ../core/dist/dev/dom/store/signal-keys.js
1642
1678
  const signalKeys = { seek: Symbol.for("@videojs/seek") };
@@ -1651,6 +1687,7 @@ const timeFeature = definePlayerFeature({
1651
1687
  seeking: false,
1652
1688
  async seek(time) {
1653
1689
  const { media } = target(), signal = signals.supersede(signalKeys.seek);
1690
+ if (!isMediaSeekCapable(media) || !isMediaSourceCapable(media)) return 0;
1654
1691
  if (!hasMetadata(media)) {
1655
1692
  if (!await onEvent(media, "loadedmetadata", { signal }).catch(() => false)) return media.currentTime;
1656
1693
  }
@@ -1666,6 +1703,7 @@ const timeFeature = definePlayerFeature({
1666
1703
  }),
1667
1704
  attach({ target, signal, set, get }) {
1668
1705
  const { media } = target;
1706
+ if (!isMediaSeekCapable(media)) return;
1669
1707
  const sync = () => set({
1670
1708
  currentTime: media.currentTime,
1671
1709
  duration: Number.isFinite(media.duration) ? media.duration : 0,
@@ -1697,6 +1735,7 @@ const volumeFeature = definePlayerFeature({
1697
1735
  volumeAvailability: "unavailable",
1698
1736
  setVolume(volume) {
1699
1737
  const { media } = target();
1738
+ if (!isMediaVolumeCapable(media)) return 0;
1700
1739
  const clamped = Math.max(0, Math.min(1, volume));
1701
1740
  if (clamped > 0 && media.muted) media.muted = false;
1702
1741
  media.volume = clamped;
@@ -1704,6 +1743,7 @@ const volumeFeature = definePlayerFeature({
1704
1743
  },
1705
1744
  toggleMuted() {
1706
1745
  const { media } = target();
1746
+ if (!isMediaVolumeCapable(media)) return false;
1707
1747
  if (media.muted || media.volume === 0) {
1708
1748
  media.muted = false;
1709
1749
  if (media.volume === 0) media.volume = UNMUTE_VOLUME;
@@ -1713,6 +1753,7 @@ const volumeFeature = definePlayerFeature({
1713
1753
  }),
1714
1754
  attach({ target, signal, set }) {
1715
1755
  const { media } = target;
1756
+ if (!isMediaVolumeCapable(media)) return;
1716
1757
  set({ volumeAvailability: canSetVolume() });
1717
1758
  const sync = () => set({
1718
1759
  volume: media.volume,
@@ -2137,5 +2178,5 @@ function createPlayer(config) {
2137
2178
  }
2138
2179
 
2139
2180
  //#endregion
2140
- export { ContextConsumer as A, isFunction as C, MediaContainerElement as D, isUndefined as E, isEditableTarget as M, resolveEventTarget as N, MediaElement as O, AbortControllerRegistry as S, isNumber as T, getGestureCoordinator as _, backgroundFeatures as a, noop as b, timeFeature as c, playbackRateFeature as d, playbackFeature as f, controlsFeature as g, errorFeature as h, audioFeatures as i, ReactiveElement as j, ContextProvider as k, textTrackFeature as l, fullscreenFeature as m, PlayerController as n, videoFeatures as o, pipFeature as p, SnapshotController as r, volumeFeature as s, createPlayer as t, sourceFeature as u, bufferFeature as v, isNull as w, throwNoTargetError as x, createState as y };
2141
- //# sourceMappingURL=create-player-CyG77t-m.js.map
2181
+ export { ContextConsumer as A, isFunction as C, MediaContainerElement as D, isUndefined as E, isEditableTarget as M, isInteractiveActivation as N, MediaElement as O, AbortControllerRegistry as S, isNumber as T, getGestureCoordinator as _, backgroundFeatures as a, noop as b, timeFeature as c, playbackRateFeature as d, playbackFeature as f, controlsFeature as g, errorFeature as h, audioFeatures as i, ReactiveElement as j, ContextProvider as k, textTrackFeature as l, fullscreenFeature as m, PlayerController as n, videoFeatures as o, pipFeature as p, SnapshotController as r, volumeFeature as s, createPlayer as t, sourceFeature as u, bufferFeature as v, isNull as w, throwNoTargetError as x, createState as y };
2182
+ //# sourceMappingURL=create-player-Bi6WUwDZ.js.map