@videojs/react 10.0.0-alpha.4 → 10.0.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/dist/default/_virtual/_rolldown/runtime.js +1 -19
  2. package/dist/default/index.js +10 -33
  3. package/dist/default/player/context.js +11 -1
  4. package/dist/default/player/context.js.map +1 -1
  5. package/dist/default/presets/audio/index.js +2 -8
  6. package/dist/default/presets/audio/skin.css +1 -0
  7. package/dist/default/presets/background/index.js +2 -8
  8. package/dist/default/presets/background/skin.css +1 -0
  9. package/dist/default/presets/video/index.js +2 -8
  10. package/dist/default/presets/video/minimal-skin.css +178 -53
  11. package/dist/default/presets/video/minimal-skin.js +63 -90
  12. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  13. package/dist/default/presets/video/minimal-skin.tailwind.js +126 -107
  14. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  15. package/dist/default/presets/video/skin.css +179 -54
  16. package/dist/default/presets/video/skin.js +61 -88
  17. package/dist/default/presets/video/skin.js.map +1 -1
  18. package/dist/default/presets/video/skin.tailwind.js +121 -104
  19. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  20. package/dist/default/skins/dist/default/video/default.tailwind.js +90 -0
  21. package/dist/default/skins/dist/default/video/default.tailwind.js.map +1 -0
  22. package/dist/default/skins/dist/default/video/minimal.tailwind.js +86 -0
  23. package/dist/default/skins/dist/default/video/minimal.tailwind.js.map +1 -0
  24. package/dist/default/ui/captions-button/captions-button.js +1 -16
  25. package/dist/default/ui/captions-button/captions-button.js.map +1 -1
  26. package/dist/default/ui/controls/context.js +16 -0
  27. package/dist/default/ui/controls/context.js.map +1 -0
  28. package/dist/default/ui/controls/controls-group.js +4 -1
  29. package/dist/default/ui/controls/controls-group.js.map +1 -1
  30. package/dist/default/ui/controls/controls-root.js +19 -10
  31. package/dist/default/ui/controls/controls-root.js.map +1 -1
  32. package/dist/default/ui/create-context-part.js +29 -0
  33. package/dist/default/ui/create-context-part.js.map +1 -0
  34. package/dist/default/ui/create-media-button.js +52 -0
  35. package/dist/default/ui/create-media-button.js.map +1 -0
  36. package/dist/default/ui/fullscreen-button/fullscreen-button.js +8 -33
  37. package/dist/default/ui/fullscreen-button/fullscreen-button.js.map +1 -1
  38. package/dist/default/ui/hooks/use-slider.js +75 -0
  39. package/dist/default/ui/hooks/use-slider.js.map +1 -0
  40. package/dist/default/ui/mute-button/mute-button.js +8 -36
  41. package/dist/default/ui/mute-button/mute-button.js.map +1 -1
  42. package/dist/default/ui/pip-button/pip-button.js +8 -33
  43. package/dist/default/ui/pip-button/pip-button.js.map +1 -1
  44. package/dist/default/ui/play-button/play-button.js +7 -33
  45. package/dist/default/ui/play-button/play-button.js.map +1 -1
  46. package/dist/default/ui/playback-rate-button/index.js +3 -0
  47. package/dist/default/ui/playback-rate-button/playback-rate-button.js +34 -0
  48. package/dist/default/ui/playback-rate-button/playback-rate-button.js.map +1 -0
  49. package/dist/default/ui/popover/context.js +16 -0
  50. package/dist/default/ui/popover/context.js.map +1 -0
  51. package/dist/default/ui/popover/index.js +4 -0
  52. package/dist/default/ui/popover/index.parts.js +17 -0
  53. package/dist/default/ui/popover/index.parts.js.map +1 -0
  54. package/dist/default/ui/popover/popover-arrow.js +17 -0
  55. package/dist/default/ui/popover/popover-arrow.js.map +1 -0
  56. package/dist/default/ui/popover/popover-popup.js +94 -0
  57. package/dist/default/ui/popover/popover-popup.js.map +1 -0
  58. package/dist/default/ui/popover/popover-root.js +69 -0
  59. package/dist/default/ui/popover/popover-root.js.map +1 -0
  60. package/dist/default/ui/popover/popover-trigger.js +43 -0
  61. package/dist/default/ui/popover/popover-trigger.js.map +1 -0
  62. package/dist/default/ui/poster/poster.js +2 -1
  63. package/dist/default/ui/poster/poster.js.map +1 -1
  64. package/dist/default/ui/seek-button/seek-button.js +7 -34
  65. package/dist/default/ui/seek-button/seek-button.js.map +1 -1
  66. package/dist/default/ui/slider/context.js +22 -0
  67. package/dist/default/ui/slider/context.js.map +1 -0
  68. package/dist/default/ui/slider/index.js +3 -0
  69. package/dist/default/ui/slider/index.parts.js +21 -0
  70. package/dist/default/ui/slider/index.parts.js.map +1 -0
  71. package/dist/default/ui/slider/slider-buffer.js +16 -0
  72. package/dist/default/ui/slider/slider-buffer.js.map +1 -0
  73. package/dist/default/ui/slider/slider-fill.js +16 -0
  74. package/dist/default/ui/slider/slider-fill.js.map +1 -0
  75. package/dist/default/ui/slider/slider-root.js +71 -0
  76. package/dist/default/ui/slider/slider-root.js.map +1 -0
  77. package/dist/default/ui/slider/slider-thumb.js +32 -0
  78. package/dist/default/ui/slider/slider-thumb.js.map +1 -0
  79. package/dist/default/ui/slider/slider-track.js +16 -0
  80. package/dist/default/ui/slider/slider-track.js.map +1 -0
  81. package/dist/default/ui/slider/slider-value.js +32 -0
  82. package/dist/default/ui/slider/slider-value.js.map +1 -0
  83. package/dist/default/ui/thumbnail/thumbnail.js +87 -0
  84. package/dist/default/ui/thumbnail/thumbnail.js.map +1 -0
  85. package/dist/default/ui/time/time-value.js +2 -1
  86. package/dist/default/ui/time/time-value.js.map +1 -1
  87. package/dist/default/ui/time-slider/index.js +3 -0
  88. package/dist/default/ui/time-slider/index.parts.js +21 -0
  89. package/dist/default/ui/time-slider/index.parts.js.map +1 -0
  90. package/dist/default/ui/time-slider/time-slider-root.js +96 -0
  91. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -0
  92. package/dist/default/ui/volume-slider/index.js +3 -0
  93. package/dist/default/ui/volume-slider/index.parts.js +19 -0
  94. package/dist/default/ui/volume-slider/index.parts.js.map +1 -0
  95. package/dist/default/ui/volume-slider/volume-slider-root.js +86 -0
  96. package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -0
  97. package/dist/default/utils/use-force-render.js +13 -0
  98. package/dist/default/utils/use-force-render.js.map +1 -0
  99. package/dist/default/utils/use-latest-ref.js +20 -0
  100. package/dist/default/utils/use-latest-ref.js.map +1 -0
  101. package/dist/default/utils/use-safe-id.js +22 -0
  102. package/dist/default/utils/use-safe-id.js.map +1 -0
  103. package/dist/dev/_virtual/_rolldown/runtime.js +1 -19
  104. package/dist/dev/index.d.ts +20 -2
  105. package/dist/dev/index.js +10 -33
  106. package/dist/dev/player/context.d.ts.map +1 -1
  107. package/dist/dev/player/context.js +11 -1
  108. package/dist/dev/player/context.js.map +1 -1
  109. package/dist/dev/presets/audio/index.d.ts +2 -9
  110. package/dist/dev/presets/audio/index.js +2 -8
  111. package/dist/dev/presets/audio/skin.css +1 -0
  112. package/dist/dev/presets/background/index.d.ts +2 -9
  113. package/dist/dev/presets/background/index.js +2 -8
  114. package/dist/dev/presets/background/skin.css +1 -0
  115. package/dist/dev/presets/video/index.d.ts +2 -9
  116. package/dist/dev/presets/video/index.js +2 -8
  117. package/dist/dev/presets/video/minimal-skin.css +178 -53
  118. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  119. package/dist/dev/presets/video/minimal-skin.js +61 -88
  120. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  121. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  122. package/dist/dev/presets/video/minimal-skin.tailwind.js +124 -105
  123. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  124. package/dist/dev/presets/video/skin.css +179 -54
  125. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  126. package/dist/dev/presets/video/skin.js +61 -88
  127. package/dist/dev/presets/video/skin.js.map +1 -1
  128. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  129. package/dist/dev/presets/video/skin.tailwind.js +121 -104
  130. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  131. package/dist/dev/skins/dist/default/video/default.tailwind.js +90 -0
  132. package/dist/dev/skins/dist/default/video/default.tailwind.js.map +1 -0
  133. package/dist/dev/skins/dist/default/video/minimal.tailwind.js +86 -0
  134. package/dist/dev/skins/dist/default/video/minimal.tailwind.js.map +1 -0
  135. package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -1
  136. package/dist/dev/ui/captions-button/captions-button.js +1 -16
  137. package/dist/dev/ui/captions-button/captions-button.js.map +1 -1
  138. package/dist/dev/ui/controls/context.js +16 -0
  139. package/dist/dev/ui/controls/context.js.map +1 -0
  140. package/dist/dev/ui/controls/controls-group.d.ts +2 -2
  141. package/dist/dev/ui/controls/controls-group.d.ts.map +1 -1
  142. package/dist/dev/ui/controls/controls-group.js +4 -1
  143. package/dist/dev/ui/controls/controls-group.js.map +1 -1
  144. package/dist/dev/ui/controls/controls-root.d.ts.map +1 -1
  145. package/dist/dev/ui/controls/controls-root.js +19 -10
  146. package/dist/dev/ui/controls/controls-root.js.map +1 -1
  147. package/dist/dev/ui/create-context-part.js +29 -0
  148. package/dist/dev/ui/create-context-part.js.map +1 -0
  149. package/dist/dev/ui/create-media-button.js +55 -0
  150. package/dist/dev/ui/create-media-button.js.map +1 -0
  151. package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts +2 -1
  152. package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts.map +1 -1
  153. package/dist/dev/ui/fullscreen-button/fullscreen-button.js +9 -37
  154. package/dist/dev/ui/fullscreen-button/fullscreen-button.js.map +1 -1
  155. package/dist/dev/ui/hooks/use-slider.d.ts +36 -0
  156. package/dist/dev/ui/hooks/use-slider.d.ts.map +1 -0
  157. package/dist/dev/ui/hooks/use-slider.js +75 -0
  158. package/dist/dev/ui/hooks/use-slider.js.map +1 -0
  159. package/dist/dev/ui/mute-button/mute-button.d.ts +2 -4
  160. package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -1
  161. package/dist/dev/ui/mute-button/mute-button.js +9 -40
  162. package/dist/dev/ui/mute-button/mute-button.js.map +1 -1
  163. package/dist/dev/ui/pip-button/pip-button.d.ts +2 -1
  164. package/dist/dev/ui/pip-button/pip-button.d.ts.map +1 -1
  165. package/dist/dev/ui/pip-button/pip-button.js +9 -37
  166. package/dist/dev/ui/pip-button/pip-button.js.map +1 -1
  167. package/dist/dev/ui/play-button/play-button.d.ts +1 -1
  168. package/dist/dev/ui/play-button/play-button.d.ts.map +1 -1
  169. package/dist/dev/ui/play-button/play-button.js +8 -37
  170. package/dist/dev/ui/play-button/play-button.js.map +1 -1
  171. package/dist/dev/ui/playback-rate-button/index.d.ts +2 -0
  172. package/dist/dev/ui/playback-rate-button/index.js +3 -0
  173. package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts +30 -0
  174. package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts.map +1 -0
  175. package/dist/dev/ui/playback-rate-button/playback-rate-button.js +34 -0
  176. package/dist/dev/ui/playback-rate-button/playback-rate-button.js.map +1 -0
  177. package/dist/dev/ui/popover/context.d.ts +17 -0
  178. package/dist/dev/ui/popover/context.d.ts.map +1 -0
  179. package/dist/dev/ui/popover/context.js +16 -0
  180. package/dist/dev/ui/popover/context.js.map +1 -0
  181. package/dist/dev/ui/popover/index.d.ts +3 -0
  182. package/dist/dev/ui/popover/index.js +4 -0
  183. package/dist/dev/ui/popover/index.parts.d.ts +12 -0
  184. package/dist/dev/ui/popover/index.parts.d.ts.map +1 -0
  185. package/dist/dev/ui/popover/index.parts.js +17 -0
  186. package/dist/dev/ui/popover/index.parts.js.map +1 -0
  187. package/dist/dev/ui/popover/popover-arrow.d.ts +15 -0
  188. package/dist/dev/ui/popover/popover-arrow.d.ts.map +1 -0
  189. package/dist/dev/ui/popover/popover-arrow.js +17 -0
  190. package/dist/dev/ui/popover/popover-arrow.js.map +1 -0
  191. package/dist/dev/ui/popover/popover-popup.d.ts +15 -0
  192. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -0
  193. package/dist/dev/ui/popover/popover-popup.js +94 -0
  194. package/dist/dev/ui/popover/popover-popup.js.map +1 -0
  195. package/dist/dev/ui/popover/popover-root.d.ts +29 -0
  196. package/dist/dev/ui/popover/popover-root.d.ts.map +1 -0
  197. package/dist/dev/ui/popover/popover-root.js +69 -0
  198. package/dist/dev/ui/popover/popover-root.js.map +1 -0
  199. package/dist/dev/ui/popover/popover-trigger.d.ts +15 -0
  200. package/dist/dev/ui/popover/popover-trigger.d.ts.map +1 -0
  201. package/dist/dev/ui/popover/popover-trigger.js +43 -0
  202. package/dist/dev/ui/popover/popover-trigger.js.map +1 -0
  203. package/dist/dev/ui/poster/poster.d.ts.map +1 -1
  204. package/dist/dev/ui/poster/poster.js +2 -1
  205. package/dist/dev/ui/poster/poster.js.map +1 -1
  206. package/dist/dev/ui/seek-button/seek-button.d.ts +1 -1
  207. package/dist/dev/ui/seek-button/seek-button.d.ts.map +1 -1
  208. package/dist/dev/ui/seek-button/seek-button.js +8 -38
  209. package/dist/dev/ui/seek-button/seek-button.js.map +1 -1
  210. package/dist/dev/ui/slider/context.js +22 -0
  211. package/dist/dev/ui/slider/context.js.map +1 -0
  212. package/dist/dev/ui/slider/index.d.ts +2 -0
  213. package/dist/dev/ui/slider/index.js +3 -0
  214. package/dist/dev/ui/slider/index.parts.d.ts +14 -0
  215. package/dist/dev/ui/slider/index.parts.d.ts.map +1 -0
  216. package/dist/dev/ui/slider/index.parts.js +21 -0
  217. package/dist/dev/ui/slider/index.parts.js.map +1 -0
  218. package/dist/dev/ui/slider/slider-buffer.d.ts +14 -0
  219. package/dist/dev/ui/slider/slider-buffer.d.ts.map +1 -0
  220. package/dist/dev/ui/slider/slider-buffer.js +16 -0
  221. package/dist/dev/ui/slider/slider-buffer.js.map +1 -0
  222. package/dist/dev/ui/slider/slider-fill.d.ts +14 -0
  223. package/dist/dev/ui/slider/slider-fill.d.ts.map +1 -0
  224. package/dist/dev/ui/slider/slider-fill.js +16 -0
  225. package/dist/dev/ui/slider/slider-fill.js.map +1 -0
  226. package/dist/dev/ui/slider/slider-root.d.ts +19 -0
  227. package/dist/dev/ui/slider/slider-root.d.ts.map +1 -0
  228. package/dist/dev/ui/slider/slider-root.js +71 -0
  229. package/dist/dev/ui/slider/slider-root.js.map +1 -0
  230. package/dist/dev/ui/slider/slider-thumb.d.ts +14 -0
  231. package/dist/dev/ui/slider/slider-thumb.d.ts.map +1 -0
  232. package/dist/dev/ui/slider/slider-thumb.js +32 -0
  233. package/dist/dev/ui/slider/slider-thumb.js.map +1 -0
  234. package/dist/dev/ui/slider/slider-track.d.ts +14 -0
  235. package/dist/dev/ui/slider/slider-track.d.ts.map +1 -0
  236. package/dist/dev/ui/slider/slider-track.js +16 -0
  237. package/dist/dev/ui/slider/slider-track.js.map +1 -0
  238. package/dist/dev/ui/slider/slider-value.d.ts +19 -0
  239. package/dist/dev/ui/slider/slider-value.d.ts.map +1 -0
  240. package/dist/dev/ui/slider/slider-value.js +32 -0
  241. package/dist/dev/ui/slider/slider-value.js.map +1 -0
  242. package/dist/dev/ui/thumbnail/thumbnail.d.ts +17 -0
  243. package/dist/dev/ui/thumbnail/thumbnail.d.ts.map +1 -0
  244. package/dist/dev/ui/thumbnail/thumbnail.js +87 -0
  245. package/dist/dev/ui/thumbnail/thumbnail.js.map +1 -0
  246. package/dist/dev/ui/time/time-value.d.ts.map +1 -1
  247. package/dist/dev/ui/time/time-value.js +2 -1
  248. package/dist/dev/ui/time/time-value.js.map +1 -1
  249. package/dist/dev/ui/time-slider/index.d.ts +2 -0
  250. package/dist/dev/ui/time-slider/index.js +3 -0
  251. package/dist/dev/ui/time-slider/index.parts.d.ts +15 -0
  252. package/dist/dev/ui/time-slider/index.parts.d.ts.map +1 -0
  253. package/dist/dev/ui/time-slider/index.parts.js +21 -0
  254. package/dist/dev/ui/time-slider/index.parts.js.map +1 -0
  255. package/dist/dev/ui/time-slider/time-slider-root.d.ts +17 -0
  256. package/dist/dev/ui/time-slider/time-slider-root.d.ts.map +1 -0
  257. package/dist/dev/ui/time-slider/time-slider-root.js +99 -0
  258. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -0
  259. package/dist/dev/ui/volume-slider/index.d.ts +2 -0
  260. package/dist/dev/ui/volume-slider/index.js +3 -0
  261. package/dist/dev/ui/volume-slider/index.parts.d.ts +14 -0
  262. package/dist/dev/ui/volume-slider/index.parts.d.ts.map +1 -0
  263. package/dist/dev/ui/volume-slider/index.parts.js +19 -0
  264. package/dist/dev/ui/volume-slider/index.parts.js.map +1 -0
  265. package/dist/dev/ui/volume-slider/volume-slider-root.d.ts +17 -0
  266. package/dist/dev/ui/volume-slider/volume-slider-root.d.ts.map +1 -0
  267. package/dist/dev/ui/volume-slider/volume-slider-root.js +89 -0
  268. package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -0
  269. package/dist/dev/utils/use-force-render.js +13 -0
  270. package/dist/dev/utils/use-force-render.js.map +1 -0
  271. package/dist/dev/utils/use-latest-ref.js +20 -0
  272. package/dist/dev/utils/use-latest-ref.js.map +1 -0
  273. package/dist/dev/utils/use-safe-id.js +22 -0
  274. package/dist/dev/utils/use-safe-id.js.map +1 -0
  275. package/package.json +6 -5
  276. package/dist/default/index.js.map +0 -1
  277. package/dist/default/presets/audio/index.js.map +0 -1
  278. package/dist/default/presets/background/index.js.map +0 -1
  279. package/dist/default/presets/video/index.js.map +0 -1
  280. package/dist/dev/index.js.map +0 -1
  281. package/dist/dev/presets/audio/index.d.ts.map +0 -1
  282. package/dist/dev/presets/audio/index.js.map +0 -1
  283. package/dist/dev/presets/background/index.d.ts.map +0 -1
  284. package/dist/dev/presets/background/index.js.map +0 -1
  285. package/dist/dev/presets/video/index.d.ts.map +0 -1
  286. package/dist/dev/presets/video/index.js.map +0 -1
