@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,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-default-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, 2rem);
@@ -78,6 +130,7 @@
78
130
  display: block;
79
131
  width: 100%;
80
132
  height: 100%;
133
+ border-radius: inherit;
81
134
  }
82
135
 
83
136
  /* ==========================================================================
@@ -89,6 +142,7 @@
89
142
  inset: 0;
90
143
  width: 100%;
91
144
  height: 100%;
145
+ border-radius: inherit;
92
146
  object-fit: cover;
93
147
  transition: opacity 0.25s;
94
148
  pointer-events: none;
@@ -104,6 +158,7 @@
104
158
  .media-default-skin .media-overlay {
105
159
  position: absolute;
106
160
  inset: 0;
161
+ z-index: 1;
107
162
  border-radius: inherit;
108
163
  background-image: linear-gradient(to top, oklch(0 0 0 / 0.5), oklch(0 0 0 / 0.3), oklch(0 0 0 / 0));
109
164
  backdrop-filter: blur(0) saturate(1.2) brightness(0.9);
@@ -137,12 +192,15 @@
137
192
  position: absolute;
138
193
  inset: 0;
139
194
  z-index: 10;
140
- display: flex;
195
+ display: none;
141
196
  align-items: center;
142
197
  justify-content: center;
143
198
  color: oklch(1 0 0);
144
199
  pointer-events: none;
145
200
  }
201
+ .media-default-skin .media-buffering-indicator[data-visible] {
202
+ display: flex;
203
+ }
146
204
  .media-default-skin .media-buffering-indicator .media-surface {
147
205
  padding: 0.25rem;
148
206
  border-radius: 100%;
@@ -339,6 +397,7 @@
339
397
  outline-offset: -2px;
340
398
  color: oklch(0 0 0);
341
399
  font-weight: 500;
400
+ text-align: center;
342
401
  transition-property: background-color, color, outline-offset;
343
402
  transition-duration: 150ms;
344
403
  transition-timing-function: ease-out;
@@ -358,7 +417,9 @@
358
417
  /* Icon button variant */
359
418
  .media-default-skin .media-button--icon {
360
419
  display: grid;
361
- padding: 0.5rem;
420
+ width: 2.125rem;
421
+ padding: 0;
422
+ aspect-ratio: 1;
362
423
  background: transparent;
363
424
  color: oklch(1 0 0 / 0.9);
364
425
  text-shadow: 0 1px 0 oklch(0 0 0 / 0.25);
@@ -374,13 +435,35 @@
374
435
  filter: drop-shadow(0 1px 0 oklch(0 0 0 / 0.25));
375
436
  }
376
437
 
377
- /* Seek button variant — hidden at small sizes */
438
+ /* Seek button */
439
+ .media-default-skin .media-button--seek .media-icon__label {
440
+ position: absolute;
441
+ right: -1px;
442
+ bottom: -3px;
443
+ font-size: 0.75em;
444
+ font-weight: 480;
445
+ font-variant-numeric: tabular-nums;
446
+ }
447
+ .media-default-skin .media-button--seek:has(.media-icon--flipped) .media-icon__label {
448
+ right: unset;
449
+ left: -1px;
450
+ }
378
451
  @container media-controls (width < 28rem) {
379
452
  .media-default-skin .media-button--seek {
380
453
  display: none;
381
454
  }
382
455
  }
383
456
 
457
+ /* Playback rate button */
458
+ .media-default-skin .media-button--playback-rate {
459
+ padding: 0;
460
+ }
461
+ .media-default-skin .media-button--playback-rate::after {
462
+ content: attr(data-rate) "\00D7";
463
+ width: 4ch;
464
+ font-variant-numeric: tabular-nums;
465
+ }
466
+
384
467
  /* ==========================================================================
385
468
  Icons
386
469
  ========================================================================== */
@@ -389,6 +472,8 @@
389
472
  position: relative;
390
473
  }
391
474
  .media-default-skin .media-icon {
475
+ display: block;
476
+ flex-shrink: 0;
392
477
  grid-area: 1 / 1;
393
478
  width: 18px;
394
479
  height: 18px;
@@ -397,28 +482,10 @@
397
482
  transition-duration: 150ms;
398
483
  transition-timing-function: ease-out;
399
484
  }
400
- .media-default-skin .media-icon--hidden {
401
- display: none;
402
- opacity: 0;
403
- }
404
485
  .media-default-skin .media-icon--flipped {
405
486
  scale: -1 1;
406
487
  }
407
488
 
