@videojs/html 10.0.0-alpha.3 → 10.0.0-alpha.5

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 (453) hide show
  1. package/dist/default/define/audio/minimal-skin.css +11 -0
  2. package/dist/default/define/audio/minimal-skin.js +26 -0
  3. package/dist/default/define/audio/minimal-skin.js.map +1 -0
  4. package/dist/default/define/audio/player.js +8 -4
  5. package/dist/default/define/audio/player.js.map +1 -1
  6. package/dist/default/define/audio/skin.css +12 -0
  7. package/dist/default/define/audio/skin.js +26 -0
  8. package/dist/default/define/audio/skin.js.map +1 -0
  9. package/dist/default/define/background/player.js +8 -4
  10. package/dist/default/define/background/player.js.map +1 -1
  11. package/dist/default/define/background/skin.css +27 -0
  12. package/dist/default/define/background/skin.js +35 -0
  13. package/dist/default/define/background/skin.js.map +1 -0
  14. package/dist/default/define/background/video.js +3 -0
  15. package/dist/default/define/media/background-video.js +2 -1
  16. package/dist/default/define/media/background-video.js.map +1 -1
  17. package/dist/default/define/media/container.js +8 -0
  18. package/dist/default/define/media/container.js.map +1 -0
  19. package/dist/default/define/media/hls-video.js +2 -1
  20. package/dist/default/define/media/hls-video.js.map +1 -1
  21. package/dist/default/define/safe-define.js +9 -0
  22. package/dist/default/define/safe-define.js.map +1 -0
  23. package/dist/default/define/skin-mixin.js +35 -0
  24. package/dist/default/define/skin-mixin.js.map +1 -0
  25. package/dist/default/define/ui/buffering-indicator.js +2 -1
  26. package/dist/default/define/ui/buffering-indicator.js.map +1 -1
  27. package/dist/default/define/ui/controls-group.js +8 -0
  28. package/dist/default/define/ui/controls-group.js.map +1 -0
  29. package/dist/default/define/ui/controls.js +3 -2
  30. package/dist/default/define/ui/controls.js.map +1 -1
  31. package/dist/default/define/ui/fullscreen-button.js +2 -1
  32. package/dist/default/define/ui/fullscreen-button.js.map +1 -1
  33. package/dist/default/define/ui/mute-button.js +2 -1
  34. package/dist/default/define/ui/mute-button.js.map +1 -1
  35. package/dist/default/define/ui/pip-button.js +2 -1
  36. package/dist/default/define/ui/pip-button.js.map +1 -1
  37. package/dist/default/define/ui/play-button.js +2 -1
  38. package/dist/default/define/ui/play-button.js.map +1 -1
  39. package/dist/default/define/ui/playback-rate-button.js +8 -0
  40. package/dist/default/define/ui/playback-rate-button.js.map +1 -0
  41. package/dist/default/define/ui/popover.js +8 -0
  42. package/dist/default/define/ui/popover.js.map +1 -0
  43. package/dist/default/define/ui/poster.js +2 -1
  44. package/dist/default/define/ui/poster.js.map +1 -1
  45. package/dist/default/define/ui/seek-button.js +2 -1
  46. package/dist/default/define/ui/seek-button.js.map +1 -1
  47. package/dist/default/define/ui/slider-buffer.js +8 -0
  48. package/dist/default/define/ui/slider-buffer.js.map +1 -0
  49. package/dist/default/define/ui/slider-fill.js +8 -0
  50. package/dist/default/define/ui/slider-fill.js.map +1 -0
  51. package/dist/default/define/ui/slider-thumb.js +8 -0
  52. package/dist/default/define/ui/slider-thumb.js.map +1 -0
  53. package/dist/default/define/ui/slider-track.js +8 -0
  54. package/dist/default/define/ui/slider-track.js.map +1 -0
  55. package/dist/default/define/ui/slider-value.js +8 -0
  56. package/dist/default/define/ui/slider-value.js.map +1 -0
  57. package/dist/default/define/ui/slider.js +16 -0
  58. package/dist/default/define/ui/slider.js.map +1 -0
  59. package/dist/default/define/ui/thumbnail.js +8 -0
  60. package/dist/default/define/ui/thumbnail.js.map +1 -0
  61. package/dist/default/define/ui/time-group.js +8 -0
  62. package/dist/default/define/ui/time-group.js.map +1 -0
  63. package/dist/default/define/ui/time-separator.js +8 -0
  64. package/dist/default/define/ui/time-separator.js.map +1 -0
  65. package/dist/default/define/ui/time-slider.js +18 -0
  66. package/dist/default/define/ui/time-slider.js.map +1 -0
  67. package/dist/default/define/ui/time.js +4 -3
  68. package/dist/default/define/ui/time.js.map +1 -1
  69. package/dist/default/define/ui/volume-slider.js +16 -0
  70. package/dist/default/define/ui/volume-slider.js.map +1 -0
  71. package/dist/default/define/video/minimal-skin.css +762 -0
  72. package/dist/default/define/video/minimal-skin.js +131 -0
  73. package/dist/default/define/video/minimal-skin.js.map +1 -0
  74. package/dist/default/define/video/minimal-skin.tailwind.js +134 -0
  75. package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -0
  76. package/dist/default/define/video/player.js +8 -4
  77. package/dist/default/define/video/player.js.map +1 -1
  78. package/dist/default/define/video/skin.css +763 -0
  79. package/dist/default/define/video/skin.js +125 -0
  80. package/dist/default/define/video/skin.js.map +1 -0
  81. package/dist/default/define/video/skin.tailwind.js +127 -0
  82. package/dist/default/define/video/skin.tailwind.js.map +1 -0
  83. package/dist/default/icons/dist/render/default/index.js +27 -0
  84. package/dist/default/icons/dist/render/default/index.js.map +1 -0
  85. package/dist/default/icons/dist/render/minimal/index.js +27 -0
  86. package/dist/default/icons/dist/render/minimal/index.js.map +1 -0
  87. package/dist/default/index.js +17 -3
  88. package/dist/default/media/background-video/index.js +14 -8
  89. package/dist/default/media/background-video/index.js.map +1 -1
  90. package/dist/default/media/container-element.js +15 -0
  91. package/dist/default/media/container-element.js.map +1 -0
  92. package/dist/default/player/create-player.js +0 -5
  93. package/dist/default/player/create-player.js.map +1 -1
  94. package/dist/default/player/player-controller.js +3 -0
  95. package/dist/default/player/player-controller.js.map +1 -1
  96. package/dist/default/presets/audio.js +5 -0
  97. package/dist/default/presets/background.js +3 -0
  98. package/dist/default/presets/video.js +7 -0
  99. package/dist/default/skins/dist/default/video/default.tailwind.js +90 -0
  100. package/dist/default/skins/dist/default/video/default.tailwind.js.map +1 -0
  101. package/dist/default/skins/dist/default/video/minimal.tailwind.js +86 -0
  102. package/dist/default/skins/dist/default/video/minimal.tailwind.js.map +1 -0
  103. package/dist/default/store/container-mixin.js +14 -7
  104. package/dist/default/store/container-mixin.js.map +1 -1
  105. package/dist/default/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
  106. package/dist/default/ui/context-part-element.js +28 -0
  107. package/dist/default/ui/context-part-element.js.map +1 -0
  108. package/dist/default/ui/controls/context.js +9 -0
  109. package/dist/default/ui/controls/context.js.map +1 -0
  110. package/dist/default/ui/controls/controls-element.js +15 -6
  111. package/dist/default/ui/controls/controls-element.js.map +1 -1
  112. package/dist/default/ui/controls/controls-group-element.js +11 -2
  113. package/dist/default/ui/controls/controls-group-element.js.map +1 -1
  114. package/dist/default/ui/fullscreen-button/fullscreen-button-element.js +8 -39
  115. package/dist/default/ui/fullscreen-button/fullscreen-button-element.js.map +1 -1
  116. package/dist/default/ui/media-button-element.js +50 -0
  117. package/dist/default/ui/media-button-element.js.map +1 -0
  118. package/dist/default/ui/media-ui-element.js +22 -0
  119. package/dist/default/ui/media-ui-element.js.map +1 -0
  120. package/dist/default/ui/mute-button/mute-button-element.js +8 -39
  121. package/dist/default/ui/mute-button/mute-button-element.js.map +1 -1
  122. package/dist/default/ui/pip-button/pip-button-element.js +8 -39
  123. package/dist/default/ui/pip-button/pip-button-element.js.map +1 -1
  124. package/dist/default/ui/play-button/play-button-element.js +8 -39
  125. package/dist/default/ui/play-button/play-button-element.js.map +1 -1
  126. package/dist/default/ui/playback-rate-button/playback-rate-button-element.js +25 -0
  127. package/dist/default/ui/playback-rate-button/playback-rate-button-element.js.map +1 -0
  128. package/dist/default/ui/popover/popover-element.js +163 -0
  129. package/dist/default/ui/popover/popover-element.js.map +1 -0
  130. package/dist/default/ui/poster/poster-element.js +9 -14
  131. package/dist/default/ui/poster/poster-element.js.map +1 -1
  132. package/dist/default/ui/seek-button/seek-button-element.js +10 -36
  133. package/dist/default/ui/seek-button/seek-button-element.js.map +1 -1
  134. package/dist/default/ui/slider/context.js +9 -0
  135. package/dist/default/ui/slider/context.js.map +1 -0
  136. package/dist/default/ui/slider/slider-buffer-element.js +21 -0
  137. package/dist/default/ui/slider/slider-buffer-element.js.map +1 -0
  138. package/dist/default/ui/slider/slider-element.js +117 -0
  139. package/dist/default/ui/slider/slider-element.js.map +1 -0
  140. package/dist/default/ui/slider/slider-fill-element.js +21 -0
  141. package/dist/default/ui/slider/slider-fill-element.js.map +1 -0
  142. package/dist/default/ui/slider/slider-thumb-element.js +43 -0
  143. package/dist/default/ui/slider/slider-thumb-element.js.map +1 -0
  144. package/dist/default/ui/slider/slider-track-element.js +21 -0
  145. package/dist/default/ui/slider/slider-track-element.js.map +1 -0
  146. package/dist/default/ui/slider/slider-value-element.js +38 -0
  147. package/dist/default/ui/slider/slider-value-element.js.map +1 -0
  148. package/dist/default/ui/thumbnail/thumbnail-element.js +136 -0
  149. package/dist/default/ui/thumbnail/thumbnail-element.js.map +1 -0
  150. package/dist/default/ui/time/time-element.js +8 -16
  151. package/dist/default/ui/time/time-element.js.map +1 -1
  152. package/dist/default/ui/time-slider/time-slider-element.js +128 -0
  153. package/dist/default/ui/time-slider/time-slider-element.js.map +1 -0
  154. package/dist/default/ui/volume-slider/volume-slider-element.js +117 -0
  155. package/dist/default/ui/volume-slider/volume-slider-element.js.map +1 -0
  156. package/dist/dev/define/audio/minimal-skin.css +11 -0
  157. package/dist/dev/define/audio/minimal-skin.d.ts +17 -0
  158. package/dist/dev/define/audio/minimal-skin.d.ts.map +1 -0
  159. package/dist/dev/define/audio/minimal-skin.js +26 -0
  160. package/dist/dev/define/audio/minimal-skin.js.map +1 -0
  161. package/dist/dev/define/audio/player.d.ts +4 -3
  162. package/dist/dev/define/audio/player.d.ts.map +1 -1
  163. package/dist/dev/define/audio/player.js +8 -4
  164. package/dist/dev/define/audio/player.js.map +1 -1
  165. package/dist/dev/define/audio/skin.css +12 -0
  166. package/dist/dev/define/audio/skin.d.ts +17 -1
  167. package/dist/dev/define/audio/skin.d.ts.map +1 -0
  168. package/dist/dev/define/audio/skin.js +26 -0
  169. package/dist/dev/define/audio/skin.js.map +1 -0
  170. package/dist/dev/define/background/player.d.ts +4 -3
  171. package/dist/dev/define/background/player.d.ts.map +1 -1
  172. package/dist/dev/define/background/player.js +8 -4
  173. package/dist/dev/define/background/player.js.map +1 -1
  174. package/dist/dev/define/background/skin.css +27 -0
  175. package/dist/dev/define/background/skin.d.ts +20 -1
  176. package/dist/dev/define/background/skin.d.ts.map +1 -0
  177. package/dist/dev/define/background/skin.js +35 -0
  178. package/dist/dev/define/background/skin.js.map +1 -0
  179. package/dist/dev/define/background/video.d.ts +2 -0
  180. package/dist/dev/define/background/video.js +3 -0
  181. package/dist/dev/define/media/background-video.d.ts.map +1 -1
  182. package/dist/dev/define/media/background-video.js +2 -1
  183. package/dist/dev/define/media/background-video.js.map +1 -1
  184. package/dist/dev/define/media/container.d.ts +9 -0
  185. package/dist/dev/define/media/container.d.ts.map +1 -0
  186. package/dist/dev/define/media/container.js +8 -0
  187. package/dist/dev/define/media/container.js.map +1 -0
  188. package/dist/dev/define/media/hls-video.d.ts.map +1 -1
  189. package/dist/dev/define/media/hls-video.js +2 -1
  190. package/dist/dev/define/media/hls-video.js.map +1 -1
  191. package/dist/dev/define/safe-define.d.ts +9 -0
  192. package/dist/dev/define/safe-define.d.ts.map +1 -0
  193. package/dist/dev/define/safe-define.js +9 -0
  194. package/dist/dev/define/safe-define.js.map +1 -0
  195. package/dist/dev/define/skin-mixin.d.ts +13 -0
  196. package/dist/dev/define/skin-mixin.d.ts.map +1 -0
  197. package/dist/dev/define/skin-mixin.js +35 -0
  198. package/dist/dev/define/skin-mixin.js.map +1 -0
  199. package/dist/dev/define/ui/buffering-indicator.d.ts.map +1 -1
  200. package/dist/dev/define/ui/buffering-indicator.js +2 -1
  201. package/dist/dev/define/ui/buffering-indicator.js.map +1 -1
  202. package/dist/dev/define/ui/controls-group.d.ts +9 -0
  203. package/dist/dev/define/ui/controls-group.d.ts.map +1 -0
  204. package/dist/dev/define/ui/controls-group.js +8 -0
  205. package/dist/dev/define/ui/controls-group.js.map +1 -0
  206. package/dist/dev/define/ui/controls.d.ts +0 -2
  207. package/dist/dev/define/ui/controls.d.ts.map +1 -1
  208. package/dist/dev/define/ui/controls.js +3 -2
  209. package/dist/dev/define/ui/controls.js.map +1 -1
  210. package/dist/dev/define/ui/fullscreen-button.d.ts.map +1 -1
  211. package/dist/dev/define/ui/fullscreen-button.js +2 -1
  212. package/dist/dev/define/ui/fullscreen-button.js.map +1 -1
  213. package/dist/dev/define/ui/mute-button.d.ts.map +1 -1
  214. package/dist/dev/define/ui/mute-button.js +2 -1
  215. package/dist/dev/define/ui/mute-button.js.map +1 -1
  216. package/dist/dev/define/ui/pip-button.d.ts.map +1 -1
  217. package/dist/dev/define/ui/pip-button.js +2 -1
  218. package/dist/dev/define/ui/pip-button.js.map +1 -1
  219. package/dist/dev/define/ui/play-button.d.ts.map +1 -1
  220. package/dist/dev/define/ui/play-button.js +2 -1
  221. package/dist/dev/define/ui/play-button.js.map +1 -1
  222. package/dist/dev/define/ui/playback-rate-button.d.ts +9 -0
  223. package/dist/dev/define/ui/playback-rate-button.d.ts.map +1 -0
  224. package/dist/dev/define/ui/playback-rate-button.js +8 -0
  225. package/dist/dev/define/ui/playback-rate-button.js.map +1 -0
  226. package/dist/dev/define/ui/popover.d.ts +9 -0
  227. package/dist/dev/define/ui/popover.d.ts.map +1 -0
  228. package/dist/dev/define/ui/popover.js +8 -0
  229. package/dist/dev/define/ui/popover.js.map +1 -0
  230. package/dist/dev/define/ui/poster.d.ts.map +1 -1
  231. package/dist/dev/define/ui/poster.js +2 -1
  232. package/dist/dev/define/ui/poster.js.map +1 -1
  233. package/dist/dev/define/ui/seek-button.d.ts.map +1 -1
  234. package/dist/dev/define/ui/seek-button.js +2 -1
  235. package/dist/dev/define/ui/seek-button.js.map +1 -1
  236. package/dist/dev/define/ui/slider-buffer.d.ts +9 -0
  237. package/dist/dev/define/ui/slider-buffer.d.ts.map +1 -0
  238. package/dist/dev/define/ui/slider-buffer.js +8 -0
  239. package/dist/dev/define/ui/slider-buffer.js.map +1 -0
  240. package/dist/dev/define/ui/slider-fill.d.ts +9 -0
  241. package/dist/dev/define/ui/slider-fill.d.ts.map +1 -0
  242. package/dist/dev/define/ui/slider-fill.js +8 -0
  243. package/dist/dev/define/ui/slider-fill.js.map +1 -0
  244. package/dist/dev/define/ui/slider-thumb.d.ts +9 -0
  245. package/dist/dev/define/ui/slider-thumb.d.ts.map +1 -0
  246. package/dist/dev/define/ui/slider-thumb.js +8 -0
  247. package/dist/dev/define/ui/slider-thumb.js.map +1 -0
  248. package/dist/dev/define/ui/slider-track.d.ts +9 -0
  249. package/dist/dev/define/ui/slider-track.d.ts.map +1 -0
  250. package/dist/dev/define/ui/slider-track.js +8 -0
  251. package/dist/dev/define/ui/slider-track.js.map +1 -0
  252. package/dist/dev/define/ui/slider-value.d.ts +9 -0
  253. package/dist/dev/define/ui/slider-value.d.ts.map +1 -0
  254. package/dist/dev/define/ui/slider-value.js +8 -0
  255. package/dist/dev/define/ui/slider-value.js.map +1 -0
  256. package/dist/dev/define/ui/slider.d.ts +9 -0
  257. package/dist/dev/define/ui/slider.d.ts.map +1 -0
  258. package/dist/dev/define/ui/slider.js +16 -0
  259. package/dist/dev/define/ui/slider.js.map +1 -0
  260. package/dist/dev/define/ui/thumbnail.d.ts +9 -0
  261. package/dist/dev/define/ui/thumbnail.d.ts.map +1 -0
  262. package/dist/dev/define/ui/thumbnail.js +8 -0
  263. package/dist/dev/define/ui/thumbnail.js.map +1 -0
  264. package/dist/dev/define/ui/time-group.d.ts +9 -0
  265. package/dist/dev/define/ui/time-group.d.ts.map +1 -0
  266. package/dist/dev/define/ui/time-group.js +8 -0
  267. package/dist/dev/define/ui/time-group.js.map +1 -0
  268. package/dist/dev/define/ui/time-separator.d.ts +9 -0
  269. package/dist/dev/define/ui/time-separator.d.ts.map +1 -0
  270. package/dist/dev/define/ui/time-separator.js +8 -0
  271. package/dist/dev/define/ui/time-separator.js.map +1 -0
  272. package/dist/dev/define/ui/time-slider.d.ts +9 -0
  273. package/dist/dev/define/ui/time-slider.d.ts.map +1 -0
  274. package/dist/dev/define/ui/time-slider.js +18 -0
  275. package/dist/dev/define/ui/time-slider.js.map +1 -0
  276. package/dist/dev/define/ui/time.d.ts +0 -4
  277. package/dist/dev/define/ui/time.d.ts.map +1 -1
  278. package/dist/dev/define/ui/time.js +4 -3
  279. package/dist/dev/define/ui/time.js.map +1 -1
  280. package/dist/dev/define/ui/volume-slider.d.ts +9 -0
  281. package/dist/dev/define/ui/volume-slider.d.ts.map +1 -0
  282. package/dist/dev/define/ui/volume-slider.js +16 -0
  283. package/dist/dev/define/ui/volume-slider.js.map +1 -0
  284. package/dist/dev/define/video/minimal-skin.css +762 -0
  285. package/dist/dev/define/video/minimal-skin.d.ts +30 -0
  286. package/dist/dev/define/video/minimal-skin.d.ts.map +1 -0
  287. package/dist/dev/define/video/minimal-skin.js +131 -0
  288. package/dist/dev/define/video/minimal-skin.js.map +1 -0
  289. package/dist/dev/define/video/minimal-skin.tailwind.d.ts +30 -0
  290. package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -0
  291. package/dist/dev/define/video/minimal-skin.tailwind.js +134 -0
  292. package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -0
  293. package/dist/dev/define/video/player.d.ts +4 -3
  294. package/dist/dev/define/video/player.d.ts.map +1 -1
  295. package/dist/dev/define/video/player.js +8 -4
  296. package/dist/dev/define/video/player.js.map +1 -1
  297. package/dist/dev/define/video/skin.css +763 -0
  298. package/dist/dev/define/video/skin.d.ts +30 -1
  299. package/dist/dev/define/video/skin.d.ts.map +1 -0
  300. package/dist/dev/define/video/skin.js +125 -0
  301. package/dist/dev/define/video/skin.js.map +1 -0
  302. package/dist/dev/define/video/skin.tailwind.d.ts +30 -0
  303. package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -0
  304. package/dist/dev/define/video/skin.tailwind.js +127 -0
  305. package/dist/dev/define/video/skin.tailwind.js.map +1 -0
  306. package/dist/dev/icons/dist/render/default/index.js +27 -0
  307. package/dist/dev/icons/dist/render/default/index.js.map +1 -0
  308. package/dist/dev/icons/dist/render/minimal/index.js +27 -0
  309. package/dist/dev/icons/dist/render/minimal/index.js.map +1 -0
  310. package/dist/dev/index.d.ts +19 -4
  311. package/dist/dev/index.js +17 -3
  312. package/dist/dev/media/background-video/index.d.ts +4 -4
  313. package/dist/dev/media/background-video/index.d.ts.map +1 -1
  314. package/dist/dev/media/background-video/index.js +14 -8
  315. package/dist/dev/media/background-video/index.js.map +1 -1
  316. package/dist/dev/media/container-element.d.ts +13 -0
  317. package/dist/dev/media/container-element.d.ts.map +1 -0
  318. package/dist/dev/media/container-element.js +15 -0
  319. package/dist/dev/media/container-element.js.map +1 -0
  320. package/dist/dev/player/create-player.d.ts +6 -14
  321. package/dist/dev/player/create-player.d.ts.map +1 -1
  322. package/dist/dev/player/create-player.js +0 -5
  323. package/dist/dev/player/create-player.js.map +1 -1
  324. package/dist/dev/player/player-controller.d.ts +1 -0
  325. package/dist/dev/player/player-controller.d.ts.map +1 -1
  326. package/dist/dev/player/player-controller.js +3 -0
  327. package/dist/dev/player/player-controller.js.map +1 -1
  328. package/dist/dev/presets/audio.d.ts +4 -0
  329. package/dist/dev/presets/audio.js +5 -0
  330. package/dist/dev/presets/background.d.ts +2 -0
  331. package/dist/dev/presets/background.js +3 -0
  332. package/dist/dev/presets/video.d.ts +6 -0
  333. package/dist/dev/presets/video.js +7 -0
  334. package/dist/dev/skins/dist/default/video/default.tailwind.js +90 -0
  335. package/dist/dev/skins/dist/default/video/default.tailwind.js.map +1 -0
  336. package/dist/dev/skins/dist/default/video/minimal.tailwind.js +86 -0
  337. package/dist/dev/skins/dist/default/video/minimal.tailwind.js.map +1 -0
  338. package/dist/dev/store/container-mixin.d.ts +1 -1
  339. package/dist/dev/store/container-mixin.js +14 -7
  340. package/dist/dev/store/container-mixin.js.map +1 -1
  341. package/dist/dev/store/provider-mixin.d.ts +1 -1
  342. package/dist/dev/store/types.d.ts +1 -3
  343. package/dist/dev/store/types.d.ts.map +1 -1
  344. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js +2 -2
  345. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
  346. package/dist/dev/ui/context-part-element.d.ts +32 -0
  347. package/dist/dev/ui/context-part-element.d.ts.map +1 -0
  348. package/dist/dev/ui/context-part-element.js +28 -0
  349. package/dist/dev/ui/context-part-element.js.map +1 -0
  350. package/dist/dev/ui/controls/context.d.ts +10 -0
  351. package/dist/dev/ui/controls/context.d.ts.map +1 -0
  352. package/dist/dev/ui/controls/context.js +9 -0
  353. package/dist/dev/ui/controls/context.js.map +1 -0
  354. package/dist/dev/ui/controls/controls-element.d.ts +1 -1
  355. package/dist/dev/ui/controls/controls-element.d.ts.map +1 -1
  356. package/dist/dev/ui/controls/controls-element.js +17 -8
  357. package/dist/dev/ui/controls/controls-element.js.map +1 -1
  358. package/dist/dev/ui/controls/controls-group-element.d.ts +8 -2
  359. package/dist/dev/ui/controls/controls-group-element.d.ts.map +1 -1
  360. package/dist/dev/ui/controls/controls-group-element.js +11 -2
  361. package/dist/dev/ui/controls/controls-group-element.js.map +1 -1
  362. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts +11 -18
  363. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts.map +1 -1
  364. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js +8 -40
  365. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js.map +1 -1
  366. package/dist/dev/ui/media-button-element.d.ts +24 -0
  367. package/dist/dev/ui/media-button-element.d.ts.map +1 -0
  368. package/dist/dev/ui/media-button-element.js +51 -0
  369. package/dist/dev/ui/media-button-element.js.map +1 -0
  370. package/dist/dev/ui/media-ui-element.d.ts +17 -0
  371. package/dist/dev/ui/media-ui-element.d.ts.map +1 -0
  372. package/dist/dev/ui/media-ui-element.js +23 -0
  373. package/dist/dev/ui/media-ui-element.js.map +1 -0
  374. package/dist/dev/ui/mute-button/mute-button-element.d.ts +11 -18
  375. package/dist/dev/ui/mute-button/mute-button-element.d.ts.map +1 -1
  376. package/dist/dev/ui/mute-button/mute-button-element.js +8 -40
  377. package/dist/dev/ui/mute-button/mute-button-element.js.map +1 -1
  378. package/dist/dev/ui/pip-button/pip-button-element.d.ts +11 -18
  379. package/dist/dev/ui/pip-button/pip-button-element.d.ts.map +1 -1
  380. package/dist/dev/ui/pip-button/pip-button-element.js +8 -40
  381. package/dist/dev/ui/pip-button/pip-button-element.js.map +1 -1
  382. package/dist/dev/ui/play-button/play-button-element.d.ts +12 -18
  383. package/dist/dev/ui/play-button/play-button-element.d.ts.map +1 -1
  384. package/dist/dev/ui/play-button/play-button-element.js +8 -40
  385. package/dist/dev/ui/play-button/play-button-element.js.map +1 -1
  386. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts +18 -0
  387. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts.map +1 -0
  388. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js +25 -0
  389. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js.map +1 -0
  390. package/dist/dev/ui/popover/popover-element.d.ts +65 -0
  391. package/dist/dev/ui/popover/popover-element.d.ts.map +1 -0
  392. package/dist/dev/ui/popover/popover-element.js +163 -0
  393. package/dist/dev/ui/popover/popover-element.js.map +1 -0
  394. package/dist/dev/ui/poster/poster-element.d.ts +11 -6
  395. package/dist/dev/ui/poster/poster-element.d.ts.map +1 -1
  396. package/dist/dev/ui/poster/poster-element.js +9 -15
  397. package/dist/dev/ui/poster/poster-element.js.map +1 -1
  398. package/dist/dev/ui/seek-button/seek-button-element.d.ts +14 -22
  399. package/dist/dev/ui/seek-button/seek-button-element.d.ts.map +1 -1
  400. package/dist/dev/ui/seek-button/seek-button-element.js +10 -37
  401. package/dist/dev/ui/seek-button/seek-button-element.js.map +1 -1
  402. package/dist/dev/ui/slider/context.d.ts +24 -0
  403. package/dist/dev/ui/slider/context.d.ts.map +1 -0
  404. package/dist/dev/ui/slider/context.js +9 -0
  405. package/dist/dev/ui/slider/context.js.map +1 -0
  406. package/dist/dev/ui/slider/slider-buffer-element.d.ts +15 -0
  407. package/dist/dev/ui/slider/slider-buffer-element.d.ts.map +1 -0
  408. package/dist/dev/ui/slider/slider-buffer-element.js +21 -0
  409. package/dist/dev/ui/slider/slider-buffer-element.js.map +1 -0
  410. package/dist/dev/ui/slider/slider-element.d.ts +56 -0
  411. package/dist/dev/ui/slider/slider-element.d.ts.map +1 -0
  412. package/dist/dev/ui/slider/slider-element.js +117 -0
  413. package/dist/dev/ui/slider/slider-element.js.map +1 -0
  414. package/dist/dev/ui/slider/slider-events.d.ts +18 -0
  415. package/dist/dev/ui/slider/slider-events.d.ts.map +1 -0
  416. package/dist/dev/ui/slider/slider-fill-element.d.ts +15 -0
  417. package/dist/dev/ui/slider/slider-fill-element.d.ts.map +1 -0
  418. package/dist/dev/ui/slider/slider-fill-element.js +21 -0
  419. package/dist/dev/ui/slider/slider-fill-element.js.map +1 -0
  420. package/dist/dev/ui/slider/slider-thumb-element.d.ts +14 -0
  421. package/dist/dev/ui/slider/slider-thumb-element.d.ts.map +1 -0
  422. package/dist/dev/ui/slider/slider-thumb-element.js +43 -0
  423. package/dist/dev/ui/slider/slider-thumb-element.js.map +1 -0
  424. package/dist/dev/ui/slider/slider-track-element.d.ts +15 -0
  425. package/dist/dev/ui/slider/slider-track-element.d.ts.map +1 -0
  426. package/dist/dev/ui/slider/slider-track-element.js +21 -0
  427. package/dist/dev/ui/slider/slider-track-element.js.map +1 -0
  428. package/dist/dev/ui/slider/slider-value-element.d.ts +19 -0
  429. package/dist/dev/ui/slider/slider-value-element.d.ts.map +1 -0
  430. package/dist/dev/ui/slider/slider-value-element.js +38 -0
  431. package/dist/dev/ui/slider/slider-value-element.js.map +1 -0
  432. package/dist/dev/ui/thumbnail/thumbnail-element.d.ts +42 -0
  433. package/dist/dev/ui/thumbnail/thumbnail-element.d.ts.map +1 -0
  434. package/dist/dev/ui/thumbnail/thumbnail-element.js +136 -0
  435. package/dist/dev/ui/thumbnail/thumbnail-element.js.map +1 -0
  436. package/dist/dev/ui/time/time-element.d.ts.map +1 -1
  437. package/dist/dev/ui/time/time-element.js +10 -18
  438. package/dist/dev/ui/time/time-element.js.map +1 -1
  439. package/dist/dev/ui/time-slider/time-slider-element.d.ts +49 -0
  440. package/dist/dev/ui/time-slider/time-slider-element.d.ts.map +1 -0
  441. package/dist/dev/ui/time-slider/time-slider-element.js +129 -0
  442. package/dist/dev/ui/time-slider/time-slider-element.js.map +1 -0
  443. package/dist/dev/ui/volume-slider/volume-slider-element.d.ts +44 -0
  444. package/dist/dev/ui/volume-slider/volume-slider-element.d.ts.map +1 -0
  445. package/dist/dev/ui/volume-slider/volume-slider-element.js +118 -0
  446. package/dist/dev/ui/volume-slider/volume-slider-element.js.map +1 -0
  447. package/package.json +31 -5
  448. package/dist/default/player/player-mixin.js +0 -23
  449. package/dist/default/player/player-mixin.js.map +0 -1
  450. package/dist/dev/player/player-mixin.d.ts +0 -20
  451. package/dist/dev/player/player-mixin.d.ts.map +0 -1
  452. package/dist/dev/player/player-mixin.js +0 -23
  453. package/dist/dev/player/player-mixin.js.map +0 -1
