@videojs/react 10.0.0-beta.6 → 10.0.0-beta.8

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 (285) hide show
  1. package/dist/default/icons/dist/react/default/captions-off.js +0 -1
  2. package/dist/default/icons/dist/react/default/captions-off.js.map +1 -1
  3. package/dist/default/icons/dist/react/default/captions-on.js +0 -1
  4. package/dist/default/icons/dist/react/default/captions-on.js.map +1 -1
  5. package/dist/default/icons/dist/react/default/fullscreen-enter.js +0 -1
  6. package/dist/default/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  7. package/dist/default/icons/dist/react/default/fullscreen-exit.js +0 -1
  8. package/dist/default/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  9. package/dist/default/icons/dist/react/default/pause.js +0 -1
  10. package/dist/default/icons/dist/react/default/pause.js.map +1 -1
  11. package/dist/default/icons/dist/react/default/pip-enter.js +33 -0
  12. package/dist/default/icons/dist/react/default/pip-enter.js.map +1 -0
  13. package/dist/default/icons/dist/react/default/pip-exit.js +33 -0
  14. package/dist/default/icons/dist/react/default/pip-exit.js.map +1 -0
  15. package/dist/default/icons/dist/react/default/play.js +0 -1
  16. package/dist/default/icons/dist/react/default/play.js.map +1 -1
  17. package/dist/default/icons/dist/react/default/restart.js +0 -1
  18. package/dist/default/icons/dist/react/default/restart.js.map +1 -1
  19. package/dist/default/icons/dist/react/default/seek.js +0 -1
  20. package/dist/default/icons/dist/react/default/seek.js.map +1 -1
  21. package/dist/default/icons/dist/react/default/spinner.js +0 -1
  22. package/dist/default/icons/dist/react/default/spinner.js.map +1 -1
  23. package/dist/default/icons/dist/react/default/volume-high.js +0 -1
  24. package/dist/default/icons/dist/react/default/volume-high.js.map +1 -1
  25. package/dist/default/icons/dist/react/default/volume-low.js +0 -1
  26. package/dist/default/icons/dist/react/default/volume-low.js.map +1 -1
  27. package/dist/default/icons/dist/react/default/volume-off.js +0 -1
  28. package/dist/default/icons/dist/react/default/volume-off.js.map +1 -1
  29. package/dist/default/icons/dist/react/minimal/captions-off.js +0 -1
  30. package/dist/default/icons/dist/react/minimal/captions-off.js.map +1 -1
  31. package/dist/default/icons/dist/react/minimal/captions-on.js +0 -1
  32. package/dist/default/icons/dist/react/minimal/captions-on.js.map +1 -1
  33. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js +0 -1
  34. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  35. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js +0 -1
  36. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  37. package/dist/default/icons/dist/react/minimal/pause.js +0 -1
  38. package/dist/default/icons/dist/react/minimal/pause.js.map +1 -1
  39. package/dist/default/icons/dist/react/minimal/pip-enter.js +37 -0
  40. package/dist/default/icons/dist/react/minimal/pip-enter.js.map +1 -0
  41. package/dist/default/icons/dist/react/minimal/pip-exit.js +37 -0
  42. package/dist/default/icons/dist/react/minimal/pip-exit.js.map +1 -0
  43. package/dist/default/icons/dist/react/minimal/play.js +0 -1
  44. package/dist/default/icons/dist/react/minimal/play.js.map +1 -1
  45. package/dist/default/icons/dist/react/minimal/restart.js +0 -1
  46. package/dist/default/icons/dist/react/minimal/restart.js.map +1 -1
  47. package/dist/default/icons/dist/react/minimal/seek.js +0 -1
  48. package/dist/default/icons/dist/react/minimal/seek.js.map +1 -1
  49. package/dist/default/icons/dist/react/minimal/spinner.js +0 -1
  50. package/dist/default/icons/dist/react/minimal/spinner.js.map +1 -1
  51. package/dist/default/icons/dist/react/minimal/volume-high.js +0 -1
  52. package/dist/default/icons/dist/react/minimal/volume-high.js.map +1 -1
  53. package/dist/default/icons/dist/react/minimal/volume-low.js +0 -1
  54. package/dist/default/icons/dist/react/minimal/volume-low.js.map +1 -1
  55. package/dist/default/icons/dist/react/minimal/volume-off.js +0 -1
  56. package/dist/default/icons/dist/react/minimal/volume-off.js.map +1 -1
  57. package/dist/default/index.js +2 -2
  58. package/dist/default/media/audio.js +3 -6
  59. package/dist/default/media/audio.js.map +1 -1
  60. package/dist/default/media/background-video/index.js +2 -2
  61. package/dist/default/media/background-video/index.js.map +1 -1
  62. package/dist/default/media/dash-video/index.js +26 -0
  63. package/dist/default/media/dash-video/index.js.map +1 -0
  64. package/dist/default/media/hls-video/index.js +2 -2
  65. package/dist/default/media/hls-video/index.js.map +1 -1
  66. package/dist/default/media/simple-hls-video/index.js +2 -2
  67. package/dist/default/media/simple-hls-video/index.js.map +1 -1
  68. package/dist/default/media/video.js +3 -6
  69. package/dist/default/media/video.js.map +1 -1
  70. package/dist/default/player/context.js +16 -10
  71. package/dist/default/player/context.js.map +1 -1
  72. package/dist/default/player/create-player.js +16 -2
  73. package/dist/default/player/create-player.js.map +1 -1
  74. package/dist/default/presets/audio/minimal-skin.css +22 -12
  75. package/dist/default/presets/audio/minimal-skin.js +32 -26
  76. package/dist/default/presets/audio/minimal-skin.js.map +1 -1
  77. package/dist/default/presets/audio/minimal-skin.tailwind.js +36 -30
  78. package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
  79. package/dist/default/presets/audio/skin.css +19 -14
  80. package/dist/default/presets/audio/skin.js +32 -26
  81. package/dist/default/presets/audio/skin.js.map +1 -1
  82. package/dist/default/presets/audio/skin.tailwind.js +37 -32
  83. package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
  84. package/dist/default/presets/video/minimal-skin.css +101 -63
  85. package/dist/default/presets/video/minimal-skin.js +45 -31
  86. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  87. package/dist/default/presets/video/minimal-skin.tailwind.js +51 -34
  88. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  89. package/dist/default/presets/video/skin.css +98 -64
  90. package/dist/default/presets/video/skin.js +45 -31
  91. package/dist/default/presets/video/skin.js.map +1 -1
  92. package/dist/default/presets/video/skin.tailwind.js +51 -34
  93. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  94. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +6 -5
  95. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  96. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
  97. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  98. package/dist/default/skins/dist/default/default/tailwind/components/error.js +1 -1
  99. package/dist/default/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  100. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +16 -0
  101. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  102. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +6 -5
  103. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  104. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +1 -1
  105. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  106. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  107. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  108. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +1 -1
  109. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  110. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
  111. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  112. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  113. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  114. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +5 -4
  115. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  116. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +5 -0
  117. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  118. package/dist/default/ui/popover/popover-popup.js +11 -2
  119. package/dist/default/ui/popover/popover-popup.js.map +1 -1
  120. package/dist/default/ui/time-slider/time-slider-root.js +1 -1
  121. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
  122. package/dist/default/ui/tooltip/tooltip-popup.js +11 -2
  123. package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
  124. package/dist/default/ui/volume-slider/volume-slider-root.js +3 -3
  125. package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -1
  126. package/dist/default/utils/use-render.js +5 -1
  127. package/dist/default/utils/use-render.js.map +1 -1
  128. package/dist/dev/icons/dist/react/default/captions-off.js +0 -1
  129. package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -1
  130. package/dist/dev/icons/dist/react/default/captions-on.js +0 -1
  131. package/dist/dev/icons/dist/react/default/captions-on.js.map +1 -1
  132. package/dist/dev/icons/dist/react/default/fullscreen-enter.js +0 -1
  133. package/dist/dev/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  134. package/dist/dev/icons/dist/react/default/fullscreen-exit.js +0 -1
  135. package/dist/dev/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  136. package/dist/dev/icons/dist/react/default/pause.js +0 -1
  137. package/dist/dev/icons/dist/react/default/pause.js.map +1 -1
  138. package/dist/dev/icons/dist/react/default/pip-enter.js +33 -0
  139. package/dist/dev/icons/dist/react/default/pip-enter.js.map +1 -0
  140. package/dist/dev/icons/dist/react/default/pip-exit.js +33 -0
  141. package/dist/dev/icons/dist/react/default/pip-exit.js.map +1 -0
  142. package/dist/dev/icons/dist/react/default/play.js +0 -1
  143. package/dist/dev/icons/dist/react/default/play.js.map +1 -1
  144. package/dist/dev/icons/dist/react/default/restart.js +0 -1
  145. package/dist/dev/icons/dist/react/default/restart.js.map +1 -1
  146. package/dist/dev/icons/dist/react/default/seek.js +0 -1
  147. package/dist/dev/icons/dist/react/default/seek.js.map +1 -1
  148. package/dist/dev/icons/dist/react/default/spinner.js +0 -1
  149. package/dist/dev/icons/dist/react/default/spinner.js.map +1 -1
  150. package/dist/dev/icons/dist/react/default/volume-high.js +0 -1
  151. package/dist/dev/icons/dist/react/default/volume-high.js.map +1 -1
  152. package/dist/dev/icons/dist/react/default/volume-low.js +0 -1
  153. package/dist/dev/icons/dist/react/default/volume-low.js.map +1 -1
  154. package/dist/dev/icons/dist/react/default/volume-off.js +0 -1
  155. package/dist/dev/icons/dist/react/default/volume-off.js.map +1 -1
  156. package/dist/dev/icons/dist/react/minimal/captions-off.js +0 -1
  157. package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -1
  158. package/dist/dev/icons/dist/react/minimal/captions-on.js +0 -1
  159. package/dist/dev/icons/dist/react/minimal/captions-on.js.map +1 -1
  160. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js +0 -1
  161. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  162. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js +0 -1
  163. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  164. package/dist/dev/icons/dist/react/minimal/pause.js +0 -1
  165. package/dist/dev/icons/dist/react/minimal/pause.js.map +1 -1
  166. package/dist/dev/icons/dist/react/minimal/pip-enter.js +37 -0
  167. package/dist/dev/icons/dist/react/minimal/pip-enter.js.map +1 -0
  168. package/dist/dev/icons/dist/react/minimal/pip-exit.js +37 -0
  169. package/dist/dev/icons/dist/react/minimal/pip-exit.js.map +1 -0
  170. package/dist/dev/icons/dist/react/minimal/play.js +0 -1
  171. package/dist/dev/icons/dist/react/minimal/play.js.map +1 -1
  172. package/dist/dev/icons/dist/react/minimal/restart.js +0 -1
  173. package/dist/dev/icons/dist/react/minimal/restart.js.map +1 -1
  174. package/dist/dev/icons/dist/react/minimal/seek.js +0 -1
  175. package/dist/dev/icons/dist/react/minimal/seek.js.map +1 -1
  176. package/dist/dev/icons/dist/react/minimal/spinner.js +0 -1
  177. package/dist/dev/icons/dist/react/minimal/spinner.js.map +1 -1
  178. package/dist/dev/icons/dist/react/minimal/volume-high.js +0 -1
  179. package/dist/dev/icons/dist/react/minimal/volume-high.js.map +1 -1
  180. package/dist/dev/icons/dist/react/minimal/volume-low.js +0 -1
  181. package/dist/dev/icons/dist/react/minimal/volume-low.js.map +1 -1
  182. package/dist/dev/icons/dist/react/minimal/volume-off.js +0 -1
  183. package/dist/dev/icons/dist/react/minimal/volume-off.js.map +1 -1
  184. package/dist/dev/index.d.ts +2 -2
  185. package/dist/dev/index.js +2 -2
  186. package/dist/dev/media/audio.d.ts.map +1 -1
  187. package/dist/dev/media/audio.js +3 -6
  188. package/dist/dev/media/audio.js.map +1 -1
  189. package/dist/dev/media/background-video/index.js +2 -2
  190. package/dist/dev/media/background-video/index.js.map +1 -1
  191. package/dist/dev/media/dash-video/index.d.ts +11 -0
  192. package/dist/dev/media/dash-video/index.d.ts.map +1 -0
  193. package/dist/dev/media/dash-video/index.js +26 -0
  194. package/dist/dev/media/dash-video/index.js.map +1 -0
  195. package/dist/dev/media/hls-video/index.js +2 -2
  196. package/dist/dev/media/hls-video/index.js.map +1 -1
  197. package/dist/dev/media/simple-hls-video/index.js +2 -2
  198. package/dist/dev/media/simple-hls-video/index.js.map +1 -1
  199. package/dist/dev/media/video.d.ts.map +1 -1
  200. package/dist/dev/media/video.js +3 -6
  201. package/dist/dev/media/video.js.map +1 -1
  202. package/dist/dev/player/context.d.ts +10 -4
  203. package/dist/dev/player/context.d.ts.map +1 -1
  204. package/dist/dev/player/context.js +16 -10
  205. package/dist/dev/player/context.js.map +1 -1
  206. package/dist/dev/player/create-player.js +16 -2
  207. package/dist/dev/player/create-player.js.map +1 -1
  208. package/dist/dev/presets/audio/minimal-skin.css +22 -12
  209. package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
  210. package/dist/dev/presets/audio/minimal-skin.js +32 -26
  211. package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
  212. package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
  213. package/dist/dev/presets/audio/minimal-skin.tailwind.js +36 -30
  214. package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
  215. package/dist/dev/presets/audio/skin.css +19 -14
  216. package/dist/dev/presets/audio/skin.d.ts.map +1 -1
  217. package/dist/dev/presets/audio/skin.js +32 -26
  218. package/dist/dev/presets/audio/skin.js.map +1 -1
  219. package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
  220. package/dist/dev/presets/audio/skin.tailwind.js +37 -32
  221. package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
  222. package/dist/dev/presets/types.d.ts +6 -1
  223. package/dist/dev/presets/types.d.ts.map +1 -1
  224. package/dist/dev/presets/video/minimal-skin.css +101 -63
  225. package/dist/dev/presets/video/minimal-skin.d.ts +2 -2
  226. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  227. package/dist/dev/presets/video/minimal-skin.js +45 -31
  228. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  229. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  230. package/dist/dev/presets/video/minimal-skin.tailwind.js +51 -34
  231. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  232. package/dist/dev/presets/video/skin.css +98 -64
  233. package/dist/dev/presets/video/skin.d.ts +2 -2
  234. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  235. package/dist/dev/presets/video/skin.js +45 -31
  236. package/dist/dev/presets/video/skin.js.map +1 -1
  237. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  238. package/dist/dev/presets/video/skin.tailwind.js +51 -34
  239. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  240. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +6 -5
  241. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  242. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +1 -1
  243. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  244. package/dist/dev/skins/dist/default/default/tailwind/components/error.js +1 -1
  245. package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  246. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +16 -0
  247. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  248. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +6 -5
  249. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  250. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +1 -1
  251. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  252. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  253. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  254. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +1 -1
  255. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  256. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
  257. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  258. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  259. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  260. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +5 -4
  261. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  262. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +5 -0
  263. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  264. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
  265. package/dist/dev/ui/popover/popover-popup.js +11 -2
  266. package/dist/dev/ui/popover/popover-popup.js.map +1 -1
  267. package/dist/dev/ui/time-slider/time-slider-root.js +1 -1
  268. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
  269. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  270. package/dist/dev/ui/tooltip/tooltip-popup.js +11 -2
  271. package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
  272. package/dist/dev/ui/volume-slider/volume-slider-root.js +3 -3
  273. package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -1
  274. package/dist/dev/utils/use-render.d.ts.map +1 -1
  275. package/dist/dev/utils/use-render.js +5 -1
  276. package/dist/dev/utils/use-render.js.map +1 -1
  277. package/package.json +7 -7
  278. package/dist/default/icons/dist/react/default/pip.js +0 -27
  279. package/dist/default/icons/dist/react/default/pip.js.map +0 -1
  280. package/dist/default/icons/dist/react/minimal/pip.js +0 -27
  281. package/dist/default/icons/dist/react/minimal/pip.js.map +0 -1
  282. package/dist/dev/icons/dist/react/default/pip.js +0 -27
  283. package/dist/dev/icons/dist/react/default/pip.js.map +0 -1
  284. package/dist/dev/icons/dist/react/minimal/pip.js +0 -27
  285. package/dist/dev/icons/dist/react/minimal/pip.js.map +0 -1
