@videojs/react 10.0.0-beta.1 → 10.0.0-beta.10

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 (386) 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 +21 -0
  63. package/dist/default/media/dash-video/index.js.map +1 -0
  64. package/dist/default/media/hls-video/index.js +3 -8
  65. package/dist/default/media/hls-video/index.js.map +1 -1
  66. package/dist/default/media/simple-hls-video/index.js +3 -7
  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 +237 -157
  75. package/dist/default/presets/audio/minimal-skin.js +136 -119
  76. package/dist/default/presets/audio/minimal-skin.js.map +1 -1
  77. package/dist/default/presets/audio/minimal-skin.tailwind.js +148 -131
  78. package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
  79. package/dist/default/presets/audio/skin.css +234 -153
  80. package/dist/default/presets/audio/skin.js +129 -112
  81. package/dist/default/presets/audio/skin.js.map +1 -1
  82. package/dist/default/presets/audio/skin.tailwind.js +141 -125
  83. package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
  84. package/dist/default/presets/{video/error-dialog.js → error-dialog.js} +18 -18
  85. package/dist/default/presets/error-dialog.js.map +1 -0
  86. package/dist/default/presets/video/minimal-skin.css +486 -301
  87. package/dist/default/presets/video/minimal-skin.js +127 -97
  88. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  89. package/dist/default/presets/video/minimal-skin.tailwind.js +141 -112
  90. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  91. package/dist/default/presets/video/skin.css +484 -289
  92. package/dist/default/presets/video/skin.js +121 -94
  93. package/dist/default/presets/video/skin.js.map +1 -1
  94. package/dist/default/presets/video/skin.tailwind.js +135 -109
  95. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  96. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +9 -20
  97. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  98. package/dist/default/skins/dist/default/default/tailwind/components/button.js +4 -3
  99. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  100. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
  101. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  102. package/dist/default/skins/dist/default/default/tailwind/components/error.js +3 -3
  103. package/dist/default/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  104. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  105. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  106. package/dist/default/skins/dist/default/default/tailwind/components/popup.js +3 -3
  107. package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  108. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +16 -0
  109. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  110. package/dist/default/skins/dist/default/default/tailwind/components/preview.js +13 -0
  111. package/dist/default/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  112. package/dist/default/skins/dist/default/default/tailwind/components/root.js +1 -1
  113. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  114. package/dist/default/skins/dist/default/default/tailwind/components/seek.js +1 -1
  115. package/dist/default/skins/dist/default/default/tailwind/components/seek.js.map +1 -1
  116. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +1 -1
  117. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  118. package/dist/default/skins/dist/default/default/tailwind/components/surface.js +1 -1
  119. package/dist/default/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  120. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +26 -15
  121. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  122. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +10 -18
  123. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  124. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +4 -3
  125. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  126. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  127. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  128. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +3 -3
  129. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  130. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  131. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  132. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +4 -3
  133. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  134. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
  135. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  136. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js +14 -0
  137. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  138. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +1 -1
  139. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  140. package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js +1 -1
  141. package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -1
  142. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +1 -1
  143. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  144. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  145. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  146. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +31 -15
  147. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  148. package/dist/{dev/skins/dist/default/default/tailwind/components → default/skins/dist/default/shared/tailwind}/icon-state.js +6 -1
  149. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
  150. package/dist/default/ui/alert-dialog/alert-dialog-root.js +1 -1
  151. package/dist/default/ui/buffering-indicator/buffering-indicator.js +2 -0
  152. package/dist/default/ui/buffering-indicator/buffering-indicator.js.map +1 -1
  153. package/dist/default/ui/hooks/use-slider.js +1 -1
  154. package/dist/default/ui/popover/popover-popup.js +11 -2
  155. package/dist/default/ui/popover/popover-popup.js.map +1 -1
  156. package/dist/default/ui/popover/popover-root.js +1 -1
  157. package/dist/default/ui/thumbnail/index.js +3 -0
  158. package/dist/default/ui/time-slider/time-slider-root.js +2 -2
  159. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
  160. package/dist/default/ui/tooltip/tooltip-popup.js +11 -2
  161. package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
  162. package/dist/default/ui/tooltip/tooltip-root.js +2 -1
  163. package/dist/default/ui/tooltip/tooltip-root.js.map +1 -1
  164. package/dist/default/ui/volume-slider/volume-slider-root.js +4 -4
  165. package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -1
  166. package/dist/default/utils/use-destroy.js +12 -4
  167. package/dist/default/utils/use-destroy.js.map +1 -1
  168. package/dist/default/utils/use-media-instance.js +24 -0
  169. package/dist/default/utils/use-media-instance.js.map +1 -0
  170. package/dist/default/utils/use-render.js +5 -1
  171. package/dist/default/utils/use-render.js.map +1 -1
  172. package/dist/dev/icons/dist/react/default/captions-off.js +0 -1
  173. package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -1
  174. package/dist/dev/icons/dist/react/default/captions-on.js +0 -1
  175. package/dist/dev/icons/dist/react/default/captions-on.js.map +1 -1
  176. package/dist/dev/icons/dist/react/default/fullscreen-enter.js +0 -1
  177. package/dist/dev/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  178. package/dist/dev/icons/dist/react/default/fullscreen-exit.js +0 -1
  179. package/dist/dev/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  180. package/dist/dev/icons/dist/react/default/pause.js +0 -1
  181. package/dist/dev/icons/dist/react/default/pause.js.map +1 -1
  182. package/dist/dev/icons/dist/react/default/pip-enter.js +33 -0
  183. package/dist/dev/icons/dist/react/default/pip-enter.js.map +1 -0
  184. package/dist/dev/icons/dist/react/default/pip-exit.js +33 -0
  185. package/dist/dev/icons/dist/react/default/pip-exit.js.map +1 -0
  186. package/dist/dev/icons/dist/react/default/play.js +0 -1
  187. package/dist/dev/icons/dist/react/default/play.js.map +1 -1
  188. package/dist/dev/icons/dist/react/default/restart.js +0 -1
  189. package/dist/dev/icons/dist/react/default/restart.js.map +1 -1
  190. package/dist/dev/icons/dist/react/default/seek.js +0 -1
  191. package/dist/dev/icons/dist/react/default/seek.js.map +1 -1
  192. package/dist/dev/icons/dist/react/default/spinner.js +0 -1
  193. package/dist/dev/icons/dist/react/default/spinner.js.map +1 -1
  194. package/dist/dev/icons/dist/react/default/volume-high.js +0 -1
  195. package/dist/dev/icons/dist/react/default/volume-high.js.map +1 -1
  196. package/dist/dev/icons/dist/react/default/volume-low.js +0 -1
  197. package/dist/dev/icons/dist/react/default/volume-low.js.map +1 -1
  198. package/dist/dev/icons/dist/react/default/volume-off.js +0 -1
  199. package/dist/dev/icons/dist/react/default/volume-off.js.map +1 -1
  200. package/dist/dev/icons/dist/react/minimal/captions-off.js +0 -1
  201. package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -1
  202. package/dist/dev/icons/dist/react/minimal/captions-on.js +0 -1
  203. package/dist/dev/icons/dist/react/minimal/captions-on.js.map +1 -1
  204. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js +0 -1
  205. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  206. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js +0 -1
  207. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  208. package/dist/dev/icons/dist/react/minimal/pause.js +0 -1
  209. package/dist/dev/icons/dist/react/minimal/pause.js.map +1 -1
  210. package/dist/dev/icons/dist/react/minimal/pip-enter.js +37 -0
  211. package/dist/dev/icons/dist/react/minimal/pip-enter.js.map +1 -0
  212. package/dist/dev/icons/dist/react/minimal/pip-exit.js +37 -0
  213. package/dist/dev/icons/dist/react/minimal/pip-exit.js.map +1 -0
  214. package/dist/dev/icons/dist/react/minimal/play.js +0 -1
  215. package/dist/dev/icons/dist/react/minimal/play.js.map +1 -1
  216. package/dist/dev/icons/dist/react/minimal/restart.js +0 -1
  217. package/dist/dev/icons/dist/react/minimal/restart.js.map +1 -1
  218. package/dist/dev/icons/dist/react/minimal/seek.js +0 -1
  219. package/dist/dev/icons/dist/react/minimal/seek.js.map +1 -1
  220. package/dist/dev/icons/dist/react/minimal/spinner.js +0 -1
  221. package/dist/dev/icons/dist/react/minimal/spinner.js.map +1 -1
  222. package/dist/dev/icons/dist/react/minimal/volume-high.js +0 -1
  223. package/dist/dev/icons/dist/react/minimal/volume-high.js.map +1 -1
  224. package/dist/dev/icons/dist/react/minimal/volume-low.js +0 -1
  225. package/dist/dev/icons/dist/react/minimal/volume-low.js.map +1 -1
  226. package/dist/dev/icons/dist/react/minimal/volume-off.js +0 -1
  227. package/dist/dev/icons/dist/react/minimal/volume-off.js.map +1 -1
  228. package/dist/dev/index.d.ts +2 -2
  229. package/dist/dev/index.js +2 -2
  230. package/dist/dev/media/audio.d.ts.map +1 -1
  231. package/dist/dev/media/audio.js +3 -6
  232. package/dist/dev/media/audio.js.map +1 -1
  233. package/dist/dev/media/background-video/index.js +2 -2
  234. package/dist/dev/media/background-video/index.js.map +1 -1
  235. package/dist/dev/media/dash-video/index.d.ts +11 -0
  236. package/dist/dev/media/dash-video/index.d.ts.map +1 -0
  237. package/dist/dev/media/dash-video/index.js +21 -0
  238. package/dist/dev/media/dash-video/index.js.map +1 -0
  239. package/dist/dev/media/hls-video/index.d.ts.map +1 -1
  240. package/dist/dev/media/hls-video/index.js +3 -8
  241. package/dist/dev/media/hls-video/index.js.map +1 -1
  242. package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -1
  243. package/dist/dev/media/simple-hls-video/index.js +3 -7
  244. package/dist/dev/media/simple-hls-video/index.js.map +1 -1
  245. package/dist/dev/media/video.d.ts.map +1 -1
  246. package/dist/dev/media/video.js +3 -6
  247. package/dist/dev/media/video.js.map +1 -1
  248. package/dist/dev/player/context.d.ts +10 -4
  249. package/dist/dev/player/context.d.ts.map +1 -1
  250. package/dist/dev/player/context.js +16 -10
  251. package/dist/dev/player/context.js.map +1 -1
  252. package/dist/dev/player/create-player.js +16 -2
  253. package/dist/dev/player/create-player.js.map +1 -1
  254. package/dist/dev/presets/audio/minimal-skin.css +237 -157
  255. package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
  256. package/dist/dev/presets/audio/minimal-skin.js +136 -119
  257. package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
  258. package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
  259. package/dist/dev/presets/audio/minimal-skin.tailwind.js +148 -131
  260. package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
  261. package/dist/dev/presets/audio/skin.css +234 -153
  262. package/dist/dev/presets/audio/skin.d.ts.map +1 -1
  263. package/dist/dev/presets/audio/skin.js +129 -112
  264. package/dist/dev/presets/audio/skin.js.map +1 -1
  265. package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
  266. package/dist/dev/presets/audio/skin.tailwind.js +141 -125
  267. package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
  268. package/dist/dev/presets/{video/error-dialog.js → error-dialog.js} +18 -18
  269. package/dist/dev/presets/error-dialog.js.map +1 -0
  270. package/dist/dev/presets/types.d.ts +6 -1
  271. package/dist/dev/presets/types.d.ts.map +1 -1
  272. package/dist/dev/presets/video/minimal-skin.css +486 -301
  273. package/dist/dev/presets/video/minimal-skin.d.ts +2 -2
  274. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  275. package/dist/dev/presets/video/minimal-skin.js +127 -97
  276. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  277. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  278. package/dist/dev/presets/video/minimal-skin.tailwind.js +141 -112
  279. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  280. package/dist/dev/presets/video/skin.css +484 -289
  281. package/dist/dev/presets/video/skin.d.ts +2 -2
  282. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  283. package/dist/dev/presets/video/skin.js +121 -94
  284. package/dist/dev/presets/video/skin.js.map +1 -1
  285. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  286. package/dist/dev/presets/video/skin.tailwind.js +135 -109
  287. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  288. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +9 -20
  289. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  290. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +4 -3
  291. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  292. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +1 -1
  293. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  294. package/dist/dev/skins/dist/default/default/tailwind/components/error.js +3 -3
  295. package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  296. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  297. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  298. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +3 -3
  299. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  300. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +16 -0
  301. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  302. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js +13 -0
  303. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  304. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +1 -1
  305. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  306. package/dist/dev/skins/dist/default/default/tailwind/components/seek.js +1 -1
  307. package/dist/dev/skins/dist/default/default/tailwind/components/seek.js.map +1 -1
  308. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +1 -1
  309. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  310. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js +1 -1
  311. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  312. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +26 -15
  313. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  314. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +10 -18
  315. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  316. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +4 -3
  317. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  318. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  319. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  320. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +3 -3
  321. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  322. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  323. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  324. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +4 -3
  325. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  326. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
  327. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  328. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js +14 -0
  329. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  330. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +1 -1
  331. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  332. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js +1 -1
  333. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -1
  334. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +1 -1
  335. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  336. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  337. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  338. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +31 -15
  339. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  340. package/dist/{default/skins/dist/default/default/tailwind/components → dev/skins/dist/default/shared/tailwind}/icon-state.js +6 -1
  341. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
  342. package/dist/dev/ui/alert-dialog/alert-dialog-root.js +1 -1
  343. package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts.map +1 -1
  344. package/dist/dev/ui/buffering-indicator/buffering-indicator.js +2 -0
  345. package/dist/dev/ui/buffering-indicator/buffering-indicator.js.map +1 -1
  346. package/dist/dev/ui/hooks/use-slider.js +1 -1
  347. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
  348. package/dist/dev/ui/popover/popover-popup.js +11 -2
  349. package/dist/dev/ui/popover/popover-popup.js.map +1 -1
  350. package/dist/dev/ui/popover/popover-root.js +1 -1
  351. package/dist/dev/ui/thumbnail/index.d.ts +2 -0
  352. package/dist/dev/ui/thumbnail/index.js +3 -0
  353. package/dist/dev/ui/time-slider/time-slider-root.js +2 -2
  354. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
  355. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  356. package/dist/dev/ui/tooltip/tooltip-popup.js +11 -2
  357. package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
  358. package/dist/dev/ui/tooltip/tooltip-root.d.ts.map +1 -1
  359. package/dist/dev/ui/tooltip/tooltip-root.js +2 -1
  360. package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -1
  361. package/dist/dev/ui/volume-slider/volume-slider-root.js +4 -4
  362. package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -1
  363. package/dist/dev/utils/use-destroy.js +12 -4
  364. package/dist/dev/utils/use-destroy.js.map +1 -1
  365. package/dist/dev/utils/use-media-instance.js +24 -0
  366. package/dist/dev/utils/use-media-instance.js.map +1 -0
  367. package/dist/dev/utils/use-render.d.ts.map +1 -1
  368. package/dist/dev/utils/use-render.js +5 -1
  369. package/dist/dev/utils/use-render.js.map +1 -1
  370. package/package.json +7 -7
  371. package/dist/default/icons/dist/react/default/pip.js +0 -27
  372. package/dist/default/icons/dist/react/default/pip.js.map +0 -1
  373. package/dist/default/icons/dist/react/minimal/pip.js +0 -27
  374. package/dist/default/icons/dist/react/minimal/pip.js.map +0 -1
  375. package/dist/default/presets/video/error-dialog.js.map +0 -1
  376. package/dist/default/skins/dist/default/default/tailwind/components/icon-state.js.map +0 -1
  377. package/dist/default/skins/dist/default/minimal/tailwind/components/icon-state.js +0 -29
  378. package/dist/default/skins/dist/default/minimal/tailwind/components/icon-state.js.map +0 -1
  379. package/dist/dev/icons/dist/react/default/pip.js +0 -27
  380. package/dist/dev/icons/dist/react/default/pip.js.map +0 -1
  381. package/dist/dev/icons/dist/react/minimal/pip.js +0 -27
  382. package/dist/dev/icons/dist/react/minimal/pip.js.map +0 -1
  383. package/dist/dev/presets/video/error-dialog.js.map +0 -1
  384. package/dist/dev/skins/dist/default/default/tailwind/components/icon-state.js.map +0 -1
  385. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js +0 -29
  386. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js.map +0 -1