@@ -0,0 +1,86 @@
1
+ import { cn } from "@videojs/utils/style";
2
+
3
+ //#region ../skins/dist/default/video/minimal.tailwind.js
4
+ const icon = cn("block [grid-area:1/1] size-4.5", "drop-shadow-[0_1px_0_var(--tw-drop-shadow-color)] drop-shadow-black/25", "transition-discrete transition-[display,opacity] duration-150 ease-out");
5
+ const iconFlipped = "[scale:-1_1]";
6
+ const iconContainer = "relative";
7
+ const button = {
8
+ base: cn("items-center justify-center shrink-0 border-none cursor-pointer select-none text-center", "outline-2 outline-transparent -outline-offset-2", "font-medium", "transition-[background-color,color,outline-offset] duration-150 ease-out", "focus-visible:outline-white focus-visible:outline-offset-2", "disabled:cursor-not-allowed disabled:opacity-50 disabled:grayscale"),
9
+ icon: cn("grid w-[2.375rem] aspect-square bg-transparent rounded-md", "text-white", "hover:text-white/80 hover:no-underline", "focus-visible:text-white/80", "aria-expanded:text-white/80"),
10
+ default: cn("flex py-2 px-4 bg-white rounded-lg", "text-black")
11
+ };
12
+ const slider = {
13
+ root: cn("group/slider relative flex flex-1 items-center justify-center rounded-full outline-none", "data-[orientation=horizontal]:min-w-20 data-[orientation=horizontal]:w-full data-[orientation=horizontal]:h-5", "data-[orientation=vertical]:w-5 data-[orientation=vertical]:h-[4.5rem]"),
14
+ track: cn("relative isolate overflow-hidden bg-white/20 rounded-[inherit]", "shadow-[0_0_0_1px_oklch(0_0_0/0.05)] select-none", "data-[orientation=horizontal]:w-full data-[orientation=horizontal]:h-0.75", "data-[orientation=vertical]:w-0.75 data-[orientation=vertical]:h-full"),
15
+ fill: {
16
+ base: "absolute rounded-[inherit] pointer-events-none",
17
+ fill: cn("bg-white", "data-[orientation=horizontal]:inset-y-0 data-[orientation=horizontal]:left-0", "data-[orientation=horizontal]:w-(--media-slider-fill,0)", "data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0", "data-[orientation=vertical]:h-(--media-slider-fill,0)"),
18
+ buffer: cn("bg-white/20 duration-250 ease-out", "data-[orientation=horizontal]:inset-y-0 data-[orientation=horizontal]:left-0", "data-[orientation=horizontal]:transition-[width] data-[orientation=horizontal]:w-(--media-slider-buffer,0)", "data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0", "data-[orientation=vertical]:transition-[height] data-[orientation=vertical]:h-(--media-slider-buffer)")
19
+ },
20
+ thumb: {
21
+ base: cn("z-10 absolute size-3 -translate-x-1/2 -translate-y-1/2", "bg-white rounded-full", "ring ring-black/10 shadow-sm shadow-black/15", "transition-[opacity,scale,outline-offset] duration-150 ease-out select-none", "outline-2 outline-transparent -outline-offset-2", "focus-visible:outline-white focus-visible:outline-offset-2", "data-[orientation=horizontal]:top-1/2 data-[orientation=horizontal]:left-(--media-slider-fill,0)", "data-[orientation=vertical]:left-1/2 data-[orientation=vertical]:top-[calc(100%-var(--media-slider-fill,0))]"),
22
+ interactive: cn("opacity-0 scale-70 origin-center", "group-hover/slider:opacity-100 group-hover/slider:scale-100", "group-focus-within/slider:opacity-100 group-focus-within/slider:scale-100")
23
+ }
24
+ };
25
+ const root = cn("block relative isolate overflow-clip @container/media-root", "rounded-(--media-border-radius,0.75rem) bg-black", "font-[Inter_Variable,Inter,ui-sans-serif,system-ui,sans-serif] text-[0.8125rem] leading-normal subpixel-antialiased", "**:box-border **:m-0", "[&_button]:font-[inherit]", "motion-safe:[interpolate-size:allow-keywords]", "after:absolute after:pointer-events-none after:rounded-[inherit] after:z-10", "after:inset-0 after:ring-1 after:ring-inset after:ring-black/15", "dark:after:ring-white/15", "[&>video]:block [&>video]:w-full [&>video]:h-full [&>video]:rounded-[inherit]", "[&>img]:absolute [&>img]:inset-0 [&>img]:w-full [&>img]:h-full [&>img]:rounded-[inherit]", "[&>img]:object-cover [&>img]:pointer-events-none", "[&>img]:transition-opacity [&>img]:duration-250", "[&>img:not([data-visible])]:opacity-0", "[--media-caption-track-delay:600ms]", "[--media-caption-track-y:-0.5rem]", "has-[[data-controls][data-visible]]:[--media-caption-track-delay:25ms]", "has-[[data-controls][data-visible]]:[--media-caption-track-y:-3.5rem]", "[&_video::-webkit-media-text-track-container]:transition-transform", "[&_video::-webkit-media-text-track-container]:duration-150", "[&_video::-webkit-media-text-track-container]:ease-out", "[&_video::-webkit-media-text-track-container]:delay-(--media-caption-track-delay)", "[&_video::-webkit-media-text-track-container]:translate-y-(--media-caption-track-y)", "[&_video::-webkit-media-text-track-container]:scale-98", "[&_video::-webkit-media-text-track-container]:z-1", "[&_video::-webkit-media-text-track-container]:font-[inherit]", "motion-reduce:[&_video::-webkit-media-text-track-container]:duration-50", "[&:fullscreen]:rounded-none");
26
+ const controls = cn("peer/controls", "absolute @container/media-controls bottom-0 inset-x-0", "pt-8 px-1.5 pb-1.5 flex items-center gap-2", "text-white z-10", "will-change-[translate,filter,opacity]", "transition-[translate,filter,opacity] ease-out", "delay-0 duration-75", "not-data-visible:opacity-0 not-data-visible:translate-y-full", "not-data-visible:blur-sm not-data-visible:pointer-events-none", "not-data-visible:delay-500 not-data-visible:duration-500", "motion-reduce:not-data-visible:duration-100", "motion-reduce:not-data-visible:translate-y-0", "motion-reduce:not-data-visible:blur-none motion-reduce:not-data-visible:scale-100", "@sm/media-root:pt-10 @sm/media-root:px-3 @sm/media-root:pb-3", "@sm/media-root:gap-3.5");
27
+ const overlay = cn("absolute inset-0 flex flex-col items-start", "pointer-events-none rounded-[inherit]", "opacity-0", "bg-linear-to-t from-black/70 via-black/50 via-[7.5rem] to-transparent", "backdrop-blur-none backdrop-saturate-120 backdrop-brightness-90", "transition-[opacity,backdrop-filter] ease-out", "duration-500 delay-500", "peer-data-visible/controls:opacity-100", "peer-data-visible/controls:duration-150", "peer-data-visible/controls:delay-0", "peer-data-visible/error:opacity-100", "peer-data-visible/error:duration-150", "peer-data-visible/error:delay-0", "peer-data-visible/error:backdrop-blur-sm", "motion-reduce:duration-100");
28
+ const bufferingIndicator = "absolute inset-0 hidden items-center justify-center pointer-events-none z-10 text-white data-visible:flex";
29
+ const error = {
30
+ root: "peer/error group/error absolute inset-0 z-20 items-center justify-center pointer-events-none hidden data-visible:flex",
31
+ dialog: cn("hidden flex-col gap-3 max-w-64 p-4 text-white text-sm pointer-events-auto", "group-data-visible/error:flex", "text-shadow-2xs text-shadow-black/50", "transition-[display,opacity,scale,transform] duration-500 delay-100 transition-discrete", "starting:opacity-0 starting:scale-50", "ease-[linear(0,0.034_1.5%,0.763_9.7%,1.066_13.9%,1.198_19.9%,1.184_21.8%,0.963_37.5%,0.997_50.9%,1)]"),
32
+ content: "flex flex-col gap-2 py-1.5",
33
+ title: "font-semibold leading-tight",
34
+ actions: "flex gap-2 *:flex-1"
35
+ };
36
+ const buttonGroup = cn("flex items-center gap-[0.075rem]", "@2xl/media-root:gap-0.5");
37
+ const time = {
38
+ group: "flex items-center gap-1",
39
+ current: cn("hidden tabular-nums text-shadow-2xs text-shadow-black/25", "@md/media-controls:inline"),
40
+ separator: cn("hidden", "@md/media-controls:inline @md/media-controls:text-white/50"),
41
+ duration: cn("tabular-nums text-shadow-2xs text-shadow-black/25", "@md/media-controls:text-white/50"),
42
+ controls: cn("flex flex-row-reverse items-center flex-1 gap-3", "@md/media-controls:flex-row")
43
+ };
44
+ const popup = {
45
+ base: cn("m-0 border-0 bg-transparent [--media-popover-side-offset:0.5rem]", "opacity-100 scale-100 origin-bottom blur-none", "transition-[transform,scale,opacity,filter] duration-200", "data-starting-style:opacity-0 data-starting-style:scale-0 data-starting-style:blur-sm", "data-ending-style:opacity-0 data-ending-style:scale-0 data-ending-style:blur-sm", "data-instant:duration-0"),
46
+ volume: "p-1"
47
+ };
48
+ const seek = {
49
+ button: "@max-md/media-controls:hidden",
50
+ label: "text-[0.75em] font-[480] tabular-nums",
51
+ labelForward: "absolute -right-px -bottom-0.75",
52
+ labelBackward: "absolute -left-px -bottom-0.75"
53
+ };
54
+ const iconState = {
55
+ play: {
56
+ button: "group",
57
+ restart: "hidden opacity-0 group-data-ended:block group-data-ended:opacity-100",
58
+ play: "hidden opacity-0 group-not-data-ended:group-data-paused:block group-not-data-ended:group-data-paused:opacity-100",
59
+ pause: "hidden opacity-0 group-not-data-paused:group-not-data-ended:block group-not-data-paused:group-not-data-ended:opacity-100"
60
+ },
61
+ mute: {
62
+ button: "group",
63
+ volumeOff: "hidden opacity-0 group-data-muted:block group-data-muted:opacity-100",
64
+ volumeLow: "hidden opacity-0 group-not-data-muted:group-data-[volume-level=low]:block group-not-data-muted:group-data-[volume-level=low]:opacity-100",
65
+ volumeHigh: "hidden opacity-0 group-not-data-muted:group-not-data-[volume-level=low]:block group-not-data-muted:group-not-data-[volume-level=low]:opacity-100"
66
+ },
67
+ fullscreen: {
68
+ button: "group",
69
+ enter: "hidden opacity-0 group-not-data-fullscreen:block group-not-data-fullscreen:opacity-100",
70
+ exit: "hidden opacity-0 group-data-fullscreen:block group-data-fullscreen:opacity-100"
71
+ },
72
+ captions: {
73
+ button: "group",
74
+ off: "hidden opacity-0 group-not-data-active:block group-not-data-active:opacity-100",
75
+ on: "hidden opacity-0 group-data-active:block group-data-active:opacity-100"
76
+ }
77
+ };
78
+ const captions = {
79
+ root: cn("absolute z-20 pointer-events-none text-balance text-base", "inset-x-4 bottom-6", "transition-transform duration-150 ease-out delay-600", "motion-reduce:duration-50", "@xs/media-root:text-2xl", "@3xl/media-root:text-3xl", "@7xl/media-root:text-4xl", "peer-data-visible/controls:-translate-y-10 peer-data-visible/controls:delay-25"),
80
+ container: "max-w-[42ch] mx-auto text-center flex flex-col items-center",
81
+ cue: cn("block py-0.5 px-2 text-white text-center whitespace-pre-wrap leading-1.2", "[text-shadow:0_0_1px_oklab(0_0_0_/_0.7),0_0_8px_oklab(0_0_0_/_0.7)]", "contrast-more:[text-shadow:none] contrast-more:[box-decoration-break:clone] contrast-more:bg-black/70", "*:inline")
82
+ };
83
+
84
+ //#endregion
85
+ export { bufferingIndicator, button, buttonGroup, controls, error, icon, iconContainer, iconFlipped, iconState, overlay, popup, root, seek, slider, time };
86
+ //# sourceMappingURL=minimal.tailwind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimal.tailwind.js","names":[],"sources":["../../../../../../../skins/dist/default/video/minimal.tailwind.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n\n//#region src/video/minimal.tailwind.ts\nconst icon = cn(\"block [grid-area:1/1] size-4.5\", \"drop-shadow-[0_1px_0_var(--tw-drop-shadow-color)] drop-shadow-black/25\", \"transition-discrete transition-[display,opacity] duration-150 ease-out\");\nconst iconHidden = \"hidden opacity-0\";\nconst iconFlipped = \"[scale:-1_1]\";\nconst iconContainer = \"relative\";\nconst button = {\n\tbase: cn(\"items-center justify-center shrink-0 border-none cursor-pointer select-none text-center\", \"outline-2 outline-transparent -outline-offset-2\", \"font-medium\", \"transition-[background-color,color,outline-offset] duration-150 ease-out\", \"focus-visible:outline-white focus-visible:outline-offset-2\", \"disabled:cursor-not-allowed disabled:opacity-50 disabled:grayscale\"),\n\ticon: cn(\"grid w-[2.375rem] aspect-square bg-transparent rounded-md\", \"text-white\", \"hover:text-white/80 hover:no-underline\", \"focus-visible:text-white/80\", \"aria-expanded:text-white/80\"),\n\tdefault: cn(\"flex py-2 px-4 bg-white rounded-lg\", \"text-black\")\n};\nconst slider = {\n\troot: cn(\"group/slider relative flex flex-1 items-center justify-center rounded-full outline-none\", \"data-[orientation=horizontal]:min-w-20 data-[orientation=horizontal]:w-full data-[orientation=horizontal]:h-5\", \"data-[orientation=vertical]:w-5 data-[orientation=vertical]:h-[4.5rem]\"),\n\ttrack: cn(\"relative isolate overflow-hidden bg-white/20 rounded-[inherit]\", \"shadow-[0_0_0_1px_oklch(0_0_0/0.05)] select-none\", \"data-[orientation=horizontal]:w-full data-[orientation=horizontal]:h-0.75\", \"data-[orientation=vertical]:w-0.75 data-[orientation=vertical]:h-full\"),\n\tfill: {\n\t\tbase: \"absolute rounded-[inherit] pointer-events-none\",\n\t\tfill: cn(\"bg-white\", \"data-[orientation=horizontal]:inset-y-0 data-[orientation=horizontal]:left-0\", \"data-[orientation=horizontal]:w-(--media-slider-fill,0)\", \"data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0\", \"data-[orientation=vertical]:h-(--media-slider-fill,0)\"),\n\t\tbuffer: cn(\"bg-white/20 duration-250 ease-out\", \"data-[orientation=horizontal]:inset-y-0 data-[orientation=horizontal]:left-0\", \"data-[orientation=horizontal]:transition-[width] data-[orientation=horizontal]:w-(--media-slider-buffer,0)\", \"data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0\", \"data-[orientation=vertical]:transition-[height] data-[orientation=vertical]:h-(--media-slider-buffer)\")\n\t},\n\tthumb: {\n\t\tbase: cn(\"z-10 absolute size-3 -translate-x-1/2 -translate-y-1/2\", \"bg-white rounded-full\", \"ring ring-black/10 shadow-sm shadow-black/15\", \"transition-[opacity,scale,outline-offset] duration-150 ease-out select-none\", \"outline-2 outline-transparent -outline-offset-2\", \"focus-visible:outline-white focus-visible:outline-offset-2\", \"data-[orientation=horizontal]:top-1/2 data-[orientation=horizontal]:left-(--media-slider-fill,0)\", \"data-[orientation=vertical]:left-1/2 data-[orientation=vertical]:top-[calc(100%-var(--media-slider-fill,0))]\"),\n\t\tinteractive: cn(\"opacity-0 scale-70 origin-center\", \"group-hover/slider:opacity-100 group-hover/slider:scale-100\", \"group-focus-within/slider:opacity-100 group-focus-within/slider:scale-100\")\n\t}\n};\nconst root = cn(\"block relative isolate overflow-clip @container/media-root\", \"rounded-(--media-border-radius,0.75rem) bg-black\", \"font-[Inter_Variable,Inter,ui-sans-serif,system-ui,sans-serif] text-[0.8125rem] leading-normal subpixel-antialiased\", \"**:box-border **:m-0\", \"[&_button]:font-[inherit]\", \"motion-safe:[interpolate-size:allow-keywords]\", \"after:absolute after:pointer-events-none after:rounded-[inherit] after:z-10\", \"after:inset-0 after:ring-1 after:ring-inset after:ring-black/15\", \"dark:after:ring-white/15\", \"[&>video]:block [&>video]:w-full [&>video]:h-full [&>video]:rounded-[inherit]\", \"[&>img]:absolute [&>img]:inset-0 [&>img]:w-full [&>img]:h-full [&>img]:rounded-[inherit]\", \"[&>img]:object-cover [&>img]:pointer-events-none\", \"[&>img]:transition-opacity [&>img]:duration-250\", \"[&>img:not([data-visible])]:opacity-0\", \"[--media-caption-track-delay:600ms]\", \"[--media-caption-track-y:-0.5rem]\", \"has-[[data-controls][data-visible]]:[--media-caption-track-delay:25ms]\", \"has-[[data-controls][data-visible]]:[--media-caption-track-y:-3.5rem]\", \"[&_video::-webkit-media-text-track-container]:transition-transform\", \"[&_video::-webkit-media-text-track-container]:duration-150\", \"[&_video::-webkit-media-text-track-container]:ease-out\", \"[&_video::-webkit-media-text-track-container]:delay-(--media-caption-track-delay)\", \"[&_video::-webkit-media-text-track-container]:translate-y-(--media-caption-track-y)\", \"[&_video::-webkit-media-text-track-container]:scale-98\", \"[&_video::-webkit-media-text-track-container]:z-1\", \"[&_video::-webkit-media-text-track-container]:font-[inherit]\", \"motion-reduce:[&_video::-webkit-media-text-track-container]:duration-50\", \"[&:fullscreen]:rounded-none\");\nconst controls = cn(\"peer/controls\", \"absolute @container/media-controls bottom-0 inset-x-0\", \"pt-8 px-1.5 pb-1.5 flex items-center gap-2\", \"text-white z-10\", \"will-change-[translate,filter,opacity]\", \"transition-[translate,filter,opacity] ease-out\", \"delay-0 duration-75\", \"not-data-visible:opacity-0 not-data-visible:translate-y-full\", \"not-data-visible:blur-sm not-data-visible:pointer-events-none\", \"not-data-visible:delay-500 not-data-visible:duration-500\", \"motion-reduce:not-data-visible:duration-100\", \"motion-reduce:not-data-visible:translate-y-0\", \"motion-reduce:not-data-visible:blur-none motion-reduce:not-data-visible:scale-100\", \"@sm/media-root:pt-10 @sm/media-root:px-3 @sm/media-root:pb-3\", \"@sm/media-root:gap-3.5\");\nconst overlay = cn(\"absolute inset-0 flex flex-col items-start\", \"pointer-events-none rounded-[inherit]\", \"opacity-0\", \"bg-linear-to-t from-black/70 via-black/50 via-[7.5rem] to-transparent\", \"backdrop-blur-none backdrop-saturate-120 backdrop-brightness-90\", \"transition-[opacity,backdrop-filter] ease-out\", \"duration-500 delay-500\", \"peer-data-visible/controls:opacity-100\", \"peer-data-visible/controls:duration-150\", \"peer-data-visible/controls:delay-0\", \"peer-data-visible/error:opacity-100\", \"peer-data-visible/error:duration-150\", \"peer-data-visible/error:delay-0\", \"peer-data-visible/error:backdrop-blur-sm\", \"motion-reduce:duration-100\");\nconst bufferingIndicator = \"absolute inset-0 hidden items-center justify-center pointer-events-none z-10 text-white data-visible:flex\";\nconst error = {\n\troot: \"peer/error group/error absolute inset-0 z-20 items-center justify-center pointer-events-none hidden data-visible:flex\",\n\tdialog: cn(\"hidden flex-col gap-3 max-w-64 p-4 text-white text-sm pointer-events-auto\", \"group-data-visible/error:flex\", \"text-shadow-2xs text-shadow-black/50\", \"transition-[display,opacity,scale,transform] duration-500 delay-100 transition-discrete\", \"starting:opacity-0 starting:scale-50\", \"ease-[linear(0,0.034_1.5%,0.763_9.7%,1.066_13.9%,1.198_19.9%,1.184_21.8%,0.963_37.5%,0.997_50.9%,1)]\"),\n\tcontent: \"flex flex-col gap-2 py-1.5\",\n\ttitle: \"font-semibold leading-tight\",\n\tactions: \"flex gap-2 *:flex-1\"\n};\nconst buttonGroup = cn(\"flex items-center gap-[0.075rem]\", \"@2xl/media-root:gap-0.5\");\nconst time = {\n\tgroup: \"flex items-center gap-1\",\n\tcurrent: cn(\"hidden tabular-nums text-shadow-2xs text-shadow-black/25\", \"@md/media-controls:inline\"),\n\tseparator: cn(\"hidden\", \"@md/media-controls:inline @md/media-controls:text-white/50\"),\n\tduration: cn(\"tabular-nums text-shadow-2xs text-shadow-black/25\", \"@md/media-controls:text-white/50\"),\n\tcontrols: cn(\"flex flex-row-reverse items-center flex-1 gap-3\", \"@md/media-controls:flex-row\")\n};\nconst popup = {\n\tbase: cn(\"m-0 border-0 bg-transparent [--media-popover-side-offset:0.5rem]\", \"opacity-100 scale-100 origin-bottom blur-none\", \"transition-[transform,scale,opacity,filter] duration-200\", \"data-starting-style:opacity-0 data-starting-style:scale-0 data-starting-style:blur-sm\", \"data-ending-style:opacity-0 data-ending-style:scale-0 data-ending-style:blur-sm\", \"data-instant:duration-0\"),\n\tvolume: \"p-1\"\n};\nconst seek = {\n\tbutton: \"@max-md/media-controls:hidden\",\n\tlabel: \"text-[0.75em] font-[480] tabular-nums\",\n\tlabelForward: \"absolute -right-px -bottom-0.75\",\n\tlabelBackward: \"absolute -left-px -bottom-0.75\"\n};\nconst iconState = {\n\tplay: {\n\t\tbutton: \"group\",\n\t\trestart: \"hidden opacity-0 group-data-ended:block group-data-ended:opacity-100\",\n\t\tplay: \"hidden opacity-0 group-not-data-ended:group-data-paused:block group-not-data-ended:group-data-paused:opacity-100\",\n\t\tpause: \"hidden opacity-0 group-not-data-paused:group-not-data-ended:block group-not-data-paused:group-not-data-ended:opacity-100\"\n\t},\n\tmute: {\n\t\tbutton: \"group\",\n\t\tvolumeOff: \"hidden opacity-0 group-data-muted:block group-data-muted:opacity-100\",\n\t\tvolumeLow: \"hidden opacity-0 group-not-data-muted:group-data-[volume-level=low]:block group-not-data-muted:group-data-[volume-level=low]:opacity-100\",\n\t\tvolumeHigh: \"hidden opacity-0 group-not-data-muted:group-not-data-[volume-level=low]:block group-not-data-muted:group-not-data-[volume-level=low]:opacity-100\"\n\t},\n\tfullscreen: {\n\t\tbutton: \"group\",\n\t\tenter: \"hidden opacity-0 group-not-data-fullscreen:block group-not-data-fullscreen:opacity-100\",\n\t\texit: \"hidden opacity-0 group-data-fullscreen:block group-data-fullscreen:opacity-100\"\n\t},\n\tcaptions: {\n\t\tbutton: \"group\",\n\t\toff: \"hidden opacity-0 group-not-data-active:block group-not-data-active:opacity-100\",\n\t\ton: \"hidden opacity-0 group-data-active:block group-data-active:opacity-100\"\n\t}\n};\nconst captions = {\n\troot: cn(\"absolute z-20 pointer-events-none text-balance text-base\", \"inset-x-4 bottom-6\", \"transition-transform duration-150 ease-out delay-600\", \"motion-reduce:duration-50\", \"@xs/media-root:text-2xl\", \"@3xl/media-root:text-3xl\", \"@7xl/media-root:text-4xl\", \"peer-data-visible/controls:-translate-y-10 peer-data-visible/controls:delay-25\"),\n\tcontainer: \"max-w-[42ch] mx-auto text-center flex flex-col items-center\",\n\tcue: cn(\"block py-0.5 px-2 text-white text-center whitespace-pre-wrap leading-1.2\", \"[text-shadow:0_0_1px_oklab(0_0_0_/_0.7),0_0_8px_oklab(0_0_0_/_0.7)]\", \"contrast-more:[text-shadow:none] contrast-more:[box-decoration-break:clone] contrast-more:bg-black/70\", \"*:inline\")\n};\n\n//#endregion\nexport { bufferingIndicator, button, buttonGroup, captions, controls, error, icon, iconContainer, iconFlipped, iconHidden, iconState, overlay, popup, root, seek, slider, time };\n//# sourceMappingURL=minimal.tailwind.js.map"],"mappings":";;;AAGA,MAAM,OAAO,GAAG,kCAAkC,0EAA0E,yEAAyE;AAErM,MAAM,cAAc;AACpB,MAAM,gBAAgB;AACtB,MAAM,SAAS;CACd,MAAM,GAAG,2FAA2F,mDAAmD,eAAe,4EAA4E,8DAA8D,qEAAqE;CACrX,MAAM,GAAG,6DAA6D,cAAc,0CAA0C,+BAA+B,8BAA8B;CAC3L,SAAS,GAAG,sCAAsC,aAAa;CAC/D;AACD,MAAM,SAAS;CACd,MAAM,GAAG,2FAA2F,iHAAiH,yEAAyE;CAC9R,OAAO,GAAG,kEAAkE,oDAAoD,6EAA6E,wEAAwE;CACrR,MAAM;EACL,MAAM;EACN,MAAM,GAAG,YAAY,gFAAgF,2DAA2D,8EAA8E,wDAAwD;EACtS,QAAQ,GAAG,qCAAqC,gFAAgF,8GAA8G,8EAA8E,wGAAwG;EACpa;CACD,OAAO;EACN,MAAM,GAAG,0DAA0D,yBAAyB,gDAAgD,+EAA+E,mDAAmD,8DAA8D,oGAAoG,+GAA+G;EAC/hB,aAAa,GAAG,oCAAoC,+DAA+D,4EAA4E;EAC/L;CACD;AACD,MAAM,OAAO,GAAG,8DAA8D,oDAAoD,uHAAuH,wBAAwB,6BAA6B,iDAAiD,+EAA+E,mEAAmE,4BAA4B,iFAAiF,4FAA4F,oDAAoD,mDAAmD,yCAAyC,uCAAuC,qCAAqC,0EAA0E,yEAAyE,sEAAsE,8DAA8D,0DAA0D,qFAAqF,uFAAuF,0DAA0D,qDAAqD,gEAAgE,2EAA2E,8BAA8B;AAC3qD,MAAM,WAAW,GAAG,iBAAiB,yDAAyD,8CAA8C,mBAAmB,0CAA0C,kDAAkD,uBAAuB,gEAAgE,iEAAiE,4DAA4D,+CAA+C,gDAAgD,qFAAqF,gEAAgE,yBAAyB;AAC5tB,MAAM,UAAU,GAAG,8CAA8C,yCAAyC,aAAa,yEAAyE,mEAAmE,iDAAiD,0BAA0B,0CAA0C,2CAA2C,sCAAsC,uCAAuC,wCAAwC,mCAAmC,4CAA4C,6BAA6B;AACpoB,MAAM,qBAAqB;AAC3B,MAAM,QAAQ;CACb,MAAM;CACN,QAAQ,GAAG,6EAA6E,iCAAiC,wCAAwC,2FAA2F,wCAAwC,uGAAuG;CAC3Y,SAAS;CACT,OAAO;CACP,SAAS;CACT;AACD,MAAM,cAAc,GAAG,oCAAoC,0BAA0B;AACrF,MAAM,OAAO;CACZ,OAAO;CACP,SAAS,GAAG,4DAA4D,4BAA4B;CACpG,WAAW,GAAG,UAAU,6DAA6D;CACrF,UAAU,GAAG,qDAAqD,mCAAmC;CACrG,UAAU,GAAG,mDAAmD,8BAA8B;CAC9F;AACD,MAAM,QAAQ;CACb,MAAM,GAAG,oEAAoE,iDAAiD,4DAA4D,yFAAyF,mFAAmF,0BAA0B;CAChY,QAAQ;CACR;AACD,MAAM,OAAO;CACZ,QAAQ;CACR,OAAO;CACP,cAAc;CACd,eAAe;CACf;AACD,MAAM,YAAY;CACjB,MAAM;EACL,QAAQ;EACR,SAAS;EACT,MAAM;EACN,OAAO;EACP;CACD,MAAM;EACL,QAAQ;EACR,WAAW;EACX,WAAW;EACX,YAAY;EACZ;CACD,YAAY;EACX,QAAQ;EACR,OAAO;EACP,MAAM;EACN;CACD,UAAU;EACT,QAAQ;EACR,KAAK;EACL,IAAI;EACJ;CACD;AACD,MAAM,WAAW;CAChB,MAAM,GAAG,4DAA4D,sBAAsB,wDAAwD,6BAA6B,2BAA2B,4BAA4B,4BAA4B,iFAAiF;CACpV,WAAW;CACX,KAAK,GAAG,4EAA4E,uEAAuE,yGAAyG,WAAW;CAC/Q"}
@@ -1,5 +1,5 @@
1
- import { PlayerContext } from "../player/context.js";
2
1
  import { MediaElementConstructor } from "../ui/media-element.js";
