@videojs/html 10.0.0-alpha.4 → 10.0.0-alpha.6

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 (441) 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.js +2 -1
  12. package/dist/default/define/background/skin.js.map +1 -1
  13. package/dist/default/define/media/background-video.js +2 -1
  14. package/dist/default/define/media/background-video.js.map +1 -1
  15. package/dist/default/define/media/container.js +8 -0
  16. package/dist/default/define/media/container.js.map +1 -0
  17. package/dist/default/define/media/hls-video.js +2 -1
  18. package/dist/default/define/media/hls-video.js.map +1 -1
  19. package/dist/default/define/safe-define.js +9 -0
  20. package/dist/default/define/safe-define.js.map +1 -0
  21. package/dist/default/define/skin-mixin.js +35 -0
  22. package/dist/default/define/skin-mixin.js.map +1 -0
  23. package/dist/default/define/ui/buffering-indicator.js +2 -1
  24. package/dist/default/define/ui/buffering-indicator.js.map +1 -1
  25. package/dist/default/define/ui/controls-group.js +8 -0
  26. package/dist/default/define/ui/controls-group.js.map +1 -0
  27. package/dist/default/define/ui/controls.js +3 -2
  28. package/dist/default/define/ui/controls.js.map +1 -1
  29. package/dist/default/define/ui/fullscreen-button.js +2 -1
  30. package/dist/default/define/ui/fullscreen-button.js.map +1 -1
  31. package/dist/default/define/ui/mute-button.js +2 -1
  32. package/dist/default/define/ui/mute-button.js.map +1 -1
  33. package/dist/default/define/ui/pip-button.js +2 -1
  34. package/dist/default/define/ui/pip-button.js.map +1 -1
  35. package/dist/default/define/ui/play-button.js +2 -1
  36. package/dist/default/define/ui/play-button.js.map +1 -1
  37. package/dist/default/define/ui/playback-rate-button.js +8 -0
  38. package/dist/default/define/ui/playback-rate-button.js.map +1 -0
  39. package/dist/default/define/ui/popover.js +8 -0
  40. package/dist/default/define/ui/popover.js.map +1 -0
  41. package/dist/default/define/ui/poster.js +2 -1
  42. package/dist/default/define/ui/poster.js.map +1 -1
  43. package/dist/default/define/ui/seek-button.js +2 -1
  44. package/dist/default/define/ui/seek-button.js.map +1 -1
  45. package/dist/default/define/ui/slider-buffer.js +8 -0
  46. package/dist/default/define/ui/slider-buffer.js.map +1 -0
  47. package/dist/default/define/ui/slider-fill.js +8 -0
  48. package/dist/default/define/ui/slider-fill.js.map +1 -0
  49. package/dist/default/define/ui/slider-thumb.js +8 -0
  50. package/dist/default/define/ui/slider-thumb.js.map +1 -0
  51. package/dist/default/define/ui/slider-track.js +8 -0
  52. package/dist/default/define/ui/slider-track.js.map +1 -0
  53. package/dist/default/define/ui/slider-value.js +8 -0
  54. package/dist/default/define/ui/slider-value.js.map +1 -0
  55. package/dist/default/define/ui/slider.js +16 -0
  56. package/dist/default/define/ui/slider.js.map +1 -0
  57. package/dist/default/define/ui/thumbnail.js +8 -0
  58. package/dist/default/define/ui/thumbnail.js.map +1 -0
  59. package/dist/default/define/ui/time-group.js +8 -0
  60. package/dist/default/define/ui/time-group.js.map +1 -0
  61. package/dist/default/define/ui/time-separator.js +8 -0
  62. package/dist/default/define/ui/time-separator.js.map +1 -0
  63. package/dist/default/define/ui/time-slider.js +18 -0
  64. package/dist/default/define/ui/time-slider.js.map +1 -0
  65. package/dist/default/define/ui/time.js +4 -3
  66. package/dist/default/define/ui/time.js.map +1 -1
  67. package/dist/default/define/ui/volume-slider.js +16 -0
  68. package/dist/default/define/ui/volume-slider.js.map +1 -0
  69. package/dist/default/define/video/minimal-skin.css +762 -0
  70. package/dist/default/define/video/minimal-skin.js +131 -0
  71. package/dist/default/define/video/minimal-skin.js.map +1 -0
  72. package/dist/default/define/video/minimal-skin.tailwind.js +134 -0
  73. package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -0
  74. package/dist/default/define/video/player.js +8 -4
  75. package/dist/default/define/video/player.js.map +1 -1
  76. package/dist/default/define/video/skin.css +763 -0
  77. package/dist/default/define/video/skin.js +125 -0
  78. package/dist/default/define/video/skin.js.map +1 -0
  79. package/dist/default/define/video/skin.tailwind.js +127 -0
  80. package/dist/default/define/video/skin.tailwind.js.map +1 -0
  81. package/dist/default/icons/dist/render/default/index.js +27 -0
  82. package/dist/default/icons/dist/render/default/index.js.map +1 -0
  83. package/dist/default/icons/dist/render/minimal/index.js +27 -0
  84. package/dist/default/icons/dist/render/minimal/index.js.map +1 -0
  85. package/dist/default/index.js +17 -3
  86. package/dist/default/media/container-element.js +15 -0
  87. package/dist/default/media/container-element.js.map +1 -0
  88. package/dist/default/player/create-player.js +0 -5
  89. package/dist/default/player/create-player.js.map +1 -1
  90. package/dist/default/player/player-controller.js +3 -0
  91. package/dist/default/player/player-controller.js.map +1 -1
  92. package/dist/default/presets/audio.js +5 -0
  93. package/dist/default/presets/background.js +3 -0
  94. package/dist/default/presets/video.js +7 -0
  95. package/dist/default/skins/dist/default/video/default.tailwind.js +90 -0
  96. package/dist/default/skins/dist/default/video/default.tailwind.js.map +1 -0
  97. package/dist/default/skins/dist/default/video/minimal.tailwind.js +86 -0
  98. package/dist/default/skins/dist/default/video/minimal.tailwind.js.map +1 -0
  99. package/dist/default/store/container-mixin.js +14 -7
  100. package/dist/default/store/container-mixin.js.map +1 -1
  101. package/dist/default/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
  102. package/dist/default/ui/context-part-element.js +28 -0
  103. package/dist/default/ui/context-part-element.js.map +1 -0
  104. package/dist/default/ui/controls/context.js +9 -0
  105. package/dist/default/ui/controls/context.js.map +1 -0
  106. package/dist/default/ui/controls/controls-element.js +15 -6
  107. package/dist/default/ui/controls/controls-element.js.map +1 -1
  108. package/dist/default/ui/controls/controls-group-element.js +11 -2
  109. package/dist/default/ui/controls/controls-group-element.js.map +1 -1
  110. package/dist/default/ui/fullscreen-button/fullscreen-button-element.js +8 -39
  111. package/dist/default/ui/fullscreen-button/fullscreen-button-element.js.map +1 -1
  112. package/dist/default/ui/media-button-element.js +50 -0
  113. package/dist/default/ui/media-button-element.js.map +1 -0
  114. package/dist/default/ui/media-ui-element.js +22 -0
  115. package/dist/default/ui/media-ui-element.js.map +1 -0
  116. package/dist/default/ui/mute-button/mute-button-element.js +8 -39
  117. package/dist/default/ui/mute-button/mute-button-element.js.map +1 -1
  118. package/dist/default/ui/pip-button/pip-button-element.js +8 -39
  119. package/dist/default/ui/pip-button/pip-button-element.js.map +1 -1
  120. package/dist/default/ui/play-button/play-button-element.js +8 -39
  121. package/dist/default/ui/play-button/play-button-element.js.map +1 -1
  122. package/dist/default/ui/playback-rate-button/playback-rate-button-element.js +25 -0
  123. package/dist/default/ui/playback-rate-button/playback-rate-button-element.js.map +1 -0
  124. package/dist/default/ui/popover/popover-element.js +163 -0
  125. package/dist/default/ui/popover/popover-element.js.map +1 -0
  126. package/dist/default/ui/poster/poster-element.js +9 -14
  127. package/dist/default/ui/poster/poster-element.js.map +1 -1
  128. package/dist/default/ui/seek-button/seek-button-element.js +10 -36
  129. package/dist/default/ui/seek-button/seek-button-element.js.map +1 -1
  130. package/dist/default/ui/slider/context.js +9 -0
  131. package/dist/default/ui/slider/context.js.map +1 -0
  132. package/dist/default/ui/slider/slider-buffer-element.js +21 -0
  133. package/dist/default/ui/slider/slider-buffer-element.js.map +1 -0
  134. package/dist/default/ui/slider/slider-element.js +117 -0
  135. package/dist/default/ui/slider/slider-element.js.map +1 -0
  136. package/dist/default/ui/slider/slider-fill-element.js +21 -0
  137. package/dist/default/ui/slider/slider-fill-element.js.map +1 -0
  138. package/dist/default/ui/slider/slider-thumb-element.js +43 -0
  139. package/dist/default/ui/slider/slider-thumb-element.js.map +1 -0
  140. package/dist/default/ui/slider/slider-track-element.js +21 -0
  141. package/dist/default/ui/slider/slider-track-element.js.map +1 -0
  142. package/dist/default/ui/slider/slider-value-element.js +38 -0
  143. package/dist/default/ui/slider/slider-value-element.js.map +1 -0
  144. package/dist/default/ui/thumbnail/thumbnail-element.js +136 -0
  145. package/dist/default/ui/thumbnail/thumbnail-element.js.map +1 -0
  146. package/dist/default/ui/time/time-element.js +8 -16
  147. package/dist/default/ui/time/time-element.js.map +1 -1
  148. package/dist/default/ui/time-slider/time-slider-element.js +128 -0
  149. package/dist/default/ui/time-slider/time-slider-element.js.map +1 -0
  150. package/dist/default/ui/volume-slider/volume-slider-element.js +117 -0
  151. package/dist/default/ui/volume-slider/volume-slider-element.js.map +1 -0
  152. package/dist/dev/define/audio/minimal-skin.css +11 -0
  153. package/dist/dev/define/audio/minimal-skin.d.ts +17 -0
  154. package/dist/dev/define/audio/minimal-skin.d.ts.map +1 -0
  155. package/dist/dev/define/audio/minimal-skin.js +26 -0
  156. package/dist/dev/define/audio/minimal-skin.js.map +1 -0
  157. package/dist/dev/define/audio/player.d.ts +4 -3
  158. package/dist/dev/define/audio/player.d.ts.map +1 -1
  159. package/dist/dev/define/audio/player.js +8 -4
  160. package/dist/dev/define/audio/player.js.map +1 -1
  161. package/dist/dev/define/audio/skin.css +12 -0
  162. package/dist/dev/define/audio/skin.d.ts +17 -1
  163. package/dist/dev/define/audio/skin.d.ts.map +1 -0
  164. package/dist/dev/define/audio/skin.js +26 -0
  165. package/dist/dev/define/audio/skin.js.map +1 -0
  166. package/dist/dev/define/background/player.d.ts +4 -3
  167. package/dist/dev/define/background/player.d.ts.map +1 -1
  168. package/dist/dev/define/background/player.js +8 -4
  169. package/dist/dev/define/background/player.js.map +1 -1
  170. package/dist/dev/define/background/skin.d.ts.map +1 -1
  171. package/dist/dev/define/background/skin.js +2 -1
  172. package/dist/dev/define/background/skin.js.map +1 -1
  173. package/dist/dev/define/media/background-video.d.ts.map +1 -1
  174. package/dist/dev/define/media/background-video.js +2 -1
  175. package/dist/dev/define/media/background-video.js.map +1 -1
  176. package/dist/dev/define/media/container.d.ts +9 -0
  177. package/dist/dev/define/media/container.d.ts.map +1 -0
  178. package/dist/dev/define/media/container.js +8 -0
  179. package/dist/dev/define/media/container.js.map +1 -0
  180. package/dist/dev/define/media/hls-video.d.ts.map +1 -1
  181. package/dist/dev/define/media/hls-video.js +2 -1
  182. package/dist/dev/define/media/hls-video.js.map +1 -1
  183. package/dist/dev/define/safe-define.d.ts +9 -0
  184. package/dist/dev/define/safe-define.d.ts.map +1 -0
  185. package/dist/dev/define/safe-define.js +9 -0
  186. package/dist/dev/define/safe-define.js.map +1 -0
  187. package/dist/dev/define/skin-mixin.d.ts +13 -0
  188. package/dist/dev/define/skin-mixin.d.ts.map +1 -0
  189. package/dist/dev/define/skin-mixin.js +35 -0
  190. package/dist/dev/define/skin-mixin.js.map +1 -0
  191. package/dist/dev/define/ui/buffering-indicator.d.ts.map +1 -1
  192. package/dist/dev/define/ui/buffering-indicator.js +2 -1
  193. package/dist/dev/define/ui/buffering-indicator.js.map +1 -1
  194. package/dist/dev/define/ui/controls-group.d.ts +9 -0
  195. package/dist/dev/define/ui/controls-group.d.ts.map +1 -0
  196. package/dist/dev/define/ui/controls-group.js +8 -0
  197. package/dist/dev/define/ui/controls-group.js.map +1 -0
  198. package/dist/dev/define/ui/controls.d.ts +0 -2
  199. package/dist/dev/define/ui/controls.d.ts.map +1 -1
  200. package/dist/dev/define/ui/controls.js +3 -2
  201. package/dist/dev/define/ui/controls.js.map +1 -1
  202. package/dist/dev/define/ui/fullscreen-button.d.ts.map +1 -1
  203. package/dist/dev/define/ui/fullscreen-button.js +2 -1
  204. package/dist/dev/define/ui/fullscreen-button.js.map +1 -1
  205. package/dist/dev/define/ui/mute-button.d.ts.map +1 -1
  206. package/dist/dev/define/ui/mute-button.js +2 -1
  207. package/dist/dev/define/ui/mute-button.js.map +1 -1
  208. package/dist/dev/define/ui/pip-button.d.ts.map +1 -1
  209. package/dist/dev/define/ui/pip-button.js +2 -1
  210. package/dist/dev/define/ui/pip-button.js.map +1 -1
  211. package/dist/dev/define/ui/play-button.d.ts.map +1 -1
  212. package/dist/dev/define/ui/play-button.js +2 -1
  213. package/dist/dev/define/ui/play-button.js.map +1 -1
  214. package/dist/dev/define/ui/playback-rate-button.d.ts +9 -0
  215. package/dist/dev/define/ui/playback-rate-button.d.ts.map +1 -0
  216. package/dist/dev/define/ui/playback-rate-button.js +8 -0
  217. package/dist/dev/define/ui/playback-rate-button.js.map +1 -0
  218. package/dist/dev/define/ui/popover.d.ts +9 -0
  219. package/dist/dev/define/ui/popover.d.ts.map +1 -0
  220. package/dist/dev/define/ui/popover.js +8 -0
  221. package/dist/dev/define/ui/popover.js.map +1 -0
  222. package/dist/dev/define/ui/poster.d.ts.map +1 -1
  223. package/dist/dev/define/ui/poster.js +2 -1
  224. package/dist/dev/define/ui/poster.js.map +1 -1
  225. package/dist/dev/define/ui/seek-button.d.ts.map +1 -1
  226. package/dist/dev/define/ui/seek-button.js +2 -1
  227. package/dist/dev/define/ui/seek-button.js.map +1 -1
  228. package/dist/dev/define/ui/slider-buffer.d.ts +9 -0
  229. package/dist/dev/define/ui/slider-buffer.d.ts.map +1 -0
  230. package/dist/dev/define/ui/slider-buffer.js +8 -0
  231. package/dist/dev/define/ui/slider-buffer.js.map +1 -0
  232. package/dist/dev/define/ui/slider-fill.d.ts +9 -0
  233. package/dist/dev/define/ui/slider-fill.d.ts.map +1 -0
  234. package/dist/dev/define/ui/slider-fill.js +8 -0
  235. package/dist/dev/define/ui/slider-fill.js.map +1 -0
  236. package/dist/dev/define/ui/slider-thumb.d.ts +9 -0
  237. package/dist/dev/define/ui/slider-thumb.d.ts.map +1 -0
  238. package/dist/dev/define/ui/slider-thumb.js +8 -0
  239. package/dist/dev/define/ui/slider-thumb.js.map +1 -0
  240. package/dist/dev/define/ui/slider-track.d.ts +9 -0
  241. package/dist/dev/define/ui/slider-track.d.ts.map +1 -0
  242. package/dist/dev/define/ui/slider-track.js +8 -0
  243. package/dist/dev/define/ui/slider-track.js.map +1 -0
  244. package/dist/dev/define/ui/slider-value.d.ts +9 -0
  245. package/dist/dev/define/ui/slider-value.d.ts.map +1 -0
  246. package/dist/dev/define/ui/slider-value.js +8 -0
  247. package/dist/dev/define/ui/slider-value.js.map +1 -0
  248. package/dist/dev/define/ui/slider.d.ts +9 -0
  249. package/dist/dev/define/ui/slider.d.ts.map +1 -0
  250. package/dist/dev/define/ui/slider.js +16 -0
  251. package/dist/dev/define/ui/slider.js.map +1 -0
  252. package/dist/dev/define/ui/thumbnail.d.ts +9 -0
  253. package/dist/dev/define/ui/thumbnail.d.ts.map +1 -0
  254. package/dist/dev/define/ui/thumbnail.js +8 -0
  255. package/dist/dev/define/ui/thumbnail.js.map +1 -0
  256. package/dist/dev/define/ui/time-group.d.ts +9 -0
  257. package/dist/dev/define/ui/time-group.d.ts.map +1 -0
  258. package/dist/dev/define/ui/time-group.js +8 -0
  259. package/dist/dev/define/ui/time-group.js.map +1 -0
  260. package/dist/dev/define/ui/time-separator.d.ts +9 -0
  261. package/dist/dev/define/ui/time-separator.d.ts.map +1 -0
  262. package/dist/dev/define/ui/time-separator.js +8 -0
  263. package/dist/dev/define/ui/time-separator.js.map +1 -0
  264. package/dist/dev/define/ui/time-slider.d.ts +9 -0
  265. package/dist/dev/define/ui/time-slider.d.ts.map +1 -0
  266. package/dist/dev/define/ui/time-slider.js +18 -0
  267. package/dist/dev/define/ui/time-slider.js.map +1 -0
  268. package/dist/dev/define/ui/time.d.ts +0 -4
  269. package/dist/dev/define/ui/time.d.ts.map +1 -1
  270. package/dist/dev/define/ui/time.js +4 -3
  271. package/dist/dev/define/ui/time.js.map +1 -1
  272. package/dist/dev/define/ui/volume-slider.d.ts +9 -0
  273. package/dist/dev/define/ui/volume-slider.d.ts.map +1 -0
  274. package/dist/dev/define/ui/volume-slider.js +16 -0
  275. package/dist/dev/define/ui/volume-slider.js.map +1 -0
  276. package/dist/dev/define/video/minimal-skin.css +762 -0
  277. package/dist/dev/define/video/minimal-skin.d.ts +30 -0
  278. package/dist/dev/define/video/minimal-skin.d.ts.map +1 -0
  279. package/dist/dev/define/video/minimal-skin.js +131 -0
  280. package/dist/dev/define/video/minimal-skin.js.map +1 -0
  281. package/dist/dev/define/video/minimal-skin.tailwind.d.ts +30 -0
  282. package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -0
  283. package/dist/dev/define/video/minimal-skin.tailwind.js +134 -0
  284. package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -0
  285. package/dist/dev/define/video/player.d.ts +4 -3
  286. package/dist/dev/define/video/player.d.ts.map +1 -1
  287. package/dist/dev/define/video/player.js +8 -4
  288. package/dist/dev/define/video/player.js.map +1 -1
  289. package/dist/dev/define/video/skin.css +763 -0
  290. package/dist/dev/define/video/skin.d.ts +30 -1
  291. package/dist/dev/define/video/skin.d.ts.map +1 -0
  292. package/dist/dev/define/video/skin.js +125 -0
  293. package/dist/dev/define/video/skin.js.map +1 -0
  294. package/dist/dev/define/video/skin.tailwind.d.ts +30 -0
  295. package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -0
  296. package/dist/dev/define/video/skin.tailwind.js +127 -0
  297. package/dist/dev/define/video/skin.tailwind.js.map +1 -0
  298. package/dist/dev/icons/dist/render/default/index.js +27 -0
  299. package/dist/dev/icons/dist/render/default/index.js.map +1 -0
  300. package/dist/dev/icons/dist/render/minimal/index.js +27 -0
  301. package/dist/dev/icons/dist/render/minimal/index.js.map +1 -0
  302. package/dist/dev/index.d.ts +19 -4
  303. package/dist/dev/index.js +17 -3
  304. package/dist/dev/media/container-element.d.ts +13 -0
  305. package/dist/dev/media/container-element.d.ts.map +1 -0
  306. package/dist/dev/media/container-element.js +15 -0
  307. package/dist/dev/media/container-element.js.map +1 -0
  308. package/dist/dev/player/create-player.d.ts +6 -14
  309. package/dist/dev/player/create-player.d.ts.map +1 -1
  310. package/dist/dev/player/create-player.js +0 -5
  311. package/dist/dev/player/create-player.js.map +1 -1
  312. package/dist/dev/player/player-controller.d.ts +1 -0
  313. package/dist/dev/player/player-controller.d.ts.map +1 -1
  314. package/dist/dev/player/player-controller.js +3 -0
  315. package/dist/dev/player/player-controller.js.map +1 -1
  316. package/dist/dev/presets/audio.d.ts +4 -0
  317. package/dist/dev/presets/audio.js +5 -0
  318. package/dist/dev/presets/background.d.ts +2 -0
  319. package/dist/dev/presets/background.js +3 -0
  320. package/dist/dev/presets/video.d.ts +6 -0
  321. package/dist/dev/presets/video.js +7 -0
  322. package/dist/dev/skins/dist/default/video/default.tailwind.js +90 -0
  323. package/dist/dev/skins/dist/default/video/default.tailwind.js.map +1 -0
  324. package/dist/dev/skins/dist/default/video/minimal.tailwind.js +86 -0
  325. package/dist/dev/skins/dist/default/video/minimal.tailwind.js.map +1 -0
  326. package/dist/dev/store/container-mixin.d.ts +1 -1
  327. package/dist/dev/store/container-mixin.js +14 -7
  328. package/dist/dev/store/container-mixin.js.map +1 -1
  329. package/dist/dev/store/provider-mixin.d.ts +1 -1
  330. package/dist/dev/store/types.d.ts +1 -3
  331. package/dist/dev/store/types.d.ts.map +1 -1
  332. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js +2 -2
  333. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
  334. package/dist/dev/ui/context-part-element.d.ts +32 -0
  335. package/dist/dev/ui/context-part-element.d.ts.map +1 -0
  336. package/dist/dev/ui/context-part-element.js +28 -0
  337. package/dist/dev/ui/context-part-element.js.map +1 -0
  338. package/dist/dev/ui/controls/context.d.ts +10 -0
  339. package/dist/dev/ui/controls/context.d.ts.map +1 -0
  340. package/dist/dev/ui/controls/context.js +9 -0
  341. package/dist/dev/ui/controls/context.js.map +1 -0
  342. package/dist/dev/ui/controls/controls-element.d.ts +1 -1
  343. package/dist/dev/ui/controls/controls-element.d.ts.map +1 -1
  344. package/dist/dev/ui/controls/controls-element.js +17 -8
  345. package/dist/dev/ui/controls/controls-element.js.map +1 -1
  346. package/dist/dev/ui/controls/controls-group-element.d.ts +8 -2
  347. package/dist/dev/ui/controls/controls-group-element.d.ts.map +1 -1
  348. package/dist/dev/ui/controls/controls-group-element.js +11 -2
  349. package/dist/dev/ui/controls/controls-group-element.js.map +1 -1
  350. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts +11 -18
  351. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts.map +1 -1
  352. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js +8 -40
  353. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.js.map +1 -1
  354. package/dist/dev/ui/media-button-element.d.ts +24 -0
  355. package/dist/dev/ui/media-button-element.d.ts.map +1 -0
  356. package/dist/dev/ui/media-button-element.js +51 -0
  357. package/dist/dev/ui/media-button-element.js.map +1 -0
  358. package/dist/dev/ui/media-ui-element.d.ts +17 -0
  359. package/dist/dev/ui/media-ui-element.d.ts.map +1 -0
  360. package/dist/dev/ui/media-ui-element.js +23 -0
  361. package/dist/dev/ui/media-ui-element.js.map +1 -0
  362. package/dist/dev/ui/mute-button/mute-button-element.d.ts +11 -18
  363. package/dist/dev/ui/mute-button/mute-button-element.d.ts.map +1 -1
  364. package/dist/dev/ui/mute-button/mute-button-element.js +8 -40
  365. package/dist/dev/ui/mute-button/mute-button-element.js.map +1 -1
  366. package/dist/dev/ui/pip-button/pip-button-element.d.ts +11 -18
  367. package/dist/dev/ui/pip-button/pip-button-element.d.ts.map +1 -1
  368. package/dist/dev/ui/pip-button/pip-button-element.js +8 -40
  369. package/dist/dev/ui/pip-button/pip-button-element.js.map +1 -1
  370. package/dist/dev/ui/play-button/play-button-element.d.ts +12 -18
  371. package/dist/dev/ui/play-button/play-button-element.d.ts.map +1 -1
  372. package/dist/dev/ui/play-button/play-button-element.js +8 -40
  373. package/dist/dev/ui/play-button/play-button-element.js.map +1 -1
  374. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts +18 -0
  375. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts.map +1 -0
  376. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js +25 -0
  377. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js.map +1 -0
  378. package/dist/dev/ui/popover/popover-element.d.ts +65 -0
  379. package/dist/dev/ui/popover/popover-element.d.ts.map +1 -0
  380. package/dist/dev/ui/popover/popover-element.js +163 -0
  381. package/dist/dev/ui/popover/popover-element.js.map +1 -0
  382. package/dist/dev/ui/poster/poster-element.d.ts +11 -6
  383. package/dist/dev/ui/poster/poster-element.d.ts.map +1 -1
  384. package/dist/dev/ui/poster/poster-element.js +9 -15
  385. package/dist/dev/ui/poster/poster-element.js.map +1 -1
  386. package/dist/dev/ui/seek-button/seek-button-element.d.ts +14 -22
  387. package/dist/dev/ui/seek-button/seek-button-element.d.ts.map +1 -1
  388. package/dist/dev/ui/seek-button/seek-button-element.js +10 -37
  389. package/dist/dev/ui/seek-button/seek-button-element.js.map +1 -1
  390. package/dist/dev/ui/slider/context.d.ts +24 -0
  391. package/dist/dev/ui/slider/context.d.ts.map +1 -0
  392. package/dist/dev/ui/slider/context.js +9 -0
  393. package/dist/dev/ui/slider/context.js.map +1 -0
  394. package/dist/dev/ui/slider/slider-buffer-element.d.ts +15 -0
  395. package/dist/dev/ui/slider/slider-buffer-element.d.ts.map +1 -0
  396. package/dist/dev/ui/slider/slider-buffer-element.js +21 -0
  397. package/dist/dev/ui/slider/slider-buffer-element.js.map +1 -0
  398. package/dist/dev/ui/slider/slider-element.d.ts +56 -0
  399. package/dist/dev/ui/slider/slider-element.d.ts.map +1 -0
  400. package/dist/dev/ui/slider/slider-element.js +117 -0
  401. package/dist/dev/ui/slider/slider-element.js.map +1 -0
  402. package/dist/dev/ui/slider/slider-events.d.ts +18 -0
  403. package/dist/dev/ui/slider/slider-events.d.ts.map +1 -0
  404. package/dist/dev/ui/slider/slider-fill-element.d.ts +15 -0
  405. package/dist/dev/ui/slider/slider-fill-element.d.ts.map +1 -0
  406. package/dist/dev/ui/slider/slider-fill-element.js +21 -0
  407. package/dist/dev/ui/slider/slider-fill-element.js.map +1 -0
  408. package/dist/dev/ui/slider/slider-thumb-element.d.ts +14 -0
  409. package/dist/dev/ui/slider/slider-thumb-element.d.ts.map +1 -0
  410. package/dist/dev/ui/slider/slider-thumb-element.js +43 -0
  411. package/dist/dev/ui/slider/slider-thumb-element.js.map +1 -0
  412. package/dist/dev/ui/slider/slider-track-element.d.ts +15 -0
  413. package/dist/dev/ui/slider/slider-track-element.d.ts.map +1 -0
  414. package/dist/dev/ui/slider/slider-track-element.js +21 -0
  415. package/dist/dev/ui/slider/slider-track-element.js.map +1 -0
  416. package/dist/dev/ui/slider/slider-value-element.d.ts +19 -0
  417. package/dist/dev/ui/slider/slider-value-element.d.ts.map +1 -0
  418. package/dist/dev/ui/slider/slider-value-element.js +38 -0
  419. package/dist/dev/ui/slider/slider-value-element.js.map +1 -0
  420. package/dist/dev/ui/thumbnail/thumbnail-element.d.ts +42 -0
  421. package/dist/dev/ui/thumbnail/thumbnail-element.d.ts.map +1 -0
  422. package/dist/dev/ui/thumbnail/thumbnail-element.js +136 -0
  423. package/dist/dev/ui/thumbnail/thumbnail-element.js.map +1 -0
  424. package/dist/dev/ui/time/time-element.d.ts.map +1 -1
  425. package/dist/dev/ui/time/time-element.js +10 -18
  426. package/dist/dev/ui/time/time-element.js.map +1 -1
  427. package/dist/dev/ui/time-slider/time-slider-element.d.ts +49 -0
  428. package/dist/dev/ui/time-slider/time-slider-element.d.ts.map +1 -0
  429. package/dist/dev/ui/time-slider/time-slider-element.js +129 -0
  430. package/dist/dev/ui/time-slider/time-slider-element.js.map +1 -0
  431. package/dist/dev/ui/volume-slider/volume-slider-element.d.ts +44 -0
  432. package/dist/dev/ui/volume-slider/volume-slider-element.d.ts.map +1 -0
  433. package/dist/dev/ui/volume-slider/volume-slider-element.js +118 -0
  434. package/dist/dev/ui/volume-slider/volume-slider-element.js.map +1 -0
  435. package/package.json +41 -6
  436. package/dist/default/player/player-mixin.js +0 -23
  437. package/dist/default/player/player-mixin.js.map +0 -1
  438. package/dist/dev/player/player-mixin.d.ts +0 -20
  439. package/dist/dev/player/player-mixin.d.ts.map +0 -1
  440. package/dist/dev/player/player-mixin.js +0 -23
  441. package/dist/dev/player/player-mixin.js.map +0 -1