@@ -1,8 +1,8 @@
1
- import { BaseSkinProps } from "../types.js";
1
+ import { BaseVideoSkinProps } from "../types.js";
2
2
  import { ReactNode } from "react";
3
3
 
4
4
  //#region src/presets/video/skin.d.ts
5
- type VideoSkinProps = BaseSkinProps;
5
+ type VideoSkinProps = BaseVideoSkinProps;
6
6
  declare function VideoSkin(props: VideoSkinProps): ReactNode;
7
7
  //#endregion
8
8
  export { VideoSkin, VideoSkinProps };
@@ -1 +1 @@
1
- {"version":3,"file":"skin.d.ts","names":[],"sources":["../../../../src/presets/video/skin.tsx"],"mappings":";;;;KAqCY,cAAA,GAAiB,aAAA;AAAA,iBAsCb,SAAA,CAAU,KAAA,EAAO,cAAA,GAAiB,SAAA"}
1
+ {"version":3,"file":"skin.d.ts","names":[],"sources":["../../../../src/presets/video/skin.tsx"],"mappings":";;;;KAoDY,cAAA,GAAiB,kBAAA;AAAA,iBA+Db,SAAA,CAAU,KAAA,EAAO,cAAA,GAAiB,SAAA"}
@@ -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,24 +11,30 @@ 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";
16
18
  import { SliderThumb } from "../../ui/slider/slider-thumb.js";