2
+ import { PlayerContext } from "../player/context.js";
3
3
  import { PlayerConsumerConstructor } from "./types.js";
4
4
  import { PlayerStore } from "@videojs/core/dom";
5
5
 
@@ -12,13 +12,20 @@ function createContainerMixin(context) {
12
12
  class PlayerContainerElement extends BaseClass {
13
13
  #detach = noop;
14
14
  #observer = null;
15
- #consumer = new ContextConsumer(this, {
16
- context,
17
- callback: () => this.#attachMedia(),
18
- subscribe: true
19
- });
15
+ #contextStore = null;
16
+ constructor(...args) {
17
+ super(...args);
18
+ new ContextConsumer(this, {
19
+ context,
20
+ callback: (value) => {
21
+ this.#contextStore = value ?? null;
22
+ this.#attachMedia();
23
+ },
24
+ subscribe: true
25
+ });
26
+ }
20
27
  get store() {
21
- return this.#consumer.value ?? null;
28
+ return this.#contextStore;
22
29
  }
23
30
  connectedCallback() {
24
31
  super.connectedCallback();
@@ -38,7 +45,7 @@ function createContainerMixin(context) {
38
45
  this.#detach();
39
46
  }
40
47
  #attachMedia() {
41
- const store = this.#consumer.value ?? this.store;
48
+ const store = this.#contextStore ?? this.store;
42
49
  if (!store) return;
43
50
  const media = this.querySelector("video, audio");
44
51
  if (!media) {
@@ -1 +1 @@
1
- {"version":3,"file":"container-mixin.js","names":["#attachMedia","#consumer","#observer","#detach"],"sources":["../../../src/store/container-mixin.ts"],"sourcesContent":["import type { MediaContainer, PlayerStore, PlayerTarget } from '@videojs/core/dom';\nimport { ContextConsumer } from '@videojs/element/context';\nimport { noop } from '@videojs/utils/function';\nimport type { MediaElementConstructor } from '@/ui/media-element';\nimport type { PlayerContext } from '../player/context';\nimport type { PlayerConsumer, PlayerConsumerConstructor } from './types';\n\nexport type ContainerMixin<Store extends PlayerStore> = <Class extends MediaElementConstructor>(\n BaseClass: Class\n) => Class & PlayerConsumerConstructor<Store>;\n\n/**\n * Create a mixin that consumes player context and auto-attaches media elements.\n *\n * @param context - Player context to consume from an ancestor provider.\n */\nexport function createContainerMixin<Store extends PlayerStore>(context: PlayerContext<Store>): ContainerMixin<Store> {\n return <Class extends MediaElementConstructor>(BaseClass: Class) => {\n class PlayerContainerElement extends BaseClass implements PlayerConsumer<Store>, MediaContainer {\n #detach = noop;\n #observer: MutationObserver | null = null;\n\n #consumer = new ContextConsumer(this, {\n context,\n callback: () => this.#attachMedia(),\n subscribe: true,\n });\n\n get store(): Store | null {\n return this.#consumer.value ?? null;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n this.#observer = new MutationObserver((records) => {\n if (records.some(hasMediaNode)) this.#attachMedia();\n });\n\n this.#observer.observe(this, { childList: true, subtree: true });\n\n this.#attachMedia();\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.#observer?.disconnect();\n this.#observer = null;\n this.#detach();\n }\n\n #attachMedia() {\n // Store will be overridden and set by provider mixin if consumer is empty.\n const store = this.#consumer.value ?? this.store;\n if (!store) return;\n\n const media = this.querySelector<HTMLMediaElement>('video, audio');\n\n if (!media) {\n this.#detach();\n this.#detach = noop;\n return;\n }\n\n const target: PlayerTarget = {\n media,\n container: this,\n };\n\n const hasMediaChanged = store.target?.media !== target.media,\n hasContainerChanged = store.target?.container !== target.container;\n\n if (hasMediaChanged || hasContainerChanged) {\n this.#detach();\n this.#detach = store.attach(target);\n }\n }\n }\n\n return PlayerContainerElement;\n };\n}\n\nfunction isMediaNode(node: Node): boolean {\n return node instanceof HTMLMediaElement;\n}\n\nfunction hasMediaNode(record: MutationRecord): boolean {\n for (const node of record.addedNodes) {\n if (isMediaNode(node)) return true;\n }\n\n for (const node of record.removedNodes) {\n if (isMediaNode(node)) return true;\n }\n\n return false;\n}\n"],"mappings":";;;;;;;;;AAgBA,SAAgB,qBAAgD,SAAsD;AACpH,SAA+C,cAAqB;EAClE,MAAM,+BAA+B,UAA2D;GAC9F,UAAU;GACV,YAAqC;GAErC,YAAY,IAAI,gBAAgB,MAAM;IACpC;IACA,gBAAgB,MAAKA,aAAc;IACnC,WAAW;IACZ,CAAC;GAEF,IAAI,QAAsB;AACxB,WAAO,MAAKC,SAAU,SAAS;;GAGjC,AAAS,oBAAoB;AAC3B,UAAM,mBAAmB;AAEzB,UAAKC,WAAY,IAAI,kBAAkB,YAAY;AACjD,SAAI,QAAQ,KAAK,aAAa,CAAE,OAAKF,aAAc;MACnD;AAEF,UAAKE,SAAU,QAAQ,MAAM;KAAE,WAAW;KAAM,SAAS;KAAM,CAAC;AAEhE,UAAKF,aAAc;;GAGrB,AAAS,uBAAuB;AAC9B,UAAM,sBAAsB;AAC5B,UAAKE,UAAW,YAAY;AAC5B,UAAKA,WAAY;AACjB,UAAKC,QAAS;;GAGhB,eAAe;IAEb,MAAM,QAAQ,MAAKF,SAAU,SAAS,KAAK;AAC3C,QAAI,CAAC,MAAO;IAEZ,MAAM,QAAQ,KAAK,cAAgC,eAAe;AAElE,QAAI,CAAC,OAAO;AACV,WAAKE,QAAS;AACd,WAAKA,SAAU;AACf;;IAGF,MAAM,SAAuB;KAC3B;KACA,WAAW;KACZ;IAED,MAAM,kBAAkB,MAAM,QAAQ,UAAU,OAAO,OACrD,sBAAsB,MAAM,QAAQ,cAAc,OAAO;AAE3D,QAAI,mBAAmB,qBAAqB;AAC1C,WAAKA,QAAS;AACd,WAAKA,SAAU,MAAM,OAAO,OAAO;;;;AAKzC,SAAO;;;AAIX,SAAS,YAAY,MAAqB;AACxC,QAAO,gBAAgB;;AAGzB,SAAS,aAAa,QAAiC;AACrD,MAAK,MAAM,QAAQ,OAAO,WACxB,KAAI,YAAY,KAAK,CAAE,QAAO;AAGhC,MAAK,MAAM,QAAQ,OAAO,aACxB,KAAI,YAAY,KAAK,CAAE,QAAO;AAGhC,QAAO"}
1
+ {"version":3,"file":"container-mixin.js","names":["#contextStore","#attachMedia","#observer","#detach"],"sources":["../../../src/store/container-mixin.ts"],"sourcesContent":["import type { MediaContainer, PlayerStore, PlayerTarget } from '@videojs/core/dom';\nimport { ContextConsumer } from '@videojs/element/context';\nimport { noop } from '@videojs/utils/function';\nimport type { MediaElementConstructor } from '@/ui/media-element';\nimport type { PlayerContext } from '../player/context';\nimport type { PlayerConsumer, PlayerConsumerConstructor } from './types';\n\nexport type ContainerMixin<Store extends PlayerStore> = <Class extends MediaElementConstructor>(\n BaseClass: Class\n) => Class & PlayerConsumerConstructor<Store>;\n\n/**\n * Create a mixin that consumes player context and auto-attaches media elements.\n *\n * @param context - Player context to consume from an ancestor provider.\n */\nexport function createContainerMixin<Store extends PlayerStore>(context: PlayerContext<Store>): ContainerMixin<Store> {\n return <Class extends MediaElementConstructor>(BaseClass: Class) => {\n class PlayerContainerElement extends BaseClass implements PlayerConsumer<Store>, MediaContainer {\n #detach = noop;\n #observer: MutationObserver | null = null;\n #contextStore: Store | null = null;\n\n constructor(...args: any[]) {\n super(...args);\n\n // Created in the constructor body (after all field initializers) so\n // that #contextStore's private slot exists if the callback fires\n // synchronously — which happens when the element is already connected.\n // The host's controller list keeps the consumer alive; no field needed.\n new ContextConsumer(this, {\n context,\n callback: (value) => {\n this.#contextStore = value ?? null;\n this.#attachMedia();\n },\n subscribe: true,\n });\n }\n\n get store(): Store | null {\n return this.#contextStore;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n this.#observer = new MutationObserver((records) => {\n if (records.some(hasMediaNode)) this.#attachMedia();\n });\n\n this.#observer.observe(this, { childList: true, subtree: true });\n\n this.#attachMedia();\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.#observer?.disconnect();\n this.#observer = null;\n this.#detach();\n }\n\n #attachMedia() {\n // Prefer the cached context value; fall back to `this.store` which\n // ProviderMixin overrides when both mixins are applied to one element.\n const store = this.#contextStore ?? this.store;\n if (!store) return;\n\n const media = this.querySelector<HTMLMediaElement>('video, audio');\n\n if (!media) {\n this.#detach();\n this.#detach = noop;\n return;\n }\n\n const target: PlayerTarget = {\n media,\n container: this,\n };\n\n const hasMediaChanged = store.target?.media !== target.media,\n hasContainerChanged = store.target?.container !== target.container;\n\n if (hasMediaChanged || hasContainerChanged) {\n this.#detach();\n this.#detach = store.attach(target);\n }\n }\n }\n\n return PlayerContainerElement;\n };\n}\n\nfunction isMediaNode(node: Node): boolean {\n return node instanceof HTMLMediaElement;\n}\n\nfunction hasMediaNode(record: MutationRecord): boolean {\n for (const node of record.addedNodes) {\n if (isMediaNode(node)) return true;\n }\n\n for (const node of record.removedNodes) {\n if (isMediaNode(node)) return true;\n }\n\n return false;\n}\n"],"mappings":";;;;;;;;;AAgBA,SAAgB,qBAAgD,SAAsD;AACpH,SAA+C,cAAqB;EAClE,MAAM,+BAA+B,UAA2D;GAC9F,UAAU;GACV,YAAqC;GACrC,gBAA8B;GAE9B,YAAY,GAAG,MAAa;AAC1B,UAAM,GAAG,KAAK;AAMd,QAAI,gBAAgB,MAAM;KACxB;KACA,WAAW,UAAU;AACnB,YAAKA,eAAgB,SAAS;AAC9B,YAAKC,aAAc;;KAErB,WAAW;KACZ,CAAC;;GAGJ,IAAI,QAAsB;AACxB,WAAO,MAAKD;;GAGd,AAAS,oBAAoB;AAC3B,UAAM,mBAAmB;AAEzB,UAAKE,WAAY,IAAI,kBAAkB,YAAY;AACjD,SAAI,QAAQ,KAAK,aAAa,CAAE,OAAKD,aAAc;MACnD;AAEF,UAAKC,SAAU,QAAQ,MAAM;KAAE,WAAW;KAAM,SAAS;KAAM,CAAC;AAEhE,UAAKD,aAAc;;GAGrB,AAAS,uBAAuB;AAC9B,UAAM,sBAAsB;AAC5B,UAAKC,UAAW,YAAY;AAC5B,UAAKA,WAAY;AACjB,UAAKC,QAAS;;GAGhB,eAAe;IAGb,MAAM,QAAQ,MAAKH,gBAAiB,KAAK;AACzC,QAAI,CAAC,MAAO;IAEZ,MAAM,QAAQ,KAAK,cAAgC,eAAe;AAElE,QAAI,CAAC,OAAO;AACV,WAAKG,QAAS;AACd,WAAKA,SAAU;AACf;;IAGF,MAAM,SAAuB;KAC3B;KACA,WAAW;KACZ;IAED,MAAM,kBAAkB,MAAM,QAAQ,UAAU,OAAO,OACrD,sBAAsB,MAAM,QAAQ,cAAc,OAAO;AAE3D,QAAI,mBAAmB,qBAAqB;AAC1C,WAAKA,QAAS;AACd,WAAKA,SAAU,MAAM,OAAO,OAAO;;;;AAKzC,SAAO;;;AAIX,SAAS,YAAY,MAAqB;AACxC,QAAO,gBAAgB;;AAGzB,SAAS,aAAa,QAAiC;AACrD,MAAK,MAAM,QAAQ,OAAO,WACxB,KAAI,YAAY,KAAK,CAAE,QAAO;AAGhC,MAAK,MAAM,QAAQ,OAAO,aACxB,KAAI,YAAY,KAAK,CAAE,QAAO;AAGhC,QAAO"}
@@ -1,5 +1,5 @@
1
- import { PlayerContext } from "../player/context.js";
2
1
  import { MediaElementConstructor } from "../ui/media-element.js";
2
+ import { PlayerContext } from "../player/context.js";
3
3
  import { PlayerProviderConstructor } from "./types.js";
4
4
  import { PlayerStore } from "@videojs/core/dom";
5
5
 
@@ -3,8 +3,6 @@ import { PlayerStore } from "@videojs/core/dom";
3
3
  import { Constructor } from "@videojs/utils/types";
4
4
 
5
5
  //#region src/store/types.d.ts
6
- interface PlayerElement<Store extends PlayerStore> extends MediaElement, PlayerProvider<Store> {}
7
- interface PlayerElementConstructor<Store extends PlayerStore> extends Constructor<PlayerElement<Store>> {}
8
6
  interface PlayerProvider<Store extends PlayerStore> extends MediaElement {
9
7
  readonly store: Store;
10
8
  }
@@ -14,5 +12,5 @@ interface PlayerConsumer<Store extends PlayerStore> extends MediaElement {
14
12
  }
15
13
  interface PlayerConsumerConstructor<Store extends PlayerStore> extends Constructor<PlayerConsumer<Store>> {}
16
14
  //#endregion
17
- export { PlayerConsumer, PlayerConsumerConstructor, PlayerElement, PlayerElementConstructor, PlayerProvider, PlayerProviderConstructor };
15
+ export { PlayerConsumer, PlayerConsumerConstructor, PlayerProvider, PlayerProviderConstructor };
18
16
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/store/types.ts"],"mappings":";;;;;UAQiB,aAAA,eAA4B,WAAA,UAAqB,YAAA,EAAc,cAAA,CAAe,KAAA;AAAA,UAE9E,wBAAA,eAAuC,WAAA,UAAqB,WAAA,CAAY,aAAA,CAAc,KAAA;AAAA,UAMtF,cAAA,eAA6B,WAAA,UAAqB,YAAA;EAAA,SACxD,KAAA,EAAO,KAAA;AAAA;AAAA,UAGD,yBAAA,eAAwC,WAAA,UAAqB,WAAA,CAAY,cAAA,CAAe,KAAA;AAAA,UAMxF,cAAA,eAA6B,WAAA,UAAqB,YAAA;EAAA,SACxD,KAAA,EAAO,KAAA;AAAA;AAAA,UAGD,yBAAA,eAAwC,WAAA,UAAqB,WAAA,CAAY,cAAA,CAAe,KAAA"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/store/types.ts"],"mappings":";;;;;UAQiB,cAAA,eAA6B,WAAA,UAAqB,YAAA;EAAA,SACxD,KAAA,EAAO,KAAA;AAAA;AAAA,UAGD,yBAAA,eAAwC,WAAA,UAAqB,WAAA,CAAY,cAAA,CAAe,KAAA;AAAA,UAMxF,cAAA,eAA6B,WAAA,UAAqB,YAAA;EAAA,SACxD,KAAA,EAAO,KAAA;AAAA;AAAA,UAGD,yBAAA,eAAwC,WAAA,UAAqB,WAAA,CAAY,cAAA,CAAe,KAAA"}
@@ -5,7 +5,7 @@ import { applyStateDataAttrs, logMissingFeature, selectPlayback } from "@videojs
5
5
  import { BufferingIndicatorCore, BufferingIndicatorDataAttrs } from "@videojs/core";
