@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
@@ -1,8 +1,8 @@
1
- import { a as defineVolumeSlider, c as SeekButtonElement, d as PlayButtonElement, f as MuteButtonElement, i as defineTimeSlider, l as PopoverElement, n as defineErrorDialog, o as TooltipGroupElement, r as defineTime, s as TooltipElement, t as defineControls, u as PlaybackRateButtonElement } from "./compounds-VFPcCeRV.js";
2
- import { D as MediaContainerElement } from "./create-player-CyG77t-m.js";
3
- import { o as safeDefine } from "./context-CvJ83xGk.js";
4
- import { a as CaptionsButtonElement, i as FullscreenButtonElement, n as PosterElement, o as BufferingIndicatorElement, r as PiPButtonElement, t as VideoPlayerElement } from "./player-DIOgBqQf.js";
5
- import { n as GestureElement, t as HotkeyElement } from "./hotkey-element-Dlta37Be.js";
1
+ import { a as defineVolumeSlider, c as SeekButtonElement, d as PlayButtonElement, f as MuteButtonElement, i as defineTimeSlider, l as PopoverElement, n as defineErrorDialog, o as TooltipGroupElement, r as defineTime, s as TooltipElement, t as defineControls, u as PlaybackRateButtonElement } from "./compounds-CM_NP-ej.js";
2
+ import { D as MediaContainerElement } from "./create-player-Bi6WUwDZ.js";
3
+ import { o as safeDefine } from "./context-0rI_P6jf.js";
4
+ import { a as CaptionsButtonElement, i as FullscreenButtonElement, n as PosterElement, o as BufferingIndicatorElement, r as PiPButtonElement, t as VideoPlayerElement } from "./player-CatrGW7l.js";
5
+ import { n as GestureElement, t as HotkeyElement } from "./hotkey-element-317kwVH5.js";
6
6
 
7
7
  //#region src/define/video/ui.ts
8
8
  safeDefine(VideoPlayerElement);
@@ -28,4 +28,4 @@ safeDefine(TooltipElement);
28
28
  safeDefine(TooltipGroupElement);
29
29
 
30
30
  //#endregion