@@ -1,11 +1,4 @@
1
- import { ProviderProps } from "../../player/create-player.js";
2
- import "../../index.js";
3
1
  import { BackgroundVideo, BackgroundVideoProps } from "../../media/background-video/index.js";
4
2
  import { BackgroundVideoSkin, BackgroundVideoSkinProps } from "./skin.js";
5
- import * as react from "react";
6
-
7
- //#region src/presets/background/index.d.ts
8
- declare const BackgroundVideoProvider: react.FC<ProviderProps>;
9
- //#endregion
10
- export { BackgroundVideo, type BackgroundVideoProps, BackgroundVideoProvider, BackgroundVideoSkin, BackgroundVideoSkinProps };
11
- //# sourceMappingURL=index.d.ts.map
3
+ import { backgroundFeatures } from "@videojs/core/dom";
4
+ export { BackgroundVideo, type BackgroundVideoProps, BackgroundVideoSkin, BackgroundVideoSkinProps, backgroundFeatures };
@@ -1,11 +1,5 @@
1
- import { createPlayer } from "../../player/create-player.js";
2
- import { src_exports } from "../../index.js";
3
1
  import { BackgroundVideo } from "../../media/background-video/index.js";
4
2
  import { BackgroundVideoSkin } from "./skin.js";
3
+ import { backgroundFeatures } from "@videojs/core/dom";
5
4
 