@@ -16,6 +16,8 @@
16
16
  .media-button--mute .media-icon--volume-high,
17
17
  .media-button--fullscreen .media-icon--fullscreen-enter,
18
18
  .media-button--fullscreen .media-icon--fullscreen-exit,
19
+ .media-button--pip .media-icon--pip-enter,
20
+ .media-button--pip .media-icon--pip-exit,
19
21
  .media-button--captions .media-icon--captions-off,
20
22
  .media-button--captions .media-icon--captions-on {
21
23
  display: none;
@@ -40,6 +42,10 @@
40
42
  .media-button--fullscreen:not([data-fullscreen]) .media-icon--fullscreen-enter,
41
43
  /* Fullscreen: fullscreen → exit */
42
44
  .media-button--fullscreen[data-fullscreen] .media-icon--fullscreen-exit,
45
+ /* Picture-in-Picture: not active → enter */
46
+ .media-button--pip:not([data-pip]) .media-icon--pip-enter,
47
+ /* Picture-in-Picture: active → exit */
48
+ .media-button--pip[data-pip] .media-icon--pip-exit,
43
49
  /* Captions: not active → captions off */
44
50
  .media-button--captions:not([data-active]) .media-icon--captions-off,
45
51
  /* Captions: active → captions on */
@@ -160,30 +166,6 @@
160
166
  border-radius: inherit;
161
167
  }