31
- //# sourceMappingURL=ui-X5WOdCCw.js.map
31
+ //# sourceMappingURL=ui-Em9rF9Ah.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui-X5WOdCCw.js","names":[],"sources":["../src/define/video/ui.ts"],"sourcesContent":["// Registers the video player, container, and all video UI custom elements\n// without creating a skin element. Use this entry when building an ejected\n// (light DOM) player layout.\nimport { MediaContainerElement } from '../../media/container-element';\nimport { BufferingIndicatorElement } from '../../ui/buffering-indicator/buffering-indicator-element';\nimport { CaptionsButtonElement } from '../../ui/captions-button/captions-button-element';\nimport { FullscreenButtonElement } from '../../ui/fullscreen-button/fullscreen-button-element';\nimport { GestureElement } from '../../ui/gesture/gesture-element';\nimport { HotkeyElement } from '../../ui/hotkey/hotkey-element';\nimport { MuteButtonElement } from '../../ui/mute-button/mute-button-element';\nimport { PiPButtonElement } from '../../ui/pip-button/pip-button-element';\nimport { PlayButtonElement } from '../../ui/play-button/play-button-element';\nimport { PlaybackRateButtonElement } from '../../ui/playback-rate-button/playback-rate-button-element';\nimport { PopoverElement } from '../../ui/popover/popover-element';\nimport { PosterElement } from '../../ui/poster/poster-element';\nimport { SeekButtonElement } from '../../ui/seek-button/seek-button-element';\nimport { TooltipElement } from '../../ui/tooltip/tooltip-element';\nimport { TooltipGroupElement } from '../../ui/tooltip/tooltip-group-element';\nimport { safeDefine } from '../safe-define';\nimport { defineControls, defineErrorDialog, defineTime, defineTimeSlider, defineVolumeSlider } from '../ui/compounds';\n\n// Value import — player.ts body runs before this module's body.\nimport { VideoPlayerElement } from './player';\n\n// ── Registration (providers / parents first) ────────────────────────────\n\nsafeDefine(VideoPlayerElement);\nsafeDefine(MediaContainerElement);\n\n// Compound groups.\ndefineControls();\ndefineErrorDialog();\ndefineTimeSlider();\ndefineVolumeSlider();\ndefineTime();\n\n// Standalone elements.\nsafeDefine(BufferingIndicatorElement);\nsafeDefine(CaptionsButtonElement);\nsafeDefine(FullscreenButtonElement);\nsafeDefine(GestureElement);\nsafeDefine(HotkeyElement);\nsafeDefine(MuteButtonElement);\nsafeDefine(PiPButtonElement);\nsafeDefine(PlayButtonElement);\nsafeDefine(PlaybackRateButtonElement);\nsafeDefine(PopoverElement);\nsafeDefine(PosterElement);\nsafeDefine(SeekButtonElement);\nsafeDefine(TooltipElement);\nsafeDefine(TooltipGroupElement);\n"],"mappings":";;;;;;;AA0BA,WAAW,mBAAmB;AAC9B,WAAW,sBAAsB;AAGjC,gBAAgB;AAChB,mBAAmB;AACnB,kBAAkB;AAClB,oBAAoB;AACpB,YAAY;AAGZ,WAAW,0BAA0B;AACrC,WAAW,sBAAsB;AACjC,WAAW,wBAAwB;AACnC,WAAW,eAAe;AAC1B,WAAW,cAAc;AACzB,WAAW,kBAAkB;AAC7B,WAAW,iBAAiB;AAC5B,WAAW,kBAAkB;AAC7B,WAAW,0BAA0B;AACrC,WAAW,eAAe;AAC1B,WAAW,cAAc;AACzB,WAAW,kBAAkB;AAC7B,WAAW,eAAe;AAC1B,WAAW,oBAAoB"}
1
+ {"version":3,"file":"ui-Em9rF9Ah.js","names":[],"sources":["../src/define/video/ui.ts"],"sourcesContent":["// Registers the video player, container, and all video UI custom elements\n// without creating a skin element. Use this entry when building an ejected\n// (light DOM) player layout.\nimport { MediaContainerElement } from '../../media/container-element';\nimport { BufferingIndicatorElement } from '../../ui/buffering-indicator/buffering-indicator-element';\nimport { CaptionsButtonElement } from '../../ui/captions-button/captions-button-element';\nimport { FullscreenButtonElement } from '../../ui/fullscreen-button/fullscreen-button-element';\nimport { GestureElement } from '../../ui/gesture/gesture-element';\nimport { HotkeyElement } from '../../ui/hotkey/hotkey-element';\nimport { MuteButtonElement } from '../../ui/mute-button/mute-button-element';\nimport { PiPButtonElement } from '../../ui/pip-button/pip-button-element';\nimport { PlayButtonElement } from '../../ui/play-button/play-button-element';\nimport { PlaybackRateButtonElement } from '../../ui/playback-rate-button/playback-rate-button-element';\nimport { PopoverElement } from '../../ui/popover/popover-element';\nimport { PosterElement } from '../../ui/poster/poster-element';\nimport { SeekButtonElement } from '../../ui/seek-button/seek-button-element';\nimport { TooltipElement } from '../../ui/tooltip/tooltip-element';\nimport { TooltipGroupElement } from '../../ui/tooltip/tooltip-group-element';\nimport { safeDefine } from '../safe-define';\nimport { defineControls, defineErrorDialog, defineTime, defineTimeSlider, defineVolumeSlider } from '../ui/compounds';\n\n// Value import — player.ts body runs before this module's body.\nimport { VideoPlayerElement } from './player';\n\n// ── Registration (providers / parents first) ────────────────────────────\n\nsafeDefine(VideoPlayerElement);\nsafeDefine(MediaContainerElement);\n\n// Compound groups.\ndefineControls();\ndefineErrorDialog();\ndefineTimeSlider();\ndefineVolumeSlider();\ndefineTime();\n\n// Standalone elements.\nsafeDefine(BufferingIndicatorElement);\nsafeDefine(CaptionsButtonElement);\nsafeDefine(FullscreenButtonElement);\nsafeDefine(GestureElement);\nsafeDefine(HotkeyElement);\nsafeDefine(MuteButtonElement);\nsafeDefine(PiPButtonElement);\nsafeDefine(PlayButtonElement);\nsafeDefine(PlaybackRateButtonElement);\nsafeDefine(PopoverElement);\nsafeDefine(PosterElement);\nsafeDefine(SeekButtonElement);\nsafeDefine(TooltipElement);\nsafeDefine(TooltipGroupElement);\n"],"mappings":";;;;;;;AA0BA,WAAW,mBAAmB;AAC9B,WAAW,sBAAsB;AAGjC,gBAAgB;AAChB,mBAAmB;AACnB,kBAAkB;AAClB,oBAAoB;AACpB,YAAY;AAGZ,WAAW,0BAA0B;AACrC,WAAW,sBAAsB;AACjC,WAAW,wBAAwB;AACnC,WAAW,eAAe;AAC1B,WAAW,cAAc;AACzB,WAAW,kBAAkB;AAC7B,WAAW,iBAAiB;AAC5B,WAAW,kBAAkB;AAC7B,WAAW,0BAA0B;AACrC,WAAW,eAAe;AAC1B,WAAW,cAAc;AACzB,WAAW,kBAAkB;AAC7B,WAAW,eAAe;AAC1B,WAAW,oBAAoB"}
@@ -0,0 +1,2 @@
1
+ import{a as e,c as t,d as n,f as r,i,l as a,n as o,o as s,r as c,s as l,u}from"./compounds-Vvz-YfXP.js";import{D as d}from"./create-player-CKuX8YI5.js";import{o as f}from"./context-CEFisYD0.js";import{n as p,t as m}from"./hotkey-element-DRGCbVj9.js";import{t as h}from"./player-BK35-ndY.js";f(h),f(d),o(),i(),e(),c(),f(p),f(m),f(r),f(n),f(u),f(a),f(t),f(l),f(s);
2
+ //# sourceMappingURL=ui-QHwo6iyo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui-DXtTKomo.js","names":[],"sources":["../src/define/audio/ui.ts"],"sourcesContent":["// Registers the audio player, container, and all audio UI custom elements\n// without creating a skin element. Use this entry when building an ejected\n// (light DOM) player layout.\nimport { MediaContainerElement } from '../../media/container-element';\nimport { GestureElement } from '../../ui/gesture/gesture-element';\nimport { HotkeyElement } from '../../ui/hotkey/hotkey-element';\nimport { MuteButtonElement } from '../../ui/mute-button/mute-button-element';\nimport { PlayButtonElement } from '../../ui/play-button/play-button-element';\nimport { PlaybackRateButtonElement } from '../../ui/playback-rate-button/playback-rate-button-element';\nimport { PopoverElement } from '../../ui/popover/popover-element';\nimport { SeekButtonElement } from '../../ui/seek-button/seek-button-element';\nimport { TooltipElement } from '../../ui/tooltip/tooltip-element';\nimport { TooltipGroupElement } from '../../ui/tooltip/tooltip-group-element';\nimport { safeDefine } from '../safe-define';\nimport { defineErrorDialog, defineTime, defineTimeSlider, defineVolumeSlider } from '../ui/compounds';\n\n// Value import — player.ts body runs before this module's body.\nimport { AudioPlayerElement } from './player';\n\n// ── Registration (providers / parents first) ────────────────────────────\n\nsafeDefine(AudioPlayerElement);\nsafeDefine(MediaContainerElement);\n\n// Compound groups.\ndefineErrorDialog();\ndefineTimeSlider();\ndefineVolumeSlider();\ndefineTime();\n\n// Standalone elements.\nsafeDefine(GestureElement);\nsafeDefine(HotkeyElement);\nsafeDefine(MuteButtonElement);\nsafeDefine(PlayButtonElement);\nsafeDefine(PlaybackRateButtonElement);\nsafeDefine(PopoverElement);\nsafeDefine(SeekButtonElement);\nsafeDefine(TooltipElement);\nsafeDefine(TooltipGroupElement);\n"],"mappings":"mSAqBA,EAAW,EAAmB,CAC9B,EAAW,EAAsB,CAGjC,GAAmB,CACnB,GAAkB,CAClB,GAAoB,CACpB,GAAY,CAGZ,EAAW,EAAe,CAC1B,EAAW,EAAc,CACzB,EAAW,EAAkB,CAC7B,EAAW,EAAkB,CAC7B,EAAW,EAA0B,CACrC,EAAW,EAAe,CAC1B,EAAW,EAAkB,CAC7B,EAAW,EAAe,CAC1B,EAAW,EAAoB"}
1
+ {"version":3,"file":"ui-QHwo6iyo.js","names":[],"sources":["../src/define/audio/ui.ts"],"sourcesContent":["// Registers the audio player, container, and all audio UI custom elements\n// without creating a skin element. Use this entry when building an ejected\n// (light DOM) player layout.\nimport { MediaContainerElement } from '../../media/container-element';\nimport { GestureElement } from '../../ui/gesture/gesture-element';\nimport { HotkeyElement } from '../../ui/hotkey/hotkey-element';\nimport { MuteButtonElement } from '../../ui/mute-button/mute-button-element';\nimport { PlayButtonElement } from '../../ui/play-button/play-button-element';\nimport { PlaybackRateButtonElement } from '../../ui/playback-rate-button/playback-rate-button-element';\nimport { PopoverElement } from '../../ui/popover/popover-element';\nimport { SeekButtonElement } from '../../ui/seek-button/seek-button-element';\nimport { TooltipElement } from '../../ui/tooltip/tooltip-element';\nimport { TooltipGroupElement } from '../../ui/tooltip/tooltip-group-element';\nimport { safeDefine } from '../safe-define';\nimport { defineErrorDialog, defineTime, defineTimeSlider, defineVolumeSlider } from '../ui/compounds';\n\n// Value import — player.ts body runs before this module's body.\nimport { AudioPlayerElement } from './player';\n\n// ── Registration (providers / parents first) ────────────────────────────\n\nsafeDefine(AudioPlayerElement);\nsafeDefine(MediaContainerElement);\n\n// Compound groups.\ndefineErrorDialog();\ndefineTimeSlider();\ndefineVolumeSlider();\ndefineTime();\n\n// Standalone elements.\nsafeDefine(GestureElement);\nsafeDefine(HotkeyElement);\nsafeDefine(MuteButtonElement);\nsafeDefine(PlayButtonElement);\nsafeDefine(PlaybackRateButtonElement);\nsafeDefine(PopoverElement);\nsafeDefine(SeekButtonElement);\nsafeDefine(TooltipElement);\nsafeDefine(TooltipGroupElement);\n"],"mappings":"mSAqBA,EAAW,EAAmB,CAC9B,EAAW,EAAsB,CAGjC,GAAmB,CACnB,GAAkB,CAClB,GAAoB,CACpB,GAAY,CAGZ,EAAW,EAAe,CAC1B,EAAW,EAAc,CACzB,EAAW,EAAkB,CAC7B,EAAW,EAAkB,CAC7B,EAAW,EAA0B,CACrC,EAAW,EAAe,CAC1B,EAAW,EAAkB,CAC7B,EAAW,EAAe,CAC1B,EAAW,EAAoB"}
@@ -0,0 +1,47 @@
1
+ import{n as e,r as t}from"./media-attach-mixin-C2wz0Qbd.js";import{n,t as r}from"./pick-CERGq1No.js";function i(e,t){let n={};for(let r in e)t.includes(r)||(n[r]=e[r]);return n}const a={borderRadius:`--media-video-border-radius`,objectFit:`--media-object-fit`,objectPosition:`--media-object-position`,captionTrackDuration:`--media-caption-track-duration`,captionTrackDelay:`--media-caption-track-delay`,captionTrackY:`--media-caption-track-y`};function o(e){return`
2
+ <style>
3
+ :host {
4
+ display: contents;
5
+ }
6
+
7
+ video {
8
+ display: block;
9
+ width: 100%;
10
+ height: 100%;
11
+ border-radius: var(${a.borderRadius});
12
+ object-fit: var(${a.objectFit}, contain);
13
+ object-position: var(${a.objectPosition}, center);
14
+ }
15
+
16
+ video::-webkit-media-text-track-container {
17
+ transition: translate var(${a.captionTrackDuration}, 0) ease-out;
18
+ transition-delay: var(${a.captionTrackDelay}, 0);
19
+ translate: 0 var(${a.captionTrackY}, 0);
20
+ scale: 0.98;
21
+ z-index: 1;
22
+ font-family: inherit;
23
+ }
24
+ </style>
25
+ <slot name="media">
26
+ <video${t(e)}></video>
27
+ </slot>
28
+ <slot></slot>
29
+ `}function s(e){return n=>`
30
+ <style>
31
+ :host {
32
+ display: inline-flex;
33
+ line-height: 0;
34
+ flex-direction: column;
35
+ justify-content: end;
36
+ }
37
+
38
+ ${e} {
39
+ width: 100%;
40
+ }
41
+ </style>
42
+ <slot name="media">
43
+ <${e}${t(n)}></${e}>
44
+ </slot>
45
+ <slot></slot>
46
+ `}const c=[`attach`,`detach`,`destroy`];function l(t,a){let l=new Map,d=!1;class f extends (globalThis.HTMLElement??class{}){static getTemplateHTML=t.endsWith(`video`)?o:s(t);static shadowRootOptions={mode:`open`};static properties={autoPictureInPicture:{type:Boolean},autoplay:{type:Boolean},controls:{type:Boolean},controlsList:{type:String},crossOrigin:{type:String},defaultMuted:{type:Boolean,attribute:`muted`},disablePictureInPicture:{type:Boolean},disableRemotePlayback:{type:Boolean},loading:{type:String},loop:{type:Boolean},playsInline:{type:Boolean},poster:{type:String},preload:{type:String},src:{type:String}};static get observedAttributes(){return f.#define(this),[...u(this.properties)]}static#define(e){if(d)return;d=!0;for(let t=a.prototype;t&&t!==Object.prototype;t=Object.getPrototypeOf(t))for(let r of Object.getOwnPropertyNames(t)){if(r in f.prototype||c.includes(r))continue;let i=Object.getOwnPropertyDescriptor(t,r);if(!i)continue;let a={enumerable:!0,configurable:!0};if(typeof i.value==`function`)a.value=function(...e){return this.#mediaHost[r](...e)};else if(i.get&&(a.get=function(){return this.#mediaHost[r]},i.set)){let t=n(r);e.observedAttributes.includes(t)?(l.set(t,r),a.set=function(e){e===!0||e===!1||e==null?this.toggleAttribute(t,!!e):this.setAttribute(t,String(e))}):a.set=function(e){this.#mediaHost[r]=e}}Object.defineProperty(f.prototype,r,a)}let t=e.properties;for(let[e,{type:n,attribute:r}]of Object.entries(t)){if(e in f.prototype)continue;let t=r??e.toLowerCase();Object.defineProperty(f.prototype,e,{get:function(){return n===Boolean?this.hasAttribute(t):this.getAttribute(t)},set:function(e){n===Boolean?this.toggleAttribute(t,!!e):this.setAttribute(t,e)},enumerable:!0,configurable:!0})}}#mediaHost;#bridgedEventTypes=new Set;#childMap=new Map;#childObserver;constructor(){if(super(),!this.shadowRoot){let n=this.constructor;this.attachShadow(n.shadowRootOptions);let a=u(n.properties),o=[...l.keys()],s=i(r(e(this.attributes),a),o);t&&!s.part&&(s.part=t),this.shadowRoot.innerHTML=n.getTemplateHTML(s)}this.#mediaHost=new a,this.#attachToTarget(),this.#childObserver=new MutationObserver(this.#syncMediaChildAttribute.bind(this)),this.shadowRoot.addEventListener(`slotchange`,()=>{this.#attachToTarget(),this.#syncMediaChildren()}),this.#syncMediaChildren()}#attachToTarget(){let e=this.target;e!==this.#mediaHost.target&&(this.#mediaHost.target&&this.#mediaHost.detach(),this.#mediaHost.attach(e))}get target(){return this.querySelector(`:scope > [slot=media]`)??this.querySelector(t)??this.shadowRoot?.querySelector(t)??null}disconnectedCallback(){this.hasAttribute(`keep-alive`)||this.#mediaHost.destroy()}addEventListener(e,t,n){super.addEventListener(e,t,n),this.#bridgedEventTypes.has(e)||(this.#bridgedEventTypes.add(e),this.#mediaHost.addEventListener(e,this.#bridgeEvent))}removeEventListener(e,t,n){super.removeEventListener(e,t,n)}#bridgeEvent=e=>{e.composed||this.dispatchEvent(new e.constructor(e.type,e))};attributeChangedCallback(e,t,n){let r=l.get(e);if(r){if(t!==n){let e=typeof this.#mediaHost[r];this.#mediaHost[r]=e===`boolean`?n!==null:e===`number`?Number(n):n??``}return}!f.observedAttributes.includes(e)&&this.constructor.observedAttributes.includes(e)||(n===null?this.target?.removeAttribute(e):this.target?.getAttribute(e)!==n&&this.target?.setAttribute(e,n))}#syncMediaChildren(){let e=this.shadowRoot?.querySelector(`slot:not([name])`),t=new Set(e?.assignedElements({flatten:!0}).filter(e=>e.localName===`track`||e.localName===`source`));for(let[e,n]of this.#childMap)t.has(e)||(n.remove(),this.#childMap.delete(e));for(let e of t){let t=this.#childMap.get(e);t||(t=e.cloneNode(),this.#childMap.set(e,t),this.#childObserver?.observe(e,{attributes:!0})),this.target?.append(t),this.#enableDefaultTrack(t)}}#syncMediaChildAttribute(e){for(let t of e)if(t.type===`attributes`){let{target:e,attributeName:n}=t,r=this.#childMap.get(e);r&&n&&(r.setAttribute(n,e.getAttribute(n)??``),this.#enableDefaultTrack(r))}}#enableDefaultTrack(e){e&&e.localName===`track`&&e.default&&(e.kind===`chapters`||e.kind===`metadata`)&&e.track.mode===`disabled`&&(e.track.mode=`hidden`)}}return f}function u(e){return Object.keys(e).map(t=>e[t]?.attribute??t.toLowerCase())}const d=Object.freeze({length:0,start(){return 0},end(){return 0}});var f=class extends EventTarget{#e=null;#t=new Set;get target(){return this.#e}get paused(){return this.target?.paused??!0}get ended(){return this.target?.ended??!1}play(){return this.target?.play()??Promise.reject()}pause(){this.target?.pause()}get currentTime(){return this.target?.currentTime??0}set currentTime(e){this.target&&(this.target.currentTime=e)}get duration(){return this.target?.duration??NaN}get seeking(){return this.target?.seeking??!1}get src(){return this.target?.src??``}set src(e){this.target&&(this.target.src=e)}get currentSrc(){return this.target?.currentSrc??``}get readyState(){return this.target?.readyState??0}load(){this.target?.load()}get volume(){return this.target?.volume??1}set volume(e){this.target&&(this.target.volume=e)}get muted(){return this.target?.muted??!1}set muted(e){this.target&&(this.target.muted=e)}get playbackRate(){return this.target?.playbackRate??1}set playbackRate(e){this.target&&(this.target.playbackRate=e)}get buffered(){return this.target?.buffered??d}get seekable(){return this.target?.seekable??d}get error(){return this.target?.error??null}get textTracks(){return this.target?.textTracks??[]}attach(e){if(!(!e||this.#e===e)){this.#e=e;for(let t of this.#t)e.addEventListener(t,this.#n)}}detach(){if(this.#e){for(let e of this.#t)this.#e.removeEventListener(e,this.#n);this.#e=null}}querySelectorAll(e){return this.target?.querySelectorAll(e)??[]}addEventListener(e,t,n){this.#t.has(e)||(this.#t.add(e),this.target?.addEventListener(e,this.#n)),super.addEventListener(e,t,n)}removeEventListener(e,t,n){super.removeEventListener(e,t,n)}#n=e=>{this.dispatchEvent(new e.constructor(e.type,e))}},p=class extends f{requestPictureInPicture(){return this.target?.requestPictureInPicture()??Promise.reject()}requestFullscreen(){return this.target?.requestFullscreen()??Promise.reject()}webkitEnterFullscreen(){return this.target?.webkitEnterFullscreen?.()}webkitExitFullscreen(){return this.target?.webkitExitFullscreen?.()}webkitSetPresentationMode(e){return this.target?.webkitSetPresentationMode?.(e)}get webkitDisplayingFullscreen(){return this.target?.webkitDisplayingFullscreen??!1}get webkitPresentationMode(){return this.target?.webkitPresentationMode??`inline`}};export{l as n,p as t};
47
+ //# sourceMappingURL=video-host-CPRJVRi3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-host-CPRJVRi3.js","names":["#define","#mediaHost","#attachToTarget","#childObserver","#syncMediaChildAttribute","#syncMediaChildren","#bridgedEventTypes","#bridgeEvent","#childMap","#enableDefaultTrack","#target","#types","#forwardEvent"],"sources":["../../utils/dist/object/omit.js","../../core/dist/default/dom/media/custom-media-element/index.js","../../core/dist/default/dom/media/media-host.js","../../core/dist/default/dom/media/video-host.js"],"sourcesContent":["//#region src/object/omit.ts\n/**\n* Creates a new object without the specified keys.\n*\n* @example\n* const obj = { a: 1, b: 2, c: 3 };\n* omit(obj, ['b']); // { a: 1, c: 3 }\n*/\nfunction omit(obj, keys) {\n\tconst result = {};\n\tfor (const key in obj) if (!keys.includes(key)) result[key] = obj[key];\n\treturn result;\n}\n//#endregion\nexport { omit };\n\n//# sourceMappingURL=omit.js.map","import { omit, pick } from \"@videojs/utils/object\";\nimport { namedNodeMapToObject, serializeAttributes } from \"@videojs/utils/dom\";\nimport { kebabCase } from \"@videojs/utils/string\";\n//#region src/dom/media/custom-media-element/index.ts\n/** CSS custom property names for video elements. */\nconst VideoCSSVars = {\n\tborderRadius: \"--media-video-border-radius\",\n\tobjectFit: \"--media-object-fit\",\n\tobjectPosition: \"--media-object-position\",\n\tcaptionTrackDuration: \"--media-caption-track-duration\",\n\tcaptionTrackDelay: \"--media-caption-track-delay\",\n\tcaptionTrackY: \"--media-caption-track-y\"\n};\n/** CSS custom property names for audio elements. */\nconst AudioCSSVars = {};\n/** Helper function to generate the HTML template for video elements. */\nfunction getVideoTemplateHTML(attrs) {\n\treturn `\n <style>\n :host {\n display: contents;\n }\n\n video {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: var(${VideoCSSVars.borderRadius});\n object-fit: var(${VideoCSSVars.objectFit}, contain);\n object-position: var(${VideoCSSVars.objectPosition}, center);\n }\n\n video::-webkit-media-text-track-container {\n transition: translate var(${VideoCSSVars.captionTrackDuration}, 0) ease-out;\n transition-delay: var(${VideoCSSVars.captionTrackDelay}, 0);\n translate: 0 var(${VideoCSSVars.captionTrackY}, 0);\n scale: 0.98;\n z-index: 1;\n font-family: inherit;\n }\n </style>\n <slot name=\"media\">\n <video${serializeAttributes(attrs)}></video>\n </slot>\n <slot></slot>\n `;\n}\n/** Helper function to generate the HTML template for other elements. */\nfunction getCommonTemplateHTML(tag) {\n\treturn (attrs) => {\n\t\treturn `\n <style>\n :host {\n display: inline-flex;\n line-height: 0;\n flex-direction: column;\n justify-content: end;\n }\n\n ${tag} {\n width: 100%;\n }\n </style>\n <slot name=\"media\">\n <${tag}${serializeAttributes(attrs)}></${tag}>\n </slot>\n <slot></slot>\n `;\n\t};\n}\nconst excludedProperties = [\n\t\"attach\",\n\t\"detach\",\n\t\"destroy\"\n];\nfunction CustomMediaElement(tag, MediaHost) {\n\tconst mediaHostAttrToProp = /* @__PURE__ */ new Map();\n\tlet isDefined = false;\n\tclass CustomMedia extends (globalThis.HTMLElement ?? class {}) {\n\t\tstatic getTemplateHTML = tag.endsWith(\"video\") ? getVideoTemplateHTML : getCommonTemplateHTML(tag);\n\t\tstatic shadowRootOptions = { mode: \"open\" };\n\t\tstatic properties = {\n\t\t\tautoPictureInPicture: { type: Boolean },\n\t\t\tautoplay: { type: Boolean },\n\t\t\tcontrols: { type: Boolean },\n\t\t\tcontrolsList: { type: String },\n\t\t\tcrossOrigin: { type: String },\n\t\t\tdefaultMuted: {\n\t\t\t\ttype: Boolean,\n\t\t\t\tattribute: \"muted\"\n\t\t\t},\n\t\t\tdisablePictureInPicture: { type: Boolean },\n\t\t\tdisableRemotePlayback: { type: Boolean },\n\t\t\tloading: { type: String },\n\t\t\tloop: { type: Boolean },\n\t\t\tplaysInline: { type: Boolean },\n\t\t\tposter: { type: String },\n\t\t\tpreload: { type: String },\n\t\t\tsrc: { type: String }\n\t\t};\n\t\tstatic get observedAttributes() {\n\t\t\tCustomMedia.#define(this);\n\t\t\treturn [...getAttrsFromProps(this.properties)];\n\t\t}\n\t\tstatic #define(ctor) {\n\t\t\tif (isDefined) return;\n\t\t\tisDefined = true;\n\t\t\tfor (let proto = MediaHost.prototype; proto && proto !== Object.prototype; proto = Object.getPrototypeOf(proto)) for (const prop of Object.getOwnPropertyNames(proto)) {\n\t\t\t\tif (prop in CustomMedia.prototype || excludedProperties.includes(prop)) continue;\n\t\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(proto, prop);\n\t\t\t\tif (!descriptor) continue;\n\t\t\t\tconst config = {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true\n\t\t\t\t};\n\t\t\t\tif (typeof descriptor.value === \"function\") config.value = function(...args) {\n\t\t\t\t\treturn this.#mediaHost[prop](...args);\n\t\t\t\t};\n\t\t\t\telse if (descriptor.get) {\n\t\t\t\t\tconfig.get = function() {\n\t\t\t\t\t\treturn this.#mediaHost[prop];\n\t\t\t\t\t};\n\t\t\t\t\tif (descriptor.set) {\n\t\t\t\t\t\tconst attr = kebabCase(prop);\n\t\t\t\t\t\tif (ctor.observedAttributes.includes(attr)) {\n\t\t\t\t\t\t\tmediaHostAttrToProp.set(attr, prop);\n\t\t\t\t\t\t\tconfig.set = function(val) {\n\t\t\t\t\t\t\t\tif (val === true || val === false || val == null) this.toggleAttribute(attr, Boolean(val));\n\t\t\t\t\t\t\t\telse this.setAttribute(attr, String(val));\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else config.set = function(val) {\n\t\t\t\t\t\t\tthis.#mediaHost[prop] = val;\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tObject.defineProperty(CustomMedia.prototype, prop, config);\n\t\t\t}\n\t\t\tconst properties = ctor.properties;\n\t\t\tfor (const [prop, { type, attribute }] of Object.entries(properties)) {\n\t\t\t\tif (prop in CustomMedia.prototype) continue;\n\t\t\t\tconst attr = attribute ?? prop.toLowerCase();\n\t\t\t\tObject.defineProperty(CustomMedia.prototype, prop, {\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\treturn type === Boolean ? this.hasAttribute(attr) : this.getAttribute(attr);\n\t\t\t\t\t},\n\t\t\t\t\tset: function(val) {\n\t\t\t\t\t\tif (type === Boolean) this.toggleAttribute(attr, Boolean(val));\n\t\t\t\t\t\telse this.setAttribute(attr, val);\n\t\t\t\t\t},\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t#mediaHost;\n\t\t#bridgedEventTypes = /* @__PURE__ */ new Set();\n\t\t#childMap = /* @__PURE__ */ new Map();\n\t\t#childObserver;\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tif (!this.shadowRoot) {\n\t\t\t\tconst ctor = this.constructor;\n\t\t\t\tthis.attachShadow(ctor.shadowRootOptions);\n\t\t\t\tconst allowedKeys = getAttrsFromProps(ctor.properties);\n\t\t\t\tconst disallowedKeys = [...mediaHostAttrToProp.keys()];\n\t\t\t\tconst attrs = omit(pick(namedNodeMapToObject(this.attributes), allowedKeys), disallowedKeys);\n\t\t\t\tif (tag && !attrs.part) attrs.part = tag;\n\t\t\t\tthis.shadowRoot.innerHTML = ctor.getTemplateHTML(attrs);\n\t\t\t}\n\t\t\tthis.#mediaHost = new MediaHost();\n\t\t\tthis.#attachToTarget();\n\t\t\tthis.#childObserver = new MutationObserver(this.#syncMediaChildAttribute.bind(this));\n\t\t\tthis.shadowRoot.addEventListener(\"slotchange\", () => {\n\t\t\t\tthis.#attachToTarget();\n\t\t\t\tthis.#syncMediaChildren();\n\t\t\t});\n\t\t\tthis.#syncMediaChildren();\n\t\t}\n\t\t#attachToTarget() {\n\t\t\tconst target = this.target;\n\t\t\tif (target === this.#mediaHost.target) return;\n\t\t\tif (this.#mediaHost.target) this.#mediaHost.detach();\n\t\t\tthis.#mediaHost.attach(target);\n\t\t}\n\t\tget target() {\n\t\t\treturn this.querySelector(\":scope > [slot=media]\") ?? this.querySelector(tag) ?? this.shadowRoot?.querySelector(tag) ?? null;\n\t\t}\n\t\tdisconnectedCallback() {\n\t\t\tif (!this.hasAttribute(\"keep-alive\")) this.#mediaHost.destroy();\n\t\t}\n\t\taddEventListener(type, listener, options) {\n\t\t\tsuper.addEventListener(type, listener, options);\n\t\t\tif (!this.#bridgedEventTypes.has(type)) {\n\t\t\t\tthis.#bridgedEventTypes.add(type);\n\t\t\t\tthis.#mediaHost.addEventListener(type, this.#bridgeEvent);\n\t\t\t}\n\t\t}\n\t\tremoveEventListener(type, listener, options) {\n\t\t\tsuper.removeEventListener(type, listener, options);\n\t\t}\n\t\t#bridgeEvent = (event) => {\n\t\t\tif (!event.composed) this.dispatchEvent(new event.constructor(event.type, event));\n\t\t};\n\t\tattributeChangedCallback(attrName, oldValue, newValue) {\n\t\t\tconst prop = mediaHostAttrToProp.get(attrName);\n\t\t\tif (prop) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tconst valueType = typeof this.#mediaHost[prop];\n\t\t\t\t\tthis.#mediaHost[prop] = valueType === \"boolean\" ? newValue !== null : valueType === \"number\" ? Number(newValue) : newValue ?? \"\";\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!CustomMedia.observedAttributes.includes(attrName) && this.constructor.observedAttributes.includes(attrName)) return;\n\t\t\tif (newValue === null) this.target?.removeAttribute(attrName);\n\t\t\telse if (this.target?.getAttribute(attrName) !== newValue) this.target?.setAttribute(attrName, newValue);\n\t\t}\n\t\t#syncMediaChildren() {\n\t\t\tconst defaultSlot = this.shadowRoot?.querySelector(\"slot:not([name])\");\n\t\t\tconst mediaChildren = new Set(defaultSlot?.assignedElements({ flatten: true }).filter((el) => el.localName === \"track\" || el.localName === \"source\"));\n\t\t\tfor (const [el, clone] of this.#childMap) if (!mediaChildren.has(el)) {\n\t\t\t\tclone.remove();\n\t\t\t\tthis.#childMap.delete(el);\n\t\t\t}\n\t\t\tfor (const el of mediaChildren) {\n\t\t\t\tlet clone = this.#childMap.get(el);\n\t\t\t\tif (!clone) {\n\t\t\t\t\tclone = el.cloneNode();\n\t\t\t\t\tthis.#childMap.set(el, clone);\n\t\t\t\t\tthis.#childObserver?.observe(el, { attributes: true });\n\t\t\t\t}\n\t\t\t\tthis.target?.append(clone);\n\t\t\t\tthis.#enableDefaultTrack(clone);\n\t\t\t}\n\t\t}\n\t\t#syncMediaChildAttribute(mutations) {\n\t\t\tfor (const mutation of mutations) if (mutation.type === \"attributes\") {\n\t\t\t\tconst { target, attributeName } = mutation;\n\t\t\t\tconst clone = this.#childMap.get(target);\n\t\t\t\tif (clone && attributeName) {\n\t\t\t\t\tclone.setAttribute(attributeName, target.getAttribute(attributeName) ?? \"\");\n\t\t\t\t\tthis.#enableDefaultTrack(clone);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#enableDefaultTrack(trackEl) {\n\t\t\tif (trackEl && trackEl.localName === \"track\" && trackEl.default && (trackEl.kind === \"chapters\" || trackEl.kind === \"metadata\") && trackEl.track.mode === \"disabled\") trackEl.track.mode = \"hidden\";\n\t\t}\n\t}\n\treturn CustomMedia;\n}\nfunction getAttrsFromProps(props) {\n\treturn Object.keys(props).map((prop) => props[prop]?.attribute ?? prop.toLowerCase());\n}\n//#endregion\nexport { AudioCSSVars, CustomMediaElement, VideoCSSVars };\n\n//# sourceMappingURL=index.js.map","//#region src/dom/media/media-host.ts\nconst EMPTY_TIME_RANGES = Object.freeze({\n\tlength: 0,\n\tstart() {\n\t\treturn 0;\n\t},\n\tend() {\n\t\treturn 0;\n\t}\n});\nvar HTMLMediaElementHost = class extends EventTarget {\n\t#target = null;\n\t#types = /* @__PURE__ */ new Set();\n\tget target() {\n\t\treturn this.#target;\n\t}\n\tget paused() {\n\t\treturn this.target?.paused ?? true;\n\t}\n\tget ended() {\n\t\treturn this.target?.ended ?? false;\n\t}\n\tplay() {\n\t\treturn this.target?.play() ?? Promise.reject();\n\t}\n\tpause() {\n\t\tthis.target?.pause();\n\t}\n\tget currentTime() {\n\t\treturn this.target?.currentTime ?? 0;\n\t}\n\tset currentTime(value) {\n\t\tif (this.target) this.target.currentTime = value;\n\t}\n\tget duration() {\n\t\treturn this.target?.duration ?? NaN;\n\t}\n\tget seeking() {\n\t\treturn this.target?.seeking ?? false;\n\t}\n\tget src() {\n\t\treturn this.target?.src ?? \"\";\n\t}\n\tset src(value) {\n\t\tif (this.target) this.target.src = value;\n\t}\n\tget currentSrc() {\n\t\treturn this.target?.currentSrc ?? \"\";\n\t}\n\tget readyState() {\n\t\treturn this.target?.readyState ?? 0;\n\t}\n\tload() {\n\t\tthis.target?.load();\n\t}\n\tget volume() {\n\t\treturn this.target?.volume ?? 1;\n\t}\n\tset volume(value) {\n\t\tif (this.target) this.target.volume = value;\n\t}\n\tget muted() {\n\t\treturn this.target?.muted ?? false;\n\t}\n\tset muted(value) {\n\t\tif (this.target) this.target.muted = value;\n\t}\n\tget playbackRate() {\n\t\treturn this.target?.playbackRate ?? 1;\n\t}\n\tset playbackRate(value) {\n\t\tif (this.target) this.target.playbackRate = value;\n\t}\n\tget buffered() {\n\t\treturn this.target?.buffered ?? EMPTY_TIME_RANGES;\n\t}\n\tget seekable() {\n\t\treturn this.target?.seekable ?? EMPTY_TIME_RANGES;\n\t}\n\tget error() {\n\t\treturn this.target?.error ?? null;\n\t}\n\tget textTracks() {\n\t\treturn this.target?.textTracks ?? [];\n\t}\n\tattach(target) {\n\t\tif (!target || this.#target === target) return;\n\t\tthis.#target = target;\n\t\tfor (const type of this.#types) target.addEventListener(type, this.#forwardEvent);\n\t}\n\tdetach() {\n\t\tif (!this.#target) return;\n\t\tfor (const type of this.#types) this.#target.removeEventListener(type, this.#forwardEvent);\n\t\tthis.#target = null;\n\t}\n\tquerySelectorAll(selectors) {\n\t\treturn this.target?.querySelectorAll(selectors) ?? [];\n\t}\n\taddEventListener(type, listener, options) {\n\t\tif (!this.#types.has(type)) {\n\t\t\tthis.#types.add(type);\n\t\t\tthis.target?.addEventListener(type, this.#forwardEvent);\n\t\t}\n\t\tsuper.addEventListener(type, listener, options);\n\t}\n\tremoveEventListener(type, listener, options) {\n\t\tsuper.removeEventListener(type, listener, options);\n\t}\n\t#forwardEvent = (event) => {\n\t\tthis.dispatchEvent(new event.constructor(event.type, event));\n\t};\n};\n//#endregion\nexport { HTMLMediaElementHost };\n\n//# sourceMappingURL=media-host.js.map","import { HTMLMediaElementHost } from \"./media-host.js\";\n//#region src/dom/media/video-host.ts\nvar HTMLVideoElementHost = class extends HTMLMediaElementHost {\n\trequestPictureInPicture() {\n\t\treturn this.target?.requestPictureInPicture() ?? Promise.reject();\n\t}\n\trequestFullscreen() {\n\t\treturn this.target?.requestFullscreen() ?? Promise.reject();\n\t}\n\twebkitEnterFullscreen() {\n\t\treturn this.target?.webkitEnterFullscreen?.();\n\t}\n\twebkitExitFullscreen() {\n\t\treturn this.target?.webkitExitFullscreen?.();\n\t}\n\twebkitSetPresentationMode(mode) {\n\t\treturn this.target?.webkitSetPresentationMode?.(mode);\n\t}\n\tget webkitDisplayingFullscreen() {\n\t\treturn this.target?.webkitDisplayingFullscreen ?? false;\n\t}\n\tget webkitPresentationMode() {\n\t\treturn this.target?.webkitPresentationMode ?? \"inline\";\n\t}\n};\n//#endregion\nexport { HTMLVideoElementHost };\n\n//# sourceMappingURL=video-host.js.map"],"mappings":"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"}
@@ -0,0 +1,410 @@
1
+ import { n as namedNodeMapToObject, r as serializeAttributes } from "./media-attach-mixin-CYoNe7Sh.js";
2
+ import { n as kebabCase, t as pick } from "./pick-D-wCJ3iA.js";
3
+
4
+ //#region ../utils/dist/object/omit.js
5
+ /**
6
+ * Creates a new object without the specified keys.
7
+ *
8
+ * @example
9
+ * const obj = { a: 1, b: 2, c: 3 };
10
+ * omit(obj, ['b']); // { a: 1, c: 3 }
11
+ */
12
+ function omit(obj, keys) {
13
+ const result = {};
14
+ for (const key in obj) if (!keys.includes(key)) result[key] = obj[key];
15
+ return result;
16
+ }
17
+
18
+ //#endregion
19
+ //#region ../core/dist/dev/dom/media/custom-media-element/index.js
20
+ /** CSS custom property names for video elements. */
21
+ const VideoCSSVars = {
22
+ borderRadius: "--media-video-border-radius",
23
+ objectFit: "--media-object-fit",
24
+ objectPosition: "--media-object-position",
25
+ captionTrackDuration: "--media-caption-track-duration",
26
+ captionTrackDelay: "--media-caption-track-delay",
27
+ captionTrackY: "--media-caption-track-y"
28
+ };
29
+ /** Helper function to generate the HTML template for video elements. */
30
+ function getVideoTemplateHTML(attrs) {
31
+ return `
32
+ <style>
33
+ :host {
34
+ display: contents;
35
+ }
36
+
37
+ video {
38
+ display: block;
39
+ width: 100%;
40
+ height: 100%;
41
+ border-radius: var(${VideoCSSVars.borderRadius});
42
+ object-fit: var(${VideoCSSVars.objectFit}, contain);
43
+ object-position: var(${VideoCSSVars.objectPosition}, center);
44
+ }
45
+
46
+ video::-webkit-media-text-track-container {
47
+ transition: translate var(${VideoCSSVars.captionTrackDuration}, 0) ease-out;
48
+ transition-delay: var(${VideoCSSVars.captionTrackDelay}, 0);
49
+ translate: 0 var(${VideoCSSVars.captionTrackY}, 0);
50
+ scale: 0.98;
51
+ z-index: 1;
52
+ font-family: inherit;
53
+ }
54
+ </style>
55
+ <slot name="media">
56
+ <video${serializeAttributes(attrs)}></video>
57
+ </slot>
58
+ <slot></slot>
59
+ `;
60
+ }
61
+ /** Helper function to generate the HTML template for other elements. */
62
+ function getCommonTemplateHTML(tag) {
63
+ return (attrs) => {
64
+ return `
65
+ <style>
66
+ :host {
67
+ display: inline-flex;
68
+ line-height: 0;
69
+ flex-direction: column;
70
+ justify-content: end;
71
+ }
72
+
73
+ ${tag} {
74
+ width: 100%;
75
+ }
76
+ </style>
77
+ <slot name="media">
78
+ <${tag}${serializeAttributes(attrs)}></${tag}>
79
+ </slot>
80
+ <slot></slot>
81
+ `;
82
+ };
83
+ }
84
+ const excludedProperties = [
85
+ "attach",
86
+ "detach",
87
+ "destroy"
88
+ ];
89
+ function CustomMediaElement(tag, MediaHost) {
90
+ const mediaHostAttrToProp = /* @__PURE__ */ new Map();
91
+ let isDefined = false;
92
+ class CustomMedia extends (globalThis.HTMLElement ?? class {}) {
93
+ static getTemplateHTML = tag.endsWith("video") ? getVideoTemplateHTML : getCommonTemplateHTML(tag);
94
+ static shadowRootOptions = { mode: "open" };
95
+ static properties = {
96
+ autoPictureInPicture: { type: Boolean },
97
+ autoplay: { type: Boolean },
98
+ controls: { type: Boolean },
99
+ controlsList: { type: String },
100
+ crossOrigin: { type: String },
101
+ defaultMuted: {
102
+ type: Boolean,
103
+ attribute: "muted"
104
+ },
105
+ disablePictureInPicture: { type: Boolean },
106
+ disableRemotePlayback: { type: Boolean },
107
+ loading: { type: String },
108
+ loop: { type: Boolean },
109
+ playsInline: { type: Boolean },
110
+ poster: { type: String },
111
+ preload: { type: String },
112
+ src: { type: String }
113
+ };
114
+ static get observedAttributes() {
115
+ CustomMedia.#define(this);
116
+ return [...getAttrsFromProps(this.properties)];
117
+ }
118
+ static #define(ctor) {
119
+ if (isDefined) return;
120
+ isDefined = true;
121
+ for (let proto = MediaHost.prototype; proto && proto !== Object.prototype; proto = Object.getPrototypeOf(proto)) for (const prop of Object.getOwnPropertyNames(proto)) {
122
+ if (prop in CustomMedia.prototype || excludedProperties.includes(prop)) continue;
123
+ const descriptor = Object.getOwnPropertyDescriptor(proto, prop);
124
+ if (!descriptor) continue;
125
+ const config = {
126
+ enumerable: true,
127
+ configurable: true
128
+ };
129
+ if (typeof descriptor.value === "function") config.value = function(...args) {
130
+ return this.#mediaHost[prop](...args);
131
+ };
132
+ else if (descriptor.get) {
133
+ config.get = function() {
134
+ return this.#mediaHost[prop];
135
+ };
136
+ if (descriptor.set) {
137
+ const attr = kebabCase(prop);
138
+ if (ctor.observedAttributes.includes(attr)) {
139
+ mediaHostAttrToProp.set(attr, prop);
140
+ config.set = function(val) {
141
+ if (val === true || val === false || val == null) this.toggleAttribute(attr, Boolean(val));
142
+ else this.setAttribute(attr, String(val));
143
+ };
144
+ } else config.set = function(val) {
145
+ this.#mediaHost[prop] = val;
146
+ };
147
+ }
148
+ }
149
+ Object.defineProperty(CustomMedia.prototype, prop, config);
150
+ }
151
+ const properties = ctor.properties;
152
+ for (const [prop, { type, attribute }] of Object.entries(properties)) {
153
+ if (prop in CustomMedia.prototype) continue;
154
+ const attr = attribute ?? prop.toLowerCase();
155
+ Object.defineProperty(CustomMedia.prototype, prop, {
156
+ get: function() {
157
+ return type === Boolean ? this.hasAttribute(attr) : this.getAttribute(attr);
158
+ },
159
+ set: function(val) {
160
+ if (type === Boolean) this.toggleAttribute(attr, Boolean(val));
161
+ else this.setAttribute(attr, val);
162
+ },
163
+ enumerable: true,
164
+ configurable: true
165
+ });
166
+ }
167
+ }
168
+ #mediaHost;
169
+ #bridgedEventTypes = /* @__PURE__ */ new Set();
170
+ #childMap = /* @__PURE__ */ new Map();
171
+ #childObserver;
172
+ constructor() {
173
+ super();
174
+ if (!this.shadowRoot) {
175
+ const ctor = this.constructor;
176
+ this.attachShadow(ctor.shadowRootOptions);
177
+ const allowedKeys = getAttrsFromProps(ctor.properties);
178
+ const disallowedKeys = [...mediaHostAttrToProp.keys()];
179
+ const attrs = omit(pick(namedNodeMapToObject(this.attributes), allowedKeys), disallowedKeys);
180
+ if (tag && !attrs.part) attrs.part = tag;
181
+ this.shadowRoot.innerHTML = ctor.getTemplateHTML(attrs);
182
+ }
183
+ this.#mediaHost = new MediaHost();
184
+ this.#attachToTarget();
185
+ this.#childObserver = new MutationObserver(this.#syncMediaChildAttribute.bind(this));
186
+ this.shadowRoot.addEventListener("slotchange", () => {
187
+ this.#attachToTarget();
188
+ this.#syncMediaChildren();
189
+ });
190
+ this.#syncMediaChildren();
191
+ }
192
+ #attachToTarget() {
193
+ const target = this.target;
194
+ if (target === this.#mediaHost.target) return;
195
+ if (this.#mediaHost.target) this.#mediaHost.detach();
196
+ this.#mediaHost.attach(target);
197
+ }
198
+ get target() {
199
+ return this.querySelector(":scope > [slot=media]") ?? this.querySelector(tag) ?? this.shadowRoot?.querySelector(tag) ?? null;
200
+ }
201
+ disconnectedCallback() {
202
+ if (!this.hasAttribute("keep-alive")) this.#mediaHost.destroy();
203
+ }
204
+ addEventListener(type, listener, options) {
205
+ super.addEventListener(type, listener, options);
206
+ if (!this.#bridgedEventTypes.has(type)) {
207
+ this.#bridgedEventTypes.add(type);
208
+ this.#mediaHost.addEventListener(type, this.#bridgeEvent);
209
+ }
210
+ }
211
+ removeEventListener(type, listener, options) {
212
+ super.removeEventListener(type, listener, options);
213
+ }
214
+ #bridgeEvent = (event) => {
215
+ if (!event.composed) this.dispatchEvent(new event.constructor(event.type, event));
216
+ };
217
+ attributeChangedCallback(attrName, oldValue, newValue) {
218
+ const prop = mediaHostAttrToProp.get(attrName);
219
+ if (prop) {
220
+ if (oldValue !== newValue) {
221
+ const valueType = typeof this.#mediaHost[prop];
222
+ this.#mediaHost[prop] = valueType === "boolean" ? newValue !== null : valueType === "number" ? Number(newValue) : newValue ?? "";
223
+ }
224
+ return;
225
+ }
226
+ if (!CustomMedia.observedAttributes.includes(attrName) && this.constructor.observedAttributes.includes(attrName)) return;
227
+ if (newValue === null) this.target?.removeAttribute(attrName);
228
+ else if (this.target?.getAttribute(attrName) !== newValue) this.target?.setAttribute(attrName, newValue);
229
+ }
230
+ #syncMediaChildren() {
231
+ const defaultSlot = this.shadowRoot?.querySelector("slot:not([name])");
232
+ const mediaChildren = new Set(defaultSlot?.assignedElements({ flatten: true }).filter((el) => el.localName === "track" || el.localName === "source"));
233
+ for (const [el, clone] of this.#childMap) if (!mediaChildren.has(el)) {
234
+ clone.remove();
235
+ this.#childMap.delete(el);
236
+ }
237
+ for (const el of mediaChildren) {
238
+ let clone = this.#childMap.get(el);
239
+ if (!clone) {
240
+ clone = el.cloneNode();
241
+ this.#childMap.set(el, clone);
242
+ this.#childObserver?.observe(el, { attributes: true });
243
+ }
244
+ this.target?.append(clone);
245
+ this.#enableDefaultTrack(clone);
246
+ }
247
+ }
248
+ #syncMediaChildAttribute(mutations) {
249
+ for (const mutation of mutations) if (mutation.type === "attributes") {
250
+ const { target, attributeName } = mutation;
251
+ const clone = this.#childMap.get(target);
252
+ if (clone && attributeName) {
253
+ clone.setAttribute(attributeName, target.getAttribute(attributeName) ?? "");
254
+ this.#enableDefaultTrack(clone);
255
+ }
256
+ }
257
+ }
258
+ #enableDefaultTrack(trackEl) {
259
+ if (trackEl && trackEl.localName === "track" && trackEl.default && (trackEl.kind === "chapters" || trackEl.kind === "metadata") && trackEl.track.mode === "disabled") trackEl.track.mode = "hidden";
260
+ }
261
+ }
262
+ return CustomMedia;
263
+ }
264
+ function getAttrsFromProps(props) {
265
+ return Object.keys(props).map((prop) => props[prop]?.attribute ?? prop.toLowerCase());
266
+ }
267
+
268
+ //#endregion
269
+ //#region ../core/dist/dev/dom/media/media-host.js
270
+ const EMPTY_TIME_RANGES = Object.freeze({
271
+ length: 0,
272
+ start() {
273
+ return 0;
274
+ },
275
+ end() {
276
+ return 0;
277
+ }
278
+ });
279
+ var HTMLMediaElementHost = class extends EventTarget {
280
+ #target = null;
281
+ #types = /* @__PURE__ */ new Set();
282
+ get target() {
283
+ return this.#target;
284
+ }
285
+ get paused() {
286
+ return this.target?.paused ?? true;
287
+ }
288
+ get ended() {
289
+ return this.target?.ended ?? false;
290
+ }
291
+ play() {
292
+ return this.target?.play() ?? Promise.reject();
293
+ }
294
+ pause() {
295
+ this.target?.pause();
296
+ }
297
+ get currentTime() {
298
+ return this.target?.currentTime ?? 0;
299
+ }
300
+ set currentTime(value) {
301
+ if (this.target) this.target.currentTime = value;
302
+ }
303
+ get duration() {
304
+ return this.target?.duration ?? NaN;
305
+ }
306
+ get seeking() {
307
+ return this.target?.seeking ?? false;
308
+ }
309
+ get src() {
310
+ return this.target?.src ?? "";
311
+ }
312
+ set src(value) {
313
+ if (this.target) this.target.src = value;
314
+ }
315
+ get currentSrc() {
316
+ return this.target?.currentSrc ?? "";
317
+ }
318
+ get readyState() {
319
+ return this.target?.readyState ?? 0;
320
+ }
321
+ load() {
322
+ this.target?.load();
323
+ }
324
+ get volume() {
325
+ return this.target?.volume ?? 1;
326
+ }
327
+ set volume(value) {
328
+ if (this.target) this.target.volume = value;
329
+ }
330
+ get muted() {
331
+ return this.target?.muted ?? false;
332
+ }
333
+ set muted(value) {
334
+ if (this.target) this.target.muted = value;
335
+ }
336
+ get playbackRate() {
337
+ return this.target?.playbackRate ?? 1;
338
+ }
339
+ set playbackRate(value) {
340
+ if (this.target) this.target.playbackRate = value;
341
+ }
342
+ get buffered() {
343
+ return this.target?.buffered ?? EMPTY_TIME_RANGES;
344
+ }
345
+ get seekable() {
346
+ return this.target?.seekable ?? EMPTY_TIME_RANGES;
347
+ }
348
+ get error() {
349
+ return this.target?.error ?? null;
350
+ }
351
+ get textTracks() {
352
+ return this.target?.textTracks ?? [];
353
+ }
354
+ attach(target) {
355
+ if (!target || this.#target === target) return;
356
+ this.#target = target;
357
+ for (const type of this.#types) target.addEventListener(type, this.#forwardEvent);
358
+ }
359
+ detach() {
360
+ if (!this.#target) return;
361
+ for (const type of this.#types) this.#target.removeEventListener(type, this.#forwardEvent);
362
+ this.#target = null;
363
+ }
364
+ querySelectorAll(selectors) {
365
+ return this.target?.querySelectorAll(selectors) ?? [];
366
+ }
367
+ addEventListener(type, listener, options) {
368
+ if (!this.#types.has(type)) {
369
+ this.#types.add(type);
370
+ this.target?.addEventListener(type, this.#forwardEvent);
371
+ }
372
+ super.addEventListener(type, listener, options);
373
+ }
374
+ removeEventListener(type, listener, options) {
375
+ super.removeEventListener(type, listener, options);
376
+ }
377
+ #forwardEvent = (event) => {
378
+ this.dispatchEvent(new event.constructor(event.type, event));
379
+ };
380
+ };
381
+
382
+ //#endregion
383
+ //#region ../core/dist/dev/dom/media/video-host.js
384
+ var HTMLVideoElementHost = class extends HTMLMediaElementHost {
385
+ requestPictureInPicture() {
386
+ return this.target?.requestPictureInPicture() ?? Promise.reject();
387
+ }
388
+ requestFullscreen() {
389
+ return this.target?.requestFullscreen() ?? Promise.reject();
390
+ }
391
+ webkitEnterFullscreen() {
392
+ return this.target?.webkitEnterFullscreen?.();
393
+ }
394
+ webkitExitFullscreen() {
395
+ return this.target?.webkitExitFullscreen?.();
396
+ }
397
+ webkitSetPresentationMode(mode) {
398
+ return this.target?.webkitSetPresentationMode?.(mode);
399
+ }
400
+ get webkitDisplayingFullscreen() {
401
+ return this.target?.webkitDisplayingFullscreen ?? false;
402
+ }
403
+ get webkitPresentationMode() {
404
+ return this.target?.webkitPresentationMode ?? "inline";
405
+ }
406
+ };
407
+
408
+ //#endregion
409
+ export { CustomMediaElement as n, HTMLVideoElementHost as t };
410
+ //# sourceMappingURL=video-host-ycP7ckxU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-host-ycP7ckxU.js","names":["#define","#mediaHost","#attachToTarget","#childObserver","#syncMediaChildAttribute","#syncMediaChildren","#bridgedEventTypes","#bridgeEvent","#childMap","#enableDefaultTrack","#target","#types","#forwardEvent"],"sources":["../../utils/dist/object/omit.js","../../core/dist/dev/dom/media/custom-media-element/index.js","../../core/dist/dev/dom/media/media-host.js","../../core/dist/dev/dom/media/video-host.js"],"sourcesContent":["//#region src/object/omit.ts\n/**\n* Creates a new object without the specified keys.\n*\n* @example\n* const obj = { a: 1, b: 2, c: 3 };\n* omit(obj, ['b']); // { a: 1, c: 3 }\n*/\nfunction omit(obj, keys) {\n\tconst result = {};\n\tfor (const key in obj) if (!keys.includes(key)) result[key] = obj[key];\n\treturn result;\n}\n//#endregion\nexport { omit };\n\n//# sourceMappingURL=omit.js.map","import { omit, pick } from \"@videojs/utils/object\";\nimport { namedNodeMapToObject, serializeAttributes } from \"@videojs/utils/dom\";\nimport { kebabCase } from \"@videojs/utils/string\";\n//#region src/dom/media/custom-media-element/index.ts\n/** CSS custom property names for video elements. */\nconst VideoCSSVars = {\n\tborderRadius: \"--media-video-border-radius\",\n\tobjectFit: \"--media-object-fit\",\n\tobjectPosition: \"--media-object-position\",\n\tcaptionTrackDuration: \"--media-caption-track-duration\",\n\tcaptionTrackDelay: \"--media-caption-track-delay\",\n\tcaptionTrackY: \"--media-caption-track-y\"\n};\n/** CSS custom property names for audio elements. */\nconst AudioCSSVars = {};\n/** Helper function to generate the HTML template for video elements. */\nfunction getVideoTemplateHTML(attrs) {\n\treturn `\n <style>\n :host {\n display: contents;\n }\n\n video {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: var(${VideoCSSVars.borderRadius});\n object-fit: var(${VideoCSSVars.objectFit}, contain);\n object-position: var(${VideoCSSVars.objectPosition}, center);\n }\n\n video::-webkit-media-text-track-container {\n transition: translate var(${VideoCSSVars.captionTrackDuration}, 0) ease-out;\n transition-delay: var(${VideoCSSVars.captionTrackDelay}, 0);\n translate: 0 var(${VideoCSSVars.captionTrackY}, 0);\n scale: 0.98;\n z-index: 1;\n font-family: inherit;\n }\n </style>\n <slot name=\"media\">\n <video${serializeAttributes(attrs)}></video>\n </slot>\n <slot></slot>\n `;\n}\n/** Helper function to generate the HTML template for other elements. */\nfunction getCommonTemplateHTML(tag) {\n\treturn (attrs) => {\n\t\treturn `\n <style>\n :host {\n display: inline-flex;\n line-height: 0;\n flex-direction: column;\n justify-content: end;\n }\n\n ${tag} {\n width: 100%;\n }\n </style>\n <slot name=\"media\">\n <${tag}${serializeAttributes(attrs)}></${tag}>\n </slot>\n <slot></slot>\n `;\n\t};\n}\nconst excludedProperties = [\n\t\"attach\",\n\t\"detach\",\n\t\"destroy\"\n];\nfunction CustomMediaElement(tag, MediaHost) {\n\tconst mediaHostAttrToProp = /* @__PURE__ */ new Map();\n\tlet isDefined = false;\n\tclass CustomMedia extends (globalThis.HTMLElement ?? class {}) {\n\t\tstatic getTemplateHTML = tag.endsWith(\"video\") ? getVideoTemplateHTML : getCommonTemplateHTML(tag);\n\t\tstatic shadowRootOptions = { mode: \"open\" };\n\t\tstatic properties = {\n\t\t\tautoPictureInPicture: { type: Boolean },\n\t\t\tautoplay: { type: Boolean },\n\t\t\tcontrols: { type: Boolean },\n\t\t\tcontrolsList: { type: String },\n\t\t\tcrossOrigin: { type: String },\n\t\t\tdefaultMuted: {\n\t\t\t\ttype: Boolean,\n\t\t\t\tattribute: \"muted\"\n\t\t\t},\n\t\t\tdisablePictureInPicture: { type: Boolean },\n\t\t\tdisableRemotePlayback: { type: Boolean },\n\t\t\tloading: { type: String },\n\t\t\tloop: { type: Boolean },\n\t\t\tplaysInline: { type: Boolean },\n\t\t\tposter: { type: String },\n\t\t\tpreload: { type: String },\n\t\t\tsrc: { type: String }\n\t\t};\n\t\tstatic get observedAttributes() {\n\t\t\tCustomMedia.#define(this);\n\t\t\treturn [...getAttrsFromProps(this.properties)];\n\t\t}\n\t\tstatic #define(ctor) {\n\t\t\tif (isDefined) return;\n\t\t\tisDefined = true;\n\t\t\tfor (let proto = MediaHost.prototype; proto && proto !== Object.prototype; proto = Object.getPrototypeOf(proto)) for (const prop of Object.getOwnPropertyNames(proto)) {\n\t\t\t\tif (prop in CustomMedia.prototype || excludedProperties.includes(prop)) continue;\n\t\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(proto, prop);\n\t\t\t\tif (!descriptor) continue;\n\t\t\t\tconst config = {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true\n\t\t\t\t};\n\t\t\t\tif (typeof descriptor.value === \"function\") config.value = function(...args) {\n\t\t\t\t\treturn this.#mediaHost[prop](...args);\n\t\t\t\t};\n\t\t\t\telse if (descriptor.get) {\n\t\t\t\t\tconfig.get = function() {\n\t\t\t\t\t\treturn this.#mediaHost[prop];\n\t\t\t\t\t};\n\t\t\t\t\tif (descriptor.set) {\n\t\t\t\t\t\tconst attr = kebabCase(prop);\n\t\t\t\t\t\tif (ctor.observedAttributes.includes(attr)) {\n\t\t\t\t\t\t\tmediaHostAttrToProp.set(attr, prop);\n\t\t\t\t\t\t\tconfig.set = function(val) {\n\t\t\t\t\t\t\t\tif (val === true || val === false || val == null) this.toggleAttribute(attr, Boolean(val));\n\t\t\t\t\t\t\t\telse this.setAttribute(attr, String(val));\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else config.set = function(val) {\n\t\t\t\t\t\t\tthis.#mediaHost[prop] = val;\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tObject.defineProperty(CustomMedia.prototype, prop, config);\n\t\t\t}\n\t\t\tconst properties = ctor.properties;\n\t\t\tfor (const [prop, { type, attribute }] of Object.entries(properties)) {\n\t\t\t\tif (prop in CustomMedia.prototype) continue;\n\t\t\t\tconst attr = attribute ?? prop.toLowerCase();\n\t\t\t\tObject.defineProperty(CustomMedia.prototype, prop, {\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\treturn type === Boolean ? this.hasAttribute(attr) : this.getAttribute(attr);\n\t\t\t\t\t},\n\t\t\t\t\tset: function(val) {\n\t\t\t\t\t\tif (type === Boolean) this.toggleAttribute(attr, Boolean(val));\n\t\t\t\t\t\telse this.setAttribute(attr, val);\n\t\t\t\t\t},\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t#mediaHost;\n\t\t#bridgedEventTypes = /* @__PURE__ */ new Set();\n\t\t#childMap = /* @__PURE__ */ new Map();\n\t\t#childObserver;\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tif (!this.shadowRoot) {\n\t\t\t\tconst ctor = this.constructor;\n\t\t\t\tthis.attachShadow(ctor.shadowRootOptions);\n\t\t\t\tconst allowedKeys = getAttrsFromProps(ctor.properties);\n\t\t\t\tconst disallowedKeys = [...mediaHostAttrToProp.keys()];\n\t\t\t\tconst attrs = omit(pick(namedNodeMapToObject(this.attributes), allowedKeys), disallowedKeys);\n\t\t\t\tif (tag && !attrs.part) attrs.part = tag;\n\t\t\t\tthis.shadowRoot.innerHTML = ctor.getTemplateHTML(attrs);\n\t\t\t}\n\t\t\tthis.#mediaHost = new MediaHost();\n\t\t\tthis.#attachToTarget();\n\t\t\tthis.#childObserver = new MutationObserver(this.#syncMediaChildAttribute.bind(this));\n\t\t\tthis.shadowRoot.addEventListener(\"slotchange\", () => {\n\t\t\t\tthis.#attachToTarget();\n\t\t\t\tthis.#syncMediaChildren();\n\t\t\t});\n\t\t\tthis.#syncMediaChildren();\n\t\t}\n\t\t#attachToTarget() {\n\t\t\tconst target = this.target;\n\t\t\tif (target === this.#mediaHost.target) return;\n\t\t\tif (this.#mediaHost.target) this.#mediaHost.detach();\n\t\t\tthis.#mediaHost.attach(target);\n\t\t}\n\t\tget target() {\n\t\t\treturn this.querySelector(\":scope > [slot=media]\") ?? this.querySelector(tag) ?? this.shadowRoot?.querySelector(tag) ?? null;\n\t\t}\n\t\tdisconnectedCallback() {\n\t\t\tif (!this.hasAttribute(\"keep-alive\")) this.#mediaHost.destroy();\n\t\t}\n\t\taddEventListener(type, listener, options) {\n\t\t\tsuper.addEventListener(type, listener, options);\n\t\t\tif (!this.#bridgedEventTypes.has(type)) {\n\t\t\t\tthis.#bridgedEventTypes.add(type);\n\t\t\t\tthis.#mediaHost.addEventListener(type, this.#bridgeEvent);\n\t\t\t}\n\t\t}\n\t\tremoveEventListener(type, listener, options) {\n\t\t\tsuper.removeEventListener(type, listener, options);\n\t\t}\n\t\t#bridgeEvent = (event) => {\n\t\t\tif (!event.composed) this.dispatchEvent(new event.constructor(event.type, event));\n\t\t};\n\t\tattributeChangedCallback(attrName, oldValue, newValue) {\n\t\t\tconst prop = mediaHostAttrToProp.get(attrName);\n\t\t\tif (prop) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tconst valueType = typeof this.#mediaHost[prop];\n\t\t\t\t\tthis.#mediaHost[prop] = valueType === \"boolean\" ? newValue !== null : valueType === \"number\" ? Number(newValue) : newValue ?? \"\";\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!CustomMedia.observedAttributes.includes(attrName) && this.constructor.observedAttributes.includes(attrName)) return;\n\t\t\tif (newValue === null) this.target?.removeAttribute(attrName);\n\t\t\telse if (this.target?.getAttribute(attrName) !== newValue) this.target?.setAttribute(attrName, newValue);\n\t\t}\n\t\t#syncMediaChildren() {\n\t\t\tconst defaultSlot = this.shadowRoot?.querySelector(\"slot:not([name])\");\n\t\t\tconst mediaChildren = new Set(defaultSlot?.assignedElements({ flatten: true }).filter((el) => el.localName === \"track\" || el.localName === \"source\"));\n\t\t\tfor (const [el, clone] of this.#childMap) if (!mediaChildren.has(el)) {\n\t\t\t\tclone.remove();\n\t\t\t\tthis.#childMap.delete(el);\n\t\t\t}\n\t\t\tfor (const el of mediaChildren) {\n\t\t\t\tlet clone = this.#childMap.get(el);\n\t\t\t\tif (!clone) {\n\t\t\t\t\tclone = el.cloneNode();\n\t\t\t\t\tthis.#childMap.set(el, clone);\n\t\t\t\t\tthis.#childObserver?.observe(el, { attributes: true });\n\t\t\t\t}\n\t\t\t\tthis.target?.append(clone);\n\t\t\t\tthis.#enableDefaultTrack(clone);\n\t\t\t}\n\t\t}\n\t\t#syncMediaChildAttribute(mutations) {\n\t\t\tfor (const mutation of mutations) if (mutation.type === \"attributes\") {\n\t\t\t\tconst { target, attributeName } = mutation;\n\t\t\t\tconst clone = this.#childMap.get(target);\n\t\t\t\tif (clone && attributeName) {\n\t\t\t\t\tclone.setAttribute(attributeName, target.getAttribute(attributeName) ?? \"\");\n\t\t\t\t\tthis.#enableDefaultTrack(clone);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#enableDefaultTrack(trackEl) {\n\t\t\tif (trackEl && trackEl.localName === \"track\" && trackEl.default && (trackEl.kind === \"chapters\" || trackEl.kind === \"metadata\") && trackEl.track.mode === \"disabled\") trackEl.track.mode = \"hidden\";\n\t\t}\n\t}\n\treturn CustomMedia;\n}\nfunction getAttrsFromProps(props) {\n\treturn Object.keys(props).map((prop) => props[prop]?.attribute ?? prop.toLowerCase());\n}\n//#endregion\nexport { AudioCSSVars, CustomMediaElement, VideoCSSVars };\n\n//# sourceMappingURL=index.js.map","//#region src/dom/media/media-host.ts\nconst EMPTY_TIME_RANGES = Object.freeze({\n\tlength: 0,\n\tstart() {\n\t\treturn 0;\n\t},\n\tend() {\n\t\treturn 0;\n\t}\n});\nvar HTMLMediaElementHost = class extends EventTarget {\n\t#target = null;\n\t#types = /* @__PURE__ */ new Set();\n\tget target() {\n\t\treturn this.#target;\n\t}\n\tget paused() {\n\t\treturn this.target?.paused ?? true;\n\t}\n\tget ended() {\n\t\treturn this.target?.ended ?? false;\n\t}\n\tplay() {\n\t\treturn this.target?.play() ?? Promise.reject();\n\t}\n\tpause() {\n\t\tthis.target?.pause();\n\t}\n\tget currentTime() {\n\t\treturn this.target?.currentTime ?? 0;\n\t}\n\tset currentTime(value) {\n\t\tif (this.target) this.target.currentTime = value;\n\t}\n\tget duration() {\n\t\treturn this.target?.duration ?? NaN;\n\t}\n\tget seeking() {\n\t\treturn this.target?.seeking ?? false;\n\t}\n\tget src() {\n\t\treturn this.target?.src ?? \"\";\n\t}\n\tset src(value) {\n\t\tif (this.target) this.target.src = value;\n\t}\n\tget currentSrc() {\n\t\treturn this.target?.currentSrc ?? \"\";\n\t}\n\tget readyState() {\n\t\treturn this.target?.readyState ?? 0;\n\t}\n\tload() {\n\t\tthis.target?.load();\n\t}\n\tget volume() {\n\t\treturn this.target?.volume ?? 1;\n\t}\n\tset volume(value) {\n\t\tif (this.target) this.target.volume = value;\n\t}\n\tget muted() {\n\t\treturn this.target?.muted ?? false;\n\t}\n\tset muted(value) {\n\t\tif (this.target) this.target.muted = value;\n\t}\n\tget playbackRate() {\n\t\treturn this.target?.playbackRate ?? 1;\n\t}\n\tset playbackRate(value) {\n\t\tif (this.target) this.target.playbackRate = value;\n\t}\n\tget buffered() {\n\t\treturn this.target?.buffered ?? EMPTY_TIME_RANGES;\n\t}\n\tget seekable() {\n\t\treturn this.target?.seekable ?? EMPTY_TIME_RANGES;\n\t}\n\tget error() {\n\t\treturn this.target?.error ?? null;\n\t}\n\tget textTracks() {\n\t\treturn this.target?.textTracks ?? [];\n\t}\n\tattach(target) {\n\t\tif (!target || this.#target === target) return;\n\t\tthis.#target = target;\n\t\tfor (const type of this.#types) target.addEventListener(type, this.#forwardEvent);\n\t}\n\tdetach() {\n\t\tif (!this.#target) return;\n\t\tfor (const type of this.#types) this.#target.removeEventListener(type, this.#forwardEvent);\n\t\tthis.#target = null;\n\t}\n\tquerySelectorAll(selectors) {\n\t\treturn this.target?.querySelectorAll(selectors) ?? [];\n\t}\n\taddEventListener(type, listener, options) {\n\t\tif (!this.#types.has(type)) {\n\t\t\tthis.#types.add(type);\n\t\t\tthis.target?.addEventListener(type, this.#forwardEvent);\n\t\t}\n\t\tsuper.addEventListener(type, listener, options);\n\t}\n\tremoveEventListener(type, listener, options) {\n\t\tsuper.removeEventListener(type, listener, options);\n\t}\n\t#forwardEvent = (event) => {\n\t\tthis.dispatchEvent(new event.constructor(event.type, event));\n\t};\n};\n//#endregion\nexport { HTMLMediaElementHost };\n\n//# sourceMappingURL=media-host.js.map","import { HTMLMediaElementHost } from \"./media-host.js\";\n//#region src/dom/media/video-host.ts\nvar HTMLVideoElementHost = class extends HTMLMediaElementHost {\n\trequestPictureInPicture() {\n\t\treturn this.target?.requestPictureInPicture() ?? Promise.reject();\n\t}\n\trequestFullscreen() {\n\t\treturn this.target?.requestFullscreen() ?? Promise.reject();\n\t}\n\twebkitEnterFullscreen() {\n\t\treturn this.target?.webkitEnterFullscreen?.();\n\t}\n\twebkitExitFullscreen() {\n\t\treturn this.target?.webkitExitFullscreen?.();\n\t}\n\twebkitSetPresentationMode(mode) {\n\t\treturn this.target?.webkitSetPresentationMode?.(mode);\n\t}\n\tget webkitDisplayingFullscreen() {\n\t\treturn this.target?.webkitDisplayingFullscreen ?? false;\n\t}\n\tget webkitPresentationMode() {\n\t\treturn this.target?.webkitPresentationMode ?? \"inline\";\n\t}\n};\n//#endregion\nexport { HTMLVideoElementHost };\n\n//# sourceMappingURL=video-host.js.map"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import "./compounds-VFPcCeRV.js";
2
- import "./context-CvJ83xGk.js";
3
- import "./player-DIOgBqQf.js";
4
- import "./minimal-ui-CPRSYky_.js";
1
+ import "./compounds-CM_NP-ej.js";
2
+ import "./context-0rI_P6jf.js";
3
+ import "./player-CatrGW7l.js";
4
+ import "./minimal-ui-cy2oEbFm.js";
@@ -1 +1 @@
1
- import"./compounds-Df_1JbZD.js";import"./context-C-IpVHEt.js";import"./player-eEH-XjnF.js";import"./minimal-ui-B3BBK5nX.js";
1
+ import"./compounds-Vvz-YfXP.js";import"./context-CEFisYD0.js";import"./player-C7ajkBi4.js";import"./minimal-ui-C_G24FML.js";