6
- //#region src/presets/background/index.ts
7
- const { Provider: BackgroundVideoProvider } = createPlayer({ features: src_exports.features.background });
8
-
9
- //#endregion
10
- export { BackgroundVideo, BackgroundVideoProvider, BackgroundVideoSkin };
11
- //# sourceMappingURL=index.js.map
5
+ export { BackgroundVideo, BackgroundVideoSkin, backgroundFeatures };
@@ -19,3 +19,4 @@
19
19
  height: 100%;
20
20
  object-fit: inherit;
21
21
  }
22
+
@@ -1,14 +1,7 @@
1
- import { ProviderProps } from "../../player/create-player.js";
2
- import "../../index.js";
3
1
  import { Video, VideoProps } from "../../media/video.js";
4
2
  import { MinimalVideoSkin, MinimalVideoSkinProps } from "./minimal-skin.js";
5
3
  import { MinimalVideoSkinTailwind } from "./minimal-skin.tailwind.js";
6
4
  import { VideoSkin, VideoSkinProps } from "./skin.js";
7
5
  import { VideoSkinTailwind } from "./skin.tailwind.js";
8
- import * as react from "react";
9
-
10
- //#region src/presets/video/index.d.ts
11
- declare const VideoProvider: react.FC<ProviderProps>;
12
- //#endregion
13
- export { MinimalVideoSkin, MinimalVideoSkinProps, MinimalVideoSkinTailwind, Video, type VideoProps, VideoProvider, VideoSkin, VideoSkinProps, VideoSkinTailwind };
14
- //# sourceMappingURL=index.d.ts.map
6
+ import { videoFeatures } from "@videojs/core/dom";
7
+ export { MinimalVideoSkin, MinimalVideoSkinProps, MinimalVideoSkinTailwind, Video, type VideoProps, VideoSkin, VideoSkinProps, VideoSkinTailwind, videoFeatures };
@@ -1,14 +1,8 @@
1
- import { createPlayer } from "../../player/create-player.js";
2
- import { src_exports } from "../../index.js";
3
1
  import { Video } from "../../media/video.js";