162
168
 
163
- /* ==========================================================================
164
- Poster Image
165
- ========================================================================== */
166
-
167
- .media-minimal-skin > img {
168
- position: absolute;
169
- inset: 0;
170
- width: 100%;
171
- height: 100%;
172
- object-fit: var(--media-object-fit, contain);
173
- object-position: var(--media-object-position, center);
174
- transition: opacity 0.25s;
175
- pointer-events: none;
176
- border-radius: inherit;
177
-
178
- &:not([data-visible]) {
179
- opacity: 0;
180
- }
181
- }
182
-
183
- /* ==========================================================================
184
- Fullscreen
185
- ========================================================================== */
186
-
187
169
  .media-minimal-skin:fullscreen ::slotted(video),
188
170
  .media-minimal-skin:fullscreen video {
189
171
  object-fit: contain;
@@ -269,7 +251,7 @@
269
251
  color: oklch(1 0 0);
270
252
  font-size: 0.875rem;
271
253
  text-shadow: 0 1px 0 oklch(0 0 0 / 0.5);
272
- transition-property: opacity, transform;
254
+ transition-property: opacity, scale;
273
255
  transition-duration: 500ms;
274
256
  transition-delay: 100ms;
275
257
  transition-timing-function: linear(
@@ -295,7 +277,7 @@
295
277
  .media-minimal-skin .media-error[data-starting-style] .media-error__dialog,
296
278
  .media-minimal-skin .media-error[data-ending-style] .media-error__dialog {
297
279
  opacity: 0;
298
- transform: scale(0.5);
280
+ scale: 0.5;
299
281
  }
300
282
 
301
283
  .media-minimal-skin .media-error__content {
@@ -312,6 +294,7 @@
312
294
 
313
295
  .media-minimal-skin .media-error__description {
314
296
  opacity: 0.7;
297
+ overflow-wrap: anywhere;
315
298
  }
316
299
 
317
300
  .media-minimal-skin .media-error__actions {
@@ -331,12 +314,12 @@
331
314
  container: media-controls / inline-size;
332
315
  display: flex;
333
316
  align-items: center;
334
- --media-controls-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.25));
317
+ --media-controls-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.15));
335
318
  --media-controls-current-shadow-color-subtle: oklch(
336
319
  from var(--media-controls-current-shadow-color) l c h /
337
320
  calc(alpha * 0.4)
338
321
  );