package/dist/dev/index.js CHANGED
@@ -1,24 +1,38 @@
1
1
  import { PLAYER_CONTEXT_KEY, playerContext } from "./player/context.js";
2
2
  import { createContainerMixin } from "./store/container-mixin.js";
3
- import { createProviderMixin } from "./store/provider-mixin.js";
4
3
  import { MediaElement } from "./ui/media-element.js";
4
+ import { MediaContainerElement } from "./media/container-element.js";
5
+ import { createProviderMixin } from "./store/provider-mixin.js";
5
6
  import { PlayerController } from "./player/player-controller.js";
6
- import { createPlayerMixin } from "./player/player-mixin.js";
7
7
  import { createPlayer } from "./player/create-player.js";
8
8
  import { BufferingIndicatorElement } from "./ui/buffering-indicator/buffering-indicator-element.js";
9
9
  import { ControlsElement } from "./ui/controls/controls-element.js";
10
10
  import { ControlsGroupElement } from "./ui/controls/controls-group-element.js";
11
+ import { MediaButtonElement } from "./ui/media-button-element.js";
11
12
  import { FullscreenButtonElement } from "./ui/fullscreen-button/fullscreen-button-element.js";
13
+ import { MediaUIElement } from "./ui/media-ui-element.js";
12
14
  import { MuteButtonElement } from "./ui/mute-button/mute-button-element.js";