4
2
  import { MinimalVideoSkin } from "./minimal-skin.js";
5
3
  import { MinimalVideoSkinTailwind } from "./minimal-skin.tailwind.js";
6
4
  import { VideoSkin } from "./skin.js";
7
5
  import { VideoSkinTailwind } from "./skin.tailwind.js";
6
+ import { videoFeatures } from "@videojs/core/dom";
8
7
 
9
- //#region src/presets/video/index.ts
10
- const { Provider: VideoProvider } = createPlayer({ features: src_exports.features.video });
11
-
12
- //#endregion
13
- export { MinimalVideoSkin, MinimalVideoSkinTailwind, Video, VideoProvider, VideoSkin, VideoSkinTailwind };
14
- //# sourceMappingURL=index.js.map
8
+ export { MinimalVideoSkin, MinimalVideoSkinTailwind, Video, VideoSkin, VideoSkinTailwind, videoFeatures };
@@ -1,3 +1,54 @@
1
+ /* ==========================================================================
2
+ Icon State Visibility
3
+
4
+ Data-attribute-driven visibility rules for multi-state icon buttons.
5
+ Uses :is() with both element selectors (for HTML custom element wrappers)
6
+ and class selectors (for React rendered SVG elements).
7
+ ========================================================================== */
8
+
9
+ /* --- All icons hidden by default --- */
10
+
11
+ .media-button--play .media-icon--restart,
12
+ .media-button--play .media-icon--play,
13
+ .media-button--play .media-icon--pause,
14
+ .media-button--mute .media-icon--volume-off,
15
+ .media-button--mute .media-icon--volume-low,
16
+ .media-button--mute .media-icon--volume-high,
17
+ .media-button--fullscreen .media-icon--fullscreen-enter,
18
+ .media-button--fullscreen .media-icon--fullscreen-exit,
19
+ .media-button--captions .media-icon--captions-off,
20
+ .media-button--captions .media-icon--captions-on {
21
+ display: none;
22
+ opacity: 0;
23
+ }
24
+
25
+ /* --- Active icon per state --- */
26
+
27
+ /* Play: ended → restart */
28
+ .media-button--play[data-ended] .media-icon--restart,
29
+ /* Play: paused (not ended) → play */
30
+ .media-button--play:not([data-ended])[data-paused] .media-icon--play,
31
+ /* Play: playing (not paused, not ended) → pause */
32
+ .media-button--play:not([data-paused]):not([data-ended]) .media-icon--pause,
33
+ /* Mute: muted → volume off */
34
+ .media-button--mute[data-muted] .media-icon--volume-off,
35
+ /* Mute: volume low (not muted) → volume low */
36
+ .media-button--mute:not([data-muted])[data-volume-level="low"] .media-icon--volume-low,
37
+ /* Mute: volume high (not muted, not low) → volume high */
38
+ .media-button--mute:not([data-muted]):not([data-volume-level="low"]) .media-icon--volume-high,
39
+ /* Fullscreen: not fullscreen → enter */
40
+ .media-button--fullscreen:not([data-fullscreen]) .media-icon--fullscreen-enter,
41
+ /* Fullscreen: fullscreen → exit */
42
+ .media-button--fullscreen[data-fullscreen] .media-icon--fullscreen-exit,
43
+ /* Captions: not active → captions off */
44
+ .media-button--captions:not([data-active]) .media-icon--captions-off,
45
+ /* Captions: active → captions on */
46
+ .media-button--captions[data-active] .media-icon--captions-on {
47
+ display: block;
48
+ opacity: 1;
49
+ }
50
+
51
+
1
52
  /* ==========================================================================
2
53
  Reset
3
54
  ========================================================================== */