19
+ import { SliderThumbnail } from "../../ui/slider/slider-thumbnail.js";
17
20
  import { SliderTrack } from "../../ui/slider/slider-track.js";
21
+ import { SliderValue } from "../../ui/slider/slider-value.js";
18
22
  import { Group } from "../../ui/time/time-group.js";
19
23
  import { Value } from "../../ui/time/time-value.js";
20
24
  import { TimeSliderRoot } from "../../ui/time-slider/time-slider-root.js";
21
25
  import { TooltipPopup } from "../../ui/tooltip/tooltip-popup.js";
26
+ import { TooltipProvider } from "../../ui/tooltip/tooltip-provider.js";
22
27
  import { TooltipRoot } from "../../ui/tooltip/tooltip-root.js";
23
28
  import { TooltipTrigger } from "../../ui/tooltip/tooltip-trigger.js";
24
29
  import { VolumeSliderRoot } from "../../ui/volume-slider/volume-slider-root.js";
30
+ import { ErrorDialog } from "../error-dialog.js";
25
31
  import CaptionsOffIcon from "../../icons/dist/react/default/captions-off.js";
26
32
  import CaptionsOnIcon from "../../icons/dist/react/default/captions-on.js";
27
33
  import FullscreenEnterIcon from "../../icons/dist/react/default/fullscreen-enter.js";
