@videojs/html 10.0.0-rc.2 → 10.0.0-rc.3

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 (1438) hide show
  1. package/README.md +12 -2
  2. package/dist/default/define/audio/minimal-skin.css +663 -414
  3. package/dist/default/define/audio/minimal-skin.js +0 -2
  4. package/dist/default/define/audio/minimal-skin2.js +1 -3
  5. package/dist/default/define/audio/minimal-ui.js +0 -2
  6. package/dist/default/define/audio/player.js +0 -2
  7. package/dist/default/define/audio/skin.css +409 -205
  8. package/dist/default/define/audio/skin.js +0 -2
  9. package/dist/default/define/audio/skin2.js +1 -3
  10. package/dist/default/define/audio/ui.js +0 -2
  11. package/dist/default/define/background/player.js +0 -2
  12. package/dist/default/define/background/skin.js +0 -2
  13. package/dist/default/define/background/skin2.js +1 -3
  14. package/dist/default/define/extensions/google-cast.js +0 -2
  15. package/dist/default/define/extensions/mux-data.js +0 -2
  16. package/dist/default/define/global.css +13 -0
  17. package/dist/default/define/global.js +1 -3
  18. package/dist/default/define/i18n.js +0 -2
  19. package/dist/default/define/live-audio/minimal-skin.css +458 -368
  20. package/dist/default/define/live-audio/minimal-skin.js +0 -2
  21. package/dist/default/define/live-audio/minimal-skin2.js +1 -3
  22. package/dist/default/define/live-audio/minimal-ui.js +0 -2
  23. package/dist/default/define/live-audio/player.js +0 -2
  24. package/dist/default/define/live-audio/skin.css +221 -159
  25. package/dist/default/define/live-audio/skin.js +0 -2
  26. package/dist/default/define/live-audio/skin2.js +1 -3
  27. package/dist/default/define/live-audio/ui.js +0 -2
  28. package/dist/default/define/live-video/minimal-skin.css +1002 -863
  29. package/dist/default/define/live-video/minimal-skin.js +0 -2
  30. package/dist/default/define/live-video/minimal-skin2.js +1 -3
  31. package/dist/default/define/live-video/minimal-ui.js +0 -2
  32. package/dist/default/define/live-video/player.js +0 -2
  33. package/dist/default/define/live-video/skin.css +804 -687
  34. package/dist/default/define/live-video/skin.js +0 -2
  35. package/dist/default/define/live-video/skin2.js +1 -3
  36. package/dist/default/define/live-video/ui.js +0 -2
  37. package/dist/default/define/media/background-video.js +0 -2
  38. package/dist/default/define/media/cloudflare-video.js +0 -2
  39. package/dist/default/define/media/dash-video.js +0 -2
  40. package/dist/default/define/media/hls-audio.js +0 -2
  41. package/dist/default/define/media/hls-background-video.js +0 -2
  42. package/dist/default/define/media/hls-video.js +0 -2
  43. package/dist/default/define/media/hlsjs-video.js +0 -2
  44. package/dist/default/define/media/mux-audio/hls-js.js +0 -2
  45. package/dist/default/define/media/mux-audio/spf.js +0 -2
  46. package/dist/default/define/media/mux-background-video.js +0 -2
  47. package/dist/default/define/media/mux-video/hls-js.js +0 -2
  48. package/dist/default/define/media/mux-video/spf.js +0 -2
  49. package/dist/default/define/media/native-hls-video.js +0 -2
  50. package/dist/default/define/media/shaka-video.js +0 -2
  51. package/dist/default/define/media/spotify-audio.js +0 -2
  52. package/dist/default/define/media/tiktok-video.js +0 -2
  53. package/dist/default/define/media/twitch-video.js +0 -2
  54. package/dist/default/define/media/vimeo-video.js +0 -2
  55. package/dist/default/define/media/wistia-video.js +0 -2
  56. package/dist/default/define/media/youtube-video.js +0 -2
  57. package/dist/default/define/shadow.css +22 -0
  58. package/dist/default/define/shadow.js +4 -0
  59. package/dist/default/define/ui/airplay-button.js +0 -2
  60. package/dist/default/define/ui/alert-dialog.js +0 -2
  61. package/dist/default/define/ui/audio-track-radio-group.js +0 -2
  62. package/dist/default/define/ui/buffering-indicator.js +0 -2
  63. package/dist/default/define/ui/captions-button.js +0 -2
  64. package/dist/default/define/ui/captions-radio-group.js +0 -2
  65. package/dist/default/define/ui/cast-button.js +0 -2
  66. package/dist/default/define/ui/container.js +0 -2
  67. package/dist/default/define/ui/controls-backdrop.js +0 -2
  68. package/dist/default/define/ui/controls-content.js +0 -2
  69. package/dist/default/define/ui/controls-group.js +0 -2
  70. package/dist/default/define/ui/controls.js +0 -2
  71. package/dist/default/define/ui/dialog-backdrop.js +0 -2
  72. package/dist/default/define/ui/dialog-close.js +0 -2
  73. package/dist/default/define/ui/dialog-description.js +0 -2
  74. package/dist/default/define/ui/dialog-popup.js +0 -2
  75. package/dist/default/define/ui/dialog-title.js +0 -2
  76. package/dist/default/define/ui/dialog.js +0 -2
  77. package/dist/default/define/ui/error-dialog.js +0 -2
  78. package/dist/default/define/ui/fullscreen-button.js +0 -2
  79. package/dist/default/define/ui/gesture.js +0 -2
  80. package/dist/default/define/ui/hotkey.js +0 -2
  81. package/dist/default/define/ui/live-button.js +0 -2
  82. package/dist/default/define/ui/menu-checkbox-item.js +0 -2
  83. package/dist/default/define/ui/menu-content.js +0 -2
  84. package/dist/default/define/ui/menu-group-label.js +0 -2
  85. package/dist/default/define/ui/menu-group.js +0 -2
  86. package/dist/default/define/ui/menu-item-indicator.js +0 -2
  87. package/dist/default/define/ui/menu-item.js +0 -2
  88. package/dist/default/define/ui/menu-radio-group.js +0 -2
  89. package/dist/default/define/ui/menu-radio-item.js +0 -2
  90. package/dist/default/define/ui/menu-separator.js +0 -2
  91. package/dist/default/define/ui/menu.js +0 -2
  92. package/dist/default/define/ui/mute-button.js +0 -2
  93. package/dist/default/define/ui/pip-button.js +0 -2
  94. package/dist/default/define/ui/play-button.js +0 -2
  95. package/dist/default/define/ui/playback-rate-button.js +0 -2
  96. package/dist/default/define/ui/playback-rate-radio-group.js +0 -2
  97. package/dist/default/define/ui/popover.js +0 -2
  98. package/dist/default/define/ui/poster.js +0 -2
  99. package/dist/default/define/ui/quality-radio-group.js +0 -2
  100. package/dist/default/define/ui/seek-button.js +0 -2
  101. package/dist/default/define/ui/seek-indicator-value.js +0 -2
  102. package/dist/default/define/ui/seek-indicator.js +0 -2
  103. package/dist/default/define/ui/slider-buffer.js +0 -2
  104. package/dist/default/define/ui/slider-fill.js +0 -2
  105. package/dist/default/define/ui/slider-preview.js +0 -2
  106. package/dist/default/define/ui/slider-thumb.js +0 -2
  107. package/dist/default/define/ui/slider-thumbnail.js +0 -2
  108. package/dist/default/define/ui/slider-track.js +0 -2
  109. package/dist/default/define/ui/slider-value.js +0 -2
  110. package/dist/default/define/ui/slider.js +0 -2
  111. package/dist/default/define/ui/status-announcer.js +0 -2
  112. package/dist/default/define/ui/status-indicator-value.js +0 -2
  113. package/dist/default/define/ui/status-indicator.js +0 -2
  114. package/dist/default/define/ui/thumbnail.js +0 -2
  115. package/dist/default/define/ui/time-group.js +0 -2
  116. package/dist/default/define/ui/time-separator.js +0 -2
  117. package/dist/default/define/ui/time-slider-chapter-title.js +0 -2
  118. package/dist/default/define/ui/time-slider-chapters.js +0 -2
  119. package/dist/default/define/ui/time-slider.js +0 -2
  120. package/dist/default/define/ui/time.js +0 -2
  121. package/dist/default/define/ui/title.js +0 -2
  122. package/dist/default/define/ui/tooltip-group.js +0 -2
  123. package/dist/default/define/ui/tooltip-label.js +0 -2
  124. package/dist/default/define/ui/tooltip-shortcut.js +0 -2
  125. package/dist/default/define/ui/tooltip.js +0 -2
  126. package/dist/default/define/ui/volume-indicator-fill.js +0 -2
  127. package/dist/default/define/ui/volume-indicator-value.js +0 -2
  128. package/dist/default/define/ui/volume-indicator.js +0 -2
  129. package/dist/default/define/ui/volume-popover.js +0 -2
  130. package/dist/default/define/ui/volume-slider.js +0 -2
  131. package/dist/default/define/video/minimal-skin.css +764 -647
  132. package/dist/default/define/video/minimal-skin.js +0 -2
  133. package/dist/default/define/video/minimal-skin2.js +1 -3
  134. package/dist/default/define/video/minimal-ui.js +0 -2
  135. package/dist/default/define/video/player.js +0 -2
  136. package/dist/default/define/video/skin.css +528 -441
  137. package/dist/default/define/video/skin.js +0 -2
  138. package/dist/default/define/video/skin2.js +1 -3
  139. package/dist/default/define/video/ui.js +0 -2
  140. package/dist/default/extensions/google-cast/extension.js +0 -2
  141. package/dist/default/extensions/media-extension-element.js +0 -2
  142. package/dist/default/extensions/mux-data/extension.js +0 -2
  143. package/dist/default/i18n/cache-key.js +0 -2
  144. package/dist/default/i18n/context.js +0 -2
  145. package/dist/default/i18n/controller.js +0 -2
  146. package/dist/default/i18n/create-i18n.js +0 -2
  147. package/dist/default/i18n/index.js +2 -2
  148. package/dist/default/i18n/locale.js +0 -2
  149. package/dist/default/i18n/locales/all/register.js +0 -2
  150. package/dist/default/i18n/locales/ar/register.js +0 -2
  151. package/dist/default/i18n/locales/az/register.js +0 -2
  152. package/dist/default/i18n/locales/bg/register.js +0 -2
  153. package/dist/default/i18n/locales/bn/register.js +0 -2
  154. package/dist/default/i18n/locales/bs/register.js +0 -2
  155. package/dist/default/i18n/locales/ca/register.js +0 -2
  156. package/dist/default/i18n/locales/cs/register.js +0 -2
  157. package/dist/default/i18n/locales/cy/register.js +0 -2
  158. package/dist/default/i18n/locales/da/register.js +0 -2
  159. package/dist/default/i18n/locales/de/register.js +0 -2
  160. package/dist/default/i18n/locales/el/register.js +0 -2
  161. package/dist/default/i18n/locales/en/register.js +0 -2
  162. package/dist/default/i18n/locales/es/register.js +0 -2
  163. package/dist/default/i18n/locales/et/register.js +0 -2
  164. package/dist/default/i18n/locales/eu/register.js +0 -2
  165. package/dist/default/i18n/locales/fa/register.js +0 -2
  166. package/dist/default/i18n/locales/fi/register.js +0 -2
  167. package/dist/default/i18n/locales/fr/register.js +0 -2
  168. package/dist/default/i18n/locales/gd/register.js +0 -2
  169. package/dist/default/i18n/locales/gl/register.js +0 -2
  170. package/dist/default/i18n/locales/he/register.js +0 -2
  171. package/dist/default/i18n/locales/hi/register.js +0 -2
  172. package/dist/default/i18n/locales/hr/register.js +0 -2
  173. package/dist/default/i18n/locales/hu/register.js +0 -2
  174. package/dist/default/i18n/locales/id/register.js +0 -2
  175. package/dist/default/i18n/locales/it/register.js +0 -2
  176. package/dist/default/i18n/locales/ja/register.js +0 -2
  177. package/dist/default/i18n/locales/ko/register.js +0 -2
  178. package/dist/default/i18n/locales/lt/register.js +0 -2
  179. package/dist/default/i18n/locales/lv/register.js +0 -2
  180. package/dist/default/i18n/locales/mr/register.js +0 -2
  181. package/dist/default/i18n/locales/nb/register.js +0 -2
  182. package/dist/default/i18n/locales/ne/register.js +0 -2
  183. package/dist/default/i18n/locales/nl/register.js +0 -2
  184. package/dist/default/i18n/locales/nn/register.js +0 -2
  185. package/dist/default/i18n/locales/oc/register.js +0 -2
  186. package/dist/default/i18n/locales/pl/register.js +0 -2
  187. package/dist/default/i18n/locales/pt/register.js +0 -2
  188. package/dist/default/i18n/locales/pt-BR/register.js +0 -2
  189. package/dist/default/i18n/locales/pt-PT/register.js +0 -2
  190. package/dist/default/i18n/locales/ro/register.js +0 -2
  191. package/dist/default/i18n/locales/ru/register.js +0 -2
  192. package/dist/default/i18n/locales/sk/register.js +0 -2
  193. package/dist/default/i18n/locales/sl/register.js +0 -2
  194. package/dist/default/i18n/locales/sr/register.js +0 -2
  195. package/dist/default/i18n/locales/sv/register.js +0 -2
  196. package/dist/default/i18n/locales/te/register.js +0 -2
  197. package/dist/default/i18n/locales/th/register.js +0 -2
  198. package/dist/default/i18n/locales/tr/register.js +0 -2
  199. package/dist/default/i18n/locales/uk/register.js +0 -2
  200. package/dist/default/i18n/locales/vi/register.js +0 -2
  201. package/dist/default/i18n/locales/zh/register.js +0 -2
  202. package/dist/default/i18n/locales/zh-CN/register.js +0 -2
  203. package/dist/default/i18n/locales/zh-TW/register.js +0 -2
  204. package/dist/default/i18n/provider-element.js +0 -2
  205. package/dist/default/i18n/provider-mixin.js +0 -2
  206. package/dist/default/i18n/render-text.js +0 -2
  207. package/dist/default/i18n/text-mixin.js +0 -2
  208. package/dist/default/icons/dist/element/base.js +0 -2
  209. package/dist/default/icons/dist/element/default/icons.js +0 -2
  210. package/dist/default/icons/dist/element/default/index.js +0 -2
  211. package/dist/default/icons/dist/element/index.js +0 -2
  212. package/dist/default/icons/dist/element/minimal/icons.js +0 -2
  213. package/dist/default/icons/dist/element/minimal/index.js +0 -2
  214. package/dist/default/icons/dist/html/default/airplay-enter.js +0 -2
  215. package/dist/default/icons/dist/html/default/airplay-exit.js +0 -2
  216. package/dist/default/icons/dist/html/default/captions-off.js +0 -2
  217. package/dist/default/icons/dist/html/default/captions-on.js +0 -2
  218. package/dist/default/icons/dist/html/default/cast-enter.js +0 -2
  219. package/dist/default/icons/dist/html/default/cast-exit.js +0 -2
  220. package/dist/default/icons/dist/html/default/check.js +0 -2
  221. package/dist/default/icons/dist/html/default/chevron.js +0 -2
  222. package/dist/default/icons/dist/html/default/fullscreen-enter.js +0 -2
  223. package/dist/default/icons/dist/html/default/fullscreen-exit.js +0 -2
  224. package/dist/default/icons/dist/html/default/gear.js +0 -2
  225. package/dist/default/icons/dist/html/default/pause.js +0 -2
  226. package/dist/default/icons/dist/html/default/pip-enter.js +0 -2
  227. package/dist/default/icons/dist/html/default/pip-exit.js +0 -2
  228. package/dist/default/icons/dist/html/default/play.js +0 -2
  229. package/dist/default/icons/dist/html/default/quality.js +0 -2
  230. package/dist/default/icons/dist/html/default/restart.js +0 -2
  231. package/dist/default/icons/dist/html/default/seek.js +0 -2
  232. package/dist/default/icons/dist/html/default/speech.js +0 -2
  233. package/dist/default/icons/dist/html/default/speed.js +0 -2
  234. package/dist/default/icons/dist/html/default/spinner.js +0 -2
  235. package/dist/default/icons/dist/html/default/switches.js +0 -2
  236. package/dist/default/icons/dist/html/default/volume-high.js +0 -2
  237. package/dist/default/icons/dist/html/default/volume-low.js +0 -2
  238. package/dist/default/icons/dist/html/default/volume-off.js +0 -2
  239. package/dist/default/icons/dist/html/minimal/airplay-enter.js +0 -2
  240. package/dist/default/icons/dist/html/minimal/airplay-exit.js +0 -2
  241. package/dist/default/icons/dist/html/minimal/captions-off.js +0 -2
  242. package/dist/default/icons/dist/html/minimal/captions-on.js +0 -2
  243. package/dist/default/icons/dist/html/minimal/cast-enter.js +0 -2
  244. package/dist/default/icons/dist/html/minimal/cast-exit.js +0 -2
  245. package/dist/default/icons/dist/html/minimal/check.js +0 -2
  246. package/dist/default/icons/dist/html/minimal/chevron.js +0 -2
  247. package/dist/default/icons/dist/html/minimal/fullscreen-enter.js +0 -2
  248. package/dist/default/icons/dist/html/minimal/fullscreen-exit.js +0 -2
  249. package/dist/default/icons/dist/html/minimal/gear.js +0 -2
  250. package/dist/default/icons/dist/html/minimal/pause.js +0 -2
  251. package/dist/default/icons/dist/html/minimal/pip-enter.js +0 -2
  252. package/dist/default/icons/dist/html/minimal/pip-exit.js +0 -2
  253. package/dist/default/icons/dist/html/minimal/play.js +0 -2
  254. package/dist/default/icons/dist/html/minimal/quality.js +0 -2
  255. package/dist/default/icons/dist/html/minimal/restart.js +0 -2
  256. package/dist/default/icons/dist/html/minimal/seek.js +0 -2
  257. package/dist/default/icons/dist/html/minimal/speech.js +0 -2
  258. package/dist/default/icons/dist/html/minimal/speed.js +0 -2
  259. package/dist/default/icons/dist/html/minimal/spinner.js +0 -2
  260. package/dist/default/icons/dist/html/minimal/switches.js +0 -2
  261. package/dist/default/icons/dist/html/minimal/volume-high.js +0 -2
  262. package/dist/default/icons/dist/html/minimal/volume-low.js +0 -2
  263. package/dist/default/icons/dist/html/minimal/volume-off.js +0 -2
  264. package/dist/default/icons/element/register/index.js +0 -2
  265. package/dist/default/index.js +2 -2
  266. package/dist/default/internal/skins/default-audio/register.js +0 -2
  267. package/dist/default/internal/skins/default-audio/skin.css +387 -191
  268. package/dist/default/internal/skins/default-audio/template.js +12 -14
  269. package/dist/default/internal/skins/default-live-audio/register.js +0 -2
  270. package/dist/default/internal/skins/default-live-audio/skin.css +199 -145
  271. package/dist/default/internal/skins/default-live-audio/template.js +5 -7
  272. package/dist/default/internal/skins/default-live-video/register.js +1 -2
  273. package/dist/default/internal/skins/default-live-video/skin.css +713 -604
  274. package/dist/default/internal/skins/default-live-video/template.js +18 -19
  275. package/dist/default/internal/skins/default-video/register.js +1 -2
  276. package/dist/default/internal/skins/default-video/skin.css +506 -427
  277. package/dist/default/internal/skins/default-video/template.js +33 -33
  278. package/dist/default/internal/skins/minimal-audio/register.js +0 -2
  279. package/dist/default/internal/skins/minimal-audio/skin.css +641 -400
  280. package/dist/default/internal/skins/minimal-audio/template.js +12 -14
  281. package/dist/default/internal/skins/minimal-live-audio/register.js +0 -2
  282. package/dist/default/internal/skins/minimal-live-audio/skin.css +436 -354
  283. package/dist/default/internal/skins/minimal-live-audio/template.js +5 -7
  284. package/dist/default/internal/skins/minimal-live-video/register.js +1 -2
  285. package/dist/default/internal/skins/minimal-live-video/skin.css +916 -785
  286. package/dist/default/internal/skins/minimal-live-video/template.js +18 -19
  287. package/dist/default/internal/skins/minimal-video/register.js +1 -2
  288. package/dist/default/internal/skins/minimal-video/skin.css +742 -633
  289. package/dist/default/internal/skins/minimal-video/template.js +33 -33
  290. package/dist/default/internal/skins/properties.css +11 -0
  291. package/dist/default/media/background-video/adapter.js +0 -2
  292. package/dist/default/media/background-video/template.js +0 -2
  293. package/dist/default/media/cloudflare-video/adapter.js +0 -2
  294. package/dist/default/media/dash-video/adapter.js +0 -2
  295. package/dist/default/media/hls-audio/adapter.js +0 -2
  296. package/dist/default/media/hls-background-video/adapter.js +0 -2
  297. package/dist/default/media/hls-video/adapter.js +0 -2
  298. package/dist/default/media/hlsjs-video/adapter.js +0 -2
  299. package/dist/default/media/mux-audio/hls-js.js +0 -2
  300. package/dist/default/media/mux-audio/mixin.js +0 -2
  301. package/dist/default/media/mux-audio/spf.js +0 -2
  302. package/dist/default/media/mux-video/hls-js.js +0 -2
  303. package/dist/default/media/mux-video/mixin.js +0 -2
  304. package/dist/default/media/mux-video/spf.js +0 -2
  305. package/dist/default/media/native-hls-video/adapter.js +0 -2
  306. package/dist/default/media/shaka-video/adapter.js +0 -2
  307. package/dist/default/media/spotify-audio/adapter.js +0 -2
  308. package/dist/default/media/tiktok-video/adapter.js +0 -2
  309. package/dist/default/media/twitch-video/adapter.js +0 -2
  310. package/dist/default/media/vimeo-video/adapter.js +0 -2
  311. package/dist/default/media/wistia-video/adapter.js +0 -2
  312. package/dist/default/media/youtube-video/adapter.js +0 -2
  313. package/dist/default/player/context.js +0 -2
  314. package/dist/default/player/controller.js +0 -2
  315. package/dist/default/player/create-player.js +0 -2
  316. package/dist/default/player/element.js +0 -2
  317. package/dist/default/player/popup-group-context.js +0 -2
  318. package/dist/default/presets/audio/minimal-skin.js +0 -2
  319. package/dist/default/presets/audio/player.js +0 -2
  320. package/dist/default/presets/audio/skin.js +0 -2
  321. package/dist/default/presets/background/player.js +0 -2
  322. package/dist/default/presets/background/skin.js +2 -2
  323. package/dist/default/presets/live-audio/minimal-skin.js +0 -2
  324. package/dist/default/presets/live-audio/player.js +0 -2
  325. package/dist/default/presets/live-audio/skin.js +0 -2
  326. package/dist/default/presets/live-video/minimal-skin.js +0 -2
  327. package/dist/default/presets/live-video/player.js +0 -2
  328. package/dist/default/presets/live-video/skin.js +0 -2
  329. package/dist/default/presets/skin.js +14 -5
  330. package/dist/default/presets/video/minimal-skin.js +0 -2
  331. package/dist/default/presets/video/player.js +0 -2
  332. package/dist/default/presets/video/skin.js +0 -2
  333. package/dist/default/registration/safe-define.js +0 -2
  334. package/dist/default/registration/ui-compounds.js +0 -2
  335. package/dist/default/store/media-attach-mixin.js +0 -2
  336. package/dist/default/ui/airplay-button/element.js +0 -2
  337. package/dist/default/ui/alert-dialog/element.js +0 -2
  338. package/dist/default/ui/audio-track-radio-group/element.js +5 -2
  339. package/dist/default/ui/buffering-indicator/element.js +0 -2
  340. package/dist/default/ui/captions-button/element.js +0 -2
  341. package/dist/default/ui/captions-radio-group/element.js +5 -2
  342. package/dist/default/ui/cast-button/element.js +0 -2
  343. package/dist/default/ui/command-for.js +0 -2
  344. package/dist/default/ui/container/element.js +0 -2
  345. package/dist/default/ui/context-part-element.js +0 -2
  346. package/dist/default/ui/controls/backdrop.js +0 -2
  347. package/dist/default/ui/controls/content.js +0 -2
  348. package/dist/default/ui/controls/context.js +0 -2
  349. package/dist/default/ui/controls/element.js +4 -2
  350. package/dist/default/ui/controls/group.js +0 -2
  351. package/dist/default/ui/dialog/backdrop.js +0 -2
  352. package/dist/default/ui/dialog/close.js +1 -2
  353. package/dist/default/ui/dialog/context.js +0 -2
  354. package/dist/default/ui/dialog/description.js +4 -2
  355. package/dist/default/ui/dialog/element.js +0 -2
  356. package/dist/default/ui/dialog/popup.js +0 -2
  357. package/dist/default/ui/dialog/title.js +1 -2
  358. package/dist/default/ui/error-dialog/element.js +0 -2
  359. package/dist/default/ui/fullscreen-button/element.js +0 -2
  360. package/dist/default/ui/gesture/element.js +0 -2
  361. package/dist/default/ui/hotkey/aria-key-shortcuts-controller.js +0 -2
  362. package/dist/default/ui/hotkey/element.js +0 -2
  363. package/dist/default/ui/input-indicator/element.js +0 -2
  364. package/dist/default/ui/input-indicator/live-indicator.js +0 -2
  365. package/dist/default/ui/live-button/element.js +0 -2
  366. package/dist/default/ui/media-button-element.js +0 -2
  367. package/dist/default/ui/media-ui-element.js +0 -2
  368. package/dist/default/ui/menu/checkbox-item.js +6 -3
  369. package/dist/default/ui/menu/content.js +1 -3
  370. package/dist/default/ui/menu/context.js +0 -2
  371. package/dist/default/ui/menu/element.js +0 -2
  372. package/dist/default/ui/menu/group-controller.js +0 -2
  373. package/dist/default/ui/menu/group-label.js +1 -2
  374. package/dist/default/ui/menu/group.js +4 -2
  375. package/dist/default/ui/menu/item-indicator.js +4 -2
  376. package/dist/default/ui/menu/item.js +4 -2
  377. package/dist/default/ui/menu/radio-group.js +1 -2
  378. package/dist/default/ui/menu/radio-item.js +4 -2
  379. package/dist/default/ui/menu/separator.js +1 -2
  380. package/dist/default/ui/mute-button/element.js +0 -2
  381. package/dist/default/ui/pip-button/element.js +0 -2
  382. package/dist/default/ui/play-button/element.js +0 -2
  383. package/dist/default/ui/playback-rate-button/element.js +0 -2
  384. package/dist/default/ui/playback-rate-radio-group/element.js +5 -2
  385. package/dist/default/ui/popover/element.js +0 -2
  386. package/dist/default/ui/position-controller.js +0 -2
  387. package/dist/default/ui/poster/element.js +0 -2
  388. package/dist/default/ui/quality-radio-group/element.js +6 -2
  389. package/dist/default/ui/radio-group/context.js +0 -2
  390. package/dist/default/ui/radio-group/element.js +0 -2
  391. package/dist/default/ui/radio-options/controller.js +0 -2
  392. package/dist/default/ui/seek-button/element.js +0 -2
  393. package/dist/default/ui/seek-indicator/element.js +0 -2
  394. package/dist/default/ui/seek-indicator/value.js +0 -2
  395. package/dist/default/ui/slider/buffer.js +0 -2
  396. package/dist/default/ui/slider/context.js +0 -2
  397. package/dist/default/ui/slider/element.js +0 -2
  398. package/dist/default/ui/slider/fill.js +0 -2
  399. package/dist/default/ui/slider/preview.js +0 -2
  400. package/dist/default/ui/slider/thumb.js +0 -2
  401. package/dist/default/ui/slider/thumbnail.js +4 -2
  402. package/dist/default/ui/slider/track.js +0 -2
  403. package/dist/default/ui/slider/value.js +1 -2
  404. package/dist/default/ui/status-announcer/element.js +0 -2
  405. package/dist/default/ui/status-indicator/element.js +0 -2
  406. package/dist/default/ui/status-indicator/value.js +0 -2
  407. package/dist/default/ui/text/element.js +0 -2
  408. package/dist/default/ui/thumbnail/element.js +28 -8
  409. package/dist/default/ui/time/element.js +0 -2
  410. package/dist/default/ui/time/group.js +1 -2
  411. package/dist/default/ui/time/separator.js +0 -2
  412. package/dist/default/ui/time-slider/chapter-title.js +0 -2
  413. package/dist/default/ui/time-slider/chapters.js +0 -2
  414. package/dist/default/ui/time-slider/element.js +5 -4
  415. package/dist/default/ui/title/element.js +5 -9
  416. package/dist/default/ui/tooltip/context.js +0 -2
  417. package/dist/default/ui/tooltip/element.js +0 -2
  418. package/dist/default/ui/tooltip/group.js +0 -2
  419. package/dist/default/ui/tooltip/label.js +0 -2
  420. package/dist/default/ui/tooltip/shortcut.js +0 -2
  421. package/dist/default/ui/ui-element.js +0 -2
  422. package/dist/default/ui/volume-indicator/element.js +0 -2
  423. package/dist/default/ui/volume-indicator/fill.js +0 -2
  424. package/dist/default/ui/volume-indicator/value.js +0 -2
  425. package/dist/default/ui/volume-popover/element.js +0 -2
  426. package/dist/default/ui/volume-slider/element.js +0 -2
  427. package/dist/dev/define/audio/minimal-skin.css +663 -414
  428. package/dist/dev/define/audio/minimal-skin2.js +1 -1
  429. package/dist/dev/define/audio/minimal-skin2.js.map +1 -1
  430. package/dist/dev/define/audio/skin.css +409 -205
  431. package/dist/dev/define/audio/skin2.js +1 -1
  432. package/dist/dev/define/audio/skin2.js.map +1 -1
  433. package/dist/dev/define/global.css +13 -0
  434. package/dist/dev/define/global.js +1 -1
  435. package/dist/dev/define/global.js.map +1 -1
  436. package/dist/dev/define/live-audio/minimal-skin.css +458 -368
  437. package/dist/dev/define/live-audio/minimal-skin2.js +1 -1
  438. package/dist/dev/define/live-audio/minimal-skin2.js.map +1 -1
  439. package/dist/dev/define/live-audio/skin.css +221 -159
  440. package/dist/dev/define/live-audio/skin2.js +1 -1
  441. package/dist/dev/define/live-audio/skin2.js.map +1 -1
  442. package/dist/dev/define/live-video/minimal-skin.css +1002 -863
  443. package/dist/dev/define/live-video/minimal-skin2.js +1 -1
  444. package/dist/dev/define/live-video/minimal-skin2.js.map +1 -1
  445. package/dist/dev/define/live-video/skin.css +804 -687
  446. package/dist/dev/define/live-video/skin2.js +1 -1
  447. package/dist/dev/define/live-video/skin2.js.map +1 -1
  448. package/dist/dev/define/shadow.css +22 -0
  449. package/dist/dev/define/shadow.js +6 -0
  450. package/dist/dev/define/shadow.js.map +1 -0
  451. package/dist/dev/define/video/minimal-skin.css +764 -647
  452. package/dist/dev/define/video/minimal-skin2.js +1 -1
  453. package/dist/dev/define/video/minimal-skin2.js.map +1 -1
  454. package/dist/dev/define/video/skin.css +528 -441
  455. package/dist/dev/define/video/skin2.js +1 -1
  456. package/dist/dev/define/video/skin2.js.map +1 -1
  457. package/dist/dev/i18n/index.d.ts +2 -2
  458. package/dist/dev/i18n/index.js +2 -2
  459. package/dist/dev/index.d.ts +3 -3
  460. package/dist/dev/index.js +2 -2
  461. package/dist/dev/internal/skins/default-audio/skin.css +387 -191
  462. package/dist/dev/internal/skins/default-audio/template.js +12 -12
  463. package/dist/dev/internal/skins/default-audio/template.js.map +1 -1
  464. package/dist/dev/internal/skins/default-live-audio/skin.css +199 -145
  465. package/dist/dev/internal/skins/default-live-audio/template.js +5 -5
  466. package/dist/dev/internal/skins/default-live-audio/template.js.map +1 -1
  467. package/dist/dev/internal/skins/default-live-video/register.d.ts +1 -0
  468. package/dist/dev/internal/skins/default-live-video/register.js +1 -0
  469. package/dist/dev/internal/skins/default-live-video/register.js.map +1 -1
  470. package/dist/dev/internal/skins/default-live-video/skin.css +713 -604
  471. package/dist/dev/internal/skins/default-live-video/template.js +18 -17
  472. package/dist/dev/internal/skins/default-live-video/template.js.map +1 -1
  473. package/dist/dev/internal/skins/default-video/register.d.ts +1 -0
  474. package/dist/dev/internal/skins/default-video/register.js +1 -0
  475. package/dist/dev/internal/skins/default-video/register.js.map +1 -1
  476. package/dist/dev/internal/skins/default-video/skin.css +506 -427
  477. package/dist/dev/internal/skins/default-video/template.js +33 -31
  478. package/dist/dev/internal/skins/default-video/template.js.map +1 -1
  479. package/dist/dev/internal/skins/minimal-audio/skin.css +641 -400
  480. package/dist/dev/internal/skins/minimal-audio/template.js +12 -12
  481. package/dist/dev/internal/skins/minimal-audio/template.js.map +1 -1
  482. package/dist/dev/internal/skins/minimal-live-audio/skin.css +436 -354
  483. package/dist/dev/internal/skins/minimal-live-audio/template.js +5 -5
  484. package/dist/dev/internal/skins/minimal-live-audio/template.js.map +1 -1
  485. package/dist/dev/internal/skins/minimal-live-video/register.d.ts +1 -0
  486. package/dist/dev/internal/skins/minimal-live-video/register.js +1 -0
  487. package/dist/dev/internal/skins/minimal-live-video/register.js.map +1 -1
  488. package/dist/dev/internal/skins/minimal-live-video/skin.css +916 -785
  489. package/dist/dev/internal/skins/minimal-live-video/template.js +18 -17
  490. package/dist/dev/internal/skins/minimal-live-video/template.js.map +1 -1
  491. package/dist/dev/internal/skins/minimal-video/register.d.ts +1 -0
  492. package/dist/dev/internal/skins/minimal-video/register.js +1 -0
  493. package/dist/dev/internal/skins/minimal-video/register.js.map +1 -1
  494. package/dist/dev/internal/skins/minimal-video/skin.css +742 -633
  495. package/dist/dev/internal/skins/minimal-video/template.js +33 -31
  496. package/dist/dev/internal/skins/minimal-video/template.js.map +1 -1
  497. package/dist/dev/internal/skins/properties.css +11 -0
  498. package/dist/dev/player/context.d.ts +1 -0
  499. package/dist/dev/player/context.js.map +1 -1
  500. package/dist/dev/presets/background/skin.js +2 -0
  501. package/dist/dev/presets/background/skin.js.map +1 -1
  502. package/dist/dev/presets/skin.js +14 -3
  503. package/dist/dev/presets/skin.js.map +1 -1
  504. package/dist/dev/ui/audio-track-radio-group/element.d.ts +5 -0
  505. package/dist/dev/ui/audio-track-radio-group/element.js +5 -0
  506. package/dist/dev/ui/audio-track-radio-group/element.js.map +1 -1
  507. package/dist/dev/ui/captions-radio-group/element.d.ts +5 -0
  508. package/dist/dev/ui/captions-radio-group/element.js +5 -0
  509. package/dist/dev/ui/captions-radio-group/element.js.map +1 -1
  510. package/dist/dev/ui/controls/element.d.ts +4 -0
  511. package/dist/dev/ui/controls/element.js +4 -0
  512. package/dist/dev/ui/controls/element.js.map +1 -1
  513. package/dist/dev/ui/dialog/close.d.ts +1 -0
  514. package/dist/dev/ui/dialog/close.js +1 -0
  515. package/dist/dev/ui/dialog/close.js.map +1 -1
  516. package/dist/dev/ui/dialog/description.d.ts +4 -0
  517. package/dist/dev/ui/dialog/description.js +4 -0
  518. package/dist/dev/ui/dialog/description.js.map +1 -1
  519. package/dist/dev/ui/dialog/title.d.ts +1 -0
  520. package/dist/dev/ui/dialog/title.js +1 -0
  521. package/dist/dev/ui/dialog/title.js.map +1 -1
  522. package/dist/dev/ui/menu/checkbox-item.d.ts +6 -1
  523. package/dist/dev/ui/menu/checkbox-item.js +6 -1
  524. package/dist/dev/ui/menu/checkbox-item.js.map +1 -1
  525. package/dist/dev/ui/menu/content.js +1 -1
  526. package/dist/dev/ui/menu/content.js.map +1 -1
  527. package/dist/dev/ui/menu/group-label.d.ts +1 -0
  528. package/dist/dev/ui/menu/group-label.js +1 -0
  529. package/dist/dev/ui/menu/group-label.js.map +1 -1
  530. package/dist/dev/ui/menu/group.d.ts +4 -0
  531. package/dist/dev/ui/menu/group.js +4 -0
  532. package/dist/dev/ui/menu/group.js.map +1 -1
  533. package/dist/dev/ui/menu/item-indicator.d.ts +4 -0
  534. package/dist/dev/ui/menu/item-indicator.js +4 -0
  535. package/dist/dev/ui/menu/item-indicator.js.map +1 -1
  536. package/dist/dev/ui/menu/item.d.ts +4 -0
  537. package/dist/dev/ui/menu/item.js +4 -0
  538. package/dist/dev/ui/menu/item.js.map +1 -1
  539. package/dist/dev/ui/menu/radio-group.d.ts +1 -0
  540. package/dist/dev/ui/menu/radio-group.js +1 -0
  541. package/dist/dev/ui/menu/radio-group.js.map +1 -1
  542. package/dist/dev/ui/menu/radio-item.d.ts +4 -0
  543. package/dist/dev/ui/menu/radio-item.js +4 -0
  544. package/dist/dev/ui/menu/radio-item.js.map +1 -1
  545. package/dist/dev/ui/menu/separator.d.ts +1 -0
  546. package/dist/dev/ui/menu/separator.js +1 -0
  547. package/dist/dev/ui/menu/separator.js.map +1 -1
  548. package/dist/dev/ui/playback-rate-radio-group/element.d.ts +5 -0
  549. package/dist/dev/ui/playback-rate-radio-group/element.js +5 -0
  550. package/dist/dev/ui/playback-rate-radio-group/element.js.map +1 -1
  551. package/dist/dev/ui/quality-radio-group/element.d.ts +6 -0
  552. package/dist/dev/ui/quality-radio-group/element.js +6 -0
  553. package/dist/dev/ui/quality-radio-group/element.js.map +1 -1
  554. package/dist/dev/ui/slider/thumbnail.d.ts +4 -0
  555. package/dist/dev/ui/slider/thumbnail.js +4 -0
  556. package/dist/dev/ui/slider/thumbnail.js.map +1 -1
  557. package/dist/dev/ui/slider/value.d.ts +1 -0
  558. package/dist/dev/ui/slider/value.js +1 -0
  559. package/dist/dev/ui/slider/value.js.map +1 -1
  560. package/dist/dev/ui/thumbnail/element.d.ts +3 -1
  561. package/dist/dev/ui/thumbnail/element.js +28 -6
  562. package/dist/dev/ui/thumbnail/element.js.map +1 -1
  563. package/dist/dev/ui/time/group.d.ts +1 -0
  564. package/dist/dev/ui/time/group.js +1 -0
  565. package/dist/dev/ui/time/group.js.map +1 -1
  566. package/dist/dev/ui/time-slider/element.js +5 -2
  567. package/dist/dev/ui/time-slider/element.js.map +1 -1
  568. package/dist/dev/ui/title/element.d.ts +1 -2
  569. package/dist/dev/ui/title/element.js +5 -7
  570. package/dist/dev/ui/title/element.js.map +1 -1
  571. package/docs/README.md +1 -1
  572. package/docs/guides/accessibility.md +93 -0
  573. package/docs/{concepts/overview.md → guides/architecture.md} +20 -21
  574. package/docs/{how-to → guides}/autoplay.md +42 -47
  575. package/docs/{how-to/add-a-background-video.md → guides/background-video.md} +36 -51
  576. package/docs/guides/browser-support.md +145 -0
  577. package/docs/guides/build-with-ai.md +167 -0
  578. package/docs/guides/build-your-own-component.md +245 -0
  579. package/docs/{concepts → guides}/bundlers.md +13 -5
  580. package/docs/guides/captions.md +140 -0
  581. package/docs/{how-to/cast-to-airplay-and-chromecast.md → guides/casting.md} +40 -39
  582. package/docs/guides/cdn.md +102 -0
  583. package/docs/guides/content-security-policy.md +37 -0
  584. package/docs/{how-to/show-and-hide-controls.md → guides/controls.md} +38 -37
  585. package/docs/guides/customize-skins.md +141 -0
  586. package/docs/{concepts → guides}/features.md +22 -46
  587. package/docs/guides/fullscreen.md +145 -0
  588. package/docs/guides/installation-cdn.md +164 -0
  589. package/docs/guides/installation-shadcn.md +305 -0
  590. package/docs/guides/installation-svelte.md +198 -0
  591. package/docs/guides/installation-vue.md +229 -0
  592. package/docs/guides/installation.md +186 -0
  593. package/docs/{how-to/internationalize-the-player.md → guides/internationalization.md} +84 -103
  594. package/docs/guides/keyboard-shortcuts.md +98 -0
  595. package/docs/guides/live-streams.md +110 -0
  596. package/docs/guides/llms.txt +79 -0
  597. package/docs/{concepts → guides}/media-sources.md +64 -262
  598. package/docs/{how-to → guides}/migrate-from-media-chrome.md +79 -249
  599. package/docs/{how-to → guides}/migrate-from-mux-player.md +146 -321
  600. package/docs/guides/migrate-from-plyr.md +296 -0
  601. package/docs/guides/migrate-from-video-js-8.md +467 -0
  602. package/docs/{concepts → guides}/mux-data.md +26 -27
  603. package/docs/{how-to/use-picture-in-picture.md → guides/picture-in-picture.md} +31 -33
  604. package/docs/guides/playback-errors.md +129 -0
  605. package/docs/{how-to/add-a-poster-and-loading-placeholder.md → guides/poster.md} +24 -34
  606. package/docs/{concepts → guides}/presets.md +17 -131
  607. package/docs/{how-to/add-quality-selector.md → guides/quality.md} +41 -41
  608. package/docs/{how-to/self-host-the-player.md → guides/self-hosting.md} +31 -41
  609. package/docs/guides/skins.md +68 -0
  610. package/docs/{how-to/use-videojs-with-svelte.md → guides/svelte.md} +15 -18
  611. package/docs/guides/thumbnails.md +183 -0
  612. package/docs/{concepts → guides}/typescript.md +10 -3
  613. package/docs/{concepts → guides}/ui-components.md +8 -14
  614. package/docs/{how-to/remember-user-preferences.md → guides/user-preferences.md} +25 -28
  615. package/docs/guides/v10-roadmap.md +92 -0
  616. package/docs/{how-to/use-videojs-with-vue.md → guides/vue.md} +19 -22
  617. package/docs/{concepts → guides}/why-videojs.md +36 -17
  618. package/docs/llms.txt +253 -181
  619. package/docs/reference/api/aria-key-shortcuts-controller.md +50 -0
  620. package/docs/reference/{create-i18n.md → api/create-i18n.md} +13 -52
  621. package/docs/reference/{create-selector.md → api/create-selector.md} +11 -33
  622. package/docs/reference/api/create-translator.md +36 -0
  623. package/docs/reference/api/error-codes.md +25 -0
  624. package/docs/reference/{feature-audio-track.md → api/feature-audio-track.md} +10 -36
  625. package/docs/reference/{feature-buffer.md → api/feature-buffer.md} +8 -31
  626. package/docs/reference/{feature-controls.md → api/feature-controls.md} +12 -58
  627. package/docs/reference/{feature-error.md → api/feature-error.md} +10 -36
  628. package/docs/reference/{feature-fullscreen.md → api/feature-fullscreen.md} +14 -69
  629. package/docs/reference/{feature-live.md → api/feature-live.md} +15 -42
  630. package/docs/reference/{feature-metadata.md → api/feature-metadata.md} +20 -80
  631. package/docs/reference/{feature-orientation-lock.md → api/feature-orientation-lock.md} +16 -64
  632. package/docs/reference/{feature-pip.md → api/feature-pip.md} +13 -66
  633. package/docs/reference/{feature-playback-rate.md → api/feature-playback-rate.md} +11 -46
  634. package/docs/reference/{feature-playback.md → api/feature-playback.md} +15 -86
  635. package/docs/reference/{feature-quality.md → api/feature-quality.md} +11 -46
  636. package/docs/reference/{feature-remote-playback.md → api/feature-remote-playback.md} +12 -47
  637. package/docs/reference/{feature-source.md → api/feature-source.md} +11 -46
  638. package/docs/reference/{feature-stream-type.md → api/feature-stream-type.md} +7 -23
  639. package/docs/reference/api/feature-text-tracks.md +54 -0
  640. package/docs/reference/{feature-time.md → api/feature-time.md} +12 -56
  641. package/docs/reference/{feature-volume.md → api/feature-volume.md} +14 -76
  642. package/docs/reference/{get-i18n-translations.md → api/get-i18n-translations.md} +11 -41
  643. package/docs/reference/{has-registered-locale.md → api/has-registered-locale.md} +7 -29
  644. package/docs/reference/{html-create-player.md → api/html-create-player.md} +45 -203
  645. package/docs/reference/{i-18-n-controller.md → api/i18n-controller.md} +12 -62
  646. package/docs/reference/api/llms.txt +74 -0
  647. package/docs/reference/{media-i18n.md → api/media-i18n.md} +8 -16
  648. package/docs/reference/{media-text.md → api/media-text.md} +3 -7
  649. package/docs/reference/{on-i18n-registry-change.md → api/on-i18n-registry-change.md} +9 -37
  650. package/docs/reference/{player-controller.md → api/player-controller.md} +36 -142
  651. package/docs/reference/{register-i18n.md → api/register-i18n.md} +9 -42
  652. package/docs/reference/api/snapshot-controller.md +95 -0
  653. package/docs/reference/api/store-controller.md +85 -0
  654. package/docs/reference/{subscription-controller.md → api/subscription-controller.md} +12 -70
  655. package/docs/reference/api/translation-phrases.md +107 -0
  656. package/docs/reference/api/vjs8-legacy-component.md +21 -0
  657. package/docs/reference/api/vjs8-legacy-get-player.md +21 -0
  658. package/docs/reference/api/vjs8-legacy-init.md +21 -0
  659. package/docs/reference/api/vjs8-legacy-options.md +21 -0
  660. package/docs/reference/api/vjs8-legacy-plugin.md +21 -0
  661. package/docs/reference/{airplay-button.md → components/airplay-button.md} +41 -194
  662. package/docs/reference/{alert-dialog.md → components/alert-dialog.md} +91 -280
  663. package/docs/reference/components/audio-minimal-skin.md +39 -0
  664. package/docs/reference/components/audio-skin.md +39 -0
  665. package/docs/reference/{audio-track-radio-group.md → components/audio-track-radio-group.md} +47 -219
  666. package/docs/reference/{audio.md → components/audio.md} +16 -17
  667. package/docs/reference/components/background-video-skin.md +37 -0
  668. package/docs/reference/{background-video.md → components/background-video.md} +25 -53
  669. package/docs/reference/{buffering-indicator.md → components/buffering-indicator.md} +21 -65
  670. package/docs/reference/{captions-button.md → components/captions-button.md} +35 -171
  671. package/docs/reference/{captions-radio-group.md → components/captions-radio-group.md} +48 -227
  672. package/docs/reference/{cast-button.md → components/cast-button.md} +39 -179
  673. package/docs/reference/components/cloudflare-video.md +157 -0
  674. package/docs/reference/{controls.md → components/controls.md} +52 -171
  675. package/docs/reference/components/dash-video.md +111 -0
  676. package/docs/reference/{dialog.md → components/dialog.md} +101 -314
  677. package/docs/reference/{error-dialog.md → components/error-dialog.md} +66 -162
  678. package/docs/reference/{fullscreen-button.md → components/fullscreen-button.md} +35 -153
  679. package/docs/reference/{gesture.md → components/gesture.md} +28 -130
  680. package/docs/reference/components/google-cast.md +47 -0
  681. package/docs/reference/components/hls-audio.md +87 -0
  682. package/docs/reference/components/hls-background-video.md +51 -0
  683. package/docs/reference/components/hls-video.md +110 -0
  684. package/docs/reference/components/hlsjs-video.md +126 -0
  685. package/docs/reference/{hotkey.md → components/hotkey.md} +28 -115
  686. package/docs/reference/{live-audio-minimal-skin.md → components/live-audio-minimal-skin.md} +12 -16
  687. package/docs/reference/{live-audio-skin.md → components/live-audio-skin.md} +12 -16
  688. package/docs/reference/{live-button.md → components/live-button.md} +36 -156
  689. package/docs/reference/components/live-video-minimal-skin.md +47 -0
  690. package/docs/reference/components/live-video-skin.md +47 -0
  691. package/docs/reference/components/llms.txt +122 -0
  692. package/docs/reference/{menu.md → components/menu.md} +123 -541
  693. package/docs/reference/{mute-button.md → components/mute-button.md} +50 -200
  694. package/docs/reference/components/mux-audio.md +127 -0
  695. package/docs/reference/{mux-background-video.md → components/mux-background-video.md} +9 -15
  696. package/docs/reference/components/mux-data.md +51 -0
  697. package/docs/reference/components/mux-video.md +220 -0
  698. package/docs/reference/components/native-hls-video.md +128 -0
  699. package/docs/reference/{pip-button.md → components/pip-button.md} +35 -153
  700. package/docs/reference/{play-button.md → components/play-button.md} +30 -134
  701. package/docs/reference/{playback-rate-button.md → components/playback-rate-button.md} +25 -105
  702. package/docs/reference/{playback-rate-radio-group.md → components/playback-rate-radio-group.md} +47 -223
  703. package/docs/reference/{player-container.md → components/player-container.md} +16 -27
  704. package/docs/reference/{player.md → components/player.md} +14 -24
  705. package/docs/reference/components/popover.md +193 -0
  706. package/docs/reference/{poster.md → components/poster.md} +42 -162
  707. package/docs/reference/{quality-radio-group.md → components/quality-radio-group.md} +47 -219
  708. package/docs/reference/{seek-button.md → components/seek-button.md} +26 -127
  709. package/docs/reference/{seek-indicator.md → components/seek-indicator.md} +55 -233
  710. package/docs/reference/components/shaka-video.md +161 -0
  711. package/docs/reference/components/slider.md +414 -0
  712. package/docs/reference/components/spotify-audio.md +144 -0
  713. package/docs/reference/{status-announcer.md → components/status-announcer.md} +37 -122
  714. package/docs/reference/{status-indicator.md → components/status-indicator.md} +57 -278
  715. package/docs/reference/components/thumbnail.md +321 -0
  716. package/docs/reference/components/tiktok-video.md +165 -0
  717. package/docs/reference/{time-slider.md → components/time-slider.md} +136 -595
  718. package/docs/reference/{time.md → components/time.md} +96 -286
  719. package/docs/reference/{title.md → components/title.md} +31 -70
  720. package/docs/reference/components/tooltip.md +274 -0
  721. package/docs/reference/components/twitch-video.md +161 -0
  722. package/docs/reference/components/video-minimal-skin.md +51 -0
  723. package/docs/reference/components/video-skin.md +51 -0
  724. package/docs/reference/{video.md → components/video.md} +14 -17
  725. package/docs/reference/components/vimeo-video.md +173 -0
  726. package/docs/reference/{volume-indicator.md → components/volume-indicator.md} +78 -291
  727. package/docs/reference/components/volume-popover.md +232 -0
  728. package/docs/reference/components/volume-slider.md +331 -0
  729. package/docs/reference/{wistia-video.md → components/wistia-video.md} +22 -30
  730. package/docs/reference/components/youtube-video.md +163 -0
  731. package/package.json +39 -38
  732. package/dist/default/define/audio/minimal-skin.js.map +0 -1
  733. package/dist/default/define/audio/minimal-skin2.js.map +0 -1
  734. package/dist/default/define/audio/minimal-ui.js.map +0 -1
  735. package/dist/default/define/audio/player.js.map +0 -1
  736. package/dist/default/define/audio/skin.js.map +0 -1
  737. package/dist/default/define/audio/skin2.js.map +0 -1
  738. package/dist/default/define/audio/ui.js.map +0 -1
  739. package/dist/default/define/background/player.js.map +0 -1
  740. package/dist/default/define/background/skin.js.map +0 -1
  741. package/dist/default/define/background/skin2.js.map +0 -1
  742. package/dist/default/define/extensions/google-cast.js.map +0 -1
  743. package/dist/default/define/extensions/mux-data.js.map +0 -1
  744. package/dist/default/define/global.js.map +0 -1
  745. package/dist/default/define/i18n.js.map +0 -1
  746. package/dist/default/define/live-audio/minimal-skin.js.map +0 -1
  747. package/dist/default/define/live-audio/minimal-skin2.js.map +0 -1
  748. package/dist/default/define/live-audio/minimal-ui.js.map +0 -1
  749. package/dist/default/define/live-audio/player.js.map +0 -1
  750. package/dist/default/define/live-audio/skin.js.map +0 -1
  751. package/dist/default/define/live-audio/skin2.js.map +0 -1
  752. package/dist/default/define/live-audio/ui.js.map +0 -1
  753. package/dist/default/define/live-video/minimal-skin.js.map +0 -1
  754. package/dist/default/define/live-video/minimal-skin2.js.map +0 -1
  755. package/dist/default/define/live-video/minimal-ui.js.map +0 -1
  756. package/dist/default/define/live-video/player.js.map +0 -1
  757. package/dist/default/define/live-video/skin.js.map +0 -1
  758. package/dist/default/define/live-video/skin2.js.map +0 -1
  759. package/dist/default/define/live-video/ui.js.map +0 -1
  760. package/dist/default/define/media/background-video.js.map +0 -1
  761. package/dist/default/define/media/cloudflare-video.js.map +0 -1
  762. package/dist/default/define/media/dash-video.js.map +0 -1
  763. package/dist/default/define/media/hls-audio.js.map +0 -1
  764. package/dist/default/define/media/hls-background-video.js.map +0 -1
  765. package/dist/default/define/media/hls-video.js.map +0 -1
  766. package/dist/default/define/media/hlsjs-video.js.map +0 -1
  767. package/dist/default/define/media/mux-audio/hls-js.js.map +0 -1
  768. package/dist/default/define/media/mux-audio/spf.js.map +0 -1
  769. package/dist/default/define/media/mux-background-video.js.map +0 -1
  770. package/dist/default/define/media/mux-video/hls-js.js.map +0 -1
  771. package/dist/default/define/media/mux-video/spf.js.map +0 -1
  772. package/dist/default/define/media/native-hls-video.js.map +0 -1
  773. package/dist/default/define/media/shaka-video.js.map +0 -1
  774. package/dist/default/define/media/spotify-audio.js.map +0 -1
  775. package/dist/default/define/media/tiktok-video.js.map +0 -1
  776. package/dist/default/define/media/twitch-video.js.map +0 -1
  777. package/dist/default/define/media/vimeo-video.js.map +0 -1
  778. package/dist/default/define/media/wistia-video.js.map +0 -1
  779. package/dist/default/define/media/youtube-video.js.map +0 -1
  780. package/dist/default/define/shared.css +0 -27
  781. package/dist/default/define/shared.js +0 -6
  782. package/dist/default/define/shared.js.map +0 -1
  783. package/dist/default/define/ui/airplay-button.js.map +0 -1
  784. package/dist/default/define/ui/alert-dialog.js.map +0 -1
  785. package/dist/default/define/ui/audio-track-radio-group.js.map +0 -1
  786. package/dist/default/define/ui/buffering-indicator.js.map +0 -1
  787. package/dist/default/define/ui/captions-button.js.map +0 -1
  788. package/dist/default/define/ui/captions-radio-group.js.map +0 -1
  789. package/dist/default/define/ui/cast-button.js.map +0 -1
  790. package/dist/default/define/ui/container.js.map +0 -1
  791. package/dist/default/define/ui/controls-backdrop.js.map +0 -1
  792. package/dist/default/define/ui/controls-content.js.map +0 -1
  793. package/dist/default/define/ui/controls-group.js.map +0 -1
  794. package/dist/default/define/ui/controls.js.map +0 -1
  795. package/dist/default/define/ui/dialog-backdrop.js.map +0 -1
  796. package/dist/default/define/ui/dialog-close.js.map +0 -1
  797. package/dist/default/define/ui/dialog-description.js.map +0 -1
  798. package/dist/default/define/ui/dialog-popup.js.map +0 -1
  799. package/dist/default/define/ui/dialog-title.js.map +0 -1
  800. package/dist/default/define/ui/dialog.js.map +0 -1
  801. package/dist/default/define/ui/error-dialog.js.map +0 -1
  802. package/dist/default/define/ui/fullscreen-button.js.map +0 -1
  803. package/dist/default/define/ui/gesture.js.map +0 -1
  804. package/dist/default/define/ui/hotkey.js.map +0 -1
  805. package/dist/default/define/ui/live-button.js.map +0 -1
  806. package/dist/default/define/ui/menu-checkbox-item.js.map +0 -1
  807. package/dist/default/define/ui/menu-content.js.map +0 -1
  808. package/dist/default/define/ui/menu-group-label.js.map +0 -1
  809. package/dist/default/define/ui/menu-group.js.map +0 -1
  810. package/dist/default/define/ui/menu-item-indicator.js.map +0 -1
  811. package/dist/default/define/ui/menu-item.js.map +0 -1
  812. package/dist/default/define/ui/menu-radio-group.js.map +0 -1
  813. package/dist/default/define/ui/menu-radio-item.js.map +0 -1
  814. package/dist/default/define/ui/menu-separator.js.map +0 -1
  815. package/dist/default/define/ui/menu.js.map +0 -1
  816. package/dist/default/define/ui/mute-button.js.map +0 -1
  817. package/dist/default/define/ui/pip-button.js.map +0 -1
  818. package/dist/default/define/ui/play-button.js.map +0 -1
  819. package/dist/default/define/ui/playback-rate-button.js.map +0 -1
  820. package/dist/default/define/ui/playback-rate-radio-group.js.map +0 -1
  821. package/dist/default/define/ui/popover.js.map +0 -1
  822. package/dist/default/define/ui/poster.js.map +0 -1
  823. package/dist/default/define/ui/quality-radio-group.js.map +0 -1
  824. package/dist/default/define/ui/seek-button.js.map +0 -1
  825. package/dist/default/define/ui/seek-indicator-value.js.map +0 -1
  826. package/dist/default/define/ui/seek-indicator.js.map +0 -1
  827. package/dist/default/define/ui/slider-buffer.js.map +0 -1
  828. package/dist/default/define/ui/slider-fill.js.map +0 -1
  829. package/dist/default/define/ui/slider-preview.js.map +0 -1
  830. package/dist/default/define/ui/slider-thumb.js.map +0 -1
  831. package/dist/default/define/ui/slider-thumbnail.js.map +0 -1
  832. package/dist/default/define/ui/slider-track.js.map +0 -1
  833. package/dist/default/define/ui/slider-value.js.map +0 -1
  834. package/dist/default/define/ui/slider.js.map +0 -1
  835. package/dist/default/define/ui/status-announcer.js.map +0 -1
  836. package/dist/default/define/ui/status-indicator-value.js.map +0 -1
  837. package/dist/default/define/ui/status-indicator.js.map +0 -1
  838. package/dist/default/define/ui/thumbnail.js.map +0 -1
  839. package/dist/default/define/ui/time-group.js.map +0 -1
  840. package/dist/default/define/ui/time-separator.js.map +0 -1
  841. package/dist/default/define/ui/time-slider-chapter-title.js.map +0 -1
  842. package/dist/default/define/ui/time-slider-chapters.js.map +0 -1
  843. package/dist/default/define/ui/time-slider.js.map +0 -1
  844. package/dist/default/define/ui/time.js.map +0 -1
  845. package/dist/default/define/ui/title.js.map +0 -1
  846. package/dist/default/define/ui/tooltip-group.js.map +0 -1
  847. package/dist/default/define/ui/tooltip-label.js.map +0 -1
  848. package/dist/default/define/ui/tooltip-shortcut.js.map +0 -1
  849. package/dist/default/define/ui/tooltip.js.map +0 -1
  850. package/dist/default/define/ui/volume-indicator-fill.js.map +0 -1
  851. package/dist/default/define/ui/volume-indicator-value.js.map +0 -1
  852. package/dist/default/define/ui/volume-indicator.js.map +0 -1
  853. package/dist/default/define/ui/volume-popover.js.map +0 -1
  854. package/dist/default/define/ui/volume-slider.js.map +0 -1
  855. package/dist/default/define/video/minimal-skin.js.map +0 -1
  856. package/dist/default/define/video/minimal-skin2.js.map +0 -1
  857. package/dist/default/define/video/minimal-ui.js.map +0 -1
  858. package/dist/default/define/video/player.js.map +0 -1
  859. package/dist/default/define/video/skin.js.map +0 -1
  860. package/dist/default/define/video/skin2.js.map +0 -1
  861. package/dist/default/define/video/ui.js.map +0 -1
  862. package/dist/default/extensions/google-cast/extension.js.map +0 -1
  863. package/dist/default/extensions/media-extension-element.js.map +0 -1
  864. package/dist/default/extensions/mux-data/extension.js.map +0 -1
  865. package/dist/default/i18n/cache-key.js.map +0 -1
  866. package/dist/default/i18n/context.js.map +0 -1
  867. package/dist/default/i18n/controller.js.map +0 -1
  868. package/dist/default/i18n/create-i18n.js.map +0 -1
  869. package/dist/default/i18n/locale.js.map +0 -1
  870. package/dist/default/i18n/locales/all/register.js.map +0 -1
  871. package/dist/default/i18n/locales/ar/register.js.map +0 -1
  872. package/dist/default/i18n/locales/az/register.js.map +0 -1
  873. package/dist/default/i18n/locales/bg/register.js.map +0 -1
  874. package/dist/default/i18n/locales/bn/register.js.map +0 -1
  875. package/dist/default/i18n/locales/bs/register.js.map +0 -1
  876. package/dist/default/i18n/locales/ca/register.js.map +0 -1
  877. package/dist/default/i18n/locales/cs/register.js.map +0 -1
  878. package/dist/default/i18n/locales/cy/register.js.map +0 -1
  879. package/dist/default/i18n/locales/da/register.js.map +0 -1
  880. package/dist/default/i18n/locales/de/register.js.map +0 -1
  881. package/dist/default/i18n/locales/el/register.js.map +0 -1
  882. package/dist/default/i18n/locales/en/register.js.map +0 -1
  883. package/dist/default/i18n/locales/es/register.js.map +0 -1
  884. package/dist/default/i18n/locales/et/register.js.map +0 -1
  885. package/dist/default/i18n/locales/eu/register.js.map +0 -1
  886. package/dist/default/i18n/locales/fa/register.js.map +0 -1
  887. package/dist/default/i18n/locales/fi/register.js.map +0 -1
  888. package/dist/default/i18n/locales/fr/register.js.map +0 -1
  889. package/dist/default/i18n/locales/gd/register.js.map +0 -1
  890. package/dist/default/i18n/locales/gl/register.js.map +0 -1
  891. package/dist/default/i18n/locales/he/register.js.map +0 -1
  892. package/dist/default/i18n/locales/hi/register.js.map +0 -1
  893. package/dist/default/i18n/locales/hr/register.js.map +0 -1
  894. package/dist/default/i18n/locales/hu/register.js.map +0 -1
  895. package/dist/default/i18n/locales/id/register.js.map +0 -1
  896. package/dist/default/i18n/locales/it/register.js.map +0 -1
  897. package/dist/default/i18n/locales/ja/register.js.map +0 -1
  898. package/dist/default/i18n/locales/ko/register.js.map +0 -1
  899. package/dist/default/i18n/locales/lt/register.js.map +0 -1
  900. package/dist/default/i18n/locales/lv/register.js.map +0 -1
  901. package/dist/default/i18n/locales/mr/register.js.map +0 -1
  902. package/dist/default/i18n/locales/nb/register.js.map +0 -1
  903. package/dist/default/i18n/locales/ne/register.js.map +0 -1
  904. package/dist/default/i18n/locales/nl/register.js.map +0 -1
  905. package/dist/default/i18n/locales/nn/register.js.map +0 -1
  906. package/dist/default/i18n/locales/oc/register.js.map +0 -1
  907. package/dist/default/i18n/locales/pl/register.js.map +0 -1
  908. package/dist/default/i18n/locales/pt/register.js.map +0 -1
  909. package/dist/default/i18n/locales/pt-BR/register.js.map +0 -1
  910. package/dist/default/i18n/locales/pt-PT/register.js.map +0 -1
  911. package/dist/default/i18n/locales/ro/register.js.map +0 -1
  912. package/dist/default/i18n/locales/ru/register.js.map +0 -1
  913. package/dist/default/i18n/locales/sk/register.js.map +0 -1
  914. package/dist/default/i18n/locales/sl/register.js.map +0 -1
  915. package/dist/default/i18n/locales/sr/register.js.map +0 -1
  916. package/dist/default/i18n/locales/sv/register.js.map +0 -1
  917. package/dist/default/i18n/locales/te/register.js.map +0 -1
  918. package/dist/default/i18n/locales/th/register.js.map +0 -1
  919. package/dist/default/i18n/locales/tr/register.js.map +0 -1
  920. package/dist/default/i18n/locales/uk/register.js.map +0 -1
  921. package/dist/default/i18n/locales/vi/register.js.map +0 -1
  922. package/dist/default/i18n/locales/zh/register.js.map +0 -1
  923. package/dist/default/i18n/locales/zh-CN/register.js.map +0 -1
  924. package/dist/default/i18n/locales/zh-TW/register.js.map +0 -1
  925. package/dist/default/i18n/provider-element.js.map +0 -1
  926. package/dist/default/i18n/provider-mixin.js.map +0 -1
  927. package/dist/default/i18n/render-text.js.map +0 -1
  928. package/dist/default/i18n/text-mixin.js.map +0 -1
  929. package/dist/default/icons/dist/element/base.js.map +0 -1
  930. package/dist/default/icons/dist/element/default/icons.js.map +0 -1
  931. package/dist/default/icons/dist/element/default/index.js.map +0 -1
  932. package/dist/default/icons/dist/element/index.js.map +0 -1
  933. package/dist/default/icons/dist/element/minimal/icons.js.map +0 -1
  934. package/dist/default/icons/dist/element/minimal/index.js.map +0 -1
  935. package/dist/default/icons/dist/html/default/airplay-enter.js.map +0 -1
  936. package/dist/default/icons/dist/html/default/airplay-exit.js.map +0 -1
  937. package/dist/default/icons/dist/html/default/captions-off.js.map +0 -1
  938. package/dist/default/icons/dist/html/default/captions-on.js.map +0 -1
  939. package/dist/default/icons/dist/html/default/cast-enter.js.map +0 -1
  940. package/dist/default/icons/dist/html/default/cast-exit.js.map +0 -1
  941. package/dist/default/icons/dist/html/default/check.js.map +0 -1
  942. package/dist/default/icons/dist/html/default/chevron.js.map +0 -1
  943. package/dist/default/icons/dist/html/default/fullscreen-enter.js.map +0 -1
  944. package/dist/default/icons/dist/html/default/fullscreen-exit.js.map +0 -1
  945. package/dist/default/icons/dist/html/default/gear.js.map +0 -1
  946. package/dist/default/icons/dist/html/default/pause.js.map +0 -1
  947. package/dist/default/icons/dist/html/default/pip-enter.js.map +0 -1
  948. package/dist/default/icons/dist/html/default/pip-exit.js.map +0 -1
  949. package/dist/default/icons/dist/html/default/play.js.map +0 -1
  950. package/dist/default/icons/dist/html/default/quality.js.map +0 -1
  951. package/dist/default/icons/dist/html/default/restart.js.map +0 -1
  952. package/dist/default/icons/dist/html/default/seek.js.map +0 -1
  953. package/dist/default/icons/dist/html/default/speech.js.map +0 -1
  954. package/dist/default/icons/dist/html/default/speed.js.map +0 -1
  955. package/dist/default/icons/dist/html/default/spinner.js.map +0 -1
  956. package/dist/default/icons/dist/html/default/switches.js.map +0 -1
  957. package/dist/default/icons/dist/html/default/volume-high.js.map +0 -1
  958. package/dist/default/icons/dist/html/default/volume-low.js.map +0 -1
  959. package/dist/default/icons/dist/html/default/volume-off.js.map +0 -1
  960. package/dist/default/icons/dist/html/minimal/airplay-enter.js.map +0 -1
  961. package/dist/default/icons/dist/html/minimal/airplay-exit.js.map +0 -1
  962. package/dist/default/icons/dist/html/minimal/captions-off.js.map +0 -1
  963. package/dist/default/icons/dist/html/minimal/captions-on.js.map +0 -1
  964. package/dist/default/icons/dist/html/minimal/cast-enter.js.map +0 -1
  965. package/dist/default/icons/dist/html/minimal/cast-exit.js.map +0 -1
  966. package/dist/default/icons/dist/html/minimal/check.js.map +0 -1
  967. package/dist/default/icons/dist/html/minimal/chevron.js.map +0 -1
  968. package/dist/default/icons/dist/html/minimal/fullscreen-enter.js.map +0 -1
  969. package/dist/default/icons/dist/html/minimal/fullscreen-exit.js.map +0 -1
  970. package/dist/default/icons/dist/html/minimal/gear.js.map +0 -1
  971. package/dist/default/icons/dist/html/minimal/pause.js.map +0 -1
  972. package/dist/default/icons/dist/html/minimal/pip-enter.js.map +0 -1
  973. package/dist/default/icons/dist/html/minimal/pip-exit.js.map +0 -1
  974. package/dist/default/icons/dist/html/minimal/play.js.map +0 -1
  975. package/dist/default/icons/dist/html/minimal/quality.js.map +0 -1
  976. package/dist/default/icons/dist/html/minimal/restart.js.map +0 -1
  977. package/dist/default/icons/dist/html/minimal/seek.js.map +0 -1
  978. package/dist/default/icons/dist/html/minimal/speech.js.map +0 -1
  979. package/dist/default/icons/dist/html/minimal/speed.js.map +0 -1
  980. package/dist/default/icons/dist/html/minimal/spinner.js.map +0 -1
  981. package/dist/default/icons/dist/html/minimal/switches.js.map +0 -1
  982. package/dist/default/icons/dist/html/minimal/volume-high.js.map +0 -1
  983. package/dist/default/icons/dist/html/minimal/volume-low.js.map +0 -1
  984. package/dist/default/icons/dist/html/minimal/volume-off.js.map +0 -1
  985. package/dist/default/icons/element/register/index.js.map +0 -1
  986. package/dist/default/internal/skins/default-audio/register.js.map +0 -1
  987. package/dist/default/internal/skins/default-audio/template.js.map +0 -1
  988. package/dist/default/internal/skins/default-live-audio/register.js.map +0 -1
  989. package/dist/default/internal/skins/default-live-audio/template.js.map +0 -1
  990. package/dist/default/internal/skins/default-live-video/register.js.map +0 -1
  991. package/dist/default/internal/skins/default-live-video/template.js.map +0 -1
  992. package/dist/default/internal/skins/default-video/register.js.map +0 -1
  993. package/dist/default/internal/skins/default-video/template.js.map +0 -1
  994. package/dist/default/internal/skins/minimal-audio/register.js.map +0 -1
  995. package/dist/default/internal/skins/minimal-audio/template.js.map +0 -1
  996. package/dist/default/internal/skins/minimal-live-audio/register.js.map +0 -1
  997. package/dist/default/internal/skins/minimal-live-audio/template.js.map +0 -1
  998. package/dist/default/internal/skins/minimal-live-video/register.js.map +0 -1
  999. package/dist/default/internal/skins/minimal-live-video/template.js.map +0 -1
  1000. package/dist/default/internal/skins/minimal-video/register.js.map +0 -1
  1001. package/dist/default/internal/skins/minimal-video/template.js.map +0 -1
  1002. package/dist/default/media/background-video/adapter.js.map +0 -1
  1003. package/dist/default/media/background-video/template.js.map +0 -1
  1004. package/dist/default/media/cloudflare-video/adapter.js.map +0 -1
  1005. package/dist/default/media/dash-video/adapter.js.map +0 -1
  1006. package/dist/default/media/hls-audio/adapter.js.map +0 -1
  1007. package/dist/default/media/hls-background-video/adapter.js.map +0 -1
  1008. package/dist/default/media/hls-video/adapter.js.map +0 -1
  1009. package/dist/default/media/hlsjs-video/adapter.js.map +0 -1
  1010. package/dist/default/media/mux-audio/hls-js.js.map +0 -1
  1011. package/dist/default/media/mux-audio/mixin.js.map +0 -1
  1012. package/dist/default/media/mux-audio/spf.js.map +0 -1
  1013. package/dist/default/media/mux-video/hls-js.js.map +0 -1
  1014. package/dist/default/media/mux-video/mixin.js.map +0 -1
  1015. package/dist/default/media/mux-video/spf.js.map +0 -1
  1016. package/dist/default/media/native-hls-video/adapter.js.map +0 -1
  1017. package/dist/default/media/shaka-video/adapter.js.map +0 -1
  1018. package/dist/default/media/spotify-audio/adapter.js.map +0 -1
  1019. package/dist/default/media/tiktok-video/adapter.js.map +0 -1
  1020. package/dist/default/media/twitch-video/adapter.js.map +0 -1
  1021. package/dist/default/media/vimeo-video/adapter.js.map +0 -1
  1022. package/dist/default/media/wistia-video/adapter.js.map +0 -1
  1023. package/dist/default/media/youtube-video/adapter.js.map +0 -1
  1024. package/dist/default/player/context.js.map +0 -1
  1025. package/dist/default/player/controller.js.map +0 -1
  1026. package/dist/default/player/create-player.js.map +0 -1
  1027. package/dist/default/player/element.js.map +0 -1
  1028. package/dist/default/player/popup-group-context.js.map +0 -1
  1029. package/dist/default/presets/audio/minimal-skin.js.map +0 -1
  1030. package/dist/default/presets/audio/player.js.map +0 -1
  1031. package/dist/default/presets/audio/skin.js.map +0 -1
  1032. package/dist/default/presets/background/player.js.map +0 -1
  1033. package/dist/default/presets/background/skin.js.map +0 -1
  1034. package/dist/default/presets/live-audio/minimal-skin.js.map +0 -1
  1035. package/dist/default/presets/live-audio/player.js.map +0 -1
  1036. package/dist/default/presets/live-audio/skin.js.map +0 -1
  1037. package/dist/default/presets/live-video/minimal-skin.js.map +0 -1
  1038. package/dist/default/presets/live-video/player.js.map +0 -1
  1039. package/dist/default/presets/live-video/skin.js.map +0 -1
  1040. package/dist/default/presets/skin.js.map +0 -1
  1041. package/dist/default/presets/video/minimal-skin.js.map +0 -1
  1042. package/dist/default/presets/video/player.js.map +0 -1
  1043. package/dist/default/presets/video/skin.js.map +0 -1
  1044. package/dist/default/registration/safe-define.js.map +0 -1
  1045. package/dist/default/registration/ui-compounds.js.map +0 -1
  1046. package/dist/default/store/media-attach-mixin.js.map +0 -1
  1047. package/dist/default/ui/airplay-button/element.js.map +0 -1
  1048. package/dist/default/ui/alert-dialog/element.js.map +0 -1
  1049. package/dist/default/ui/audio-track-radio-group/element.js.map +0 -1
  1050. package/dist/default/ui/buffering-indicator/element.js.map +0 -1
  1051. package/dist/default/ui/captions-button/element.js.map +0 -1
  1052. package/dist/default/ui/captions-radio-group/element.js.map +0 -1
  1053. package/dist/default/ui/cast-button/element.js.map +0 -1
  1054. package/dist/default/ui/command-for.js.map +0 -1
  1055. package/dist/default/ui/container/element.js.map +0 -1
  1056. package/dist/default/ui/context-part-element.js.map +0 -1
  1057. package/dist/default/ui/controls/backdrop.js.map +0 -1
  1058. package/dist/default/ui/controls/content.js.map +0 -1
  1059. package/dist/default/ui/controls/context.js.map +0 -1
  1060. package/dist/default/ui/controls/element.js.map +0 -1
  1061. package/dist/default/ui/controls/group.js.map +0 -1
  1062. package/dist/default/ui/dialog/backdrop.js.map +0 -1
  1063. package/dist/default/ui/dialog/close.js.map +0 -1
  1064. package/dist/default/ui/dialog/context.js.map +0 -1
  1065. package/dist/default/ui/dialog/description.js.map +0 -1
  1066. package/dist/default/ui/dialog/element.js.map +0 -1
  1067. package/dist/default/ui/dialog/popup.js.map +0 -1
  1068. package/dist/default/ui/dialog/title.js.map +0 -1
  1069. package/dist/default/ui/error-dialog/element.js.map +0 -1
  1070. package/dist/default/ui/fullscreen-button/element.js.map +0 -1
  1071. package/dist/default/ui/gesture/element.js.map +0 -1
  1072. package/dist/default/ui/hotkey/aria-key-shortcuts-controller.js.map +0 -1
  1073. package/dist/default/ui/hotkey/element.js.map +0 -1
  1074. package/dist/default/ui/input-indicator/element.js.map +0 -1
  1075. package/dist/default/ui/input-indicator/live-indicator.js.map +0 -1
  1076. package/dist/default/ui/live-button/element.js.map +0 -1
  1077. package/dist/default/ui/media-button-element.js.map +0 -1
  1078. package/dist/default/ui/media-ui-element.js.map +0 -1
  1079. package/dist/default/ui/menu/checkbox-item.js.map +0 -1
  1080. package/dist/default/ui/menu/content.js.map +0 -1
  1081. package/dist/default/ui/menu/context.js.map +0 -1
  1082. package/dist/default/ui/menu/element.js.map +0 -1
  1083. package/dist/default/ui/menu/group-controller.js.map +0 -1
  1084. package/dist/default/ui/menu/group-label.js.map +0 -1
  1085. package/dist/default/ui/menu/group.js.map +0 -1
  1086. package/dist/default/ui/menu/item-indicator.js.map +0 -1
  1087. package/dist/default/ui/menu/item.js.map +0 -1
  1088. package/dist/default/ui/menu/radio-group.js.map +0 -1
  1089. package/dist/default/ui/menu/radio-item.js.map +0 -1
  1090. package/dist/default/ui/menu/separator.js.map +0 -1
  1091. package/dist/default/ui/mute-button/element.js.map +0 -1
  1092. package/dist/default/ui/pip-button/element.js.map +0 -1
  1093. package/dist/default/ui/play-button/element.js.map +0 -1
  1094. package/dist/default/ui/playback-rate-button/element.js.map +0 -1
  1095. package/dist/default/ui/playback-rate-radio-group/element.js.map +0 -1
  1096. package/dist/default/ui/popover/element.js.map +0 -1
  1097. package/dist/default/ui/position-controller.js.map +0 -1
  1098. package/dist/default/ui/poster/element.js.map +0 -1
  1099. package/dist/default/ui/quality-radio-group/element.js.map +0 -1
  1100. package/dist/default/ui/radio-group/context.js.map +0 -1
  1101. package/dist/default/ui/radio-group/element.js.map +0 -1
  1102. package/dist/default/ui/radio-options/controller.js.map +0 -1
  1103. package/dist/default/ui/seek-button/element.js.map +0 -1
  1104. package/dist/default/ui/seek-indicator/element.js.map +0 -1
  1105. package/dist/default/ui/seek-indicator/value.js.map +0 -1
  1106. package/dist/default/ui/slider/buffer.js.map +0 -1
  1107. package/dist/default/ui/slider/context.js.map +0 -1
  1108. package/dist/default/ui/slider/element.js.map +0 -1
  1109. package/dist/default/ui/slider/fill.js.map +0 -1
  1110. package/dist/default/ui/slider/preview.js.map +0 -1
  1111. package/dist/default/ui/slider/thumb.js.map +0 -1
  1112. package/dist/default/ui/slider/thumbnail.js.map +0 -1
  1113. package/dist/default/ui/slider/track.js.map +0 -1
  1114. package/dist/default/ui/slider/value.js.map +0 -1
  1115. package/dist/default/ui/status-announcer/element.js.map +0 -1
  1116. package/dist/default/ui/status-indicator/element.js.map +0 -1
  1117. package/dist/default/ui/status-indicator/value.js.map +0 -1
  1118. package/dist/default/ui/text/element.js.map +0 -1
  1119. package/dist/default/ui/thumbnail/element.js.map +0 -1
  1120. package/dist/default/ui/time/element.js.map +0 -1
  1121. package/dist/default/ui/time/group.js.map +0 -1
  1122. package/dist/default/ui/time/separator.js.map +0 -1
  1123. package/dist/default/ui/time-slider/chapter-title.js.map +0 -1
  1124. package/dist/default/ui/time-slider/chapters.js.map +0 -1
  1125. package/dist/default/ui/time-slider/element.js.map +0 -1
  1126. package/dist/default/ui/title/element.js.map +0 -1
  1127. package/dist/default/ui/tooltip/context.js.map +0 -1
  1128. package/dist/default/ui/tooltip/element.js.map +0 -1
  1129. package/dist/default/ui/tooltip/group.js.map +0 -1
  1130. package/dist/default/ui/tooltip/label.js.map +0 -1
  1131. package/dist/default/ui/tooltip/shortcut.js.map +0 -1
  1132. package/dist/default/ui/ui-element.js.map +0 -1
  1133. package/dist/default/ui/volume-indicator/element.js.map +0 -1
  1134. package/dist/default/ui/volume-indicator/fill.js.map +0 -1
  1135. package/dist/default/ui/volume-indicator/value.js.map +0 -1
  1136. package/dist/default/ui/volume-popover/element.js.map +0 -1
  1137. package/dist/default/ui/volume-slider/element.js.map +0 -1
  1138. package/dist/dev/define/extensions/google-cast.d.ts.map +0 -1
  1139. package/dist/dev/define/extensions/mux-data.d.ts.map +0 -1
  1140. package/dist/dev/define/i18n.d.ts.map +0 -1
  1141. package/dist/dev/define/media/background-video.d.ts.map +0 -1
  1142. package/dist/dev/define/media/cloudflare-video.d.ts.map +0 -1
  1143. package/dist/dev/define/media/dash-video.d.ts.map +0 -1
  1144. package/dist/dev/define/media/hls-audio.d.ts.map +0 -1
  1145. package/dist/dev/define/media/hls-background-video.d.ts.map +0 -1
  1146. package/dist/dev/define/media/hls-video.d.ts.map +0 -1
  1147. package/dist/dev/define/media/hlsjs-video.d.ts.map +0 -1
  1148. package/dist/dev/define/media/mux-audio/hls-js.d.ts.map +0 -1
  1149. package/dist/dev/define/media/mux-audio/spf.d.ts.map +0 -1
  1150. package/dist/dev/define/media/mux-background-video.d.ts.map +0 -1
  1151. package/dist/dev/define/media/mux-video/hls-js.d.ts.map +0 -1
  1152. package/dist/dev/define/media/mux-video/spf.d.ts.map +0 -1
  1153. package/dist/dev/define/media/native-hls-video.d.ts.map +0 -1
  1154. package/dist/dev/define/media/shaka-video.d.ts.map +0 -1
  1155. package/dist/dev/define/media/spotify-audio.d.ts.map +0 -1
  1156. package/dist/dev/define/media/tiktok-video.d.ts.map +0 -1
  1157. package/dist/dev/define/media/twitch-video.d.ts.map +0 -1
  1158. package/dist/dev/define/media/vimeo-video.d.ts.map +0 -1
  1159. package/dist/dev/define/media/wistia-video.d.ts.map +0 -1
  1160. package/dist/dev/define/media/youtube-video.d.ts.map +0 -1
  1161. package/dist/dev/define/shared.css +0 -27
  1162. package/dist/dev/define/shared.js +0 -6
  1163. package/dist/dev/define/shared.js.map +0 -1
  1164. package/dist/dev/define/ui/airplay-button.d.ts.map +0 -1
  1165. package/dist/dev/define/ui/alert-dialog.d.ts.map +0 -1
  1166. package/dist/dev/define/ui/audio-track-radio-group.d.ts.map +0 -1
  1167. package/dist/dev/define/ui/buffering-indicator.d.ts.map +0 -1
  1168. package/dist/dev/define/ui/captions-button.d.ts.map +0 -1
  1169. package/dist/dev/define/ui/captions-radio-group.d.ts.map +0 -1
  1170. package/dist/dev/define/ui/cast-button.d.ts.map +0 -1
  1171. package/dist/dev/define/ui/container.d.ts.map +0 -1
  1172. package/dist/dev/define/ui/controls-backdrop.d.ts.map +0 -1
  1173. package/dist/dev/define/ui/controls-content.d.ts.map +0 -1
  1174. package/dist/dev/define/ui/controls-group.d.ts.map +0 -1
  1175. package/dist/dev/define/ui/controls.d.ts.map +0 -1
  1176. package/dist/dev/define/ui/dialog-backdrop.d.ts.map +0 -1
  1177. package/dist/dev/define/ui/dialog-close.d.ts.map +0 -1
  1178. package/dist/dev/define/ui/dialog-description.d.ts.map +0 -1
  1179. package/dist/dev/define/ui/dialog-popup.d.ts.map +0 -1
  1180. package/dist/dev/define/ui/dialog-title.d.ts.map +0 -1
  1181. package/dist/dev/define/ui/dialog.d.ts.map +0 -1
  1182. package/dist/dev/define/ui/error-dialog.d.ts.map +0 -1
  1183. package/dist/dev/define/ui/fullscreen-button.d.ts.map +0 -1
  1184. package/dist/dev/define/ui/gesture.d.ts.map +0 -1
  1185. package/dist/dev/define/ui/hotkey.d.ts.map +0 -1
  1186. package/dist/dev/define/ui/live-button.d.ts.map +0 -1
  1187. package/dist/dev/define/ui/menu-checkbox-item.d.ts.map +0 -1
  1188. package/dist/dev/define/ui/menu-content.d.ts.map +0 -1
  1189. package/dist/dev/define/ui/menu-group-label.d.ts.map +0 -1
  1190. package/dist/dev/define/ui/menu-group.d.ts.map +0 -1
  1191. package/dist/dev/define/ui/menu-item-indicator.d.ts.map +0 -1
  1192. package/dist/dev/define/ui/menu-item.d.ts.map +0 -1
  1193. package/dist/dev/define/ui/menu-radio-group.d.ts.map +0 -1
  1194. package/dist/dev/define/ui/menu-radio-item.d.ts.map +0 -1
  1195. package/dist/dev/define/ui/menu-separator.d.ts.map +0 -1
  1196. package/dist/dev/define/ui/menu.d.ts.map +0 -1
  1197. package/dist/dev/define/ui/mute-button.d.ts.map +0 -1
  1198. package/dist/dev/define/ui/pip-button.d.ts.map +0 -1
  1199. package/dist/dev/define/ui/play-button.d.ts.map +0 -1
  1200. package/dist/dev/define/ui/playback-rate-button.d.ts.map +0 -1
  1201. package/dist/dev/define/ui/playback-rate-radio-group.d.ts.map +0 -1
  1202. package/dist/dev/define/ui/popover.d.ts.map +0 -1
  1203. package/dist/dev/define/ui/poster.d.ts.map +0 -1
  1204. package/dist/dev/define/ui/quality-radio-group.d.ts.map +0 -1
  1205. package/dist/dev/define/ui/seek-button.d.ts.map +0 -1
  1206. package/dist/dev/define/ui/seek-indicator-value.d.ts.map +0 -1
  1207. package/dist/dev/define/ui/seek-indicator.d.ts.map +0 -1
  1208. package/dist/dev/define/ui/slider-buffer.d.ts.map +0 -1
  1209. package/dist/dev/define/ui/slider-fill.d.ts.map +0 -1
  1210. package/dist/dev/define/ui/slider-preview.d.ts.map +0 -1
  1211. package/dist/dev/define/ui/slider-thumb.d.ts.map +0 -1
  1212. package/dist/dev/define/ui/slider-thumbnail.d.ts.map +0 -1
  1213. package/dist/dev/define/ui/slider-track.d.ts.map +0 -1
  1214. package/dist/dev/define/ui/slider-value.d.ts.map +0 -1
  1215. package/dist/dev/define/ui/slider.d.ts.map +0 -1
  1216. package/dist/dev/define/ui/status-announcer.d.ts.map +0 -1
  1217. package/dist/dev/define/ui/status-indicator-value.d.ts.map +0 -1
  1218. package/dist/dev/define/ui/status-indicator.d.ts.map +0 -1
  1219. package/dist/dev/define/ui/thumbnail.d.ts.map +0 -1
  1220. package/dist/dev/define/ui/time-group.d.ts.map +0 -1
  1221. package/dist/dev/define/ui/time-separator.d.ts.map +0 -1
  1222. package/dist/dev/define/ui/time-slider-chapter-title.d.ts.map +0 -1
  1223. package/dist/dev/define/ui/time-slider-chapters.d.ts.map +0 -1
  1224. package/dist/dev/define/ui/time-slider.d.ts.map +0 -1
  1225. package/dist/dev/define/ui/time.d.ts.map +0 -1
  1226. package/dist/dev/define/ui/title.d.ts.map +0 -1
  1227. package/dist/dev/define/ui/tooltip-group.d.ts.map +0 -1
  1228. package/dist/dev/define/ui/tooltip-label.d.ts.map +0 -1
  1229. package/dist/dev/define/ui/tooltip-shortcut.d.ts.map +0 -1
  1230. package/dist/dev/define/ui/tooltip.d.ts.map +0 -1
  1231. package/dist/dev/define/ui/volume-indicator-fill.d.ts.map +0 -1
  1232. package/dist/dev/define/ui/volume-indicator-value.d.ts.map +0 -1
  1233. package/dist/dev/define/ui/volume-indicator.d.ts.map +0 -1
  1234. package/dist/dev/define/ui/volume-popover.d.ts.map +0 -1
  1235. package/dist/dev/define/ui/volume-slider.d.ts.map +0 -1
  1236. package/dist/dev/extensions/google-cast/extension.d.ts.map +0 -1
  1237. package/dist/dev/extensions/media-extension-element.d.ts.map +0 -1
  1238. package/dist/dev/extensions/mux-data/extension.d.ts.map +0 -1
  1239. package/dist/dev/i18n/context.d.ts.map +0 -1
  1240. package/dist/dev/i18n/controller.d.ts.map +0 -1
  1241. package/dist/dev/i18n/create-i18n.d.ts.map +0 -1
  1242. package/dist/dev/i18n/locale.d.ts.map +0 -1
  1243. package/dist/dev/i18n/provider-element.d.ts.map +0 -1
  1244. package/dist/dev/i18n/provider-mixin.d.ts.map +0 -1
  1245. package/dist/dev/i18n/render-text.d.ts.map +0 -1
  1246. package/dist/dev/i18n/text-mixin.d.ts.map +0 -1
  1247. package/dist/dev/i18n/types.d.ts.map +0 -1
  1248. package/dist/dev/icons/dist/element/base.d.ts.map +0 -1
  1249. package/dist/dev/icons/dist/html/default/index.d.ts.map +0 -1
  1250. package/dist/dev/icons/dist/html/minimal/index.d.ts.map +0 -1
  1251. package/dist/dev/icons/element/register/index.d.ts.map +0 -1
  1252. package/dist/dev/index.d.ts.map +0 -1
  1253. package/dist/dev/media/background-video/adapter.d.ts.map +0 -1
  1254. package/dist/dev/media/background-video/template.d.ts.map +0 -1
  1255. package/dist/dev/media/cloudflare-video/adapter.d.ts.map +0 -1
  1256. package/dist/dev/media/dash-video/adapter.d.ts.map +0 -1
  1257. package/dist/dev/media/hls-audio/adapter.d.ts.map +0 -1
  1258. package/dist/dev/media/hls-background-video/adapter.d.ts.map +0 -1
  1259. package/dist/dev/media/hls-video/adapter.d.ts.map +0 -1
  1260. package/dist/dev/media/hlsjs-video/adapter.d.ts.map +0 -1
  1261. package/dist/dev/media/mux-audio/hls-js.d.ts.map +0 -1
  1262. package/dist/dev/media/mux-audio/spf.d.ts.map +0 -1
  1263. package/dist/dev/media/mux-video/hls-js.d.ts.map +0 -1
  1264. package/dist/dev/media/mux-video/spf.d.ts.map +0 -1
  1265. package/dist/dev/media/native-hls-video/adapter.d.ts.map +0 -1
  1266. package/dist/dev/media/shaka-video/adapter.d.ts.map +0 -1
  1267. package/dist/dev/media/spotify-audio/adapter.d.ts.map +0 -1
  1268. package/dist/dev/media/tiktok-video/adapter.d.ts.map +0 -1
  1269. package/dist/dev/media/twitch-video/adapter.d.ts.map +0 -1
  1270. package/dist/dev/media/vimeo-video/adapter.d.ts.map +0 -1
  1271. package/dist/dev/media/wistia-video/adapter.d.ts.map +0 -1
  1272. package/dist/dev/media/youtube-video/adapter.d.ts.map +0 -1
  1273. package/dist/dev/player/context.d.ts.map +0 -1
  1274. package/dist/dev/player/controller.d.ts.map +0 -1
  1275. package/dist/dev/player/create-player.d.ts.map +0 -1
  1276. package/dist/dev/presets/audio/minimal-skin.d.ts.map +0 -1
  1277. package/dist/dev/presets/audio/player.d.ts.map +0 -1
  1278. package/dist/dev/presets/audio/skin.d.ts.map +0 -1
  1279. package/dist/dev/presets/background/player.d.ts.map +0 -1
  1280. package/dist/dev/presets/background/skin.d.ts.map +0 -1
  1281. package/dist/dev/presets/live-audio/minimal-skin.d.ts.map +0 -1
  1282. package/dist/dev/presets/live-audio/player.d.ts.map +0 -1
  1283. package/dist/dev/presets/live-audio/skin.d.ts.map +0 -1
  1284. package/dist/dev/presets/live-video/minimal-skin.d.ts.map +0 -1
  1285. package/dist/dev/presets/live-video/player.d.ts.map +0 -1
  1286. package/dist/dev/presets/live-video/skin.d.ts.map +0 -1
  1287. package/dist/dev/presets/skin.d.ts.map +0 -1
  1288. package/dist/dev/presets/video/minimal-skin.d.ts.map +0 -1
  1289. package/dist/dev/presets/video/player.d.ts.map +0 -1
  1290. package/dist/dev/presets/video/skin.d.ts.map +0 -1
  1291. package/dist/dev/store/media-attach-mixin.d.ts.map +0 -1
  1292. package/dist/dev/store/types.d.ts.map +0 -1
  1293. package/dist/dev/ui/airplay-button/element.d.ts.map +0 -1
  1294. package/dist/dev/ui/alert-dialog/element.d.ts.map +0 -1
  1295. package/dist/dev/ui/audio-track-radio-group/element.d.ts.map +0 -1
  1296. package/dist/dev/ui/buffering-indicator/element.d.ts.map +0 -1
  1297. package/dist/dev/ui/captions-button/element.d.ts.map +0 -1
  1298. package/dist/dev/ui/captions-radio-group/element.d.ts.map +0 -1
  1299. package/dist/dev/ui/cast-button/element.d.ts.map +0 -1
  1300. package/dist/dev/ui/container/element.d.ts.map +0 -1
  1301. package/dist/dev/ui/context-part-element.d.ts.map +0 -1
  1302. package/dist/dev/ui/controls/backdrop.d.ts.map +0 -1
  1303. package/dist/dev/ui/controls/content.d.ts.map +0 -1
  1304. package/dist/dev/ui/controls/context.d.ts.map +0 -1
  1305. package/dist/dev/ui/controls/element.d.ts.map +0 -1
  1306. package/dist/dev/ui/controls/group.d.ts.map +0 -1
  1307. package/dist/dev/ui/dialog/backdrop.d.ts.map +0 -1
  1308. package/dist/dev/ui/dialog/close.d.ts.map +0 -1
  1309. package/dist/dev/ui/dialog/context.d.ts.map +0 -1
  1310. package/dist/dev/ui/dialog/description.d.ts.map +0 -1
  1311. package/dist/dev/ui/dialog/element.d.ts.map +0 -1
  1312. package/dist/dev/ui/dialog/popup.d.ts.map +0 -1
  1313. package/dist/dev/ui/dialog/title.d.ts.map +0 -1
  1314. package/dist/dev/ui/error-dialog/element.d.ts.map +0 -1
  1315. package/dist/dev/ui/fullscreen-button/element.d.ts.map +0 -1
  1316. package/dist/dev/ui/gesture/element.d.ts.map +0 -1
  1317. package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.d.ts.map +0 -1
  1318. package/dist/dev/ui/hotkey/element.d.ts.map +0 -1
  1319. package/dist/dev/ui/input-indicator/element.d.ts.map +0 -1
  1320. package/dist/dev/ui/input-indicator/live-indicator.d.ts.map +0 -1
  1321. package/dist/dev/ui/live-button/element.d.ts.map +0 -1
  1322. package/dist/dev/ui/media-button-element.d.ts.map +0 -1
  1323. package/dist/dev/ui/media-ui-element.d.ts.map +0 -1
  1324. package/dist/dev/ui/menu/checkbox-item.d.ts.map +0 -1
  1325. package/dist/dev/ui/menu/content.d.ts.map +0 -1
  1326. package/dist/dev/ui/menu/context.d.ts.map +0 -1
  1327. package/dist/dev/ui/menu/element.d.ts.map +0 -1
  1328. package/dist/dev/ui/menu/group-label.d.ts.map +0 -1
  1329. package/dist/dev/ui/menu/group.d.ts.map +0 -1
  1330. package/dist/dev/ui/menu/item-indicator.d.ts.map +0 -1
  1331. package/dist/dev/ui/menu/item.d.ts.map +0 -1
  1332. package/dist/dev/ui/menu/radio-group.d.ts.map +0 -1
  1333. package/dist/dev/ui/menu/radio-item.d.ts.map +0 -1
  1334. package/dist/dev/ui/menu/separator.d.ts.map +0 -1
  1335. package/dist/dev/ui/mute-button/element.d.ts.map +0 -1
  1336. package/dist/dev/ui/pip-button/element.d.ts.map +0 -1
  1337. package/dist/dev/ui/play-button/element.d.ts.map +0 -1
  1338. package/dist/dev/ui/playback-rate-button/element.d.ts.map +0 -1
  1339. package/dist/dev/ui/playback-rate-radio-group/element.d.ts.map +0 -1
  1340. package/dist/dev/ui/popover/element.d.ts.map +0 -1
  1341. package/dist/dev/ui/poster/element.d.ts.map +0 -1
  1342. package/dist/dev/ui/quality-radio-group/element.d.ts.map +0 -1
  1343. package/dist/dev/ui/radio-group/context.d.ts.map +0 -1
  1344. package/dist/dev/ui/radio-group/element.d.ts.map +0 -1
  1345. package/dist/dev/ui/seek-button/element.d.ts.map +0 -1
  1346. package/dist/dev/ui/seek-indicator/element.d.ts.map +0 -1
  1347. package/dist/dev/ui/seek-indicator/value.d.ts.map +0 -1
  1348. package/dist/dev/ui/slider/buffer.d.ts.map +0 -1
  1349. package/dist/dev/ui/slider/context.d.ts.map +0 -1
  1350. package/dist/dev/ui/slider/element.d.ts.map +0 -1
  1351. package/dist/dev/ui/slider/events.d.ts.map +0 -1
  1352. package/dist/dev/ui/slider/fill.d.ts.map +0 -1
  1353. package/dist/dev/ui/slider/preview.d.ts.map +0 -1
  1354. package/dist/dev/ui/slider/thumb.d.ts.map +0 -1
  1355. package/dist/dev/ui/slider/thumbnail.d.ts.map +0 -1
  1356. package/dist/dev/ui/slider/track.d.ts.map +0 -1
  1357. package/dist/dev/ui/slider/value.d.ts.map +0 -1
  1358. package/dist/dev/ui/status-announcer/element.d.ts.map +0 -1
  1359. package/dist/dev/ui/status-indicator/element.d.ts.map +0 -1
  1360. package/dist/dev/ui/status-indicator/value.d.ts.map +0 -1
  1361. package/dist/dev/ui/text/element.d.ts.map +0 -1
  1362. package/dist/dev/ui/thumbnail/element.d.ts.map +0 -1
  1363. package/dist/dev/ui/time/element.d.ts.map +0 -1
  1364. package/dist/dev/ui/time/group.d.ts.map +0 -1
  1365. package/dist/dev/ui/time/separator.d.ts.map +0 -1
  1366. package/dist/dev/ui/time-slider/chapter-title.d.ts.map +0 -1
  1367. package/dist/dev/ui/time-slider/chapters.d.ts.map +0 -1
  1368. package/dist/dev/ui/time-slider/element.d.ts.map +0 -1
  1369. package/dist/dev/ui/title/element.d.ts.map +0 -1
  1370. package/dist/dev/ui/tooltip/context.d.ts.map +0 -1
  1371. package/dist/dev/ui/tooltip/element.d.ts.map +0 -1
  1372. package/dist/dev/ui/tooltip/group.d.ts.map +0 -1
  1373. package/dist/dev/ui/tooltip/label.d.ts.map +0 -1
  1374. package/dist/dev/ui/tooltip/shortcut.d.ts.map +0 -1
  1375. package/dist/dev/ui/ui-element.d.ts.map +0 -1
  1376. package/dist/dev/ui/volume-indicator/element.d.ts.map +0 -1
  1377. package/dist/dev/ui/volume-indicator/fill.d.ts.map +0 -1
  1378. package/dist/dev/ui/volume-indicator/value.d.ts.map +0 -1
  1379. package/dist/dev/ui/volume-popover/element.d.ts.map +0 -1
  1380. package/dist/dev/ui/volume-slider/element.d.ts.map +0 -1
  1381. package/docs/concepts/accessibility.md +0 -68
  1382. package/docs/concepts/browser-support.md +0 -45
  1383. package/docs/concepts/cdn.md +0 -119
  1384. package/docs/concepts/custom-element-lifecycle.md +0 -115
  1385. package/docs/concepts/security.md +0 -32
  1386. package/docs/concepts/skins.md +0 -188
  1387. package/docs/concepts/v10-roadmap.md +0 -75
  1388. package/docs/how-to/add-keyboard-shortcuts-and-gestures.md +0 -98
  1389. package/docs/how-to/build-with-ai.md +0 -39
  1390. package/docs/how-to/build-your-own-component.md +0 -350
  1391. package/docs/how-to/customize-skins.md +0 -358
  1392. package/docs/how-to/go-fullscreen-and-lock-orientation.md +0 -147
  1393. package/docs/how-to/handle-playback-errors.md +0 -88
  1394. package/docs/how-to/installation.md +0 -165
  1395. package/docs/how-to/migrate-from-plyr.md +0 -406
  1396. package/docs/how-to/migrate-from-video-js-8.md +0 -626
  1397. package/docs/how-to/play-live-streams.md +0 -116
  1398. package/docs/how-to/show-captions-and-subtitles.md +0 -140
  1399. package/docs/how-to/show-timeline-thumbnail-previews.md +0 -164
  1400. package/docs/reference/aria-key-shortcuts-controller.md +0 -117
  1401. package/docs/reference/audio-minimal-skin.md +0 -43
  1402. package/docs/reference/audio-skin.md +0 -43
  1403. package/docs/reference/background-video-skin.md +0 -39
  1404. package/docs/reference/cloudflare-video.md +0 -513
  1405. package/docs/reference/create-translator.md +0 -81
  1406. package/docs/reference/dash-video.md +0 -363
  1407. package/docs/reference/feature-text-tracks.md +0 -134
  1408. package/docs/reference/google-cast.md +0 -83
  1409. package/docs/reference/hls-audio.md +0 -212
  1410. package/docs/reference/hls-background-video.md +0 -100
  1411. package/docs/reference/hls-video.md +0 -339
  1412. package/docs/reference/hlsjs-video.md +0 -1047
  1413. package/docs/reference/html-i-18-n-context.md +0 -55
  1414. package/docs/reference/live-video-minimal-skin.md +0 -51
  1415. package/docs/reference/live-video-skin.md +0 -51
  1416. package/docs/reference/media-attach-mixin.md +0 -101
  1417. package/docs/reference/mux-audio.md +0 -951
  1418. package/docs/reference/mux-data.md +0 -107
  1419. package/docs/reference/mux-video.md +0 -1152
  1420. package/docs/reference/native-hls-video.md +0 -375
  1421. package/docs/reference/player-context.md +0 -60
  1422. package/docs/reference/popover.md +0 -505
  1423. package/docs/reference/shaka-video.md +0 -642
  1424. package/docs/reference/slider.md +0 -859
  1425. package/docs/reference/snapshot-controller.md +0 -244
  1426. package/docs/reference/spotify-audio.md +0 -424
  1427. package/docs/reference/store-controller.md +0 -208
  1428. package/docs/reference/thumbnail.md +0 -386
  1429. package/docs/reference/tiktok-video.md +0 -534
  1430. package/docs/reference/tooltip.md +0 -631
  1431. package/docs/reference/translation-phrases.md +0 -453
  1432. package/docs/reference/twitch-video.md +0 -477
  1433. package/docs/reference/video-minimal-skin.md +0 -49
  1434. package/docs/reference/video-skin.md +0 -49
  1435. package/docs/reference/vimeo-video.md +0 -1056
  1436. package/docs/reference/volume-popover.md +0 -527
  1437. package/docs/reference/volume-slider.md +0 -759
  1438. package/docs/reference/youtube-video.md +0 -603
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/background-video/adapter.ts"],"sourcesContent":["import type { Media } from '@videojs/media/dom';\nimport { namedNodeMapToObject } from '@videojs/utils/dom';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\nimport { getTemplateHTML } from './template';\n\nconst HTMLElementBase = globalThis.HTMLElement ?? class {};\n\n// Don't extend CustomMediaMixin to save some bytes, background videos don't need the full Media API.\nexport class BackgroundVideo extends MediaAttachMixin(HTMLElementBase) {\n static shadowRootOptions = { mode: 'open' as ShadowRootMode };\n static getTemplateHTML = getTemplateHTML;\n static get observedAttributes() {\n return ['src'];\n }\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n this.attachShadow((this.constructor as typeof BackgroundVideo).shadowRootOptions);\n\n const attrs = {\n ...namedNodeMapToObject(this.attributes),\n ...(!this.hasAttribute('nomuted') && { muted: '' }),\n ...(!this.hasAttribute('noloop') && { loop: '' }),\n ...(!this.hasAttribute('noautoplay') && { autoplay: '' }),\n playsinline: '',\n disableremoteplayback: '',\n disablepictureinpicture: '',\n };\n\n this.shadowRoot!.innerHTML = getTemplateHTML(attrs);\n }\n\n // Neither Chrome or Firefox support setting the muted attribute\n // after using document.createElement.\n // Get around this by setting the muted property manually.\n this.target!.muted = !this.hasAttribute('nomuted');\n }\n\n // Register the inner <video> (not `this`) with the provider.\n getMediaTarget(): Media | null {\n return this.target;\n }\n\n attributeChangedCallback(attrName: string, oldValue: string | null, newValue: string | null): void {\n if (attrName === 'src' && oldValue !== newValue) {\n this.target!.src = newValue ?? '';\n }\n }\n\n get target(): HTMLVideoElement | null {\n const slotted = this.querySelector(':scope > [slot=media]');\n if (slotted instanceof HTMLVideoElement) return slotted;\n\n const video = this.querySelector('video') ?? this.shadowRoot?.querySelector('video');\n\n return video instanceof HTMLVideoElement ? video : null;\n }\n}\n"],"mappings":";;;;AAMA,MAAM,kBAAkB,WAAW,eAAe,MAAM,CAAC;AAGzD,IAAa,kBAAb,cAAqC,iBAAiB,eAAe,CAAC,CAAC;;EAC1C,KAAA,oBAAA,EAAE,MAAM,OAAyB;;;EACnC,KAAA,kBAAA;;CACzB,WAAW,qBAAqB;EAC9B,OAAO,CAAC,KAAK;CACf;CAEA,cAAc;EACZ,MAAM;EAEN,IAAI,CAAC,KAAK,YAAY;GACpB,KAAK,aAAc,KAAK,YAAuC,iBAAiB;GAEhF,MAAM,QAAQ;IACZ,GAAG,qBAAqB,KAAK,UAAU;IACvC,GAAI,CAAC,KAAK,aAAa,SAAS,KAAK,EAAE,OAAO,GAAG;IACjD,GAAI,CAAC,KAAK,aAAa,QAAQ,KAAK,EAAE,MAAM,GAAG;IAC/C,GAAI,CAAC,KAAK,aAAa,YAAY,KAAK,EAAE,UAAU,GAAG;IACvD,aAAa;IACb,uBAAuB;IACvB,yBAAyB;GAC3B;GAEA,KAAK,WAAY,YAAY,gBAAgB,KAAK;EACpD;EAKA,KAAK,OAAQ,QAAQ,CAAC,KAAK,aAAa,SAAS;CACnD;CAGA,iBAA+B;EAC7B,OAAO,KAAK;CACd;CAEA,yBAAyB,UAAkB,UAAyB,UAA+B;EACjG,IAAI,aAAa,SAAS,aAAa,UACrC,KAAK,OAAQ,MAAM,YAAY;CAEnC;CAEA,IAAI,SAAkC;EACpC,MAAM,UAAU,KAAK,cAAc,uBAAuB;EAC1D,IAAI,mBAAmB,kBAAkB,OAAO;EAEhD,MAAM,QAAQ,KAAK,cAAc,OAAO,KAAK,KAAK,YAAY,cAAc,OAAO;EAEnF,OAAO,iBAAiB,mBAAmB,QAAQ;CACrD;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"template.js","names":[],"sources":["../../../../src/media/background-video/template.ts"],"sourcesContent":["import { serializeAttributes } from '@videojs/utils/dom';\nimport { pick } from '@videojs/utils/object';\n\n/**\n * Attributes forwarded to the inner `<video>`. `src` is deliberately not one of them: each element decides what to do\n * with it, whether that is assigning the inner video or handing it to a playback engine, and serializing it into the\n * template would start a native load either way.\n */\nexport const VideoAttributes = [\n 'autoplay',\n 'controls',\n 'controlslist',\n 'crossorigin',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'loop',\n 'muted',\n 'playsinline',\n 'preload',\n] as const;\n\n/**\n * The shadow template both background-video elements render: a `<slot>` for a placeholder image, and a `<video>`\n * stretched over the host.\n *\n * Shared so the two can't drift in presentation. `object-fit` and `object-position` are the only styling hooks — a\n * background video has no controls to theme.\n */\nexport function getTemplateHTML(attrs: Record<string, string>) {\n return /*html*/ `\n <style>\n :host {\n position: relative;\n }\n\n video {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: var(--media-object-fit, inherit);\n object-position: var(--media-object-position, 50% 50%);\n }\n </style>\n <slot></slot>\n <video${serializeAttributes(pick(attrs, [...VideoAttributes]))}></video>\n `;\n}\n"],"mappings":";;;;;;;;AAQA,MAAA,kBAAA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACA;;;;;;;;AASA,SAAA,gBAAA,OAAA;CACA,OAAS,6OAAA,oBAAA,KAAA,OAAA,CAAA,GAAA,eAAA,CAAA,CAAA,EAAA;AAkBT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/cloudflare-video/adapter.ts"],"sourcesContent":["import { buildCloudflareIframeSrc, CloudflareAdapter } from '@videojs/cloudflare-video';\nimport { CustomMediaElement } from '@videojs/media/dom';\nimport { escapeHtml } from '@videojs/utils/string';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nclass CloudflareCustomMediaElement extends CustomMediaElement('iframe', CloudflareAdapter) {\n static override getTemplateHTML = (attrs: Record<string, string>): string => {\n const initialSrc = buildCloudflareIframeSrc(attrs.src ?? '', templateAttrsToEmbedProps(attrs));\n const srcAttr = initialSrc ? ` src=\"${escapeHtml(initialSrc)}\"` : '';\n\n return /*html*/ `\n <style>\n :host {\n display: inline-block;\n min-width: 300px;\n min-height: 150px;\n position: relative;\n }\n iframe {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n :host(:not([controls])) {\n pointer-events: none;\n }\n </style>\n <iframe\n part=\"iframe\"\n ${srcAttr}\n allow=\"accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen\n frameborder=\"0\"\n width=\"100%\"\n height=\"100%\"\n referrerpolicy=\"${escapeHtml(attrs.referrerpolicy ?? '')}\"\n ></iframe>\n `;\n };\n}\n\nfunction templateAttrsToEmbedProps(attrs: Record<string, string>) {\n return {\n autoplay: attrs.autoplay !== undefined,\n defaultMuted: attrs.muted !== undefined,\n loop: attrs.loop !== undefined,\n controls: attrs.controls !== undefined,\n preload: (attrs.preload as 'none' | 'metadata' | 'auto' | undefined) ?? 'metadata',\n // The Stream embed paints the poster itself, so it is part of the URL.\n poster: attrs.poster ?? '',\n };\n}\n\nexport class CloudflareVideo extends MediaAttachMixin(CloudflareCustomMediaElement) {}\n"],"mappings":";;;;;AAMA,IAAA,+BAAA,cAAA,mBAAA,UAAA,iBAAA,CAAA,CAAA;;EACA,KAAA,mBAAA,UAAA;GACA,MAAA,aAAA,yBAAA,MAAA,OAAA,IAAA,0BAAA,KAAA,CAAA;GAGA,OAAW,oQAFX,aAAA,SAAA,WAAA,UAAA,EAAA,KAAA,GAEW,0KAAA,WAAA,MAAA,kBAAA,EAAA,EAAA;EA8BX;;AACA;AAEA,SAAA,0BAAA,OAAA;CACA,OAAA;EACA,UAAA,MAAA,aAAA,KAAA;EACA,cAAA,MAAA,UAAA,KAAA;EACA,MAAA,MAAA,SAAA,KAAA;EACA,UAAA,MAAA,aAAA,KAAA;EACA,SAAA,MAAA,WAAA;EAEA,QAAA,MAAA,UAAA;CACA;AACA;AAEA,IAAA,kBAAA,cAAA,iBAAA,4BAAA,CAAA,CAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/dash-video/adapter.ts"],"sourcesContent":["import { DashAdapter } from '@videojs/dash-video';\nimport { CustomMediaElement } from '@videojs/media/dom';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nexport class DashVideo extends MediaAttachMixin(CustomMediaElement('video', DashAdapter)) {}\n"],"mappings":";;;;AAKA,IAAa,YAAb,cAA+B,iBAAiB,mBAAmB,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/hls-audio/adapter.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { HlsAudioAdapter } from '@videojs/spf/hls-audio';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nexport class HlsAudio extends MediaAttachMixin(CustomMediaElement('audio', HlsAudioAdapter)) {}\n"],"mappings":";;;;AAKA,IAAa,WAAb,cAA8B,iBAAiB,mBAAmB,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":["#media"],"sources":["../../../../src/media/hls-background-video/adapter.ts"],"sourcesContent":["import type { Media } from '@videojs/media/dom';\nimport { HlsBackgroundVideoAdapter, type HlsVideoMediaError } from '@videojs/spf/hls-background-video';\nimport { type CustomElement, namedNodeMapToObject } from '@videojs/utils/dom';\nimport type { Constructor } from '@videojs/utils/types';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\nimport { getTemplateHTML } from '../background-video/template';\n\nconst HTMLElementBase = globalThis.HTMLElement ?? class {};\n\n// `MediaAttachMixin` is typed as returning its base, so its `disconnectedCallback`\n// isn't visible for `super` to reach. `CustomElement` declares the lifecycle\n// callbacks this element overrides.\nconst HlsBackgroundVideoBase = MediaAttachMixin(HTMLElementBase) as unknown as Constructor<CustomElement>;\n\n/**\n * A muted, looping, chrome-less video over the SPF background-video engine.\n *\n * The SPF-backed counterpart to `<background-video>`, which plays its source natively. This one streams HLS through the\n * engine, which pins a single rendition for the session rather than adapting, and drops audio and text handling\n * entirely — the shape an ambient hero video actually wants.\n *\n * Nearer an image than a player, and `src` is the whole surface. Replaces the standalone `mux-background-video`\n * package, whose `audio`, `debug`, `preload`, and `max-resolution` attributes are all deliberately absent. Capping\n * which rendition is fetched is a delivery param on the URL — `?max_resolution=720p` on a Mux stream, for one — which\n * keeps the renditions it excludes out of the manifest rather than merely unpicked; `preload` would have nothing to\n * say, since the engine loads from the moment it has a source. And unlike `<background-video>` there are no `nomuted` /\n * `noloop` / `noautoplay` opt-outs: those three are what this element is for, so the adapter fixes them on at attach.\n *\n * Takes no structured `source` — `src` is an HLS URL, as the package it replaces required. Mux playback-ID identity,\n * poster, and storyboard belong to `<mux-video>`; none of them mean anything without controls to hang them on.\n *\n * Nothing about an unplayable source reaches the inner `<video>` on its own, so `error` on it stays null and the\n * element sits at `readyState 0`. The engine reports each condition and logs it, the Media promotes the fatal one, and\n * this element re-fires it as its own `error` / `'error'` — the one place a consumer holding the element can see a\n * source that never appears.\n *\n * @example\n * ```html\n * <hls-background-video src=\"https://stream.mux.com/PLAYBACK_ID.m3u8?max_resolution=720p\">\n * <img src=\"https://image.mux.com/PLAYBACK_ID/thumbnail.webp?time=0\" alt=\"\" />\n * </hls-background-video>\n * ```;\n *\n * @fires error - Fired when a fatal condition is reported. Read `error` for it.\n *\n * `<mux-background-video>` is this element under the name the package it replaces used. Same class, so the tag is a\n * naming choice and nothing more.\n */\n// Deliberately not `CustomMediaElement`, matching `<background-video>`: a\n// background video needs one property, not the full WHATWG media API.\nexport class HlsBackgroundVideo extends HlsBackgroundVideoBase {\n static shadowRootOptions = { mode: 'open' as ShadowRootMode };\n static getTemplateHTML = getTemplateHTML;\n\n static get observedAttributes(): string[] {\n return ['src'];\n }\n\n #media = new HlsBackgroundVideoAdapter();\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n this.attachShadow((this.constructor as typeof HlsBackgroundVideo).shadowRootOptions);\n\n const attrs = {\n ...namedNodeMapToObject(this.attributes),\n muted: '',\n loop: '',\n autoplay: '',\n playsinline: '',\n disableremoteplayback: '',\n disablepictureinpicture: '',\n };\n\n this.shadowRoot!.innerHTML = getTemplateHTML(attrs);\n }\n\n // Neither Chrome nor Firefox honor a `muted` attribute set after\n // `document.createElement`, and autoplay is refused without it. Attaching is\n // what sets the property — along with the rest of the fixed behavior — so\n // nothing here needs to repeat it.\n const video = this.video;\n\n if (video) this.#media.attach(video);\n\n // Re-fired rather than bridged on demand the way `CustomMediaElement` does\n // it: one listener for the one event this element has, on a Media it owns\n // for its whole life, is less than the machinery to defer it would cost.\n this.#media.addEventListener('error', () => this.dispatchEvent(new Event('error')));\n }\n\n /** Register the Media (not the inner `<video>`) with the provider. */\n getMediaTarget(): Media | null {\n return this.#media as unknown as Media;\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback?.();\n\n if (this.hasAttribute('keep-alive')) return;\n\n // Deferred so a synchronous reparent (remove then insert) doesn't tear down\n // the engine, matching `CustomMediaElement`.\n queueMicrotask(() => {\n if (!this.isConnected) this.#media.destroy();\n });\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void {\n if (oldValue === newValue) return;\n\n if (name === 'src') this.src = newValue ?? '';\n }\n\n /** The inner `<video>` the engine renders into. */\n get video(): HTMLVideoElement | null {\n const video = this.shadowRoot?.querySelector('video');\n\n return video instanceof HTMLVideoElement ? video : null;\n }\n\n /**\n * What made the current source unplayable, or `null`. An SVTA code rather than a `MediaError` one — 99001 where this\n * player has no pipeline for what the source needs, with the specifics logged. Reset by a new source, and not on the\n * inner `<video>`, which never learns of it.\n */\n get error(): HlsVideoMediaError | null {\n return this.#media.error;\n }\n\n /** HLS manifest URL. Assigning a new one restarts playback from scratch. */\n get src(): string {\n return this.#media.src;\n }\n\n set src(value: string) {\n this.#media.src = value;\n }\n}\n"],"mappings":";;;;;AAQA,MAAM,kBAAkB,WAAW,eAAe,MAAM,CAAC;AAKzD,MAAM,yBAAyB,iBAAiB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsC/D,IAAa,qBAAb,cAAwC,uBAAuB;;EAClC,KAAA,oBAAA,EAAE,MAAM,OAAyB;;;EACnC,KAAA,kBAAA;;CAEzB,WAAW,qBAA+B;EACxC,OAAO,CAAC,KAAK;CACf;CAEA,SAAS,IAAI,0BAA0B;CAEvC,cAAc;EACZ,MAAM;EAEN,IAAI,CAAC,KAAK,YAAY;GACpB,KAAK,aAAc,KAAK,YAA0C,iBAAiB;GAEnF,MAAM,QAAQ;IACZ,GAAG,qBAAqB,KAAK,UAAU;IACvC,OAAO;IACP,MAAM;IACN,UAAU;IACV,aAAa;IACb,uBAAuB;IACvB,yBAAyB;GAC3B;GAEA,KAAK,WAAY,YAAY,gBAAgB,KAAK;EACpD;EAMA,MAAM,QAAQ,KAAK;EAEnB,IAAI,OAAO,KAAKA,OAAO,OAAO,KAAK;EAKnC,KAAKA,OAAO,iBAAiB,eAAe,KAAK,cAAc,IAAI,MAAM,OAAO,CAAC,CAAC;CACpF;;CAGA,iBAA+B;EAC7B,OAAO,KAAKA;CACd;CAEA,uBAAsC;EACpC,MAAM,uBAAuB;EAE7B,IAAI,KAAK,aAAa,YAAY,GAAG;EAIrC,qBAAqB;GACnB,IAAI,CAAC,KAAK,aAAa,KAAKA,OAAO,QAAQ;EAC7C,CAAC;CACH;CAEA,yBAAyB,MAAc,UAAyB,UAA+B;EAC7F,IAAI,aAAa,UAAU;EAE3B,IAAI,SAAS,OAAO,KAAK,MAAM,YAAY;CAC7C;;CAGA,IAAI,QAAiC;EACnC,MAAM,QAAQ,KAAK,YAAY,cAAc,OAAO;EAEpD,OAAO,iBAAiB,mBAAmB,QAAQ;CACrD;;;;;;CAOA,IAAI,QAAmC;EACrC,OAAO,KAAKA,OAAO;CACrB;;CAGA,IAAI,MAAc;EAChB,OAAO,KAAKA,OAAO;CACrB;CAEA,IAAI,IAAI,OAAe;EACrB,KAAKA,OAAO,MAAM;CACpB;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/hls-video/adapter.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { HlsVideoAdapter } from '@videojs/spf/hls-video';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nexport class HlsVideo extends MediaAttachMixin(CustomMediaElement('video', HlsVideoAdapter)) {}\n"],"mappings":";;;;AAKA,IAAa,WAAb,cAA8B,iBAAiB,mBAAmB,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/hlsjs-video/adapter.ts"],"sourcesContent":["import { HlsJsAdapter } from '@videojs/hlsjs-video';\nimport { CustomMediaElement } from '@videojs/media/dom';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nexport class HlsJsVideo extends MediaAttachMixin(CustomMediaElement('video', HlsJsAdapter)) {}\n"],"mappings":";;;;AAKA,IAAa,aAAb,cAAgC,iBAAiB,mBAAmB,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hls-js.js","names":[],"sources":["../../../../src/media/mux-audio/hls-js.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { MuxAudioAdapter } from '@videojs/mux-audio';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\nimport { MuxAudioMixin } from './mixin';\n\nconst MuxAudioBase = MuxAudioMixin(MediaAttachMixin(CustomMediaElement('audio', MuxAudioAdapter)));\n\nexport class MuxAudio extends MuxAudioBase {}\n"],"mappings":";;;;;AAMA,MAAM,eAAe,cAAc,iBAAiB,mBAAmB,SAAS,eAAe,CAAC,CAAC;AAEjG,IAAa,WAAb,cAA8B,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mixin.js","names":["#reflectSrc"],"sources":["../../../../src/media/mux-audio/mixin.ts"],"sourcesContent":["import type { AnyConstructor, Constructor } from '@videojs/utils/types';\n\n/**\n * What this mixin needs from whichever Mux Media the element hosts.\n *\n * Structural on purpose: the hls.js-backed `MuxVideoAdapter` and the SPF-backed `MuxAudioAdapter` satisfy it\n * identically, and `src` is the WHATWG surface rather than anything engine-specific, so the element itself has no\n * engine.\n */\ninterface MuxAudioAdapterLike {\n readonly src: string;\n addEventListener(type: string, listener: () => void): void;\n}\n\ninterface MuxAudioElementLike extends HTMLElement {\n readonly adapter: MuxAudioAdapterLike;\n}\n\n/**\n * The Mux-specific element behavior for audio, over any Mux Media: reflecting the derived `src` back to the attribute.\n *\n * Much thinner than {@link MuxVideoMixin} because the rest of what that one does has no meaning here — Mux publishes no\n * poster or storyboard for an audio-only asset, and an `<audio>` element renders neither.\n *\n * A mixin rather than a base class for the same reason as the video one: each flavor's element is built on a different\n * `CustomMediaElement`, so there is no common class to extend, only a common adapter contract.\n */\nexport function MuxAudioMixin<Class extends AnyConstructor<HTMLElement>>(BaseClass: Class): Class {\n class MuxAudioElement extends (BaseClass as unknown as Constructor<MuxAudioElementLike>) {\n constructor(...args: any[]) {\n super(...args);\n // Covers both the `src` attribute and the `source` property (JS-only).\n this.adapter.addEventListener('sourcechange', () => this.#reflectSrc());\n }\n\n // Mirrors the adapter `src` to the `src` attribute so it matches the active playback URL.\n #reflectSrc() {\n const src = this.adapter.src;\n\n if (src) {\n if (this.getAttribute('src') !== src) this.setAttribute('src', src);\n } else if (this.hasAttribute('src')) {\n this.removeAttribute('src');\n }\n }\n }\n\n return MuxAudioElement as unknown as Class;\n}\n"],"mappings":";;;;;;;;;;AA2BA,SAAgB,cAAyD,WAAyB;CAChG,MAAM,wBAAyB,UAA0D;EACvF,YAAY,GAAG,MAAa;GAC1B,MAAM,GAAG,IAAI;GAEb,KAAK,QAAQ,iBAAiB,sBAAsB,KAAKA,YAAY,CAAC;EACxE;EAGA,cAAc;GACZ,MAAM,MAAM,KAAK,QAAQ;GAEzB,IAAI,KACE;QAAA,KAAK,aAAa,KAAK,MAAM,KAAK,KAAK,aAAa,OAAO,GAAG;GAAA,OAC7D,IAAI,KAAK,aAAa,KAAK,GAChC,KAAK,gBAAgB,KAAK;EAE9B;CACF;CAEA,OAAO;AACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"spf.js","names":[],"sources":["../../../../src/media/mux-audio/spf.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { MuxAudioAdapter } from '@videojs/mux-audio/spf';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\nimport { MuxAudioMixin } from './mixin';\n\nconst MuxAudioBase = MuxAudioMixin(MediaAttachMixin(CustomMediaElement('audio', MuxAudioAdapter)));\n\n/**\n * `<mux-audio>` over the SPF audio-only Mux Media instead of the hls.js-backed one.\n *\n * Shares its name with the flavor in `./hls-js` on purpose: the import path picks the engine, and nothing else about\n * the surface moves. Deliberately not exported from this directory's barrel, so importing one flavor never pulls the\n * other's engine in with it.\n *\n * The engine underneath is the subtractive audio-only one, so only the audio renditions of the playback ID are fetched\n * — unlike the hls.js-backed flavor, which runs the full engine and downloads video renditions it never plays.\n */\nexport class MuxAudio extends MuxAudioBase {}\n"],"mappings":";;;;;AAMA,MAAM,eAAe,cAAc,iBAAiB,mBAAmB,SAAS,eAAe,CAAC,CAAC;;;;;;;;;;;AAYjG,IAAa,WAAb,cAA8B,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hls-js.js","names":[],"sources":["../../../../src/media/mux-video/hls-js.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { MuxVideoAdapter } from '@videojs/mux-video';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\nimport { MuxVideoMixin } from './mixin';\n\nconst MuxVideoBase = MuxVideoMixin(MediaAttachMixin(CustomMediaElement('video', MuxVideoAdapter)));\n\nexport class MuxVideo extends MuxVideoBase {}\n"],"mappings":";;;;;AAMA,MAAM,eAAe,cAAc,iBAAiB,mBAAmB,SAAS,eAAe,CAAC,CAAC;AAEjG,IAAa,WAAb,cAA8B,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mixin.js","names":["#syncStoryboard","#reflectSrc","#syncPosterTime","#applyPosterTime","#posterTimeAttr"],"sources":["../../../../src/media/mux-video/mixin.ts"],"sourcesContent":["import { type MediaStreamType, MediaStreamTypes } from '@videojs/media';\nimport type { MuxContentData, MuxSourceBase } from '@videojs/mux-video';\nimport { isUndefined } from '@videojs/utils/predicate';\nimport type { AnyConstructor, Constructor } from '@videojs/utils/types';\n\n/**\n * What this mixin needs from whichever Mux Media the element hosts.\n *\n * Structural on purpose: the hls.js-backed `MuxVideoAdapter` and the SPF-backed one satisfy it identically, and\n * everything here is Mux identity or the WHATWG surface — nothing engine-specific — so the element itself has no\n * engine.\n */\ninterface MuxVideoAdapterLike {\n src: string;\n source: MuxSourceBase | null;\n readonly contentData: MuxContentData;\n readonly streamType: MediaStreamType | undefined;\n addEventListener(type: string, listener: () => void): void;\n}\n\ninterface MuxVideoElementLike extends HTMLElement {\n readonly adapter: MuxVideoAdapterLike;\n attributeChangedCallback?(name: string, oldValue: string | null, newValue: string | null): void;\n}\n\n/**\n * The Mux-specific element behavior, over any Mux Media: the `poster-time` attribute, `src` reflection, and the\n * storyboard `<track>` child.\n *\n * Mixin rather than a base class because each flavor's element is built on a different `CustomMediaElement`, so there\n * is no common class to extend — only a common adapter contract.\n */\nexport function MuxVideoMixin<Class extends AnyConstructor<HTMLElement>>(BaseClass: Class): Class {\n class MuxVideoElement extends (BaseClass as unknown as Constructor<MuxVideoElementLike>) {\n // Declared here rather than in `static properties` because it does not map to a\n // adapter property of its own: it feeds `source.poster.time`. The generic path\n // would also coerce a removed attribute to `0`, which is a valid poster time.\n static get observedAttributes(): string[] {\n const inherited = (BaseClass as unknown as { observedAttributes?: string[] }).observedAttributes ?? [];\n\n return [...inherited, 'poster-time'];\n }\n\n constructor(...args: any[]) {\n super(...args);\n // Storyboards aren't generated for live streams; re-evaluate when the type is detected.\n this.adapter.addEventListener('streamtypechange', () => this.#syncStoryboard());\n // Covers both the `src` attribute and the `source` property (JS-only).\n this.adapter.addEventListener('sourcechange', () => {\n this.#reflectSrc();\n this.#syncPosterTime();\n this.#syncStoryboard();\n });\n }\n\n override attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n if (name === 'poster-time') {\n // Removing the attribute clears what it set. A value that is present but not\n // a number is ignored rather than treated as removal, so it cannot wipe a\n // `source.poster.time` set through JS.\n if (newValue === null) this.#applyPosterTime(undefined);\n else this.#syncPosterTime();\n\n return;\n }\n\n super.attributeChangedCallback?.(name, oldValue, newValue);\n }\n\n #posterTimeAttr() {\n const attr = this.getAttribute('poster-time');\n const parsed = attr ? Number(attr) : Number.NaN;\n\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n\n // Re-applies `poster-time` after a source change, because Mux identity comes\n // from the URL and carries no poster params over. An absent attribute means no\n // opinion here, so a `source.poster.time` set through JS is left alone — only\n // removing the attribute clears it.\n #syncPosterTime() {\n const time = this.#posterTimeAttr();\n\n if (!isUndefined(time)) this.#applyPosterTime(time);\n }\n\n // Mirrors the `poster-time` attribute into `source.poster.time`, which is what\n // the derived poster URL is built from.\n #applyPosterTime(time: number | undefined) {\n const source = this.adapter.source;\n if (source?.poster?.time === time) return;\n\n // Nothing to write into yet. `#syncPosterTime` re-applies the attribute once a\n // source arrives, so a poster-only source is never worth fabricating — it has\n // no URL to play, and assigning it would schedule a load anyway.\n if (!source) return;\n\n const poster = { ...source?.poster };\n\n if (isUndefined(time)) delete poster.time;\n else poster.time = time;\n\n this.adapter.source = { ...source, poster: Object.keys(poster).length > 0 ? poster : undefined };\n }\n\n // Mirrors the adapter `src` to the `src` attribute so it matches the active playback URL.\n #reflectSrc() {\n const src = this.adapter.src;\n\n if (src) {\n if (this.getAttribute('src') !== src) this.setAttribute('src', src);\n } else if (this.hasAttribute('src')) {\n this.removeAttribute('src');\n }\n }\n\n // Keeps a storyboard track child in sync with the URL derived from `source`.\n #syncStoryboard() {\n // Live streams have no storyboard; skip until the type is known to be otherwise.\n const src = this.adapter.streamType === MediaStreamTypes.LIVE ? undefined : this.adapter.contentData.storyboard;\n\n let track = this.querySelector<HTMLTrackElement>('track[data-storyboard]');\n\n if (!src) {\n track?.remove();\n return;\n }\n\n if (!track) {\n track = document.createElement('track');\n track.kind = 'metadata';\n track.label = 'thumbnails';\n track.default = true;\n track.setAttribute('data-storyboard', '');\n }\n\n if (track.getAttribute('src') !== src) track.setAttribute('src', src);\n\n if (track.parentNode !== this) this.append(track);\n }\n }\n\n return MuxVideoElement as unknown as Class;\n}\n"],"mappings":";;;;;;;;;;AAgCA,SAAgB,cAAyD,WAAyB;CAChG,MAAM,wBAAyB,UAA0D;EAIvF,WAAW,qBAA+B;GAGxC,OAAO,CAAC,GAFW,UAA2D,sBAAsB,CAAC,GAE/E,aAAa;EACrC;EAEA,YAAY,GAAG,MAAa;GAC1B,MAAM,GAAG,IAAI;GAEb,KAAK,QAAQ,iBAAiB,0BAA0B,KAAKA,gBAAgB,CAAC;GAE9E,KAAK,QAAQ,iBAAiB,sBAAsB;IAClD,KAAKC,YAAY;IACjB,KAAKC,gBAAgB;IACrB,KAAKF,gBAAgB;GACvB,CAAC;EACH;EAEA,yBAAkC,MAAc,UAAyB,UAAyB;GAChG,IAAI,SAAS,eAAe;IAI1B,IAAI,aAAa,MAAM,KAAKG,iBAAiB,KAAA,CAAS;SACjD,KAAKD,gBAAgB;IAE1B;GACF;GAEA,MAAM,2BAA2B,MAAM,UAAU,QAAQ;EAC3D;EAEA,kBAAkB;GAChB,MAAM,OAAO,KAAK,aAAa,aAAa;GAC5C,MAAM,SAAS,OAAO,OAAO,IAAI,IAAI;GAErC,OAAO,OAAO,MAAM,MAAM,IAAI,KAAA,IAAY;EAC5C;EAMA,kBAAkB;GAChB,MAAM,OAAO,KAAKE,gBAAgB;GAElC,IAAI,CAAC,YAAY,IAAI,GAAG,KAAKD,iBAAiB,IAAI;EACpD;EAIA,iBAAiB,MAA0B;GACzC,MAAM,SAAS,KAAK,QAAQ;GAC5B,IAAI,QAAQ,QAAQ,SAAS,MAAM;GAKnC,IAAI,CAAC,QAAQ;GAEb,MAAM,SAAS,EAAE,GAAG,QAAQ,OAAO;GAEnC,IAAI,YAAY,IAAI,GAAG,OAAO,OAAO;QAChC,OAAO,OAAO;GAEnB,KAAK,QAAQ,SAAS;IAAE,GAAG;IAAQ,QAAQ,OAAO,KAAK,MAAM,CAAC,CAAC,SAAS,IAAI,SAAS,KAAA;GAAU;EACjG;EAGA,cAAc;GACZ,MAAM,MAAM,KAAK,QAAQ;GAEzB,IAAI,KACE;QAAA,KAAK,aAAa,KAAK,MAAM,KAAK,KAAK,aAAa,OAAO,GAAG;GAAA,OAC7D,IAAI,KAAK,aAAa,KAAK,GAChC,KAAK,gBAAgB,KAAK;EAE9B;EAGA,kBAAkB;GAEhB,MAAM,MAAM,KAAK,QAAQ,eAAe,iBAAiB,OAAO,KAAA,IAAY,KAAK,QAAQ,YAAY;GAErG,IAAI,QAAQ,KAAK,cAAgC,wBAAwB;GAEzE,IAAI,CAAC,KAAK;IACR,OAAO,OAAO;IACd;GACF;GAEA,IAAI,CAAC,OAAO;IACV,QAAQ,SAAS,cAAc,OAAO;IACtC,MAAM,OAAO;IACb,MAAM,QAAQ;IACd,MAAM,UAAU;IAChB,MAAM,aAAa,mBAAmB,EAAE;GAC1C;GAEA,IAAI,MAAM,aAAa,KAAK,MAAM,KAAK,MAAM,aAAa,OAAO,GAAG;GAEpE,IAAI,MAAM,eAAe,MAAM,KAAK,OAAO,KAAK;EAClD;CACF;CAEA,OAAO;AACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"spf.js","names":[],"sources":["../../../../src/media/mux-video/spf.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { MuxVideoAdapter } from '@videojs/mux-video/spf';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\nimport { MuxVideoMixin } from './mixin';\n\nconst MuxVideoBase = MuxVideoMixin(MediaAttachMixin(CustomMediaElement('video', MuxVideoAdapter)));\n\n/**\n * `<mux-video>` over the SPF-backed Mux Media instead of the hls.js-backed one.\n *\n * Shares its name with the flavor in `./hls-js` on purpose: the import path picks the engine, and nothing else about\n * the surface moves. Deliberately not exported from this directory's barrel, so importing one flavor never pulls the\n * other's engine in with it.\n */\nexport class MuxVideo extends MuxVideoBase {}\n"],"mappings":";;;;;AAMA,MAAM,eAAe,cAAc,iBAAiB,mBAAmB,SAAS,eAAe,CAAC,CAAC;;;;;;;;AASjG,IAAa,WAAb,cAA8B,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/native-hls-video/adapter.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { NativeHlsAdapter } from '@videojs/native-hls-video';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nexport class NativeHlsVideo extends MediaAttachMixin(CustomMediaElement('video', NativeHlsAdapter)) {}\n"],"mappings":";;;;AAKA,IAAa,iBAAb,cAAoC,iBAAiB,mBAAmB,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/shaka-video/adapter.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { ShakaAdapter } from '@videojs/shaka-video';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nexport class ShakaVideo extends MediaAttachMixin(CustomMediaElement('video', ShakaAdapter)) {}\n"],"mappings":";;;;AAKA,IAAa,aAAb,cAAgC,iBAAiB,mBAAmB,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/spotify-audio/adapter.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { buildSpotifyIframeSrc, SpotifyAdapter } from '@videojs/spotify-audio';\nimport { escapeHtml } from '@videojs/utils/string';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nclass SpotifyCustomMediaElement extends CustomMediaElement('iframe', SpotifyAdapter) {\n static override getTemplateHTML = (attrs: Record<string, string>): string => {\n const initialSrc = buildSpotifyIframeSrc(attrs.src ?? '', templateAttrsToEmbedProps(attrs));\n const srcAttr = initialSrc ? ` src=\"${escapeHtml(initialSrc)}\"` : '';\n\n return /*html*/ `\n <style>\n :host {\n display: block;\n min-width: 160px;\n min-height: 80px;\n position: relative;\n }\n iframe {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n /*\n * Without Spotify's own chrome the embed is a transport and nothing else:\n * its player UI would otherwise show through whatever skin is drawn over\n * it. Hidden rather than merely inert, and important so a consumer's own\n * display rule cannot put it back on screen. An iframe in a hidden subtree\n * still loads and plays its src.\n */\n :host(:not([controls])) {\n display: none !important;\n }\n </style>\n <iframe\n part=\"iframe\"\n ${srcAttr}\n allow=\"autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture\"\n frameborder=\"0\"\n width=\"100%\"\n height=\"100%\"\n referrerpolicy=\"${escapeHtml(attrs.referrerpolicy ?? '')}\"\n ></iframe>\n `;\n };\n}\n\nfunction templateAttrsToEmbedProps(attrs: Record<string, string>) {\n return {\n autoplay: attrs.autoplay !== undefined,\n loop: attrs.loop !== undefined,\n controls: attrs.controls !== undefined,\n playsInline: attrs.playsinline !== undefined,\n preload: (attrs.preload as 'none' | 'metadata' | 'auto' | undefined) ?? 'metadata',\n };\n}\n\nexport class SpotifyAudio extends MediaAttachMixin(SpotifyCustomMediaElement) {}\n"],"mappings":";;;;;AAMA,IAAA,4BAAA,cAAA,mBAAA,UAAA,cAAA,CAAA,CAAA;;EACA,KAAA,mBAAA,UAAA;GACA,MAAA,aAAA,sBAAA,MAAA,OAAA,IAAA,0BAAA,KAAA,CAAA;GAGA,OAAW,8kBAFX,aAAA,SAAA,WAAA,UAAA,EAAA,KAAA,GAEW,iJAAA,WAAA,MAAA,kBAAA,EAAA,EAAA;EAoCX;;AACA;AAEA,SAAA,0BAAA,OAAA;CACA,OAAA;EACA,UAAA,MAAA,aAAA,KAAA;EACA,MAAA,MAAA,SAAA,KAAA;EACA,UAAA,MAAA,aAAA,KAAA;EACA,aAAA,MAAA,gBAAA,KAAA;EACA,SAAA,MAAA,WAAA;CACA;AACA;AAEA,IAAA,eAAA,cAAA,iBAAA,yBAAA,CAAA,CAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/tiktok-video/adapter.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { buildTikTokIframeSrc, TikTokAdapter, type TikTokAdapterProps } from '@videojs/tiktok-video';\nimport { escapeHtml } from '@videojs/utils/string';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nclass TikTokCustomMediaElement extends CustomMediaElement('iframe', TikTokAdapter) {\n static override getTemplateHTML = (attrs: Record<string, string>): string => {\n const initialSrc = buildTikTokIframeSrc(attrs.src ?? '', templateAttrsToEmbedProps(attrs));\n const srcAttr = initialSrc ? ` src=\"${escapeHtml(initialSrc)}\"` : '';\n\n return /*html*/ `\n <style>\n :host {\n display: inline-block;\n /* TikTok videos are portrait, and the player refuses to draw its chrome\n below 325x578, so that is where this host starts rather than the\n 300x150 the landscape embeds use. */\n min-width: 325px;\n min-height: 578px;\n position: relative;\n }\n iframe {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n /* A cross-origin frame swallows every pointer event, so the skin above it\n never sees the hover that reveals the controls. Kept out of hit-testing\n except where the host leaves TikTok's player dormant, which is the same\n pair of cases shouldBootstrapTikTokEmbed opts out of: then the frame's\n own controls are the only thing that can still start it. */\n :host(:not([controls]):not([preload=\"none\"])) {\n pointer-events: none;\n }\n </style>\n <iframe\n part=\"iframe\"\n title=\"TikTok video player\"\n ${srcAttr}\n allow=\"accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen\n frameborder=\"0\"\n width=\"100%\"\n height=\"100%\"\n referrerpolicy=\"${escapeHtml(attrs.referrerpolicy ?? '')}\"\n ></iframe>\n `;\n };\n}\n\n// Only the props the embed URL is built from. `preload` is not a TikTok parameter, but it decides whether the URL\n// carries a bootstrap autoplay, and a URL differing from the host's would have it rebuild the frame on mount.\nfunction templateAttrsToEmbedProps(attrs: Record<string, string>): Partial<TikTokAdapterProps> {\n return {\n autoplay: attrs.autoplay !== undefined,\n defaultMuted: attrs.muted !== undefined,\n loop: attrs.loop !== undefined,\n controls: attrs.controls !== undefined,\n preload: attrs.preload as TikTokAdapterProps['preload'],\n };\n}\n\nexport class TikTokVideo extends MediaAttachMixin(TikTokCustomMediaElement) {}\n"],"mappings":";;;;;AAMA,IAAA,2BAAA,cAAA,mBAAA,UAAA,aAAA,CAAA,CAAA;;EACA,KAAA,mBAAA,UAAA;GACA,MAAA,aAAA,qBAAA,MAAA,OAAA,IAAA,0BAAA,KAAA,CAAA;GAGA,OAAW,m0BAFX,aAAA,SAAA,WAAA,UAAA,EAAA,KAAA,GAEW,0KAAA,WAAA,MAAA,kBAAA,EAAA,EAAA;EAuCX;;AACA;AAIA,SAAA,0BAAA,OAAA;CACA,OAAA;EACA,UAAA,MAAA,aAAA,KAAA;EACA,cAAA,MAAA,UAAA,KAAA;EACA,MAAA,MAAA,SAAA,KAAA;EACA,UAAA,MAAA,aAAA,KAAA;EACA,SAAA,MAAA;CACA;AACA;AAEA,IAAA,cAAA,cAAA,iBAAA,wBAAA,CAAA,CAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/twitch-video/adapter.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { buildTwitchIframeSrc, TwitchAdapter } from '@videojs/twitch-video';\nimport { escapeHtml } from '@videojs/utils/string';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nclass TwitchCustomMediaElement extends CustomMediaElement('iframe', TwitchAdapter) {\n static override getTemplateHTML = (attrs: Record<string, string>): string => {\n const initialSrc = buildTwitchIframeSrc(attrs.src ?? '', templateAttrsToEmbedProps(attrs));\n const srcAttr = initialSrc ? ` src=\"${escapeHtml(initialSrc)}\"` : '';\n\n return /*html*/ `\n <style>\n :host {\n display: inline-block;\n min-width: 300px;\n min-height: 150px;\n position: relative;\n }\n iframe {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n :host(:not([controls])) {\n pointer-events: none;\n }\n </style>\n <iframe\n part=\"iframe\"\n ${srcAttr}\n allow=\"accelerometer; fullscreen; autoplay; encrypted-media; picture-in-picture;\"\n sandbox=\"allow-modals allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox\"\n scrolling=\"no\"\n frameborder=\"0\"\n width=\"100%\"\n height=\"100%\"\n referrerpolicy=\"${escapeHtml(attrs.referrerpolicy ?? '')}\"\n ></iframe>\n `;\n };\n}\n\nfunction templateAttrsToEmbedProps(attrs: Record<string, string>) {\n return {\n autoplay: attrs.autoplay !== undefined,\n defaultMuted: attrs.muted !== undefined,\n loop: attrs.loop !== undefined,\n controls: attrs.controls !== undefined,\n playsInline: attrs.playsinline !== undefined,\n preload: (attrs.preload as 'none' | 'metadata' | 'auto' | undefined) ?? 'metadata',\n };\n}\n\nexport class TwitchVideo extends MediaAttachMixin(TwitchCustomMediaElement) {}\n"],"mappings":";;;;;AAMA,IAAA,2BAAA,cAAA,mBAAA,UAAA,aAAA,CAAA,CAAA;;EACA,KAAA,mBAAA,UAAA;GACA,MAAA,aAAA,qBAAA,MAAA,OAAA,IAAA,0BAAA,KAAA,CAAA;GAGA,OAAW,oQAFX,aAAA,SAAA,WAAA,UAAA,EAAA,KAAA,GAEW,kQAAA,WAAA,MAAA,kBAAA,EAAA,EAAA;EA+BX;;AACA;AAEA,SAAA,0BAAA,OAAA;CACA,OAAA;EACA,UAAA,MAAA,aAAA,KAAA;EACA,cAAA,MAAA,UAAA,KAAA;EACA,MAAA,MAAA,SAAA,KAAA;EACA,UAAA,MAAA,aAAA,KAAA;EACA,aAAA,MAAA,gBAAA,KAAA;EACA,SAAA,MAAA,WAAA;CACA;AACA;AAEA,IAAA,cAAA,cAAA,iBAAA,wBAAA,CAAA,CAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/vimeo-video/adapter.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { escapeHtml } from '@videojs/utils/string';\nimport { buildVimeoIframeSrc, VimeoAdapter } from '@videojs/vimeo-video';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nclass VimeoCustomMediaElement extends CustomMediaElement('iframe', VimeoAdapter) {\n static override getTemplateHTML = (attrs: Record<string, string>): string => {\n const initialSrc = buildVimeoIframeSrc(attrs.src ?? '', templateAttrsToEmbedProps(attrs));\n const srcAttr = initialSrc ? ` src=\"${escapeHtml(initialSrc)}\"` : '';\n\n return /*html*/ `\n <style>\n :host {\n display: inline-block;\n min-width: 300px;\n min-height: 150px;\n position: relative;\n }\n iframe {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n :host(:not([controls])) {\n pointer-events: none;\n }\n </style>\n <iframe\n part=\"iframe\"\n ${srcAttr}\n allow=\"accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen\n frameborder=\"0\"\n width=\"100%\"\n height=\"100%\"\n referrerpolicy=\"${escapeHtml(attrs.referrerpolicy ?? '')}\"\n ></iframe>\n `;\n };\n}\n\nfunction templateAttrsToEmbedProps(attrs: Record<string, string>) {\n return {\n autoplay: attrs.autoplay !== undefined,\n defaultMuted: attrs.muted !== undefined,\n loop: attrs.loop !== undefined,\n controls: attrs.controls !== undefined,\n playsInline: attrs.playsinline !== undefined,\n preload: (attrs.preload as 'none' | 'metadata' | 'auto' | undefined) ?? 'metadata',\n };\n}\n\nexport class VimeoVideo extends MediaAttachMixin(VimeoCustomMediaElement) {}\n"],"mappings":";;;;;AAMA,IAAA,0BAAA,cAAA,mBAAA,UAAA,YAAA,CAAA,CAAA;;EACA,KAAA,mBAAA,UAAA;GACA,MAAA,aAAA,oBAAA,MAAA,OAAA,IAAA,0BAAA,KAAA,CAAA;GAGA,OAAW,oQAFX,aAAA,SAAA,WAAA,UAAA,EAAA,KAAA,GAEW,0KAAA,WAAA,MAAA,kBAAA,EAAA,EAAA;EA8BX;;AACA;AAEA,SAAA,0BAAA,OAAA;CACA,OAAA;EACA,UAAA,MAAA,aAAA,KAAA;EACA,cAAA,MAAA,UAAA,KAAA;EACA,MAAA,MAAA,SAAA,KAAA;EACA,UAAA,MAAA,aAAA,KAAA;EACA,aAAA,MAAA,gBAAA,KAAA;EACA,SAAA,MAAA,WAAA;CACA;AACA;AAEA,IAAA,aAAA,cAAA,iBAAA,uBAAA,CAAA,CAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/wistia-video/adapter.ts"],"sourcesContent":["import { WistiaAdapter } from '@videojs/wistia-video';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\n/**\n * `<wistia-video>` is Wistia's own `<wistia-player>`, normalized into a media by `WistiaAdapter` and attached to the\n * player store here. No template and no inner player: the element written is the element that plays.\n */\nexport class WistiaVideo extends MediaAttachMixin(WistiaAdapter) {}\n"],"mappings":";;;;;;;AAQA,IAAa,cAAb,cAAiC,iBAAiB,aAAa,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/youtube-video/adapter.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { escapeHtml } from '@videojs/utils/string';\nimport { buildYouTubeIframeSrc, YouTubeAdapter } from '@videojs/youtube-video';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nclass YouTubeCustomMediaElement extends CustomMediaElement('iframe', YouTubeAdapter) {\n static override getTemplateHTML = (attrs: Record<string, string>): string => {\n const initialSrc = buildYouTubeIframeSrc(attrs.src ?? '', templateAttrsToEmbedProps(attrs));\n const srcAttr = initialSrc ? ` src=\"${escapeHtml(initialSrc)}\"` : '';\n\n return /*html*/ `\n <style>\n :host {\n display: inline-block;\n min-width: 300px;\n min-height: 150px;\n position: relative;\n }\n iframe {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n :host(:not([controls])) {\n pointer-events: none;\n }\n </style>\n <iframe\n part=\"iframe\"\n ${srcAttr}\n allow=\"accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen\n frameborder=\"0\"\n width=\"100%\"\n height=\"100%\"\n referrerpolicy=\"${escapeHtml(attrs.referrerpolicy ?? '')}\"\n ></iframe>\n `;\n };\n}\n\nfunction templateAttrsToEmbedProps(attrs: Record<string, string>) {\n return {\n autoplay: attrs.autoplay !== undefined,\n defaultMuted: attrs.muted !== undefined,\n loop: attrs.loop !== undefined,\n controls: attrs.controls !== undefined,\n playsInline: attrs.playsinline !== undefined,\n preload: (attrs.preload as 'none' | 'metadata' | 'auto' | undefined) ?? 'metadata',\n };\n}\n\nexport class YouTubeVideo extends MediaAttachMixin(YouTubeCustomMediaElement) {}\n"],"mappings":";;;;;AAMA,IAAA,4BAAA,cAAA,mBAAA,UAAA,cAAA,CAAA,CAAA;;EACA,KAAA,mBAAA,UAAA;GACA,MAAA,aAAA,sBAAA,MAAA,OAAA,IAAA,0BAAA,KAAA,CAAA;GAGA,OAAW,oQAFX,aAAA,SAAA,WAAA,UAAA,EAAA,KAAA,GAEW,0KAAA,WAAA,MAAA,kBAAA,EAAA,EAAA;EA8BX;;AACA;AAEA,SAAA,0BAAA,OAAA;CACA,OAAA;EACA,UAAA,MAAA,aAAA,KAAA;EACA,cAAA,MAAA,UAAA,KAAA;EACA,MAAA,MAAA,SAAA,KAAA;EACA,UAAA,MAAA,aAAA,KAAA;EACA,aAAA,MAAA,gBAAA,KAAA;EACA,SAAA,MAAA,WAAA;CACA;AACA;AAEA,IAAA,eAAA,cAAA,iBAAA,yBAAA,CAAA,CAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/player/context.ts"],"sourcesContent":["import type { AnyPlayerStore, MediaContainer, PlayerStore } from '@videojs/core/dom';\nimport type { ReactiveControllerHost } from '@videojs/element';\nimport { type Context, type ContextConsumer, createContext } from '@videojs/element/context';\nimport type { Media } from '@videojs/media/dom';\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 registerMedia: (media: Media) => () => 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 registerContainer: (container: MediaContainer) => () => 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"],"mappings":";;AASA,MAAa,qBAAqB,OAAO,IAAI,iBAAiB;;;;;;AAc9D,MAAa,gBAAgB,cAA6D,kBAAkB;AAM5G,MAAa,oBAAoB,OAAO,IAAI,gBAAgB;AAS5D,MAAa,eAAe,cAA2D,iBAAiB;AAMxG,MAAa,wBAAwB,OAAO,IAAI,oBAAoB;AAWpE,MAAa,mBAAmB,cAC9B,qBACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"controller.js","names":["#host","#selector","#consumer","#connect","#store"],"sources":["../../../src/player/controller.ts"],"sourcesContent":["import type { PlayerStore } from '@videojs/core/dom';\nimport type { ReactiveController, ReactiveControllerHost } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\nimport type { InferStoreState, Selector } from '@videojs/store';\nimport { StoreController } from '@videojs/store/html';\n\nimport type { PlayerContext } from './context';\n\nexport type PlayerControllerHost = ReactiveControllerHost & HTMLElement;\n\n/**\n * Reactive controller for accessing player store state.\n *\n * Without selector: Returns the store, does NOT subscribe to changes. With selector: Returns selected state, subscribes\n * with shallowEqual comparison.\n *\n * @example\n * ```ts\n * // Store access (no subscription)\n * class Controls extends UIElement {\n * #player = new PlayerController(this, playerContext);\n *\n * handleClick() {\n * this.#player.value.setVolume(0.5);\n * }\n * }\n *\n * // Selector-based subscription\n * class PlayButton extends UIElement {\n * #playback = new PlayerController(this, playerContext, selectPlayback);\n * }\n * ```;\n */\nexport class PlayerController<Store extends PlayerStore, Result = Store> implements ReactiveController {\n readonly #host: PlayerControllerHost;\n readonly #selector: Selector<InferStoreState<Store>, Result> | undefined;\n\n #consumer: ContextConsumer<PlayerContext<Store>, PlayerControllerHost>;\n #store: StoreController<Store, Result> | null = null;\n\n /**\n * @param host - The host element that owns this controller.\n * @param context - Player context to resolve the store from.\n * @label Without Selector\n */\n constructor(host: PlayerControllerHost, context: PlayerContext<Store>);\n /**\n * @param host - The host element that owns this controller.\n * @param context - Player context to resolve the store from.\n * @param selector - Derives a value from the player store state.\n * @label With Selector\n */\n constructor(\n host: PlayerControllerHost,\n context: PlayerContext<Store>,\n selector: Selector<InferStoreState<Store>, Result>\n );\n constructor(\n host: PlayerControllerHost,\n context: PlayerContext<Store>,\n selector?: Selector<InferStoreState<Store>, Result>\n ) {\n this.#host = host;\n this.#selector = selector;\n\n this.#consumer = new ContextConsumer(host, {\n context,\n callback: (ctx) => this.#connect(ctx),\n subscribe: true,\n });\n\n host.addController(this);\n }\n\n get value(): Result | undefined {\n const store = this.#consumer.value;\n if (!store) return undefined;\n\n // Without selector: return store directly\n if (!this.#selector) return store as unknown as Result;\n\n // With selector: use StoreController\n return this.#store?.value;\n }\n\n get displayName(): string | undefined {\n return this.#selector?.displayName;\n }\n\n hostConnected(): void {\n const store = this.#consumer.value;\n\n if (store) this.#connect(store);\n }\n\n hostDisconnected(): void {\n this.#store = null;\n }\n\n #connect(store: Store): void {\n if (!this.#store && this.#selector) {\n this.#store = new StoreController(this.#host, store, this.#selector);\n }\n }\n}\n\nexport function createPlayerController<Store extends PlayerStore>(\n context: PlayerContext<Store>\n): PlayerController.ConfiguredConstructor<Store> {\n class ConfiguredPlayerController<Result = Store> extends PlayerController<Store, Result> {\n constructor(host: PlayerControllerHost, selector?: Selector<InferStoreState<Store>, Result>) {\n if (selector) {\n super(host, context, selector);\n } else {\n super(host, context);\n }\n }\n }\n\n return ConfiguredPlayerController;\n}\n\nexport namespace PlayerController {\n export type Host = PlayerControllerHost;\n\n export type Constructor<Store extends PlayerStore = PlayerStore, Result = Store> = typeof PlayerController<\n Store,\n Result\n >;\n\n export interface ConfiguredConstructor<Store extends PlayerStore> {\n new (host: PlayerControllerHost): PlayerController<Store>;\n new <Result>(\n host: PlayerControllerHost,\n selector: Selector<InferStoreState<Store>, Result>\n ): PlayerController<Store, Result>;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,IAAa,mBAAb,MAAuG;CACrG;CACA;CAEA;CACA,SAAgD;CAmBhD,YACE,MACA,SACA,UACA;EACA,KAAKA,QAAQ;EACb,KAAKC,YAAY;EAEjB,KAAKC,YAAY,IAAI,gBAAgB,MAAM;GACzC;GACA,WAAW,QAAQ,KAAKC,SAAS,GAAG;GACpC,WAAW;EACb,CAAC;EAED,KAAK,cAAc,IAAI;CACzB;CAEA,IAAI,QAA4B;EAC9B,MAAM,QAAQ,KAAKD,UAAU;EAC7B,IAAI,CAAC,OAAO,OAAO,KAAA;EAGnB,IAAI,CAAC,KAAKD,WAAW,OAAO;EAG5B,OAAO,KAAKG,QAAQ;CACtB;CAEA,IAAI,cAAkC;EACpC,OAAO,KAAKH,WAAW;CACzB;CAEA,gBAAsB;EACpB,MAAM,QAAQ,KAAKC,UAAU;EAE7B,IAAI,OAAO,KAAKC,SAAS,KAAK;CAChC;CAEA,mBAAyB;EACvB,KAAKC,SAAS;CAChB;CAEA,SAAS,OAAoB;EAC3B,IAAI,CAAC,KAAKA,UAAU,KAAKH,WACvB,KAAKG,SAAS,IAAI,gBAAgB,KAAKJ,OAAO,OAAO,KAAKC,SAAS;CAEvE;AACF;AAEA,SAAgB,uBACd,SAC+C;CAC/C,MAAM,mCAAmD,iBAAgC;EACvF,YAAY,MAA4B,UAAqD;GAC3F,IAAI,UACF,MAAM,MAAM,SAAS,QAAQ;QAE7B,MAAM,MAAM,OAAO;EAEvB;CACF;CAEA,OAAO;AACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-player.js","names":[],"sources":["../../../src/player/create-player.ts"],"sourcesContent":["import {\n type AnyPlayerFeature,\n type AudioFeatures,\n type AudioPlayerStore,\n combinePlayerFeatureConfigs,\n type PlayerStore,\n type PlayerTarget,\n type VideoFeatures,\n type VideoPlayerStore,\n} from '@videojs/core/dom';\nimport { combine, createStore } from '@videojs/store';\n\nimport type { PlayerElementConstructor } from '../store/types';\nimport { containerContext, mediaContext, type PlayerContext, playerContext } from './context';\nimport { createPlayerController, type PlayerController } from './controller';\nimport { createPlayerElement } from './element';\n\nexport interface CreatePlayerConfig<Features extends AnyPlayerFeature[]> {\n features: Features;\n}\n\nexport interface CreatePlayerResult<Store extends PlayerStore> {\n /** Configured player element class that owns the store and attachment lifecycle. */\n PlayerElement: PlayerElementConstructor<Store>;\n\n /** Player controller bound to this player's context. */\n PlayerController: PlayerController.ConfiguredConstructor<Store>;\n\n /** Context that carries the player store to descendant elements. */\n playerContext: PlayerContext<Store>;\n}\n\n/**\n * Creates a typed HTML player class and bound controller.\n *\n * @example\n * ```ts\n * import { createPlayer, UIElement, selectPlayback } from '@videojs/html';\n * import { videoFeatures } from '@videojs/html/video';\n *\n * const { PlayerElement: VideoPlayerElement, PlayerController } = createPlayer({\n * features: videoFeatures,\n * });\n *\n * customElements.define('video-player', VideoPlayerElement);\n *\n * // Control element with selector\n * class PlayButton extends UIElement {\n * #playback = new PlayerController(this, selectPlayback);\n * }\n * ```;\n *\n * @param config - Player configuration with features.\n * @label Video\n */\nexport function createPlayer(config: CreatePlayerConfig<VideoFeatures>): CreatePlayerResult<VideoPlayerStore>;\n\n/**\n * Creates a typed HTML audio player class and bound controller.\n *\n * @param config - Player configuration with features.\n * @label Audio\n */\nexport function createPlayer(config: CreatePlayerConfig<AudioFeatures>): CreatePlayerResult<AudioPlayerStore>;\n\n/**\n * Creates a typed HTML player class with custom features.\n *\n * @param config - Player configuration with features.\n * @label Generic\n */\nexport function createPlayer<const Features extends AnyPlayerFeature[]>(\n config: CreatePlayerConfig<Features>\n): CreatePlayerResult<PlayerStore<Features>>;\n\nexport function createPlayer(config: CreatePlayerConfig<AnyPlayerFeature[]>): CreatePlayerResult<PlayerStore> {\n const slice = combine(...config.features);\n const featureConfig = combinePlayerFeatureConfigs(config.features);\n\n const ConfiguredPlayerElement = createPlayerElement<PlayerStore>({\n playerContext,\n mediaContext,\n containerContext,\n factory: () => createStore<PlayerTarget>()(slice),\n config: featureConfig,\n });\n\n return {\n PlayerElement: ConfiguredPlayerElement,\n PlayerController: createPlayerController(playerContext),\n playerContext,\n };\n}\n"],"mappings":";;;;;;AA2EA,SAAgB,aAAa,QAAiF;CAC5G,MAAM,QAAQ,QAAQ,GAAG,OAAO,QAAQ;CACxC,MAAM,gBAAgB,4BAA4B,OAAO,QAAQ;CAUjE,OAAO;EACL,eAT8B,oBAAiC;GAC/D;GACA;GACA;GACA,eAAe,YAA0B,CAAC,CAAC,KAAK;GAChD,QAAQ;EACV,CAGuC;EACrC,kBAAkB,uBAAuB,aAAa;EACtD;CACF;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"element.js","names":["#syncNativeMedia","#mediaRegistrations","#syncMedia","#containerRegistrations","#syncContainer","#media","#registerMedia","#container","#registerContainer","#store","#connected","#syncInitialConfig","#playerProvider","#publishMedia","#publishContainer","#observer","#tryAttach","#detachStore","#nativeMedia","#mediaProvider","#containerProvider","#detach","#configuredStore"],"sources":["../../../src/player/element.ts"],"sourcesContent":["import {\n type MediaContainer,\n type PlayerFeatureConfig,\n type PlayerStore,\n type PlayerTarget,\n setPlayerConfigValue,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport type { Media } from '@videojs/media/dom';\nimport { isNull } from '@videojs/utils/predicate';\nimport { camelCase, kebabCase } from '@videojs/utils/string';\n\nimport type { PlayerElementConstructor } from '../store/types';\nimport { UIElement } from '../ui/ui-element';\nimport type { ContainerContext, MediaContext, PlayerContext } from './context';\n\nexport interface CreatePlayerElementOptions<Store extends PlayerStore> {\n playerContext: PlayerContext<Store>;\n mediaContext: MediaContext;\n containerContext: ContainerContext;\n factory: () => Store;\n config: PlayerFeatureConfig;\n}\n\ninterface Registration<Value> {\n value: Value;\n}\n\ninterface ConfigInput {\n property: string;\n attribute: string;\n entry: PlayerFeatureConfig[string];\n}\n\nfunction resolveInputs(config: PlayerFeatureConfig): ConfigInput[] {\n return Object.entries(config).map(([key, entry]) => {\n const declared = entry.html?.attribute;\n const attribute = declared ?? kebabCase(key);\n\n if (__DEV__ && declared && declared !== kebabCase(declared)) {\n console.warn(`[vjs-html] config html.attribute \"${declared}\" is not kebab-case and will never match`);\n }\n\n return { property: camelCase(attribute), attribute, entry };\n });\n}\n\n/** Creates a configured player element class that owns the store and attach lifecycle. */\nexport function createPlayerElement<Store extends PlayerStore>(\n options: CreatePlayerElementOptions<Store>\n): PlayerElementConstructor<Store>;\nexport function createPlayerElement<Store extends PlayerStore>(\n options: CreatePlayerElementOptions<Store>\n): typeof UIElement {\n const inputs = resolveInputs(options.config);\n\n class ConfiguredPlayerElement extends UIElement {\n static properties = {\n ...UIElement.properties,\n ...Object.fromEntries(inputs.map(({ property, attribute }) => [property, { type: String, attribute }])),\n } satisfies PropertyDeclarationMap;\n\n #store: Store | null = options.factory();\n #configuredStore: Store | null = null;\n #detach: (() => void) | null = null;\n #connected = false;\n #media: Media | null = null;\n #nativeMedia: HTMLMediaElement | null = null;\n #container: MediaContainer | null = null;\n #mediaRegistrations: Registration<Media>[] = [];\n #containerRegistrations: Registration<MediaContainer>[] = [];\n #observer = new MutationObserver(() => this.#syncNativeMedia());\n\n #registerMedia = (media: Media): (() => void) => {\n const registration = { value: media };\n\n this.#mediaRegistrations.push(registration);\n this.#syncMedia();\n\n return () => {\n const index = this.#mediaRegistrations.indexOf(registration);\n if (index < 0) return;\n\n this.#mediaRegistrations.splice(index, 1);\n this.#syncNativeMedia();\n this.#syncMedia();\n };\n };\n\n #registerContainer = (container: MediaContainer): (() => void) => {\n const registration = { value: container };\n\n this.#containerRegistrations.push(registration);\n this.#syncContainer();\n\n return () => {\n const index = this.#containerRegistrations.indexOf(registration);\n if (index < 0) return;\n\n this.#containerRegistrations.splice(index, 1);\n this.#syncContainer();\n };\n };\n\n #playerProvider = new ContextProvider(this, {\n context: options.playerContext,\n initialValue: this.store,\n });\n\n #mediaProvider = new ContextProvider(this, {\n context: options.mediaContext,\n initialValue: { media: this.#media, registerMedia: this.#registerMedia },\n });\n\n #containerProvider = new ContextProvider(this, {\n context: options.containerContext,\n initialValue: {\n container: this.#container,\n registerContainer: this.#registerContainer,\n },\n });\n\n get store(): Store {\n if (isNull(this.#store)) {\n this.#store = options.factory();\n }\n\n return this.#store;\n }\n\n override connectedCallback(): void {\n this.#connected = true;\n super.connectedCallback();\n this.#syncInitialConfig();\n this.#playerProvider.setValue(this.store);\n this.#publishMedia();\n this.#publishContainer();\n this.#observer.observe(this, { childList: true, subtree: true });\n queueMicrotask(() => {\n if (this.#connected) this.#syncNativeMedia();\n });\n this.#tryAttach();\n }\n\n override disconnectedCallback(): void {\n this.#connected = false;\n this.#observer.disconnect();\n this.#detachStore();\n super.disconnectedCallback();\n }\n\n override destroyCallback(): void {\n this.#observer.disconnect();\n this.#detachStore();\n this.#store?.destroy();\n this.#store = null;\n super.destroyCallback();\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n\n for (const { property, entry } of inputs) {\n if (!changed.has(property)) continue;\n\n // SAFETY: `resolveInputs` derives properties installed by this class's static property map.\n const configProperty = property as keyof this;\n\n setPlayerConfigValue(this.store, entry, this[configProperty]);\n }\n }\n\n #syncMedia(): void {\n const registered = this.#mediaRegistrations.at(-1)?.value ?? null;\n const media = registered ?? this.#nativeMedia;\n if (this.#media === media) return;\n\n this.#media = media;\n this.#publishMedia();\n this.#tryAttach();\n }\n\n #syncContainer(): void {\n const container = this.#containerRegistrations.at(-1)?.value ?? null;\n if (this.#container === container) return;\n\n this.#container = container;\n this.#publishContainer();\n this.#tryAttach();\n }\n\n #syncNativeMedia(): void {\n const media = this.querySelector<HTMLMediaElement>('video, audio');\n if (this.#nativeMedia === media) return;\n\n this.#nativeMedia = media;\n this.#syncMedia();\n }\n\n #publishMedia(): void {\n this.#mediaProvider.setValue({ media: this.#media, registerMedia: this.#registerMedia });\n }\n\n #publishContainer(): void {\n this.#containerProvider.setValue({\n container: this.#container,\n registerContainer: this.#registerContainer,\n });\n }\n\n #tryAttach(): void {\n const store = this.#store;\n if (!this.#connected || !store) return;\n\n if (!this.#media) {\n this.#detachStore();\n return;\n }\n\n const target: PlayerTarget = {\n media: this.#media,\n container: this.#container,\n };\n\n const hasMediaChanged = store.target?.media !== target.media;\n const hasContainerChanged = store.target?.container !== target.container;\n\n if (hasMediaChanged || hasContainerChanged) {\n this.#detachStore();\n this.#detach = store.attach(target);\n }\n }\n\n #detachStore(): void {\n this.#detach?.();\n this.#detach = null;\n }\n\n #syncInitialConfig(): void {\n const store = this.store;\n if (this.#configuredStore === store) return;\n\n for (const { property, entry } of inputs) {\n // SAFETY: `resolveInputs` derives properties installed by this class's static property map.\n const configProperty = property as keyof this;\n\n setPlayerConfigValue(store, entry, this[configProperty]);\n }\n\n this.#configuredStore = store;\n }\n }\n\n return ConfiguredPlayerElement;\n}\n"],"mappings":";;;;;;AAmCA,SAAS,cAAc,QAA4C;CACjE,OAAO,OAAO,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW;EAElD,MAAM,YADW,MAAM,MAAM,aACC,UAAU,GAAG;EAM3C,OAAO;GAAE,UAAU,UAAU,SAAS;GAAG;GAAW;EAAM;CAC5D,CAAC;AACH;AAMA,SAAgB,oBACd,SACkB;CAClB,MAAM,SAAS,cAAc,QAAQ,MAAM;CAE3C,MAAM,gCAAgC,UAAU;;GAC1B,KAAA,aAAA;IAClB,GAAG,UAAU;IACb,GAAG,OAAO,YAAY,OAAO,KAAK,EAAE,UAAU,gBAAgB,CAAC,UAAU;KAAE,MAAM;KAAQ;IAAU,CAAC,CAAC,CAAC;GACxG;;EAEA,SAAuB,QAAQ,QAAQ;EACvC,mBAAiC;EACjC,UAA+B;EAC/B,aAAa;EACb,SAAuB;EACvB,eAAwC;EACxC,aAAoC;EACpC,sBAA6C,CAAC;EAC9C,0BAA0D,CAAC;EAC3D,YAAY,IAAI,uBAAuB,KAAKA,iBAAiB,CAAC;EAE9D,kBAAkB,UAA+B;GAC/C,MAAM,eAAe,EAAE,OAAO,MAAM;GAEpC,KAAKC,oBAAoB,KAAK,YAAY;GAC1C,KAAKC,WAAW;GAEhB,aAAa;IACX,MAAM,QAAQ,KAAKD,oBAAoB,QAAQ,YAAY;IAC3D,IAAI,QAAQ,GAAG;IAEf,KAAKA,oBAAoB,OAAO,OAAO,CAAC;IACxC,KAAKD,iBAAiB;IACtB,KAAKE,WAAW;GAClB;EACF;EAEA,sBAAsB,cAA4C;GAChE,MAAM,eAAe,EAAE,OAAO,UAAU;GAExC,KAAKC,wBAAwB,KAAK,YAAY;GAC9C,KAAKC,eAAe;GAEpB,aAAa;IACX,MAAM,QAAQ,KAAKD,wBAAwB,QAAQ,YAAY;IAC/D,IAAI,QAAQ,GAAG;IAEf,KAAKA,wBAAwB,OAAO,OAAO,CAAC;IAC5C,KAAKC,eAAe;GACtB;EACF;EAEA,kBAAkB,IAAI,gBAAgB,MAAM;GAC1C,SAAS,QAAQ;GACjB,cAAc,KAAK;EACrB,CAAC;EAED,iBAAiB,IAAI,gBAAgB,MAAM;GACzC,SAAS,QAAQ;GACjB,cAAc;IAAE,OAAO,KAAKC;IAAQ,eAAe,KAAKC;GAAe;EACzE,CAAC;EAED,qBAAqB,IAAI,gBAAgB,MAAM;GAC7C,SAAS,QAAQ;GACjB,cAAc;IACZ,WAAW,KAAKC;IAChB,mBAAmB,KAAKC;GAC1B;EACF,CAAC;EAED,IAAI,QAAe;GACjB,IAAI,OAAO,KAAKC,MAAM,GACpB,KAAKA,SAAS,QAAQ,QAAQ;GAGhC,OAAO,KAAKA;EACd;EAEA,oBAAmC;GACjC,KAAKC,aAAa;GAClB,MAAM,kBAAkB;GACxB,KAAKC,mBAAmB;GACxB,KAAKC,gBAAgB,SAAS,KAAK,KAAK;GACxC,KAAKC,cAAc;GACnB,KAAKC,kBAAkB;GACvB,KAAKC,UAAU,QAAQ,MAAM;IAAE,WAAW;IAAM,SAAS;GAAK,CAAC;GAC/D,qBAAqB;IACnB,IAAI,KAAKL,YAAY,KAAKV,iBAAiB;GAC7C,CAAC;GACD,KAAKgB,WAAW;EAClB;EAEA,uBAAsC;GACpC,KAAKN,aAAa;GAClB,KAAKK,UAAU,WAAW;GAC1B,KAAKE,aAAa;GAClB,MAAM,qBAAqB;EAC7B;EAEA,kBAAiC;GAC/B,KAAKF,UAAU,WAAW;GAC1B,KAAKE,aAAa;GAClB,KAAKR,QAAQ,QAAQ;GACrB,KAAKA,SAAS;GACd,MAAM,gBAAgB;EACxB;EAEA,WAA8B,SAA+B;GAC3D,MAAM,WAAW,OAAO;GAExB,KAAK,MAAM,EAAE,UAAU,WAAW,QAAQ;IACxC,IAAI,CAAC,QAAQ,IAAI,QAAQ,GAAG;IAG5B,MAAM,iBAAiB;IAEvB,qBAAqB,KAAK,OAAO,OAAO,KAAK,eAAe;GAC9D;EACF;EAEA,aAAmB;GAEjB,MAAM,QADa,KAAKR,oBAAoB,GAAG,EAAE,CAAC,EAAE,SAAS,QACjC,KAAKiB;GACjC,IAAI,KAAKb,WAAW,OAAO;GAE3B,KAAKA,SAAS;GACd,KAAKQ,cAAc;GACnB,KAAKG,WAAW;EAClB;EAEA,iBAAuB;GACrB,MAAM,YAAY,KAAKb,wBAAwB,GAAG,EAAE,CAAC,EAAE,SAAS;GAChE,IAAI,KAAKI,eAAe,WAAW;GAEnC,KAAKA,aAAa;GAClB,KAAKO,kBAAkB;GACvB,KAAKE,WAAW;EAClB;EAEA,mBAAyB;GACvB,MAAM,QAAQ,KAAK,cAAgC,cAAc;GACjE,IAAI,KAAKE,iBAAiB,OAAO;GAEjC,KAAKA,eAAe;GACpB,KAAKhB,WAAW;EAClB;EAEA,gBAAsB;GACpB,KAAKiB,eAAe,SAAS;IAAE,OAAO,KAAKd;IAAQ,eAAe,KAAKC;GAAe,CAAC;EACzF;EAEA,oBAA0B;GACxB,KAAKc,mBAAmB,SAAS;IAC/B,WAAW,KAAKb;IAChB,mBAAmB,KAAKC;GAC1B,CAAC;EACH;EAEA,aAAmB;GACjB,MAAM,QAAQ,KAAKC;GACnB,IAAI,CAAC,KAAKC,cAAc,CAAC,OAAO;GAEhC,IAAI,CAAC,KAAKL,QAAQ;IAChB,KAAKY,aAAa;IAClB;GACF;GAEA,MAAM,SAAuB;IAC3B,OAAO,KAAKZ;IACZ,WAAW,KAAKE;GAClB;GAEA,MAAM,kBAAkB,MAAM,QAAQ,UAAU,OAAO;GACvD,MAAM,sBAAsB,MAAM,QAAQ,cAAc,OAAO;GAE/D,IAAI,mBAAmB,qBAAqB;IAC1C,KAAKU,aAAa;IAClB,KAAKI,UAAU,MAAM,OAAO,MAAM;GACpC;EACF;EAEA,eAAqB;GACnB,KAAKA,UAAU;GACf,KAAKA,UAAU;EACjB;EAEA,qBAA2B;GACzB,MAAM,QAAQ,KAAK;GACnB,IAAI,KAAKC,qBAAqB,OAAO;GAErC,KAAK,MAAM,EAAE,UAAU,WAAW,QAAQ;IAExC,MAAM,iBAAiB;IAEvB,qBAAqB,OAAO,OAAO,KAAK,eAAe;GACzD;GAEA,KAAKA,mBAAmB;EAC1B;CACF;CAEA,OAAO;AACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"popup-group-context.js","names":[],"sources":["../../../src/player/popup-group-context.ts"],"sourcesContent":["import type { PopupGroup } from '@videojs/core/dom';\nimport { type Context, createContext } from '@videojs/element/context';\n\nconst POPUP_GROUP_CONTEXT_KEY = Symbol.for('@videojs/popup-group');\n\nexport type PopupGroupContext = Context<typeof POPUP_GROUP_CONTEXT_KEY, PopupGroup>;\n\nexport const popupGroupContext = createContext<PopupGroup, typeof POPUP_GROUP_CONTEXT_KEY>(POPUP_GROUP_CONTEXT_KEY);\n"],"mappings":";AAOA,MAAa,oBAAoB,cAJD,OAAO,IAAI,sBAIgD,CAAuB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"minimal-skin.js","names":["styles"],"sources":["../../../../src/presets/audio/minimal-skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/minimal-audio/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/audio/minimal-skin.css?inline';\n\n/** Packaged Minimal audio UI registered as `<audio-minimal-skin>`. */\nexport class MinimalAudioSkinElement extends SkinElement {\n static readonly tagName = 'audio-minimal-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [MinimalAudioSkinElement.tagName]: MinimalAudioSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,0BAAb,cAA6C,YAAY;;EAC7B,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,oBAAM;;;EACtB,KAAA,WAAA;;AACpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"player.js","names":[],"sources":["../../../../src/presets/audio/player.ts"],"sourcesContent":["import { audioFeatures } from '@videojs/core/dom';\n\nimport { createPlayer } from '../../player/create-player';\n\nconst { PlayerElement, PlayerController: AudioPlayerController } = createPlayer({\n features: audioFeatures,\n});\n\n/** Player controller bound to the standard audio player store. */\nexport const PlayerController = AudioPlayerController;\n\nexport class AudioPlayerElement extends PlayerElement {\n static readonly tagName = 'audio-player';\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [AudioPlayerElement.tagName]: AudioPlayerElement;\n }\n}\n"],"mappings":";;;AAIA,MAAM,EAAE,eAAe,kBAAkB,0BAA0B,aAAa,EAC9E,UAAU,cACZ,CAAC;;AAGD,MAAa,mBAAmB;AAEhC,IAAa,qBAAb,cAAwC,cAAc;;EAC1B,KAAA,UAAA;;AAC5B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"skin.js","names":["styles"],"sources":["../../../../src/presets/audio/skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/default-audio/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/audio/skin.css?inline';\n\n/** Packaged default audio UI registered as `<audio-skin>`. */\nexport class AudioSkinElement extends SkinElement {\n static readonly tagName = 'audio-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [AudioSkinElement.tagName]: AudioSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,mBAAb,cAAsC,YAAY;;EACtB,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,YAAM;;;EACtB,KAAA,WAAA;;AACpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"player.js","names":[],"sources":["../../../../src/presets/background/player.ts"],"sourcesContent":["import { backgroundFeatures } from '@videojs/core/dom';\n\nimport { createPlayer } from '../../player/create-player';\n\nconst { PlayerElement, PlayerController: BackgroundVideoPlayerController } = createPlayer({\n features: backgroundFeatures,\n});\n\n/** Player controller bound to the background video player store. */\nexport const PlayerController = BackgroundVideoPlayerController;\n\nexport class BackgroundVideoPlayerElement extends PlayerElement {\n static readonly tagName = 'background-video-player';\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [BackgroundVideoPlayerElement.tagName]: BackgroundVideoPlayerElement;\n }\n}\n"],"mappings":";;;AAIA,MAAM,EAAE,eAAe,kBAAkB,oCAAoC,aAAa,EACxF,UAAU,mBACZ,CAAC;;AAGD,MAAa,mBAAmB;AAEhC,IAAa,+BAAb,cAAkD,cAAc;;EACpC,KAAA,UAAA;;AAC5B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"skin.js","names":["styles"],"sources":["../../../../src/presets/background/skin.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { ensureGlobalStyle } from '@videojs/utils/dom';\n\nimport styles from '../../define/background/skin.css?inline';\n\nconst STYLES_ID = '__media-background-styles';\n\nfunction getTemplateHTML() {\n return /* html */ `\n <media-container>\n <!-- @deprecated slot=\"media\" is no longer required, use the default slot instead -->\n <slot name=\"media\"></slot>\n <slot></slot>\n </media-container>\n `;\n}\n\nexport class BackgroundVideoSkinElement extends ReactiveElement {\n static readonly tagName = 'background-video-skin';\n static shadowRootOptions: ShadowRootInit = { mode: 'open' };\n static getTemplateHTML = getTemplateHTML;\n\n constructor() {\n super();\n\n ensureGlobalStyle(STYLES_ID, styles);\n\n if (!this.shadowRoot) {\n this.attachShadow(BackgroundVideoSkinElement.shadowRootOptions);\n this.shadowRoot!.innerHTML = getTemplateHTML();\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [BackgroundVideoSkinElement.tagName]: BackgroundVideoSkinElement;\n }\n}\n"],"mappings":";;;;AAKA,MAAM,YAAY;AAElB,SAAS,kBAAkB;CACzB,OAAkB;;;;;;;AAOpB;AAEA,IAAa,6BAAb,MAAa,mCAAmC,gBAAgB;;EACpC,KAAA,UAAA;;;EACiB,KAAA,oBAAA,EAAE,MAAM,OAAO;;;EACjC,KAAA,kBAAA;;CAEzB,cAAc;EACZ,MAAM;EAEN,kBAAkB,WAAWA,YAAM;EAEnC,IAAI,CAAC,KAAK,YAAY;GACpB,KAAK,aAAa,2BAA2B,iBAAiB;GAC9D,KAAK,WAAY,YAAY,gBAAgB;EAC/C;CACF;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"minimal-skin.js","names":["styles"],"sources":["../../../../src/presets/live-audio/minimal-skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/minimal-live-audio/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/live-audio/minimal-skin.css?inline';\n\n/** Packaged Minimal live-audio UI registered as `<live-audio-minimal-skin>`. */\nexport class MinimalLiveAudioSkinElement extends SkinElement {\n static readonly tagName = 'live-audio-minimal-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [MinimalLiveAudioSkinElement.tagName]: MinimalLiveAudioSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,8BAAb,cAAiD,YAAY;;EACjC,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,oBAAM;;;EACtB,KAAA,WAAA;;AACpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"player.js","names":[],"sources":["../../../../src/presets/live-audio/player.ts"],"sourcesContent":["import { liveAudioFeatures } from '@videojs/core/dom';\n\nimport { createPlayer } from '../../player/create-player';\n\nconst { PlayerElement, PlayerController: LiveAudioPlayerController } = createPlayer({\n features: liveAudioFeatures,\n});\n\n/** Player controller bound to the live audio player store. */\nexport const PlayerController = LiveAudioPlayerController;\n\nexport class LiveAudioPlayerElement extends PlayerElement {\n static readonly tagName = 'live-audio-player';\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [LiveAudioPlayerElement.tagName]: LiveAudioPlayerElement;\n }\n}\n"],"mappings":";;;AAIA,MAAM,EAAE,eAAe,kBAAkB,8BAA8B,aAAa,EAClF,UAAU,kBACZ,CAAC;;AAGD,MAAa,mBAAmB;AAEhC,IAAa,yBAAb,cAA4C,cAAc;;EAC9B,KAAA,UAAA;;AAC5B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"skin.js","names":["styles"],"sources":["../../../../src/presets/live-audio/skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/default-live-audio/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/live-audio/skin.css?inline';\n\n/** Packaged default live-audio UI registered as `<live-audio-skin>`. */\nexport class LiveAudioSkinElement extends SkinElement {\n static readonly tagName = 'live-audio-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [LiveAudioSkinElement.tagName]: LiveAudioSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,uBAAb,cAA0C,YAAY;;EAC1B,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,YAAM;;;EACtB,KAAA,WAAA;;AACpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"minimal-skin.js","names":["styles"],"sources":["../../../../src/presets/live-video/minimal-skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/minimal-live-video/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/live-video/minimal-skin.css?inline';\n\n/** Packaged Minimal live-video UI registered as `<live-video-minimal-skin>`. */\nexport class MinimalLiveVideoSkinElement extends SkinElement {\n static readonly tagName = 'live-video-minimal-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [MinimalLiveVideoSkinElement.tagName]: MinimalLiveVideoSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,8BAAb,cAAiD,YAAY;;EACjC,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,oBAAM;;;EACtB,KAAA,WAAA;;AACpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"player.js","names":[],"sources":["../../../../src/presets/live-video/player.ts"],"sourcesContent":["import { liveVideoFeatures } from '@videojs/core/dom';\n\nimport { createPlayer } from '../../player/create-player';\n\nconst { PlayerElement, PlayerController: LiveVideoPlayerController } = createPlayer({\n features: liveVideoFeatures,\n});\n\n/** Player controller bound to the live video player store. */\nexport const PlayerController = LiveVideoPlayerController;\n\nexport class LiveVideoPlayerElement extends PlayerElement {\n static readonly tagName = 'live-video-player';\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [LiveVideoPlayerElement.tagName]: LiveVideoPlayerElement;\n }\n}\n"],"mappings":";;;AAIA,MAAM,EAAE,eAAe,kBAAkB,8BAA8B,aAAa,EAClF,UAAU,kBACZ,CAAC;;AAGD,MAAa,mBAAmB;AAEhC,IAAa,yBAAb,cAA4C,cAAc;;EAC9B,KAAA,UAAA;;AAC5B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"skin.js","names":["styles"],"sources":["../../../../src/presets/live-video/skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/default-live-video/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/live-video/skin.css?inline';\n\n/** Packaged default live-video UI registered as `<live-video-skin>`. */\nexport class LiveVideoSkinElement extends SkinElement {\n static readonly tagName = 'live-video-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [LiveVideoSkinElement.tagName]: LiveVideoSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,uBAAb,cAA0C,YAAY;;EAC1B,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,YAAM;;;EACtB,KAAA,WAAA;;AACpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"skin.js","names":["sharedStyles","globalStyles"],"sources":["../../../src/presets/skin.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport {\n applyShadowStyles,\n createShadowStyle,\n ensureGlobalStyle,\n renderTemplate,\n type ShadowStyle,\n} from '@videojs/utils/dom';\n\nimport globalStyles from '../define/global.css?inline';\nimport sharedStyles from '../define/shared.css?inline';\n\nconst STYLES_ID = '__media-styles';\nconst sharedSheet = createShadowStyle(sharedStyles);\n\n/**\n * Base element for skin definitions. Attaches a shadow root, clones `static template` into it, and applies shared +\n * per-skin styles via `adoptedStyleSheets` (or `<style>` fallback).\n */\nexport class SkinElement extends ReactiveElement {\n static shadowRootOptions: ShadowRootInit = { mode: 'open' };\n static styles?: ShadowStyle;\n static template?: HTMLTemplateElement | null;\n\n constructor() {\n super();\n\n ensureGlobalStyle(STYLES_ID, globalStyles);\n\n if (!this.shadowRoot) {\n const ctor = this.constructor as typeof SkinElement;\n\n this.attachShadow(ctor.shadowRootOptions);\n\n if (ctor.template) {\n renderTemplate(this.shadowRoot!, ctor.template);\n }\n\n const sheets: ShadowStyle[] = [sharedSheet];\n\n if (ctor.styles) {\n sheets.push(ctor.styles);\n }\n\n applyShadowStyles(this.shadowRoot!, sheets);\n }\n }\n}\n"],"mappings":";;;;;AAYA,MAAM,YAAY;AAClB,MAAM,cAAc,kBAAkBA,cAAY;;;;;AAMlD,IAAa,cAAb,cAAiC,gBAAgB;;EACJ,KAAA,oBAAA,EAAE,MAAM,OAAO;;CAI1D,cAAc;EACZ,MAAM;EAEN,kBAAkB,WAAWC,cAAY;EAEzC,IAAI,CAAC,KAAK,YAAY;GACpB,MAAM,OAAO,KAAK;GAElB,KAAK,aAAa,KAAK,iBAAiB;GAExC,IAAI,KAAK,UACP,eAAe,KAAK,YAAa,KAAK,QAAQ;GAGhD,MAAM,SAAwB,CAAC,WAAW;GAE1C,IAAI,KAAK,QACP,OAAO,KAAK,KAAK,MAAM;GAGzB,kBAAkB,KAAK,YAAa,MAAM;EAC5C;CACF;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"minimal-skin.js","names":["styles"],"sources":["../../../../src/presets/video/minimal-skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/minimal-video/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/video/minimal-skin.css?inline';\n\n/** Packaged Minimal video UI registered as `<video-minimal-skin>`. */\nexport class MinimalVideoSkinElement extends SkinElement {\n static readonly tagName = 'video-minimal-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [MinimalVideoSkinElement.tagName]: MinimalVideoSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,0BAAb,cAA6C,YAAY;;EAC7B,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,oBAAM;;;EACtB,KAAA,WAAA;;AACpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"player.js","names":[],"sources":["../../../../src/presets/video/player.ts"],"sourcesContent":["import { videoFeatures } from '@videojs/core/dom';\n\nimport { createPlayer } from '../../player/create-player';\n\nconst { PlayerElement, PlayerController: VideoPlayerController } = createPlayer({\n features: videoFeatures,\n});\n\n/** Player controller bound to the standard video player store. */\nexport const PlayerController = VideoPlayerController;\n\n/**\n * Player-state provider registered as `<video-player>`.\n *\n * The element owns the configured video store but no layout. Put a skin or `<media-container>` inside it to provide the\n * media, controls, and fullscreen target.\n */\nexport class VideoPlayerElement extends PlayerElement {\n static readonly tagName = 'video-player';\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VideoPlayerElement.tagName]: VideoPlayerElement;\n }\n}\n"],"mappings":";;;AAIA,MAAM,EAAE,eAAe,kBAAkB,0BAA0B,aAAa,EAC9E,UAAU,cACZ,CAAC;;AAGD,MAAa,mBAAmB;;;;;;;AAQhC,IAAa,qBAAb,cAAwC,cAAc;;EAC1B,KAAA,UAAA;;AAC5B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"skin.js","names":["styles"],"sources":["../../../../src/presets/video/skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/default-video/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/video/skin.css?inline';\n\n/** Packaged default video UI registered as `<video-skin>`. */\nexport class VideoSkinElement extends SkinElement {\n static readonly tagName = 'video-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VideoSkinElement.tagName]: VideoSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,mBAAb,cAAsC,YAAY;;EACtB,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,YAAM;;;EACtB,KAAA,WAAA;;AACpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"safe-define.js","names":[],"sources":["../../../src/registration/safe-define.ts"],"sourcesContent":["type DefinableElement = CustomElementConstructor & { tagName: string };\n\n/**\n * Define a custom element only if not already registered.\n *\n * `tagName` overrides the element's own, for the rare case of registering one element under a second name — two flavors\n * of the same element in one runtime, say, where whichever registers first would otherwise take the name and the other\n * would silently lose it. Registering under the override does not change `element.tagName`, so anything reading the\n * class still sees its standard name.\n */\nexport function safeDefine(element: DefinableElement, tagName: string = element.tagName): void {\n const registry = globalThis.customElements;\n if (!registry || registry.get(tagName)) return;\n\n registry.define(tagName, element);\n}\n"],"mappings":";;;;;;;;;AAUA,SAAgB,WAAW,SAA2B,UAAkB,QAAQ,SAAe;CAC7F,MAAM,WAAW,WAAW;CAC5B,IAAI,CAAC,YAAY,SAAS,IAAI,OAAO,GAAG;CAExC,SAAS,OAAO,SAAS,OAAO;AAClC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui-compounds.js","names":[],"sources":["../../../src/registration/ui-compounds.ts"],"sourcesContent":["import { AlertDialogElement } from '../ui/alert-dialog/element';\nimport { ControlsBackdropElement } from '../ui/controls/backdrop';\nimport { ControlsContentElement } from '../ui/controls/content';\nimport { ControlsElement } from '../ui/controls/element';\nimport { ControlsGroupElement } from '../ui/controls/group';\nimport { DialogBackdropElement } from '../ui/dialog/backdrop';\nimport { DialogCloseElement } from '../ui/dialog/close';\nimport { DialogDescriptionElement } from '../ui/dialog/description';\nimport { DialogPopupElement } from '../ui/dialog/popup';\nimport { DialogTitleElement } from '../ui/dialog/title';\nimport { ErrorDialogElement } from '../ui/error-dialog/element';\nimport { MenuCheckboxItemElement } from '../ui/menu/checkbox-item';\nimport { MenuContentElement } from '../ui/menu/content';\nimport { MenuElement } from '../ui/menu/element';\nimport { MenuGroupElement } from '../ui/menu/group';\nimport { MenuGroupLabelElement } from '../ui/menu/group-label';\nimport { MenuItemElement } from '../ui/menu/item';\nimport { MenuItemIndicatorElement } from '../ui/menu/item-indicator';\nimport { MenuRadioGroupElement } from '../ui/menu/radio-group';\nimport { MenuRadioItemElement } from '../ui/menu/radio-item';\nimport { MenuSeparatorElement } from '../ui/menu/separator';\nimport { SeekIndicatorElement } from '../ui/seek-indicator/element';\nimport { SeekIndicatorValueElement } from '../ui/seek-indicator/value';\nimport { SliderBufferElement } from '../ui/slider/buffer';\nimport { SliderElement } from '../ui/slider/element';\nimport { SliderFillElement } from '../ui/slider/fill';\nimport { SliderPreviewElement } from '../ui/slider/preview';\nimport { SliderThumbElement } from '../ui/slider/thumb';\nimport { SliderThumbnailElement } from '../ui/slider/thumbnail';\nimport { SliderTrackElement } from '../ui/slider/track';\nimport { SliderValueElement } from '../ui/slider/value';\nimport { StatusAnnouncerElement } from '../ui/status-announcer/element';\nimport { StatusIndicatorElement } from '../ui/status-indicator/element';\nimport { StatusIndicatorValueElement } from '../ui/status-indicator/value';\nimport { TimeSliderElement } from '../ui/time-slider/element';\nimport { TimeElement } from '../ui/time/element';\nimport { TimeGroupElement } from '../ui/time/group';\nimport { TimeSeparatorElement } from '../ui/time/separator';\nimport { TooltipElement } from '../ui/tooltip/element';\nimport { TooltipGroupElement } from '../ui/tooltip/group';\nimport { TooltipLabelElement } from '../ui/tooltip/label';\nimport { TooltipShortcutElement } from '../ui/tooltip/shortcut';\nimport { VolumeIndicatorElement } from '../ui/volume-indicator/element';\nimport { VolumeIndicatorFillElement } from '../ui/volume-indicator/fill';\nimport { VolumeIndicatorValueElement } from '../ui/volume-indicator/value';\nimport { VolumeSliderElement } from '../ui/volume-slider/element';\nimport { safeDefine } from './safe-define';\n\n// ── Define functions ────────────────────────────────────────────────────\n\nexport function defineMenu(): void {\n // Root first — part elements consume its context.\n safeDefine(MenuElement);\n safeDefine(MenuContentElement);\n safeDefine(MenuItemElement);\n safeDefine(MenuGroupLabelElement);\n safeDefine(MenuSeparatorElement);\n safeDefine(MenuGroupElement);\n safeDefine(MenuRadioGroupElement);\n safeDefine(MenuRadioItemElement);\n safeDefine(MenuCheckboxItemElement);\n safeDefine(MenuItemIndicatorElement);\n}\n\nexport function defineControls(): void {\n safeDefine(ControlsElement);\n safeDefine(ControlsBackdropElement);\n safeDefine(ControlsContentElement);\n safeDefine(ControlsGroupElement);\n}\n\nfunction defineDialogParts(): void {\n safeDefine(DialogBackdropElement);\n safeDefine(DialogPopupElement);\n safeDefine(DialogCloseElement);\n safeDefine(DialogDescriptionElement);\n safeDefine(DialogTitleElement);\n}\n\nexport function defineAlertDialog(): void {\n // Parent first — child elements consume its context.\n safeDefine(AlertDialogElement);\n defineDialogParts();\n}\n\nexport function defineErrorDialog(): void {\n // Parent first — child elements consume its context.\n safeDefine(ErrorDialogElement);\n defineDialogParts();\n}\n\nexport function defineInputIndicators(): void {\n safeDefine(StatusAnnouncerElement);\n safeDefine(StatusIndicatorElement);\n safeDefine(StatusIndicatorValueElement);\n safeDefine(VolumeIndicatorElement);\n safeDefine(VolumeIndicatorFillElement);\n safeDefine(VolumeIndicatorValueElement);\n safeDefine(SeekIndicatorElement);\n safeDefine(SeekIndicatorValueElement);\n}\n\n/** Shared slider sub-elements used by all slider types. */\nexport function defineSliderParts(): void {\n safeDefine(SliderFillElement);\n safeDefine(SliderPreviewElement);\n safeDefine(SliderThumbElement);\n safeDefine(SliderTrackElement);\n safeDefine(SliderValueElement);\n}\n\nexport function defineSlider(): void {\n safeDefine(SliderElement);\n defineSliderParts();\n}\n\nexport function defineTime(): void {\n safeDefine(TimeElement);\n safeDefine(TimeGroupElement);\n safeDefine(TimeSeparatorElement);\n}\n\nexport function defineTimeSlider(): void {\n safeDefine(TimeSliderElement);\n defineSliderParts();\n safeDefine(SliderBufferElement);\n safeDefine(SliderThumbnailElement);\n}\n\nexport function defineTooltip(): void {\n safeDefine(TooltipGroupElement);\n safeDefine(TooltipLabelElement);\n safeDefine(TooltipShortcutElement);\n safeDefine(TooltipElement);\n}\n\nexport function defineVolumeSlider(): void {\n safeDefine(VolumeSliderElement);\n defineSliderParts();\n}\n\nexport function defineSliders(): void {\n safeDefine(TimeSliderElement);\n safeDefine(VolumeSliderElement);\n defineSliderParts();\n safeDefine(SliderBufferElement);\n safeDefine(SliderThumbnailElement);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDA,SAAgB,aAAmB;CAEjC,WAAW,WAAW;CACtB,WAAW,kBAAkB;CAC7B,WAAW,eAAe;CAC1B,WAAW,qBAAqB;CAChC,WAAW,oBAAoB;CAC/B,WAAW,gBAAgB;CAC3B,WAAW,qBAAqB;CAChC,WAAW,oBAAoB;CAC/B,WAAW,uBAAuB;CAClC,WAAW,wBAAwB;AACrC;AAEA,SAAgB,iBAAuB;CACrC,WAAW,eAAe;CAC1B,WAAW,uBAAuB;CAClC,WAAW,sBAAsB;CACjC,WAAW,oBAAoB;AACjC;AAEA,SAAS,oBAA0B;CACjC,WAAW,qBAAqB;CAChC,WAAW,kBAAkB;CAC7B,WAAW,kBAAkB;CAC7B,WAAW,wBAAwB;CACnC,WAAW,kBAAkB;AAC/B;AAQA,SAAgB,oBAA0B;CAExC,WAAW,kBAAkB;CAC7B,kBAAkB;AACpB;AAEA,SAAgB,wBAA8B;CAC5C,WAAW,sBAAsB;CACjC,WAAW,sBAAsB;CACjC,WAAW,2BAA2B;CACtC,WAAW,sBAAsB;CACjC,WAAW,0BAA0B;CACrC,WAAW,2BAA2B;CACtC,WAAW,oBAAoB;CAC/B,WAAW,yBAAyB;AACtC;;AAGA,SAAgB,oBAA0B;CACxC,WAAW,iBAAiB;CAC5B,WAAW,oBAAoB;CAC/B,WAAW,kBAAkB;CAC7B,WAAW,kBAAkB;CAC7B,WAAW,kBAAkB;AAC/B;AAOA,SAAgB,aAAmB;CACjC,WAAW,WAAW;CACtB,WAAW,gBAAgB;CAC3B,WAAW,oBAAoB;AACjC;AAEA,SAAgB,mBAAyB;CACvC,WAAW,iBAAiB;CAC5B,kBAAkB;CAClB,WAAW,mBAAmB;CAC9B,WAAW,sBAAsB;AACnC;AAEA,SAAgB,gBAAsB;CACpC,WAAW,mBAAmB;CAC9B,WAAW,mBAAmB;CAC9B,WAAW,sBAAsB;CACjC,WAAW,cAAc;AAC3B;AAEA,SAAgB,qBAA2B;CACzC,WAAW,mBAAmB;CAC9B,kBAAkB;AACpB;AAEA,SAAgB,gBAAsB;CACpC,WAAW,iBAAiB;CAC5B,WAAW,mBAAmB;CAC9B,kBAAkB;CAClB,WAAW,mBAAmB;CAC9B,WAAW,sBAAsB;AACnC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-attach-mixin.js","names":["#unsubscribe","#releaseMedia"],"sources":["../../../src/store/media-attach-mixin.ts"],"sourcesContent":["import { ContextEvent } from '@videojs/element/context';\nimport type { Media } from '@videojs/media/dom';\nimport type { CustomElement } from '@videojs/utils/dom';\nimport type { AnyConstructor, Constructor } from '@videojs/utils/types';\n\nimport { type MediaContext, mediaContext } from '../player/context';\n\nexport type MediaAttachMixin = <Class extends AnyConstructor<HTMLElement>>(BaseClass: Class) => Class;\n\n/**\n * Create a mixin that consumes `mediaContext` and registers the element as the media with the player.\n *\n * Uses the raw context-request protocol so it works with any `HTMLElement` subclass — no `ReactiveControllerHost`\n * required.\n *\n * @param context - The media context to consume.\n */\nexport function createMediaAttachMixin(context: MediaContext): MediaAttachMixin {\n return <Class extends AnyConstructor<HTMLElement>>(BaseClass: Class) => {\n class MediaAttachElement extends (BaseClass as unknown as Constructor<CustomElement>) {\n #releaseMedia: (() => void) | null = null;\n #unsubscribe: (() => void) | null = null;\n\n getMediaTarget(): Media | null {\n return this as unknown as Media;\n }\n\n override connectedCallback() {\n super.connectedCallback?.();\n\n this.dispatchEvent(\n new ContextEvent(\n context,\n this,\n (value, unsubscribe) => {\n if (unsubscribe) this.#unsubscribe = unsubscribe;\n\n this.#releaseMedia?.();\n this.#releaseMedia = null;\n\n const target = this.getMediaTarget();\n\n if (this.isConnected && value && target) {\n this.#releaseMedia = value.registerMedia(target);\n }\n },\n false\n )\n );\n }\n\n override disconnectedCallback() {\n // Detach the store while the media chain is still live so features\n // (e.g. remote-playback) can clean up against the real underlying\n // element. Destroying the media adapter first would null the layer\n // chain's target before listeners get a chance to unwind.\n this.#releaseMedia?.();\n this.#releaseMedia = null;\n this.#unsubscribe?.();\n this.#unsubscribe = null;\n super.disconnectedCallback?.();\n }\n }\n\n return MediaAttachElement as unknown as Class;\n };\n}\n\nexport const MediaAttachMixin = createMediaAttachMixin(mediaContext);\n"],"mappings":";;;;;;;;;;;AAiBA,SAAgB,uBAAuB,SAAyC;CAC9E,QAAmD,cAAqB;EACtE,MAAM,2BAA4B,UAAoD;GACpF,gBAAqC;GACrC,eAAoC;GAEpC,iBAA+B;IAC7B,OAAO;GACT;GAEA,oBAA6B;IAC3B,MAAM,oBAAoB;IAE1B,KAAK,cACH,IAAI,aACF,SACA,OACC,OAAO,gBAAgB;KACtB,IAAI,aAAa,KAAKA,eAAe;KAErC,KAAKC,gBAAgB;KACrB,KAAKA,gBAAgB;KAErB,MAAM,SAAS,KAAK,eAAe;KAEnC,IAAI,KAAK,eAAe,SAAS,QAC/B,KAAKA,gBAAgB,MAAM,cAAc,MAAM;IAEnD,GACA,KACF,CACF;GACF;GAEA,uBAAgC;IAK9B,KAAKA,gBAAgB;IACrB,KAAKA,gBAAgB;IACrB,KAAKD,eAAe;IACpB,KAAKA,eAAe;IACpB,MAAM,uBAAuB;GAC/B;EACF;EAEA,OAAO;CACT;AACF;AAEA,MAAa,mBAAmB,uBAAuB,YAAY"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"element.js","names":[],"sources":["../../../../src/ui/airplay-button/element.ts"],"sourcesContent":["import { AirPlayButtonCore, AirPlayButtonDataAttrs } from '@videojs/core';\nimport { selectRemotePlayback } from '@videojs/core/dom';\nimport type { MediaRemotePlaybackState } from '@videojs/media';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class AirPlayButtonElement extends MediaButtonElement<AirPlayButtonCore> {\n static readonly tagName = 'media-airplay-button';\n\n protected readonly core = new AirPlayButtonCore();\n protected readonly stateAttrMap = AirPlayButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectRemotePlayback);\n\n protected activate(state: MediaRemotePlaybackState): void {\n this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,uBAAb,cAA0C,mBAAsC;;;EAGpD,KAAA,OAAA,IAAI,kBAAkB;EACd,KAAA,eAAA;EACF,KAAA,aAAA,IAAI,iBAAiB,MAAM,eAAe,oBAAoB;;;EAJpE,KAAA,UAAA;;CAM1B,SAAmB,OAAuC;EACxD,KAAK,KAAK,OAAO,KAAK;CACxB;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"element.js","names":[],"sources":["../../../../src/ui/alert-dialog/element.ts"],"sourcesContent":["import { AlertDialogCore, AlertDialogDataAttrs } from '@videojs/core';\n\nimport { DialogElementBase } from '../dialog/element';\n\n/**\n * A modal dialog with alert semantics.\n *\n * @fires open-change - Fired when the dialog's open state changes.\n */\nexport class AlertDialogElement extends DialogElementBase {\n static readonly tagName = 'media-alert-dialog';\n\n constructor() {\n super({\n core: new AlertDialogCore(),\n stateAttrMap: AlertDialogDataAttrs,\n idPrefix: 'alert-dialog',\n bindTrigger: false,\n });\n }\n}\n"],"mappings":";;;;;;;;AASA,IAAa,qBAAb,cAAwC,kBAAkB;;EAC9B,KAAA,UAAA;;CAE1B,cAAc;EACZ,MAAM;GACJ,MAAM,IAAI,gBAAgB;GAC1B,cAAc;GACd,UAAU;GACV,aAAa;EACf,CAAC;CACH;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"element.js","names":["#mediaState","#core","#i18n","#options"],"sources":["../../../../src/ui/audio-track-radio-group/element.ts"],"sourcesContent":["import {\n AudioTrackRadioGroupCore,\n AudioTrackRadioGroupDataAttrs,\n type AudioTrackRadioGroupOption,\n} from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectAudioTrack } from '@videojs/core/dom';\nimport { type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { MenuRadioGroupElement } from '../menu/radio-group';\nimport { RadioOptionsController } from '../radio-options/controller';\n\nexport class AudioTrackRadioGroupElement extends MenuRadioGroupElement {\n static override readonly tagName = 'media-audio-track-radio-group';\n\n static override properties = {\n ...MenuRadioGroupElement.properties,\n disabled: { type: Boolean },\n label: { type: String },\n } satisfies PropertyDeclarationMap<'value' | 'label' | 'disabled'>;\n\n disabled = false;\n label: Text | string = '';\n formatTrack = AudioTrackRadioGroupCore.defaultProps.formatTrack;\n\n readonly #core = new AudioTrackRadioGroupCore();\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #mediaState = new PlayerController(this, playerContext, selectAudioTrack);\n readonly #options = new RadioOptionsController<AudioTrackRadioGroupOption>(this, {\n setItemAttributes: (item, option) => item.setAttribute('data-track', option.value),\n onValueChange: (value) => {\n const media = this.#mediaState.value;\n\n if (media) this.#core.selectValue(media, value);\n },\n });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.destroyed) return;\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n const media = this.#mediaState.value;\n let state: AudioTrackRadioGroupCore.State | null = null;\n\n if (media) {\n this.#core.setProps({ formatTrack: this.formatTrack, disabled: this.disabled, label: this.label });\n this.#core.setMedia(media);\n state = this.#core.getState();\n\n this.applyDefaultAriaLabel(translateText(this.#core.getLabel(state), this.#i18n.value));\n this.#options.sync(state, this.#i18n.value, this.#i18n.locale);\n this.publishMenuOptionState(state.disabled, state.hidden, state.availability);\n } else {\n this.publishMenuOptionState(true, true, 'unsupported');\n }\n\n super.update(changed);\n\n if (state) applyStateDataAttrs(this, state, AudioTrackRadioGroupDataAttrs);\n }\n}\n\nexport namespace AudioTrackRadioGroupElement {\n export type State = AudioTrackRadioGroupCore.State;\n}\n"],"mappings":";;;;;;;;;;AAgBA,IAAa,8BAAb,cAAiD,sBAAsB;;;EAS1D,KAAA,WAAA;EACY,KAAA,QAAA;EACT,KAAA,cAAA,yBAAyB,aAAa;EAEnC,KAAA,QAAA,IAAI,yBAAyB;EAC7B,KAAA,QAAA,IAAI,eAAe,MAAM,WAAW;EAC9B,KAAA,cAAA,IAAI,iBAAiB,MAAM,eAAe,gBAAgB;EAC7D,KAAA,WAAA,IAAI,uBAAmD,MAAM;GAC/E,oBAAoB,MAAM,WAAW,KAAK,aAAa,cAAc,OAAO,KAAK;GACjF,gBAAgB,UAAU;IACxB,MAAM,QAAQ,KAAKA,YAAY;IAE/B,IAAI,OAAO,KAAKC,MAAM,YAAY,OAAO,KAAK;GAChD;EACF,CAAC;;;EAtBkC,KAAA,UAAA;;;EAEN,KAAA,aAAA;GAC3B,GAAG,sBAAsB;GACzB,UAAU,EAAE,MAAM,QAAQ;GAC1B,OAAO,EAAE,MAAM,OAAO;EACxB;;CAMA;CACA;CACA;CACA;CASA,oBAAmC;EACjC,MAAM,kBAAkB;EAExB,IAAI,KAAK,WAAW;CAKtB;CAEA,OAA0B,SAA+B;EACvD,MAAM,QAAQ,KAAKD,YAAY;EAC/B,IAAI,QAA+C;EAEnD,IAAI,OAAO;GACT,KAAKC,MAAM,SAAS;IAAE,aAAa,KAAK;IAAa,UAAU,KAAK;IAAU,OAAO,KAAK;GAAM,CAAC;GACjG,KAAKA,MAAM,SAAS,KAAK;GACzB,QAAQ,KAAKA,MAAM,SAAS;GAE5B,KAAK,sBAAsB,cAAc,KAAKA,MAAM,SAAS,KAAK,GAAG,KAAKC,MAAM,KAAK,CAAC;GACtF,KAAKC,SAAS,KAAK,OAAO,KAAKD,MAAM,OAAO,KAAKA,MAAM,MAAM;GAC7D,KAAK,uBAAuB,MAAM,UAAU,MAAM,QAAQ,MAAM,YAAY;EAC9E,OACE,KAAK,uBAAuB,MAAM,MAAM,aAAa;EAGvD,MAAM,OAAO,OAAO;EAEpB,IAAI,OAAO,oBAAoB,MAAM,OAAO,6BAA6B;CAC3E;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"element.js","names":["#core","#state","#disconnect"],"sources":["../../../../src/ui/buffering-indicator/element.ts"],"sourcesContent":["import { BufferingIndicatorCore, BufferingIndicatorDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectPlayback } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { UIElement } from '../ui-element';\n\nexport class BufferingIndicatorElement extends UIElement {\n static readonly tagName = 'media-buffering-indicator';\n\n static override properties = {\n delay: { type: Number },\n } satisfies PropertyDeclarationMap<keyof BufferingIndicatorCore.Props>;\n\n delay = BufferingIndicatorCore.defaultProps.delay;\n\n readonly #core = new BufferingIndicatorCore();\n readonly #state = new PlayerController(this, playerContext, selectPlayback);\n\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.destroyed) return;\n\n this.#disconnect = new AbortController();\n\n this.#core.state.subscribe(() => this.requestUpdate(), {\n signal: this.#disconnect.signal,\n });\n\n if (__DEV__ && !this.#state.value) {\n logMissingFeature(this.localName, this.#state.displayName!);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.#core.setProps(this);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.#state.value;\n if (!media) return;\n\n this.#core.update(media);\n applyStateDataAttrs(this, this.#core.state.current, BufferingIndicatorDataAttrs);\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,4BAAb,cAA+C,UAAU;;;EAO/C,KAAA,QAAA,uBAAuB,aAAa;EAE3B,KAAA,QAAA,IAAI,uBAAuB;EAC1B,KAAA,SAAA,IAAI,iBAAiB,MAAM,eAAe,cAAc;EAEpC,KAAA,cAAA;;;EAXZ,KAAA,UAAA;;;EAEG,KAAA,aAAA,EAC3B,OAAO,EAAE,MAAM,OAAO,EACxB;;CAIA;CACA;CAEA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EAExB,IAAI,KAAK,WAAW;EAEpB,KAAKE,cAAc,IAAI,gBAAgB;EAEvC,KAAKF,MAAM,MAAM,gBAAgB,KAAK,cAAc,GAAG,EACrD,QAAQ,KAAKE,YAAY,OAC3B,CAAC;CAKH;CAEA,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,KAAKA,aAAa,MAAM;EACxB,KAAKA,cAAc;CACrB;CAEA,WAA8B,SAA+B;EAC3D,MAAM,WAAW,OAAO;EACxB,KAAKF,MAAM,SAAS,IAAI;CAC1B;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EAEpB,MAAM,QAAQ,KAAKC,OAAO;EAC1B,IAAI,CAAC,OAAO;EAEZ,KAAKD,MAAM,OAAO,KAAK;EACvB,oBAAoB,MAAM,KAAKA,MAAM,MAAM,SAAS,2BAA2B;CACjF;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"element.js","names":["#defaultCommandfor","#syncCommandFor"],"sources":["../../../../src/ui/captions-button/element.ts"],"sourcesContent":["import { CaptionsButtonCore, CaptionsButtonDataAttrs } from '@videojs/core';\nimport { applyElementProps, selectTextTrack, type UIEvent } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport type { MediaTextTrackState } from '@videojs/media';\nimport { isCaptionOrSubtitleTrack } from '@videojs/utils/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { toggleCommandTarget } from '../command-for';\nimport { MediaButtonElement } from '../media-button-element';\n\nfunction getCaptionTrackCount(state: MediaTextTrackState): number {\n return state.textTrackList.filter(isCaptionOrSubtitleTrack).length;\n}\n\nexport class CaptionsButtonElement extends MediaButtonElement<CaptionsButtonCore> {\n static readonly tagName = 'media-captions-button';\n\n static override properties = {\n label: { type: String },\n disabled: { type: Boolean },\n commandfor: { type: String },\n menuFor: { type: String, attribute: 'menu-for' },\n } satisfies PropertyDeclarationMap<'label' | 'disabled' | 'commandfor' | 'menuFor'>;\n\n commandfor: string | undefined = undefined;\n menuFor: string | undefined = undefined;\n #defaultCommandfor: string | undefined = undefined;\n\n protected readonly core = new CaptionsButtonCore();\n protected readonly stateAttrMap = CaptionsButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectTextTrack);\n protected override readonly hotkeyAction = 'toggleSubtitles';\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.commandfor && this.commandfor !== this.menuFor) {\n this.#defaultCommandfor = this.commandfor;\n }\n }\n\n protected activate(state: MediaTextTrackState, event?: UIEvent): void {\n if (this.menuFor && getCaptionTrackCount(state) > 1) {\n if (event instanceof KeyboardEvent) {\n toggleCommandTarget(this, this.menuFor);\n }\n\n return;\n }\n\n this.core.toggle(state);\n }\n\n protected override getIsButtonDisabled(): boolean {\n const media = this.mediaState.value;\n\n if (super.getIsButtonDisabled()) return true;\n\n if (media && getCaptionTrackCount(media) === 0) return true;\n\n return false;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n\n if (changed.has('commandfor') && this.commandfor !== this.menuFor) {\n this.#defaultCommandfor = this.commandfor;\n }\n\n if (changed.has('commandfor') || changed.has('menuFor')) {\n this.#syncCommandFor();\n }\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.mediaState.value;\n if (!media) return;\n\n this.#syncCommandFor(media);\n\n if (this.menuFor && getCaptionTrackCount(media) > 1) {\n applyElementProps(this, {\n 'aria-disabled': this.getIsButtonDisabled() ? 'true' : undefined,\n });\n }\n }\n\n #syncCommandFor(media?: MediaTextTrackState): void {\n const state = media ?? this.mediaState.value;\n const target = state && this.menuFor && getCaptionTrackCount(state) > 1 ? this.menuFor : this.#defaultCommandfor;\n\n if (target) {\n this.setAttribute('commandfor', target);\n } else {\n this.removeAttribute('commandfor');\n }\n }\n}\n\nexport namespace CaptionsButtonElement {\n export type State = CaptionsButtonCore.State;\n}\n"],"mappings":";;;;;;;;AAWA,SAAS,qBAAqB,OAAoC;CAChE,OAAO,MAAM,cAAc,OAAO,wBAAwB,CAAC,CAAC;AAC9D;AAEA,IAAa,wBAAb,cAA2C,mBAAuC;;;EAU/C,KAAA,aAAA,KAAA;EACH,KAAA,UAAA,KAAA;EACW,KAAA,qBAAA,KAAA;EAEf,KAAA,OAAA,IAAI,mBAAmB;EACf,KAAA,eAAA;EACF,KAAA,aAAA,IAAI,iBAAiB,MAAM,eAAe,eAAe;EAC9C,KAAA,eAAA;;;EAhBjB,KAAA,UAAA;;;EAEG,KAAA,aAAA;GAC3B,OAAO,EAAE,MAAM,OAAO;GACtB,UAAU,EAAE,MAAM,QAAQ;GAC1B,YAAY,EAAE,MAAM,OAAO;GAC3B,SAAS;IAAE,MAAM;IAAQ,WAAW;GAAW;EACjD;;CAIA;CAOA,oBAAmC;EACjC,MAAM,kBAAkB;EAExB,IAAI,KAAK,cAAc,KAAK,eAAe,KAAK,SAC9C,KAAKA,qBAAqB,KAAK;CAEnC;CAEA,SAAmB,OAA4B,OAAuB;EACpE,IAAI,KAAK,WAAW,qBAAqB,KAAK,IAAI,GAAG;GACnD,IAAI,iBAAiB,eACnB,oBAAoB,MAAM,KAAK,OAAO;GAGxC;EACF;EAEA,KAAK,KAAK,OAAO,KAAK;CACxB;CAEA,sBAAkD;EAChD,MAAM,QAAQ,KAAK,WAAW;EAE9B,IAAI,MAAM,oBAAoB,GAAG,OAAO;EAExC,IAAI,SAAS,qBAAqB,KAAK,MAAM,GAAG,OAAO;EAEvD,OAAO;CACT;CAEA,WAA8B,SAA+B;EAC3D,MAAM,WAAW,OAAO;EAExB,IAAI,QAAQ,IAAI,YAAY,KAAK,KAAK,eAAe,KAAK,SACxD,KAAKA,qBAAqB,KAAK;EAGjC,IAAI,QAAQ,IAAI,YAAY,KAAK,QAAQ,IAAI,SAAS,GACpD,KAAKC,gBAAgB;CAEzB;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EAEpB,MAAM,QAAQ,KAAK,WAAW;EAC9B,IAAI,CAAC,OAAO;EAEZ,KAAKA,gBAAgB,KAAK;EAE1B,IAAI,KAAK,WAAW,qBAAqB,KAAK,IAAI,GAChD,kBAAkB,MAAM,EACtB,iBAAiB,KAAK,oBAAoB,IAAI,SAAS,KAAA,EACzD,CAAC;CAEL;CAEA,gBAAgB,OAAmC;EACjD,MAAM,QAAQ,SAAS,KAAK,WAAW;EACvC,MAAM,SAAS,SAAS,KAAK,WAAW,qBAAqB,KAAK,IAAI,IAAI,KAAK,UAAU,KAAKD;EAE9F,IAAI,QACF,KAAK,aAAa,cAAc,MAAM;OAEtC,KAAK,gBAAgB,YAAY;CAErC;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"element.js","names":["#mediaState","#core","#i18n","#options"],"sources":["../../../../src/ui/captions-radio-group/element.ts"],"sourcesContent":["import { CaptionsRadioGroupCore, CaptionsRadioGroupDataAttrs, type CaptionsRadioGroupOption } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectTextTrack } from '@videojs/core/dom';\nimport { type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { MenuRadioGroupElement } from '../menu/radio-group';\nimport { RadioOptionsController } from '../radio-options/controller';\n\nexport class CaptionsRadioGroupElement extends MenuRadioGroupElement {\n static override readonly tagName = 'media-captions-radio-group';\n\n static override properties = {\n ...MenuRadioGroupElement.properties,\n disabled: { type: Boolean },\n label: { type: String },\n } satisfies PropertyDeclarationMap<'value' | 'label' | 'disabled'>;\n\n disabled = false;\n label: Text | string = '';\n formatTrack = CaptionsRadioGroupCore.defaultProps.formatTrack;\n\n readonly #core = new CaptionsRadioGroupCore();\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #mediaState = new PlayerController(this, playerContext, selectTextTrack);\n readonly #options = new RadioOptionsController<CaptionsRadioGroupOption>(this, {\n setItemAttributes: (item, option) => item.setAttribute('data-track', option.value),\n onValueChange: (value) => {\n const media = this.#mediaState.value;\n\n if (media) this.#core.selectValue(media, value);\n },\n });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.destroyed) return;\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n const media = this.#mediaState.value;\n let state: CaptionsRadioGroupCore.State | null = null;\n\n if (media) {\n this.#core.setProps({ formatTrack: this.formatTrack, disabled: this.disabled, label: this.label });\n this.#core.setMedia(media);\n state = this.#core.getState();\n\n this.applyDefaultAriaLabel(translateText(this.#core.getLabel(state), this.#i18n.value));\n this.#options.sync(state, this.#i18n.value, this.#i18n.locale);\n this.publishMenuOptionState(state.disabled, state.hidden, state.availability);\n } else {\n this.publishMenuOptionState(true, true, 'unsupported');\n }\n\n super.update(changed);\n\n if (state) applyStateDataAttrs(this, state, CaptionsRadioGroupDataAttrs);\n }\n}\n\nexport namespace CaptionsRadioGroupElement {\n export type State = CaptionsRadioGroupCore.State;\n}\n"],"mappings":";;;;;;;;;;AAYA,IAAa,4BAAb,cAA+C,sBAAsB;;;EASxD,KAAA,WAAA;EACY,KAAA,QAAA;EACT,KAAA,cAAA,uBAAuB,aAAa;EAEjC,KAAA,QAAA,IAAI,uBAAuB;EAC3B,KAAA,QAAA,IAAI,eAAe,MAAM,WAAW;EAC9B,KAAA,cAAA,IAAI,iBAAiB,MAAM,eAAe,eAAe;EAC5D,KAAA,WAAA,IAAI,uBAAiD,MAAM;GAC7E,oBAAoB,MAAM,WAAW,KAAK,aAAa,cAAc,OAAO,KAAK;GACjF,gBAAgB,UAAU;IACxB,MAAM,QAAQ,KAAKA,YAAY;IAE/B,IAAI,OAAO,KAAKC,MAAM,YAAY,OAAO,KAAK;GAChD;EACF,CAAC;;;EAtBkC,KAAA,UAAA;;;EAEN,KAAA,aAAA;GAC3B,GAAG,sBAAsB;GACzB,UAAU,EAAE,MAAM,QAAQ;GAC1B,OAAO,EAAE,MAAM,OAAO;EACxB;;CAMA;CACA;CACA;CACA;CASA,oBAAmC;EACjC,MAAM,kBAAkB;EAExB,IAAI,KAAK,WAAW;CAKtB;CAEA,OAA0B,SAA+B;EACvD,MAAM,QAAQ,KAAKD,YAAY;EAC/B,IAAI,QAA6C;EAEjD,IAAI,OAAO;GACT,KAAKC,MAAM,SAAS;IAAE,aAAa,KAAK;IAAa,UAAU,KAAK;IAAU,OAAO,KAAK;GAAM,CAAC;GACjG,KAAKA,MAAM,SAAS,KAAK;GACzB,QAAQ,KAAKA,MAAM,SAAS;GAE5B,KAAK,sBAAsB,cAAc,KAAKA,MAAM,SAAS,KAAK,GAAG,KAAKC,MAAM,KAAK,CAAC;GACtF,KAAKC,SAAS,KAAK,OAAO,KAAKD,MAAM,OAAO,KAAKA,MAAM,MAAM;GAC7D,KAAK,uBAAuB,MAAM,UAAU,MAAM,QAAQ,MAAM,YAAY;EAC9E,OACE,KAAK,uBAAuB,MAAM,MAAM,aAAa;EAGvD,MAAM,OAAO,OAAO;EAEpB,IAAI,OAAO,oBAAoB,MAAM,OAAO,2BAA2B;CACzE;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"element.js","names":[],"sources":["../../../../src/ui/cast-button/element.ts"],"sourcesContent":["import { CastButtonCore, CastButtonDataAttrs } from '@videojs/core';\nimport { selectRemotePlayback } from '@videojs/core/dom';\nimport type { MediaRemotePlaybackState } from '@videojs/media';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class CastButtonElement extends MediaButtonElement<CastButtonCore> {\n static readonly tagName = 'media-cast-button';\n\n protected readonly core = new CastButtonCore();\n protected readonly stateAttrMap = CastButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectRemotePlayback);\n\n protected activate(state: MediaRemotePlaybackState): Promise<void> {\n return this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,oBAAb,cAAuC,mBAAmC;;;EAG9C,KAAA,OAAA,IAAI,eAAe;EACX,KAAA,eAAA;EACF,KAAA,aAAA,IAAI,iBAAiB,MAAM,eAAe,oBAAoB;;;EAJpE,KAAA,UAAA;;CAM1B,SAAmB,OAAgD;EACjE,OAAO,KAAK,KAAK,OAAO,KAAK;CAC/B;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-for.js","names":[],"sources":["../../../src/ui/command-for.ts"],"sourcesContent":["/** Toggle a popup host linked via `commandfor` (menu, popover, etc.). */\nexport function toggleCommandTarget(host: HTMLElement, commandfor: string): void {\n const root = host.getRootNode() as Document | ShadowRoot;\n const target =\n ('getElementById' in root ? root.getElementById(commandfor) : null) ??\n root.querySelector<HTMLElement>(`#${CSS.escape(commandfor)}`);\n if (!target || !('open' in target)) return;\n\n const popup = target as { open: boolean };\n\n popup.open = !popup.open;\n}\n"],"mappings":";;AACA,SAAgB,oBAAoB,MAAmB,YAA0B;CAC/E,MAAM,OAAO,KAAK,YAAY;CAC9B,MAAM,UACH,oBAAoB,OAAO,KAAK,eAAe,UAAU,IAAI,SAC9D,KAAK,cAA2B,IAAI,IAAI,OAAO,UAAU,GAAG;CAC9D,IAAI,CAAC,UAAU,EAAE,UAAU,SAAS;CAEpC,MAAM,QAAQ;CAEd,MAAM,OAAO,CAAC,MAAM;AACtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"element.js","names":["#core","#controls","#i18n","#popupGroup","#popupGroupProvider","#container","#register","#applyLabel","#disconnect","#onPointerUp","#releaseContainer","#label"],"sources":["../../../../src/ui/container/element.ts"],"sourcesContent":["import { ContainerCore, ContainerDataAttrs } from '@videojs/core';\nimport {\n applyContainerAttrs,\n applyStateDataAttrs,\n createPopupGroup,\n focusContainer,\n type MediaContainer,\n selectControls,\n} from '@videojs/core/dom';\nimport { labelText } from '@videojs/core/i18n/text/container';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextConsumer, ContextProvider } from '@videojs/element/context';\nimport { listen } from '@videojs/utils/dom';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { type ContainerContextValue, containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { popupGroupContext } from '../../player/popup-group-context';\nimport { UIElement } from '../ui-element';\n\n/**\n * The visual, interactive player boundary.\n *\n * A container registers itself with its closest player and provides popup coordination to the controls it contains.\n */\nexport class ContainerElement extends UIElement implements MediaContainer {\n static readonly tagName = 'media-container';\n\n #releaseContainer: (() => void) | null = null;\n #disconnect: AbortController | null = null;\n #label: string | null = null;\n\n readonly #core = new ContainerCore();\n readonly #controls = new PlayerController(this, playerContext, selectControls);\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #popupGroup = createPopupGroup();\n readonly #popupGroupProvider = new ContextProvider(this, {\n context: popupGroupContext,\n initialValue: this.#popupGroup,\n });\n readonly #container = new ContextConsumer(this, {\n context: containerContext,\n callback: (value) => this.#register(value),\n });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.#popupGroupProvider.setValue(this.#popupGroup);\n this.#register(this.#container.value);\n applyContainerAttrs(this);\n this.#applyLabel();\n\n this.#disconnect = new AbortController();\n listen(this, 'pointerup', this.#onPointerUp, { signal: this.#disconnect.signal });\n }\n\n override disconnectedCallback(): void {\n this.#releaseContainer?.();\n this.#releaseContainer = null;\n this.#disconnect?.abort();\n this.#disconnect = null;\n super.disconnectedCallback();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n this.#applyLabel();\n\n const controls = this.#controls.value;\n\n if (controls) {\n this.#core.setMedia(controls);\n applyStateDataAttrs(this, this.#core.getState(), ContainerDataAttrs);\n } else {\n this.removeAttribute(ContainerDataAttrs.controlsVisible);\n }\n }\n\n #register(value: ContainerContextValue | undefined): void {\n this.#releaseContainer?.();\n this.#releaseContainer = null;\n\n if (this.isConnected && value) {\n this.#releaseContainer = value.registerContainer(this);\n }\n }\n\n #applyLabel(): void {\n const current = this.getAttribute('aria-label');\n if (current && current !== this.#label) return;\n\n if (this.hasAttribute('aria-labelledby')) {\n if (current === this.#label) {\n this.removeAttribute('aria-label');\n this.#label = null;\n }\n\n return;\n }\n\n const label = this.#i18n.value(labelText);\n\n this.setAttribute('aria-label', label);\n this.#label = label;\n }\n\n #onPointerUp = (): void => {\n focusContainer(this);\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AA0BA,IAAa,mBAAb,cAAsC,UAAoC;;EAC9C,KAAA,UAAA;;CAE1B,oBAAyC;CACzC,cAAsC;CACtC,SAAwB;CAExB,QAAiB,IAAI,cAAc;CACnC,YAAqB,IAAI,iBAAiB,MAAM,eAAe,cAAc;CAC7E,QAAiB,IAAI,eAAe,MAAM,WAAW;CACrD,cAAuB,iBAAiB;CACxC,sBAA+B,IAAI,gBAAgB,MAAM;EACvD,SAAS;EACT,cAAc,KAAKG;CACrB,CAAC;CACD,aAAsB,IAAI,gBAAgB,MAAM;EAC9C,SAAS;EACT,WAAW,UAAU,KAAKG,UAAU,KAAK;CAC3C,CAAC;CAED,oBAAmC;EACjC,MAAM,kBAAkB;EAExB,KAAKF,oBAAoB,SAAS,KAAKD,WAAW;EAClD,KAAKG,UAAU,KAAKD,WAAW,KAAK;EACpC,oBAAoB,IAAI;EACxB,KAAKE,YAAY;EAEjB,KAAKC,cAAc,IAAI,gBAAgB;EACvC,OAAO,MAAM,aAAa,KAAKC,cAAc,EAAE,QAAQ,KAAKD,YAAY,OAAO,CAAC;CAClF;CAEA,uBAAsC;EACpC,KAAKE,oBAAoB;EACzB,KAAKA,oBAAoB;EACzB,KAAKF,aAAa,MAAM;EACxB,KAAKA,cAAc;EACnB,MAAM,qBAAqB;CAC7B;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EACpB,KAAKD,YAAY;EAEjB,MAAM,WAAW,KAAKN,UAAU;EAEhC,IAAI,UAAU;GACZ,KAAKD,MAAM,SAAS,QAAQ;GAC5B,oBAAoB,MAAM,KAAKA,MAAM,SAAS,GAAG,kBAAkB;EACrE,OACE,KAAK,gBAAgB,mBAAmB,eAAe;CAE3D;CAEA,UAAU,OAAgD;EACxD,KAAKU,oBAAoB;EACzB,KAAKA,oBAAoB;EAEzB,IAAI,KAAK,eAAe,OACtB,KAAKA,oBAAoB,MAAM,kBAAkB,IAAI;CAEzD;CAEA,cAAoB;EAClB,MAAM,UAAU,KAAK,aAAa,YAAY;EAC9C,IAAI,WAAW,YAAY,KAAKC,QAAQ;EAExC,IAAI,KAAK,aAAa,iBAAiB,GAAG;GACxC,IAAI,YAAY,KAAKA,QAAQ;IAC3B,KAAK,gBAAgB,YAAY;IACjC,KAAKA,SAAS;GAChB;GAEA;EACF;EAEA,MAAM,QAAQ,KAAKT,MAAM,MAAM,SAAS;EAExC,KAAK,aAAa,cAAc,KAAK;EACrC,KAAKS,SAAS;CAChB;CAEA,qBAA2B;EACzB,eAAe,IAAI;CACrB;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-part-element.js","names":["#applyState"],"sources":["../../../src/ui/context-part-element.ts"],"sourcesContent":["import type { StateAttrMap } from '@videojs/core';\nimport { applyStateDataAttrs } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\n\nimport { UIElement } from './ui-element';\n\n/** Shape that compound context values must satisfy for parts to consume. */\nexport interface PartContextValue<State extends object> {\n state: State;\n stateAttrMap: StateAttrMap<State>;\n}\n\n/**\n * Abstract base for compound-component part elements that consume a parent context and apply data attributes from\n * `ctx.state` + `ctx.stateAttrMap`.\n *\n * Subclasses only need to declare the `consumer` property:\n *\n * ```ts\n * export class SliderTrackElement extends ContextPartElement<SliderState> {\n * static readonly tagName = 'media-slider-track';\n * protected readonly consumer = new ContextConsumer(this, { context: sliderContext, subscribe: true });\n * }\n * ```\n */\nexport abstract class ContextPartElement<State extends object> extends UIElement {\n protected abstract readonly consumer: { value?: PartContextValue<State> | undefined };\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#applyState();\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n this.#applyState();\n }\n\n #applyState(): void {\n const ctx = this.consumer.value;\n\n if (ctx) applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAyBA,IAAsB,qBAAtB,cAAuE,UAAU;CAG/E,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAKA,YAAY;CACnB;CAEA,OAA0B,UAAgC;EACxD,MAAM,OAAO,QAAQ;EACrB,KAAKA,YAAY;CACnB;CAEA,cAAoB;EAClB,MAAM,MAAM,KAAK,SAAS;EAE1B,IAAI,KAAK,oBAAoB,MAAM,IAAI,OAAO,IAAI,YAAY;CAChE;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"backdrop.js","names":[],"sources":["../../../../src/ui/controls/backdrop.ts"],"sourcesContent":["import type { ControlsState } from '@videojs/core';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { controlsContext } from './context';\n\n/** Presentational backdrop that reflects its owning controls surface's state. */\nexport class ControlsBackdropElement extends ContextPartElement<ControlsState> {\n static readonly tagName = 'media-controls-backdrop';\n\n protected readonly consumer = new ContextConsumer(this, { context: controlsContext, subscribe: true });\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'presentation');\n this.setAttribute('aria-hidden', 'true');\n }\n}\n"],"mappings":";;;;;AAOA,IAAa,0BAAb,cAA6C,mBAAkC;;;EAG/C,KAAA,WAAA,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAiB,WAAW;EAAK,CAAC;;;EAF3E,KAAA,UAAA;;CAI1B,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAK,aAAa,QAAQ,cAAc;EACxC,KAAK,aAAa,eAAe,MAAM;CACzC;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"content.js","names":[],"sources":["../../../../src/ui/controls/content.ts"],"sourcesContent":["import type { ControlsState } from '@videojs/core';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { controlsContext } from './context';\n\n/** Interactive surface that reflects its owning controls state. */\nexport class ControlsContentElement extends ContextPartElement<ControlsState> {\n static readonly tagName = 'media-controls-content';\n\n protected readonly consumer = new ContextConsumer(this, { context: controlsContext, subscribe: true });\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('data-interactive', '');\n }\n}\n"],"mappings":";;;;;AAOA,IAAa,yBAAb,cAA4C,mBAAkC;;;EAG9C,KAAA,WAAA,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAiB,WAAW;EAAK,CAAC;;;EAF3E,KAAA,UAAA;;CAI1B,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAK,aAAa,oBAAoB,EAAE;CAC1C;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/controls/context.ts"],"sourcesContent":["import type { ControlsState, StateAttrMap } from '@videojs/core';\nimport { createContext } from '@videojs/element/context';\n\nexport interface ControlsContextValue {\n state: ControlsState;\n stateAttrMap: StateAttrMap<ControlsState>;\n}\n\nconst CONTROLS_CONTEXT_KEY = Symbol('@videojs/controls');\n\nexport const controlsContext = createContext<ControlsContextValue>(CONTROLS_CONTEXT_KEY);\n"],"mappings":";AAUA,MAAa,kBAAkB,cAFF,OAAO,mBAE+B,CAAoB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"element.js","names":["#core","#mediaState","#provider","#visible","#closeOwnedOverlays"],"sources":["../../../../src/ui/controls/element.ts"],"sourcesContent":["import { ControlsCore, ControlsDataAttrs, type ControlsVisibility, POPUP_HOST_SELECTOR } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectControls } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport { isFunction } from '@videojs/utils/predicate';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { UIElement } from '../ui-element';\nimport { controlsContext } from './context';\n\nexport class ControlsElement extends UIElement {\n static readonly tagName = 'media-controls';\n\n static override properties = {\n visibility: { type: String },\n } satisfies PropertyDeclarationMap<'visibility'>;\n\n visibility: ControlsVisibility = ControlsCore.defaultProps.visibility;\n\n readonly #core = new ControlsCore();\n readonly #mediaState = new PlayerController(this, playerContext, selectControls);\n readonly #provider = new ContextProvider(this, { context: controlsContext });\n #visible = true;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && this.visibility === 'auto' && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n this.#core.setProps({ visibility: this.visibility });\n this.#core.setMedia(this.#mediaState.value ?? null);\n\n const state = this.#core.getState();\n if (!state) return;\n\n applyStateDataAttrs(this, state, ControlsDataAttrs);\n\n this.#provider.setValue({\n state,\n stateAttrMap: ControlsDataAttrs,\n });\n\n const wasVisible = this.#visible;\n\n this.#visible = state.visible;\n\n if (wasVisible && !state.visible) {\n this.#closeOwnedOverlays();\n }\n }\n\n #closeOwnedOverlays(): void {\n for (const element of this.querySelectorAll(POPUP_HOST_SELECTOR)) {\n const host = element as Element & { close?: unknown };\n if (!isFunction(host.close)) continue;\n\n host.close('imperative-action');\n }\n }\n}\n"],"mappings":";;;;;;;;;AAWA,IAAa,kBAAb,cAAqC,UAAU;;;EAOZ,KAAA,aAAA,aAAa,aAAa;EAE1C,KAAA,QAAA,IAAI,aAAa;EACX,KAAA,cAAA,IAAI,iBAAiB,MAAM,eAAe,cAAc;EAC1D,KAAA,YAAA,IAAI,gBAAgB,MAAM,EAAE,SAAS,gBAAgB,CAAC;EAChE,KAAA,WAAA;;;EAXe,KAAA,UAAA;;;EAEG,KAAA,aAAA,EAC3B,YAAY,EAAE,MAAM,OAAO,EAC7B;;CAIA;CACA;CACA;CACA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;CAK1B;CAEA,OAA0B,UAAgC;EACxD,MAAM,OAAO,QAAQ;EAErB,KAAKA,MAAM,SAAS,EAAE,YAAY,KAAK,WAAW,CAAC;EACnD,KAAKA,MAAM,SAAS,KAAKC,YAAY,SAAS,IAAI;EAElD,MAAM,QAAQ,KAAKD,MAAM,SAAS;EAClC,IAAI,CAAC,OAAO;EAEZ,oBAAoB,MAAM,OAAO,iBAAiB;EAElD,KAAKE,UAAU,SAAS;GACtB;GACA,cAAc;EAChB,CAAC;EAED,MAAM,aAAa,KAAKC;EAExB,KAAKA,WAAW,MAAM;EAEtB,IAAI,cAAc,CAAC,MAAM,SACvB,KAAKC,oBAAoB;CAE7B;CAEA,sBAA4B;EAC1B,KAAK,MAAM,WAAW,KAAK,iBAAiB,mBAAmB,GAAG;GAChE,MAAM,OAAO;GACb,IAAI,CAAC,WAAW,KAAK,KAAK,GAAG;GAE7B,KAAK,MAAM,mBAAmB;EAChC;CACF;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"group.js","names":[],"sources":["../../../../src/ui/controls/group.ts"],"sourcesContent":["import type { ControlsState } from '@videojs/core';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { controlsContext } from './context';\n\nexport class ControlsGroupElement extends ContextPartElement<ControlsState> {\n static readonly tagName = 'media-controls-group';\n\n protected readonly consumer = new ContextConsumer(this, { context: controlsContext, subscribe: true });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.hasAttribute('aria-label') || this.hasAttribute('aria-labelledby')) {\n this.setAttribute('role', 'group');\n }\n }\n}\n"],"mappings":";;;;AAMA,IAAa,uBAAb,cAA0C,mBAAkC;;;EAG5C,KAAA,WAAA,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAiB,WAAW;EAAK,CAAC;;;EAF3E,KAAA,UAAA;;CAI1B,oBAAmC;EACjC,MAAM,kBAAkB;EAExB,IAAI,KAAK,aAAa,YAAY,KAAK,KAAK,aAAa,iBAAiB,GACxE,KAAK,aAAa,QAAQ,OAAO;CAErC;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"backdrop.js","names":[],"sources":["../../../../src/ui/dialog/backdrop.ts"],"sourcesContent":["import type { DialogState } from '@videojs/core';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { dialogContext } from './context';\n\n/** Presentational backdrop that reflects its owning dialog's state. */\nexport class DialogBackdropElement extends ContextPartElement<DialogState> {\n static readonly tagName = 'media-dialog-backdrop';\n\n protected readonly consumer = new ContextConsumer(this, { context: dialogContext, subscribe: true });\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'presentation');\n this.setAttribute('aria-hidden', 'true');\n }\n}\n"],"mappings":";;;;;AAOA,IAAa,wBAAb,cAA2C,mBAAgC;;;EAG3C,KAAA,WAAA,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAe,WAAW;EAAK,CAAC;;;EAFzE,KAAA,UAAA;;CAI1B,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAK,aAAa,QAAQ,cAAc;EACxC,KAAK,aAAa,eAAe,MAAM;CACzC;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"close.js","names":["#ctx","#disconnect"],"sources":["../../../../src/ui/dialog/close.ts"],"sourcesContent":["import { applyElementProps, applyStateDataAttrs, createButton } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { UIElement } from '../ui-element';\nimport { dialogContext } from './context';\n\nexport class DialogCloseElement extends UIElement {\n static readonly tagName: string = 'media-dialog-close';\n\n static override properties = {\n disabled: { type: Boolean },\n } satisfies PropertyDeclarationMap<'disabled'>;\n\n disabled = false;\n\n readonly #ctx = new ContextConsumer(this, { context: dialogContext, subscribe: true });\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#disconnect = new AbortController();\n\n const buttonProps = createButton({\n onActivate: () => this.#ctx.value?.close(),\n isDisabled: () => this.disabled,\n });\n\n applyElementProps(this, buttonProps, { signal: this.#disconnect.signal });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n const ctx = this.#ctx.value;\n\n if (ctx) applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);\n }\n}\n"],"mappings":";;;;;AAOA,IAAa,qBAAb,cAAwC,UAAU;;;EAOrC,KAAA,WAAA;EAEK,KAAA,OAAA,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAe,WAAW;EAAK,CAAC;EAC/C,KAAA,cAAA;;;EATJ,KAAA,UAAA;;;EAEL,KAAA,aAAA,EAC3B,UAAU,EAAE,MAAM,QAAQ,EAC5B;;CAIA;CACA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAKC,cAAc,IAAI,gBAAgB;EAEvC,MAAM,cAAc,aAAa;GAC/B,kBAAkB,KAAKD,KAAK,OAAO,MAAM;GACzC,kBAAkB,KAAK;EACzB,CAAC;EAED,kBAAkB,MAAM,aAAa,EAAE,QAAQ,KAAKC,YAAY,OAAO,CAAC;CAC1E;CAEA,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,KAAKA,aAAa,MAAM;EACxB,KAAKA,cAAc;CACrB;CAEA,OAA0B,UAAgC;EACxD,MAAM,OAAO,QAAQ;EACrB,MAAM,MAAM,KAAKD,KAAK;EAEtB,IAAI,KAAK,oBAAoB,MAAM,IAAI,OAAO,IAAI,YAAY;CAChE;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/dialog/context.ts"],"sourcesContent":["import type { DialogCore, DialogState, StateAttrMap } from '@videojs/core';\nimport type { DialogApi } from '@videojs/core/dom';\nimport { createContext } from '@videojs/element/context';\n\nexport interface DialogContextValue {\n state: DialogState;\n stateAttrMap: StateAttrMap<DialogState>;\n dialog: DialogApi;\n popupId: string;\n popupAttrs: ReturnType<DialogCore['getPopupAttrs']>;\n close: () => void;\n}\n\nconst DIALOG_CONTEXT_KEY = Symbol('@videojs/dialog');\n\nexport const dialogContext = createContext<DialogContextValue>(DIALOG_CONTEXT_KEY);\n"],"mappings":";AAeA,MAAa,gBAAgB,cAFF,OAAO,iBAE6B,CAAkB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"description.js","names":[],"sources":["../../../../src/ui/dialog/description.ts"],"sourcesContent":["import type { DialogState } from '@videojs/core';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { dialogContext } from './context';\n\nexport class DialogDescriptionElement extends ContextPartElement<DialogState> {\n static readonly tagName: string = 'media-dialog-description';\n\n protected readonly consumer = new ContextConsumer(this, { context: dialogContext, subscribe: true });\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n const descriptionId = this.consumer.value?.state.descriptionId;\n\n if (descriptionId) this.id = descriptionId;\n }\n}\n"],"mappings":";;;;AAOA,IAAa,2BAAb,cAA8C,mBAAgC;;;EAG9C,KAAA,WAAA,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAe,WAAW;EAAK,CAAC;;;EAFjE,KAAA,UAAA;;CAIlC,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EACpB,MAAM,gBAAgB,KAAK,SAAS,OAAO,MAAM;EAEjD,IAAI,eAAe,KAAK,KAAK;CAC/B;AACF"}