@@ -30,6 +81,7 @@
30
81
  .media-minimal-skin {
31
82
  position: relative;
32
83
  isolation: isolate;
84
+ display: block;
33
85
  container: media-root / inline-size;
34
86
  overflow: clip;
35
87
  border-radius: var(--media-border-radius, 0.75rem);
@@ -75,6 +127,7 @@
75
127
  .media-minimal-skin > video {
76
128
  width: 100%;
77
129
  height: 100%;
130
+ border-radius: inherit;
78
131
  }
79
132
 
80
133
  /* ==========================================================================
@@ -86,6 +139,7 @@
86
139
  inset: 0;
87
140
  width: 100%;
88
141
  height: 100%;
142
+ border-radius: inherit;
89
143
  object-fit: cover;
90
144
  transition: opacity 0.25s;
91
145
  pointer-events: none;
@@ -101,6 +155,7 @@
101
155
  .media-minimal-skin .media-overlay {
102
156
  position: absolute;
103
157
  inset: 0;
158
+ z-index: 1;
104
159
  border-radius: inherit;
105
160
  background-image: linear-gradient(to top, oklch(0 0 0 / 0.7), oklch(0 0 0 / 0.5) 7.5rem, oklch(0 0 0 / 0));
106
161
  backdrop-filter: blur(0) saturate(1.2) brightness(0.9);
@@ -134,12 +189,15 @@
134
189
  position: absolute;
135
190
  inset: 0;
136
191
  z-index: 10;
137
- display: flex;
192
+ display: none;
138
193
  align-items: center;
139
194
  justify-content: center;
140
195
  color: oklch(1 0 0);
141
196
  pointer-events: none;
142
197
  }
198
+ .media-minimal-skin .media-buffering-indicator[data-visible] {
199
+ display: flex;
200
+ }
143
201
 
144
202
  /* ==========================================================================
145
203
  Error Dialog
@@ -327,6 +385,7 @@
327
385
  outline-offset: -2px;
328
386
  color: oklch(0 0 0);
329
387
  font-weight: 500;
388
+ text-align: center;
330
389
  transition-property: background-color, color, outline-offset;
331
390
  transition-duration: 150ms;
332
391
  transition-timing-function: ease-out;
@@ -346,7 +405,9 @@
346
405
  /* Icon button variant */
347
406
  .media-minimal-skin .media-button--icon {
348
407
  display: grid;
349
- padding: 0.625rem;
408
+ width: 2.375rem;
409
+ padding: 0;
410
+ aspect-ratio: 1;
350
411
  background: transparent;
351
412
  color: oklch(1 0 0);
352
413
  }
@@ -360,13 +421,35 @@
360
421
  filter: drop-shadow(0 1px 0 oklch(0 0 0 / 0.25));
361
422
  }
362
423
 
363
- /* Seek button variant — hidden at small sizes */
424
+ /* Seek button */
425
+ .media-minimal-skin .media-button--seek .media-icon__label {
426
+ position: absolute;
427
+ right: -1px;
428
+ bottom: -3px;
429
+ font-size: 0.75em;
430
+ font-weight: 480;
431
+ font-variant-numeric: tabular-nums;
432
+ }
433
+ .media-minimal-skin .media-button--seek:has(.media-icon--flipped) .media-icon__label {
434
+ right: unset;
435
+ left: -1px;
436
+ }
364
437
  @container media-controls (width < 28rem) {
365
438
  .media-minimal-skin .media-button--seek {
366
439
  display: none;
367
440
  }
368
441
  }
369
442
 
443
+ /* Playback rate button */
444
+ .media-minimal-skin .media-button--playback-rate {
445
+ padding: 0;
446
+ }
447
+ .media-minimal-skin .media-button--playback-rate::after {
448
+ content: attr(data-rate) "\00D7";
449
+ width: 4ch;
450
+ font-variant-numeric: tabular-nums;
451
+ }
452
+
370
453
  /* ==========================================================================
371
454
  Icons
372
455
  ========================================================================== */
@@ -375,6 +458,8 @@
375
458
  position: relative;
376
459
  }
377
460
  .media-minimal-skin .media-icon {
461
+ display: block;
462
+ flex-shrink: 0;
378
463
  grid-area: 1 / 1;
379
464
  width: 18px;
380
465
  height: 18px;
@@ -383,28 +468,10 @@
383
468
  transition-duration: 150ms;
384
469
  transition-timing-function: ease-out;
385
470
  }
386
- .media-minimal-skin .media-icon--hidden {
387
- display: none;
388
- opacity: 0;
389
- }
390
471
  .media-minimal-skin .media-icon--flipped {
391
472
  scale: -1 1;
392
473
  }
393
474
 
394
- /* Seek icon label positioning */
395
- .media-minimal-skin .media-icon--seek ~ .media-icon__label {
396
- position: absolute;
397
- right: 0;
398
- bottom: -3px;
399
- font-size: 0.75em;
400
- font-weight: 480;
401
- font-variant-numeric: tabular-nums;
402
- }
403
- .media-minimal-skin .media-icon--seek.media-icon--flipped ~ .media-icon__label {
404
- right: unset;
405
- left: 0;
406
- }
407
-
408
475
  /* ==========================================================================
409
476
  Slider
410
477
  ========================================================================== */
@@ -439,10 +506,7 @@
439
506
  overflow: hidden;
440
507
  background-color: oklch(1 0 0 / 0.2);
441
508
  border-radius: inherit;
442
- outline: 2px solid transparent;
443
- outline-offset: -2px;
444
509
  box-shadow: 0 0 0 1px oklch(0 0 0 / 0.05);
445
- transition: outline-offset 150ms ease-out;
446
510
  user-select: none;
447
511
  }
448
512
  .media-minimal-skin .media-slider__track[data-orientation="horizontal"] {
@@ -453,13 +517,11 @@
453
517
  width: 0.1875rem;
454
518
  height: 100%;
455
519
  }