28
34
  import FullscreenExitIcon from "../../icons/dist/react/default/fullscreen-exit.js";
29
35
  import PauseIcon from "../../icons/dist/react/default/pause.js";
30
- import PipIcon from "../../icons/dist/react/default/pip.js";
36
+ import PipEnterIcon from "../../icons/dist/react/default/pip-enter.js";
37
+ import PipExitIcon from "../../icons/dist/react/default/pip-exit.js";
31
38
  import PlayIcon from "../../icons/dist/react/default/play.js";
32
39
  import RestartIcon from "../../icons/dist/react/default/restart.js";
33
40
  import SeekIcon from "../../icons/dist/react/default/seek.js";
@@ -35,51 +42,86 @@ import SpinnerIcon from "../../icons/dist/react/default/spinner.js";
35
42
  import VolumeHighIcon from "../../icons/dist/react/default/volume-high.js";
36
43
  import VolumeLowIcon from "../../icons/dist/react/default/volume-low.js";
37
44
  import VolumeOffIcon from "../../icons/dist/react/default/volume-off.js";
38
- import { ErrorDialog } from "./error-dialog.js";
39
45
  import { forwardRef } from "react";
40
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
46
+ import { isString } from "@videojs/utils/predicate";
47
+ import { jsx, jsxs } from "react/jsx-runtime";
41
48
  import { cn } from "@videojs/utils/style";
42
49
 
43
50
  //#region src/presets/video/skin.tsx
44
51
  const SEEK_TIME = 10;