339
- text-shadow: 0 0 1px var(--media-controls-current-shadow-color);
322
+ text-shadow: 0 1px 0 var(--media-controls-current-shadow-color);
340
323
  }
341
324
 
342
325
  /* ==========================================================================
@@ -410,7 +393,7 @@
410
393
  font-weight: 500;
411
394
  text-align: center;
412
395
  text-shadow: inherit;
413
- transition-property: background-color, color, outline-offset, transform;
396
+ transition-property: background-color, color, outline-offset, scale;
414
397
  transition-duration: 150ms;
415
398
  transition-timing-function: ease-out;
416
399
  cursor: pointer;
@@ -450,7 +433,7 @@
450
433
  }
451
434
 
452
435
  &:active {
453
- transform: scale(0.9);
436
+ scale: 0.9;
454
437
  }
455
438
 
456
439
  & .media-icon {
@@ -512,6 +495,43 @@
512
495
  scale: -1 1;
513
496
  }
514
497
 
498
+ /* ==========================================================================
499
+ Poster Image
500
+ ========================================================================== */
501
+
502
+ .media-minimal-skin media-poster,
503
+ .media-minimal-skin > img {
504
+ position: absolute;
505
+ inset: 0;
506
+ width: 100%;
507
+ height: 100%;
508
+ transition: opacity 0.25s;
509
+ pointer-events: none;
510
+ }
511
+ .media-minimal-skin media-poster:not([data-visible]),
512
+ .media-minimal-skin > img:not([data-visible]) {
513
+ opacity: 0;
514
+ }
515
+ .media-minimal-skin media-poster ::slotted(img) {
516
+ position: absolute;
517
+ inset: 0;
518
+ width: 100%;
519
+ height: 100%;
520
+ object-fit: var(--media-object-fit, contain);
521
+ object-position: var(--media-object-position, center);
522
+ border-radius: var(--media-video-border-radius);
523
+ }
524
+ .media-minimal-skin > img {
525
+ object-fit: var(--media-object-fit, contain);
526
+ object-position: var(--media-object-position, center);
527
+ border-radius: inherit;
528
+ }
529
+
530
+ .media-minimal-skin:fullscreen media-poster ::slotted(img),
531
+ .media-minimal-skin:fullscreen > img {
532
+ object-fit: contain;
533
+ }
534
+
515
535
  /* ==========================================================================
516
536
  Media preview
517
537
  ========================================================================== */
@@ -541,7 +561,7 @@
541
561
  position: absolute;
542
562
  top: 50%;
543
563
  left: 50%;
544
- transform: translate(-50%, -50%);
564
+ translate: -50% -50%;
545
565
  opacity: 0;
546
566
  }
547
567
 
@@ -609,7 +629,7 @@
609
629
  /* Thumb */
610
630
  .media-minimal-skin .media-slider__thumb {
611
631
  position: absolute;
612
- transform: translate(-50%, -50%);
632
+ translate: -50% -50%;
613
633
  z-index: 10;
614
634
  width: 0.75rem;
615
635
  height: 0.75rem;
@@ -712,13 +732,13 @@
712
732
  border: 0;
713
733
  color: inherit;
714
734
  overflow: visible;
715
- transition-property: transform, scale, opacity, filter;
735
+ transition-property: scale, opacity, filter;
716
736
  transition-duration: 150ms;
717
737
 
718
738
  &[data-starting-style],
719
739
  &[data-ending-style] {
720
740
  opacity: 0;
721
- transform: scale(0.5);
741
+ scale: 0.5;
722
742
  filter: blur(8px);
723
743
  }
724
744
 
@@ -812,30 +832,29 @@
812
832
  }
813
833
  }
814
834
 
835
+ .media-minimal-skin .media-popover--volume:has(media-volume-slider[data-availability="unsupported"]) {
836
+ display: none;
837
+ }
838
+
815
839
  /* ==========================================================================
816
840
  Native Caption Track
817
841
  ========================================================================== */
818
842
 
819
843
  .media-minimal-skin {
820
- --media-caption-track-duration: 150ms;
821
- --media-caption-track-delay: 600ms;
844
+ --media-caption-track-duration: var(--media-controls-transition-duration);
845
+ --media-caption-track-delay: calc(var(--media-controls-transition-delay) + 25ms);
822
846
  --media-caption-track-y: -0.5rem;
823
847
 
824
848
  &:has(.media-controls[data-visible]) {
825
- --media-caption-track-delay: 25ms;
826
849
  --media-caption-track-y: -3rem;
827
850
  }
828
-
829
- @media (prefers-reduced-motion: reduce) {
830
- --media-caption-track-duration: 50ms;
831
- }
832
851
  }
833
852
 
834
853
  .media-minimal-skin video::-webkit-media-text-track-container {
835
- /* NOTE: The delay must account for the controls delay/duration */
836
- transition: transform var(--media-caption-track-duration) ease-out;
854
+ transition: translate var(--media-caption-track-duration) ease-out;
837
855
  transition-delay: var(--media-caption-track-delay);
838
- transform: translateY(var(--media-caption-track-y)) scale(0.98);
856
+ translate: 0 var(--media-caption-track-y);
857
+ scale: 0.98;
839
858
  z-index: 1;
840
859
  font-family: inherit;
841
860
  }
@@ -846,14 +865,31 @@
846
865
  ========================================================================== */
847
866
 