13
15
  import { PiPButtonElement } from "./ui/pip-button/pip-button-element.js";
14
16
  import { PlayButtonElement } from "./ui/play-button/play-button-element.js";
17
+ import { PlaybackRateButtonElement } from "./ui/playback-rate-button/playback-rate-button-element.js";
18
+ import { PopoverElement } from "./ui/popover/popover-element.js";
15
19
  import { PosterElement } from "./ui/poster/poster-element.js";
16
20
  import { SeekButtonElement } from "./ui/seek-button/seek-button-element.js";
21
+ import { sliderContext } from "./ui/slider/context.js";
22
+ import { SliderBufferElement } from "./ui/slider/slider-buffer-element.js";
23
+ import { SliderElement } from "./ui/slider/slider-element.js";
24
+ import { SliderFillElement } from "./ui/slider/slider-fill-element.js";
25
+ import { SliderThumbElement } from "./ui/slider/slider-thumb-element.js";
26
+ import { SliderTrackElement } from "./ui/slider/slider-track-element.js";
27
+ import { SliderValueElement } from "./ui/slider/slider-value-element.js";
28
+ import { ThumbnailElement } from "./ui/thumbnail/thumbnail-element.js";
17
29
  import { TimeElement } from "./ui/time/time-element.js";
18
30
  import { TimeGroupElement } from "./ui/time/time-group-element.js";