6
6
 
7
7
  //#region src/ui/buffering-indicator/buffering-indicator-element.ts
8
- var BufferingIndicatorElement = class BufferingIndicatorElement extends MediaElement {
8
+ var BufferingIndicatorElement = class extends MediaElement {
9
9
  constructor(..._args) {
10
10
  super(..._args);
11
11
  this.delay = BufferingIndicatorCore.defaultProps.delay;
@@ -23,7 +23,7 @@ var BufferingIndicatorElement = class BufferingIndicatorElement extends MediaEle
23
23
  super.connectedCallback();
24
24
  this.#disconnect = new AbortController();
25
25
  this.#core.state.subscribe(() => this.requestUpdate(), { signal: this.#disconnect.signal });
26
- if (!this.#state.value) logMissingFeature(BufferingIndicatorElement.tagName, "playback");
26
+ if (!this.#state.value) logMissingFeature(this.localName, this.#state.displayName);
27
27
  }
28
28
  disconnectedCallback() {
29
29
  super.disconnectedCallback();
@@ -1 +1 @@
1
- {"version":3,"file":"buffering-indicator-element.js","names":["#core","#state","#disconnect"],"sources":["../../../../src/ui/buffering-indicator/buffering-indicator-element.ts"],"sourcesContent":["import { BufferingIndicatorCore, BufferingIndicatorDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectPlayback } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class BufferingIndicatorElement extends MediaElement {\n static readonly tagName = 'media-buffering-indicator';\n\n static override properties = {\n delay: { type: Number },\n } satisfies PropertyDeclarationMap<keyof BufferingIndicatorCore.Props>;\n\n delay = BufferingIndicatorCore.defaultProps.delay;\n\n readonly #core = new BufferingIndicatorCore();\n readonly #state = new PlayerController(this, playerContext, selectPlayback);\n\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.#disconnect = new AbortController();\n\n this.#core.state.subscribe(() => this.requestUpdate(), {\n signal: this.#disconnect.signal,\n });\n\n if (__DEV__ && !this.#state.value) {\n logMissingFeature(BufferingIndicatorElement.tagName, 'playback');\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.#core.setProps(this);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.#state.value;\n\n if (!media) return;\n\n this.#core.update(media);\n applyStateDataAttrs(this, this.#core.state.current, BufferingIndicatorDataAttrs);\n }\n}\n"],"mappings":";;;;;;;AAQA,IAAa,4BAAb,MAAa,kCAAkC,aAAa;;;eAOlD,uBAAuB,aAAa;;;iBANlB;;;oBAEG,EAC3B,OAAO,EAAE,MAAM,QAAQ,EACxB;;CAID,CAASA,OAAQ,IAAI,wBAAwB;CAC7C,CAASC,QAAS,IAAI,iBAAiB,MAAM,eAAe,eAAe;CAE3E,cAAsC;CAEtC,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,QAAKC,aAAc,IAAI,iBAAiB;AAExC,QAAKF,KAAM,MAAM,gBAAgB,KAAK,eAAe,EAAE,EACrD,QAAQ,MAAKE,WAAY,QAC1B,CAAC;AAEF,MAAe,CAAC,MAAKD,MAAO,MAC1B,mBAAkB,0BAA0B,SAAS,WAAW;;CAIpE,AAAS,uBAA6B;AACpC,QAAM,sBAAsB;AAC5B,QAAKC,YAAa,OAAO;AACzB,QAAKA,aAAc;;CAGrB,AAAmB,WAAW,SAA+B;AAC3D,QAAM,WAAW,QAAQ;AACzB,QAAKF,KAAM,SAAS,KAAK;;CAG3B,AAAmB,OAAO,SAA+B;AACvD,QAAM,OAAO,QAAQ;EAErB,MAAM,QAAQ,MAAKC,MAAO;AAE1B,MAAI,CAAC,MAAO;AAEZ,QAAKD,KAAM,OAAO,MAAM;AACxB,sBAAoB,MAAM,MAAKA,KAAM,MAAM,SAAS,4BAA4B"}
1
+ {"version":3,"file":"buffering-indicator-element.js","names":["#core","#state","#disconnect"],"sources":["../../../../src/ui/buffering-indicator/buffering-indicator-element.ts"],"sourcesContent":["import { BufferingIndicatorCore, BufferingIndicatorDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectPlayback } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class BufferingIndicatorElement extends MediaElement {\n static readonly tagName = 'media-buffering-indicator';\n\n static override properties = {\n delay: { type: Number },\n } satisfies PropertyDeclarationMap<keyof BufferingIndicatorCore.Props>;\n\n delay = BufferingIndicatorCore.defaultProps.delay;\n\n readonly #core = new BufferingIndicatorCore();\n readonly #state = new PlayerController(this, playerContext, selectPlayback);\n\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.#disconnect = new AbortController();\n\n this.#core.state.subscribe(() => this.requestUpdate(), {\n signal: this.#disconnect.signal,\n });\n\n if (__DEV__ && !this.#state.value) {\n logMissingFeature(this.localName, this.#state.displayName!);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.#core.setProps(this);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.#state.value;\n\n if (!media) return;\n\n this.#core.update(media);\n applyStateDataAttrs(this, this.#core.state.current, BufferingIndicatorDataAttrs);\n }\n}\n"],"mappings":";;;;;;;AAQA,IAAa,4BAAb,cAA+C,aAAa;;;eAOlD,uBAAuB,aAAa;;;iBANlB;;;oBAEG,EAC3B,OAAO,EAAE,MAAM,QAAQ,EACxB;;CAID,CAASA,OAAQ,IAAI,wBAAwB;CAC7C,CAASC,QAAS,IAAI,iBAAiB,MAAM,eAAe,eAAe;CAE3E,cAAsC;CAEtC,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,QAAKC,aAAc,IAAI,iBAAiB;AAExC,QAAKF,KAAM,MAAM,gBAAgB,KAAK,eAAe,EAAE,EACrD,QAAQ,MAAKE,WAAY,QAC1B,CAAC;AAEF,MAAe,CAAC,MAAKD,MAAO,MAC1B,mBAAkB,KAAK,WAAW,MAAKA,MAAO,YAAa;;CAI/D,AAAS,uBAA6B;AACpC,QAAM,sBAAsB;AAC5B,QAAKC,YAAa,OAAO;AACzB,QAAKA,aAAc;;CAGrB,AAAmB,WAAW,SAA+B;AAC3D,QAAM,WAAW,QAAQ;AACzB,QAAKF,KAAM,SAAS,KAAK;;CAG3B,AAAmB,OAAO,SAA+B;AACvD,QAAM,OAAO,QAAQ;EAErB,MAAM,QAAQ,MAAKC,MAAO;AAE1B,MAAI,CAAC,MAAO;AAEZ,QAAKD,KAAM,OAAO,MAAM;AACxB,sBAAoB,MAAM,MAAKA,KAAM,MAAM,SAAS,4BAA4B"}
@@ -0,0 +1,32 @@
1
+ import { MediaElement } from "./media-element.js";
2
+ import { PropertyValues } from "@videojs/element";
3
+ import { StateAttrMap } from "@videojs/core";
4
+
5
+ //#region src/ui/context-part-element.d.ts
6
+ /** Shape that compound context values must satisfy for parts to consume. */
7
+ interface PartContextValue<State extends object> {
8
+ state: State;
9
+ stateAttrMap: StateAttrMap<State>;
10
+ }
11
+ /**
12
+ * Abstract base for compound-component part elements that consume a parent
13
+ * context and apply data attributes from `ctx.state` + `ctx.stateAttrMap`.
14
+ *
15
+ * Subclasses only need to declare the `consumer` property:
16
+ *
17
+ * ```ts
18
+ * export class SliderTrackElement extends ContextPartElement<SliderState> {
19
+ * static readonly tagName = 'media-slider-track';
20
+ * protected readonly consumer = new ContextConsumer(this, { context: sliderContext, subscribe: true });
21
+ * }
22
+ * ```
23
+ */
24
+ declare abstract class ContextPartElement<State extends object> extends MediaElement {
25
+ protected abstract readonly consumer: {
26
+ value?: PartContextValue<State> | undefined;
27
+ };
28
+ protected update(_changed: PropertyValues): void;
29
+ }
30
+ //#endregion
31
+ export { ContextPartElement };
32
+ //# sourceMappingURL=context-part-element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-part-element.d.ts","names":[],"sources":["../../../src/ui/context-part-element.ts"],"mappings":";;;;;;UAOiB,gBAAA;EACf,KAAA,EAAO,KAAA;EACP,YAAA,EAAc,YAAA,CAAa,KAAA;AAAA;;;;;;;;;;;;;;uBAgBP,kBAAA,+BAAiD,YAAA;EAAA,4BACzC,QAAA;IAAY,KAAA,GAAQ,gBAAA,CAAiB,KAAA;EAAA;EAAA,UAE9C,MAAA,CAAO,QAAA,EAAU,cAAA;AAAA"}
@@ -0,0 +1,28 @@
1
+ import { MediaElement } from "./media-element.js";
2
+ import { applyStateDataAttrs } from "@videojs/core/dom";
3
+
4
+ //#region src/ui/context-part-element.ts
5
+ /**
6
+ * Abstract base for compound-component part elements that consume a parent
7
+ * context and apply data attributes from `ctx.state` + `ctx.stateAttrMap`.
8
+ *
9
+ * Subclasses only need to declare the `consumer` property:
10
+ *
11
+ * ```ts
12
+ * export class SliderTrackElement extends ContextPartElement<SliderState> {
13
+ * static readonly tagName = 'media-slider-track';
14
+ * protected readonly consumer = new ContextConsumer(this, { context: sliderContext, subscribe: true });
15
+ * }
16
+ * ```
17
+ */
18
+ var ContextPartElement = class extends MediaElement {
19
+ update(_changed) {
20
+ super.update(_changed);
21
+ const ctx = this.consumer.value;
22
+ if (ctx) applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);
23
+ }
24
+ };
25
+
26
+ //#endregion
27
+ export { ContextPartElement };
28
+ //# sourceMappingURL=context-part-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-part-element.js","names":[],"sources":["../../../src/ui/context-part-element.ts"],"sourcesContent":["import type { StateAttrMap } from '@videojs/core';\nimport { applyStateDataAttrs } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\n\nimport { MediaElement } from './media-element';\n\n/** Shape that compound context values must satisfy for parts to consume. */\nexport interface PartContextValue<State extends object> {\n state: State;\n stateAttrMap: StateAttrMap<State>;\n}\n\n/**\n * Abstract base for compound-component part elements that consume a parent\n * context and apply data attributes from `ctx.state` + `ctx.stateAttrMap`.\n *\n * Subclasses only need to declare the `consumer` property:\n *\n * ```ts\n * export class SliderTrackElement extends ContextPartElement<SliderState> {\n * static readonly tagName = 'media-slider-track';\n * protected readonly consumer = new ContextConsumer(this, { context: sliderContext, subscribe: true });\n * }\n * ```\n */\nexport abstract class ContextPartElement<State extends object> extends MediaElement {\n protected abstract readonly consumer: { value?: PartContextValue<State> | undefined };\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n const ctx = this.consumer.value;\n if (ctx) applyStateDataAttrs(this, ctx.state, ctx.stateAttrMap);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAyBA,IAAsB,qBAAtB,cAAuE,aAAa;CAGlF,AAAmB,OAAO,UAAgC;AACxD,QAAM,OAAO,SAAS;EACtB,MAAM,MAAM,KAAK,SAAS;AAC1B,MAAI,IAAK,qBAAoB,MAAM,IAAI,OAAO,IAAI,aAAa"}
@@ -0,0 +1,10 @@
1
+ import { ControlsState, StateAttrMap } from "@videojs/core";
2
+
3
+ //#region src/ui/controls/context.d.ts
4
+ interface ControlsContextValue {
5
+ state: ControlsState;
6
+ stateAttrMap: StateAttrMap<ControlsState>;
7
+ }
8
+ //#endregion
9
+ export { ControlsContextValue };
10
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","names":[],"sources":["../../../../src/ui/controls/context.ts"],"mappings":";;;UAGiB,oBAAA;EACf,KAAA,EAAO,aAAA;EACP,YAAA,EAAc,YAAA,CAAa,aAAA;AAAA"}
@@ -0,0 +1,9 @@
1
+ import { createContext } from "@videojs/element/context";
2
+
3
+ //#region src/ui/controls/context.ts
4
+ const CONTROLS_CONTEXT_KEY = Symbol("@videojs/controls");
5
+ const controlsContext = createContext(CONTROLS_CONTEXT_KEY);
6
+
7
+ //#endregion
8
+ export { controlsContext };
9
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/controls/context.ts"],"sourcesContent":["import type { ControlsState, StateAttrMap } from '@videojs/core';\nimport { createContext } from '@videojs/element/context';\n\nexport interface ControlsContextValue {\n state: ControlsState;\n stateAttrMap: StateAttrMap<ControlsState>;\n}\n\nconst CONTROLS_CONTEXT_KEY = Symbol('@videojs/controls');\n\nexport const controlsContext = createContext<ControlsContextValue>(CONTROLS_CONTEXT_KEY);\n"],"mappings":";;;AAQA,MAAM,uBAAuB,OAAO,oBAAoB;AAExD,MAAa,kBAAkB,cAAoC,qBAAqB"}
@@ -6,7 +6,7 @@ declare class ControlsElement extends MediaElement {
6
6
  #private;
7
7
  static readonly tagName = "media-controls";
8
8
  connectedCallback(): void;
9
- protected update(changed: PropertyValues): void;
9
+ protected update(_changed: PropertyValues): void;
10
10
  }
11
11
  //#endregion
12
12
  export { ControlsElement };
@@ -1 +1 @@
1
- {"version":3,"file":"controls-element.d.ts","names":[],"sources":["../../../../src/ui/controls/controls-element.ts"],"mappings":";;;;cAQa,eAAA,SAAwB,YAAA;EAAA;kBACnB,OAAA;EAKP,iBAAA,CAAA;EAAA,UAQU,MAAA,CAAO,OAAA,EAAS,cAAA;AAAA"}
1
+ {"version":3,"file":"controls-element.d.ts","names":[],"sources":["../../../../src/ui/controls/controls-element.ts"],"mappings":";;;;cAUa,eAAA,SAAwB,YAAA;EAAA;kBACnB,OAAA;EAMP,iBAAA,CAAA;EAAA,UAQU,MAAA,CAAO,QAAA,EAAU,cAAA;AAAA"}
@@ -1,25 +1,34 @@
1
1
  import { playerContext } from "../../player/context.js";
2
2
  import { MediaElement } from "../media-element.js";
3
3
  import { PlayerController } from "../../player/player-controller.js";
4
+ import { controlsContext } from "./context.js";
4
5
  import { applyStateDataAttrs, logMissingFeature, selectControls } from "@videojs/core/dom";
6
+ import { ContextProvider } from "@videojs/element/context";
5
7
  import { ControlsCore, ControlsDataAttrs } from "@videojs/core";
6
8
 
7
9
  //#region src/ui/controls/controls-element.ts
8
- var ControlsElement = class ControlsElement extends MediaElement {
10
+ var ControlsElement = class extends MediaElement {
9
11
  static {
10
12
  this.tagName = "media-controls";
11
13
  }
12
14
  #core = new ControlsCore();
13
- #state = new PlayerController(this, playerContext, selectControls);
15
+ #mediaState = new PlayerController(this, playerContext, selectControls);
16
+ #provider = new ContextProvider(this, { context: controlsContext });
14
17
  connectedCallback() {
15
18
  super.connectedCallback();
16
- if (!this.#state.value) logMissingFeature(ControlsElement.tagName, "controls");
19
+ if (!this.#mediaState.value && this.#mediaState.displayName) logMissingFeature(this.localName, this.#mediaState.displayName);
17
20
  }
18
- update(changed) {
19
- super.update(changed);
20
- const controls = this.#state.value;
21
- if (!controls) return;
22
- applyStateDataAttrs(this, this.#core.getState(controls), ControlsDataAttrs);
21
+ update(_changed) {
22
+ super.update(_changed);
23
+ const media = this.#mediaState.value;
24
+ if (!media) return;
25
+ this.#core.setMedia(media);
26
+ const state = this.#core.getState();
27
+ applyStateDataAttrs(this, state, ControlsDataAttrs);
28
+ this.#provider.setValue({
29
+ state,
30
+ stateAttrMap: ControlsDataAttrs
31
+ });
23
32
  }
24
33
  };
25
34
 
@@ -1 +1 @@
1
- {"version":3,"file":"controls-element.js","names":["#core","#state"],"sources":["../../../../src/ui/controls/controls-element.ts"],"sourcesContent":["import { ControlsCore, ControlsDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectControls } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class ControlsElement extends MediaElement {\n static readonly tagName = 'media-controls';\n\n readonly #core = new ControlsCore();\n readonly #state = new PlayerController(this, playerContext, selectControls);\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && !this.#state.value) {\n logMissingFeature(ControlsElement.tagName, 'controls');\n }\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const controls = this.#state.value;\n\n if (!controls) {\n return;\n }\n\n applyStateDataAttrs(this, this.#core.getState(controls), ControlsDataAttrs);\n }\n}\n"],"mappings":";;;;;;;AAQA,IAAa,kBAAb,MAAa,wBAAwB,aAAa;;iBACtB;;CAE1B,CAASA,OAAQ,IAAI,cAAc;CACnC,CAASC,QAAS,IAAI,iBAAiB,MAAM,eAAe,eAAe;CAE3E,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,MAAe,CAAC,MAAKA,MAAO,MAC1B,mBAAkB,gBAAgB,SAAS,WAAW;;CAI1D,AAAmB,OAAO,SAA+B;AACvD,QAAM,OAAO,QAAQ;EAErB,MAAM,WAAW,MAAKA,MAAO;AAE7B,MAAI,CAAC,SACH;AAGF,sBAAoB,MAAM,MAAKD,KAAM,SAAS,SAAS,EAAE,kBAAkB"}
1
+ {"version":3,"file":"controls-element.js","names":["#core","#mediaState","#provider"],"sources":["../../../../src/ui/controls/controls-element.ts"],"sourcesContent":["import { ControlsCore, ControlsDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectControls } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\nimport { controlsContext } from './context';\n\nexport class ControlsElement extends MediaElement {\n static readonly tagName = 'media-controls';\n\n readonly #core = new ControlsCore();\n readonly #mediaState = new PlayerController(this, playerContext, selectControls);\n readonly #provider = new ContextProvider(this, { context: controlsContext });\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 if (!media) return;\n\n this.#core.setMedia(media);\n const state = this.#core.getState();\n\n applyStateDataAttrs(this, state, ControlsDataAttrs);\n\n this.#provider.setValue({\n state,\n stateAttrMap: ControlsDataAttrs,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAUA,IAAa,kBAAb,cAAqC,aAAa;;iBACtB;;CAE1B,CAASA,OAAQ,IAAI,cAAc;CACnC,CAASC,aAAc,IAAI,iBAAiB,MAAM,eAAe,eAAe;CAChF,CAASC,WAAY,IAAI,gBAAgB,MAAM,EAAE,SAAS,iBAAiB,CAAC;CAE5E,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,MAAe,CAAC,MAAKD,WAAY,SAAS,MAAKA,WAAY,YACzD,mBAAkB,KAAK,WAAW,MAAKA,WAAY,YAAY;;CAInE,AAAmB,OAAO,UAAgC;AACxD,QAAM,OAAO,SAAS;EAEtB,MAAM,QAAQ,MAAKA,WAAY;AAC/B,MAAI,CAAC,MAAO;AAEZ,QAAKD,KAAM,SAAS,MAAM;EAC1B,MAAM,QAAQ,MAAKA,KAAM,UAAU;AAEnC,sBAAoB,MAAM,OAAO,kBAAkB;AAEnD,QAAKE,SAAU,SAAS;GACtB;GACA,cAAc;GACf,CAAC"}
@@ -1,8 +1,14 @@
1
- import { MediaElement } from "../media-element.js";
1
+ import { ControlsContextValue } from "./context.js";
2
+ import { ContextPartElement } from "../context-part-element.js";
3
+ import { ContextConsumer } from "@videojs/element/context";
4
+ import { ControlsState } from "@videojs/core";
2
5
 
3
6
  //#region src/ui/controls/controls-group-element.d.ts
4
- declare class ControlsGroupElement extends MediaElement {
7
+ declare class ControlsGroupElement extends ContextPartElement<ControlsState> {
5
8
  static readonly tagName = "media-controls-group";
9
+ protected readonly consumer: ContextConsumer<{
10
+ __context__: ControlsContextValue;
11
+ }, this>;
6
12
  connectedCallback(): void;
7
13
  }
8
14
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"controls-group-element.d.ts","names":[],"sources":["../../../../src/ui/controls/controls-group-element.ts"],"mappings":";;;cAEa,oBAAA,SAA6B,YAAA;EAAA,gBACxB,OAAA;EAEP,iBAAA,CAAA;AAAA"}
1
+ {"version":3,"file":"controls-group-element.d.ts","names":[],"sources":["../../../../src/ui/controls/controls-group-element.ts"],"mappings":";;;;;;cAMa,oBAAA,SAA6B,kBAAA,CAAmB,aAAA;EAAA,gBAC3C,OAAA;EAAA,mBAEG,QAAA,EAAQ,eAAA;iBAH6C,oBAAA;EAAA;EAK/D,iBAAA,CAAA;AAAA"}
@@ -1,7 +1,16 @@
1
- import { MediaElement } from "../media-element.js";
1
+ import { controlsContext } from "./context.js";
2
+ import { ContextPartElement } from "../context-part-element.js";
3
+ import { ContextConsumer } from "@videojs/element/context";
2
4
 
3
5
  //#region src/ui/controls/controls-group-element.ts
4
- var ControlsGroupElement = class extends MediaElement {
6
+ var ControlsGroupElement = class extends ContextPartElement {
7
+ constructor(..._args) {
8
+ super(..._args);
9
+ this.consumer = new ContextConsumer(this, {
10
+ context: controlsContext,
11
+ subscribe: true
12
+ });
13
+ }
5
14
  static {
6
15
  this.tagName = "media-controls-group";
7
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"controls-group-element.js","names":[],"sources":["../../../../src/ui/controls/controls-group-element.ts"],"sourcesContent":["import { MediaElement } from '../media-element';\n\nexport class ControlsGroupElement extends MediaElement {\n static readonly tagName = 'media-controls-group';\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.hasAttribute('aria-label') || this.hasAttribute('aria-labelledby')) {\n this.setAttribute('role', 'group');\n }\n }\n}\n"],"mappings":";;;AAEA,IAAa,uBAAb,cAA0C,aAAa;;iBAC3B;;CAE1B,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,MAAI,KAAK,aAAa,aAAa,IAAI,KAAK,aAAa,kBAAkB,CACzE,MAAK,aAAa,QAAQ,QAAQ"}
1
+ {"version":3,"file":"controls-group-element.js","names":[],"sources":["../../../../src/ui/controls/controls-group-element.ts"],"sourcesContent":["import type { ControlsState } from '@videojs/core';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { controlsContext } from './context';\n\nexport class ControlsGroupElement extends ContextPartElement<ControlsState> {\n static readonly tagName = 'media-controls-group';\n\n protected readonly consumer = new ContextConsumer(this, { context: controlsContext, subscribe: true });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.hasAttribute('aria-label') || this.hasAttribute('aria-labelledby')) {\n this.setAttribute('role', 'group');\n }\n }\n}\n"],"mappings":";;;;;AAMA,IAAa,uBAAb,cAA0C,mBAAkC;;;kBAG5C,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAiB,WAAW;GAAM,CAAC;;;iBAF5E;;CAI1B,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,MAAI,KAAK,aAAa,aAAa,IAAI,KAAK,aAAa,kBAAkB,CACzE,MAAK,aAAa,QAAQ,QAAQ"}
@@ -1,25 +1,18 @@
1
- import { MediaElement } from "../media-element.js";
2
- import { PropertyValues } from "@videojs/element";
3
- import * as _videojs_core0 from "@videojs/core";
1
+ import { PlayerController } from "../../player/player-controller.js";
2
+ import { MediaButtonElement } from "../media-button-element.js";
3
+ import * as _videojs_core_dom0 from "@videojs/core/dom";
4
+ import { FullscreenButtonCore, MediaFullscreenState } from "@videojs/core";
4
5
 
5
6
  //#region src/ui/fullscreen-button/fullscreen-button-element.d.ts
6
- declare class FullscreenButtonElement extends MediaElement {
7
- #private;
7
+ declare class FullscreenButtonElement extends MediaButtonElement<FullscreenButtonCore> {
8
8
  static readonly tagName = "media-fullscreen-button";
9
- static properties: {
10
- label: {
11
- type: StringConstructor;
12
- };
13
- disabled: {
14
- type: BooleanConstructor;
15
- };
9
+ protected readonly core: FullscreenButtonCore;
10
+ protected readonly stateAttrMap: {
11
+ readonly fullscreen: "data-fullscreen";
12
+ readonly availability: "data-availability";
16
13
  };
17
- label: string | ((state: _videojs_core0.FullscreenButtonState) => string);
18
- disabled: boolean;
19
- connectedCallback(): void;
20
- disconnectedCallback(): void;
21
- protected willUpdate(changed: PropertyValues): void;
22
- protected update(changed: PropertyValues): void;
14
+ protected readonly mediaState: PlayerController<_videojs_core_dom0.AnyPlayerStore, MediaFullscreenState | undefined>;
15
+ protected activate(state: MediaFullscreenState): void;
23
16
  }
24
17
  //#endregion
25
18
  export { FullscreenButtonElement };
@@ -1 +1 @@
1
- {"version":3,"file":"fullscreen-button-element.d.ts","names":[],"sources":["../../../../src/ui/fullscreen-button/fullscreen-button-element.ts"],"mappings":";;;;;cAca,uBAAA,SAAgC,YAAA;EAAA;kBAC3B,OAAA;EAAA,OAEA,UAAA;;;;;;;;EAKhB,KAAA,aAAK,KAAA,iBAAA,qBAAA;EACL,QAAA;EAOS,iBAAA,CAAA;EAiBA,oBAAA,CAAA;EAAA,UAMU,UAAA,CAAW,OAAA,EAAS,cAAA;EAAA,UAKpB,MAAA,CAAO,OAAA,EAAS,cAAA;AAAA"}
1
+ {"version":3,"file":"fullscreen-button-element.d.ts","names":[],"sources":["../../../../src/ui/fullscreen-button/fullscreen-button-element.ts"],"mappings":";;;;;;cAOa,uBAAA,SAAgC,kBAAA,CAAmB,oBAAA;EAAA,gBAC9C,OAAA;EAAA,mBAEG,IAAA,EAAI,oBAAA;EAAA,mBACJ,YAAA;IAAA;;;qBACA,UAAA,EAAU,gBAAA,CAFN,kBAAA,CAEM,cAAA,EAAA,oBAAA;EAAA,UAEnB,QAAA,CAAS,KAAA,EAAO,oBAAA;AAAA"}
@@ -1,54 +1,22 @@
1
1
  import { playerContext } from "../../player/context.js";
2
- import { MediaElement } from "../media-element.js";
3
2
  import { PlayerController } from "../../player/player-controller.js";
4
- import { applyElementProps, applyStateDataAttrs, createButton, logMissingFeature, selectFullscreen } from "@videojs/core/dom";
3
+ import { MediaButtonElement } from "../media-button-element.js";
4
+ import { selectFullscreen } from "@videojs/core/dom";
5
5
  import { FullscreenButtonCore, FullscreenButtonDataAttrs } from "@videojs/core";
6
6
 
7
7
  //#region src/ui/fullscreen-button/fullscreen-button-element.ts
8
- var FullscreenButtonElement = class FullscreenButtonElement extends MediaElement {
8
+ var FullscreenButtonElement = class extends MediaButtonElement {
9
9
  constructor(..._args) {
10
10
  super(..._args);
11
- this.label = FullscreenButtonCore.defaultProps.label;
12
- this.disabled = FullscreenButtonCore.defaultProps.disabled;
11
+ this.core = new FullscreenButtonCore();
12
+ this.stateAttrMap = FullscreenButtonDataAttrs;
13
+ this.mediaState = new PlayerController(this, playerContext, selectFullscreen);
13
14
  }
14
15
  static {
15
16
  this.tagName = "media-fullscreen-button";
16
17
  }
17
- static {
18
- this.properties = {
19
- label: { type: String },
20
- disabled: { type: Boolean }
21
- };
22
- }
23
- #core = new FullscreenButtonCore();
24
- #state = new PlayerController(this, playerContext, selectFullscreen);
25
- #disconnect = null;
26
- connectedCallback() {
27
- super.connectedCallback();
28
- this.#disconnect = new AbortController();
29
- const buttonProps = createButton({
30
- onActivate: () => this.#core.toggle(this.#state.value),
31
- isDisabled: () => this.disabled || !this.#state.value
32
- });
33
- applyElementProps(this, buttonProps, this.#disconnect.signal);
34
- if (!this.#state.value) logMissingFeature(FullscreenButtonElement.tagName, "fullscreen");
35
- }
36
- disconnectedCallback() {
37
- super.disconnectedCallback();
38
- this.#disconnect?.abort();
39
- this.#disconnect = null;
40
- }
41
- willUpdate(changed) {
42
- super.willUpdate(changed);
43
- this.#core.setProps(this);
44
- }
45
- update(changed) {
46
- super.update(changed);
47
- const media = this.#state.value;
48
- if (!media) return;
49
- const state = this.#core.getState(media);
50
- applyElementProps(this, this.#core.getAttrs(state));
51
- applyStateDataAttrs(this, state, FullscreenButtonDataAttrs);
18
+ activate(state) {
19
+ this.core.toggle(state);
52
20
  }
53
21
  };
54
22