456
- .media-minimal-skin .media-slider:focus-visible .media-slider__track {
457
- outline-color: oklch(1 0 0);
458
- outline-offset: 6px;
459
- }
460
520
 
461
521
  /* Thumb */
462
522
  .media-minimal-skin .media-slider__thumb {
523
+ position: absolute;
524
+ transform: translate(-50%, -50%);
463
525
  z-index: 10;
464
526
  width: 0.75rem;
465
527
  height: 0.75rem;
@@ -472,32 +534,74 @@
472
534
  opacity: 0;
473
535
  scale: 0.7;
474
536
  transform-origin: center;
475
- transition-property: opacity, scale;
537
+ transition-property: opacity, scale, outline-offset;
476
538
  transition-duration: 150ms;
477
539
  transition-timing-function: ease-out;
478
540
  user-select: none;
541
+ outline: 2px solid transparent;
542
+ outline-offset: -2px;
543
+ }
544
+ .media-minimal-skin .media-slider__thumb[data-orientation="horizontal"] {
545
+ top: 50%;
546
+ left: var(--media-slider-fill);
547
+ }
548
+ .media-minimal-skin .media-slider__thumb[data-orientation="vertical"] {
549
+ left: 50%;
550
+ top: calc(100% - var(--media-slider-fill));
551
+ }
552
+ .media-minimal-skin .media-slider__thumb:focus-visible {
553
+ outline-color: oklch(1 0 0);
554
+ outline-offset: 2px;
479
555
  }
480
556
  .media-minimal-skin .media-slider:hover .media-slider__thumb,