19
31
  import { TimeSeparatorElement } from "./ui/time/time-separator-element.js";
32
+ import { TimeSliderElement } from "./ui/time-slider/time-slider-element.js";
33
+ import { VolumeSliderElement } from "./ui/volume-slider/volume-slider-element.js";
20
34
  import { createSelector, shallowEqual } from "@videojs/store";
21
35
 
22
36
  export * from "@videojs/core/dom"
23
37
 
24
- export { BufferingIndicatorElement, ControlsElement, ControlsGroupElement, FullscreenButtonElement, MediaElement, MuteButtonElement, PLAYER_CONTEXT_KEY, PiPButtonElement, PlayButtonElement, PlayerController, PosterElement, SeekButtonElement, TimeElement, TimeGroupElement, TimeSeparatorElement, createContainerMixin, createPlayer, createPlayerMixin, createProviderMixin, createSelector, playerContext, shallowEqual };
38
+ export { BufferingIndicatorElement, ControlsElement, ControlsGroupElement, FullscreenButtonElement, MediaButtonElement, MediaContainerElement, MediaElement, MediaUIElement, MuteButtonElement, PLAYER_CONTEXT_KEY, PiPButtonElement, PlayButtonElement, PlaybackRateButtonElement, PlayerController, PopoverElement, PosterElement, SeekButtonElement, SliderBufferElement, SliderElement, SliderFillElement, SliderThumbElement, SliderTrackElement, SliderValueElement, ThumbnailElement, TimeElement, TimeGroupElement, TimeSeparatorElement, TimeSliderElement, VolumeSliderElement, createContainerMixin, createPlayer, createProviderMixin, createSelector, playerContext, shallowEqual, sliderContext };
@@ -0,0 +1,13 @@
1
+ import { MediaElement } from "../ui/media-element.js";
2
+ import { PlayerConsumerConstructor } from "../store/types.js";
3
+ import "../index.js";
4
+ import * as _videojs_core_dom0 from "@videojs/core/dom";
5
+
6
+ //#region src/media/container-element.d.ts
7
+ declare const MediaContainerElement_base: typeof MediaElement & PlayerConsumerConstructor<_videojs_core_dom0.AnyPlayerStore>;
8
+ declare class MediaContainerElement extends MediaContainerElement_base {
9
+ static readonly tagName = "media-container";
10
+ }
11
+ //#endregion
12
+ export { MediaContainerElement };
13
+ //# sourceMappingURL=container-element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-element.d.ts","names":[],"sources":["../../../src/media/container-element.ts"],"mappings":";;;;;;cAEmD,0BAAA;cAItC,qBAAA,SAA8B,0BAAA;EAAA,gBACzB,OAAA;AAAA"}
@@ -0,0 +1,15 @@
1
+ import { playerContext } from "../player/context.js";
2
+ import { createContainerMixin } from "../store/container-mixin.js";
3
+ import { MediaElement } from "../ui/media-element.js";
4
+
5
+ //#region src/media/container-element.ts
6
+ const ContainerMixin = createContainerMixin(playerContext);
7
+ var MediaContainerElement = class extends ContainerMixin(MediaElement) {
8
+ static {
9
+ this.tagName = "media-container";
10
+ }
11
+ };
12
+
13
+ //#endregion
14
+ export { MediaContainerElement };
15
+ //# sourceMappingURL=container-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-element.js","names":[],"sources":["../../../src/media/container-element.ts"],"sourcesContent":["import { playerContext } from '../player/context';\nimport { createContainerMixin } from '../store/container-mixin';\nimport { MediaElement } from '../ui/media-element';\n\nconst ContainerMixin = createContainerMixin(playerContext);\n\nexport class MediaContainerElement extends ContainerMixin(MediaElement) {\n static readonly tagName = 'media-container';\n}\n"],"mappings":";;;;;AAIA,MAAM,iBAAiB,qBAAqB,cAAc;AAE1D,IAAa,wBAAb,cAA2C,eAAe,aAAa,CAAC;;iBAC5C"}
@@ -1,9 +1,7 @@
1
1
  import { PlayerContext } from "./context.js";
2
- import { PlayerElementConstructor } from "../store/types.js";
3
2
  import { ContainerMixin } from "../store/container-mixin.js";
4
3
  import { ProviderMixin } from "../store/provider-mixin.js";
5
4
  import { PlayerController } from "./player-controller.js";
6
- import { PlayerMixin } from "./player-mixin.js";
7
5
  import { AnyPlayerFeature, AudioFeatures, AudioPlayerStore, PlayerStore, VideoFeatures, VideoPlayerStore } from "@videojs/core/dom";
8
6
 
9
7
  //#region src/player/create-player.d.ts
