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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (972) hide show
  1. package/cdn/abort-C9UiBdVU.js +2 -0
  2. package/cdn/abort-C9UiBdVU.js.map +1 -0
  3. package/cdn/abort-DsTff8mS.js +22 -0
  4. package/cdn/abort-DsTff8mS.js.map +1 -0
  5. package/cdn/audio-minimal-ui.dev.d.ts +1 -0
  6. package/cdn/audio-minimal-ui.dev.js +4 -0
  7. package/cdn/audio-minimal-ui.js +1 -0
  8. package/cdn/audio-minimal.dev.d.ts +1 -0
  9. package/cdn/audio-minimal.dev.js +93 -5331
  10. package/cdn/audio-minimal.dev.js.map +1 -1
  11. package/cdn/audio-minimal.js +1 -24
  12. package/cdn/audio-minimal.js.map +1 -1
  13. package/cdn/audio-ui.dev.d.ts +1 -0
  14. package/cdn/audio-ui.dev.js +4 -0
  15. package/cdn/audio-ui.js +1 -0
  16. package/cdn/audio.dev.d.ts +1 -0
  17. package/cdn/audio.dev.js +107 -5325
  18. package/cdn/audio.dev.js.map +1 -1
  19. package/cdn/audio.js +1 -24
  20. package/cdn/audio.js.map +1 -1
  21. package/cdn/background.dev.d.ts +1 -0
  22. package/cdn/background.dev.js +105 -2017
  23. package/cdn/background.dev.js.map +1 -1
  24. package/cdn/background.js +1 -18
  25. package/cdn/background.js.map +1 -1
  26. package/cdn/compounds-CM_NP-ej.js +4154 -0
  27. package/cdn/compounds-CM_NP-ej.js.map +1 -0
  28. package/cdn/compounds-Vvz-YfXP.js +8 -0
  29. package/cdn/compounds-Vvz-YfXP.js.map +1 -0
  30. package/cdn/context-0rI_P6jf.js +107 -0
  31. package/cdn/context-0rI_P6jf.js.map +1 -0
  32. package/cdn/context-CEFisYD0.js +14 -0
  33. package/cdn/context-CEFisYD0.js.map +1 -0
  34. package/cdn/create-player-Bi6WUwDZ.js +2182 -0
  35. package/cdn/create-player-Bi6WUwDZ.js.map +1 -0
  36. package/cdn/create-player-CKuX8YI5.js +7 -0
  37. package/cdn/create-player-CKuX8YI5.js.map +1 -0
  38. package/cdn/default-C8KsZ0zK.js +2 -0
  39. package/cdn/default-C8KsZ0zK.js.map +1 -0
  40. package/cdn/default-XHZAb7gP.js +28 -0
  41. package/cdn/default-XHZAb7gP.js.map +1 -0
  42. package/cdn/hls-BotloEPN.js +28632 -0
  43. package/cdn/hls-BotloEPN.js.map +1 -0
  44. package/cdn/hls-CBpGTZXU.js +41 -0
  45. package/cdn/hls-CBpGTZXU.js.map +1 -0
  46. package/cdn/hotkey-element-317kwVH5.js +369 -0
  47. package/cdn/hotkey-element-317kwVH5.js.map +1 -0
  48. package/cdn/hotkey-element-DRGCbVj9.js +2 -0
  49. package/cdn/hotkey-element-DRGCbVj9.js.map +1 -0
  50. package/cdn/listen-CJT7C4kM.js +9 -0
  51. package/cdn/listen-CJT7C4kM.js.map +1 -0
  52. package/cdn/listen-DFX-0NbX.js +2 -0
  53. package/cdn/listen-DFX-0NbX.js.map +1 -0
  54. package/cdn/media/dash-video.dev.d.ts +1 -0
  55. package/cdn/media/dash-video.dev.js +39153 -0
  56. package/cdn/media/dash-video.dev.js.map +1 -0
  57. package/cdn/media/dash-video.js +21 -0
  58. package/cdn/media/dash-video.js.map +1 -0
  59. package/cdn/media/hls-video.dev.d.ts +1 -0
  60. package/cdn/media/hls-video.dev.js +12 -28712
  61. package/cdn/media/hls-video.dev.js.map +1 -1
  62. package/cdn/media/hls-video.js +1 -82
  63. package/cdn/media/hls-video.js.map +1 -1
  64. package/cdn/media/mux-audio.dev.d.ts +1 -0
  65. package/cdn/media/mux-audio.dev.js +29 -0
  66. package/cdn/media/mux-audio.dev.js.map +1 -0
  67. package/cdn/media/mux-audio.js +2 -0
  68. package/cdn/media/mux-audio.js.map +1 -0
  69. package/cdn/media/mux-video.dev.d.ts +1 -0
  70. package/cdn/media/mux-video.dev.js +29 -0
  71. package/cdn/media/mux-video.dev.js.map +1 -0
  72. package/cdn/media/mux-video.js +2 -0
  73. package/cdn/media/mux-video.js.map +1 -0
  74. package/cdn/media/native-hls-video.dev.d.ts +1 -0
  75. package/cdn/media/native-hls-video.dev.js +19 -0
  76. package/cdn/media/native-hls-video.dev.js.map +1 -0
  77. package/cdn/media/native-hls-video.js +2 -0
  78. package/cdn/media/native-hls-video.js.map +1 -0
  79. package/cdn/media/simple-hls-video.dev.d.ts +1 -0
  80. package/cdn/media/simple-hls-video.dev.js +2887 -2605
  81. package/cdn/media/simple-hls-video.dev.js.map +1 -1
  82. package/cdn/media/simple-hls-video.js +58 -43
  83. package/cdn/media/simple-hls-video.js.map +1 -1
  84. package/cdn/media-attach-mixin-C2wz0Qbd.js +2 -0
  85. package/cdn/media-attach-mixin-C2wz0Qbd.js.map +1 -0
  86. package/cdn/media-attach-mixin-CYoNe7Sh.js +67 -0
  87. package/cdn/media-attach-mixin-CYoNe7Sh.js.map +1 -0
  88. package/cdn/minimal-BnDnlwbj.js +28 -0
  89. package/cdn/minimal-BnDnlwbj.js.map +1 -0
  90. package/cdn/minimal-CqBxBoLe.js +2 -0
  91. package/cdn/minimal-CqBxBoLe.js.map +1 -0
  92. package/cdn/minimal-ui-C_G24FML.js +2 -0
  93. package/cdn/minimal-ui-C_G24FML.js.map +1 -0
  94. package/cdn/minimal-ui-CroDYUGf.js +2 -0
  95. package/cdn/minimal-ui-CroDYUGf.js.map +1 -0
  96. package/cdn/minimal-ui-DhxN21v5.js +22 -0
  97. package/cdn/minimal-ui-DhxN21v5.js.map +1 -0
  98. package/cdn/minimal-ui-cy2oEbFm.js +28 -0
  99. package/cdn/minimal-ui-cy2oEbFm.js.map +1 -0
  100. package/cdn/mux-B5K6kOzg.js +3072 -0
  101. package/cdn/mux-B5K6kOzg.js.map +1 -0
  102. package/cdn/mux-DJhfbcCw.js +25 -0
  103. package/cdn/mux-DJhfbcCw.js.map +1 -0
  104. package/cdn/native-hls-CU2F7L5C.js +123 -0
  105. package/cdn/native-hls-CU2F7L5C.js.map +1 -0
  106. package/cdn/native-hls-DKcYYWRt.js +2 -0
  107. package/cdn/native-hls-DKcYYWRt.js.map +1 -0
  108. package/cdn/pick-CERGq1No.js +2 -0
  109. package/cdn/pick-CERGq1No.js.map +1 -0
  110. package/cdn/pick-D-wCJ3iA.js +23 -0
  111. package/cdn/pick-D-wCJ3iA.js.map +1 -0
  112. package/cdn/player-BK35-ndY.js +2 -0
  113. package/cdn/player-BK35-ndY.js.map +1 -0
  114. package/cdn/player-C7ajkBi4.js +2 -0
  115. package/cdn/player-C7ajkBi4.js.map +1 -0
  116. package/cdn/player-CatrGW7l.js +382 -0
  117. package/cdn/player-CatrGW7l.js.map +1 -0
  118. package/cdn/player-xstFHOgW.js +16 -0
  119. package/cdn/player-xstFHOgW.js.map +1 -0
  120. package/cdn/shadow-styles-BYZ6q3Q4.js +3 -0
  121. package/cdn/shadow-styles-BYZ6q3Q4.js.map +1 -0
  122. package/cdn/shadow-styles-DKXFMmyD.js +41 -0
  123. package/cdn/shadow-styles-DKXFMmyD.js.map +1 -0
  124. package/cdn/shallow-equal-Daj3-_LC.js +15 -0
  125. package/cdn/shallow-equal-Daj3-_LC.js.map +1 -0
  126. package/cdn/shallow-equal-xh6Wj-hj.js +2 -0
  127. package/cdn/shallow-equal-xh6Wj-hj.js.map +1 -0
  128. package/cdn/skin-element-BGP23sop.js +2 -0
  129. package/cdn/skin-element-BGP23sop.js.map +1 -0
  130. package/cdn/skin-element-CDUkmCtS.js +55 -0
  131. package/cdn/skin-element-CDUkmCtS.js.map +1 -0
  132. package/cdn/ui-AFHQtrqa.js +25 -0
  133. package/cdn/ui-AFHQtrqa.js.map +1 -0
  134. package/cdn/ui-B7vt9mp-.js +2 -0
  135. package/cdn/ui-B7vt9mp-.js.map +1 -0
  136. package/cdn/ui-Em9rF9Ah.js +31 -0
  137. package/cdn/ui-Em9rF9Ah.js.map +1 -0
  138. package/cdn/ui-QHwo6iyo.js +2 -0
  139. package/cdn/ui-QHwo6iyo.js.map +1 -0
  140. package/cdn/video-host-CPRJVRi3.js +47 -0
  141. package/cdn/video-host-CPRJVRi3.js.map +1 -0
  142. package/cdn/video-host-ycP7ckxU.js +410 -0
  143. package/cdn/video-host-ycP7ckxU.js.map +1 -0
  144. package/cdn/video-minimal-ui.dev.d.ts +1 -0
  145. package/cdn/video-minimal-ui.dev.js +4 -0
  146. package/cdn/video-minimal-ui.js +1 -0
  147. package/cdn/video-minimal.dev.d.ts +1 -0
  148. package/cdn/video-minimal.dev.js +114 -5669
  149. package/cdn/video-minimal.dev.js.map +1 -1
  150. package/cdn/video-minimal.js +1 -24
  151. package/cdn/video-minimal.js.map +1 -1
  152. package/cdn/video-ui.dev.d.ts +1 -0
  153. package/cdn/video-ui.dev.js +4 -0
  154. package/cdn/video-ui.js +1 -0
  155. package/cdn/video.dev.d.ts +1 -0
  156. package/cdn/video.dev.js +136 -5739
  157. package/cdn/video.dev.js.map +1 -1
  158. package/cdn/video.js +1 -24
  159. package/cdn/video.js.map +1 -1
  160. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +2 -2
  161. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  162. package/dist/default/_virtual/inline-css_src/define/audio/skin.js +2 -2
  163. package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  164. package/dist/default/_virtual/inline-css_src/define/background/skin.js +6 -0
  165. package/dist/default/_virtual/inline-css_src/define/background/skin.js.map +1 -0
  166. package/dist/default/_virtual/inline-css_src/define/base.js +6 -0
  167. package/dist/default/_virtual/inline-css_src/define/base.js.map +1 -0
  168. package/dist/default/_virtual/inline-css_src/define/shared.js +6 -0
  169. package/dist/default/_virtual/inline-css_src/define/shared.js.map +1 -0
  170. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +2 -2
  171. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  172. package/dist/default/_virtual/inline-css_src/define/video/skin.js +2 -2
  173. package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  174. package/dist/default/define/audio/minimal-skin.css +324 -182
  175. package/dist/default/define/audio/minimal-skin.js +10 -19
  176. package/dist/default/define/audio/minimal-skin.js.map +1 -1
  177. package/dist/default/define/audio/minimal-skin.tailwind.js +11 -19
  178. package/dist/default/define/audio/minimal-skin.tailwind.js.map +1 -1
  179. package/dist/default/define/audio/minimal-ui.js +28 -0
  180. package/dist/default/define/audio/minimal-ui.js.map +1 -0
  181. package/dist/default/define/audio/player.js +1 -2
  182. package/dist/default/define/audio/player.js.map +1 -1
  183. package/dist/default/define/audio/skin.css +307 -174
  184. package/dist/default/define/audio/skin.js +10 -19
  185. package/dist/default/define/audio/skin.js.map +1 -1
  186. package/dist/default/define/audio/skin.tailwind.js +13 -21
  187. package/dist/default/define/audio/skin.tailwind.js.map +1 -1
  188. package/dist/default/define/audio/ui.js +32 -0
  189. package/dist/default/define/audio/ui.js.map +1 -0
  190. package/dist/default/define/background/player.js +1 -2
  191. package/dist/default/define/background/player.js.map +1 -1
  192. package/dist/default/define/background/skin.css +1 -1
  193. package/dist/default/define/background/skin.js +6 -4
  194. package/dist/default/define/background/skin.js.map +1 -1
  195. package/dist/default/define/background/video.js +1 -2
  196. package/dist/default/define/base.css +27 -0
  197. package/dist/default/define/media/background-video.js +1 -2
  198. package/dist/default/define/media/background-video.js.map +1 -1
  199. package/dist/default/define/media/container.js +1 -2
  200. package/dist/default/define/media/container.js.map +1 -1
  201. package/dist/default/define/media/dash-video.js +13 -0
  202. package/dist/default/define/media/dash-video.js.map +1 -0
  203. package/dist/default/define/media/hls-video.js +1 -2
  204. package/dist/default/define/media/hls-video.js.map +1 -1
  205. package/dist/default/define/media/mux-audio.js +13 -0
  206. package/dist/default/define/media/mux-audio.js.map +1 -0
  207. package/dist/default/define/media/mux-video.js +13 -0
  208. package/dist/default/define/media/mux-video.js.map +1 -0
  209. package/dist/default/define/media/native-hls-video.js +13 -0
  210. package/dist/default/define/media/native-hls-video.js.map +1 -0
  211. package/dist/default/define/media/simple-hls-video.js +3 -3
  212. package/dist/default/define/media/simple-hls-video.js.map +1 -1
  213. package/dist/default/define/safe-define.js +4 -2
  214. package/dist/default/define/safe-define.js.map +1 -1
  215. package/dist/default/define/shared.css +14 -0
  216. package/dist/default/define/skin-element.js +33 -0
  217. package/dist/default/define/skin-element.js.map +1 -0
  218. package/dist/default/define/ui/alert-dialog-close.js +1 -2
  219. package/dist/default/define/ui/alert-dialog-close.js.map +1 -1
  220. package/dist/default/define/ui/alert-dialog-description.js +1 -2
  221. package/dist/default/define/ui/alert-dialog-description.js.map +1 -1
  222. package/dist/default/define/ui/alert-dialog-title.js +1 -2
  223. package/dist/default/define/ui/alert-dialog-title.js.map +1 -1
  224. package/dist/default/define/ui/alert-dialog.js +1 -2
  225. package/dist/default/define/ui/alert-dialog.js.map +1 -1
  226. package/dist/default/define/ui/buffering-indicator.js +1 -2
  227. package/dist/default/define/ui/buffering-indicator.js.map +1 -1
  228. package/dist/default/define/ui/captions-button.js +3 -3
  229. package/dist/default/define/ui/captions-button.js.map +1 -1
  230. package/dist/default/define/ui/compounds.js +62 -0
  231. package/dist/default/define/ui/compounds.js.map +1 -0
  232. package/dist/default/define/ui/controls-group.js +1 -2
  233. package/dist/default/define/ui/controls-group.js.map +1 -1
  234. package/dist/default/define/ui/controls.js +3 -7
  235. package/dist/default/define/ui/controls.js.map +1 -1
  236. package/dist/default/define/ui/error-dialog.js +6 -0
  237. package/dist/default/define/ui/error-dialog.js.map +1 -0
  238. package/dist/default/define/ui/fullscreen-button.js +1 -2
  239. package/dist/default/define/ui/fullscreen-button.js.map +1 -1
  240. package/dist/default/define/ui/hotkey.js +7 -0
  241. package/dist/default/define/ui/hotkey.js.map +1 -0
  242. package/dist/default/define/ui/mute-button.js +1 -2
  243. package/dist/default/define/ui/mute-button.js.map +1 -1
  244. package/dist/default/define/ui/pip-button.js +1 -2
  245. package/dist/default/define/ui/pip-button.js.map +1 -1
  246. package/dist/default/define/ui/play-button.js +1 -2
  247. package/dist/default/define/ui/play-button.js.map +1 -1
  248. package/dist/default/define/ui/playback-rate-button.js +1 -2
  249. package/dist/default/define/ui/playback-rate-button.js.map +1 -1
  250. package/dist/default/define/ui/popover.js +1 -2
  251. package/dist/default/define/ui/popover.js.map +1 -1
  252. package/dist/default/define/ui/poster.js +1 -2
  253. package/dist/default/define/ui/poster.js.map +1 -1
  254. package/dist/default/define/ui/seek-button.js +1 -2
  255. package/dist/default/define/ui/seek-button.js.map +1 -1
  256. package/dist/default/define/ui/slider-buffer.js +1 -2
  257. package/dist/default/define/ui/slider-buffer.js.map +1 -1
  258. package/dist/default/define/ui/slider-fill.js +1 -2
  259. package/dist/default/define/ui/slider-fill.js.map +1 -1
  260. package/dist/default/define/ui/slider-thumb.js +1 -2
  261. package/dist/default/define/ui/slider-thumb.js.map +1 -1
  262. package/dist/default/define/ui/slider-thumbnail.js +1 -2
  263. package/dist/default/define/ui/slider-thumbnail.js.map +1 -1
  264. package/dist/default/define/ui/slider-track.js +1 -2
  265. package/dist/default/define/ui/slider-track.js.map +1 -1
  266. package/dist/default/define/ui/slider-value.js +1 -2
  267. package/dist/default/define/ui/slider-value.js.map +1 -1
  268. package/dist/default/define/ui/slider.js +3 -15
  269. package/dist/default/define/ui/slider.js.map +1 -1
  270. package/dist/default/define/ui/thumbnail.js +1 -2
  271. package/dist/default/define/ui/thumbnail.js.map +1 -1
  272. package/dist/default/define/ui/time-group.js +1 -2
  273. package/dist/default/define/ui/time-group.js.map +1 -1
  274. package/dist/default/define/ui/time-separator.js +1 -2
  275. package/dist/default/define/ui/time-separator.js.map +1 -1
  276. package/dist/default/define/ui/time-slider.js +3 -19
  277. package/dist/default/define/ui/time-slider.js.map +1 -1
  278. package/dist/default/define/ui/time.js +3 -9
  279. package/dist/default/define/ui/time.js.map +1 -1
  280. package/dist/default/define/ui/tooltip-group.js +1 -2
  281. package/dist/default/define/ui/tooltip-group.js.map +1 -1
  282. package/dist/default/define/ui/tooltip.js +1 -2
  283. package/dist/default/define/ui/tooltip.js.map +1 -1
  284. package/dist/default/define/ui/volume-slider.js +3 -15
  285. package/dist/default/define/ui/volume-slider.js.map +1 -1
  286. package/dist/default/define/video/minimal-skin.css +618 -328
  287. package/dist/default/define/video/minimal-skin.js +10 -23
  288. package/dist/default/define/video/minimal-skin.js.map +1 -1
  289. package/dist/default/define/video/minimal-skin.tailwind.js +13 -30
  290. package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
  291. package/dist/default/define/video/minimal-ui.js +39 -0
  292. package/dist/default/define/video/minimal-ui.js.map +1 -0
  293. package/dist/default/define/video/player.js +1 -2
  294. package/dist/default/define/video/player.js.map +1 -1
  295. package/dist/default/define/video/skin.css +586 -311
  296. package/dist/default/define/video/skin.js +10 -24
  297. package/dist/default/define/video/skin.js.map +1 -1
  298. package/dist/default/define/video/skin.tailwind.js +13 -28
  299. package/dist/default/define/video/skin.tailwind.js.map +1 -1
  300. package/dist/default/define/video/ui.js +43 -0
  301. package/dist/default/define/video/ui.js.map +1 -0
  302. package/dist/default/icons/dist/render/default/index.js +3 -2
  303. package/dist/default/icons/dist/render/default/index.js.map +1 -1
  304. package/dist/default/icons/dist/render/minimal/index.js +3 -2
  305. package/dist/default/icons/dist/render/minimal/index.js.map +1 -1
  306. package/dist/default/index.js +10 -5
  307. package/dist/default/media/background-video/index.js +6 -3
  308. package/dist/default/media/background-video/index.js.map +1 -1
  309. package/dist/default/media/container-element.js +22 -4
  310. package/dist/default/media/container-element.js.map +1 -1
  311. package/dist/default/media/dash-video/index.js +9 -0
  312. package/dist/default/media/dash-video/index.js.map +1 -0
  313. package/dist/default/media/hls-video/index.js +12 -19
  314. package/dist/default/media/hls-video/index.js.map +1 -1
  315. package/dist/default/media/mux-audio/index.js +18 -0
  316. package/dist/default/media/mux-audio/index.js.map +1 -0
  317. package/dist/default/media/mux-video/index.js +18 -0
  318. package/dist/default/media/mux-video/index.js.map +1 -0
  319. package/dist/default/media/native-hls-video/index.js +9 -0
  320. package/dist/default/media/native-hls-video/index.js.map +1 -0
  321. package/dist/default/media/simple-hls-video/index.js +5 -17
  322. package/dist/default/media/simple-hls-video/index.js.map +1 -1
  323. package/dist/default/player/context.js +7 -4
  324. package/dist/default/player/context.js.map +1 -1
  325. package/dist/default/player/create-player.js +12 -5
  326. package/dist/default/player/create-player.js.map +1 -1
  327. package/dist/default/player/player-controller.js +1 -2
  328. package/dist/default/player/player-controller.js.map +1 -1
  329. package/dist/default/presets/audio.js +1 -2
  330. package/dist/default/presets/background.js +1 -2
  331. package/dist/default/presets/video.js +1 -2
  332. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +17 -38
  333. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  334. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js +1 -1
  335. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  336. package/dist/default/skins/dist/default/default/tailwind/components/button-group.js +7 -0
  337. package/dist/default/skins/dist/default/default/tailwind/components/button-group.js.map +1 -0
  338. package/dist/default/skins/dist/default/default/tailwind/components/button.js +5 -5
  339. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  340. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +2 -3
  341. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  342. package/dist/default/skins/dist/default/default/tailwind/components/error.js +4 -5
  343. package/dist/default/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  344. package/dist/default/skins/dist/default/default/tailwind/components/icon.js +1 -2
  345. package/dist/default/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  346. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +2 -3
  347. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  348. package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js +1 -1
  349. package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -1
  350. package/dist/default/skins/dist/default/default/tailwind/components/popup.js +5 -6
  351. package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  352. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +15 -0
  353. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  354. package/dist/default/skins/dist/default/default/tailwind/components/preview.js +12 -0
  355. package/dist/default/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  356. package/dist/default/skins/dist/default/default/tailwind/components/root.js +2 -3
  357. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  358. package/dist/default/skins/dist/default/default/tailwind/components/seek.js +2 -3
  359. package/dist/default/skins/dist/default/default/tailwind/components/seek.js.map +1 -1
  360. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +2 -3
  361. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  362. package/dist/default/skins/dist/default/default/tailwind/components/surface.js +2 -3
  363. package/dist/default/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  364. package/dist/default/skins/dist/default/default/tailwind/components/time.js +1 -1
  365. package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  366. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +41 -26
  367. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  368. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +18 -33
  369. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  370. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  371. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  372. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js +1 -2
  373. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -1
  374. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +5 -5
  375. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  376. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +2 -3
  377. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  378. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +4 -5
  379. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  380. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js +1 -2
  381. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  382. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +2 -3
  383. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  384. package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js +6 -0
  385. package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -0
  386. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +5 -5
  387. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  388. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +15 -0
  389. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  390. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js +13 -0
  391. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  392. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +2 -3
  393. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  394. package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js +2 -3
  395. package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -1
  396. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +2 -3
  397. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  398. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +5 -6
  399. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  400. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +45 -24
  401. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  402. package/dist/{dev/skins/dist/default/default/tailwind/components → default/skins/dist/default/shared/tailwind}/icon-state.js +7 -2
  403. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
  404. package/dist/default/store/container-mixin.js +17 -62
  405. package/dist/default/store/container-mixin.js.map +1 -1
  406. package/dist/default/store/media-attach-mixin.js +44 -0
  407. package/dist/default/store/media-attach-mixin.js.map +1 -0
  408. package/dist/default/store/provider-mixin.js +100 -11
  409. package/dist/default/store/provider-mixin.js.map +1 -1
  410. package/dist/default/ui/alert-dialog/alert-dialog-close-element.js +1 -2
  411. package/dist/default/ui/alert-dialog/alert-dialog-close-element.js.map +1 -1
  412. package/dist/default/ui/alert-dialog/alert-dialog-description-element.js +1 -2
  413. package/dist/default/ui/alert-dialog/alert-dialog-description-element.js.map +1 -1
  414. package/dist/default/ui/alert-dialog/alert-dialog-element.js +2 -2
  415. package/dist/default/ui/alert-dialog/alert-dialog-element.js.map +1 -1
  416. package/dist/default/ui/alert-dialog/alert-dialog-title-element.js +1 -2
  417. package/dist/default/ui/alert-dialog/alert-dialog-title-element.js.map +1 -1
  418. package/dist/default/ui/alert-dialog/context.js +2 -5
  419. package/dist/default/ui/alert-dialog/context.js.map +1 -1
  420. package/dist/default/ui/buffering-indicator/buffering-indicator-element.js +2 -2
  421. package/dist/default/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
  422. package/dist/default/ui/captions-button/captions-button-element.js +2 -2
  423. package/dist/default/ui/captions-button/captions-button-element.js.map +1 -1
  424. package/dist/default/ui/context-part-element.js +1 -2
  425. package/dist/default/ui/context-part-element.js.map +1 -1
  426. package/dist/default/ui/controls/context.js +2 -5
  427. package/dist/default/ui/controls/context.js.map +1 -1
  428. package/dist/default/ui/controls/controls-element.js +1 -2
  429. package/dist/default/ui/controls/controls-element.js.map +1 -1
  430. package/dist/default/ui/controls/controls-group-element.js +1 -2
  431. package/dist/default/ui/controls/controls-group-element.js.map +1 -1
  432. package/dist/default/ui/error-dialog/error-dialog-element.js +77 -0
  433. package/dist/default/ui/error-dialog/error-dialog-element.js.map +1 -0
  434. package/dist/default/ui/fullscreen-button/fullscreen-button-element.js +2 -2
  435. package/dist/default/ui/fullscreen-button/fullscreen-button-element.js.map +1 -1
  436. package/dist/default/ui/gesture/gesture-element.js +84 -0
  437. package/dist/default/ui/gesture/gesture-element.js.map +1 -0
  438. package/dist/default/ui/hotkey/aria-key-shortcuts-controller.js +28 -0
  439. package/dist/default/ui/hotkey/aria-key-shortcuts-controller.js.map +1 -0
  440. package/dist/default/ui/hotkey/hotkey-element.js +81 -0
  441. package/dist/default/ui/hotkey/hotkey-element.js.map +1 -0
  442. package/dist/default/ui/media-button-element.js +17 -3
  443. package/dist/default/ui/media-button-element.js.map +1 -1
  444. package/dist/default/ui/media-element.js +1 -2
  445. package/dist/default/ui/media-element.js.map +1 -1
  446. package/dist/default/ui/media-ui-element.js +1 -2
  447. package/dist/default/ui/media-ui-element.js.map +1 -1
  448. package/dist/default/ui/mute-button/mute-button-element.js +2 -2
  449. package/dist/default/ui/mute-button/mute-button-element.js.map +1 -1
  450. package/dist/default/ui/pip-button/pip-button-element.js +2 -2
  451. package/dist/default/ui/pip-button/pip-button-element.js.map +1 -1
  452. package/dist/default/ui/play-button/play-button-element.js +2 -2
  453. package/dist/default/ui/play-button/play-button-element.js.map +1 -1
  454. package/dist/default/ui/playback-rate-button/playback-rate-button-element.js +1 -2
  455. package/dist/default/ui/playback-rate-button/playback-rate-button-element.js.map +1 -1
  456. package/dist/default/ui/popover/popover-element.js +13 -11
  457. package/dist/default/ui/popover/popover-element.js.map +1 -1
  458. package/dist/default/ui/position-controller.js +76 -0
  459. package/dist/default/ui/position-controller.js.map +1 -0
  460. package/dist/default/ui/poster/poster-element.js +1 -2
  461. package/dist/default/ui/poster/poster-element.js.map +1 -1
  462. package/dist/default/ui/seek-button/seek-button-element.js +1 -2
  463. package/dist/default/ui/seek-button/seek-button-element.js.map +1 -1
  464. package/dist/default/ui/slider/context.js +2 -5
  465. package/dist/default/ui/slider/context.js.map +1 -1
  466. package/dist/default/ui/slider/slider-buffer-element.js +1 -2
  467. package/dist/default/ui/slider/slider-buffer-element.js.map +1 -1
  468. package/dist/default/ui/slider/slider-element.js +2 -3
  469. package/dist/default/ui/slider/slider-element.js.map +1 -1
  470. package/dist/default/ui/slider/slider-fill-element.js +1 -2
  471. package/dist/default/ui/slider/slider-fill-element.js.map +1 -1
  472. package/dist/default/ui/slider/slider-preview-element.js +2 -3
  473. package/dist/default/ui/slider/slider-preview-element.js.map +1 -1
  474. package/dist/default/ui/slider/slider-thumb-element.js +1 -2
  475. package/dist/default/ui/slider/slider-thumb-element.js.map +1 -1
  476. package/dist/default/ui/slider/slider-thumbnail-element.js +1 -2
  477. package/dist/default/ui/slider/slider-thumbnail-element.js.map +1 -1
  478. package/dist/default/ui/slider/slider-track-element.js +1 -2
  479. package/dist/default/ui/slider/slider-track-element.js.map +1 -1
  480. package/dist/default/ui/slider/slider-value-element.js +1 -2
  481. package/dist/default/ui/slider/slider-value-element.js.map +1 -1
  482. package/dist/default/ui/thumbnail/thumbnail-element.js +1 -2
  483. package/dist/default/ui/thumbnail/thumbnail-element.js.map +1 -1
  484. package/dist/default/ui/time/time-element.js +13 -12
  485. package/dist/default/ui/time/time-element.js.map +1 -1
  486. package/dist/default/ui/time/time-group-element.js +1 -2
  487. package/dist/default/ui/time/time-group-element.js.map +1 -1
  488. package/dist/default/ui/time/time-separator-element.js +1 -2
  489. package/dist/default/ui/time/time-separator-element.js.map +1 -1
  490. package/dist/default/ui/time-slider/time-slider-element.js +7 -8
  491. package/dist/default/ui/time-slider/time-slider-element.js.map +1 -1
  492. package/dist/default/ui/tooltip/context.js +2 -5
  493. package/dist/default/ui/tooltip/context.js.map +1 -1
  494. package/dist/default/ui/tooltip/tooltip-element.js +25 -18
  495. package/dist/default/ui/tooltip/tooltip-element.js.map +1 -1
  496. package/dist/default/ui/tooltip/tooltip-group-element.js +5 -3
  497. package/dist/default/ui/tooltip/tooltip-group-element.js.map +1 -1
  498. package/dist/default/ui/volume-slider/volume-slider-element.js +27 -20
  499. package/dist/default/ui/volume-slider/volume-slider-element.js.map +1 -1
  500. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +2 -2
  501. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  502. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +2 -2
  503. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  504. package/dist/dev/_virtual/inline-css_src/define/background/skin.js +6 -0
  505. package/dist/dev/_virtual/inline-css_src/define/background/skin.js.map +1 -0
  506. package/dist/dev/_virtual/inline-css_src/define/base.js +6 -0
  507. package/dist/dev/_virtual/inline-css_src/define/base.js.map +1 -0
  508. package/dist/dev/_virtual/inline-css_src/define/shared.js +6 -0
  509. package/dist/dev/_virtual/inline-css_src/define/shared.js.map +1 -0
  510. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +2 -2
  511. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  512. package/dist/dev/_virtual/inline-css_src/define/video/skin.js +2 -2
  513. package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  514. package/dist/dev/define/audio/minimal-skin.css +324 -182
  515. package/dist/dev/define/audio/minimal-skin.d.ts +6 -10
  516. package/dist/dev/define/audio/minimal-skin.d.ts.map +1 -1
  517. package/dist/dev/define/audio/minimal-skin.js +85 -82
  518. package/dist/dev/define/audio/minimal-skin.js.map +1 -1
  519. package/dist/dev/define/audio/minimal-skin.tailwind.d.ts +4 -10
  520. package/dist/dev/define/audio/minimal-skin.tailwind.d.ts.map +1 -1
  521. package/dist/dev/define/audio/minimal-skin.tailwind.js +86 -84
  522. package/dist/dev/define/audio/minimal-skin.tailwind.js.map +1 -1
  523. package/dist/dev/define/audio/minimal-ui.d.ts +1 -0
  524. package/dist/dev/define/audio/minimal-ui.js +28 -0
  525. package/dist/dev/define/audio/minimal-ui.js.map +1 -0
  526. package/dist/dev/define/audio/player.js +1 -2
  527. package/dist/dev/define/audio/player.js.map +1 -1
  528. package/dist/dev/define/audio/skin.css +307 -174
  529. package/dist/dev/define/audio/skin.d.ts +6 -10
  530. package/dist/dev/define/audio/skin.d.ts.map +1 -1
  531. package/dist/dev/define/audio/skin.js +97 -74
  532. package/dist/dev/define/audio/skin.js.map +1 -1
  533. package/dist/dev/define/audio/skin.tailwind.d.ts +4 -10
  534. package/dist/dev/define/audio/skin.tailwind.d.ts.map +1 -1
  535. package/dist/dev/define/audio/skin.tailwind.js +84 -78
  536. package/dist/dev/define/audio/skin.tailwind.js.map +1 -1
  537. package/dist/dev/define/audio/ui.d.ts +1 -0
  538. package/dist/dev/define/audio/ui.js +32 -0
  539. package/dist/dev/define/audio/ui.js.map +1 -0
  540. package/dist/dev/define/background/player.js +1 -2
  541. package/dist/dev/define/background/player.js.map +1 -1
  542. package/dist/dev/define/background/skin.css +1 -1
  543. package/dist/dev/define/background/skin.d.ts.map +1 -1
  544. package/dist/dev/define/background/skin.js +8 -4
  545. package/dist/dev/define/background/skin.js.map +1 -1
  546. package/dist/dev/define/background/video.js +1 -2
  547. package/dist/dev/define/base.css +27 -0
  548. package/dist/dev/define/media/background-video.js +1 -2
  549. package/dist/dev/define/media/background-video.js.map +1 -1
  550. package/dist/dev/define/media/container.js +1 -2
  551. package/dist/dev/define/media/container.js.map +1 -1
  552. package/dist/dev/define/media/dash-video.d.ts +14 -0
  553. package/dist/dev/define/media/dash-video.d.ts.map +1 -0
  554. package/dist/dev/define/media/dash-video.js +13 -0
  555. package/dist/dev/define/media/dash-video.js.map +1 -0
  556. package/dist/dev/define/media/hls-video.js +1 -2
  557. package/dist/dev/define/media/hls-video.js.map +1 -1
  558. package/dist/dev/define/media/mux-audio.d.ts +14 -0
  559. package/dist/dev/define/media/mux-audio.d.ts.map +1 -0
  560. package/dist/dev/define/media/mux-audio.js +13 -0
  561. package/dist/dev/define/media/mux-audio.js.map +1 -0
  562. package/dist/dev/define/media/mux-video.d.ts +14 -0
  563. package/dist/dev/define/media/mux-video.d.ts.map +1 -0
  564. package/dist/dev/define/media/mux-video.js +13 -0
  565. package/dist/dev/define/media/mux-video.js.map +1 -0
  566. package/dist/dev/define/media/native-hls-video.d.ts +14 -0
  567. package/dist/dev/define/media/native-hls-video.d.ts.map +1 -0
  568. package/dist/dev/define/media/native-hls-video.js +13 -0
  569. package/dist/dev/define/media/native-hls-video.js.map +1 -0
  570. package/dist/dev/define/media/simple-hls-video.d.ts.map +1 -1
  571. package/dist/dev/define/media/simple-hls-video.js +3 -3
  572. package/dist/dev/define/media/simple-hls-video.js.map +1 -1
  573. package/dist/dev/define/safe-define.js +4 -2
  574. package/dist/dev/define/safe-define.js.map +1 -1
  575. package/dist/dev/define/shared.css +14 -0
  576. package/dist/dev/define/skin-element.d.ts +18 -0
  577. package/dist/dev/define/skin-element.d.ts.map +1 -0
  578. package/dist/dev/define/skin-element.js +33 -0
  579. package/dist/dev/define/skin-element.js.map +1 -0
  580. package/dist/dev/define/ui/alert-dialog-close.js +1 -2
  581. package/dist/dev/define/ui/alert-dialog-close.js.map +1 -1
  582. package/dist/dev/define/ui/alert-dialog-description.js +1 -2
  583. package/dist/dev/define/ui/alert-dialog-description.js.map +1 -1
  584. package/dist/dev/define/ui/alert-dialog-title.js +1 -2
  585. package/dist/dev/define/ui/alert-dialog-title.js.map +1 -1
  586. package/dist/dev/define/ui/alert-dialog.js +1 -2
  587. package/dist/dev/define/ui/alert-dialog.js.map +1 -1
  588. package/dist/dev/define/ui/buffering-indicator.js +1 -2
  589. package/dist/dev/define/ui/buffering-indicator.js.map +1 -1
  590. package/dist/dev/define/ui/captions-button.d.ts.map +1 -1
  591. package/dist/dev/define/ui/captions-button.js +3 -3
  592. package/dist/dev/define/ui/captions-button.js.map +1 -1
  593. package/dist/dev/define/ui/compounds.d.ts +12 -0
  594. package/dist/dev/define/ui/compounds.d.ts.map +1 -0
  595. package/dist/dev/define/ui/compounds.js +62 -0
  596. package/dist/dev/define/ui/compounds.js.map +1 -0
  597. package/dist/dev/define/ui/controls-group.js +1 -2
  598. package/dist/dev/define/ui/controls-group.js.map +1 -1
  599. package/dist/dev/define/ui/controls.d.ts +2 -0
  600. package/dist/dev/define/ui/controls.d.ts.map +1 -1
  601. package/dist/dev/define/ui/controls.js +3 -7
  602. package/dist/dev/define/ui/controls.js.map +1 -1
  603. package/dist/dev/define/ui/error-dialog.d.ts +15 -0
  604. package/dist/dev/define/ui/error-dialog.d.ts.map +1 -0
  605. package/dist/dev/define/ui/error-dialog.js +6 -0
  606. package/dist/dev/define/ui/error-dialog.js.map +1 -0
  607. package/dist/dev/define/ui/fullscreen-button.js +1 -2
  608. package/dist/dev/define/ui/fullscreen-button.js.map +1 -1
  609. package/dist/dev/define/ui/hotkey.d.ts +9 -0
  610. package/dist/dev/define/ui/hotkey.d.ts.map +1 -0
  611. package/dist/dev/define/ui/hotkey.js +7 -0
  612. package/dist/dev/define/ui/hotkey.js.map +1 -0
  613. package/dist/dev/define/ui/mute-button.js +1 -2
  614. package/dist/dev/define/ui/mute-button.js.map +1 -1
  615. package/dist/dev/define/ui/pip-button.js +1 -2
  616. package/dist/dev/define/ui/pip-button.js.map +1 -1
  617. package/dist/dev/define/ui/play-button.js +1 -2
  618. package/dist/dev/define/ui/play-button.js.map +1 -1
  619. package/dist/dev/define/ui/playback-rate-button.js +1 -2
  620. package/dist/dev/define/ui/playback-rate-button.js.map +1 -1
  621. package/dist/dev/define/ui/popover.js +1 -2
  622. package/dist/dev/define/ui/popover.js.map +1 -1
  623. package/dist/dev/define/ui/poster.js +1 -2
  624. package/dist/dev/define/ui/poster.js.map +1 -1
  625. package/dist/dev/define/ui/seek-button.js +1 -2
  626. package/dist/dev/define/ui/seek-button.js.map +1 -1
  627. package/dist/dev/define/ui/slider-buffer.js +1 -2
  628. package/dist/dev/define/ui/slider-buffer.js.map +1 -1
  629. package/dist/dev/define/ui/slider-fill.js +1 -2
  630. package/dist/dev/define/ui/slider-fill.js.map +1 -1
  631. package/dist/dev/define/ui/slider-thumb.js +1 -2
  632. package/dist/dev/define/ui/slider-thumb.js.map +1 -1
  633. package/dist/dev/define/ui/slider-thumbnail.js +1 -2
  634. package/dist/dev/define/ui/slider-thumbnail.js.map +1 -1
  635. package/dist/dev/define/ui/slider-track.js +1 -2
  636. package/dist/dev/define/ui/slider-track.js.map +1 -1
  637. package/dist/dev/define/ui/slider-value.js +1 -2
  638. package/dist/dev/define/ui/slider-value.js.map +1 -1
  639. package/dist/dev/define/ui/slider.d.ts +10 -0
  640. package/dist/dev/define/ui/slider.d.ts.map +1 -1
  641. package/dist/dev/define/ui/slider.js +3 -15
  642. package/dist/dev/define/ui/slider.js.map +1 -1
  643. package/dist/dev/define/ui/thumbnail.js +1 -2
  644. package/dist/dev/define/ui/thumbnail.js.map +1 -1
  645. package/dist/dev/define/ui/time-group.js +1 -2
  646. package/dist/dev/define/ui/time-group.js.map +1 -1
  647. package/dist/dev/define/ui/time-separator.js +1 -2
  648. package/dist/dev/define/ui/time-separator.js.map +1 -1
  649. package/dist/dev/define/ui/time-slider.d.ts +14 -0
  650. package/dist/dev/define/ui/time-slider.d.ts.map +1 -1
  651. package/dist/dev/define/ui/time-slider.js +3 -19
  652. package/dist/dev/define/ui/time-slider.js.map +1 -1
  653. package/dist/dev/define/ui/time.d.ts +4 -0
  654. package/dist/dev/define/ui/time.d.ts.map +1 -1
  655. package/dist/dev/define/ui/time.js +3 -9
  656. package/dist/dev/define/ui/time.js.map +1 -1
  657. package/dist/dev/define/ui/tooltip-group.js +1 -2
  658. package/dist/dev/define/ui/tooltip-group.js.map +1 -1
  659. package/dist/dev/define/ui/tooltip.js +1 -2
  660. package/dist/dev/define/ui/tooltip.js.map +1 -1
  661. package/dist/dev/define/ui/volume-slider.d.ts +10 -0
  662. package/dist/dev/define/ui/volume-slider.d.ts.map +1 -1
  663. package/dist/dev/define/ui/volume-slider.js +3 -15
  664. package/dist/dev/define/ui/volume-slider.js.map +1 -1
  665. package/dist/dev/define/video/minimal-skin.css +618 -328
  666. package/dist/dev/define/video/minimal-skin.d.ts +6 -10
  667. package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
  668. package/dist/dev/define/video/minimal-skin.js +113 -119
  669. package/dist/dev/define/video/minimal-skin.js.map +1 -1
  670. package/dist/dev/define/video/minimal-skin.tailwind.d.ts +4 -10
  671. package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
  672. package/dist/dev/define/video/minimal-skin.tailwind.js +105 -129
  673. package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
  674. package/dist/dev/define/video/minimal-ui.d.ts +1 -0
  675. package/dist/dev/define/video/minimal-ui.js +39 -0
  676. package/dist/dev/define/video/minimal-ui.js.map +1 -0
  677. package/dist/dev/define/video/player.js +1 -2
  678. package/dist/dev/define/video/player.js.map +1 -1
  679. package/dist/dev/define/video/skin.css +586 -311
  680. package/dist/dev/define/video/skin.d.ts +6 -10
  681. package/dist/dev/define/video/skin.d.ts.map +1 -1
  682. package/dist/dev/define/video/skin.js +134 -116
  683. package/dist/dev/define/video/skin.js.map +1 -1
  684. package/dist/dev/define/video/skin.tailwind.d.ts +4 -10
  685. package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
  686. package/dist/dev/define/video/skin.tailwind.js +101 -121
  687. package/dist/dev/define/video/skin.tailwind.js.map +1 -1
  688. package/dist/dev/define/video/ui.d.ts +1 -0
  689. package/dist/dev/define/video/ui.js +43 -0
  690. package/dist/dev/define/video/ui.js.map +1 -0
  691. package/dist/dev/icons/dist/render/default/index.js +3 -2
  692. package/dist/dev/icons/dist/render/default/index.js.map +1 -1
  693. package/dist/dev/icons/dist/render/minimal/index.js +3 -2
  694. package/dist/dev/icons/dist/render/minimal/index.js.map +1 -1
  695. package/dist/dev/index.d.ts +12 -5
  696. package/dist/dev/index.js +10 -5
  697. package/dist/dev/media/background-video/index.d.ts +8 -1
  698. package/dist/dev/media/background-video/index.d.ts.map +1 -1
  699. package/dist/dev/media/background-video/index.js +6 -3
  700. package/dist/dev/media/background-video/index.js.map +1 -1
  701. package/dist/dev/media/container-element.d.ts +3 -0
  702. package/dist/dev/media/container-element.d.ts.map +1 -1
  703. package/dist/dev/media/container-element.js +22 -4
  704. package/dist/dev/media/container-element.js.map +1 -1
  705. package/dist/dev/media/dash-video/index.d.ts +17 -0
  706. package/dist/dev/media/dash-video/index.d.ts.map +1 -0
  707. package/dist/dev/media/dash-video/index.js +9 -0
  708. package/dist/dev/media/dash-video/index.js.map +1 -0
  709. package/dist/dev/media/hls-video/index.d.ts +13 -6
  710. package/dist/dev/media/hls-video/index.d.ts.map +1 -1
  711. package/dist/dev/media/hls-video/index.js +12 -19
  712. package/dist/dev/media/hls-video/index.js.map +1 -1
  713. package/dist/dev/media/mux-audio/index.d.ts +19 -0
  714. package/dist/dev/media/mux-audio/index.d.ts.map +1 -0
  715. package/dist/dev/media/mux-audio/index.js +18 -0
  716. package/dist/dev/media/mux-audio/index.js.map +1 -0
  717. package/dist/dev/media/mux-video/index.d.ts +19 -0
  718. package/dist/dev/media/mux-video/index.d.ts.map +1 -0
  719. package/dist/dev/media/mux-video/index.js +18 -0
  720. package/dist/dev/media/mux-video/index.js.map +1 -0
  721. package/dist/dev/media/native-hls-video/index.d.ts +17 -0
  722. package/dist/dev/media/native-hls-video/index.d.ts.map +1 -0
  723. package/dist/dev/media/native-hls-video/index.js +9 -0
  724. package/dist/dev/media/native-hls-video/index.js.map +1 -0
  725. package/dist/dev/media/simple-hls-video/index.d.ts +12 -6
  726. package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -1
  727. package/dist/dev/media/simple-hls-video/index.js +5 -17
  728. package/dist/dev/media/simple-hls-video/index.js.map +1 -1
  729. package/dist/dev/player/context.d.ts +19 -3
  730. package/dist/dev/player/context.d.ts.map +1 -1
  731. package/dist/dev/player/context.js +7 -4
  732. package/dist/dev/player/context.js.map +1 -1
  733. package/dist/dev/player/create-player.d.ts +1 -1
  734. package/dist/dev/player/create-player.js +12 -5
  735. package/dist/dev/player/create-player.js.map +1 -1
  736. package/dist/dev/player/player-controller.js +1 -2
  737. package/dist/dev/player/player-controller.js.map +1 -1
  738. package/dist/dev/presets/audio.js +1 -2
  739. package/dist/dev/presets/background.js +1 -2
  740. package/dist/dev/presets/video.js +1 -2
  741. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +17 -38
  742. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  743. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js +1 -1
  744. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  745. package/dist/dev/skins/dist/default/default/tailwind/components/button-group.js +7 -0
  746. package/dist/dev/skins/dist/default/default/tailwind/components/button-group.js.map +1 -0
  747. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +5 -5
  748. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  749. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +2 -3
  750. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  751. package/dist/dev/skins/dist/default/default/tailwind/components/error.js +4 -5
  752. package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  753. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js +1 -2
  754. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  755. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +2 -3
  756. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  757. package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js +1 -1
  758. package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -1
  759. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +5 -6
  760. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  761. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +15 -0
  762. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  763. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js +12 -0
  764. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  765. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +2 -3
  766. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  767. package/dist/dev/skins/dist/default/default/tailwind/components/seek.js +2 -3
  768. package/dist/dev/skins/dist/default/default/tailwind/components/seek.js.map +1 -1
  769. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +2 -3
  770. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  771. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js +2 -3
  772. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  773. package/dist/dev/skins/dist/default/default/tailwind/components/time.js +1 -1
  774. package/dist/dev/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  775. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +41 -26
  776. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  777. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +18 -33
  778. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  779. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  780. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  781. package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js +1 -2
  782. package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -1
  783. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +5 -5
  784. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  785. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +2 -3
  786. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  787. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +4 -5
  788. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  789. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js +1 -2
  790. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  791. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +2 -3
  792. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  793. package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js +6 -0
  794. package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -0
  795. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +5 -5
  796. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  797. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +15 -0
  798. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  799. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js +13 -0
  800. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  801. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +2 -3
  802. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  803. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js +2 -3
  804. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -1
  805. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +2 -3
  806. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  807. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +5 -6
  808. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  809. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +45 -24
  810. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  811. package/dist/{default/skins/dist/default/default/tailwind/components → dev/skins/dist/default/shared/tailwind}/icon-state.js +7 -2
  812. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
  813. package/dist/dev/store/container-mixin.d.ts +10 -5
  814. package/dist/dev/store/container-mixin.d.ts.map +1 -1
  815. package/dist/dev/store/container-mixin.js +17 -62
  816. package/dist/dev/store/container-mixin.js.map +1 -1
  817. package/dist/dev/store/media-attach-mixin.d.ts +19 -0
  818. package/dist/dev/store/media-attach-mixin.d.ts.map +1 -0
  819. package/dist/dev/store/media-attach-mixin.js +44 -0
  820. package/dist/dev/store/media-attach-mixin.js.map +1 -0
  821. package/dist/dev/store/provider-mixin.d.ts +19 -6
  822. package/dist/dev/store/provider-mixin.d.ts.map +1 -1
  823. package/dist/dev/store/provider-mixin.js +100 -11
  824. package/dist/dev/store/provider-mixin.js.map +1 -1
  825. package/dist/dev/ui/alert-dialog/alert-dialog-close-element.js +1 -2
  826. package/dist/dev/ui/alert-dialog/alert-dialog-close-element.js.map +1 -1
  827. package/dist/dev/ui/alert-dialog/alert-dialog-description-element.js +1 -2
  828. package/dist/dev/ui/alert-dialog/alert-dialog-description-element.js.map +1 -1
  829. package/dist/dev/ui/alert-dialog/alert-dialog-element.d.ts.map +1 -1
  830. package/dist/dev/ui/alert-dialog/alert-dialog-element.js +2 -2
  831. package/dist/dev/ui/alert-dialog/alert-dialog-element.js.map +1 -1
  832. package/dist/dev/ui/alert-dialog/alert-dialog-title-element.js +1 -2
  833. package/dist/dev/ui/alert-dialog/alert-dialog-title-element.js.map +1 -1
  834. package/dist/dev/ui/alert-dialog/context.js +2 -5
  835. package/dist/dev/ui/alert-dialog/context.js.map +1 -1
  836. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.d.ts.map +1 -1
  837. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js +2 -2
  838. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
  839. package/dist/dev/ui/captions-button/captions-button-element.d.ts +1 -0
  840. package/dist/dev/ui/captions-button/captions-button-element.d.ts.map +1 -1
  841. package/dist/dev/ui/captions-button/captions-button-element.js +2 -2
  842. package/dist/dev/ui/captions-button/captions-button-element.js.map +1 -1
  843. package/dist/dev/ui/context-part-element.d.ts +1 -1
  844. package/dist/dev/ui/context-part-element.js +1 -2
  845. package/dist/dev/ui/context-part-element.js.map +1 -1
  846. package/dist/dev/ui/controls/context.js +2 -5
  847. package/dist/dev/ui/controls/context.js.map +1 -1
  848. package/dist/dev/ui/controls/controls-element.js +1 -2
  849. package/dist/dev/ui/controls/controls-element.js.map +1 -1
  850. package/dist/dev/ui/controls/controls-group-element.js +1 -2
  851. package/dist/dev/ui/controls/controls-group-element.js.map +1 -1
  852. package/dist/dev/ui/error-dialog/error-dialog-element.d.ts +16 -0
  853. package/dist/dev/ui/error-dialog/error-dialog-element.d.ts.map +1 -0
  854. package/dist/dev/ui/error-dialog/error-dialog-element.js +77 -0
  855. package/dist/dev/ui/error-dialog/error-dialog-element.js.map +1 -0
  856. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts +1 -0
  857. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts.map +1 -1
  858. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js +2 -2
  859. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js.map +1 -1
  860. package/dist/dev/ui/gesture/gesture-element.d.ts +22 -0
  861. package/dist/dev/ui/gesture/gesture-element.d.ts.map +1 -0
  862. package/dist/dev/ui/gesture/gesture-element.js +84 -0
  863. package/dist/dev/ui/gesture/gesture-element.js.map +1 -0
  864. package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.d.ts +15 -0
  865. package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.d.ts.map +1 -0
  866. package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.js +28 -0
  867. package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.js.map +1 -0
  868. package/dist/dev/ui/hotkey/hotkey-element.d.ts +21 -0
  869. package/dist/dev/ui/hotkey/hotkey-element.d.ts.map +1 -0
  870. package/dist/dev/ui/hotkey/hotkey-element.js +81 -0
  871. package/dist/dev/ui/hotkey/hotkey-element.js.map +1 -0
  872. package/dist/dev/ui/media-button-element.d.ts +8 -2
  873. package/dist/dev/ui/media-button-element.d.ts.map +1 -1
  874. package/dist/dev/ui/media-button-element.js +17 -3
  875. package/dist/dev/ui/media-button-element.js.map +1 -1
  876. package/dist/dev/ui/media-element.js +1 -2
  877. package/dist/dev/ui/media-element.js.map +1 -1
  878. package/dist/dev/ui/media-ui-element.js +1 -2
  879. package/dist/dev/ui/media-ui-element.js.map +1 -1
  880. package/dist/dev/ui/mute-button/mute-button-element.d.ts +1 -0
  881. package/dist/dev/ui/mute-button/mute-button-element.d.ts.map +1 -1
  882. package/dist/dev/ui/mute-button/mute-button-element.js +2 -2
  883. package/dist/dev/ui/mute-button/mute-button-element.js.map +1 -1
  884. package/dist/dev/ui/pip-button/pip-button-element.d.ts +1 -0
  885. package/dist/dev/ui/pip-button/pip-button-element.d.ts.map +1 -1
  886. package/dist/dev/ui/pip-button/pip-button-element.js +2 -2
  887. package/dist/dev/ui/pip-button/pip-button-element.js.map +1 -1
  888. package/dist/dev/ui/play-button/play-button-element.d.ts +1 -0
  889. package/dist/dev/ui/play-button/play-button-element.d.ts.map +1 -1
  890. package/dist/dev/ui/play-button/play-button-element.js +2 -2
  891. package/dist/dev/ui/play-button/play-button-element.js.map +1 -1
  892. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js +1 -2
  893. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js.map +1 -1
  894. package/dist/dev/ui/popover/popover-element.d.ts.map +1 -1
  895. package/dist/dev/ui/popover/popover-element.js +13 -11
  896. package/dist/dev/ui/popover/popover-element.js.map +1 -1
  897. package/dist/dev/ui/position-controller.js +76 -0
  898. package/dist/dev/ui/position-controller.js.map +1 -0
  899. package/dist/dev/ui/poster/poster-element.js +1 -2
  900. package/dist/dev/ui/poster/poster-element.js.map +1 -1
  901. package/dist/dev/ui/seek-button/seek-button-element.js +1 -2
  902. package/dist/dev/ui/seek-button/seek-button-element.js.map +1 -1
  903. package/dist/dev/ui/slider/context.js +2 -5
  904. package/dist/dev/ui/slider/context.js.map +1 -1
  905. package/dist/dev/ui/slider/slider-buffer-element.js +1 -2
  906. package/dist/dev/ui/slider/slider-buffer-element.js.map +1 -1
  907. package/dist/dev/ui/slider/slider-element.js +2 -3
  908. package/dist/dev/ui/slider/slider-element.js.map +1 -1
  909. package/dist/dev/ui/slider/slider-fill-element.js +1 -2
  910. package/dist/dev/ui/slider/slider-fill-element.js.map +1 -1
  911. package/dist/dev/ui/slider/slider-preview-element.d.ts +21 -0
  912. package/dist/dev/ui/slider/slider-preview-element.d.ts.map +1 -0
  913. package/dist/dev/ui/slider/slider-preview-element.js +2 -3
  914. package/dist/dev/ui/slider/slider-preview-element.js.map +1 -1
  915. package/dist/dev/ui/slider/slider-thumb-element.js +1 -2
  916. package/dist/dev/ui/slider/slider-thumb-element.js.map +1 -1
  917. package/dist/dev/ui/slider/slider-thumbnail-element.js +1 -2
  918. package/dist/dev/ui/slider/slider-thumbnail-element.js.map +1 -1
  919. package/dist/dev/ui/slider/slider-track-element.js +1 -2
  920. package/dist/dev/ui/slider/slider-track-element.js.map +1 -1
  921. package/dist/dev/ui/slider/slider-value-element.js +1 -2
  922. package/dist/dev/ui/slider/slider-value-element.js.map +1 -1
  923. package/dist/dev/ui/thumbnail/thumbnail-element.js +1 -2
  924. package/dist/dev/ui/thumbnail/thumbnail-element.js.map +1 -1
  925. package/dist/dev/ui/time/time-element.d.ts +0 -1
  926. package/dist/dev/ui/time/time-element.d.ts.map +1 -1
  927. package/dist/dev/ui/time/time-element.js +13 -12
  928. package/dist/dev/ui/time/time-element.js.map +1 -1
  929. package/dist/dev/ui/time/time-group-element.js +1 -2
  930. package/dist/dev/ui/time/time-group-element.js.map +1 -1
  931. package/dist/dev/ui/time/time-separator-element.js +1 -2
  932. package/dist/dev/ui/time/time-separator-element.js.map +1 -1
  933. package/dist/dev/ui/time-slider/time-slider-element.d.ts +2 -2
  934. package/dist/dev/ui/time-slider/time-slider-element.js +7 -8
  935. package/dist/dev/ui/time-slider/time-slider-element.js.map +1 -1
  936. package/dist/dev/ui/tooltip/context.js +2 -5
  937. package/dist/dev/ui/tooltip/context.js.map +1 -1
  938. package/dist/dev/ui/tooltip/tooltip-element.d.ts.map +1 -1
  939. package/dist/dev/ui/tooltip/tooltip-element.js +25 -18
  940. package/dist/dev/ui/tooltip/tooltip-element.js.map +1 -1
  941. package/dist/dev/ui/tooltip/tooltip-group-element.js +5 -3
  942. package/dist/dev/ui/tooltip/tooltip-group-element.js.map +1 -1
  943. package/dist/dev/ui/volume-slider/volume-slider-element.d.ts +5 -0
  944. package/dist/dev/ui/volume-slider/volume-slider-element.d.ts.map +1 -1
  945. package/dist/dev/ui/volume-slider/volume-slider-element.js +27 -20
  946. package/dist/dev/ui/volume-slider/volume-slider-element.js.map +1 -1
  947. package/package.json +25 -14
  948. package/cdn/audio-minimal.css +0 -1
  949. package/cdn/audio.css +0 -1
  950. package/cdn/background.css +0 -1
  951. package/cdn/video-minimal.css +0 -1
  952. package/cdn/video.css +0 -1
  953. package/dist/default/define/skin-mixin.js +0 -55
  954. package/dist/default/define/skin-mixin.js.map +0 -1
  955. package/dist/default/skins/dist/default/default/tailwind/components/icon-state.js.map +0 -1
  956. package/dist/default/skins/dist/default/default/tailwind/components/tooltip-state.js +0 -28
  957. package/dist/default/skins/dist/default/default/tailwind/components/tooltip-state.js.map +0 -1
  958. package/dist/default/skins/dist/default/minimal/tailwind/components/icon-state.js +0 -29
  959. package/dist/default/skins/dist/default/minimal/tailwind/components/icon-state.js.map +0 -1
  960. package/dist/default/skins/dist/default/minimal/tailwind/components/tooltip-state.js +0 -28
  961. package/dist/default/skins/dist/default/minimal/tailwind/components/tooltip-state.js.map +0 -1
  962. package/dist/dev/define/skin-mixin.d.ts +0 -21
  963. package/dist/dev/define/skin-mixin.d.ts.map +0 -1
  964. package/dist/dev/define/skin-mixin.js +0 -69
  965. package/dist/dev/define/skin-mixin.js.map +0 -1
  966. package/dist/dev/skins/dist/default/default/tailwind/components/icon-state.js.map +0 -1
  967. package/dist/dev/skins/dist/default/default/tailwind/components/tooltip-state.js +0 -28
  968. package/dist/dev/skins/dist/default/default/tailwind/components/tooltip-state.js.map +0 -1
  969. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js +0 -29
  970. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js.map +0 -1
  971. package/dist/dev/skins/dist/default/minimal/tailwind/components/tooltip-state.js +0 -28
  972. package/dist/dev/skins/dist/default/minimal/tailwind/components/tooltip-state.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { MediaElement } from "./media-element.js";