481
- .media-minimal-skin .media-slider:focus-within .media-slider__thumb {
557
+ .media-minimal-skin .media-slider:focus-within .media-slider__thumb,
558
+ .media-minimal-skin .media-slider__thumb--persistent {
482
559
  opacity: 1;
483
560
  scale: 1;
484
561
  }
485
- .media-minimal-skin .media-slider__track[data-orientation="horizontal"] .media-slider__thumb {
486
- cursor: ew-resize;
562
+
563
+ /* Shared track fills */
564
+ .media-minimal-skin .media-slider__buffer,
565
+ .media-minimal-skin .media-slider__fill {
566
+ position: absolute;
567
+ border-radius: inherit;
568
+ pointer-events: none;
569
+ }
570
+ .media-minimal-skin .media-slider__buffer[data-orientation="horizontal"],
571
+ .media-minimal-skin .media-slider__fill[data-orientation="horizontal"] {
572
+ inset-block: 0;
573
+ left: 0;
487
574
  }
488
- .media-minimal-skin .media-slider__track[data-orientation="vertical"] .media-slider__thumb {
489
- cursor: ns-resize;
575
+ .media-minimal-skin .media-slider__buffer[data-orientation="vertical"],
576
+ .media-minimal-skin .media-slider__fill[data-orientation="vertical"] {
577
+ inset-inline: 0;
578
+ bottom: 0;
490
579
  }
491
580
 
492
- /* Pointer (hidden in minimal skin) */
493
- .media-minimal-skin .media-slider__pointer {
494
- display: none;
581
+ /* Buffer */
582
+ .media-minimal-skin .media-slider__buffer {
583
+ background-color: oklch(1 0 0 / 0.2);
584
+ transition-duration: 0.25s;
585
+ transition-timing-function: ease-out;
586
+ }
587
+ .media-minimal-skin .media-slider__buffer[data-orientation="horizontal"] {
588
+ width: var(--media-slider-buffer);
589
+ transition-property: width;
590
+ }
591
+ .media-minimal-skin .media-slider__buffer[data-orientation="vertical"] {
592
+ height: var(--media-slider-buffer);
593
+ transition-property: height;
495
594
  }
496
595
 
497
- /* Progress fill */
498
- .media-minimal-skin .media-slider__progress {
596
+ /* Fill */
597
+ .media-minimal-skin .media-slider__fill {
499
598
  background-color: oklch(1 0 0);
500
- border-radius: inherit;
599
+ }
600
+ .media-minimal-skin .media-slider__fill[data-orientation="horizontal"] {
601
+ width: var(--media-slider-fill);
602
+ }
603
+ .media-minimal-skin .media-slider__fill[data-orientation="vertical"] {
604
+ height: var(--media-slider-fill);
501
605
  }
502
606
 
503
607
  /* Time display within slider */
@@ -527,11 +631,14 @@
527
631
  transition-duration: 0ms;
528
632
  }
529
633
 
530
- .media-minimal-skin .media-popover-popup {
634
+ .media-minimal-skin .media-popup {
531
635
  margin: 0;
532
- padding: 0.5rem;
533
636
  border: 0;
534
637
  background: transparent;
638
+ --media-popover-side-offset: 0.5rem;
639
+ }
640
+ .media-minimal-skin .media-popup--volume {
641
+ padding: 0.25rem;
535
642
  }
536
643
 
537
644
  /* ==========================================================================
@@ -573,16 +680,8 @@
573
680
  z-index: 20;
574
681
  font-size: 1rem;
575
682
  text-wrap: balance;
576
- /* The delay must account for the controls delay/duration */
577
- transition: transform 150ms ease-out;
578
- transition-delay: 600ms;
579
683
  pointer-events: none;
580
684
  }
581
- @media (prefers-reduced-motion: reduce) {
582
- .media-minimal-skin .media-captions {
583
- transition-duration: 50ms;
584
- }
585
- }
586
685
  .media-minimal-skin .media-captions__container {
587
686
  display: flex;
588
687
  flex-direction: column;
@@ -630,8 +729,34 @@
630
729
  }
631
730
  }
632
731
 
633
- /* Shift captions up when controls visible */
732
+ /* Caption shifting styles (custom and native) */
733
+ .media-minimal-skin {
734
+ --media-caption-track-delay: 600ms;
735
+ --media-caption-track-y: -0.5rem;
736
+ }
737
+ .media-minimal-skin:has(.media-controls[data-visible]) {
738
+ --media-caption-track-delay: 25ms;
739
+ --media-caption-track-y: -3rem;
740
+ }
741
+ .media-minimal-skin .media-captions,
742
+ .media-minimal-skin video::-webkit-media-text-track-container {
743
+ /* NOTE: The delay must account for the controls delay/duration */
744
+ transition: transform 150ms ease-out;
745
+ transition-delay: var(--media-caption-track-delay);
746
+ }
747
+ .media-minimal-skin video::-webkit-media-text-track-container {
748
+ transform: translateY(var(--media-caption-track-y)) scale(0.98);
749
+ z-index: 1;
750
+ font-family: inherit;
751
+ }
752
+ /* When controls are visible, shift captions up to avoid overlap */
634
753
  .media-minimal-skin .media-controls[data-visible] ~ .media-captions {
635
- transform: translateY(-2.5rem);
636
- transition-delay: 25ms;
754
+ transform: translateY(calc(var(--media-caption-track-y) - 0.5rem));
637
755
  }
756
+ @media (prefers-reduced-motion: reduce) {
757
+ .media-minimal-skin .media-captions,
758
+ .media-minimal-skin video::-webkit-media-text-track-container {
759
+ transition-duration: 50ms;
760
+ }
761
+ }
762
+
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.d.ts","names":[],"sources":["../../../../src/presets/video/minimal-skin.tsx"],"mappings":";;;;KAiCY,qBAAA,GAAwB,aAAA;AAAA,iBAgDpB,gBAAA,CAAiB,KAAA,EAAO,qBAAA,GAAwB,SAAA"}
1
+ {"version":3,"file":"minimal-skin.d.ts","names":[],"sources":["../../../../src/presets/video/minimal-skin.tsx"],"mappings":";;;;KAoCY,qBAAA,GAAwB,aAAA;AAAA,iBAMpB,gBAAA,CAAiB,KAAA,EAAO,qBAAA,GAAwB,SAAA"}
@@ -5,10 +5,20 @@ import { FullscreenButton } from "../../ui/fullscreen-button/fullscreen-button.j
5
5
  import { MuteButton } from "../../ui/mute-button/mute-button.js";
6
6
  import { PiPButton } from "../../ui/pip-button/pip-button.js";
7
7
  import { PlayButton } from "../../ui/play-button/play-button.js";
8
+ import { PlaybackRateButton } from "../../ui/playback-rate-button/playback-rate-button.js";
9
+ import { PopoverPopup } from "../../ui/popover/popover-popup.js";
10
+ import { PopoverRoot } from "../../ui/popover/popover-root.js";
11
+ import { PopoverTrigger } from "../../ui/popover/popover-trigger.js";
8
12
  import { SeekButton } from "../../ui/seek-button/seek-button.js";
13
+ import { SliderBuffer } from "../../ui/slider/slider-buffer.js";
14
+ import { SliderFill } from "../../ui/slider/slider-fill.js";
15
+ import { SliderThumb } from "../../ui/slider/slider-thumb.js";
16
+ import { SliderTrack } from "../../ui/slider/slider-track.js";
9
17
  import { Group } from "../../ui/time/time-group.js";
10
18
  import { Separator } from "../../ui/time/time-separator.js";
11
19
  import { Value } from "../../ui/time/time-value.js";
20
+ import { TimeSliderRoot } from "../../ui/time-slider/time-slider-root.js";
21
+ import { VolumeSliderRoot } from "../../ui/volume-slider/volume-slider-root.js";
12
22
  import CaptionsOffIcon from "../../icons/dist/react/minimal/captions-off.js";
13
23
  import CaptionsOnIcon from "../../icons/dist/react/minimal/captions-on.js";
14
24
  import FullscreenEnterIcon from "../../icons/dist/react/minimal/fullscreen-enter.js";
@@ -25,7 +35,7 @@ import VolumeOffIcon from "../../icons/dist/react/minimal/volume-off.js";
25
35
  import { CaptionsButton } from "../../ui/captions-button/captions-button.js";
26
36
  import { ErrorDialog } from "../../ui/error-dialog/error-dialog.js";
27
37
  import { forwardRef } from "react";
28
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
38
+ import { jsx, jsxs } from "react/jsx-runtime";
29
39
  import { cn } from "@videojs/utils/style";
30
40
 
31
41
  //#region src/presets/video/minimal-skin.tsx
@@ -38,72 +48,17 @@ const Button = forwardRef(function Button({ className, ...props }, ref) {
38
48
  ...props
39
49
  });
40
50
  });
41
- function PlayButtonIcon({ state, className, ...rest }) {
42
- const { ended, paused } = state;
43
- return /* @__PURE__ */ jsxs(Fragment, { children: [
44
- /* @__PURE__ */ jsx(RestartIcon, {
45
- ...rest,
46
- className: cn(className, { "media-icon--hidden": !ended })
47
- }),
48
- /* @__PURE__ */ jsx(PlayIcon, {
49
- ...rest,
50
- className: cn(className, { "media-icon--hidden": ended || !paused })
51
- }),
52
- /* @__PURE__ */ jsx(PauseIcon, {
53
- ...rest,
54
- className: cn(className, { "media-icon--hidden": paused })
55
- })
56
- ] });
57
- }
58
- function MuteButtonIcon({ state, className, ...rest }) {
59
- const { muted, volumeLevel } = state;
60
- return /* @__PURE__ */ jsxs(Fragment, { children: [
61
- /* @__PURE__ */ jsx(VolumeOffIcon, {
62
- ...rest,
63
- className: cn(className, { "media-icon--hidden": !muted })
64
- }),
65
- /* @__PURE__ */ jsx(VolumeLowIcon, {
66
- ...rest,
67
- className: cn(className, { "media-icon--hidden": muted || volumeLevel !== "low" })
68
- }),
69
- /* @__PURE__ */ jsx(VolumeHighIcon, {
70
- ...rest,
71
- className: cn(className, { "media-icon--hidden": muted || volumeLevel === "low" })
72
- })
73
- ] });
74
- }
75
- function CaptionsButtonIcon({ state, className, ...rest }) {
76
- const { active } = state;
77
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(CaptionsOffIcon, {
78
- ...rest,
79
- className: cn(className, { "media-icon--hidden": active })
80
- }), /* @__PURE__ */ jsx(CaptionsOnIcon, {
81
- ...rest,
82
- className: cn(className, { "media-icon--hidden": !active })
83
- })] });
84
- }
85
- function FullscreenButtonIcon({ state, className, ...rest }) {
86
- const { fullscreen } = state;
87
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(FullscreenExitIcon, {
88
- ...rest,
89
- className: cn(className, { "media-icon--hidden": !fullscreen })
90
- }), /* @__PURE__ */ jsx(FullscreenEnterIcon, {
91
- ...rest,
92
- className: cn(className, { "media-icon--hidden": fullscreen })
93
- })] });
94
- }
95
51
  function MinimalVideoSkin(props) {
96
52
  const { children, className, ...rest } = props;
97
53
  return /* @__PURE__ */ jsxs(Container, {
98
54
  className: cn("media-minimal-skin", className),
99
55
  ...rest,
100
56
  children: [
101
- children,
102
- /* @__PURE__ */ jsx(BufferingIndicator, { render: (props, state) => state.visible ? /* @__PURE__ */ jsx("div", {
57
+ /* @__PURE__ */ jsx(BufferingIndicator, { render: (props) => /* @__PURE__ */ jsx("div", {
103
58
  ...props,
104
59
  className: "media-buffering-indicator",
105
60
  children: /* @__PURE__ */ jsx(SpinnerIcon, { className: "media-icon" })
106
- }) : null }),
61
+ }) }),
107
62
  /* @__PURE__ */ jsx(ErrorDialog, {
108
63
  "aria-labelledby": "media-error-title",
109
64
  "aria-describedby": "media-error-description",
@@ -139,13 +94,14 @@ function MinimalVideoSkin(props) {
139
94
  /* @__PURE__ */ jsxs("span", {
140
95
  className: "media-button-group",
141
96
  children: [
142
- /* @__PURE__ */ jsx(PlayButton, { render: (props, state) => /* @__PURE__ */ jsx(Button, {
97
+ /* @__PURE__ */ jsx(PlayButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
143
98
  ...props,
144
- className: "media-button--icon",
145
- children: /* @__PURE__ */ jsx(PlayButtonIcon, {
146
- state,
147
- className: "media-icon"
148
- })
99
+ className: "media-button--icon media-button--play",
100
+ children: [
101
+ /* @__PURE__ */ jsx(RestartIcon, { className: "media-icon media-icon--restart" }),
102
+ /* @__PURE__ */ jsx(PlayIcon, { className: "media-icon media-icon--play" }),
103
+ /* @__PURE__ */ jsx(PauseIcon, { className: "media-icon media-icon--pause" })
104
+ ]
149
105
  }) }),
150
106
  /* @__PURE__ */ jsx(SeekButton, {
151
107
  seconds: -SEEK_TIME,
@@ -192,51 +148,68 @@ function MinimalVideoSkin(props) {
192
148
  className: "media-time__value media-time__value--duration"
193
149
  })
194
150
  ]
195
- }), /* @__PURE__ */ jsx("span", {
151
+ }), /* @__PURE__ */ jsxs(TimeSliderRoot, {
196
152
  className: "media-slider",
197
- style: {
198
- height: "4px",
199
- background: "oklch(1 0 0 / 0.2)"
200
- }
153
+ children: [/* @__PURE__ */ jsxs(SliderTrack, {
154
+ className: "media-slider__track",
155
+ children: [/* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" }), /* @__PURE__ */ jsx(SliderBuffer, { className: "media-slider__buffer" })]
156
+ }), /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb" })]
201
157
  })]
202
158
  }),
203
159
  /* @__PURE__ */ jsxs("span", {
204
160
  className: "media-button-group",
205
161
  children: [
206
- /* @__PURE__ */ jsx(MuteButton, { render: (props, state) => /* @__PURE__ */ jsx(Button, {
162
+ /* @__PURE__ */ jsx(PlaybackRateButton, { render: (props) => /* @__PURE__ */ jsx(Button, {
207
163
  ...props,
208
- className: "media-button--icon",
209
- children: /* @__PURE__ */ jsx(MuteButtonIcon, {
210
- state,
211
- className: "media-icon"
212
- })
164
+ className: "media-button--icon media-button--playback-rate"
213
165
  }) }),
214
- /* @__PURE__ */ jsx(CaptionsButton, { render: (props, state) => /* @__PURE__ */ jsx(Button, {
166
+ /* @__PURE__ */ jsxs(PopoverRoot, {
167
+ openOnHover: true,
168
+ delay: 200,
169
+ closeDelay: 100,
170
+ side: "top",
171
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, { render: /* @__PURE__ */ jsx(MuteButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
172
+ ...props,
173
+ className: "media-button--icon media-button--mute",
174
+ children: [
175
+ /* @__PURE__ */ jsx(VolumeOffIcon, { className: "media-icon media-icon--volume-off" }),
176
+ /* @__PURE__ */ jsx(VolumeLowIcon, { className: "media-icon media-icon--volume-low" }),
177
+ /* @__PURE__ */ jsx(VolumeHighIcon, { className: "media-icon media-icon--volume-high" })
178
+ ]
179
+ }) }) }), /* @__PURE__ */ jsx(PopoverPopup, {
180
+ className: "media-surface media-popup media-popup--volume media-popup-animation",
181
+ children: /* @__PURE__ */ jsxs(VolumeSliderRoot, {
182
+ className: "media-slider",
183
+ orientation: "vertical",
184
+ thumbAlignment: "edge",
185
+ children: [/* @__PURE__ */ jsx(SliderTrack, {
186
+ className: "media-slider__track",
187
+ children: /* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" })
188
+ }), /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb media-slider__thumb--persistent" })]
189
+ })
190
+ })]
191
+ }),
192
+ /* @__PURE__ */ jsx(CaptionsButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
215
193
  ...props,
216
- className: "media-button--icon",
217
- children: /* @__PURE__ */ jsx(CaptionsButtonIcon, {
218
- state,
219
- className: "media-icon"
220
- })
194
+ className: "media-button--icon media-button--captions",
195
+ children: [/* @__PURE__ */ jsx(CaptionsOffIcon, { className: "media-icon media-icon--captions-off" }), /* @__PURE__ */ jsx(CaptionsOnIcon, { className: "media-icon media-icon--captions-on" })]
221
196
  }) }),
222
197
  /* @__PURE__ */ jsx(PiPButton, { render: (props) => /* @__PURE__ */ jsx(Button, {
223
198
  ...props,
224
199
  className: "media-button--icon",
225
200
  children: /* @__PURE__ */ jsx(PipIcon, { className: "media-icon" })
226
201
  }) }),
227
- /* @__PURE__ */ jsx(FullscreenButton, { render: (props, state) => /* @__PURE__ */ jsx(Button, {
202
+ /* @__PURE__ */ jsx(FullscreenButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
228
203
  ...props,
229
- className: "media-button--icon",
230
- children: /* @__PURE__ */ jsx(FullscreenButtonIcon, {
231
- state,
232
- className: "media-icon"
233
- })
204
+ className: "media-button--icon media-button--fullscreen",
205
+ children: [/* @__PURE__ */ jsx(FullscreenEnterIcon, { className: "media-icon media-icon--fullscreen-enter" }), /* @__PURE__ */ jsx(FullscreenExitIcon, { className: "media-icon media-icon--fullscreen-exit" })]
234
206
  }) })
235
207
  ]
236
208
  })
237
209
  ]
238
210
  }),
239
- /* @__PURE__ */ jsx("div", { className: "media-overlay" })
211
+ /* @__PURE__ */ jsx("div", { className: "media-overlay" }),
212
+ children
240
213
  ]
241
214
  });
242
215
  }