848
867
  .media-minimal-skin--video {
868
+ overflow: clip;
849
869
  background: oklch(0 0 0);
850
870
  --media-border-color: oklch(0 0 0 / 0.15);
851
871
  --media-video-border-radius: var(--media-border-radius, 0.75rem);
872
+ --media-controls-transition-duration: 100ms;
873
+ --media-controls-transition-delay: 0ms;
852
874
 
853
875
  @media (prefers-color-scheme: dark) {
854
876
  --media-border-color: oklch(1 0 0 / 0.15);
855
877
  }
856
878
 
879
+ &:has(.media-controls:not([data-visible])) {
880
+ /* Slight delay to hide controls on non-touch devices after interaction */
881
+ @media (pointer: fine) {
882
+ --media-controls-transition-delay: 500ms;
883
+ --media-controls-transition-duration: 300ms;
884
+ }
885
+ @media (pointer: coarse) {
886
+ --media-controls-transition-duration: 150ms;
887
+ }
888
+ @media (prefers-reduced-motion: reduce) {
889
+ --media-controls-transition-duration: 100ms;
890
+ }
891
+ }
892
+
857
893
  /* Inner border ring */
858
894
  &::after {
859
895
  content: "";
@@ -882,38 +918,39 @@
882
918
  z-index: 10;
883
919
  gap: 0.5rem;
884
920
  padding: 2rem 0.375rem 0.375rem 0.375rem;
885
- color: oklch(1 0 0);
921
+ color: var(--media-color-primary, oklch(1 0 0));
922
+ transition-duration: var(--media-controls-transition-duration);
923
+ transition-delay: var(--media-controls-transition-delay);
924
+ transition-timing-function: ease-out;
886
925
 
887
926
  @media (pointer: fine) {
888
- will-change: transform, filter, opacity;
889
- transition-property: transform, filter, opacity;
890
- transition-duration: 75ms;
891
- transition-delay: 0ms;
892
- transition-timing-function: ease-out;
927
+ will-change: translate, filter, opacity;
928
+ transition-property: translate, filter, opacity;
893
929
  }
894
930
 
895
- @container media-root (width > 40rem) {
896
- gap: 0.875rem;
897
- padding: 2.5rem 0.75rem 0.75rem 0.75rem;
931
+ @media (pointer: coarse) {
932
+ will-change: translate, opacity;
933
+ transition-property: translate, opacity;
898
934
  }
899
935
 
900
936
  &:not([data-visible]) {
901
937
  opacity: 0;
902
938
  pointer-events: none;
939
+ translate: 0 100%;
903
940
 
904
941
  @media (pointer: fine) {
905
- transform: translateY(100%);
906
942
  filter: blur(8px);
907
- transition-duration: 500ms;
908
- transition-delay: 500ms;
909
-
910
- @media (prefers-reduced-motion: reduce) {
911
- scale: 1;
912
- transform: translateY(0);
913
- filter: blur(0);
914
- transition-duration: 100ms;
915
- }
916
943
  }
944
+
945
+ @media (prefers-reduced-motion: reduce) {
946
+ translate: 0 0;
947
+ filter: blur(0);
948
+ }
949
+ }
950
+
951
+ @container media-root (width > 40rem) {
952
+ gap: 0.875rem;
953
+ padding: 2.5rem 0.75rem 0.75rem 0.75rem;
917
954
  }
918
955
  }
919
956
 
@@ -954,6 +991,7 @@
954
991
  filter: blur(8px);
955
992
  transition-property: scale, opacity, filter;
956
993
  transition-duration: 150ms;
994
+ transition-timing-function: ease-out;
957
995
  transform-origin: bottom;
958
996
 
959
997
  & .media-preview__thumbnail-wrapper {
@@ -1,4 +1,5 @@
1
1
  import { Container, usePlayer } from "../../player/context.js";
2
+ import { isRenderProp } from "../../utils/use-render.js";
2
3
  import { BufferingIndicator } from "../../ui/buffering-indicator/buffering-indicator.js";
3
4
  import { CaptionsButton } from "../../ui/captions-button/captions-button.js";
4
5
  import { ControlsRoot } from "../../ui/controls/controls-root.js";
@@ -10,6 +11,7 @@ import { PlaybackRateButton } from "../../ui/playback-rate-button/playback-rate-
10
11
  import { PopoverPopup } from "../../ui/popover/popover-popup.js";
11
12
  import { PopoverRoot } from "../../ui/popover/popover-root.js";
12
13
  import { PopoverTrigger } from "../../ui/popover/popover-trigger.js";
14
+ import { Poster } from "../../ui/poster/poster.js";
13
15
  import { SeekButton } from "../../ui/seek-button/seek-button.js";
14
16
  import { SliderBuffer } from "../../ui/slider/slider-buffer.js";
15
17
  import { SliderFill } from "../../ui/slider/slider-fill.js";
@@ -31,7 +33,8 @@ import CaptionsOnIcon from "../../icons/dist/react/minimal/captions-on.js";
31
33
  import FullscreenEnterIcon from "../../icons/dist/react/minimal/fullscreen-enter.js";
32
34
  import FullscreenExitIcon from "../../icons/dist/react/minimal/fullscreen-exit.js";
33
35
  import PauseIcon from "../../icons/dist/react/minimal/pause.js";
34
- import PipIcon from "../../icons/dist/react/minimal/pip.js";
36
+ import PipEnterIcon from "../../icons/dist/react/minimal/pip-enter.js";
37
+ import PipExitIcon from "../../icons/dist/react/minimal/pip-exit.js";
35
38
  import PlayIcon from "../../icons/dist/react/minimal/play.js";
36
39
  import RestartIcon from "../../icons/dist/react/minimal/restart.js";
37
40
  import SeekIcon from "../../icons/dist/react/minimal/seek.js";
@@ -41,6 +44,7 @@ import VolumeLowIcon from "../../icons/dist/react/minimal/volume-low.js";
41
44
  import VolumeOffIcon from "../../icons/dist/react/minimal/volume-off.js";
42
45
  import { ErrorDialog } from "./error-dialog.js";
43
46
  import { forwardRef } from "react";
47
+ import { isString } from "@videojs/utils/predicate";
44
48
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
45
49
  import { cn } from "@videojs/utils/style";
46
50
 
@@ -77,13 +81,48 @@ function PiPLabel() {
77
81
  function FullscreenLabel() {
78
82
  return usePlayer((s) => Boolean(s.fullscreen)) ? /* @__PURE__ */ jsx(Fragment, { children: "Exit fullscreen" }) : /* @__PURE__ */ jsx(Fragment, { children: "Enter fullscreen" });
79
83
  }
84
+ function VolumePopover() {
85
+ const volumeUnsupported = usePlayer((s) => s.volumeAvailability === "unsupported");
86
+ const muteButton = /* @__PURE__ */ jsx(MuteButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
87
+ ...props,
88
+ className: "media-button--icon media-button--mute",
89
+ children: [
90
+ /* @__PURE__ */ jsx(VolumeOffIcon, { className: "media-icon media-icon--volume-off" }),
91
+ /* @__PURE__ */ jsx(VolumeLowIcon, { className: "media-icon media-icon--volume-low" }),
92
+ /* @__PURE__ */ jsx(VolumeHighIcon, { className: "media-icon media-icon--volume-high" })
93
+ ]
94
+ }) });
95
+ if (volumeUnsupported) return muteButton;
96
+ return /* @__PURE__ */ jsxs(PopoverRoot, {
97
+ openOnHover: true,
98
+ delay: 200,
99
+ closeDelay: 100,
100
+ side: "top",
101
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, { render: muteButton }), /* @__PURE__ */ jsx(PopoverPopup, {
102
+ className: "media-popover media-popover--volume",
103
+ children: /* @__PURE__ */ jsxs(VolumeSliderRoot, {
104
+ className: "media-slider",
105
+ orientation: "vertical",
106
+ thumbAlignment: "edge",
107
+ children: [/* @__PURE__ */ jsx(SliderTrack, {
108
+ className: "media-slider__track",
109
+ children: /* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" })
110
+ }), /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb media-slider__thumb--persistent" })]
111
+ })
112
+ })]
113
+ });
114
+ }
80
115
  function MinimalVideoSkin(props) {
81
- const { children, className, ...rest } = props;
116
+ const { children, className, poster, ...rest } = props;
82
117
  return /* @__PURE__ */ jsxs(Container, {
83
118
  className: cn("media-minimal-skin media-minimal-skin--video", className),
84
119
  ...rest,
85
120
  children: [
86
121
  children,
122
+ poster && /* @__PURE__ */ jsx(Poster, {
123
+ src: isString(poster) ? poster : void 0,
124
+ render: isRenderProp(poster) ? poster : void 0
125
+ }),
87
126
  /* @__PURE__ */ jsx(BufferingIndicator, { render: (props) => /* @__PURE__ */ jsx("div", {
88
127
  ...props,
89
128
  className: "media-buffering-indicator",
@@ -214,32 +253,7 @@ function MinimalVideoSkin(props) {
214
253
  children: "Toggle playback rate"
215
254
  })]
216
255
  }),
217
- /* @__PURE__ */ jsxs(PopoverRoot, {
218
- openOnHover: true,
219
- delay: 200,
220
- closeDelay: 100,
221
- side: "top",
222
- children: [/* @__PURE__ */ jsx(PopoverTrigger, { render: /* @__PURE__ */ jsx(MuteButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
223
- ...props,
224
- className: "media-button--icon media-button--mute",
225
- children: [
226
- /* @__PURE__ */ jsx(VolumeOffIcon, { className: "media-icon media-icon--volume-off" }),
227
- /* @__PURE__ */ jsx(VolumeLowIcon, { className: "media-icon media-icon--volume-low" }),
228
- /* @__PURE__ */ jsx(VolumeHighIcon, { className: "media-icon media-icon--volume-high" })
229
- ]
230
- }) }) }), /* @__PURE__ */ jsx(PopoverPopup, {
231
- className: "media-popover media-popover--volume",
232
- children: /* @__PURE__ */ jsxs(VolumeSliderRoot, {
233
- className: "media-slider",
234
- orientation: "vertical",
235
- thumbAlignment: "edge",
236
- children: [/* @__PURE__ */ jsx(SliderTrack, {
237
- className: "media-slider__track",
238
- children: /* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" })
239
- }), /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb media-slider__thumb--persistent" })]
240
- })
241
- })]
242
- }),
256
+ /* @__PURE__ */ jsx(VolumePopover, {}),
243
257
  /* @__PURE__ */ jsxs(TooltipRoot, {
244
258
  side: "top",
245
259
  children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(CaptionsButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
@@ -253,10 +267,10 @@ function MinimalVideoSkin(props) {
253
267
  }),
254
268
  /* @__PURE__ */ jsxs(TooltipRoot, {
255
269
  side: "top",
256
- children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(PiPButton, { render: (props) => /* @__PURE__ */ jsx(Button, {
270
+ children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(PiPButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
257
271
  ...props,
258
- className: "media-button--icon",
259
- children: /* @__PURE__ */ jsx(PipIcon, { className: "media-icon" })
272
+ className: "media-button--icon media-button--pip",
273
+ children: [/* @__PURE__ */ jsx(PipEnterIcon, { className: "media-icon media-icon--pip-enter" }), /* @__PURE__ */ jsx(PipExitIcon, { className: "media-icon media-icon--pip-exit" })]
260
274
  }) }) }), /* @__PURE__ */ jsx(TooltipPopup, {
261
275
  className: "media-tooltip",
262
276
  children: /* @__PURE__ */ jsx(PiPLabel, {})
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.js","names":["Controls.Root","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Group","Time.Value","Time.Separator","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Slider.Thumbnail","TimeSlider.Value","Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb"],"sources":["../../../../src/presets/video/minimal-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/minimal';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } from '@/player/context';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton } from '@/ui/captions-button';\nimport { Controls } from '@/ui/controls';\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 { Slider } from '@/ui/slider';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport type { BaseSkinProps } from '../types';\nimport { ErrorDialog } from './error-dialog';\n\nconst SEEK_TIME = 10;\n\nexport type MinimalVideoSkinProps = 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\nconst errorClasses = {\n root: 'media-error',\n dialog: 'media-error__dialog',\n content: 'media-error__content',\n title: 'media-error__title',\n description: 'media-error__description',\n actions: 'media-error__actions',\n close: 'media-button',\n};\n\nfunction PlayLabel(): ReactNode {\n const paused = usePlayer((s) => Boolean(s.paused));\n const ended = usePlayer((s) => Boolean(s.ended));\n if (ended) return <>Replay</>;\n return paused ? <>Play</> : <>Pause</>;\n}\n\nfunction CaptionsLabel(): ReactNode {\n const active = usePlayer((s) => Boolean(s.subtitlesShowing));\n return active ? <>Disable captions</> : <>Enable captions</>;\n}\n\nfunction PiPLabel(): ReactNode {\n const pip = usePlayer((s) => Boolean(s.pip));\n return pip ? <>Exit picture-in-picture</> : <>Enter picture-in-picture</>;\n}\n\nfunction FullscreenLabel(): ReactNode {\n const fullscreen = usePlayer((s) => Boolean(s.fullscreen));\n return fullscreen ? <>Exit fullscreen</> : <>Enter fullscreen</>;\n}\n\nexport function MinimalVideoSkin(props: MinimalVideoSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn('media-minimal-skin media-minimal-skin--video', className)} {...rest}>\n {children}\n\n <BufferingIndicator\n render={(props) => (\n <div {...props} className=\"media-buffering-indicator\">\n <SpinnerIcon className=\"media-icon\" />\n </div>\n )}\n />\n\n <ErrorDialog classes={errorClasses} />\n\n <Controls.Root className=\"media-controls\">\n <Tooltip.Provider>\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\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 />\n <Tooltip.Popup className=\"media-tooltip\">\n <PlayLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\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 />\n <Tooltip.Popup className=\"media-tooltip\">Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\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 />\n <Tooltip.Popup className=\"media-tooltip\">Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n </div>\n\n <div className=\"media-time-controls\">\n <Time.Group className=\"media-time\">\n <Time.Value type=\"current\" className=\"media-time__value media-time__value--current\" />\n <Time.Separator className=\"media-time__separator\" />\n <Time.Value type=\"duration\" className=\"media-time__value media-time__value--duration\" />\n </Time.Group>\n\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\n <div className=\"media-preview media-slider__preview\">\n <div className=\"media-preview__thumbnail-wrapper\">\n <Slider.Thumbnail className=\"media-preview__thumbnail\" />\n </div>\n <TimeSlider.Value type=\"pointer\" className=\"media-preview__timestamp\" />\n <SpinnerIcon className=\"media-preview__spinner media-icon\" />\n </div>\n </TimeSlider.Root>\n </div>\n\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlaybackRateButton\n render={(props) => <Button {...props} className=\"media-button--icon media-button--playback-rate\" />}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\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-popover media-popover--volume\">\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 <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\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 />\n <Tooltip.Popup className=\"media-tooltip\">\n <CaptionsLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PiPButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon\">\n <PipIcon className=\"media-icon\" />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">\n <PiPLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\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 }\n />\n <Tooltip.Popup className=\"media-tooltip\">\n <FullscreenLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n </div>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className=\"media-overlay\" />\n </Container>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAM,YAAY;AAIlB,MAAM,SAAS,WAAwD,SAAS,OAAO,EAAE,WAAW,GAAG,SAAS,KAAK;AACnH,QAAO,oBAAC;EAAY;EAAK,MAAK;EAAS,WAAW,GAAG,gBAAgB,UAAU;EAAE,GAAI;GAAS;EAC9F;AAEF,MAAM,eAAe;CACnB,MAAM;CACN,QAAQ;CACR,SAAS;CACT,OAAO;CACP,aAAa;CACb,SAAS;CACT,OAAO;CACR;AAED,SAAS,YAAuB;CAC9B,MAAM,SAAS,WAAW,MAAM,QAAQ,EAAE,OAAO,CAAC;AAElD,KADc,WAAW,MAAM,QAAQ,EAAE,MAAM,CAAC,CACrC,QAAO,0CAAE,WAAS;AAC7B,QAAO,SAAS,0CAAE,SAAO,GAAG,0CAAE,UAAQ;;AAGxC,SAAS,gBAA2B;AAElC,QADe,WAAW,MAAM,QAAQ,EAAE,iBAAiB,CAAC,GAC5C,0CAAE,qBAAmB,GAAG,0CAAE,oBAAkB;;AAG9D,SAAS,WAAsB;AAE7B,QADY,WAAW,MAAM,QAAQ,EAAE,IAAI,CAAC,GAC/B,0CAAE,4BAA0B,GAAG,0CAAE,6BAA2B;;AAG3E,SAAS,kBAA6B;AAEpC,QADmB,WAAW,MAAM,QAAQ,EAAE,WAAW,CAAC,GACtC,0CAAE,oBAAkB,GAAG,0CAAE,qBAAmB;;AAGlE,SAAgB,iBAAiB,OAAyC;CACxE,MAAM,EAAE,UAAU,WAAW,GAAG,SAAS;AAEzC,QACE,qBAAC;EAAU,WAAW,GAAG,gDAAgD,UAAU;EAAE,GAAI;;GACtF;GAED,oBAAC,sBACC,SAAS,UACP,oBAAC;IAAI,GAAI;IAAO,WAAU;cACxB,oBAAC,eAAY,WAAU,eAAe;KAClC,GAER;GAEF,oBAAC,eAAY,SAAS,eAAgB;GAEtC,oBAACA;IAAc,WAAU;cACvB,qBAACC;KACC,qBAAC;MAAI,WAAU;;OACb,qBAACC;QAAa,MAAK;mBACjB,oBAACC,kBACC,QACE,oBAAC,cACC,SAAS,UACP,qBAAC;SAAO,GAAI;SAAO,WAAU;;UAC3B,oBAAC,eAAY,WAAU,mCAAmC;UAC1D,oBAAC,YAAS,WAAU,gCAAgC;UACpD,oBAAC,aAAU,WAAU,iCAAiC;;UAC/C,GAEX,GAEJ,EACF,oBAACC;SAAc,WAAU;mBACvB,oBAAC,cAAY;UACC;SACH;OAEf,qBAACF;QAAa,MAAK;mBACjB,oBAACC,kBACC,QACE,oBAAC;SACC,SAAS,CAAC;SACV,SAAS,UACP,oBAAC;UAAO,GAAI;UAAO,WAAU;oBAC3B,qBAAC;WAAK,WAAU;sBACd,oBAAC,YAAS,WAAU,oDAAoD,EACxE,oBAAC;YAAK,WAAU;sBAAqB;aAAiB;YACjD;WACA;UAEX,GAEJ,EACF,qBAACC;SAAc,WAAU;;UAAgB;UAAe;UAAU;;UAAwB;SAC7E;OAEf,qBAACF;QAAa,MAAK;mBACjB,oBAACC,kBACC,QACE,oBAAC;SACC,SAAS;SACT,SAAS,UACP,oBAAC;UAAO,GAAI;UAAO,WAAU;oBAC3B,qBAAC;WAAK,WAAU;sBACd,oBAAC,YAAS,WAAU,gCAAgC,EACpD,oBAAC;YAAK,WAAU;sBAAqB;aAAiB;YACjD;WACA;UAEX,GAEJ,EACF,qBAACC;SAAc,WAAU;;UAAgB;UAAc;UAAU;;UAAwB;SAC5E;;OACX;KAEN,qBAAC;MAAI,WAAU;iBACb,qBAACC;OAAW,WAAU;;QACpB,oBAACC;SAAW,MAAK;SAAU,WAAU;UAAiD;QACtF,oBAACC,aAAe,WAAU,0BAA0B;QACpD,oBAACD;SAAW,MAAK;SAAW,WAAU;UAAkD;;QAC7E,EAEb,qBAACE;OAAgB,WAAU;;QACzB,qBAACC;SAAiB,WAAU;oBAC1B,oBAACC,cAAgB,WAAU,uBAAuB,EAClD,oBAACC,gBAAkB,WAAU,yBAAyB;UACrC;QACnB,oBAACC,eAAiB,WAAU,wBAAwB;QAEpD,qBAAC;SAAI,WAAU;;UACb,oBAAC;WAAI,WAAU;qBACb,oBAACC,mBAAiB,WAAU,6BAA6B;YACrD;UACN,oBAACC;WAAiB,MAAK;WAAU,WAAU;YAA6B;UACxE,oBAAC,eAAY,WAAU,sCAAsC;;UACzD;;QACU;OACd;KAEN,qBAAC;MAAI,WAAU;;OACb,qBAACZ;QAAa,MAAK;mBACjB,oBAACC,kBACC,QACE,oBAAC,sBACC,SAAS,UAAU,oBAAC;SAAO,GAAI;SAAO,WAAU;UAAmD,GACnG,GAEJ,EACF,oBAACC;SAAc,WAAU;mBAAgB;UAAoC;SAChE;OAEf,qBAACW;QAAa;QAAY,OAAO;QAAK,YAAY;QAAK,MAAK;mBAC1D,oBAACC,kBACC,QACE,oBAAC,cACC,SAAS,UACP,qBAAC;SAAO,GAAI;SAAO,WAAU;;UAC3B,oBAAC,iBAAc,WAAU,sCAAsC;UAC/D,oBAAC,iBAAc,WAAU,sCAAsC;UAC/D,oBAAC,kBAAe,WAAU,uCAAuC;;UAC1D,GAEX,GAEJ,EACF,oBAACC;SAAc,WAAU;mBACvB,qBAACC;UAAkB,WAAU;UAAe,aAAY;UAAW,gBAAe;qBAChF,oBAACC;WAAmB,WAAU;qBAC5B,oBAACC,cAAkB,WAAU,uBAAuB;YACjC,EACrB,oBAACC,eAAmB,WAAU,wDAAwD;WACpE;UACN;SACH;OAEf,qBAACnB;QAAa,MAAK;mBACjB,oBAACC,kBACC,QACE,oBAAC,kBACC,SAAS,UACP,qBAAC;SAAO,GAAI;SAAO,WAAU;oBAC3B,oBAAC,mBAAgB,WAAU,wCAAwC,EACnE,oBAAC,kBAAe,WAAU,uCAAuC;UAC1D,GAEX,GAEJ,EACF,oBAACC;SAAc,WAAU;mBACvB,oBAAC,kBAAgB;UACH;SACH;OAEf,qBAACF;QAAa,MAAK;mBACjB,oBAACC,kBACC,QACE,oBAAC,aACC,SAAS,UACP,oBAAC;SAAO,GAAI;SAAO,WAAU;mBAC3B,oBAAC,WAAQ,WAAU,eAAe;UAC3B,GAEX,GAEJ,EACF,oBAACC;SAAc,WAAU;mBACvB,oBAAC,aAAW;UACE;SACH;OAEf,qBAACF;QAAa,MAAK;mBACjB,oBAACC,kBACC,QACE,oBAAC,oBACC,SAAS,UACP,qBAAC;SAAO,GAAI;SAAO,WAAU;oBAC3B,oBAAC,uBAAoB,WAAU,4CAA4C,EAC3E,oBAAC,sBAAmB,WAAU,2CAA2C;UAClE,GAEX,GAEJ,EACF,oBAACC;SAAc,WAAU;mBACvB,oBAAC,oBAAkB;UACL;SACH;;OACX;QACW;KACL;GAEhB,oBAAC,SAAI,WAAU,kBAAkB;;GACvB"}
1
+ {"version":3,"file":"minimal-skin.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","Controls.Root","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Group","Time.Value","Time.Separator","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Slider.Thumbnail","TimeSlider.Value"],"sources":["../../../../src/presets/video/minimal-skin.tsx"],"sourcesContent":["import {\n CaptionsOffIcon,\n CaptionsOnIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n PauseIcon,\n PipEnterIcon,\n PipExitIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react/minimal';\nimport { isString } from '@videojs/utils/predicate';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } from '@/player/context';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton } from '@/ui/captions-button';\nimport { Controls } from '@/ui/controls';\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 { Poster } from '@/ui/poster';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Slider } from '@/ui/slider';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport { isRenderProp } from '@/utils/use-render';\nimport type { BaseVideoSkinProps } from '../types';\nimport { ErrorDialog } from './error-dialog';\n\nconst SEEK_TIME = 10;\n\nexport type MinimalVideoSkinProps = BaseVideoSkinProps;\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\nconst errorClasses = {\n root: 'media-error',\n dialog: 'media-error__dialog',\n content: 'media-error__content',\n title: 'media-error__title',\n description: 'media-error__description',\n actions: 'media-error__actions',\n close: 'media-button',\n};\n\nfunction PlayLabel(): ReactNode {\n const paused = usePlayer((s) => Boolean(s.paused));\n const ended = usePlayer((s) => Boolean(s.ended));\n if (ended) return <>Replay</>;\n return paused ? <>Play</> : <>Pause</>;\n}\n\nfunction CaptionsLabel(): ReactNode {\n const active = usePlayer((s) => Boolean(s.subtitlesShowing));\n return active ? <>Disable captions</> : <>Enable captions</>;\n}\n\nfunction PiPLabel(): ReactNode {\n const pip = usePlayer((s) => Boolean(s.pip));\n return pip ? <>Exit picture-in-picture</> : <>Enter picture-in-picture</>;\n}\n\nfunction FullscreenLabel(): ReactNode {\n const fullscreen = usePlayer((s) => Boolean(s.fullscreen));\n return fullscreen ? <>Exit fullscreen</> : <>Enter fullscreen</>;\n}\n\nfunction VolumePopover(): ReactNode {\n const volumeUnsupported = usePlayer((s) => s.volumeAvailability === 'unsupported');\n\n const muteButton = (\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 if (volumeUnsupported) return muteButton;\n\n return (\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger render={muteButton} />\n <Popover.Popup className=\"media-popover media-popover--volume\">\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}\n\nexport function MinimalVideoSkin(props: MinimalVideoSkinProps): ReactNode {\n const { children, className, poster, ...rest } = props;\n\n return (\n <Container className={cn('media-minimal-skin media-minimal-skin--video', className)} {...rest}>\n {children}\n\n {poster && (\n <Poster src={isString(poster) ? poster : undefined} render={isRenderProp(poster) ? poster : undefined} />\n )}\n\n <BufferingIndicator\n render={(props) => (\n <div {...props} className=\"media-buffering-indicator\">\n <SpinnerIcon className=\"media-icon\" />\n </div>\n )}\n />\n\n <ErrorDialog classes={errorClasses} />\n\n <Controls.Root className=\"media-controls\">\n <Tooltip.Provider>\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\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 />\n <Tooltip.Popup className=\"media-tooltip\">\n <PlayLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\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 />\n <Tooltip.Popup className=\"media-tooltip\">Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\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 />\n <Tooltip.Popup className=\"media-tooltip\">Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n </div>\n\n <div className=\"media-time-controls\">\n <Time.Group className=\"media-time\">\n <Time.Value type=\"current\" className=\"media-time__value media-time__value--current\" />\n <Time.Separator className=\"media-time__separator\" />\n <Time.Value type=\"duration\" className=\"media-time__value media-time__value--duration\" />\n </Time.Group>\n\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\n <div className=\"media-preview media-slider__preview\">\n <div className=\"media-preview__thumbnail-wrapper\">\n <Slider.Thumbnail className=\"media-preview__thumbnail\" />\n </div>\n <TimeSlider.Value type=\"pointer\" className=\"media-preview__timestamp\" />\n <SpinnerIcon className=\"media-preview__spinner media-icon\" />\n </div>\n </TimeSlider.Root>\n </div>\n\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlaybackRateButton\n render={(props) => <Button {...props} className=\"media-button--icon media-button--playback-rate\" />}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\n\n <VolumePopover />\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\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 />\n <Tooltip.Popup className=\"media-tooltip\">\n <CaptionsLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PiPButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--pip\">\n <PipEnterIcon className=\"media-icon media-icon--pip-enter\" />\n <PipExitIcon className=\"media-icon media-icon--pip-exit\" />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">\n <PiPLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\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 }\n />\n <Tooltip.Popup className=\"media-tooltip\">\n <FullscreenLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n </div>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className=\"media-overlay\" />\n </Container>\n );\n}\n"],"mappings":"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"}