2
+ import { AriaKeyShortcutsController } from "./hotkey/aria-key-shortcuts-controller.js";
2
3
  import { applyElementProps, applyStateDataAttrs, createButton } from "@videojs/core/dom";
3
-
4
4
  //#region src/ui/media-button-element.ts
5
5
  /** Abstract base for HTML custom elements that render a media-control button. */
6
6
  var MediaButtonElement = class extends MediaElement {
@@ -8,6 +8,7 @@ var MediaButtonElement = class extends MediaElement {
8
8
  super(..._args);
9
9
  this.disabled = false;
10
10
  this.label = "";
11
+ this.hotkeyAction = void 0;
11
12
  }
12
13
  static {
13
14
  this.properties = {
@@ -15,9 +16,15 @@ var MediaButtonElement = class extends MediaElement {
15
16
  disabled: { type: Boolean }
16
17
  };
17
18
  }
19
+ get $state() {
20
+ return this.core.state;
21
+ }
18
22
  #disconnect = null;
23
+ #hotkeyRegistry = null;
19
24
  connectedCallback() {
20
25
  super.connectedCallback();
26
+ if (this.destroyed) return;
27
+ if (this.hotkeyAction && !this.#hotkeyRegistry) this.#hotkeyRegistry = new AriaKeyShortcutsController(this, this.hotkeyAction);
21
28
  this.#disconnect = new AbortController();
22
29
  const buttonProps = createButton({
23
30
  onActivate: () => this.activate(this.mediaState.value),
@@ -30,6 +37,10 @@ var MediaButtonElement = class extends MediaElement {
30
37
  this.#disconnect?.abort();
31
38
  this.#disconnect = null;
32
39
  }
40
+ /** Returns the button's current label derived from media state. */
41
+ getLabel() {
42
+ return this.core.state.current.label || void 0;
43
+ }
33
44
  willUpdate(changed) {
34
45
  super.willUpdate(changed);
35
46
  this.core.setProps?.(this);
@@ -40,11 +51,14 @@ var MediaButtonElement = class extends MediaElement {
40
51
  if (!media) return;
41
52
  this.core.setMedia(media);
42
53
  const state = this.core.getState();
43
- applyElementProps(this, this.core.getAttrs?.(state) ?? {});
54
+ applyElementProps(this, {
55
+ ...this.core.getAttrs?.(state),
56
+ "aria-keyshortcuts": this.#hotkeyRegistry?.value
57
+ });
44
58
  applyStateDataAttrs(this, state, this.stateAttrMap);
45
59
  }
46
60
  };
47
-
48
61
  //#endregion
49
62
  export { MediaButtonElement };
63
+
50
64
  //# sourceMappingURL=media-button-element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-button-element.js","names":["#disconnect"],"sources":["../../../src/ui/media-button-element.ts"],"sourcesContent":["import type { InferComponentState, InferMediaState, MediaUIComponent, StateAttrMap } from '@videojs/core';\nimport { applyElementProps, applyStateDataAttrs, createButton, logMissingFeature } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport type { PlayerController } from '../player/player-controller';\nimport { MediaElement } from './media-element';\n\n/** Abstract base for HTML custom elements that render a media-control button. */\nexport abstract class MediaButtonElement<Core extends MediaUIComponent> extends MediaElement {\n static override properties: PropertyDeclarationMap = {\n label: { type: String },\n disabled: { type: Boolean },\n };\n\n disabled = false;\n label = '';\n\n protected abstract readonly core: Core;\n protected abstract readonly stateAttrMap: StateAttrMap<InferComponentState<Core>>;\n protected abstract readonly mediaState: PlayerController<any, InferMediaState<Core> | undefined>;\n\n protected abstract activate(state: InferMediaState<Core>): void;\n\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.#disconnect = new AbortController();\n\n const buttonProps = createButton({\n onActivate: () => this.activate(this.mediaState.value!),\n isDisabled: () => this.disabled || !this.mediaState.value,\n });\n\n applyElementProps(this, buttonProps, { signal: this.#disconnect.signal });\n\n if (__DEV__ && !this.mediaState.value && this.mediaState.displayName) {\n logMissingFeature(this.localName, this.mediaState.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.mediaState.value;\n\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n applyElementProps(this, this.core.getAttrs?.(state) ?? {});\n applyStateDataAttrs(this, state, this.stateAttrMap);\n }\n}\n"],"mappings":";;;;;AAQA,IAAsB,qBAAtB,cAAgF,aAAa;;;kBAMhF;eACH;;;oBAN6C;GACnD,OAAO,EAAE,MAAM,QAAQ;GACvB,UAAU,EAAE,MAAM,SAAS;GAC5B;;CAWD,cAAsC;CAEtC,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,QAAKA,aAAc,IAAI,iBAAiB;EAExC,MAAM,cAAc,aAAa;GAC/B,kBAAkB,KAAK,SAAS,KAAK,WAAW,MAAO;GACvD,kBAAkB,KAAK,YAAY,CAAC,KAAK,WAAW;GACrD,CAAC;AAEF,oBAAkB,MAAM,aAAa,EAAE,QAAQ,MAAKA,WAAY,QAAQ,CAAC;;CAO3E,AAAS,uBAA6B;AACpC,QAAM,sBAAsB;AAC5B,QAAKA,YAAa,OAAO;AACzB,QAAKA,aAAc;;CAGrB,AAAmB,WAAW,SAA+B;AAC3D,QAAM,WAAW,QAAQ;AACzB,OAAK,KAAK,WAAW,KAAK;;CAG5B,AAAmB,OAAO,SAA+B;AACvD,QAAM,OAAO,QAAQ;EAErB,MAAM,QAAQ,KAAK,WAAW;AAE9B,MAAI,CAAC,MAAO;AAEZ,OAAK,KAAK,SAAS,MAAM;EACzB,MAAM,QAAQ,KAAK,KAAK,UAAU;AAClC,oBAAkB,MAAM,KAAK,KAAK,WAAW,MAAM,IAAI,EAAE,CAAC;AAC1D,sBAAoB,MAAM,OAAO,KAAK,aAAa"}
1
+ {"version":3,"file":"media-button-element.js","names":["#hotkeyRegistry","#disconnect"],"sources":["../../../src/ui/media-button-element.ts"],"sourcesContent":["import type {\n ButtonState,\n InferComponentState,\n InferMediaState,\n MediaButtonComponent,\n StateAttrMap,\n} from '@videojs/core';\nimport { applyElementProps, applyStateDataAttrs, createButton, logMissingFeature } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport type { State } from '@videojs/store';\n\nimport type { PlayerController } from '../player/player-controller';\nimport { AriaKeyShortcutsController } from './hotkey/aria-key-shortcuts-controller';\nimport { MediaElement } from './media-element';\n\n/** Abstract base for HTML custom elements that render a media-control button. */\nexport abstract class MediaButtonElement<Core extends MediaButtonComponent> extends MediaElement {\n static override properties: PropertyDeclarationMap = {\n label: { type: String },\n disabled: { type: Boolean },\n };\n\n disabled = false;\n label = '';\n\n protected abstract readonly core: Core;\n protected abstract readonly stateAttrMap: StateAttrMap<InferComponentState<Core>>;\n protected abstract readonly mediaState: PlayerController<any, InferMediaState<Core> | undefined>;\n\n protected abstract activate(state: InferMediaState<Core>): void;\n\n /** Override to set the hotkey action name for `aria-keyshortcuts`. */\n protected readonly hotkeyAction: string | undefined = undefined;\n\n get $state(): State<ButtonState> {\n return this.core.state;\n }\n\n #disconnect: AbortController | null = null;\n #hotkeyRegistry: AriaKeyShortcutsController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n if (this.hotkeyAction && !this.#hotkeyRegistry) {\n this.#hotkeyRegistry = new AriaKeyShortcutsController(this, this.hotkeyAction);\n }\n\n this.#disconnect = new AbortController();\n\n const buttonProps = createButton({\n onActivate: () => this.activate(this.mediaState.value!),\n isDisabled: () => this.disabled || !this.mediaState.value,\n });\n\n applyElementProps(this, buttonProps, { signal: this.#disconnect.signal });\n\n if (__DEV__ && !this.mediaState.value && this.mediaState.displayName) {\n logMissingFeature(this.localName, this.mediaState.displayName);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n /** Returns the button's current label derived from media state. */\n getLabel(): string | undefined {\n return this.core.state.current.label || undefined;\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.mediaState.value;\n\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n applyElementProps(this, {\n ...this.core.getAttrs?.(state),\n 'aria-keyshortcuts': this.#hotkeyRegistry?.value,\n });\n applyStateDataAttrs(this, state, this.stateAttrMap);\n }\n}\n"],"mappings":";;;;;AAgBA,IAAsB,qBAAtB,cAAoF,aAAa;;;kBAMpF;eACH;sBAS8C,KAAA;;;oBAfD;GACnD,OAAO,EAAE,MAAM,QAAQ;GACvB,UAAU,EAAE,MAAM,SAAS;GAC5B;;CAcD,IAAI,SAA6B;AAC/B,SAAO,KAAK,KAAK;;CAGnB,cAAsC;CACtC,kBAAqD;CAErD,oBAAmC;AACjC,QAAM,mBAAmB;AACzB,MAAI,KAAK,UAAW;AAEpB,MAAI,KAAK,gBAAgB,CAAC,MAAA,eACxB,OAAA,iBAAuB,IAAI,2BAA2B,MAAM,KAAK,aAAa;AAGhF,QAAA,aAAmB,IAAI,iBAAiB;EAExC,MAAM,cAAc,aAAa;GAC/B,kBAAkB,KAAK,SAAS,KAAK,WAAW,MAAO;GACvD,kBAAkB,KAAK,YAAY,CAAC,KAAK,WAAW;GACrD,CAAC;AAEF,oBAAkB,MAAM,aAAa,EAAE,QAAQ,MAAA,WAAiB,QAAQ,CAAC;;CAO3E,uBAAsC;AACpC,QAAM,sBAAsB;AAC5B,QAAA,YAAkB,OAAO;AACzB,QAAA,aAAmB;;;CAIrB,WAA+B;AAC7B,SAAO,KAAK,KAAK,MAAM,QAAQ,SAAS,KAAA;;CAG1C,WAA8B,SAA+B;AAC3D,QAAM,WAAW,QAAQ;AACzB,OAAK,KAAK,WAAW,KAAK;;CAG5B,OAA0B,SAA+B;AACvD,QAAM,OAAO,QAAQ;EAErB,MAAM,QAAQ,KAAK,WAAW;AAE9B,MAAI,CAAC,MAAO;AAEZ,OAAK,KAAK,SAAS,MAAM;EACzB,MAAM,QAAQ,KAAK,KAAK,UAAU;AAClC,oBAAkB,MAAM;GACtB,GAAG,KAAK,KAAK,WAAW,MAAM;GAC9B,qBAAqB,MAAA,gBAAsB;GAC5C,CAAC;AACF,sBAAoB,MAAM,OAAO,KAAK,aAAa"}
@@ -1,9 +1,8 @@
1
1
  import { DestroyMixin, ReactiveElement } from "@videojs/element";
2
-
3
2
  //#region src/ui/media-element.ts
4
3
  /** Base class for interactive media UI elements. */
5
4
  var MediaElement = class extends DestroyMixin(ReactiveElement) {};
6
-
7
5
  //#endregion
8
6
  export { MediaElement };
7
+
9
8
  //# sourceMappingURL=media-element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-element.js","names":[],"sources":["../../../src/ui/media-element.ts"],"sourcesContent":["import { DestroyMixin, ReactiveElement } from '@videojs/element';\nimport type { Constructor } from '@videojs/utils/types';\n\n/** Base class for interactive media UI elements. */\nexport class MediaElement extends DestroyMixin(ReactiveElement) {}\n\nexport interface MediaElementConstructor extends Constructor<MediaElement> {}\n"],"mappings":";;;;AAIA,IAAa,eAAb,cAAkC,aAAa,gBAAgB,CAAC"}
1
+ {"version":3,"file":"media-element.js","names":[],"sources":["../../../src/ui/media-element.ts"],"sourcesContent":["import { DestroyMixin, ReactiveElement } from '@videojs/element';\nimport type { Constructor } from '@videojs/utils/types';\n\n/** Base class for interactive media UI elements. */\nexport class MediaElement extends DestroyMixin(ReactiveElement) {}\n\nexport interface MediaElementConstructor extends Constructor<MediaElement> {}\n"],"mappings":";;;AAIA,IAAa,eAAb,cAAkC,aAAa,gBAAgB,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { MediaElement } from "./media-element.js";
2
2
  import { applyStateDataAttrs } from "@videojs/core/dom";
3
-
4
3
  //#region src/ui/media-ui-element.ts
5
4
  /** Abstract base for HTML custom elements that display media state with data attributes. */
6
5
  var MediaUIElement = class extends MediaElement {
@@ -16,7 +15,7 @@ var MediaUIElement = class extends MediaElement {
16
15
  applyStateDataAttrs(this, state, this.stateAttrMap);
17
16
  }
18
17
  };
19
-
20
18
  //#endregion
21
19
  export { MediaUIElement };
20
+
22
21
  //# sourceMappingURL=media-ui-element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-ui-element.js","names":[],"sources":["../../../src/ui/media-ui-element.ts"],"sourcesContent":["import type { InferComponentState, InferMediaState, MediaUIComponent, StateAttrMap } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\n\nimport type { PlayerController } from '../player/player-controller';\nimport { MediaElement } from './media-element';\n\n/** Abstract base for HTML custom elements that display media state with data attributes. */\nexport abstract class MediaUIElement<Core extends MediaUIComponent> extends MediaElement {\n protected abstract readonly core: Core;\n protected abstract readonly stateAttrMap: StateAttrMap<InferComponentState<Core>>;\n protected abstract readonly mediaState: PlayerController<any, InferMediaState<Core> | undefined>;\n\n override connectedCallback(): void {\n super.connectedCallback();\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 super.update(changed);\n\n const media = this.mediaState.value;\n\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n applyStateDataAttrs(this, state, this.stateAttrMap);\n }\n}\n"],"mappings":";;;;;AAQA,IAAsB,iBAAtB,cAA4E,aAAa;CAKvF,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;;CAO3B,AAAmB,OAAO,SAA+B;AACvD,QAAM,OAAO,QAAQ;EAErB,MAAM,QAAQ,KAAK,WAAW;AAE9B,MAAI,CAAC,MAAO;AAEZ,OAAK,KAAK,SAAS,MAAM;EACzB,MAAM,QAAQ,KAAK,KAAK,UAAU;AAClC,sBAAoB,MAAM,OAAO,KAAK,aAAa"}
1
+ {"version":3,"file":"media-ui-element.js","names":[],"sources":["../../../src/ui/media-ui-element.ts"],"sourcesContent":["import type { InferComponentState, InferMediaState, MediaUIComponent, StateAttrMap } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\n\nimport type { PlayerController } from '../player/player-controller';\nimport { MediaElement } from './media-element';\n\n/** Abstract base for HTML custom elements that display media state with data attributes. */\nexport abstract class MediaUIElement<Core extends MediaUIComponent> extends MediaElement {\n protected abstract readonly core: Core;\n protected abstract readonly stateAttrMap: StateAttrMap<InferComponentState<Core>>;\n protected abstract readonly mediaState: PlayerController<any, InferMediaState<Core> | undefined>;\n\n override connectedCallback(): void {\n super.connectedCallback();\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 super.update(changed);\n\n const media = this.mediaState.value;\n\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n applyStateDataAttrs(this, state, this.stateAttrMap);\n }\n}\n"],"mappings":";;;;AAQA,IAAsB,iBAAtB,cAA4E,aAAa;CAKvF,oBAAmC;AACjC,QAAM,mBAAmB;;CAO3B,OAA0B,SAA+B;AACvD,QAAM,OAAO,QAAQ;EAErB,MAAM,QAAQ,KAAK,WAAW;AAE9B,MAAI,CAAC,MAAO;AAEZ,OAAK,KAAK,SAAS,MAAM;EACzB,MAAM,QAAQ,KAAK,KAAK,UAAU;AAClC,sBAAoB,MAAM,OAAO,KAAK,aAAa"}
@@ -3,7 +3,6 @@ import { PlayerController } from "../../player/player-controller.js";
3
3
  import { MediaButtonElement } from "../media-button-element.js";
4
4
  import { selectVolume } from "@videojs/core/dom";
5
5
  import { MuteButtonCore, MuteButtonDataAttrs } from "@videojs/core";
6
-
7
6
  //#region src/ui/mute-button/mute-button-element.ts
8
7
  var MuteButtonElement = class extends MediaButtonElement {
9
8
  constructor(..._args) {
@@ -11,6 +10,7 @@ var MuteButtonElement = class extends MediaButtonElement {
11
10
  this.core = new MuteButtonCore();
12
11
  this.stateAttrMap = MuteButtonDataAttrs;
13
12
  this.mediaState = new PlayerController(this, playerContext, selectVolume);
13
+ this.hotkeyAction = "toggleMuted";
14
14
  }
15
15
  static {
16
16
  this.tagName = "media-mute-button";
@@ -19,7 +19,7 @@ var MuteButtonElement = class extends MediaButtonElement {
19
19
  this.core.toggle(state);
20
20
  }
21
21
  };
22
-
23
22
  //#endregion
24
23
  export { MuteButtonElement };
24
+
25
25
  //# sourceMappingURL=mute-button-element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mute-button-element.js","names":[],"sources":["../../../../src/ui/mute-button/mute-button-element.ts"],"sourcesContent":["import { type MediaVolumeState, MuteButtonCore, MuteButtonDataAttrs } from '@videojs/core';\nimport { selectVolume } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class MuteButtonElement extends MediaButtonElement<MuteButtonCore> {\n static readonly tagName = 'media-mute-button';\n\n protected readonly core = new MuteButtonCore();\n protected readonly stateAttrMap = MuteButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectVolume);\n\n protected activate(state: MediaVolumeState): void {\n this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;;AAOA,IAAa,oBAAb,cAAuC,mBAAmC;;;cAG9C,IAAI,gBAAgB;sBACZ;oBACF,IAAI,iBAAiB,MAAM,eAAe,aAAa;;;iBAJ7D;;CAM1B,AAAU,SAAS,OAA+B;AAChD,OAAK,KAAK,OAAO,MAAM"}
1
+ {"version":3,"file":"mute-button-element.js","names":[],"sources":["../../../../src/ui/mute-button/mute-button-element.ts"],"sourcesContent":["import { type MediaVolumeState, MuteButtonCore, MuteButtonDataAttrs } from '@videojs/core';\nimport { selectVolume } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class MuteButtonElement extends MediaButtonElement<MuteButtonCore> {\n static readonly tagName = 'media-mute-button';\n\n protected readonly core = new MuteButtonCore();\n protected readonly stateAttrMap = MuteButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectVolume);\n protected override readonly hotkeyAction = 'toggleMuted';\n\n protected activate(state: MediaVolumeState): void {\n this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;AAOA,IAAa,oBAAb,cAAuC,mBAAmC;;;cAG9C,IAAI,gBAAgB;sBACZ;oBACF,IAAI,iBAAiB,MAAM,eAAe,aAAa;sBAC5C;;;iBALjB;;CAO1B,SAAmB,OAA+B;AAChD,OAAK,KAAK,OAAO,MAAM"}
@@ -3,7 +3,6 @@ import { PlayerController } from "../../player/player-controller.js";
3
3
  import { MediaButtonElement } from "../media-button-element.js";
4
4
  import { selectPiP } from "@videojs/core/dom";
5
5
  import { PiPButtonCore, PiPButtonDataAttrs } from "@videojs/core";
6
-
7
6
  //#region src/ui/pip-button/pip-button-element.ts
8
7
  var PiPButtonElement = class extends MediaButtonElement {
9
8
  constructor(..._args) {
@@ -11,6 +10,7 @@ var PiPButtonElement = class extends MediaButtonElement {
11
10
  this.core = new PiPButtonCore();
12
11
  this.stateAttrMap = PiPButtonDataAttrs;
13
12
  this.mediaState = new PlayerController(this, playerContext, selectPiP);
13
+ this.hotkeyAction = "togglePictureInPicture";
14
14
  }
15
15
  static {
16
16
  this.tagName = "media-pip-button";
@@ -19,7 +19,7 @@ var PiPButtonElement = class extends MediaButtonElement {
19
19
  this.core.toggle(state);
20
20
  }
21
21
  };
22
-
23
22
  //#endregion
24
23
  export { PiPButtonElement };
24
+
25
25
  //# sourceMappingURL=pip-button-element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pip-button-element.js","names":[],"sources":["../../../../src/ui/pip-button/pip-button-element.ts"],"sourcesContent":["import { type MediaPictureInPictureState, PiPButtonCore, PiPButtonDataAttrs } from '@videojs/core';\nimport { selectPiP } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PiPButtonElement extends MediaButtonElement<PiPButtonCore> {\n static readonly tagName = 'media-pip-button';\n\n protected readonly core = new PiPButtonCore();\n protected readonly stateAttrMap = PiPButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPiP);\n\n protected activate(state: MediaPictureInPictureState): void {\n this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;;AAOA,IAAa,mBAAb,cAAsC,mBAAkC;;;cAG5C,IAAI,eAAe;sBACX;oBACF,IAAI,iBAAiB,MAAM,eAAe,UAAU;;;iBAJ1D;;CAM1B,AAAU,SAAS,OAAyC;AAC1D,OAAK,KAAK,OAAO,MAAM"}
1
+ {"version":3,"file":"pip-button-element.js","names":[],"sources":["../../../../src/ui/pip-button/pip-button-element.ts"],"sourcesContent":["import { type MediaPictureInPictureState, PiPButtonCore, PiPButtonDataAttrs } from '@videojs/core';\nimport { selectPiP } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PiPButtonElement extends MediaButtonElement<PiPButtonCore> {\n static readonly tagName = 'media-pip-button';\n\n protected readonly core = new PiPButtonCore();\n protected readonly stateAttrMap = PiPButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPiP);\n protected override readonly hotkeyAction = 'togglePictureInPicture';\n\n protected activate(state: MediaPictureInPictureState): void {\n this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;AAOA,IAAa,mBAAb,cAAsC,mBAAkC;;;cAG5C,IAAI,eAAe;sBACX;oBACF,IAAI,iBAAiB,MAAM,eAAe,UAAU;sBACzC;;;iBALjB;;CAO1B,SAAmB,OAAyC;AAC1D,OAAK,KAAK,OAAO,MAAM"}
@@ -3,7 +3,6 @@ import { PlayerController } from "../../player/player-controller.js";
3
3
  import { MediaButtonElement } from "../media-button-element.js";
4
4
  import { selectPlayback } from "@videojs/core/dom";
5
5
  import { PlayButtonCore, PlayButtonDataAttrs } from "@videojs/core";
6
-
7
6
  //#region src/ui/play-button/play-button-element.ts
8
7
  var PlayButtonElement = class extends MediaButtonElement {
9
8
  constructor(..._args) {
@@ -11,6 +10,7 @@ var PlayButtonElement = class extends MediaButtonElement {
11
10
  this.core = new PlayButtonCore();
12
11
  this.stateAttrMap = PlayButtonDataAttrs;
13
12
  this.mediaState = new PlayerController(this, playerContext, selectPlayback);
13
+ this.hotkeyAction = "togglePaused";
14
14
  }
15
15
  static {
16
16
  this.tagName = "media-play-button";
@@ -19,7 +19,7 @@ var PlayButtonElement = class extends MediaButtonElement {
19
19
  this.core.toggle(state);
20
20
  }
21
21
  };
22
-
23
22
  //#endregion
24
23
  export { PlayButtonElement };
24
+
25
25
  //# sourceMappingURL=play-button-element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"play-button-element.js","names":[],"sources":["../../../../src/ui/play-button/play-button-element.ts"],"sourcesContent":["import { type MediaPlaybackState, PlayButtonCore, PlayButtonDataAttrs } from '@videojs/core';\nimport { selectPlayback } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PlayButtonElement extends MediaButtonElement<PlayButtonCore> {\n static readonly tagName = 'media-play-button';\n\n protected readonly core = new PlayButtonCore();\n protected readonly stateAttrMap = PlayButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlayback);\n\n protected activate(state: MediaPlaybackState): void {\n this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;;AAOA,IAAa,oBAAb,cAAuC,mBAAmC;;;cAG9C,IAAI,gBAAgB;sBACZ;oBACF,IAAI,iBAAiB,MAAM,eAAe,eAAe;;;iBAJ/D;;CAM1B,AAAU,SAAS,OAAiC;AAClD,OAAK,KAAK,OAAO,MAAM"}
1
+ {"version":3,"file":"play-button-element.js","names":[],"sources":["../../../../src/ui/play-button/play-button-element.ts"],"sourcesContent":["import { type MediaPlaybackState, PlayButtonCore, PlayButtonDataAttrs } from '@videojs/core';\nimport { selectPlayback } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PlayButtonElement extends MediaButtonElement<PlayButtonCore> {\n static readonly tagName = 'media-play-button';\n\n protected readonly core = new PlayButtonCore();\n protected readonly stateAttrMap = PlayButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlayback);\n protected override readonly hotkeyAction = 'togglePaused';\n\n protected activate(state: MediaPlaybackState): void {\n this.core.toggle(state);\n }\n}\n"],"mappings":";;;;;;AAOA,IAAa,oBAAb,cAAuC,mBAAmC;;;cAG9C,IAAI,gBAAgB;sBACZ;oBACF,IAAI,iBAAiB,MAAM,eAAe,eAAe;sBAC9C;;;iBALjB;;CAO1B,SAAmB,OAAiC;AAClD,OAAK,KAAK,OAAO,MAAM"}
@@ -3,7 +3,6 @@ import { PlayerController } from "../../player/player-controller.js";
3
3
  import { MediaButtonElement } from "../media-button-element.js";
4
4
  import { selectPlaybackRate } from "@videojs/core/dom";
5
5
  import { PlaybackRateButtonCore, PlaybackRateButtonDataAttrs } from "@videojs/core";
6
-
7
6
  //#region src/ui/playback-rate-button/playback-rate-button-element.ts
8
7
  var PlaybackRateButtonElement = class extends MediaButtonElement {
9
8
  constructor(..._args) {
@@ -19,7 +18,7 @@ var PlaybackRateButtonElement = class extends MediaButtonElement {
19
18
  this.core.cycle(state);
20
19
  }
21
20
  };
22
-
23
21
  //#endregion
24
22
  export { PlaybackRateButtonElement };
23
+
25
24
  //# sourceMappingURL=playback-rate-button-element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"playback-rate-button-element.js","names":[],"sources":["../../../../src/ui/playback-rate-button/playback-rate-button-element.ts"],"sourcesContent":["import { type MediaPlaybackRateState, PlaybackRateButtonCore, PlaybackRateButtonDataAttrs } from '@videojs/core';\nimport { selectPlaybackRate } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PlaybackRateButtonElement extends MediaButtonElement<PlaybackRateButtonCore> {\n static readonly tagName = 'media-playback-rate-button';\n\n protected readonly core = new PlaybackRateButtonCore();\n protected readonly stateAttrMap = PlaybackRateButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlaybackRate);\n\n protected activate(state: MediaPlaybackRateState): void {\n this.core.cycle(state);\n }\n}\n"],"mappings":";;;;;;;AAOA,IAAa,4BAAb,cAA+C,mBAA2C;;;cAG9D,IAAI,wBAAwB;sBACpB;oBACF,IAAI,iBAAiB,MAAM,eAAe,mBAAmB;;;iBAJnE;;CAM1B,AAAU,SAAS,OAAqC;AACtD,OAAK,KAAK,MAAM,MAAM"}
1
+ {"version":3,"file":"playback-rate-button-element.js","names":[],"sources":["../../../../src/ui/playback-rate-button/playback-rate-button-element.ts"],"sourcesContent":["import { type MediaPlaybackRateState, PlaybackRateButtonCore, PlaybackRateButtonDataAttrs } from '@videojs/core';\nimport { selectPlaybackRate } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PlaybackRateButtonElement extends MediaButtonElement<PlaybackRateButtonCore> {\n static readonly tagName = 'media-playback-rate-button';\n\n protected readonly core = new PlaybackRateButtonCore();\n protected readonly stateAttrMap = PlaybackRateButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlaybackRate);\n\n protected activate(state: MediaPlaybackRateState): void {\n this.core.cycle(state);\n }\n}\n"],"mappings":";;;;;;AAOA,IAAa,4BAAb,cAA+C,mBAA2C;;;cAG9D,IAAI,wBAAwB;sBACpB;oBACF,IAAI,iBAAiB,MAAM,eAAe,mBAAmB;;;iBAJnE;;CAM1B,SAAmB,OAAqC;AACtD,OAAK,KAAK,MAAM,MAAM"}
@@ -1,9 +1,9 @@
1
1
  import { MediaElement } from "../media-element.js";
2
- import { applyElementProps, applyStateDataAttrs, createPopover, createTransition, getAnchorNameStyle, getAnchorPositionStyle, resolveOffsets } from "@videojs/core/dom";
2
+ import { PositionController } from "../position-controller.js";
3
+ import { applyElementProps, applyStateDataAttrs, createPopover, createTransition, getAnchorNameStyle, getAnchorPositionStyle, getPopupPositionRect, resolveOffsets } from "@videojs/core/dom";
4
+ import { applyStyles, supportsAnchorPositioning, tryHidePopover, tryShowPopover } from "@videojs/utils/dom";
3
5
  import { SnapshotController } from "@videojs/store/html";
4
6
  import { PopoverCore, PopoverDataAttrs } from "@videojs/core";
5
- import { applyStyles, supportsAnchorPositioning, tryHidePopover, tryShowPopover } from "@videojs/utils/dom";
6
-
7
7
  //#region src/ui/popover/popover-element.ts
8
8
  var PopoverElement = class extends MediaElement {
9
9
  constructor(..._args) {
@@ -52,6 +52,7 @@ var PopoverElement = class extends MediaElement {
52
52
  };
53
53
  }
54
54
  #core = new PopoverCore();
55
+ #position = new PositionController(this);
55
56
  #popover = null;
56
57
  #snapshot = null;
57
58
  #disconnect = null;
@@ -107,7 +108,7 @@ var PopoverElement = class extends MediaElement {
107
108
  update(_changed) {
108
109
  super.update(_changed);
109
110
  if (!this.#popover) return;
110
- const triggerEl = this.#findTrigger();
111
+ const triggerEl = this.#position.findTrigger();
111
112
  this.#syncTrigger(triggerEl);
112
113
  const input = this.#popover.input.current;
113
114
  this.#core.setInput(input);
@@ -120,7 +121,10 @@ var PopoverElement = class extends MediaElement {
120
121
  applyElementProps(this.#currentTrigger, this.#core.getTriggerAttrs(state, this.id));
121
122
  applyStyles(this.#currentTrigger, getAnchorNameStyle(this.id));
122
123
  }
123
- if (!state.open) return;
124
+ if (!state.open) {
125
+ this.#position.cleanup();
126
+ return;
127
+ }
124
128
  const posOpts = {
125
129
  side: state.side,
126
130
  align: state.align
@@ -128,18 +132,16 @@ var PopoverElement = class extends MediaElement {
128
132
  if (supportsAnchorPositioning()) applyStyles(this, getAnchorPositionStyle(this.id, posOpts));
129
133
  else {
130
134
  const triggerRect = this.#currentTrigger?.getBoundingClientRect();
131
- const selfRect = this.getBoundingClientRect();
135
+ const selfRect = getPopupPositionRect(this);
132
136
  const boundaryRect = document.documentElement.getBoundingClientRect();
133
137
  const offsets = resolveOffsets(this);
134
138
  applyStyles(this, getAnchorPositionStyle(this.id, posOpts, triggerRect, selfRect, boundaryRect, offsets));
135
139
  }
136
- }
137
- #findTrigger() {
138
- if (!this.id) return null;
139
- return this.getRootNode().querySelector(`[commandfor="${this.id}"]`);
140
+ this.#position.sync(this.#currentTrigger);
140
141
  }
141
142
  #syncTrigger(triggerEl) {
142
143
  if (triggerEl === this.#currentTrigger) return;
144
+ this.#position.cleanup();
143
145
  this.#cleanupTrigger();
144
146
  this.#currentTrigger = triggerEl;
145
147
  this.#popover?.setTriggerElement(triggerEl);
@@ -162,7 +164,7 @@ var PopoverElement = class extends MediaElement {
162
164
  this.#currentTrigger = null;
163
165
  }
164
166
  };
165
-
166
167
  //#endregion
167
168
  export { PopoverElement };
169
+
168
170
  //# sourceMappingURL=popover-element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"popover-element.js","names":["#core","#disconnect","#popover","#snapshot","#cleanupTrigger","#findTrigger","#syncTrigger","#currentTrigger","#triggerAbort"],"sources":["../../../../src/ui/popover/popover-element.ts"],"sourcesContent":["import { PopoverCore, PopoverDataAttrs, type PopoverInput, type PopoverProps } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createPopover,\n createTransition,\n getAnchorNameStyle,\n getAnchorPositionStyle,\n type PopoverApi,\n type PopoverChangeDetails,\n resolveOffsets,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { SnapshotController } from '@videojs/store/html';\nimport { applyStyles, supportsAnchorPositioning, tryHidePopover, tryShowPopover } from '@videojs/utils/dom';\n\nimport { MediaElement } from '../media-element';\n\nexport class PopoverElement extends MediaElement {\n static readonly tagName = 'media-popover';\n\n static override properties = {\n open: { type: Boolean },\n defaultOpen: { type: Boolean, attribute: 'default-open' },\n side: { type: String },\n align: { type: String },\n modal: { type: Boolean },\n closeOnEscape: { type: Boolean, attribute: 'close-on-escape' },\n closeOnOutsideClick: { type: Boolean, attribute: 'close-on-outside-click' },\n openOnHover: { type: Boolean, attribute: 'open-on-hover' },\n delay: { type: Number },\n closeDelay: { type: Number, attribute: 'close-delay' },\n } satisfies PropertyDeclarationMap<keyof PopoverCore.Props>;\n\n open = PopoverCore.defaultProps.open;\n defaultOpen = PopoverCore.defaultProps.defaultOpen;\n side = PopoverCore.defaultProps.side;\n align = PopoverCore.defaultProps.align;\n modal: PopoverProps['modal'] = PopoverCore.defaultProps.modal;\n closeOnEscape = PopoverCore.defaultProps.closeOnEscape;\n closeOnOutsideClick = PopoverCore.defaultProps.closeOnOutsideClick;\n openOnHover = PopoverCore.defaultProps.openOnHover;\n delay = PopoverCore.defaultProps.delay;\n closeDelay = PopoverCore.defaultProps.closeDelay;\n\n readonly #core = new PopoverCore();\n #popover: PopoverApi | null = null;\n #snapshot: SnapshotController<PopoverInput> | null = null;\n\n // Cleanup controllers\n #disconnect: AbortController | null = null;\n #triggerAbort: AbortController | null = null;\n #currentTrigger: HTMLElement | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#disconnect = new AbortController();\n\n this.#popover = createPopover({\n transition: createTransition(),\n onOpenChange: (nextOpen: boolean, details: PopoverChangeDetails) => {\n this.open = nextOpen;\n this.dispatchEvent(new CustomEvent('open-change', { detail: { open: nextOpen, ...details } }));\n },\n closeOnEscape: () => this.closeOnEscape,\n closeOnOutsideClick: () => this.closeOnOutsideClick,\n openOnHover: () => this.openOnHover,\n delay: () => this.delay,\n closeDelay: () => this.closeDelay,\n });\n\n // Register self as the popup element — the element IS the popup.\n this.#popover.setPopupElement(this);\n\n // Apply popup event handlers (pointerenter/leave, focusout) to self.\n applyElementProps(this, this.#popover.popupProps, { signal: this.#disconnect.signal });\n\n // Subscribe to interaction state for reactive updates.\n // Reuse the controller across connect/disconnect cycles to avoid\n // leaking stale controllers in the host's controller set.\n if (this.#snapshot) {\n this.#snapshot.track(this.#popover.input);\n } else {\n this.#snapshot = new SnapshotController(this, this.#popover.input);\n }\n }\n\n protected override firstUpdated(changed: PropertyValues): void {\n super.firstUpdated(changed);\n\n // Uncontrolled mode: open if `defaultOpen` is set. Controlled `open`\n // is already synced by `willUpdate` on the first render cycle.\n if (this.defaultOpen && !this.open) {\n this.#popover?.open();\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n override destroyCallback(): void {\n this.#cleanupTrigger();\n this.#popover?.destroy();\n super.destroyCallback();\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.#core.setProps(this);\n\n // Sync controlled open state\n if (this.#popover && changed.has('open')) {\n const { active: interactionOpen } = this.#popover.input.current;\n if (this.open !== interactionOpen) {\n if (this.open) {\n this.#popover.open();\n } else {\n this.#popover.close();\n }\n }\n }\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n if (!this.#popover) return;\n\n // Discover trigger via commandfor linkage.\n const triggerEl = this.#findTrigger();\n this.#syncTrigger(triggerEl);\n\n // Derive state from core + input.\n const input = this.#popover.input.current;\n this.#core.setInput(input);\n const state = this.#core.getState();\n\n // Apply popup ARIA and data attributes to self.\n applyElementProps(this, this.#core.getPopupAttrs(state));\n applyStateDataAttrs(this, state, PopoverDataAttrs);\n\n // Show/hide via Popover API AFTER data attributes are applied so\n // `data-starting-style` is present before the first visible frame.\n if (state.open) {\n tryShowPopover(this);\n } else {\n tryHidePopover(this);\n }\n\n // Apply trigger ARIA and anchor-name to the discovered trigger.\n if (this.#currentTrigger) {\n applyElementProps(this.#currentTrigger, this.#core.getTriggerAttrs(state, this.id));\n applyStyles(this.#currentTrigger, getAnchorNameStyle(this.id));\n }\n\n // Skip positioning when closed — no rects to measure.\n if (!state.open) return;\n\n // Apply positioning styles to self.\n const posOpts = { side: state.side, align: state.align };\n\n if (supportsAnchorPositioning()) {\n // Native CSS Anchor Positioning — no JS rect measurements needed.\n applyStyles(this, getAnchorPositionStyle(this.id, posOpts));\n } else {\n // JS fallback: measure rects and resolve CSS var offsets.\n const triggerRect = this.#currentTrigger?.getBoundingClientRect();\n const selfRect = this.getBoundingClientRect();\n const boundaryRect = document.documentElement.getBoundingClientRect();\n const offsets = resolveOffsets(this);\n applyStyles(this, getAnchorPositionStyle(this.id, posOpts, triggerRect, selfRect, boundaryRect, offsets));\n }\n }\n\n // --- Trigger discovery ---\n\n #findTrigger(): HTMLElement | null {\n if (!this.id) return null;\n const root = this.getRootNode() as Document | ShadowRoot;\n return root.querySelector<HTMLElement>(`[commandfor=\"${this.id}\"]`);\n }\n\n #syncTrigger(triggerEl: HTMLElement | null): void {\n if (triggerEl === this.#currentTrigger) return;\n\n this.#cleanupTrigger();\n this.#currentTrigger = triggerEl;\n this.#popover?.setTriggerElement(triggerEl);\n\n if (triggerEl && this.#popover) {\n this.#triggerAbort = new AbortController();\n applyElementProps(triggerEl, this.#popover.triggerProps, { signal: this.#triggerAbort.signal });\n }\n }\n\n #cleanupTrigger(): void {\n if (this.#currentTrigger) {\n // Remove ARIA attributes and anchor-name style from the old trigger.\n applyElementProps(this.#currentTrigger, {\n 'aria-expanded': undefined,\n 'aria-haspopup': undefined,\n 'aria-controls': undefined,\n });\n this.#currentTrigger.style.removeProperty('anchor-name');\n }\n\n this.#triggerAbort?.abort();\n this.#triggerAbort = null;\n this.#currentTrigger = null;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"popover-element.js","names":["#core","#position","#disconnect","#popover","#snapshot","#cleanupTrigger","#syncTrigger","#currentTrigger","#triggerAbort"],"sources":["../../../../src/ui/popover/popover-element.ts"],"sourcesContent":["import { PopoverCore, PopoverDataAttrs, type PopoverInput, type PopoverProps } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createPopover,\n createTransition,\n getAnchorNameStyle,\n getAnchorPositionStyle,\n getPopupPositionRect,\n type PopoverApi,\n type PopoverChangeDetails,\n resolveOffsets,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { SnapshotController } from '@videojs/store/html';\nimport { applyStyles, supportsAnchorPositioning, tryHidePopover, tryShowPopover } from '@videojs/utils/dom';\n\nimport { MediaElement } from '../media-element';\nimport { PositionController } from '../position-controller';\n\nexport class PopoverElement extends MediaElement {\n static readonly tagName = 'media-popover';\n\n static override properties = {\n open: { type: Boolean },\n defaultOpen: { type: Boolean, attribute: 'default-open' },\n side: { type: String },\n align: { type: String },\n modal: { type: Boolean },\n closeOnEscape: { type: Boolean, attribute: 'close-on-escape' },\n closeOnOutsideClick: { type: Boolean, attribute: 'close-on-outside-click' },\n openOnHover: { type: Boolean, attribute: 'open-on-hover' },\n delay: { type: Number },\n closeDelay: { type: Number, attribute: 'close-delay' },\n } satisfies PropertyDeclarationMap<keyof PopoverCore.Props>;\n\n open = PopoverCore.defaultProps.open;\n defaultOpen = PopoverCore.defaultProps.defaultOpen;\n side = PopoverCore.defaultProps.side;\n align = PopoverCore.defaultProps.align;\n modal: PopoverProps['modal'] = PopoverCore.defaultProps.modal;\n closeOnEscape = PopoverCore.defaultProps.closeOnEscape;\n closeOnOutsideClick = PopoverCore.defaultProps.closeOnOutsideClick;\n openOnHover = PopoverCore.defaultProps.openOnHover;\n delay = PopoverCore.defaultProps.delay;\n closeDelay = PopoverCore.defaultProps.closeDelay;\n\n readonly #core = new PopoverCore();\n readonly #position = new PositionController(this);\n #popover: PopoverApi | null = null;\n #snapshot: SnapshotController<PopoverInput> | null = null;\n\n // Cleanup controllers\n #disconnect: AbortController | null = null;\n #triggerAbort: AbortController | null = null;\n #currentTrigger: HTMLElement | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.#disconnect = new AbortController();\n\n this.#popover = createPopover({\n transition: createTransition(),\n onOpenChange: (nextOpen: boolean, details: PopoverChangeDetails) => {\n this.open = nextOpen;\n this.dispatchEvent(new CustomEvent('open-change', { detail: { open: nextOpen, ...details } }));\n },\n closeOnEscape: () => this.closeOnEscape,\n closeOnOutsideClick: () => this.closeOnOutsideClick,\n openOnHover: () => this.openOnHover,\n delay: () => this.delay,\n closeDelay: () => this.closeDelay,\n });\n\n // Register self as the popup element — the element IS the popup.\n this.#popover.setPopupElement(this);\n\n // Apply popup event handlers (pointerenter/leave, focusout) to self.\n applyElementProps(this, this.#popover.popupProps, { signal: this.#disconnect.signal });\n\n // Subscribe to interaction state for reactive updates.\n // Reuse the controller across connect/disconnect cycles to avoid\n // leaking stale controllers in the host's controller set.\n if (this.#snapshot) {\n this.#snapshot.track(this.#popover.input);\n } else {\n this.#snapshot = new SnapshotController(this, this.#popover.input);\n }\n }\n\n protected override firstUpdated(changed: PropertyValues): void {\n super.firstUpdated(changed);\n\n // Uncontrolled mode: open if `defaultOpen` is set. Controlled `open`\n // is already synced by `willUpdate` on the first render cycle.\n if (this.defaultOpen && !this.open) {\n this.#popover?.open();\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n override destroyCallback(): void {\n this.#cleanupTrigger();\n this.#popover?.destroy();\n super.destroyCallback();\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.#core.setProps(this);\n\n // Sync controlled open state\n if (this.#popover && changed.has('open')) {\n const { active: interactionOpen } = this.#popover.input.current;\n if (this.open !== interactionOpen) {\n if (this.open) {\n this.#popover.open();\n } else {\n this.#popover.close();\n }\n }\n }\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n if (!this.#popover) return;\n\n // Discover trigger via commandfor linkage.\n const triggerEl = this.#position.findTrigger();\n this.#syncTrigger(triggerEl);\n\n // Derive state from core + input.\n const input = this.#popover.input.current;\n this.#core.setInput(input);\n const state = this.#core.getState();\n\n // Apply popup ARIA and data attributes to self.\n applyElementProps(this, this.#core.getPopupAttrs(state));\n applyStateDataAttrs(this, state, PopoverDataAttrs);\n\n // Show/hide via Popover API AFTER data attributes are applied so\n // `data-starting-style` is present before the first visible frame.\n if (state.open) {\n tryShowPopover(this);\n } else {\n tryHidePopover(this);\n }\n\n // Apply trigger ARIA and anchor-name to the discovered trigger.\n if (this.#currentTrigger) {\n applyElementProps(this.#currentTrigger, this.#core.getTriggerAttrs(state, this.id));\n applyStyles(this.#currentTrigger, getAnchorNameStyle(this.id));\n }\n\n // Skip positioning when closed — no rects to measure.\n if (!state.open) {\n this.#position.cleanup();\n return;\n }\n\n // Apply positioning styles to self.\n const posOpts = { side: state.side, align: state.align };\n\n if (supportsAnchorPositioning()) {\n // Native CSS Anchor Positioning — no JS rect measurements needed.\n applyStyles(this, getAnchorPositionStyle(this.id, posOpts));\n } else {\n // JS fallback: measure rects and resolve CSS var offsets.\n const triggerRect = this.#currentTrigger?.getBoundingClientRect();\n const selfRect = getPopupPositionRect(this);\n const boundaryRect = document.documentElement.getBoundingClientRect();\n const offsets = resolveOffsets(this);\n applyStyles(this, getAnchorPositionStyle(this.id, posOpts, triggerRect, selfRect, boundaryRect, offsets));\n }\n\n this.#position.sync(this.#currentTrigger);\n }\n\n // --- Trigger management ---\n\n #syncTrigger(triggerEl: HTMLElement | null): void {\n if (triggerEl === this.#currentTrigger) return;\n\n this.#position.cleanup();\n this.#cleanupTrigger();\n this.#currentTrigger = triggerEl;\n this.#popover?.setTriggerElement(triggerEl);\n\n if (triggerEl && this.#popover) {\n this.#triggerAbort = new AbortController();\n applyElementProps(triggerEl, this.#popover.triggerProps, { signal: this.#triggerAbort.signal });\n }\n }\n\n #cleanupTrigger(): void {\n if (this.#currentTrigger) {\n // Remove ARIA attributes and anchor-name style from the old trigger.\n applyElementProps(this.#currentTrigger, {\n 'aria-expanded': undefined,\n 'aria-haspopup': undefined,\n 'aria-controls': undefined,\n });\n this.#currentTrigger.style.removeProperty('anchor-name');\n }\n\n this.#triggerAbort?.abort();\n this.#triggerAbort = null;\n this.#currentTrigger = null;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import { supportsAnchorPositioning } from "@videojs/utils/dom";
2
+ //#region src/ui/position-controller.ts
3
+ /**
4
+ * Reactive controller that manages JS-fallback positioning for floating
5
+ * popup elements (tooltips, popovers). Tracks scroll, resize, and
6
+ * ResizeObserver events to keep the popup aligned with its trigger.
7
+ *
8
+ * When native CSS Anchor Positioning is supported, `sync()` is a no-op.
9
+ */
10
+ var PositionController = class {
11
+ #host;
12
+ #abort = null;
13
+ #frame = 0;
14
+ #resizeObserver = null;
15
+ #trigger = null;
16
+ constructor(host) {
17
+ this.#host = host;
18
+ host.addController(this);
19
+ }
20
+ /** Discover a trigger element linked via `commandfor` attribute. */
21
+ findTrigger() {
22
+ if (!this.#host.id) return null;
23
+ return this.#host.getRootNode().querySelector(`[commandfor="${this.#host.id}"]`);
24
+ }
25
+ /** Start or update position tracking for the given trigger. */
26
+ sync(trigger) {
27
+ if (supportsAnchorPositioning()) return;
28
+ if (!trigger) return;
29
+ if (this.#abort && this.#trigger === trigger) return;
30
+ this.cleanup();
31
+ this.#abort = new AbortController();
32
+ this.#trigger = trigger;
33
+ const { signal } = this.#abort;
34
+ const reposition = () => {
35
+ cancelAnimationFrame(this.#frame);
36
+ this.#frame = requestAnimationFrame(() => {
37
+ if (signal.aborted) return;
38
+ this.#host.requestUpdate();
39
+ });
40
+ };
41
+ window.addEventListener("scroll", reposition, {
42
+ capture: true,
43
+ passive: true,
44
+ signal
45
+ });
46
+ window.addEventListener("resize", reposition, { signal });
47
+ if (typeof ResizeObserver === "function") {
48
+ this.#resizeObserver = new ResizeObserver(() => {
49
+ reposition();
50
+ });
51
+ this.#resizeObserver.observe(trigger);
52
+ this.#resizeObserver.observe(this.#host);
53
+ }
54
+ reposition();
55
+ }
56
+ /** Stop all position tracking. */
57
+ cleanup() {
58
+ this.#abort?.abort();
59
+ this.#abort = null;
60
+ this.#trigger = null;
61
+ cancelAnimationFrame(this.#frame);
62
+ this.#frame = 0;
63
+ this.#resizeObserver?.disconnect();
64
+ this.#resizeObserver = null;
65
+ }
66
+ hostDisconnected() {
67
+ this.cleanup();
68
+ }
69
+ hostDestroyed() {
70
+ this.cleanup();
71
+ }
72
+ };
73
+ //#endregion
74
+ export { PositionController };
75
+
76
+ //# sourceMappingURL=position-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position-controller.js","names":["#host","#abort","#trigger","#frame","#resizeObserver"],"sources":["../../../src/ui/position-controller.ts"],"sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from '@videojs/element';\nimport { supportsAnchorPositioning } from '@videojs/utils/dom';\n\nexport type PositionControllerHost = ReactiveControllerHost & HTMLElement;\n\n/**\n * Reactive controller that manages JS-fallback positioning for floating\n * popup elements (tooltips, popovers). Tracks scroll, resize, and\n * ResizeObserver events to keep the popup aligned with its trigger.\n *\n * When native CSS Anchor Positioning is supported, `sync()` is a no-op.\n */\nexport class PositionController implements ReactiveController {\n readonly #host: PositionControllerHost;\n\n #abort: AbortController | null = null;\n #frame = 0;\n #resizeObserver: ResizeObserver | null = null;\n #trigger: HTMLElement | null = null;\n\n constructor(host: PositionControllerHost) {\n this.#host = host;\n host.addController(this);\n }\n\n /** Discover a trigger element linked via `commandfor` attribute. */\n findTrigger(): HTMLElement | null {\n if (!this.#host.id) return null;\n const root = this.#host.getRootNode() as Document | ShadowRoot;\n return root.querySelector<HTMLElement>(`[commandfor=\"${this.#host.id}\"]`);\n }\n\n /** Start or update position tracking for the given trigger. */\n sync(trigger: HTMLElement | null): void {\n if (supportsAnchorPositioning()) return;\n if (!trigger) return;\n if (this.#abort && this.#trigger === trigger) return;\n\n this.cleanup();\n this.#abort = new AbortController();\n this.#trigger = trigger;\n const { signal } = this.#abort;\n\n const reposition = () => {\n cancelAnimationFrame(this.#frame);\n this.#frame = requestAnimationFrame(() => {\n if (signal.aborted) return;\n this.#host.requestUpdate();\n });\n };\n\n window.addEventListener('scroll', reposition, { capture: true, passive: true, signal });\n window.addEventListener('resize', reposition, { signal });\n\n if (typeof ResizeObserver === 'function') {\n this.#resizeObserver = new ResizeObserver(() => {\n reposition();\n });\n this.#resizeObserver.observe(trigger);\n this.#resizeObserver.observe(this.#host);\n }\n\n reposition();\n }\n\n /** Stop all position tracking. */\n cleanup(): void {\n this.#abort?.abort();\n this.#abort = null;\n this.#trigger = null;\n cancelAnimationFrame(this.#frame);\n this.#frame = 0;\n this.#resizeObserver?.disconnect();\n this.#resizeObserver = null;\n }\n\n hostDisconnected(): void {\n this.cleanup();\n }\n\n hostDestroyed(): void {\n this.cleanup();\n }\n}\n"],"mappings":";;;;;;;;;AAYA,IAAa,qBAAb,MAA8D;CAC5D;CAEA,SAAiC;CACjC,SAAS;CACT,kBAAyC;CACzC,WAA+B;CAE/B,YAAY,MAA8B;AACxC,QAAA,OAAa;AACb,OAAK,cAAc,KAAK;;;CAI1B,cAAkC;AAChC,MAAI,CAAC,MAAA,KAAW,GAAI,QAAO;AAE3B,SADa,MAAA,KAAW,aAAa,CACzB,cAA2B,gBAAgB,MAAA,KAAW,GAAG,IAAI;;;CAI3E,KAAK,SAAmC;AACtC,MAAI,2BAA2B,CAAE;AACjC,MAAI,CAAC,QAAS;AACd,MAAI,MAAA,SAAe,MAAA,YAAkB,QAAS;AAE9C,OAAK,SAAS;AACd,QAAA,QAAc,IAAI,iBAAiB;AACnC,QAAA,UAAgB;EAChB,MAAM,EAAE,WAAW,MAAA;EAEnB,MAAM,mBAAmB;AACvB,wBAAqB,MAAA,MAAY;AACjC,SAAA,QAAc,4BAA4B;AACxC,QAAI,OAAO,QAAS;AACpB,UAAA,KAAW,eAAe;KAC1B;;AAGJ,SAAO,iBAAiB,UAAU,YAAY;GAAE,SAAS;GAAM,SAAS;GAAM;GAAQ,CAAC;AACvF,SAAO,iBAAiB,UAAU,YAAY,EAAE,QAAQ,CAAC;AAEzD,MAAI,OAAO,mBAAmB,YAAY;AACxC,SAAA,iBAAuB,IAAI,qBAAqB;AAC9C,gBAAY;KACZ;AACF,SAAA,eAAqB,QAAQ,QAAQ;AACrC,SAAA,eAAqB,QAAQ,MAAA,KAAW;;AAG1C,cAAY;;;CAId,UAAgB;AACd,QAAA,OAAa,OAAO;AACpB,QAAA,QAAc;AACd,QAAA,UAAgB;AAChB,uBAAqB,MAAA,MAAY;AACjC,QAAA,QAAc;AACd,QAAA,gBAAsB,YAAY;AAClC,QAAA,iBAAuB;;CAGzB,mBAAyB;AACvB,OAAK,SAAS;;CAGhB,gBAAsB;AACpB,OAAK,SAAS"}
@@ -3,7 +3,6 @@ import { PlayerController } from "../../player/player-controller.js";
3
3
  import { MediaUIElement } from "../media-ui-element.js";
4
4
  import { selectPlayback } from "@videojs/core/dom";
5
5
  import { PosterCore, PosterDataAttrs } from "@videojs/core";
6
-
7
6
  //#region src/ui/poster/poster-element.ts
8
7
  var PosterElement = class extends MediaUIElement {
9
8
  constructor(..._args) {
@@ -16,7 +15,7 @@ var PosterElement = class extends MediaUIElement {
16
15
  this.tagName = "media-poster";
17
16
  }
18
17
  };
19
-
20
18
  //#endregion
21
19
  export { PosterElement };
20
+
22
21
  //# sourceMappingURL=poster-element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"poster-element.js","names":[],"sources":["../../../../src/ui/poster/poster-element.ts"],"sourcesContent":["import { PosterCore, PosterDataAttrs } from '@videojs/core';\nimport { selectPlayback } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaUIElement } from '../media-ui-element';\n\nexport class PosterElement extends MediaUIElement<PosterCore> {\n static readonly tagName = 'media-poster';\n\n protected readonly core = new PosterCore();\n protected readonly stateAttrMap = PosterDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlayback);\n}\n"],"mappings":";;;;;;;AAOA,IAAa,gBAAb,cAAmC,eAA2B;;;cAGlC,IAAI,YAAY;sBACR;oBACF,IAAI,iBAAiB,MAAM,eAAe,eAAe;;;iBAJ/D"}
1
+ {"version":3,"file":"poster-element.js","names":[],"sources":["../../../../src/ui/poster/poster-element.ts"],"sourcesContent":["import { PosterCore, PosterDataAttrs } from '@videojs/core';\nimport { selectPlayback } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaUIElement } from '../media-ui-element';\n\nexport class PosterElement extends MediaUIElement<PosterCore> {\n static readonly tagName = 'media-poster';\n\n protected readonly core = new PosterCore();\n protected readonly stateAttrMap = PosterDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlayback);\n}\n"],"mappings":";;;;;;AAOA,IAAa,gBAAb,cAAmC,eAA2B;;;cAGlC,IAAI,YAAY;sBACR;oBACF,IAAI,iBAAiB,MAAM,eAAe,eAAe;;;iBAJ/D"}
@@ -3,7 +3,6 @@ import { PlayerController } from "../../player/player-controller.js";
3
3
  import { MediaButtonElement } from "../media-button-element.js";
4
4
  import { selectTime } from "@videojs/core/dom";
5
5
  import { SeekButtonCore, SeekButtonDataAttrs } from "@videojs/core";
6
-
7
6
  //#region src/ui/seek-button/seek-button-element.ts
8
7
  var SeekButtonElement = class extends MediaButtonElement {
9
8
  constructor(..._args) {
@@ -26,7 +25,7 @@ var SeekButtonElement = class extends MediaButtonElement {
26
25
  this.core.seek(state);
27
26
  }
28
27
  };
29
-
30
28
  //#endregion
31
29
  export { SeekButtonElement };
30
+
32
31
  //# sourceMappingURL=seek-button-element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"seek-button-element.js","names":[],"sources":["../../../../src/ui/seek-button/seek-button-element.ts"],"sourcesContent":["import { type MediaTimeState, SeekButtonCore, SeekButtonDataAttrs } from '@videojs/core';\nimport { selectTime } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class SeekButtonElement extends MediaButtonElement<SeekButtonCore> {\n static readonly tagName = 'media-seek-button';\n\n static override properties: PropertyDeclarationMap = {\n ...MediaButtonElement.properties,\n seconds: { type: Number },\n };\n\n seconds = SeekButtonCore.defaultProps.seconds;\n\n protected readonly core = new SeekButtonCore();\n protected readonly stateAttrMap = SeekButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectTime);\n\n protected activate(state: MediaTimeState): void {\n this.core.seek(state);\n }\n}\n"],"mappings":";;;;;;;AAQA,IAAa,oBAAb,cAAuC,mBAAmC;;;iBAQ9D,eAAe,aAAa;cAEZ,IAAI,gBAAgB;sBACZ;oBACF,IAAI,iBAAiB,MAAM,eAAe,WAAW;;;iBAX3D;;;oBAE2B;GACnD,GAAG,mBAAmB;GACtB,SAAS,EAAE,MAAM,QAAQ;GAC1B;;CAQD,AAAU,SAAS,OAA6B;AAC9C,OAAK,KAAK,KAAK,MAAM"}
1
+ {"version":3,"file":"seek-button-element.js","names":[],"sources":["../../../../src/ui/seek-button/seek-button-element.ts"],"sourcesContent":["import { type MediaTimeState, SeekButtonCore, SeekButtonDataAttrs } from '@videojs/core';\nimport { selectTime } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class SeekButtonElement extends MediaButtonElement<SeekButtonCore> {\n static readonly tagName = 'media-seek-button';\n\n static override properties: PropertyDeclarationMap = {\n ...MediaButtonElement.properties,\n seconds: { type: Number },\n };\n\n seconds = SeekButtonCore.defaultProps.seconds;\n\n protected readonly core = new SeekButtonCore();\n protected readonly stateAttrMap = SeekButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectTime);\n\n protected activate(state: MediaTimeState): void {\n this.core.seek(state);\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,oBAAb,cAAuC,mBAAmC;;;iBAQ9D,eAAe,aAAa;cAEZ,IAAI,gBAAgB;sBACZ;oBACF,IAAI,iBAAiB,MAAM,eAAe,WAAW;;;iBAX3D;;;oBAE2B;GACnD,GAAG,mBAAmB;GACtB,SAAS,EAAE,MAAM,QAAQ;GAC1B;;CAQD,SAAmB,OAA6B;AAC9C,OAAK,KAAK,KAAK,MAAM"}
@@ -1,9 +1,6 @@
1
1
  import { createContext } from "@videojs/element/context";
2
-
3
- //#region src/ui/slider/context.ts
4
- const SLIDER_CONTEXT_KEY = Symbol("@videojs/slider");
5
- const sliderContext = createContext(SLIDER_CONTEXT_KEY);
6
-
2
+ const sliderContext = createContext(Symbol("@videojs/slider"));
7
3
  //#endregion
8
4
  export { sliderContext };
5
+
9
6
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/slider/context.ts"],"sourcesContent":["import type { SliderState, StateAttrMap } from '@videojs/core';\nimport type { SliderThumbProps } from '@videojs/core/dom';\nimport { createContext } from '@videojs/element/context';\n\nexport interface SliderContextValue {\n /** Base slider state — children use this for data attributes and value display. */\n state: SliderState;\n /** Maps state keys to `data-*` attribute names for part elements. */\n stateAttrMap: StateAttrMap<SliderState>;\n /** Domain value at the current pointer position (e.g., seconds for time, percent for volume). */\n pointerValue: number;\n /** ARIA attributes for the thumb element (role, tabindex, aria-value*, etc.). */\n thumbAttrs: Record<string, string | number | boolean | undefined>;\n /** Keyboard and focus event handlers for the thumb element. */\n thumbProps: SliderThumbProps;\n /** Optional formatter for value display. Receives domain value and value type. */\n formatValue?: ((value: number, type: 'current' | 'pointer') => string) | undefined;\n}\n\nconst SLIDER_CONTEXT_KEY = Symbol('@videojs/slider');\n\nexport const sliderContext = createContext<SliderContextValue>(SLIDER_CONTEXT_KEY);\n"],"mappings":";;;AAmBA,MAAM,qBAAqB,OAAO,kBAAkB;AAEpD,MAAa,gBAAgB,cAAkC,mBAAmB"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/slider/context.ts"],"sourcesContent":["import type { SliderState, StateAttrMap } from '@videojs/core';\nimport type { SliderThumbProps } from '@videojs/core/dom';\nimport { createContext } from '@videojs/element/context';\n\nexport interface SliderContextValue {\n /** Base slider state — children use this for data attributes and value display. */\n state: SliderState;\n /** Maps state keys to `data-*` attribute names for part elements. */\n stateAttrMap: StateAttrMap<SliderState>;\n /** Domain value at the current pointer position (e.g., seconds for time, percent for volume). */\n pointerValue: number;\n /** ARIA attributes for the thumb element (role, tabindex, aria-value*, etc.). */\n thumbAttrs: Record<string, string | number | boolean | undefined>;\n /** Keyboard and focus event handlers for the thumb element. */\n thumbProps: SliderThumbProps;\n /** Optional formatter for value display. Receives domain value and value type. */\n formatValue?: ((value: number, type: 'current' | 'pointer') => string) | undefined;\n}\n\nconst SLIDER_CONTEXT_KEY = Symbol('@videojs/slider');\n\nexport const sliderContext = createContext<SliderContextValue>(SLIDER_CONTEXT_KEY);\n"],"mappings":";AAqBA,MAAa,gBAAgB,cAFF,OAAO,kBAAkB,CAE8B"}
@@ -1,7 +1,6 @@
1
1
  import { ContextPartElement } from "../context-part-element.js";
2
2
  import { sliderContext } from "./context.js";
3
3
  import { ContextConsumer } from "@videojs/element/context";
4
-
5
4
  //#region src/ui/slider/slider-buffer-element.ts
6
5
  var SliderBufferElement = class extends ContextPartElement {
7
6
  constructor(..._args) {
@@ -15,7 +14,7 @@ var SliderBufferElement = class extends ContextPartElement {
15
14
  this.tagName = "media-slider-buffer";
16
15
  }
17
16
  };
18
-
19
17
  //#endregion
20
18
  export { SliderBufferElement };
19
+
21
20
  //# sourceMappingURL=slider-buffer-element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slider-buffer-element.js","names":[],"sources":["../../../../src/ui/slider/slider-buffer-element.ts"],"sourcesContent":["import type { SliderState } from '@videojs/core';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { sliderContext } from './context';\n\nexport class SliderBufferElement extends ContextPartElement<SliderState> {\n static readonly tagName = 'media-slider-buffer';\n\n protected readonly consumer = new ContextConsumer(this, { context: sliderContext, subscribe: true });\n}\n"],"mappings":";;;;;AAMA,IAAa,sBAAb,cAAyC,mBAAgC;;;kBAGzC,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAe,WAAW;GAAM,CAAC;;;iBAF1E"}
1
+ {"version":3,"file":"slider-buffer-element.js","names":[],"sources":["../../../../src/ui/slider/slider-buffer-element.ts"],"sourcesContent":["import type { SliderState } from '@videojs/core';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { sliderContext } from './context';\n\nexport class SliderBufferElement extends ContextPartElement<SliderState> {\n static readonly tagName = 'media-slider-buffer';\n\n protected readonly consumer = new ContextConsumer(this, { context: sliderContext, subscribe: true });\n}\n"],"mappings":";;;;AAMA,IAAa,sBAAb,cAAyC,mBAAgC;;;kBAGzC,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAe,WAAW;GAAM,CAAC;;;iBAF1E"}
@@ -1,10 +1,9 @@
1
1
  import { MediaElement } from "../media-element.js";
2
2
  import { sliderContext } from "./context.js";
3
3
  import { applyElementProps, applyStateDataAttrs, createSlider, getSliderCSSVars } from "@videojs/core/dom";
4
+ import { applyStyles, isRTL } from "@videojs/utils/dom";
4
5
  import { ContextProvider } from "@videojs/element/context";
5
6
  import { SliderCore, SliderDataAttrs } from "@videojs/core";
6
- import { applyStyles, isRTL } from "@videojs/utils/dom";
7
-
8
7
  //#region src/ui/slider/slider-element.ts
9
8
  var SliderElement = class extends MediaElement {
10
9
  constructor(..._args) {
@@ -116,7 +115,7 @@ var SliderElement = class extends MediaElement {
116
115
  });
117
116
  }
118
117
  };
119
-
120
118
  //#endregion
121
119
  export { SliderElement };
120
+
122
121
  //# sourceMappingURL=slider-element.js.map