408
- /* Seek icon label positioning */
409
- .media-default-skin .media-icon--seek ~ .media-icon__label {
410
- position: absolute;
411
- right: 0;
412
- bottom: -3px;
413
- font-size: 0.75em;
414
- font-weight: 480;
415
- font-variant-numeric: tabular-nums;
416
- }
417
- .media-default-skin .media-icon--seek.media-icon--flipped ~ .media-icon__label {
418
- right: unset;
419
- left: 0;
420
- }
421
-
422
489
  /* ==========================================================================
423
490
  Slider
424
491
  ========================================================================== */
@@ -453,10 +520,7 @@
453
520
  overflow: hidden;
454
521
  background-color: oklch(1 0 0 / 0.2);
455
522
  border-radius: inherit;
456
- outline: 2px solid transparent;
457
- outline-offset: -2px;
458
523
  box-shadow: 0 0 0 1px oklch(0 0 0 / 0.05);
459
- transition: outline-offset 150ms ease-out;
460
524
  user-select: none;
461
525
  }
462
526
  .media-default-skin .media-slider__track[data-orientation="horizontal"] {
@@ -467,14 +531,12 @@
467
531
  width: 0.25rem;
468
532
  height: 100%;
469
533
  }
470
- .media-default-skin .media-slider:focus-visible .media-slider__track {
471
- outline-color: oklch(62.3% 0.214 259.815);
472
- outline-offset: 6px;
473
- }
474
534
 
475
535
  /* Thumb */
476
536
  .media-default-skin .media-slider__thumb {
477
537
  z-index: 10;
538
+ position: absolute;
539
+ transform: translate(-50%, -50%);
478
540
  width: 0.625rem;
479
541
  height: 0.625rem;
480
542
  background-color: oklch(1 0 0);
@@ -484,36 +546,78 @@
484
546
  0 1px 3px 0 oklch(0 0 0 / 0.15),
485
547
  0 1px 2px -1px oklch(0 0 0 / 0.15);
486
548
  opacity: 0;
487
- transition-property: opacity, height, width;
549
+ transition-property: opacity, height, width, outline-offset;
488
550
  transition-duration: 150ms;
489
551
  transition-timing-function: ease-out;
490
552
  user-select: none;
553
+ outline: 2px solid transparent;
554
+ outline-offset: -2px;
491
555
  }