45
- const Button = forwardRef(function Button({ className, ...props }, ref) {
46
- return /* @__PURE__ */ jsx("button", {
47
- ref,
48
- type: "button",
49
- className: cn("media-button", className),
50
- ...props
51
- });
52
- });
53
- const errorClasses = {
52
+ const ERROR_CLASSNAMES = {
54
53
  root: "media-error",
55
54
  dialog: "media-error__dialog media-surface",
56
55
  content: "media-error__content",
57
56
  title: "media-error__title",
58
57
  description: "media-error__description",
59
58
  actions: "media-error__actions",
60
- close: "media-button"
59
+ close: "media-button media-button--primary"
61
60
  };
61
+ const Button = forwardRef(function Button({ className, ...props }, ref) {
62
+ return /* @__PURE__ */ jsx("button", {
63
+ ref,
64
+ type: "button",
65
+ className: cn("media-button media-button--subtle media-button--icon", className),
66
+ ...props
67
+ });
68
+ });
62
69
  function PlayLabel() {
63
70
  const paused = usePlayer((s) => Boolean(s.paused));
64
- if (usePlayer((s) => Boolean(s.ended))) return /* @__PURE__ */ jsx(Fragment, { children: "Replay" });
65
- return paused ? /* @__PURE__ */ jsx(Fragment, { children: "Play" }) : /* @__PURE__ */ jsx(Fragment, { children: "Pause" });
71
+ if (usePlayer((s) => Boolean(s.ended))) return "Replay";
72
+ return paused ? "Play" : "Pause";
66
73
  }
67
74
  function CaptionsLabel() {
68
- return usePlayer((s) => Boolean(s.subtitlesShowing)) ? /* @__PURE__ */ jsx(Fragment, { children: "Disable captions" }) : /* @__PURE__ */ jsx(Fragment, { children: "Enable captions" });
75
+ return usePlayer((s) => Boolean(s.subtitlesShowing)) ? "Disable captions" : "Enable captions";
69
76
  }
70
77
  function PiPLabel() {
71
- return usePlayer((s) => Boolean(s.pip)) ? /* @__PURE__ */ jsx(Fragment, { children: "Exit picture-in-picture" }) : /* @__PURE__ */ jsx(Fragment, { children: "Enter picture-in-picture" });
78
+ return usePlayer((s) => Boolean(s.pip)) ? "Exit picture-in-picture" : "Enter picture-in-picture";
72
79
  }
73
80
  function FullscreenLabel() {
74
- return usePlayer((s) => Boolean(s.fullscreen)) ? /* @__PURE__ */ jsx(Fragment, { children: "Exit fullscreen" }) : /* @__PURE__ */ jsx(Fragment, { children: "Enter fullscreen" });
81
+ return usePlayer((s) => Boolean(s.fullscreen)) ? "Exit fullscreen" : "Enter fullscreen";
82
+ }
83
+ function VolumePopover() {
84
+ const volumeUnsupported = usePlayer((s) => s.volumeAvailability === "unsupported");
85
+ const muteButton = /* @__PURE__ */ jsxs(MuteButton, {
86
+ className: "media-button--mute",
87
+ render: /* @__PURE__ */ jsx(Button, {}),
88
+ children: [
89
+ /* @__PURE__ */ jsx(VolumeOffIcon, { className: "media-icon media-icon--volume-off" }),
90
+ /* @__PURE__ */ jsx(VolumeLowIcon, { className: "media-icon media-icon--volume-low" }),
91
+ /* @__PURE__ */ jsx(VolumeHighIcon, { className: "media-icon media-icon--volume-high" })
92
+ ]
93
+ });
94
+ if (volumeUnsupported) return muteButton;
95
+ return /* @__PURE__ */ jsxs(PopoverRoot, {
96
+ openOnHover: true,
97
+ delay: 200,
98
+ closeDelay: 100,
99
+ side: "top",
100
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, { render: muteButton }), /* @__PURE__ */ jsx(PopoverPopup, {
101
+ className: "media-surface media-popover media-popover--volume",
102
+ children: /* @__PURE__ */ jsxs(VolumeSliderRoot, {
103
+ className: "media-slider",
104
+ orientation: "vertical",
105
+ thumbAlignment: "edge",
106
+ children: [/* @__PURE__ */ jsx(SliderTrack, {
107
+ className: "media-slider__track",
108
+ children: /* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" })
109
+ }), /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb media-slider__thumb--persistent" })]
110
+ })
111
+ })]
112
+ });
75
113
  }
76
114
  function VideoSkin(props) {
77
- const { children, className, ...rest } = props;
115
+ const { children, className, poster, ...rest } = props;
78
116
  return /* @__PURE__ */ jsxs(Container, {
79
117
  className: cn("media-default-skin media-default-skin--video", className),
80
118
  ...rest,
81
119
  children: [
82
120
  children,
121
+ poster && /* @__PURE__ */ jsx(Poster, {
122
+ src: isString(poster) ? poster : void 0,
123
+ render: isRenderProp(poster) ? poster : void 0
124
+ }),
83
125
  /* @__PURE__ */ jsx(BufferingIndicator, { render: (props) => /* @__PURE__ */ jsx("div", {
84
126
  ...props,
85
127
  className: "media-buffering-indicator",
@@ -88,21 +130,21 @@ function VideoSkin(props) {
88
130
  children: /* @__PURE__ */ jsx(SpinnerIcon, { className: "media-icon" })
89
131
  })
90
132
  }) }),
91
- /* @__PURE__ */ jsx(ErrorDialog, { classes: errorClasses }),
92
- /* @__PURE__ */ jsxs(ControlsRoot, {
133
+ /* @__PURE__ */ jsx(ErrorDialog, { classNames: ERROR_CLASSNAMES }),
134
+ /* @__PURE__ */ jsx(ControlsRoot, {
93
135
  className: "media-surface media-controls",
94
- children: [
136
+ children: /* @__PURE__ */ jsxs(TooltipProvider, { children: [
95
137
  /* @__PURE__ */ jsxs(TooltipRoot, {
96
138
  side: "top",
97
- children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(PlayButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
98
- ...props,
99
- className: "media-button--icon media-button--play",
139
+ children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(PlayButton, {
140
+ className: "media-button--play",
141
+ render: /* @__PURE__ */ jsx(Button, {}),
100
142
  children: [
101
143
  /* @__PURE__ */ jsx(RestartIcon, { className: "media-icon media-icon--restart" }),
102
144
  /* @__PURE__ */ jsx(PlayIcon, { className: "media-icon media-icon--play" }),
103
145
  /* @__PURE__ */ jsx(PauseIcon, { className: "media-icon media-icon--pause" })
104
146
  ]
105
- }) }) }), /* @__PURE__ */ jsx(TooltipPopup, {
147
+ }) }), /* @__PURE__ */ jsx(TooltipPopup, {
106
148
  className: "media-surface media-tooltip",
107
149
  children: /* @__PURE__ */ jsx(PlayLabel, {})
108
150
  })]
@@ -111,16 +153,14 @@ function VideoSkin(props) {
111
153
  side: "top",
112
154
  children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(SeekButton, {
113
155
  seconds: -SEEK_TIME,
114
- render: (props) => /* @__PURE__ */ jsx(Button, {
115
- ...props,
116
- className: "media-button--icon media-button--seek",
117
- children: /* @__PURE__ */ jsxs("span", {
118
- className: "media-icon__container",
119
- children: [/* @__PURE__ */ jsx(SeekIcon, { className: "media-icon media-icon--seek media-icon--flipped" }), /* @__PURE__ */ jsx("span", {
120
- className: "media-icon__label",
121
- children: SEEK_TIME
122
- })]
123
- })
156
+ className: "media-button--seek",
157
+ render: /* @__PURE__ */ jsx(Button, {}),
158
+ children: /* @__PURE__ */ jsxs("span", {
159
+ className: "media-icon__container",
160
+ children: [/* @__PURE__ */ jsx(SeekIcon, { className: "media-icon media-icon--seek media-icon--flipped" }), /* @__PURE__ */ jsx("span", {
161
+ className: "media-icon__label",
162
+ children: SEEK_TIME
163
+ })]
124
164
  })
125
165
  }) }), /* @__PURE__ */ jsxs(TooltipPopup, {
126
166
  className: "media-surface media-tooltip",
@@ -135,16 +175,14 @@ function VideoSkin(props) {
135
175
  side: "top",
136
176
  children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(SeekButton, {
137
177
  seconds: SEEK_TIME,
138
- render: (props) => /* @__PURE__ */ jsx(Button, {
139
- ...props,
140
- className: "media-button--icon media-button--seek",
141
- children: /* @__PURE__ */ jsxs("span", {
142
- className: "media-icon__container",
143
- children: [/* @__PURE__ */ jsx(SeekIcon, { className: "media-icon media-icon--seek" }), /* @__PURE__ */ jsx("span", {
144
- className: "media-icon__label",
145
- children: SEEK_TIME
146
- })]
147
- })
178
+ className: "media-button--seek",
179
+ render: /* @__PURE__ */ jsx(Button, {}),
180
+ children: /* @__PURE__ */ jsxs("span", {
181
+ className: "media-icon__container",
182
+ children: [/* @__PURE__ */ jsx(SeekIcon, { className: "media-icon media-icon--seek" }), /* @__PURE__ */ jsx("span", {
183
+ className: "media-icon__label",
184
+ children: SEEK_TIME
185
+ })]
148
186
  })
149
187
  }) }), /* @__PURE__ */ jsxs(TooltipPopup, {
150
188
  className: "media-surface media-tooltip",
@@ -164,10 +202,24 @@ function VideoSkin(props) {
164
202
  }),
165
203
  /* @__PURE__ */ jsxs(TimeSliderRoot, {
166
204
  className: "media-slider",
167
- children: [/* @__PURE__ */ jsxs(SliderTrack, {
168
- className: "media-slider__track",
169
- children: [/* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" }), /* @__PURE__ */ jsx(SliderBuffer, { className: "media-slider__buffer" })]
170
- }), /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb" })]
205
+ children: [
206
+ /* @__PURE__ */ jsxs(SliderTrack, {
207
+ className: "media-slider__track",
208
+ children: [/* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" }), /* @__PURE__ */ jsx(SliderBuffer, { className: "media-slider__buffer" })]
209
+ }),
210
+ /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb" }),
211
+ /* @__PURE__ */ jsxs("div", {
212
+ className: "media-surface media-preview media-slider__preview",
213
+ children: [
214
+ /* @__PURE__ */ jsx(SliderThumbnail, { className: "media-preview__thumbnail" }),
215
+ /* @__PURE__ */ jsx(SliderValue, {
216
+ type: "pointer",
217
+ className: "media-preview__timestamp"
218
+ }),
219
+ /* @__PURE__ */ jsx(SpinnerIcon, { className: "media-preview__spinner media-icon" })
220
+ ]
221
+ })
222
+ ]
171
223
  }),
172
224
  /* @__PURE__ */ jsx(Value, {
173
225
  type: "duration",
@@ -177,74 +229,49 @@ function VideoSkin(props) {
177
229
  }),
178
230
  /* @__PURE__ */ jsxs(TooltipRoot, {
179
231
  side: "top",
180
- children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(PlaybackRateButton, { render: (props) => /* @__PURE__ */ jsx(Button, {
181
- ...props,
182
- className: "media-button--icon media-button--playback-rate"
183
- }) }) }), /* @__PURE__ */ jsx(TooltipPopup, {
232
+ children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(PlaybackRateButton, {
233
+ className: "media-button--playback-rate",
234
+ render: /* @__PURE__ */ jsx(Button, {})
235
+ }) }), /* @__PURE__ */ jsx(TooltipPopup, {
184
236
  className: "media-surface media-tooltip",
185
237
  children: "Toggle playback rate"
186
238
  })]
187
239
  }),
188
- /* @__PURE__ */ jsxs(PopoverRoot, {
189
- openOnHover: true,
190
- delay: 200,
191
- closeDelay: 100,
192
- side: "top",
193
- children: [/* @__PURE__ */ jsx(PopoverTrigger, { render: /* @__PURE__ */ jsx(MuteButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
194
- ...props,
195
- className: "media-button--icon media-button--mute",
196
- children: [
197
- /* @__PURE__ */ jsx(VolumeOffIcon, { className: "media-icon media-icon--volume-off" }),
198
- /* @__PURE__ */ jsx(VolumeLowIcon, { className: "media-icon media-icon--volume-low" }),
199
- /* @__PURE__ */ jsx(VolumeHighIcon, { className: "media-icon media-icon--volume-high" })
200
- ]
201
- }) }) }), /* @__PURE__ */ jsx(PopoverPopup, {
202
- className: "media-surface media-popover media-popover--volume",
203
- children: /* @__PURE__ */ jsxs(VolumeSliderRoot, {
204
- className: "media-slider",
205
- orientation: "vertical",
206
- thumbAlignment: "edge",
207
- children: [/* @__PURE__ */ jsx(SliderTrack, {
208
- className: "media-slider__track",
209
- children: /* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" })
210
- }), /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb media-slider__thumb--persistent" })]
211
- })
212
- })]
213
- }),
240
+ /* @__PURE__ */ jsx(VolumePopover, {}),
214
241
  /* @__PURE__ */ jsxs(TooltipRoot, {
215
242
  side: "top",
216
- children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(CaptionsButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
217
- ...props,
218
- className: "media-button--icon media-button--captions",
243
+ children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(CaptionsButton, {
244
+ className: "media-button--captions",
245
+ render: /* @__PURE__ */ jsx(Button, {}),
219
246
  children: [/* @__PURE__ */ jsx(CaptionsOffIcon, { className: "media-icon media-icon--captions-off" }), /* @__PURE__ */ jsx(CaptionsOnIcon, { className: "media-icon media-icon--captions-on" })]
220
- }) }) }), /* @__PURE__ */ jsx(TooltipPopup, {
247
+ }) }), /* @__PURE__ */ jsx(TooltipPopup, {
221
248
  className: "media-surface media-tooltip",
222
249
  children: /* @__PURE__ */ jsx(CaptionsLabel, {})
223
250
  })]
224
251
  }),
225
252
  /* @__PURE__ */ jsxs(TooltipRoot, {
226
253
  side: "top",
227
- children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(PiPButton, { render: (props) => /* @__PURE__ */ jsx(Button, {
228
- ...props,
229
- className: "media-button--icon",
230
- children: /* @__PURE__ */ jsx(PipIcon, { className: "media-icon" })
231
- }) }) }), /* @__PURE__ */ jsx(TooltipPopup, {
254
+ children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(PiPButton, {
255
+ className: "media-button--pip",
256
+ render: /* @__PURE__ */ jsx(Button, {}),
257
+ children: [/* @__PURE__ */ jsx(PipEnterIcon, { className: "media-icon media-icon--pip-enter" }), /* @__PURE__ */ jsx(PipExitIcon, { className: "media-icon media-icon--pip-exit" })]
258
+ }) }), /* @__PURE__ */ jsx(TooltipPopup, {
232
259
  className: "media-surface media-tooltip",
233
260
  children: /* @__PURE__ */ jsx(PiPLabel, {})
234
261
  })]
235
262
  }),
236
263
  /* @__PURE__ */ jsxs(TooltipRoot, {
237
264
  side: "top",
238
- children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(FullscreenButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
239
- ...props,
240
- className: "media-button--icon media-button--fullscreen",
265
+ children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(FullscreenButton, {
266
+ className: "media-button--fullscreen",
267
+ render: /* @__PURE__ */ jsx(Button, {}),
241
268
  children: [/* @__PURE__ */ jsx(FullscreenEnterIcon, { className: "media-icon media-icon--fullscreen-enter" }), /* @__PURE__ */ jsx(FullscreenExitIcon, { className: "media-icon media-icon--fullscreen-exit" })]
242
- }) }) }), /* @__PURE__ */ jsx(TooltipPopup, {
269
+ }) }), /* @__PURE__ */ jsx(TooltipPopup, {
243
270
  className: "media-surface media-tooltip",
244
271
  children: /* @__PURE__ */ jsx(FullscreenLabel, {})
245
272
  })]
246
273
  })
247
- ]
274
+ ] })
248
275
  }),
249
276
  /* @__PURE__ */ jsx("div", { className: "media-overlay" })
250
277
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"skin.js","names":["Controls.Root","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","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, 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 { 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 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\nconst errorClasses = {\n root: 'media-error',\n dialog: 'media-error__dialog media-surface',\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 VideoSkin(props: VideoSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn('media-default-skin media-default-skin--video', className)} {...rest}>\n {children}\n\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 classes={errorClasses} />\n\n <Controls.Root className=\"media-surface media-controls\">\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-surface 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-surface 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-surface media-tooltip\">Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\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 <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-surface 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-surface 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-surface 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-surface 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-surface media-tooltip\">\n <FullscreenLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\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":["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","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Slider.Thumbnail","TimeSlider.Value"],"sources":["../../../../src/presets/video/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';\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 { ErrorDialog } from '../error-dialog';\nimport type { BaseVideoSkinProps } from '../types';\n\nconst SEEK_TIME = 10;\n\nconst ERROR_CLASSNAMES = {\n root: 'media-error',\n dialog: 'media-error__dialog media-surface',\n content: 'media-error__content',\n title: 'media-error__title',\n description: 'media-error__description',\n actions: 'media-error__actions',\n close: 'media-button media-button--primary',\n};\n\nexport type VideoSkinProps = BaseVideoSkinProps;\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn('media-button media-button--subtle media-button--icon', className)}\n {...props}\n />\n );\n});\n\nfunction PlayLabel(): string {\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(): string {\n const active = usePlayer((s) => Boolean(s.subtitlesShowing));\n return active ? 'Disable captions' : 'Enable captions';\n}\n\nfunction PiPLabel(): string {\n const pip = usePlayer((s) => Boolean(s.pip));\n return pip ? 'Exit picture-in-picture' : 'Enter picture-in-picture';\n}\n\nfunction FullscreenLabel(): string {\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 className=\"media-button--mute\" render={<Button />}>\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 </MuteButton>\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-surface 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 VideoSkin(props: VideoSkinProps): ReactNode {\n const { children, className, poster, ...rest } = props;\n\n return (\n <Container className={cn('media-default-skin media-default-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 <div className=\"media-surface\">\n <SpinnerIcon className=\"media-icon\" />\n </div>\n </div>\n )}\n />\n\n <ErrorDialog classNames={ERROR_CLASSNAMES} />\n\n <Controls.Root className=\"media-surface media-controls\">\n <Tooltip.Provider>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton className=\"media-button--play\" render={<Button />}>\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 </PlayButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <PlayLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton seconds={-SEEK_TIME} className=\"media-button--seek\" render={<Button />}>\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 </SeekButton>\n }\n />\n <Tooltip.Popup className=\"media-surface 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 seconds={SEEK_TIME} className=\"media-button--seek\" render={<Button />}>\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 </SeekButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\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\n <div className=\"media-surface media-preview media-slider__preview\">\n <Slider.Thumbnail className=\"media-preview__thumbnail\" />\n <TimeSlider.Value type=\"pointer\" className=\"media-preview__timestamp\" />\n <SpinnerIcon className=\"media-preview__spinner media-icon\" />\n </div>\n </TimeSlider.Root>\n <Time.Value type=\"duration\" className=\"media-time__value\" />\n </Time.Group>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={<PlaybackRateButton className=\"media-button--playback-rate\" render={<Button />} />}\n />\n <Tooltip.Popup className=\"media-surface 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 className=\"media-button--captions\" render={<Button />}>\n <CaptionsOffIcon className=\"media-icon media-icon--captions-off\" />\n <CaptionsOnIcon className=\"media-icon media-icon--captions-on\" />\n </CaptionsButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <CaptionsLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PiPButton className=\"media-button--pip\" render={<Button />}>\n <PipEnterIcon className=\"media-icon media-icon--pip-enter\" />\n <PipExitIcon className=\"media-icon media-icon--pip-exit\" />\n </PiPButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <PiPLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <FullscreenButton className=\"media-button--fullscreen\" render={<Button />}>\n <FullscreenEnterIcon className=\"media-icon media-icon--fullscreen-enter\" />\n <FullscreenExitIcon className=\"media-icon media-icon--fullscreen-exit\" />\n </FullscreenButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <FullscreenLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className=\"media-overlay\" />\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":";;;;iBA6IgB,iBAAA,CAAkB,KAAA,EAAO,cAAA,GAAiB,SAAA"}
1
+ {"version":3,"file":"skin.tailwind.d.ts","names":[],"sources":["../../../../src/presets/video/skin.tailwind.tsx"],"mappings":";;;;iBA4KgB,iBAAA,CAAkB,KAAA,EAAO,cAAA,GAAiB,SAAA"}