@@ -17,10 +15,6 @@ interface CreatePlayerResult<Store extends PlayerStore> {
17
15
  create: () => Store;
18
16
  /** Player controller bound to this player's context. */
19
17
  PlayerController: PlayerController.Constructor<Store>;
20
- /** Pre-composed player element ready for customElements.define(). */
21
- PlayerElement: PlayerElementConstructor<Store>;
22
- /** Mixin for a complete player element (provider + container). */
23
- PlayerMixin: PlayerMixin<Store>;
24
18
  /** Mixin that provides player context to descendants. */
25
19
  ProviderMixin: ProviderMixin<Store>;
26
20
  /** Mixin that consumes player context and auto-attaches media elements. */
@@ -31,18 +25,16 @@ interface CreatePlayerResult<Store extends PlayerStore> {
31
25
  *
32
26
  * @example
33
27
  * ```ts
34
- * import { features } from '@videojs/core/dom';
35
28
  * import { createPlayer, MediaElement } from '@videojs/html';
29
+ * import { videoFeatures } from '@videojs/html/video';
36
30
  *
37
- * const { PlayerElement, PlayerController, context } = createPlayer({
38
- * features: features.video,
31
+ * const { ProviderMixin, ContainerMixin, PlayerController, context } = createPlayer({
32
+ * features: videoFeatures,
39
33
  * });
40
34
  *
41
- * // Simple: register pre-composed PlayerElement
42
- * customElements.define('video-player', PlayerElement);
43
- *
44
- * // Custom: extend with PlayerMixin
45
- * class MyPlayer extends PlayerMixin(MediaElement) {}
35
+ * // Provider element: owns the store, provides context to descendants
36
+ * class VideoPlayer extends ProviderMixin(MediaElement) {}
37
+ * customElements.define('video-player', VideoPlayer);
46
38
  *
47
39
  * // Control element with selector
48
40
  * class PlayButton extends MediaElement {
@@ -1 +1 @@
1
- {"version":3,"file":"create-player.d.ts","names":[],"sources":["../../../src/player/create-player.ts"],"mappings":";;;;;;;;;UAmBiB,kBAAA,kBAAoC,gBAAA;EACnD,QAAA,EAAU,QAAA;AAAA;AAAA,UAGK,kBAAA,eAAiC,WAAA;EAJf;EAMjC,OAAA,EAAS,aAAA,CAAc,KAAA;EANW;EASlC,MAAA,QAAc,KAAA;EARd;EAWA,gBAAA,EAAkB,gBAAA,CAAiB,WAAA,CAAY,KAAA;EAX7B;EAclB,aAAA,EAAe,wBAAA,CAAyB,KAAA;EAXzB;EAcf,WAAA,EAAa,WAAA,CAAY,KAAA;EAdQ;EAiBjC,aAAA,EAAe,aAAA,CAAc,KAAA;EAfN;EAkBvB,cAAA,EAAgB,cAAA,CAAe,KAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8BjB,YAAA,CAAa,MAAA,EAAQ,kBAAA,CAAmB,aAAA,IAAiB,kBAAA,CAAmB,gBAAA;;;;;;;iBAQ5E,YAAA,CAAa,MAAA,EAAQ,kBAAA,CAAmB,aAAA,IAAiB,kBAAA,CAAmB,gBAAA;;;AAR5F;;;;iBAgBgB,YAAA,wBAAoC,gBAAA,GAAA,CAClD,MAAA,EAAQ,kBAAA,CAAmB,QAAA,IAC1B,kBAAA,CAAmB,WAAA,CAAY,QAAA"}
1
+ {"version":3,"file":"create-player.d.ts","names":[],"sources":["../../../src/player/create-player.ts"],"mappings":";;;;;;;UAgBiB,kBAAA,kBAAoC,gBAAA;EACnD,QAAA,EAAU,QAAA;AAAA;AAAA,UAGK,kBAAA,eAAiC,WAAA;EAJf;EAMjC,OAAA,EAAS,aAAA,CAAc,KAAA;EANW;EASlC,MAAA,QAAc,KAAA;EARd;EAWA,gBAAA,EAAkB,gBAAA,CAAiB,WAAA,CAAY,KAAA;EAX7B;EAclB,aAAA,EAAe,aAAA,CAAc,KAAA;EAXd;EAcf,cAAA,EAAgB,cAAA,CAAe,KAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4BjB,YAAA,CAAa,MAAA,EAAQ,kBAAA,CAAmB,aAAA,IAAiB,kBAAA,CAAmB,gBAAA;;;;;;AAA5F;iBAQgB,YAAA,CAAa,MAAA,EAAQ,kBAAA,CAAmB,aAAA,IAAiB,kBAAA,CAAmB,gBAAA;;;;;;;iBAQ5E,YAAA,wBAAoC,gBAAA,GAAA,CAClD,MAAA,EAAQ,kBAAA,CAAmB,QAAA,IAC1B,kBAAA,CAAmB,WAAA,CAAY,QAAA"}
@@ -1,9 +1,7 @@
1
1
  import { playerContext } from "./context.js";
2
2
  import { createContainerMixin } from "../store/container-mixin.js";
3
3
  import { createProviderMixin } from "../store/provider-mixin.js";
4
- import { MediaElement } from "../ui/media-element.js";
5
4
  import { PlayerController } from "./player-controller.js";
6
- import { createPlayerMixin } from "./player-mixin.js";
7
5
  import { combine, createStore } from "@videojs/store";
8
6
 
9
7
  //#region src/player/create-player.ts
@@ -12,13 +10,10 @@ function createPlayer(config) {
12
10
  function create() {
13
11
  return createStore()(slice);
14
12
  }
15
- const PlayerMixin = createPlayerMixin(playerContext, create);
16
13
  return {
17
14
  context: playerContext,
18
15
  create,
19
16
  PlayerController,
20
- PlayerElement: PlayerMixin(MediaElement),
21
- PlayerMixin,
22
17
  ProviderMixin: createProviderMixin(playerContext, create),
23
18
  ContainerMixin: createContainerMixin(playerContext)
24
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"create-player.js","names":[],"sources":["../../../src/player/create-player.ts"],"sourcesContent":["import type {\n AnyPlayerFeature,\n AudioFeatures,\n AudioPlayerStore,\n PlayerStore,\n PlayerTarget,\n VideoFeatures,\n VideoPlayerStore,\n} from '@videojs/core/dom';\nimport { combine, createStore } from '@videojs/store';\n\nimport { type ContainerMixin, createContainerMixin } from '../store/container-mixin';\nimport { createProviderMixin, type ProviderMixin } from '../store/provider-mixin';\nimport type { PlayerElementConstructor } from '../store/types';\nimport { MediaElement } from '../ui/media-element';\nimport { type PlayerContext, playerContext } from './context';\nimport { PlayerController } from './player-controller';\nimport { createPlayerMixin, type PlayerMixin } from './player-mixin';\n\nexport interface CreatePlayerConfig<Features extends AnyPlayerFeature[]> {\n features: Features;\n}\n\nexport interface CreatePlayerResult<Store extends PlayerStore> {\n /** Context for consuming player in controllers. */\n context: PlayerContext<Store>;\n\n /** Creates a store instance for imperative access. */\n create: () => Store;\n\n /** Player controller bound to this player's context. */\n PlayerController: PlayerController.Constructor<Store>;\n\n /** Pre-composed player element ready for customElements.define(). */\n PlayerElement: PlayerElementConstructor<Store>;\n\n /** Mixin for a complete player element (provider + container). */\n PlayerMixin: PlayerMixin<Store>;\n\n /** Mixin that provides player context to descendants. */\n ProviderMixin: ProviderMixin<Store>;\n\n /** Mixin that consumes player context and auto-attaches media elements. */\n ContainerMixin: ContainerMixin<Store>;\n}\n\n/**\n * Creates a player factory with typed store, mixins, and controller.\n *\n * @example\n * ```ts\n * import { features } from '@videojs/core/dom';\n * import { createPlayer, MediaElement } from '@videojs/html';\n *\n * const { PlayerElement, PlayerController, context } = createPlayer({\n * features: features.video,\n * });\n *\n * // Simple: register pre-composed PlayerElement\n * customElements.define('video-player', PlayerElement);\n *\n * // Custom: extend with PlayerMixin\n * class MyPlayer extends PlayerMixin(MediaElement) {}\n *\n * // Control element with selector\n * class PlayButton extends MediaElement {\n * #playback = new PlayerController(this, context, selectPlayback);\n * }\n * ```\n *\n * @label Video\n * @param config - Player configuration with features.\n */\nexport function createPlayer(config: CreatePlayerConfig<VideoFeatures>): CreatePlayerResult<VideoPlayerStore>;\n\n/**\n * Creates a player factory for audio media.\n *\n * @label Audio\n * @param config - Player configuration with features.\n */\nexport function createPlayer(config: CreatePlayerConfig<AudioFeatures>): CreatePlayerResult<AudioPlayerStore>;\n\n/**\n * Creates a player factory with custom features.\n *\n * @label Generic\n * @param config - Player configuration with features.\n */\nexport function createPlayer<const Features extends AnyPlayerFeature[]>(\n config: CreatePlayerConfig<Features>\n): CreatePlayerResult<PlayerStore<Features>>;\n\nexport function createPlayer(config: CreatePlayerConfig<AnyPlayerFeature[]>): CreatePlayerResult<PlayerStore> {\n const slice = combine<PlayerTarget, AnyPlayerFeature[]>(...config.features);\n\n function create(): PlayerStore {\n return createStore<PlayerTarget>()(slice);\n }\n\n const PlayerMixin = createPlayerMixin<PlayerStore>(playerContext, create);\n const PlayerElement = PlayerMixin(MediaElement);\n const ProviderMixin = createProviderMixin<PlayerStore>(playerContext, create);\n const ContainerMixin = createContainerMixin<PlayerStore>(playerContext);\n\n return {\n context: playerContext,\n create,\n PlayerController,\n PlayerElement,\n PlayerMixin,\n ProviderMixin,\n ContainerMixin,\n };\n}\n"],"mappings":";;;;;;;;;AA6FA,SAAgB,aAAa,QAAiF;CAC5G,MAAM,QAAQ,QAA0C,GAAG,OAAO,SAAS;CAE3E,SAAS,SAAsB;AAC7B,SAAO,aAA2B,CAAC,MAAM;;CAG3C,MAAM,cAAc,kBAA+B,eAAe,OAAO;AAKzE,QAAO;EACL,SAAS;EACT;EACA;EACA,eARoB,YAAY,aAAa;EAS7C;EACA,eAToB,oBAAiC,eAAe,OAAO;EAU3E,gBATqB,qBAAkC,cAAc;EAUtE"}
1
+ {"version":3,"file":"create-player.js","names":[],"sources":["../../../src/player/create-player.ts"],"sourcesContent":["import type {\n AnyPlayerFeature,\n AudioFeatures,\n AudioPlayerStore,\n PlayerStore,\n PlayerTarget,\n VideoFeatures,\n VideoPlayerStore,\n} from '@videojs/core/dom';\nimport { combine, createStore } from '@videojs/store';\n\nimport { type ContainerMixin, createContainerMixin } from '../store/container-mixin';\nimport { createProviderMixin, type ProviderMixin } from '../store/provider-mixin';\nimport { type PlayerContext, playerContext } from './context';\nimport { PlayerController } from './player-controller';\n\nexport interface CreatePlayerConfig<Features extends AnyPlayerFeature[]> {\n features: Features;\n}\n\nexport interface CreatePlayerResult<Store extends PlayerStore> {\n /** Context for consuming player in controllers. */\n context: PlayerContext<Store>;\n\n /** Creates a store instance for imperative access. */\n create: () => Store;\n\n /** Player controller bound to this player's context. */\n PlayerController: PlayerController.Constructor<Store>;\n\n /** Mixin that provides player context to descendants. */\n ProviderMixin: ProviderMixin<Store>;\n\n /** Mixin that consumes player context and auto-attaches media elements. */\n ContainerMixin: ContainerMixin<Store>;\n}\n\n/**\n * Creates a player factory with typed store, mixins, and controller.\n *\n * @example\n * ```ts\n * import { createPlayer, MediaElement } from '@videojs/html';\n * import { videoFeatures } from '@videojs/html/video';\n *\n * const { ProviderMixin, ContainerMixin, PlayerController, context } = createPlayer({\n * features: videoFeatures,\n * });\n *\n * // Provider element: owns the store, provides context to descendants\n * class VideoPlayer extends ProviderMixin(MediaElement) {}\n * customElements.define('video-player', VideoPlayer);\n *\n * // Control element with selector\n * class PlayButton extends MediaElement {\n * #playback = new PlayerController(this, context, selectPlayback);\n * }\n * ```\n *\n * @label Video\n * @param config - Player configuration with features.\n */\nexport function createPlayer(config: CreatePlayerConfig<VideoFeatures>): CreatePlayerResult<VideoPlayerStore>;\n\n/**\n * Creates a player factory for audio media.\n *\n * @label Audio\n * @param config - Player configuration with features.\n */\nexport function createPlayer(config: CreatePlayerConfig<AudioFeatures>): CreatePlayerResult<AudioPlayerStore>;\n\n/**\n * Creates a player factory with custom features.\n *\n * @label Generic\n * @param config - Player configuration with features.\n */\nexport function createPlayer<const Features extends AnyPlayerFeature[]>(\n config: CreatePlayerConfig<Features>\n): CreatePlayerResult<PlayerStore<Features>>;\n\nexport function createPlayer(config: CreatePlayerConfig<AnyPlayerFeature[]>): CreatePlayerResult<PlayerStore> {\n const slice = combine<PlayerTarget, AnyPlayerFeature[]>(...config.features);\n\n function create(): PlayerStore {\n return createStore<PlayerTarget>()(slice);\n }\n\n const ProviderMixin = createProviderMixin<PlayerStore>(playerContext, create);\n const ContainerMixin = createContainerMixin<PlayerStore>(playerContext);\n\n return {\n context: playerContext,\n create,\n PlayerController,\n ProviderMixin,\n ContainerMixin,\n };\n}\n"],"mappings":";;;;;;;AAkFA,SAAgB,aAAa,QAAiF;CAC5G,MAAM,QAAQ,QAA0C,GAAG,OAAO,SAAS;CAE3E,SAAS,SAAsB;AAC7B,SAAO,aAA2B,CAAC,MAAM;;AAM3C,QAAO;EACL,SAAS;EACT;EACA;EACA,eAPoB,oBAAiC,eAAe,OAAO;EAQ3E,gBAPqB,qBAAkC,cAAc;EAQtE"}
@@ -44,6 +44,7 @@ declare class PlayerController<Store extends PlayerStore, Result = Store> implem
44
44
  */
45
45
  constructor(host: PlayerControllerHost, context: PlayerContext<Store>, selector: Selector<InferStoreState<Store>, Result>);
46
46
  get value(): Result | undefined;
47
+ get displayName(): string | undefined;
47
48
  hostConnected(): void;
48
49
  hostDisconnected(): void;
49
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"player-controller.d.ts","names":[],"sources":["../../../src/player/player-controller.ts"],"mappings":";;;;;;KAQY,oBAAA,GAAuB,sBAAA,GAAyB,WAAA;;AAA5D;;;;;AAyBA;;;;;;;;;;;;;;;;;cAAa,gBAAA,eAA+B,WAAA,WAAsB,KAAA,aAAkB,kBAAA;EAAA;EAAtD;;;;;cAYhB,IAAA,EAAM,oBAAA,EAAsB,OAAA,EAAS,aAAA,CAAc,KAAA;;;;;;;cAQ7D,IAAA,EAAM,oBAAA,EACN,OAAA,EAAS,aAAA,CAAc,KAAA,GACvB,QAAA,EAAU,QAAA,CAAS,eAAA,CAAgB,KAAA,GAAQ,MAAA;EAAA,IAmBzC,KAAA,CAAA,GAAS,MAAA;EAWb,aAAA,CAAA;EAKA,gBAAA,CAAA;AAAA;AAAA,kBAWe,gBAAA;EAAA,KACH,IAAA,GAAO,oBAAA;EAAA,KAEP,WAAA,eAA0B,WAAA,GAAc,WAAA,WAAsB,KAAA,WAAgB,gBAAA,CACxF,KAAA,EACA,MAAA;AAAA"}
1
+ {"version":3,"file":"player-controller.d.ts","names":[],"sources":["../../../src/player/player-controller.ts"],"mappings":";;;;;;KAQY,oBAAA,GAAuB,sBAAA,GAAyB,WAAA;;AAA5D;;;;;AAyBA;;;;;;;;;;;;;;;;;cAAa,gBAAA,eAA+B,WAAA,WAAsB,KAAA,aAAkB,kBAAA;EAAA;EAAtD;;;;;cAYhB,IAAA,EAAM,oBAAA,EAAsB,OAAA,EAAS,aAAA,CAAc,KAAA;;;;;;;cAQ7D,IAAA,EAAM,oBAAA,EACN,OAAA,EAAS,aAAA,CAAc,KAAA,GACvB,QAAA,EAAU,QAAA,CAAS,eAAA,CAAgB,KAAA,GAAQ,MAAA;EAAA,IAmBzC,KAAA,CAAA,GAAS,MAAA;EAAA,IAWT,WAAA,CAAA;EAIJ,aAAA,CAAA;EAKA,gBAAA,CAAA;AAAA;AAAA,kBAWe,gBAAA;EAAA,KACH,IAAA,GAAO,oBAAA;EAAA,KAEP,WAAA,eAA0B,WAAA,GAAc,WAAA,WAAsB,KAAA,WAAgB,gBAAA,CACxF,KAAA,EACA,MAAA;AAAA"}
@@ -46,6 +46,9 @@ var PlayerController = class {
46
46
  if (!this.#selector) return store;
47
47
  return this.#store?.value;
48
48
  }
49
+ get displayName() {
50
+ return this.#selector?.displayName;
51
+ }
49
52
  hostConnected() {
50
53
  const store = this.#consumer.value;
51
54
  if (store) this.#connect(store);
@@ -1 +1 @@
1
- {"version":3,"file":"player-controller.js","names":["#host","#selector","#consumer","#connect","#store"],"sources":["../../../src/player/player-controller.ts"],"sourcesContent":["import type { PlayerStore } from '@videojs/core/dom';\nimport type { ReactiveController, ReactiveControllerHost } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\nimport type { InferStoreState, Selector } from '@videojs/store';\nimport { StoreController } from '@videojs/store/html';\n\nimport type { PlayerContext } from './context';\n\nexport type PlayerControllerHost = ReactiveControllerHost & HTMLElement;\n\n/**\n * Reactive controller for accessing player store state.\n *\n * Without selector: Returns the store, does NOT subscribe to changes.\n * With selector: Returns selected state, subscribes with shallowEqual comparison.\n *\n * @example\n * ```ts\n * // Store access (no subscription)\n * class Controls extends MediaElement {\n * #player = new PlayerController(this, playerContext);\n *\n * handleClick() {\n * this.#player.value.setVolume(0.5);\n * }\n * }\n *\n * // Selector-based subscription\n * class PlayButton extends MediaElement {\n * #playback = new PlayerController(this, playerContext, selectPlayback);\n * }\n * ```\n */\nexport class PlayerController<Store extends PlayerStore, Result = Store> implements ReactiveController {\n readonly #host: PlayerControllerHost;\n readonly #selector: Selector<InferStoreState<Store>, Result> | undefined;\n\n #consumer: ContextConsumer<PlayerContext<Store>, PlayerControllerHost>;\n #store: StoreController<Store, Result> | null = null;\n\n /**\n * @label Without Selector\n * @param host - The host element that owns this controller.\n * @param context - Player context to resolve the store from.\n */\n constructor(host: PlayerControllerHost, context: PlayerContext<Store>);\n /**\n * @label With Selector\n * @param host - The host element that owns this controller.\n * @param context - Player context to resolve the store from.\n * @param selector - Derives a value from the player store state.\n */\n constructor(\n host: PlayerControllerHost,\n context: PlayerContext<Store>,\n selector: Selector<InferStoreState<Store>, Result>\n );\n constructor(\n host: PlayerControllerHost,\n context: PlayerContext<Store>,\n selector?: Selector<InferStoreState<Store>, Result>\n ) {\n this.#host = host;\n this.#selector = selector;\n\n this.#consumer = new ContextConsumer(host, {\n context,\n callback: (ctx) => this.#connect(ctx),\n subscribe: true,\n });\n\n host.addController(this);\n }\n\n get value(): Result | undefined {\n const store = this.#consumer.value;\n if (!store) return undefined;\n\n // Without selector: return store directly\n if (!this.#selector) return store as unknown as Result;\n\n // With selector: use StoreController\n return this.#store?.value;\n }\n\n hostConnected(): void {\n const store = this.#consumer.value;\n if (store) this.#connect(store);\n }\n\n hostDisconnected(): void {\n this.#store = null;\n }\n\n #connect(store: Store): void {\n if (!this.#store && this.#selector) {\n this.#store = new StoreController(this.#host, store, this.#selector);\n }\n }\n}\n\nexport namespace PlayerController {\n export type Host = PlayerControllerHost;\n\n export type Constructor<Store extends PlayerStore = PlayerStore, Result = Store> = typeof PlayerController<\n Store,\n Result\n >;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,IAAa,mBAAb,MAAuG;CACrG,CAASA;CACT,CAASC;CAET;CACA,SAAgD;CAmBhD,YACE,MACA,SACA,UACA;AACA,QAAKD,OAAQ;AACb,QAAKC,WAAY;AAEjB,QAAKC,WAAY,IAAI,gBAAgB,MAAM;GACzC;GACA,WAAW,QAAQ,MAAKC,QAAS,IAAI;GACrC,WAAW;GACZ,CAAC;AAEF,OAAK,cAAc,KAAK;;CAG1B,IAAI,QAA4B;EAC9B,MAAM,QAAQ,MAAKD,SAAU;AAC7B,MAAI,CAAC,MAAO,QAAO;AAGnB,MAAI,CAAC,MAAKD,SAAW,QAAO;AAG5B,SAAO,MAAKG,OAAQ;;CAGtB,gBAAsB;EACpB,MAAM,QAAQ,MAAKF,SAAU;AAC7B,MAAI,MAAO,OAAKC,QAAS,MAAM;;CAGjC,mBAAyB;AACvB,QAAKC,QAAS;;CAGhB,SAAS,OAAoB;AAC3B,MAAI,CAAC,MAAKA,SAAU,MAAKH,SACvB,OAAKG,QAAS,IAAI,gBAAgB,MAAKJ,MAAO,OAAO,MAAKC,SAAU"}
1
+ {"version":3,"file":"player-controller.js","names":["#host","#selector","#consumer","#connect","#store"],"sources":["../../../src/player/player-controller.ts"],"sourcesContent":["import type { PlayerStore } from '@videojs/core/dom';\nimport type { ReactiveController, ReactiveControllerHost } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\nimport type { InferStoreState, Selector } from '@videojs/store';\nimport { StoreController } from '@videojs/store/html';\n\nimport type { PlayerContext } from './context';\n\nexport type PlayerControllerHost = ReactiveControllerHost & HTMLElement;\n\n/**\n * Reactive controller for accessing player store state.\n *\n * Without selector: Returns the store, does NOT subscribe to changes.\n * With selector: Returns selected state, subscribes with shallowEqual comparison.\n *\n * @example\n * ```ts\n * // Store access (no subscription)\n * class Controls extends MediaElement {\n * #player = new PlayerController(this, playerContext);\n *\n * handleClick() {\n * this.#player.value.setVolume(0.5);\n * }\n * }\n *\n * // Selector-based subscription\n * class PlayButton extends MediaElement {\n * #playback = new PlayerController(this, playerContext, selectPlayback);\n * }\n * ```\n */\nexport class PlayerController<Store extends PlayerStore, Result = Store> implements ReactiveController {\n readonly #host: PlayerControllerHost;\n readonly #selector: Selector<InferStoreState<Store>, Result> | undefined;\n\n #consumer: ContextConsumer<PlayerContext<Store>, PlayerControllerHost>;\n #store: StoreController<Store, Result> | null = null;\n\n /**\n * @label Without Selector\n * @param host - The host element that owns this controller.\n * @param context - Player context to resolve the store from.\n */\n constructor(host: PlayerControllerHost, context: PlayerContext<Store>);\n /**\n * @label With Selector\n * @param host - The host element that owns this controller.\n * @param context - Player context to resolve the store from.\n * @param selector - Derives a value from the player store state.\n */\n constructor(\n host: PlayerControllerHost,\n context: PlayerContext<Store>,\n selector: Selector<InferStoreState<Store>, Result>\n );\n constructor(\n host: PlayerControllerHost,\n context: PlayerContext<Store>,\n selector?: Selector<InferStoreState<Store>, Result>\n ) {\n this.#host = host;\n this.#selector = selector;\n\n this.#consumer = new ContextConsumer(host, {\n context,\n callback: (ctx) => this.#connect(ctx),\n subscribe: true,\n });\n\n host.addController(this);\n }\n\n get value(): Result | undefined {\n const store = this.#consumer.value;\n if (!store) return undefined;\n\n // Without selector: return store directly\n if (!this.#selector) return store as unknown as Result;\n\n // With selector: use StoreController\n return this.#store?.value;\n }\n\n get displayName(): string | undefined {\n return this.#selector?.displayName;\n }\n\n hostConnected(): void {\n const store = this.#consumer.value;\n if (store) this.#connect(store);\n }\n\n hostDisconnected(): void {\n this.#store = null;\n }\n\n #connect(store: Store): void {\n if (!this.#store && this.#selector) {\n this.#store = new StoreController(this.#host, store, this.#selector);\n }\n }\n}\n\nexport namespace PlayerController {\n export type Host = PlayerControllerHost;\n\n export type Constructor<Store extends PlayerStore = PlayerStore, Result = Store> = typeof PlayerController<\n Store,\n Result\n >;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,IAAa,mBAAb,MAAuG;CACrG,CAASA;CACT,CAASC;CAET;CACA,SAAgD;CAmBhD,YACE,MACA,SACA,UACA;AACA,QAAKD,OAAQ;AACb,QAAKC,WAAY;AAEjB,QAAKC,WAAY,IAAI,gBAAgB,MAAM;GACzC;GACA,WAAW,QAAQ,MAAKC,QAAS,IAAI;GACrC,WAAW;GACZ,CAAC;AAEF,OAAK,cAAc,KAAK;;CAG1B,IAAI,QAA4B;EAC9B,MAAM,QAAQ,MAAKD,SAAU;AAC7B,MAAI,CAAC,MAAO,QAAO;AAGnB,MAAI,CAAC,MAAKD,SAAW,QAAO;AAG5B,SAAO,MAAKG,OAAQ;;CAGtB,IAAI,cAAkC;AACpC,SAAO,MAAKH,UAAW;;CAGzB,gBAAsB;EACpB,MAAM,QAAQ,MAAKC,SAAU;AAC7B,MAAI,MAAO,OAAKC,QAAS,MAAM;;CAGjC,mBAAyB;AACvB,QAAKC,QAAS;;CAGhB,SAAS,OAAoB;AAC3B,MAAI,CAAC,MAAKA,SAAU,MAAKH,SACvB,OAAKG,QAAS,IAAI,gBAAgB,MAAKJ,MAAO,OAAO,MAAKC,SAAU"}
@@ -0,0 +1,4 @@
1
+ import { MinimalAudioSkinElement } from "../define/audio/minimal-skin.js";
2
+ import { AudioSkinElement } from "../define/audio/skin.js";
3
+ import { audioFeatures } from "@videojs/core/dom";
4
+ export { AudioSkinElement, MinimalAudioSkinElement, audioFeatures };
@@ -0,0 +1,5 @@
1
+ import { MinimalAudioSkinElement } from "../define/audio/minimal-skin.js";
2
+ import { AudioSkinElement } from "../define/audio/skin.js";
3
+ import { audioFeatures } from "@videojs/core/dom";
4
+
5
+ export { AudioSkinElement, MinimalAudioSkinElement, audioFeatures };
@@ -0,0 +1,2 @@
1
+ import { backgroundFeatures } from "@videojs/core/dom";
2
+ export { backgroundFeatures };
@@ -0,0 +1,3 @@
1
+ import { backgroundFeatures } from "@videojs/core/dom";
2
+
3
+ export { backgroundFeatures };
@@ -0,0 +1,6 @@
1
+ import { MinimalVideoSkinElement } from "../define/video/minimal-skin.js";
2
+ import { MinimalVideoSkinTailwindElement } from "../define/video/minimal-skin.tailwind.js";
3
+ import { VideoSkinElement } from "../define/video/skin.js";
4
+ import { VideoSkinTailwindElement } from "../define/video/skin.tailwind.js";
5
+ import { videoFeatures } from "@videojs/core/dom";
6
+ export { MinimalVideoSkinElement, MinimalVideoSkinTailwindElement, VideoSkinElement, VideoSkinTailwindElement, videoFeatures };
@@ -0,0 +1,7 @@
1
+ import { MinimalVideoSkinTailwindElement } from "../define/video/minimal-skin.tailwind.js";
2
+ import { MinimalVideoSkinElement } from "../define/video/minimal-skin.js";
3
+ import { VideoSkinTailwindElement } from "../define/video/skin.tailwind.js";
4
+ import { VideoSkinElement } from "../define/video/skin.js";
5
+ import { videoFeatures } from "@videojs/core/dom";
6
+
7
+ export { MinimalVideoSkinElement, MinimalVideoSkinTailwindElement, VideoSkinElement, VideoSkinTailwindElement, videoFeatures };
@@ -0,0 +1,90 @@
1
+ import { cn } from "@videojs/utils/style";
2
+
3
+ //#region ../skins/dist/default/video/default.tailwind.js
4
+ const surface = cn("bg-white/10", "backdrop-blur-3xl backdrop-brightness-90 backdrop-saturate-150", "ring ring-white/5 ring-inset shadow-sm shadow-black/15", "after:absolute after:inset-0 after:ring after:rounded-[inherit] after:ring-black/15 after:pointer-events-none after:z-10", "[@media(prefers-reduced-transparency:reduce)]:bg-black/70 [@media(prefers-reduced-transparency:reduce)]:ring-black [@media(prefers-reduced-transparency:reduce)]:after:ring-white/20", "contrast-more:bg-black/90 contrast-more:ring-black contrast-more:after:ring-white/20");
5
+ const icon = cn("block [grid-area:1/1] size-4.5 shrink-0", "drop-shadow-[0_1px_0_var(--tw-drop-shadow-color)] drop-shadow-black/25", "transition-discrete transition-[display,opacity] duration-150 ease-out");
6
+ const iconFlipped = "[scale:-1_1]";
7
+ const iconContainer = "relative";
8
+ const button = {
9
+ base: cn("items-center justify-center shrink-0 border-none cursor-pointer select-none text-center", "font-medium", "outline-2 outline-transparent -outline-offset-2", "transition-[background-color,color,outline-offset] duration-150 ease-out", "disabled:cursor-not-allowed disabled:opacity-50 disabled:grayscale", "focus-visible:outline-blue-500 focus-visible:outline-offset-2"),
10
+ icon: cn("grid w-[2.125rem] aspect-square bg-transparent rounded-full", "text-white/90", "text-shadow-2xs text-shadow-black/25", "hover:bg-white/10 hover:text-white hover:no-underline", "focus-visible:bg-white/10 focus-visible:text-white", "aria-expanded:bg-white/10 aria-expanded:text-white"),
11
+ default: cn("flex py-2 px-4 bg-white rounded-full", "text-black")
12
+ };
13
+ const slider = {
14
+ 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-20"),
15
+ 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-1", "data-[orientation=vertical]:w-1 data-[orientation=vertical]:h-full"),
16
+ fill: {
17
+ base: "absolute rounded-[inherit] pointer-events-none",
18
+ fill: cn("bg-white", "data-[orientation=horizontal]:inset-y-0 data-[orientation=horizontal]:left-0", "data-[orientation=horizontal]:w-(--media-slider-fill)", "data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0", "data-[orientation=vertical]:h-(--media-slider-fill)"),
19
+ 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)", "data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0", "data-[orientation=vertical]:transition-[height] data-[orientation=vertical]:h-(--media-slider-buffer)")
20
+ },
21
+ thumb: {
22
+ base: cn("z-10 absolute -translate-x-1/2 -translate-y-1/2", "bg-white rounded-full", "ring ring-black/10 shadow-sm shadow-black/15", "transition-[opacity,height,width,outline-offset] duration-150 ease-out select-none", "outline-2 outline-transparent -outline-offset-2", "focus-visible:outline-blue-500 focus-visible:outline-offset-2", "data-[orientation=horizontal]:top-1/2 data-[orientation=horizontal]:left-(--media-slider-fill)", "data-[orientation=vertical]:left-1/2 data-[orientation=vertical]:top-[calc(100%-var(--media-slider-fill))]"),
23
+ persistent: "size-3",
24
+ interactive: cn("size-2.5", "opacity-0 focus-visible:opacity-100 group-hover/slider:opacity-100", "group-active/slider:size-3")
25
+ }
26
+ };
27
+ const root = cn("block relative isolate overflow-clip @container/media-root", "rounded-(--media-border-radius,2rem) 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]", "before:absolute before:pointer-events-none before:rounded-[inherit] before:z-10", "before:inset-px before:ring-1 before:ring-inset before:ring-white/15", "after:absolute after:pointer-events-none after:rounded-[inherit] after:z-10", "after:inset-0 after:ring-1 after:ring-inset after:ring-black/10", "[&>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");
28
+ const controls = cn("peer/controls", surface, "absolute @container/media-controls bottom-3 inset-x-3", "p-[0.175rem] flex items-center gap-[0.075rem]", "text-white rounded-full z-10", "will-change-[scale,transform,filter,opacity]", "transition-[scale,transform,filter,opacity] ease-out", "delay-0 duration-100 origin-bottom", "not-data-visible:pointer-events-none not-data-visible:blur-sm", "not-data-visible:scale-90 not-data-visible:opacity-0", "not-data-visible:delay-500 not-data-visible:duration-300", "motion-reduce:not-data-visible:duration-100", "motion-reduce:not-data-visible:blur-none", "motion-reduce:not-data-visible:scale-100", "@2xl/media-root:p-1 @2xl/media-root:gap-0.5");
29
+ const overlay = cn("absolute inset-0 flex flex-col items-start", "pointer-events-none rounded-[inherit]", "opacity-0", "bg-linear-to-t from-black/50 via-black/30 to-transparent", "backdrop-blur-none backdrop-saturate-120 backdrop-brightness-90", "transition-[opacity,backdrop-filter] ease-out", "duration-300 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");
30
+ const bufferingIndicator = {
31
+ root: "absolute inset-0 hidden items-center justify-center pointer-events-none z-10 text-white data-visible:flex",
32
+ container: cn("p-1 rounded-full", surface)
33
+ };
34
+ const error = {
35
+ root: "peer/error group/error absolute inset-0 z-20 items-center justify-center pointer-events-none hidden data-[visible]:flex",
36
+ dialog: cn("hidden flex-col gap-3 max-w-72 p-3 rounded-[1.75rem] text-white text-sm pointer-events-auto", "group-data-visible/error:flex", "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)]", surface),
37
+ content: "flex flex-col gap-2 px-2 pt-2 pb-1.5",
38
+ title: "font-semibold leading-tight",
39
+ description: "opacity-70",
40
+ actions: "flex gap-2 *:flex-1"
41
+ };
42
+ const time = {
43
+ group: "@container/media-time flex items-center flex-1 gap-3 px-2",
44
+ current: "hidden @2xs/media-time:block text-shadow-2xs text-shadow-black/25 tabular-nums",
45
+ duration: "text-shadow-2xs text-shadow-black/25 tabular-nums"
46
+ };
47
+ const popup = {
48
+ base: cn("m-0 border-0 [--media-popover-side-offset:0.5rem]", surface, "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"),
49
+ volume: "py-2.5 px-1 rounded-full"
50
+ };
51
+ const seek = {
52
+ button: "@max-md/media-controls:hidden",
53
+ label: "text-[0.75em] font-[480] tabular-nums",
54
+ labelForward: "absolute -right-px -bottom-0.75",
55
+ labelBackward: "absolute -left-px -bottom-0.75"
56
+ };
57
+ const playbackRate = { button: `after:content-[attr(data-rate)_'×'] after:w-[4ch] after:tabular-nums` };
58
+ const iconState = {
59
+ play: {
60
+ button: "group",
61
+ restart: "hidden opacity-0 group-data-ended:block group-data-ended:opacity-100",
62
+ play: "hidden opacity-0 group-not-data-ended:group-data-paused:block group-not-data-ended:group-data-paused:opacity-100",
63
+ pause: "hidden opacity-0 group-not-data-paused:group-not-data-ended:block group-not-data-paused:group-not-data-ended:opacity-100"
64
+ },
65
+ mute: {
66
+ button: "group",
67
+ volumeOff: "hidden opacity-0 group-data-muted:block group-data-muted:opacity-100",
68
+ 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",
69
+ 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"
70
+ },
71
+ fullscreen: {
72
+ button: "group",
73
+ enter: "hidden opacity-0 group-not-data-fullscreen:block group-not-data-fullscreen:opacity-100",
74
+ exit: "hidden opacity-0 group-data-fullscreen:block group-data-fullscreen:opacity-100"
75
+ },
76
+ captions: {
77
+ button: "group",
78
+ off: "hidden opacity-0 group-not-data-active:block group-not-data-active:opacity-100",
79
+ on: "hidden opacity-0 group-data-active:block group-data-active:opacity-100"
80
+ }
81
+ };
82
+ const captions = {
83
+ 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-12 peer-data-visible/controls:delay-25"),
84
+ container: "max-w-[42ch] mx-auto text-center flex flex-col items-center",
85
+ 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")
86
+ };
87
+
88
+ //#endregion
89
+ export { bufferingIndicator, button, controls, error, icon, iconContainer, iconFlipped, iconState, overlay, playbackRate, popup, root, seek, slider, time };
90
+ //# sourceMappingURL=default.tailwind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.tailwind.js","names":[],"sources":["../../../../../../../skins/dist/default/video/default.tailwind.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n\n//#region src/video/default.tailwind.ts\nconst surface = cn(\"bg-white/10\", \"backdrop-blur-3xl backdrop-brightness-90 backdrop-saturate-150\", \"ring ring-white/5 ring-inset shadow-sm shadow-black/15\", \"after:absolute after:inset-0 after:ring after:rounded-[inherit] after:ring-black/15 after:pointer-events-none after:z-10\", \"[@media(prefers-reduced-transparency:reduce)]:bg-black/70 [@media(prefers-reduced-transparency:reduce)]:ring-black [@media(prefers-reduced-transparency:reduce)]:after:ring-white/20\", \"contrast-more:bg-black/90 contrast-more:ring-black contrast-more:after:ring-white/20\");\nconst icon = cn(\"block [grid-area:1/1] size-4.5 shrink-0\", \"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\", \"font-medium\", \"outline-2 outline-transparent -outline-offset-2\", \"transition-[background-color,color,outline-offset] duration-150 ease-out\", \"disabled:cursor-not-allowed disabled:opacity-50 disabled:grayscale\", \"focus-visible:outline-blue-500 focus-visible:outline-offset-2\"),\n\ticon: cn(\"grid w-[2.125rem] aspect-square bg-transparent rounded-full\", \"text-white/90\", \"text-shadow-2xs text-shadow-black/25\", \"hover:bg-white/10 hover:text-white hover:no-underline\", \"focus-visible:bg-white/10 focus-visible:text-white\", \"aria-expanded:bg-white/10 aria-expanded:text-white\"),\n\tdefault: cn(\"flex py-2 px-4 bg-white rounded-full\", \"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-20\"),\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-1\", \"data-[orientation=vertical]:w-1 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)\", \"data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0\", \"data-[orientation=vertical]:h-(--media-slider-fill)\"),\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)\", \"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 -translate-x-1/2 -translate-y-1/2\", \"bg-white rounded-full\", \"ring ring-black/10 shadow-sm shadow-black/15\", \"transition-[opacity,height,width,outline-offset] duration-150 ease-out select-none\", \"outline-2 outline-transparent -outline-offset-2\", \"focus-visible:outline-blue-500 focus-visible:outline-offset-2\", \"data-[orientation=horizontal]:top-1/2 data-[orientation=horizontal]:left-(--media-slider-fill)\", \"data-[orientation=vertical]:left-1/2 data-[orientation=vertical]:top-[calc(100%-var(--media-slider-fill))]\"),\n\t\tpersistent: \"size-3\",\n\t\tinteractive: cn(\"size-2.5\", \"opacity-0 focus-visible:opacity-100 group-hover/slider:opacity-100\", \"group-active/slider:size-3\")\n\t}\n};\nconst root = cn(\"block relative isolate overflow-clip @container/media-root\", \"rounded-(--media-border-radius,2rem) 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]\", \"before:absolute before:pointer-events-none before:rounded-[inherit] before:z-10\", \"before:inset-px before:ring-1 before:ring-inset before:ring-white/15\", \"after:absolute after:pointer-events-none after:rounded-[inherit] after:z-10\", \"after:inset-0 after:ring-1 after:ring-inset after:ring-black/10\", \"[&>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\", surface, \"absolute @container/media-controls bottom-3 inset-x-3\", \"p-[0.175rem] flex items-center gap-[0.075rem]\", \"text-white rounded-full z-10\", \"will-change-[scale,transform,filter,opacity]\", \"transition-[scale,transform,filter,opacity] ease-out\", \"delay-0 duration-100 origin-bottom\", \"not-data-visible:pointer-events-none not-data-visible:blur-sm\", \"not-data-visible:scale-90 not-data-visible:opacity-0\", \"not-data-visible:delay-500 not-data-visible:duration-300\", \"motion-reduce:not-data-visible:duration-100\", \"motion-reduce:not-data-visible:blur-none\", \"motion-reduce:not-data-visible:scale-100\", \"@2xl/media-root:p-1 @2xl/media-root:gap-0.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/50 via-black/30 to-transparent\", \"backdrop-blur-none backdrop-saturate-120 backdrop-brightness-90\", \"transition-[opacity,backdrop-filter] ease-out\", \"duration-300 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 = {\n\troot: \"absolute inset-0 hidden items-center justify-center pointer-events-none z-10 text-white data-visible:flex\",\n\tcontainer: cn(\"p-1 rounded-full\", surface)\n};\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-72 p-3 rounded-[1.75rem] text-white text-sm pointer-events-auto\", \"group-data-visible/error:flex\", \"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)]\", surface),\n\tcontent: \"flex flex-col gap-2 px-2 pt-2 pb-1.5\",\n\ttitle: \"font-semibold leading-tight\",\n\tdescription: \"opacity-70\",\n\tactions: \"flex gap-2 *:flex-1\"\n};\nconst time = {\n\tgroup: \"@container/media-time flex items-center flex-1 gap-3 px-2\",\n\tcurrent: \"hidden @2xs/media-time:block text-shadow-2xs text-shadow-black/25 tabular-nums\",\n\tduration: \"text-shadow-2xs text-shadow-black/25 tabular-nums\"\n};\nconst popup = {\n\tbase: cn(\"m-0 border-0 [--media-popover-side-offset:0.5rem]\", surface, \"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: \"py-2.5 px-1 rounded-full\"\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 playbackRate = { button: `after:content-[attr(data-rate)_'×'] after:w-[4ch] after:tabular-nums` };\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-12 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, captions, controls, error, icon, iconContainer, iconFlipped, iconHidden, iconState, overlay, playbackRate, popup, root, seek, slider, time };\n//# sourceMappingURL=default.tailwind.js.map"],"mappings":";;;AAGA,MAAM,UAAU,GAAG,eAAe,kEAAkE,0DAA0D,4HAA4H,wLAAwL,uFAAuF;AACziB,MAAM,OAAO,GAAG,2CAA2C,0EAA0E,yEAAyE;AAE9M,MAAM,cAAc;AACpB,MAAM,gBAAgB;AACtB,MAAM,SAAS;CACd,MAAM,GAAG,2FAA2F,eAAe,mDAAmD,4EAA4E,sEAAsE,gEAAgE;CACxX,MAAM,GAAG,+DAA+D,iBAAiB,wCAAwC,yDAAyD,sDAAsD,qDAAqD;CACrS,SAAS,GAAG,wCAAwC,aAAa;CACjE;AACD,MAAM,SAAS;CACd,MAAM,GAAG,2FAA2F,iHAAiH,mEAAmE;CACxR,OAAO,GAAG,kEAAkE,oDAAoD,0EAA0E,qEAAqE;CAC/Q,MAAM;EACL,MAAM;EACN,MAAM,GAAG,YAAY,gFAAgF,yDAAyD,8EAA8E,sDAAsD;EAClS,QAAQ,GAAG,qCAAqC,gFAAgF,4GAA4G,8EAA8E,wGAAwG;EACla;CACD,OAAO;EACN,MAAM,GAAG,mDAAmD,yBAAyB,gDAAgD,sFAAsF,mDAAmD,iEAAiE,kGAAkG,6GAA6G;EAC9hB,YAAY;EACZ,aAAa,GAAG,YAAY,sEAAsE,6BAA6B;EAC/H;CACD;AACD,MAAM,OAAO,GAAG,8DAA8D,iDAAiD,uHAAuH,wBAAwB,6BAA6B,iDAAiD,mFAAmF,wEAAwE,+EAA+E,mEAAmE,iFAAiF,4FAA4F,oDAAoD,mDAAmD,yCAAyC,uCAAuC,qCAAqC,0EAA0E,yEAAyE,sEAAsE,8DAA8D,0DAA0D,qFAAqF,uFAAuF,0DAA0D,qDAAqD,gEAAgE,2EAA2E,8BAA8B;AACvyD,MAAM,WAAW,GAAG,iBAAiB,SAAS,yDAAyD,iDAAiD,gCAAgC,gDAAgD,wDAAwD,sCAAsC,iEAAiE,wDAAwD,4DAA4D,+CAA+C,4CAA4C,4CAA4C,8CAA8C;AAChrB,MAAM,UAAU,GAAG,8CAA8C,yCAAyC,aAAa,4DAA4D,mEAAmE,iDAAiD,0BAA0B,0CAA0C,2CAA2C,sCAAsC,uCAAuC,wCAAwC,mCAAmC,4CAA4C,6BAA6B;AACvnB,MAAM,qBAAqB;CAC1B,MAAM;CACN,WAAW,GAAG,oBAAoB,QAAQ;CAC1C;AACD,MAAM,QAAQ;CACb,MAAM;CACN,QAAQ,GAAG,+FAA+F,iCAAiC,2FAA2F,wCAAwC,wGAAwG,QAAQ;CAC9X,SAAS;CACT,OAAO;CACP,aAAa;CACb,SAAS;CACT;AACD,MAAM,OAAO;CACZ,OAAO;CACP,SAAS;CACT,UAAU;CACV;AACD,MAAM,QAAQ;CACb,MAAM,GAAG,qDAAqD,SAAS,iDAAiD,4DAA4D,yFAAyF,mFAAmF,0BAA0B;CAC1X,QAAQ;CACR;AACD,MAAM,OAAO;CACZ,QAAQ;CACR,OAAO;CACP,cAAc;CACd,eAAe;CACf;AACD,MAAM,eAAe,EAAE,QAAQ,wEAAwE;AACvG,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"}
@@ -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) {