492
- .media-default-skin .media-slider__thumb:active {
556
+ .media-default-skin .media-slider__thumb[data-orientation="horizontal"] {
557
+ top: 50%;
558
+ left: var(--media-slider-fill);
559
+ }
560
+ .media-default-skin .media-slider__thumb[data-orientation="vertical"] {
561
+ left: 50%;
562
+ top: calc(100% - var(--media-slider-fill));
563
+ }
564
+ .media-default-skin .media-slider__thumb:focus-visible {
565
+ outline-color: oklch(62.3% 0.214 259.815);
566
+ outline-offset: 2px;
567
+ }
568
+ .media-default-skin .media-slider:active .media-slider__thumb,
569
+ .media-default-skin .media-slider__thumb--persistent {
493
570
  width: 0.75rem;
494
571
  height: 0.75rem;
495
572
  }
496
573
  .media-default-skin .media-slider:hover .media-slider__thumb,
497
- .media-default-skin .media-slider:focus-within .media-slider__thumb {
574
+ .media-default-skin .media-slider__thumb:focus-visible,
575
+ .media-default-skin .media-slider__thumb--persistent {
498
576
  opacity: 1;
499
577
  }
500
- .media-default-skin .media-slider__track[data-orientation="horizontal"] .media-slider__thumb {
501
- cursor: ew-resize;
578
+
579
+ /* Shared track fills */
580
+ .media-default-skin .media-slider__buffer,
581
+ .media-default-skin .media-slider__fill {
582
+ position: absolute;
583
+ border-radius: inherit;
584
+ pointer-events: none;
502
585
  }
503
- .media-default-skin .media-slider__track[data-orientation="vertical"] .media-slider__thumb {
504
- cursor: ns-resize;
586
+ .media-default-skin .media-slider__buffer[data-orientation="horizontal"],
587
+ .media-default-skin .media-slider__fill[data-orientation="horizontal"] {
588
+ inset-block: 0;
589
+ left: 0;
590
+ }
591
+ .media-default-skin .media-slider__buffer[data-orientation="vertical"],
592
+ .media-default-skin .media-slider__fill[data-orientation="vertical"] {
593
+ inset-inline: 0;
594
+ bottom: 0;
505
595
  }
506
596
 
507
- /* Pointer (hover preview) */
508
- .media-default-skin .media-slider__pointer {
597
+ /* Buffer */
598
+ .media-default-skin .media-slider__buffer {
509
599
  background-color: oklch(1 0 0 / 0.2);
510
- border-radius: inherit;
600
+ transition-duration: 0.25s;
601
+ transition-timing-function: ease-out;
602
+ }
603
+ .media-default-skin .media-slider__buffer[data-orientation="horizontal"] {
604
+ width: var(--media-slider-buffer);
605
+ transition-property: width;
606
+ }
607
+ .media-default-skin .media-slider__buffer[data-orientation="vertical"] {
608
+ height: var(--media-slider-buffer);
609
+ transition-property: height;
511
610
  }
512
611
 
513
- /* Progress fill */
514
- .media-default-skin .media-slider__progress {
612
+ /* Fill */
613
+ .media-default-skin .media-slider__fill {
515
614
  background-color: oklch(1 0 0);
516
- border-radius: inherit;
615
+ }
616
+ .media-default-skin .media-slider__fill[data-orientation="horizontal"] {
617
+ width: var(--media-slider-fill);
618
+ }
619
+ .media-default-skin .media-slider__fill[data-orientation="vertical"] {
620
+ height: var(--media-slider-fill);
517
621
  }
518
622
 
519
623
  /* Time display within slider */
@@ -543,10 +647,13 @@
543
647
  transition-duration: 0ms;
544
648
  }
545
649
 
546
- .media-default-skin .media-popover-popup {
650
+ .media-default-skin .media-popup {
547
651
  margin: 0;
548
- padding: 0.75rem 0.25rem;
549
652
  border: 0;
653
+ --media-popover-side-offset: 0.5rem;
654
+ }
655
+ .media-default-skin .media-popup--volume {
656
+ padding: 0.625rem 0.25rem;
550
657
  border-radius: calc(infinity * 1px);
551
658
  }
552
659
 
@@ -574,16 +681,8 @@
574
681
  z-index: 20;
575
682
  font-size: 1rem;
576
683
  text-wrap: balance;
577
- /* The delay must account for the controls delay/duration */
578
- transition: transform 150ms ease-out;
579
- transition-delay: 600ms;
580
684
  pointer-events: none;
581
685
  }
582
- @media (prefers-reduced-motion: reduce) {
583
- .media-default-skin .media-captions {
584
- transition-duration: 50ms;
585
- }
586
- }
587
686
  .media-default-skin .media-captions__container {
588
687
  display: flex;
589
688
  flex-direction: column;
@@ -631,8 +730,34 @@
631
730
  }
632
731
  }
633
732
 
634
- /* Shift captions up when controls visible */
733
+ /* Caption shifting styles (custom and native) */
734
+ .media-default-skin {
735
+ --media-caption-track-delay: 600ms;
736
+ --media-caption-track-y: -0.5rem;
737
+ }
738
+ .media-default-skin:has(.media-controls[data-visible]) {
739
+ --media-caption-track-delay: 25ms;
740
+ --media-caption-track-y: -3.5rem;
741
+ }
742
+ .media-default-skin .media-captions,
743
+ .media-default-skin video::-webkit-media-text-track-container {
744
+ /* NOTE: The delay must account for the controls delay/duration */
745
+ transition: transform 150ms ease-out;
746
+ transition-delay: var(--media-caption-track-delay);
747
+ }
748
+ .media-default-skin video::-webkit-media-text-track-container {
749
+ transform: translateY(var(--media-caption-track-y)) scale(0.98);
750
+ z-index: 1;
751
+ font-family: inherit;
752
+ }
753
+ /* When controls are visible, shift captions up to avoid overlap */
635
754
  .media-default-skin .media-controls[data-visible] ~ .media-captions {
636
- transform: translateY(-3rem);
637
- transition-delay: 25ms;
755
+ transform: translateY(calc(var(--media-caption-track-y) - 0.5rem));
638
756
  }
757
+ @media (prefers-reduced-motion: reduce) {
758
+ .media-default-skin .media-captions,
759
+ .media-default-skin video::-webkit-media-text-track-container {
760
+ transition-duration: 50ms;
761
+ }
762
+ }
763
+
@@ -1 +1 @@
1
- {"version":3,"file":"skin.d.ts","names":[],"sources":["../../../../src/presets/video/skin.tsx"],"mappings":";;;;KAiCY,cAAA,GAAiB,aAAA;AAAA,iBAgDb,SAAA,CAAU,KAAA,EAAO,cAAA,GAAiB,SAAA"}
1
+ {"version":3,"file":"skin.d.ts","names":[],"sources":["../../../../src/presets/video/skin.tsx"],"mappings":";;;;KAoCY,cAAA,GAAiB,aAAA;AAAA,iBAMb,SAAA,CAAU,KAAA,EAAO,cAAA,GAAiB,SAAA"}
@@ -5,9 +5,19 @@ 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 { Value } from "../../ui/time/time-value.js";
19
+ import { TimeSliderRoot } from "../../ui/time-slider/time-slider-root.js";
20
+ import { VolumeSliderRoot } from "../../ui/volume-slider/volume-slider-root.js";
11
21
  import { CaptionsButton } from "../../ui/captions-button/captions-button.js";
12
22
  import { ErrorDialog } from "../../ui/error-dialog/error-dialog.js";
13
23
  import CaptionsOffIcon from "../../icons/dist/react/default/captions-off.js";
@@ -24,7 +34,7 @@ import VolumeHighIcon from "../../icons/dist/react/default/volume-high.js";
24
34
  import VolumeLowIcon from "../../icons/dist/react/default/volume-low.js";
25
35
  import VolumeOffIcon from "../../icons/dist/react/default/volume-off.js";
26
36
  import { forwardRef } from "react";
27
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
37
+ import { jsx, jsxs } from "react/jsx-runtime";
28
38
  import { cn } from "@videojs/utils/style";
29
39
 
30
40
  //#region src/presets/video/skin.tsx
@@ -37,75 +47,20 @@ const Button = forwardRef(function Button({ className, ...props }, ref) {
37
47
  ...props
38
48
  });
39
49
  });
40
- function PlayButtonIcon({ state, className, ...rest }) {
41
- const { ended, paused } = state;
42
- return /* @__PURE__ */ jsxs(Fragment, { children: [
43
- /* @__PURE__ */ jsx(RestartIcon, {
44
- ...rest,
45
- className: cn(className, { "media-icon--hidden": !ended })
46
- }),
47
- /* @__PURE__ */ jsx(PlayIcon, {
48
- ...rest,
49
- className: cn(className, { "media-icon--hidden": ended || !paused })
50
- }),
51
- /* @__PURE__ */ jsx(PauseIcon, {
52
- ...rest,
53
- className: cn(className, { "media-icon--hidden": paused })
54
- })
55
- ] });
56
- }
57
- function MuteButtonIcon({ state, className, ...rest }) {
58
- const { muted, volumeLevel } = state;
59
- return /* @__PURE__ */ jsxs(Fragment, { children: [
60
- /* @__PURE__ */ jsx(VolumeOffIcon, {
61
- ...rest,
62
- className: cn(className, { "media-icon--hidden": !muted })
63
- }),
64
- /* @__PURE__ */ jsx(VolumeLowIcon, {
65
- ...rest,
66
- className: cn(className, { "media-icon--hidden": muted || volumeLevel !== "low" })
67
- }),
68
- /* @__PURE__ */ jsx(VolumeHighIcon, {
69
- ...rest,
70
- className: cn(className, { "media-icon--hidden": muted || volumeLevel === "low" })
71
- })
72
- ] });
73
- }
74
- function CaptionsButtonIcon({ state, className, ...rest }) {
75
- const { active } = state;
76
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(CaptionsOffIcon, {
77
- ...rest,
78
- className: cn(className, { "media-icon--hidden": active })
79
- }), /* @__PURE__ */ jsx(CaptionsOnIcon, {
80
- ...rest,
81
- className: cn(className, { "media-icon--hidden": !active })
82
- })] });
83
- }
84
- function FullscreenButtonIcon({ state, className, ...rest }) {
85
- const { fullscreen } = state;
86
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(FullscreenExitIcon, {
87
- ...rest,
88
- className: cn(className, { "media-icon--hidden": !fullscreen })
89
- }), /* @__PURE__ */ jsx(FullscreenEnterIcon, {
90
- ...rest,
91
- className: cn(className, { "media-icon--hidden": fullscreen })
92
- })] });
93
- }
94
50
  function VideoSkin(props) {
95
51
  const { children, className, ...rest } = props;
96
52
  return /* @__PURE__ */ jsxs(Container, {
97
53
  className: cn("media-default-skin", className),
98
54
  ...rest,
99
55
  children: [
100
- children,
101
- /* @__PURE__ */ jsx(BufferingIndicator, { render: (props, state) => state.visible ? /* @__PURE__ */ jsx("div", {
56
+ /* @__PURE__ */ jsx(BufferingIndicator, { render: (props) => /* @__PURE__ */ jsx("div", {
102
57
  ...props,
103
58
  className: "media-buffering-indicator",
104
59
  children: /* @__PURE__ */ jsx("div", {
105
60
  className: "media-surface",
106
61
  children: /* @__PURE__ */ jsx(SpinnerIcon, { className: "media-icon" })
107
62
  })
108
- }) : null }),
63
+ }) }),
109
64
  /* @__PURE__ */ jsx(ErrorDialog, {
110
65
  "aria-labelledby": "media-error-title",
111
66
  "aria-describedby": "media-error-description",
@@ -138,13 +93,14 @@ function VideoSkin(props) {
138
93
  /* @__PURE__ */ jsxs(ControlsRoot, {
139
94
  className: "media-surface media-controls",
140
95
  children: [
141
- /* @__PURE__ */ jsx(PlayButton, { render: (props, state) => /* @__PURE__ */ jsx(Button, {
96
+ /* @__PURE__ */ jsx(PlayButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
142
97
  ...props,
143
- className: "media-button--icon",
144
- children: /* @__PURE__ */ jsx(PlayButtonIcon, {
145
- state,
146
- className: "media-icon"
147
- })
98
+ className: "media-button--icon media-button--play",
99
+ children: [
100
+ /* @__PURE__ */ jsx(RestartIcon, { className: "media-icon media-icon--restart" }),
101
+ /* @__PURE__ */ jsx(PlayIcon, { className: "media-icon media-icon--play" }),
102
+ /* @__PURE__ */ jsx(PauseIcon, { className: "media-icon media-icon--pause" })
103
+ ]
148
104
  }) }),
149
105
  /* @__PURE__ */ jsx(SeekButton, {
150
106
  seconds: -SEEK_TIME,
@@ -181,12 +137,12 @@ function VideoSkin(props) {
181
137
  type: "current",
182
138
  className: "media-time__value"
183
139
  }),
184
- /* @__PURE__ */ jsx("div", {
140
+ /* @__PURE__ */ jsxs(TimeSliderRoot, {
185
141
  className: "media-slider",
186
- style: {
187
- height: "4px",
188
- background: "oklab(1 0 0 / 0.2)"
189
- }
142
+ children: [/* @__PURE__ */ jsxs(SliderTrack, {
143
+ className: "media-slider__track",
144
+ children: [/* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" }), /* @__PURE__ */ jsx(SliderBuffer, { className: "media-slider__buffer" })]
145
+ }), /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb" })]
190
146
  }),
191
147
  /* @__PURE__ */ jsx(Value, {
192
148
  type: "duration",
@@ -194,38 +150,55 @@ function VideoSkin(props) {
194
150
  })
195
151
  ]
196
152
  }),
197
- /* @__PURE__ */ jsx(MuteButton, { render: (props, state) => /* @__PURE__ */ jsx(Button, {
153
+ /* @__PURE__ */ jsx(PlaybackRateButton, { render: (props) => /* @__PURE__ */ jsx(Button, {
198
154
  ...props,
199
- className: "media-button--icon",
200
- children: /* @__PURE__ */ jsx(MuteButtonIcon, {
201
- state,
202
- className: "media-icon"
203
- })
155
+ className: "media-button--icon media-button--playback-rate"
204
156
  }) }),
205
- /* @__PURE__ */ jsx(CaptionsButton, { render: (props, state) => /* @__PURE__ */ jsx(Button, {
157
+ /* @__PURE__ */ jsxs(PopoverRoot, {
158
+ openOnHover: true,
159
+ delay: 200,
160
+ closeDelay: 100,
161
+ side: "top",
162
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, { render: /* @__PURE__ */ jsx(MuteButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
163
+ ...props,
164
+ className: "media-button--icon media-button--mute",
165
+ children: [
166
+ /* @__PURE__ */ jsx(VolumeOffIcon, { className: "media-icon media-icon--volume-off" }),
167
+ /* @__PURE__ */ jsx(VolumeLowIcon, { className: "media-icon media-icon--volume-low" }),
168
+ /* @__PURE__ */ jsx(VolumeHighIcon, { className: "media-icon media-icon--volume-high" })
169
+ ]
170
+ }) }) }), /* @__PURE__ */ jsx(PopoverPopup, {
171
+ className: "media-surface media-popup media-popup--volume media-popup-animation",
172
+ children: /* @__PURE__ */ jsxs(VolumeSliderRoot, {
173
+ className: "media-slider",
174
+ orientation: "vertical",
175
+ thumbAlignment: "edge",
176
+ children: [/* @__PURE__ */ jsx(SliderTrack, {
177
+ className: "media-slider__track",
178
+ children: /* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" })
179
+ }), /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb media-slider__thumb--persistent" })]
180
+ })
181
+ })]
182
+ }),
183
+ /* @__PURE__ */ jsx(CaptionsButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
206
184
  ...props,
207
- className: "media-button--icon",
208
- children: /* @__PURE__ */ jsx(CaptionsButtonIcon, {
209
- state,
210
- className: "media-icon"
211
- })
185
+ className: "media-button--icon media-button--captions",
186
+ children: [/* @__PURE__ */ jsx(CaptionsOffIcon, { className: "media-icon media-icon--captions-off" }), /* @__PURE__ */ jsx(CaptionsOnIcon, { className: "media-icon media-icon--captions-on" })]
212
187
  }) }),
213
188
  /* @__PURE__ */ jsx(PiPButton, { render: (props) => /* @__PURE__ */ jsx(Button, {
214
189
  ...props,
215
190
  className: "media-button--icon",
216
191
  children: /* @__PURE__ */ jsx(PipIcon, { className: "media-icon" })
217
192
  }) }),
218
- /* @__PURE__ */ jsx(FullscreenButton, { render: (props, state) => /* @__PURE__ */ jsx(Button, {
193
+ /* @__PURE__ */ jsx(FullscreenButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
219
194
  ...props,
220
- className: "media-button--icon",
221
- children: /* @__PURE__ */ jsx(FullscreenButtonIcon, {
222
- state,
223
- className: "media-icon"
224
- })
195
+ className: "media-button--icon media-button--fullscreen",
196
+ children: [/* @__PURE__ */ jsx(FullscreenEnterIcon, { className: "media-icon media-icon--fullscreen-enter" }), /* @__PURE__ */ jsx(FullscreenExitIcon, { className: "media-icon media-icon--fullscreen-exit" })]
225
197
  }) })
226
198
  ]
227
199
  }),
228
- /* @__PURE__ */ jsx("div", { className: "media-overlay" })
200
+ /* @__PURE__ */ jsx("div", { className: "media-overlay" }),
201
+ children
229
202
  ]
230
203
  });
231
204
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skin.js","names":["Controls.Root","Time.Group","Time.Value"],"sources":["../../../../src/presets/video/skin.tsx"],"sourcesContent":["import type { FullscreenButtonState, MuteButtonState, PlayButtonState } from '@videojs/core';\nimport {\n CaptionsOffIcon,\n CaptionsOnIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n PauseIcon,\n PipIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container } from '@/player/context';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton, type CaptionsButtonState } from '@/ui/captions-button';\nimport { Controls } from '@/ui/controls';\nimport { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Time } from '@/ui/time';\nimport type { BaseSkinProps } from '../types';\n\nconst SEEK_TIME = 10;\n\nexport type VideoSkinProps = BaseSkinProps;\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return <button ref={ref} type=\"button\" className={cn('media-button', className)} {...props} />;\n});\n\nfunction PlayButtonIcon({ state, className, ...rest }: { state: PlayButtonState } & ComponentProps<'svg'>) {\n const { ended, paused } = state;\n return (\n <>\n <RestartIcon {...rest} className={cn(className, { 'media-icon--hidden': !ended })} />\n <PlayIcon {...rest} className={cn(className, { 'media-icon--hidden': ended || !paused })} />\n <PauseIcon {...rest} className={cn(className, { 'media-icon--hidden': paused })} />\n </>\n );\n}\n\nfunction MuteButtonIcon({ state, className, ...rest }: { state: MuteButtonState } & ComponentProps<'svg'>) {\n const { muted, volumeLevel } = state;\n return (\n <>\n <VolumeOffIcon {...rest} className={cn(className, { 'media-icon--hidden': !muted })} />\n <VolumeLowIcon {...rest} className={cn(className, { 'media-icon--hidden': muted || volumeLevel !== 'low' })} />\n <VolumeHighIcon {...rest} className={cn(className, { 'media-icon--hidden': muted || volumeLevel === 'low' })} />\n </>\n );\n}\n\nfunction CaptionsButtonIcon({ state, className, ...rest }: { state: CaptionsButtonState } & ComponentProps<'svg'>) {\n const { active } = state;\n return (\n <>\n <CaptionsOffIcon {...rest} className={cn(className, { 'media-icon--hidden': active })} />\n <CaptionsOnIcon {...rest} className={cn(className, { 'media-icon--hidden': !active })} />\n </>\n );\n}\n\nfunction FullscreenButtonIcon({ state, className, ...rest }: { state: FullscreenButtonState } & ComponentProps<'svg'>) {\n const { fullscreen } = state;\n return (\n <>\n <FullscreenExitIcon {...rest} className={cn(className, { 'media-icon--hidden': !fullscreen })} />\n <FullscreenEnterIcon {...rest} className={cn(className, { 'media-icon--hidden': fullscreen })} />\n </>\n );\n}\n\nexport function VideoSkin(props: VideoSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn('media-default-skin', className)} {...rest}>\n {children}\n\n <BufferingIndicator\n render={(props, state) =>\n state.visible ? (\n <div {...props} className=\"media-buffering-indicator\">\n <div className=\"media-surface\">\n <SpinnerIcon className=\"media-icon\" />\n </div>\n </div>\n ) : null\n }\n />\n\n <ErrorDialog\n aria-labelledby=\"media-error-title\"\n aria-describedby=\"media-error-description\"\n render={(props, { onDismiss }) => (\n <div {...props} className=\"media-error\">\n <div className=\"media-error__dialog media-surface\">\n <div className=\"media-error__content\">\n <p id=\"media-error-title\" className=\"media-error__title\">\n Something went wrong.\n </p>\n <p id=\"media-error-description\" className=\"media-error__description\">\n An error occurred while trying to play the video. Please try again.\n </p>\n </div>\n <div className=\"media-error__actions\">\n <Button onClick={onDismiss}>OK</Button>\n </div>\n </div>\n </div>\n )}\n />\n\n <Controls.Root className=\"media-surface media-controls\">\n <PlayButton\n render={(props, state) => (\n <Button {...props} className=\"media-button--icon\">\n <PlayButtonIcon state={state} className=\"media-icon\" />\n </Button>\n )}\n />\n\n <SeekButton\n seconds={-SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek media-icon--flipped\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n\n <SeekButton\n seconds={SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n\n <Time.Group className=\"media-time\">\n <Time.Value type=\"current\" className=\"media-time__value\" />\n {/* Temporary spacer */}\n <div className=\"media-slider\" style={{ height: '4px', background: 'oklab(1 0 0 / 0.2)' }} />\n <Time.Value type=\"duration\" className=\"media-time__value\" />\n </Time.Group>\n\n <MuteButton\n render={(props, state) => (\n <Button {...props} className=\"media-button--icon\">\n <MuteButtonIcon state={state} className=\"media-icon\" />\n </Button>\n )}\n />\n\n <CaptionsButton\n render={(props, state) => (\n <Button {...props} className=\"media-button--icon\">\n <CaptionsButtonIcon state={state} className=\"media-icon\" />\n </Button>\n )}\n />\n\n <PiPButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon\">\n <PipIcon className=\"media-icon\" />\n </Button>\n )}\n />\n\n <FullscreenButton\n render={(props, state) => (\n <Button {...props} className=\"media-button--icon\">\n <FullscreenButtonIcon state={state} className=\"media-icon\" />\n </Button>\n )}\n />\n </Controls.Root>\n\n {/* <div className=\"media-captions\">\n <div className=\"media-captions__container\">\n <span className=\"media-captions__text\">An example cue</span>\n <span className=\"media-captions__text\">\n <p>Another example cue with HTML</p>\n </span>\n </div>\n </div> */}\n\n <div className=\"media-overlay\" />\n </Container>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"skin.js","names":["Controls.Root","Time.Group","Time.Value","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb"],"sources":["../../../../src/presets/video/skin.tsx"],"sourcesContent":["import {\n CaptionsOffIcon,\n CaptionsOnIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n PauseIcon,\n PipIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container } from '@/player/context';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton } from '@/ui/captions-button';\nimport { Controls } from '@/ui/controls';\nimport { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport type { BaseSkinProps } from '../types';\n\nconst SEEK_TIME = 10;\n\nexport type VideoSkinProps = BaseSkinProps;\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return <button ref={ref} type=\"button\" className={cn('media-button', className)} {...props} />;\n});\n\nexport function VideoSkin(props: VideoSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn('media-default-skin', className)} {...rest}>\n <BufferingIndicator\n render={(props) => (\n <div {...props} className=\"media-buffering-indicator\">\n <div className=\"media-surface\">\n <SpinnerIcon className=\"media-icon\" />\n </div>\n </div>\n )}\n />\n\n <ErrorDialog\n aria-labelledby=\"media-error-title\"\n aria-describedby=\"media-error-description\"\n render={(props, { onDismiss }) => (\n <div {...props} className=\"media-error\">\n <div className=\"media-error__dialog media-surface\">\n <div className=\"media-error__content\">\n <p id=\"media-error-title\" className=\"media-error__title\">\n Something went wrong.\n </p>\n <p id=\"media-error-description\" className=\"media-error__description\">\n An error occurred while trying to play the video. Please try again.\n </p>\n </div>\n <div className=\"media-error__actions\">\n <Button onClick={onDismiss}>OK</Button>\n </div>\n </div>\n </div>\n )}\n />\n\n <Controls.Root className=\"media-surface media-controls\">\n <PlayButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--play\">\n <RestartIcon className=\"media-icon media-icon--restart\" />\n <PlayIcon className=\"media-icon media-icon--play\" />\n <PauseIcon className=\"media-icon media-icon--pause\" />\n </Button>\n )}\n />\n\n <SeekButton\n seconds={-SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek media-icon--flipped\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n\n <SeekButton\n seconds={SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n\n <Time.Group className=\"media-time\">\n <Time.Value type=\"current\" className=\"media-time__value\" />\n <TimeSlider.Root className=\"media-slider\">\n <TimeSlider.Track className=\"media-slider__track\">\n <TimeSlider.Fill className=\"media-slider__fill\" />\n <TimeSlider.Buffer className=\"media-slider__buffer\" />\n </TimeSlider.Track>\n <TimeSlider.Thumb className=\"media-slider__thumb\" />\n </TimeSlider.Root>\n <Time.Value type=\"duration\" className=\"media-time__value\" />\n </Time.Group>\n\n <PlaybackRateButton\n render={(props) => <Button {...props} className=\"media-button--icon media-button--playback-rate\" />}\n />\n\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger\n render={\n <MuteButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--mute\">\n <VolumeOffIcon className=\"media-icon media-icon--volume-off\" />\n <VolumeLowIcon className=\"media-icon media-icon--volume-low\" />\n <VolumeHighIcon className=\"media-icon media-icon--volume-high\" />\n </Button>\n )}\n />\n }\n />\n <Popover.Popup className=\"media-surface media-popup media-popup--volume media-popup-animation\">\n <VolumeSlider.Root className=\"media-slider\" orientation=\"vertical\" thumbAlignment=\"edge\">\n <VolumeSlider.Track className=\"media-slider__track\">\n <VolumeSlider.Fill className=\"media-slider__fill\" />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb className=\"media-slider__thumb media-slider__thumb--persistent\" />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n\n <CaptionsButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--captions\">\n <CaptionsOffIcon className=\"media-icon media-icon--captions-off\" />\n <CaptionsOnIcon className=\"media-icon media-icon--captions-on\" />\n </Button>\n )}\n />\n\n <PiPButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon\">\n <PipIcon className=\"media-icon\" />\n </Button>\n )}\n />\n\n <FullscreenButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--fullscreen\">\n <FullscreenEnterIcon className=\"media-icon media-icon--fullscreen-enter\" />\n <FullscreenExitIcon className=\"media-icon media-icon--fullscreen-exit\" />\n </Button>\n )}\n />\n </Controls.Root>\n\n {/* <div className=\"media-captions\">\n <div className=\"media-captions__container\">\n <span className=\"media-captions__text\">An example cue</span>\n <span className=\"media-captions__text\">\n <p>Another example cue with HTML</p>\n </span>\n </div>\n </div> */}\n\n <div className=\"media-overlay\" />\n\n {children}\n </Container>\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skin.tailwind.d.ts","names":[],"sources":["../../../../src/presets/video/skin.tailwind.tsx"],"mappings":";;;;iBA2IgB,iBAAA,CAAkB,KAAA,EAAO,cAAA,GAAiB,SAAA"}
1
+ {"version":3,"file":"skin.tailwind.d.ts","names":[],"sources":["../../../../src/presets/video/skin.tailwind.tsx"],"mappings":";;;;iBA4GgB,iBAAA,CAAkB,KAAA,EAAO,cAAA,GAAiB,SAAA"}