@videojs/react 10.0.0-beta.21 → 10.0.0-beta.23

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 (295) hide show
  1. package/dist/default/icons/dist/react/default/cast-enter.js +32 -0
  2. package/dist/default/icons/dist/react/default/cast-enter.js.map +1 -0
  3. package/dist/default/icons/dist/react/default/cast-exit.js +36 -0
  4. package/dist/default/icons/dist/react/default/cast-exit.js.map +1 -0
  5. package/dist/default/icons/dist/react/minimal/cast-enter.js +28 -0
  6. package/dist/default/icons/dist/react/minimal/cast-enter.js.map +1 -0
  7. package/dist/default/icons/dist/react/minimal/cast-exit.js +32 -0
  8. package/dist/default/icons/dist/react/minimal/cast-exit.js.map +1 -0
  9. package/dist/default/index.js +5 -5
  10. package/dist/default/media/dash-video/index.js +6 -6
  11. package/dist/default/media/dash-video/index.js.map +1 -1
  12. package/dist/default/media/hls-video/index.js +6 -6
  13. package/dist/default/media/hls-video/index.js.map +1 -1
  14. package/dist/default/media/mux-audio/index.js +9 -8
  15. package/dist/default/media/mux-audio/index.js.map +1 -1
  16. package/dist/default/media/mux-video/index.js +6 -6
  17. package/dist/default/media/mux-video/index.js.map +1 -1
  18. package/dist/default/media/native-hls-video/index.js +6 -6
  19. package/dist/default/media/native-hls-video/index.js.map +1 -1
  20. package/dist/default/media/simple-hls-video/index.js +6 -5
  21. package/dist/default/media/simple-hls-video/index.js.map +1 -1
  22. package/dist/default/presets/audio/minimal-skin.css +2 -1
  23. package/dist/default/presets/audio/skin.css +2 -1
  24. package/dist/default/presets/audio/skin.js +15 -15
  25. package/dist/default/presets/audio/skin.js.map +1 -1
  26. package/dist/default/presets/live-audio/index.js +7 -0
  27. package/dist/default/presets/live-audio/minimal-skin.css +736 -0
  28. package/dist/default/presets/live-audio/minimal-skin.js +136 -0
  29. package/dist/default/presets/live-audio/minimal-skin.js.map +1 -0
  30. package/dist/default/presets/live-audio/minimal-skin.tailwind.js +166 -0
  31. package/dist/default/presets/live-audio/minimal-skin.tailwind.js.map +1 -0
  32. package/dist/default/presets/live-audio/skin.css +752 -0
  33. package/dist/default/presets/live-audio/skin.js +158 -0
  34. package/dist/default/presets/live-audio/skin.js.map +1 -0
  35. package/dist/default/presets/live-audio/skin.tailwind.js +165 -0
  36. package/dist/default/presets/live-audio/skin.tailwind.js.map +1 -0
  37. package/dist/default/presets/live-video/index.js +7 -0
  38. package/dist/default/presets/live-video/minimal-skin.css +1127 -0
  39. package/dist/default/presets/live-video/minimal-skin.js +198 -0
  40. package/dist/default/presets/live-video/minimal-skin.js.map +1 -0
  41. package/dist/default/presets/live-video/minimal-skin.tailwind.js +231 -0
  42. package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -0
  43. package/dist/default/presets/live-video/skin.css +1117 -0
  44. package/dist/default/presets/live-video/skin.js +252 -0
  45. package/dist/default/presets/live-video/skin.js.map +1 -0
  46. package/dist/default/presets/live-video/skin.tailwind.js +233 -0
  47. package/dist/default/presets/live-video/skin.tailwind.js.map +1 -0
  48. package/dist/default/presets/video/minimal-skin.css +8 -1
  49. package/dist/default/presets/video/minimal-skin.js +11 -0
  50. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  51. package/dist/default/presets/video/minimal-skin.tailwind.js +11 -0
  52. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  53. package/dist/default/presets/video/skin.css +8 -1
  54. package/dist/default/presets/video/skin.js +35 -24
  55. package/dist/default/presets/video/skin.js.map +1 -1
  56. package/dist/default/presets/video/skin.tailwind.js +11 -0
  57. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  58. package/dist/default/skins/dist/default/default/tailwind/components/button.js +1 -1
  59. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  60. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +1 -1
  61. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  62. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +5 -0
  63. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  64. package/dist/default/ui/cast-button/cast-button.js +17 -0
  65. package/dist/default/ui/cast-button/cast-button.js.map +1 -0
  66. package/dist/default/ui/cast-button/index.js +2 -0
  67. package/dist/default/ui/gesture/{media-gesture.js → gesture.js} +6 -4
  68. package/dist/default/ui/gesture/gesture.js.map +1 -0
  69. package/dist/default/ui/hotkey/{media-hotkey.js → hotkey.js} +6 -4
  70. package/dist/default/ui/hotkey/hotkey.js.map +1 -0
  71. package/dist/default/utils/use-attach-media.js +14 -0
  72. package/dist/default/utils/use-attach-media.js.map +1 -0
  73. package/dist/default/utils/use-sync-props.js +14 -0
  74. package/dist/default/utils/use-sync-props.js.map +1 -0
  75. package/dist/dev/icons/dist/react/default/cast-enter.js +32 -0
  76. package/dist/dev/icons/dist/react/default/cast-enter.js.map +1 -0
  77. package/dist/dev/icons/dist/react/default/cast-exit.js +36 -0
  78. package/dist/dev/icons/dist/react/default/cast-exit.js.map +1 -0
  79. package/dist/dev/icons/dist/react/minimal/cast-enter.js +28 -0
  80. package/dist/dev/icons/dist/react/minimal/cast-enter.js.map +1 -0
  81. package/dist/dev/icons/dist/react/minimal/cast-exit.js +32 -0
  82. package/dist/dev/icons/dist/react/minimal/cast-exit.js.map +1 -0
  83. package/dist/dev/index.d.ts +5 -5
  84. package/dist/dev/index.js +5 -5
  85. package/dist/dev/media/audio.d.ts +2 -2
  86. package/dist/dev/media/audio.d.ts.map +1 -1
  87. package/dist/dev/media/background-video/index.d.ts +2 -2
  88. package/dist/dev/media/background-video/index.d.ts.map +1 -1
  89. package/dist/dev/media/dash-video/index.d.ts +7 -8
  90. package/dist/dev/media/dash-video/index.d.ts.map +1 -1
  91. package/dist/dev/media/dash-video/index.js +6 -6
  92. package/dist/dev/media/dash-video/index.js.map +1 -1
  93. package/dist/dev/media/hls-video/index.d.ts +7 -8
  94. package/dist/dev/media/hls-video/index.d.ts.map +1 -1
  95. package/dist/dev/media/hls-video/index.js +6 -6
  96. package/dist/dev/media/hls-video/index.js.map +1 -1
  97. package/dist/dev/media/mux-audio/index.d.ts +11 -9
  98. package/dist/dev/media/mux-audio/index.d.ts.map +1 -1
  99. package/dist/dev/media/mux-audio/index.js +9 -8
  100. package/dist/dev/media/mux-audio/index.js.map +1 -1
  101. package/dist/dev/media/mux-video/index.d.ts +7 -8
  102. package/dist/dev/media/mux-video/index.d.ts.map +1 -1
  103. package/dist/dev/media/mux-video/index.js +6 -6
  104. package/dist/dev/media/mux-video/index.js.map +1 -1
  105. package/dist/dev/media/native-hls-video/index.d.ts +7 -8
  106. package/dist/dev/media/native-hls-video/index.d.ts.map +1 -1
  107. package/dist/dev/media/native-hls-video/index.js +6 -6
  108. package/dist/dev/media/native-hls-video/index.js.map +1 -1
  109. package/dist/dev/media/simple-hls-video/index.d.ts +7 -6
  110. package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -1
  111. package/dist/dev/media/simple-hls-video/index.js +6 -5
  112. package/dist/dev/media/simple-hls-video/index.js.map +1 -1
  113. package/dist/dev/media/video.d.ts +2 -2
  114. package/dist/dev/media/video.d.ts.map +1 -1
  115. package/dist/dev/player/context.d.ts +2 -2
  116. package/dist/dev/player/context.d.ts.map +1 -1
  117. package/dist/dev/presets/audio/minimal-skin.css +2 -1
  118. package/dist/dev/presets/audio/skin.css +2 -1
  119. package/dist/dev/presets/audio/skin.js +15 -15
  120. package/dist/dev/presets/audio/skin.js.map +1 -1
  121. package/dist/dev/presets/background/skin.d.ts +2 -2
  122. package/dist/dev/presets/background/skin.d.ts.map +1 -1
  123. package/dist/dev/presets/live-audio/index.d.ts +7 -0
  124. package/dist/dev/presets/live-audio/index.js +7 -0
  125. package/dist/dev/presets/live-audio/minimal-skin.css +736 -0
  126. package/dist/dev/presets/live-audio/minimal-skin.d.ts +16 -0
  127. package/dist/dev/presets/live-audio/minimal-skin.d.ts.map +1 -0
  128. package/dist/dev/presets/live-audio/minimal-skin.js +136 -0
  129. package/dist/dev/presets/live-audio/minimal-skin.js.map +1 -0
  130. package/dist/dev/presets/live-audio/minimal-skin.tailwind.d.ts +8 -0
  131. package/dist/dev/presets/live-audio/minimal-skin.tailwind.d.ts.map +1 -0
  132. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js +166 -0
  133. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js.map +1 -0
  134. package/dist/dev/presets/live-audio/skin.css +752 -0
  135. package/dist/dev/presets/live-audio/skin.d.ts +15 -0
  136. package/dist/dev/presets/live-audio/skin.d.ts.map +1 -0
  137. package/dist/dev/presets/live-audio/skin.js +158 -0
  138. package/dist/dev/presets/live-audio/skin.js.map +1 -0
  139. package/dist/dev/presets/live-audio/skin.tailwind.d.ts +8 -0
  140. package/dist/dev/presets/live-audio/skin.tailwind.d.ts.map +1 -0
  141. package/dist/dev/presets/live-audio/skin.tailwind.js +165 -0
  142. package/dist/dev/presets/live-audio/skin.tailwind.js.map +1 -0
  143. package/dist/dev/presets/live-video/index.d.ts +7 -0
  144. package/dist/dev/presets/live-video/index.js +7 -0
  145. package/dist/dev/presets/live-video/minimal-skin.css +1127 -0
  146. package/dist/dev/presets/live-video/minimal-skin.d.ts +16 -0
  147. package/dist/dev/presets/live-video/minimal-skin.d.ts.map +1 -0
  148. package/dist/dev/presets/live-video/minimal-skin.js +198 -0
  149. package/dist/dev/presets/live-video/minimal-skin.js.map +1 -0
  150. package/dist/dev/presets/live-video/minimal-skin.tailwind.d.ts +8 -0
  151. package/dist/dev/presets/live-video/minimal-skin.tailwind.d.ts.map +1 -0
  152. package/dist/dev/presets/live-video/minimal-skin.tailwind.js +231 -0
  153. package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -0
  154. package/dist/dev/presets/live-video/skin.css +1117 -0
  155. package/dist/dev/presets/live-video/skin.d.ts +15 -0
  156. package/dist/dev/presets/live-video/skin.d.ts.map +1 -0
  157. package/dist/dev/presets/live-video/skin.js +252 -0
  158. package/dist/dev/presets/live-video/skin.js.map +1 -0
  159. package/dist/dev/presets/live-video/skin.tailwind.d.ts +8 -0
  160. package/dist/dev/presets/live-video/skin.tailwind.d.ts.map +1 -0
  161. package/dist/dev/presets/live-video/skin.tailwind.js +233 -0
  162. package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -0
  163. package/dist/dev/presets/video/minimal-skin.css +8 -1
  164. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  165. package/dist/dev/presets/video/minimal-skin.js +11 -0
  166. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  167. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  168. package/dist/dev/presets/video/minimal-skin.tailwind.js +11 -0
  169. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  170. package/dist/dev/presets/video/skin.css +8 -1
  171. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  172. package/dist/dev/presets/video/skin.js +35 -24
  173. package/dist/dev/presets/video/skin.js.map +1 -1
  174. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  175. package/dist/dev/presets/video/skin.tailwind.js +11 -0
  176. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  177. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +1 -1
  178. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  179. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +1 -1
  180. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  181. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +5 -0
  182. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  183. package/dist/dev/ui/alert-dialog/alert-dialog-close.d.ts +2 -2
  184. package/dist/dev/ui/alert-dialog/alert-dialog-close.d.ts.map +1 -1
  185. package/dist/dev/ui/alert-dialog/alert-dialog-description.d.ts +2 -2
  186. package/dist/dev/ui/alert-dialog/alert-dialog-description.d.ts.map +1 -1
  187. package/dist/dev/ui/alert-dialog/alert-dialog-popup.d.ts +2 -2
  188. package/dist/dev/ui/alert-dialog/alert-dialog-popup.d.ts.map +1 -1
  189. package/dist/dev/ui/alert-dialog/alert-dialog-title.d.ts +2 -2
  190. package/dist/dev/ui/alert-dialog/alert-dialog-title.d.ts.map +1 -1
  191. package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts +2 -2
  192. package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts.map +1 -1
  193. package/dist/dev/ui/captions-button/captions-button.d.ts +2 -2
  194. package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -1
  195. package/dist/dev/ui/cast-button/cast-button.d.ts +15 -0
  196. package/dist/dev/ui/cast-button/cast-button.d.ts.map +1 -0
  197. package/dist/dev/ui/cast-button/cast-button.js +17 -0
  198. package/dist/dev/ui/cast-button/cast-button.js.map +1 -0
  199. package/dist/dev/ui/cast-button/index.d.ts +2 -0
  200. package/dist/dev/ui/cast-button/index.js +2 -0
  201. package/dist/dev/ui/controls/controls-group.d.ts +2 -2
  202. package/dist/dev/ui/controls/controls-group.d.ts.map +1 -1
  203. package/dist/dev/ui/controls/controls-root.d.ts +2 -2
  204. package/dist/dev/ui/controls/controls-root.d.ts.map +1 -1
  205. package/dist/dev/ui/error-dialog/error-dialog-description.d.ts +2 -2
  206. package/dist/dev/ui/error-dialog/error-dialog-description.d.ts.map +1 -1
  207. package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts +2 -2
  208. package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts.map +1 -1
  209. package/dist/dev/ui/gesture/gesture.d.ts +30 -0
  210. package/dist/dev/ui/gesture/gesture.d.ts.map +1 -0
  211. package/dist/dev/ui/gesture/{media-gesture.js → gesture.js} +6 -4
  212. package/dist/dev/ui/gesture/gesture.js.map +1 -0
  213. package/dist/dev/ui/hotkey/hotkey.d.ts +28 -0
  214. package/dist/dev/ui/hotkey/hotkey.d.ts.map +1 -0
  215. package/dist/dev/ui/hotkey/{media-hotkey.js → hotkey.js} +6 -4
  216. package/dist/dev/ui/hotkey/hotkey.js.map +1 -0
  217. package/dist/dev/ui/mute-button/mute-button.d.ts +2 -2
  218. package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -1
  219. package/dist/dev/ui/pip-button/pip-button.d.ts +2 -2
  220. package/dist/dev/ui/pip-button/pip-button.d.ts.map +1 -1
  221. package/dist/dev/ui/play-button/play-button.d.ts +2 -2
  222. package/dist/dev/ui/play-button/play-button.d.ts.map +1 -1
  223. package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts +2 -2
  224. package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts.map +1 -1
  225. package/dist/dev/ui/popover/popover-arrow.d.ts +2 -2
  226. package/dist/dev/ui/popover/popover-arrow.d.ts.map +1 -1
  227. package/dist/dev/ui/popover/popover-popup.d.ts +2 -2
  228. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
  229. package/dist/dev/ui/popover/popover-trigger.d.ts +2 -2
  230. package/dist/dev/ui/popover/popover-trigger.d.ts.map +1 -1
  231. package/dist/dev/ui/poster/poster.d.ts +2 -2
  232. package/dist/dev/ui/poster/poster.d.ts.map +1 -1
  233. package/dist/dev/ui/seek-button/seek-button.d.ts +2 -2
  234. package/dist/dev/ui/seek-button/seek-button.d.ts.map +1 -1
  235. package/dist/dev/ui/slider/slider-buffer.d.ts +2 -2
  236. package/dist/dev/ui/slider/slider-buffer.d.ts.map +1 -1
  237. package/dist/dev/ui/slider/slider-fill.d.ts +2 -2
  238. package/dist/dev/ui/slider/slider-fill.d.ts.map +1 -1
  239. package/dist/dev/ui/slider/slider-preview.d.ts +2 -2
  240. package/dist/dev/ui/slider/slider-preview.d.ts.map +1 -1
  241. package/dist/dev/ui/slider/slider-root.d.ts +2 -2
  242. package/dist/dev/ui/slider/slider-root.d.ts.map +1 -1
  243. package/dist/dev/ui/slider/slider-thumb.d.ts +2 -2
  244. package/dist/dev/ui/slider/slider-thumb.d.ts.map +1 -1
  245. package/dist/dev/ui/slider/slider-thumbnail.d.ts +2 -2
  246. package/dist/dev/ui/slider/slider-thumbnail.d.ts.map +1 -1
  247. package/dist/dev/ui/slider/slider-track.d.ts +2 -2
  248. package/dist/dev/ui/slider/slider-track.d.ts.map +1 -1
  249. package/dist/dev/ui/slider/slider-value.d.ts +2 -2
  250. package/dist/dev/ui/slider/slider-value.d.ts.map +1 -1
  251. package/dist/dev/ui/thumbnail/thumbnail.d.ts +2 -2
  252. package/dist/dev/ui/thumbnail/thumbnail.d.ts.map +1 -1
  253. package/dist/dev/ui/time/time-group.d.ts +2 -2
  254. package/dist/dev/ui/time/time-group.d.ts.map +1 -1
  255. package/dist/dev/ui/time/time-separator.d.ts +2 -2
  256. package/dist/dev/ui/time/time-separator.d.ts.map +1 -1
  257. package/dist/dev/ui/time/time-value.d.ts +2 -2
  258. package/dist/dev/ui/time/time-value.d.ts.map +1 -1
  259. package/dist/dev/ui/time-slider/time-slider-root.d.ts +2 -2
  260. package/dist/dev/ui/time-slider/time-slider-root.d.ts.map +1 -1
  261. package/dist/dev/ui/tooltip/tooltip-arrow.d.ts +2 -2
  262. package/dist/dev/ui/tooltip/tooltip-arrow.d.ts.map +1 -1
  263. package/dist/dev/ui/tooltip/tooltip-popup.d.ts +2 -2
  264. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  265. package/dist/dev/ui/tooltip/tooltip-trigger.d.ts +2 -2
  266. package/dist/dev/ui/tooltip/tooltip-trigger.d.ts.map +1 -1
  267. package/dist/dev/ui/volume-slider/volume-slider-root.d.ts +2 -2
  268. package/dist/dev/ui/volume-slider/volume-slider-root.d.ts.map +1 -1
  269. package/dist/dev/utils/use-attach-media.d.ts +8 -0
  270. package/dist/dev/utils/use-attach-media.d.ts.map +1 -0
  271. package/dist/dev/utils/use-attach-media.js +14 -0
  272. package/dist/dev/utils/use-attach-media.js.map +1 -0
  273. package/dist/dev/utils/use-sync-props.js +14 -0
  274. package/dist/dev/utils/use-sync-props.js.map +1 -0
  275. package/package.json +30 -9
  276. package/dist/default/ui/gesture/media-gesture.js.map +0 -1
  277. package/dist/default/ui/hotkey/media-hotkey.js.map +0 -1
  278. package/dist/default/utils/attach-media-element.js +0 -12
  279. package/dist/default/utils/attach-media-element.js.map +0 -1
  280. package/dist/default/utils/media-props.js +0 -19
  281. package/dist/default/utils/media-props.js.map +0 -1
  282. package/dist/dev/ui/gesture/media-gesture.d.ts +0 -23
  283. package/dist/dev/ui/gesture/media-gesture.d.ts.map +0 -1
  284. package/dist/dev/ui/gesture/media-gesture.js.map +0 -1
  285. package/dist/dev/ui/hotkey/media-hotkey.d.ts +0 -21
  286. package/dist/dev/ui/hotkey/media-hotkey.d.ts.map +0 -1
  287. package/dist/dev/ui/hotkey/media-hotkey.js.map +0 -1
  288. package/dist/dev/utils/attach-media-element.d.ts +0 -9
  289. package/dist/dev/utils/attach-media-element.d.ts.map +0 -1
  290. package/dist/dev/utils/attach-media-element.js +0 -12
  291. package/dist/dev/utils/attach-media-element.js.map +0 -1
  292. package/dist/dev/utils/media-props.d.ts +0 -8
  293. package/dist/dev/utils/media-props.d.ts.map +0 -1
  294. package/dist/dev/utils/media-props.js +0 -19
  295. package/dist/dev/utils/media-props.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","ErrorDialog.Root","ErrorDialog.Popup","ErrorDialog.Title","ErrorDialog.Description","ErrorDialog.Close","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 { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { 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';\n\nconst SEEK_TIME = 10;\n\nexport type MinimalVideoSkinProps = 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 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-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.Root>\n <ErrorDialog.Popup className=\"media-error\">\n <div className=\"media-error__dialog\">\n <div className=\"media-error__content\">\n <ErrorDialog.Title className=\"media-error__title\">Something went wrong.</ErrorDialog.Title>\n <ErrorDialog.Description className=\"media-error__description\" />\n </div>\n <div className=\"media-error__actions\">\n <ErrorDialog.Close className=\"media-button media-button--primary\">OK</ErrorDialog.Close>\n </div>\n </div>\n </ErrorDialog.Popup>\n </ErrorDialog.Root>\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 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-tooltip\" />\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-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-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-group\">\n <Time.Value type=\"current\" className=\"media-time media-time--current\" />\n <Time.Separator className=\"media-time-separator\" />\n <Time.Value type=\"duration\" className=\"media-time media-time--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-time media-preview__time\" />\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={<PlaybackRateButton className=\"media-button--playback-rate\" render={<Button />} />}\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 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-tooltip\" />\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-tooltip\" />\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-tooltip\" />\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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"}
1
+ {"version":3,"file":"minimal-skin.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","ErrorDialog.Root","ErrorDialog.Popup","ErrorDialog.Title","ErrorDialog.Description","ErrorDialog.Close","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 CastEnterIcon,\n CastExitIcon,\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 { CastButton } from '@/ui/cast-button';\nimport { Controls } from '@/ui/controls';\nimport { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { 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';\n\nconst SEEK_TIME = 10;\n\nexport type MinimalVideoSkinProps = 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 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-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.Root>\n <ErrorDialog.Popup className=\"media-error\">\n <div className=\"media-error__dialog\">\n <div className=\"media-error__content\">\n <ErrorDialog.Title className=\"media-error__title\">Something went wrong.</ErrorDialog.Title>\n <ErrorDialog.Description className=\"media-error__description\" />\n </div>\n <div className=\"media-error__actions\">\n <ErrorDialog.Close className=\"media-button media-button--primary\">OK</ErrorDialog.Close>\n </div>\n </div>\n </ErrorDialog.Popup>\n </ErrorDialog.Root>\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 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-tooltip\" />\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-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-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-group\">\n <Time.Value type=\"current\" className=\"media-time media-time--current\" />\n <Time.Separator className=\"media-time-separator\" />\n <Time.Value type=\"duration\" className=\"media-time media-time--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-time media-preview__time\" />\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={<PlaybackRateButton className=\"media-button--playback-rate\" render={<Button />} />}\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 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-tooltip\" />\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <CastButton className=\"media-button--cast\" render={<Button />}>\n <CastEnterIcon className=\"media-icon media-icon--cast-enter\" />\n <CastExitIcon className=\"media-icon media-icon--cast-exit\" />\n </CastButton>\n }\n />\n <Tooltip.Popup className=\"media-tooltip\" />\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-tooltip\" />\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-tooltip\" />\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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"}
@@ -5,6 +5,7 @@ import { AlertDialogPopup } from "../../ui/alert-dialog/alert-dialog-popup.js";
5
5
  import { AlertDialogTitle } from "../../ui/alert-dialog/alert-dialog-title.js";
6
6
  import { BufferingIndicator } from "../../ui/buffering-indicator/buffering-indicator.js";
7
7
  import { CaptionsButton } from "../../ui/captions-button/captions-button.js";
8
+ import { CastButton } from "../../ui/cast-button/cast-button.js";
8
9
  import { ControlsRoot } from "../../ui/controls/controls-root.js";
9
10
  import { ErrorDialogDescription } from "../../ui/error-dialog/error-dialog-description.js";
10
11
  import { ErrorDialogRoot } from "../../ui/error-dialog/error-dialog-root.js";
@@ -35,6 +36,8 @@ import { TooltipTrigger } from "../../ui/tooltip/tooltip-trigger.js";
35
36
  import { VolumeSliderRoot } from "../../ui/volume-slider/volume-slider-root.js";
36
37
  import CaptionsOffIcon from "../../icons/dist/react/minimal/captions-off.js";
37
38
  import CaptionsOnIcon from "../../icons/dist/react/minimal/captions-on.js";
39
+ import CastEnterIcon from "../../icons/dist/react/minimal/cast-enter.js";
40
+ import CastExitIcon from "../../icons/dist/react/minimal/cast-exit.js";
38
41
  import FullscreenEnterIcon from "../../icons/dist/react/minimal/fullscreen-enter.js";
39
42
  import FullscreenExitIcon from "../../icons/dist/react/minimal/fullscreen-exit.js";
40
43
  import PauseIcon from "../../icons/dist/react/minimal/pause.js";
@@ -300,6 +303,14 @@ function MinimalVideoSkinTailwind(props) {
300
303
  children: [/* @__PURE__ */ jsx(CaptionsOffIcon, { className: cn(icon, iconState.captions.off) }), /* @__PURE__ */ jsx(CaptionsOnIcon, { className: cn(icon, iconState.captions.on) })]
301
304
  }) }), /* @__PURE__ */ jsx(TooltipPopup, { className: cn(popup.tooltip) })]
302
305
  }),
306
+ /* @__PURE__ */ jsxs(TooltipRoot, {
307
+ side: "top",
308
+ children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(CastButton, {
309
+ className: iconState.cast.button,
310
+ render: /* @__PURE__ */ jsx(Button, {}),
311
+ children: [/* @__PURE__ */ jsx(CastEnterIcon, { className: cn(icon, iconState.cast.enter) }), /* @__PURE__ */ jsx(CastExitIcon, { className: cn(icon, iconState.cast.exit) })]
312
+ }) }), /* @__PURE__ */ jsx(TooltipPopup, { className: cn(popup.tooltip) })]
313
+ }),
303
314
  /* @__PURE__ */ jsxs(TooltipRoot, {
304
315
  side: "top",
305
316
  children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(PiPButton, {
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.tailwind.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","ErrorDialog.Root","ErrorDialog.Popup","ErrorDialog.Title","ErrorDialog.Description","ErrorDialog.Close","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.tailwind.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 { playbackRate } from '@videojs/skins/default/tailwind/video.tailwind';\nimport {\n bufferingIndicator,\n button,\n buttonGroupEnd,\n buttonGroupStart,\n controls,\n error,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n overlay,\n popup,\n poster,\n preview,\n root,\n seek,\n slider,\n time,\n} from '@videojs/skins/minimal/tailwind/video.tailwind';\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 { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { 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 { MinimalVideoSkinProps } from './minimal-skin';\n\nconst SEEK_TIME = 10;\n\n/* --------------------------------------- Components ---------------------------------------- */\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return (\n <button ref={ref} type=\"button\" className={cn(button.base, button.subtle, button.icon, className)} {...props} />\n );\n});\n\nconst SliderRoot = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderRoot({ className, ...props }, ref) {\n return <div ref={ref} className={cn(slider.root, className)} {...props} />;\n});\n\nconst SliderTrack = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderTrack(\n { className, ...props },\n ref\n) {\n return <div ref={ref} className={cn(slider.track, className)} {...props} />;\n});\n\nconst SliderFill = forwardRef<HTMLDivElement, ComponentProps<'div'> & { type?: 'fill' | 'buffer' }>(function SliderFill(\n { type = 'fill', className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.fill.base, type === 'fill' ? slider.fill.fill : slider.fill.buffer, className)}\n {...props}\n />\n );\n});\n\nconst SliderBuffer = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderBuffer(props, ref) {\n return <SliderFill type=\"buffer\" ref={ref} {...props} />;\n});\n\nconst SliderThumb = forwardRef<HTMLDivElement, ComponentProps<'div'> & { persistent?: boolean }>(function SliderThumb(\n { persistent, className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.thumb.base, persistent ? undefined : slider.thumb.interactive, className)}\n {...props}\n />\n );\n});\n\nfunction VolumePopover(): ReactNode {\n const volumeUnsupported = usePlayer((s) => s.volumeAvailability === 'unsupported');\n\n const muteButton = (\n <MuteButton className={iconState.mute.button} render={<Button />}>\n <VolumeOffIcon className={cn(icon, iconState.mute.volumeOff)} />\n <VolumeLowIcon className={cn(icon, iconState.mute.volumeLow)} />\n <VolumeHighIcon className={cn(icon, iconState.mute.volumeHigh)} />\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={cn(popup.volume)}>\n <VolumeSlider.Root orientation=\"vertical\" thumbAlignment=\"edge\" render={<SliderRoot />}>\n <VolumeSlider.Track render={<SliderTrack />}>\n <VolumeSlider.Fill render={<SliderFill />} />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb render={(props) => <SliderThumb persistent {...props} />} />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n );\n}\n\n/* ------------------------------------------ Skin ------------------------------------------- */\n\nexport function MinimalVideoSkinTailwind(props: MinimalVideoSkinProps): ReactNode {\n const { children, className, poster: posterProp, ...rest } = props;\n\n return (\n <Container className={cn(root(false), className)} {...rest}>\n {children}\n\n {posterProp && (\n <Poster\n src={isString(posterProp) ? posterProp : undefined}\n render={isRenderProp(posterProp) ? posterProp : undefined}\n className={poster(false)}\n />\n )}\n\n <BufferingIndicator\n render={(props) => (\n <div {...props} className={bufferingIndicator}>\n <SpinnerIcon className={icon} />\n </div>\n )}\n />\n\n <ErrorDialog.Root>\n <ErrorDialog.Popup className={error.root}>\n <div className={error.dialog}>\n <div className={error.content}>\n <ErrorDialog.Title className={error.title}>Something went wrong.</ErrorDialog.Title>\n <ErrorDialog.Description className={error.description} />\n </div>\n <div className={error.actions}>\n <ErrorDialog.Close className={cn(button.base, button.primary)}>OK</ErrorDialog.Close>\n </div>\n </div>\n </ErrorDialog.Popup>\n </ErrorDialog.Root>\n\n <Controls.Root\n data-controls=\"\" // Used as a hook for Tailwind has-[] styles\n className={controls}\n >\n <Tooltip.Provider>\n <div className={buttonGroupStart}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton className={iconState.play.button} render={<Button />}>\n <RestartIcon className={cn(icon, iconState.play.restart)} />\n <PlayIcon className={cn(icon, iconState.play.play)} />\n <PauseIcon className={cn(icon, iconState.play.pause)} />\n </PlayButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}></Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton seconds={-SEEK_TIME} render={<Button />}>\n <span className={iconContainer}>\n <SeekIcon className={cn(icon, iconFlipped)} />\n <span className={cn(seek.label, seek.labelBackward)}>{SEEK_TIME}</span>\n </span>\n </SeekButton>\n }\n />\n <Tooltip.Popup className={cn(popup.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} render={<Button />}>\n <span className={iconContainer}>\n <SeekIcon className={icon} />\n <span className={cn(seek.label, seek.labelForward)}>{SEEK_TIME}</span>\n </span>\n </SeekButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n </div>\n\n <div className={time.controls}>\n <Time.Group className={time.group}>\n <Time.Value type=\"current\" className={time.current} />\n <Time.Separator className={time.separator} />\n <Time.Value type=\"duration\" className={time.duration} />\n </Time.Group>\n\n <TimeSlider.Root render={<SliderRoot />}>\n <TimeSlider.Track render={<SliderTrack />}>\n <TimeSlider.Fill render={<SliderFill />} />\n <TimeSlider.Buffer render={<SliderBuffer />} />\n </TimeSlider.Track>\n <TimeSlider.Thumb render={<SliderThumb />} />\n <div className={preview.root}>\n <div className={preview.thumbnailWrapper}>\n <Slider.Thumbnail className={preview.thumbnail} />\n </div>\n <TimeSlider.Value type=\"pointer\" className={preview.time} />\n <SpinnerIcon className={cn(icon, preview.spinner)} />\n </div>\n </TimeSlider.Root>\n </div>\n\n <div className={buttonGroupEnd}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger render={<PlaybackRateButton className={playbackRate.button} render={<Button />} />} />\n <Tooltip.Popup className={cn(popup.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={iconState.captions.button} render={<Button />}>\n <CaptionsOffIcon className={cn(icon, iconState.captions.off)} />\n <CaptionsOnIcon className={cn(icon, iconState.captions.on)} />\n </CaptionsButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}></Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PiPButton className={iconState.pip.button} render={<Button />}>\n <PipEnterIcon className={cn(icon, iconState.pip.off)} />\n <PipExitIcon className={cn(icon, iconState.pip.on)} />\n </PiPButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}></Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <FullscreenButton className={iconState.fullscreen.button} render={<Button />}>\n <FullscreenEnterIcon className={cn(icon, iconState.fullscreen.enter)} />\n <FullscreenExitIcon className={cn(icon, iconState.fullscreen.exit)} />\n </FullscreenButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}></Tooltip.Popup>\n </Tooltip.Root>\n </div>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className={overlay} />\n </Container>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DA,MAAM,YAAY;AAIlB,MAAM,SAAS,WAAwD,SAAS,OAAO,EAAE,WAAW,GAAG,SAAS,KAAK;AACnH,QACE,oBAAC,UAAD;EAAa;EAAK,MAAK;EAAS,WAAW,GAAG,OAAO,MAAM,OAAO,QAAQ,OAAO,MAAM,UAAU;EAAE,GAAI;EAAS,CAAA;EAElH;AAEF,MAAM,aAAa,WAAkD,SAAS,WAAW,EAAE,WAAW,GAAG,SAAS,KAAK;AACrH,QAAO,oBAAC,OAAD;EAAU;EAAK,WAAW,GAAG,OAAO,MAAM,UAAU;EAAE,GAAI;EAAS,CAAA;EAC1E;AAEF,MAAM,cAAc,WAAkD,SAAS,YAC7E,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAAC,OAAD;EAAU;EAAK,WAAW,GAAG,OAAO,OAAO,UAAU;EAAE,GAAI;EAAS,CAAA;EAC3E;AAEF,MAAM,aAAa,WAAiF,SAAS,WAC3G,EAAE,OAAO,QAAQ,WAAW,GAAG,SAC/B,KACA;AACA,QACE,oBAAC,OAAD;EACO;EACL,WAAW,GAAG,OAAO,KAAK,MAAM,SAAS,SAAS,OAAO,KAAK,OAAO,OAAO,KAAK,QAAQ,UAAU;EACnG,GAAI;EACJ,CAAA;EAEJ;AAEF,MAAM,eAAe,WAAkD,SAAS,aAAa,OAAO,KAAK;AACvG,QAAO,oBAAC,YAAD;EAAY,MAAK;EAAc;EAAK,GAAI;EAAS,CAAA;EACxD;AAEF,MAAM,cAAc,WAA6E,SAAS,YACxG,EAAE,YAAY,WAAW,GAAG,SAC5B,KACA;AACA,QACE,oBAAC,OAAD;EACO;EACL,WAAW,GAAG,OAAO,MAAM,MAAM,aAAa,KAAA,IAAY,OAAO,MAAM,aAAa,UAAU;EAC9F,GAAI;EACJ,CAAA;EAEJ;AAEF,SAAS,gBAA2B;CAClC,MAAM,oBAAoB,WAAW,MAAM,EAAE,uBAAuB,cAAc;CAElF,MAAM,aACJ,qBAAC,YAAD;EAAY,WAAW,UAAU,KAAK;EAAQ,QAAQ,oBAAC,QAAD,EAAU,CAAA;YAAhE;GACE,oBAAC,eAAD,EAAe,WAAW,GAAG,MAAM,UAAU,KAAK,UAAU,EAAI,CAAA;GAChE,oBAAC,eAAD,EAAe,WAAW,GAAG,MAAM,UAAU,KAAK,UAAU,EAAI,CAAA;GAChE,oBAAC,gBAAD,EAAgB,WAAW,GAAG,MAAM,UAAU,KAAK,WAAW,EAAI,CAAA;GACvD;;AAGf,KAAI,kBAAmB,QAAO;AAE9B,QACE,qBAACA,aAAD;EAAc,aAAA;EAAY,OAAO;EAAK,YAAY;EAAK,MAAK;YAA5D,CACE,oBAACC,gBAAD,EAAiB,QAAQ,YAAc,CAAA,EACvC,oBAACC,cAAD;GAAe,WAAW,GAAG,MAAM,OAAO;aACxC,qBAACC,kBAAD;IAAmB,aAAY;IAAW,gBAAe;IAAO,QAAQ,oBAAC,YAAD,EAAc,CAAA;cAAtF,CACE,oBAACC,eAAD;KAAoB,QAAQ,oBAAC,aAAD,EAAe,CAAA;eACzC,oBAACC,cAAD,EAAmB,QAAQ,oBAAC,YAAD,EAAc,CAAA,EAAI,CAAA;KAC1B,CAAA,EACrB,oBAACC,eAAD,EAAoB,SAAS,UAAU,oBAAC,aAAD;KAAa,YAAA;KAAW,GAAI;KAAS,CAAA,EAAI,CAAA,CAC9D;;GACN,CAAA,CACH;;;AAMnB,SAAgB,yBAAyB,OAAyC;CAChF,MAAM,EAAE,UAAU,WAAW,QAAQ,YAAY,GAAG,SAAS;AAE7D,QACE,qBAAC,WAAD;EAAW,WAAW,GAAG,KAAK,MAAM,EAAE,UAAU;EAAE,GAAI;YAAtD;GACG;GAEA,cACC,oBAAC,QAAD;IACE,KAAK,SAAS,WAAW,GAAG,aAAa,KAAA;IACzC,QAAQ,aAAa,WAAW,GAAG,aAAa,KAAA;IAChD,WAAW,OAAO,MAAM;IACxB,CAAA;GAGJ,oBAAC,oBAAD,EACE,SAAS,UACP,oBAAC,OAAD;IAAK,GAAI;IAAO,WAAW;cACzB,oBAAC,aAAD,EAAa,WAAW,MAAQ,CAAA;IAC5B,CAAA,EAER,CAAA;GAEF,oBAACC,iBAAD,EAAA,UACE,oBAACC,kBAAD;IAAmB,WAAW,MAAM;cAClC,qBAAC,OAAD;KAAK,WAAW,MAAM;eAAtB,CACE,qBAAC,OAAD;MAAK,WAAW,MAAM;gBAAtB,CACE,oBAACC,kBAAD;OAAmB,WAAW,MAAM;iBAAO;OAAyC,CAAA,EACpF,oBAACC,wBAAD,EAAyB,WAAW,MAAM,aAAe,CAAA,CACrD;SACN,oBAAC,OAAD;MAAK,WAAW,MAAM;gBACpB,oBAACC,kBAAD;OAAmB,WAAW,GAAG,OAAO,MAAM,OAAO,QAAQ;iBAAE;OAAsB,CAAA;MACjF,CAAA,CACF;;IACY,CAAA,EACH,CAAA;GAEnB,oBAACC,cAAD;IACE,iBAAc;IACd,WAAW;cAEX,qBAACC,iBAAD,EAAA,UAAA;KACE,qBAAC,OAAD;MAAK,WAAW;gBAAhB;OACE,qBAACC,aAAD;QAAc,MAAK;kBAAnB,CACE,oBAACC,gBAAD,EACE,QACE,qBAAC,YAAD;SAAY,WAAW,UAAU,KAAK;SAAQ,QAAQ,oBAAC,QAAD,EAAU,CAAA;mBAAhE;UACE,oBAAC,aAAD,EAAa,WAAW,GAAG,MAAM,UAAU,KAAK,QAAQ,EAAI,CAAA;UAC5D,oBAAC,UAAD,EAAU,WAAW,GAAG,MAAM,UAAU,KAAK,KAAK,EAAI,CAAA;UACtD,oBAAC,WAAD,EAAW,WAAW,GAAG,MAAM,UAAU,KAAK,MAAM,EAAI,CAAA;UAC7C;YAEf,CAAA,EACF,oBAACC,cAAD,EAAe,WAAW,GAAG,MAAM,QAAQ,EAAkB,CAAA,CAChD;;OAEf,qBAACF,aAAD;QAAc,MAAK;kBAAnB,CACE,oBAACC,gBAAD,EACE,QACE,oBAAC,YAAD;SAAY,SAAS,CAAC;SAAW,QAAQ,oBAAC,QAAD,EAAU,CAAA;mBACjD,qBAAC,QAAD;UAAM,WAAW;oBAAjB,CACE,oBAAC,UAAD,EAAU,WAAW,GAAG,MAAM,YAAY,EAAI,CAAA,EAC9C,oBAAC,QAAD;WAAM,WAAW,GAAG,KAAK,OAAO,KAAK,cAAc;qBAAG;WAAiB,CAAA,CAClE;;SACI,CAAA,EAEf,CAAA,EACF,qBAACC,cAAD;SAAe,WAAW,GAAG,MAAM,QAAQ;mBAA3C;UAA6C;UAAe;UAAU;UAAwB;WACjF;;OAEf,qBAACF,aAAD;QAAc,MAAK;kBAAnB,CACE,oBAACC,gBAAD,EACE,QACE,oBAAC,YAAD;SAAY,SAAS;SAAW,QAAQ,oBAAC,QAAD,EAAU,CAAA;mBAChD,qBAAC,QAAD;UAAM,WAAW;oBAAjB,CACE,oBAAC,UAAD,EAAU,WAAW,MAAQ,CAAA,EAC7B,oBAAC,QAAD;WAAM,WAAW,GAAG,KAAK,OAAO,KAAK,aAAa;qBAAG;WAAiB,CAAA,CACjE;;SACI,CAAA,EAEf,CAAA,EACF,qBAACC,cAAD;SAAe,WAAW,GAAG,MAAM,QAAQ;mBAA3C;UAA6C;UAAc;UAAU;UAAwB;WAChF;;OACX;;KAEN,qBAAC,OAAD;MAAK,WAAW,KAAK;gBAArB,CACE,qBAACC,OAAD;OAAY,WAAW,KAAK;iBAA5B;QACE,oBAACC,OAAD;SAAY,MAAK;SAAU,WAAW,KAAK;SAAW,CAAA;QACtD,oBAACC,WAAD,EAAgB,WAAW,KAAK,WAAa,CAAA;QAC7C,oBAACD,OAAD;SAAY,MAAK;SAAW,WAAW,KAAK;SAAY,CAAA;QAC7C;UAEb,qBAACE,gBAAD;OAAiB,QAAQ,oBAAC,YAAD,EAAc,CAAA;iBAAvC;QACE,qBAACC,eAAD;SAAkB,QAAQ,oBAAC,aAAD,EAAe,CAAA;mBAAzC,CACE,oBAACC,cAAD,EAAiB,QAAQ,oBAAC,YAAD,EAAc,CAAA,EAAI,CAAA,EAC3C,oBAACC,gBAAD,EAAmB,QAAQ,oBAAC,cAAD,EAAgB,CAAA,EAAI,CAAA,CAC9B;;QACnB,oBAACC,eAAD,EAAkB,QAAQ,oBAAC,aAAD,EAAe,CAAA,EAAI,CAAA;QAC7C,qBAAC,OAAD;SAAK,WAAW,QAAQ;mBAAxB;UACE,oBAAC,OAAD;WAAK,WAAW,QAAQ;qBACtB,oBAACC,iBAAD,EAAkB,WAAW,QAAQ,WAAa,CAAA;WAC9C,CAAA;UACN,oBAACC,aAAD;WAAkB,MAAK;WAAU,WAAW,QAAQ;WAAQ,CAAA;UAC5D,oBAAC,aAAD,EAAa,WAAW,GAAG,MAAM,QAAQ,QAAQ,EAAI,CAAA;UACjD;;QACU;SACd;;KAEN,qBAAC,OAAD;MAAK,WAAW;gBAAhB;OACE,qBAACZ,aAAD;QAAc,MAAK;kBAAnB,CACE,oBAACC,gBAAD,EAAiB,QAAQ,oBAAC,oBAAD;SAAoB,WAAW,aAAa;SAAQ,QAAQ,oBAAC,QAAD,EAAU,CAAA;SAAI,CAAA,EAAI,CAAA,EACvG,oBAACC,cAAD;SAAe,WAAW,GAAG,MAAM,QAAQ;mBAAE;SAAoC,CAAA,CACpE;;OAEf,oBAAC,eAAD,EAAiB,CAAA;OAEjB,qBAACF,aAAD;QAAc,MAAK;kBAAnB,CACE,oBAACC,gBAAD,EACE,QACE,qBAAC,gBAAD;SAAgB,WAAW,UAAU,SAAS;SAAQ,QAAQ,oBAAC,QAAD,EAAU,CAAA;mBAAxE,CACE,oBAAC,iBAAD,EAAiB,WAAW,GAAG,MAAM,UAAU,SAAS,IAAI,EAAI,CAAA,EAChE,oBAAC,gBAAD,EAAgB,WAAW,GAAG,MAAM,UAAU,SAAS,GAAG,EAAI,CAAA,CAC/C;YAEnB,CAAA,EACF,oBAACC,cAAD,EAAe,WAAW,GAAG,MAAM,QAAQ,EAAkB,CAAA,CAChD;;OAEf,qBAACF,aAAD;QAAc,MAAK;kBAAnB,CACE,oBAACC,gBAAD,EACE,QACE,qBAAC,WAAD;SAAW,WAAW,UAAU,IAAI;SAAQ,QAAQ,oBAAC,QAAD,EAAU,CAAA;mBAA9D,CACE,oBAAC,cAAD,EAAc,WAAW,GAAG,MAAM,UAAU,IAAI,IAAI,EAAI,CAAA,EACxD,oBAAC,aAAD,EAAa,WAAW,GAAG,MAAM,UAAU,IAAI,GAAG,EAAI,CAAA,CAC5C;YAEd,CAAA,EACF,oBAACC,cAAD,EAAe,WAAW,GAAG,MAAM,QAAQ,EAAkB,CAAA,CAChD;;OAEf,qBAACF,aAAD;QAAc,MAAK;kBAAnB,CACE,oBAACC,gBAAD,EACE,QACE,qBAAC,kBAAD;SAAkB,WAAW,UAAU,WAAW;SAAQ,QAAQ,oBAAC,QAAD,EAAU,CAAA;mBAA5E,CACE,oBAAC,qBAAD,EAAqB,WAAW,GAAG,MAAM,UAAU,WAAW,MAAM,EAAI,CAAA,EACxE,oBAAC,oBAAD,EAAoB,WAAW,GAAG,MAAM,UAAU,WAAW,KAAK,EAAI,CAAA,CACrD;YAErB,CAAA,EACF,oBAACC,cAAD,EAAe,WAAW,GAAG,MAAM,QAAQ,EAAkB,CAAA,CAChD;;OACX;;KACW,EAAA,CAAA;IACL,CAAA;GAEhB,oBAAC,OAAD,EAAK,WAAW,SAAW,CAAA;GACjB"}
1
+ {"version":3,"file":"minimal-skin.tailwind.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","ErrorDialog.Root","ErrorDialog.Popup","ErrorDialog.Title","ErrorDialog.Description","ErrorDialog.Close","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.tailwind.tsx"],"sourcesContent":["import {\n CaptionsOffIcon,\n CaptionsOnIcon,\n CastEnterIcon,\n CastExitIcon,\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 { playbackRate } from '@videojs/skins/default/tailwind/video.tailwind';\nimport {\n bufferingIndicator,\n button,\n buttonGroupEnd,\n buttonGroupStart,\n controls,\n error,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n overlay,\n popup,\n poster,\n preview,\n root,\n seek,\n slider,\n time,\n} from '@videojs/skins/minimal/tailwind/video.tailwind';\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 { CastButton } from '@/ui/cast-button';\nimport { Controls } from '@/ui/controls';\nimport { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { 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 { MinimalVideoSkinProps } from './minimal-skin';\n\nconst SEEK_TIME = 10;\n\n/* --------------------------------------- Components ---------------------------------------- */\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return (\n <button ref={ref} type=\"button\" className={cn(button.base, button.subtle, button.icon, className)} {...props} />\n );\n});\n\nconst SliderRoot = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderRoot({ className, ...props }, ref) {\n return <div ref={ref} className={cn(slider.root, className)} {...props} />;\n});\n\nconst SliderTrack = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderTrack(\n { className, ...props },\n ref\n) {\n return <div ref={ref} className={cn(slider.track, className)} {...props} />;\n});\n\nconst SliderFill = forwardRef<HTMLDivElement, ComponentProps<'div'> & { type?: 'fill' | 'buffer' }>(function SliderFill(\n { type = 'fill', className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.fill.base, type === 'fill' ? slider.fill.fill : slider.fill.buffer, className)}\n {...props}\n />\n );\n});\n\nconst SliderBuffer = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderBuffer(props, ref) {\n return <SliderFill type=\"buffer\" ref={ref} {...props} />;\n});\n\nconst SliderThumb = forwardRef<HTMLDivElement, ComponentProps<'div'> & { persistent?: boolean }>(function SliderThumb(\n { persistent, className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.thumb.base, persistent ? undefined : slider.thumb.interactive, className)}\n {...props}\n />\n );\n});\n\nfunction VolumePopover(): ReactNode {\n const volumeUnsupported = usePlayer((s) => s.volumeAvailability === 'unsupported');\n\n const muteButton = (\n <MuteButton className={iconState.mute.button} render={<Button />}>\n <VolumeOffIcon className={cn(icon, iconState.mute.volumeOff)} />\n <VolumeLowIcon className={cn(icon, iconState.mute.volumeLow)} />\n <VolumeHighIcon className={cn(icon, iconState.mute.volumeHigh)} />\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={cn(popup.volume)}>\n <VolumeSlider.Root orientation=\"vertical\" thumbAlignment=\"edge\" render={<SliderRoot />}>\n <VolumeSlider.Track render={<SliderTrack />}>\n <VolumeSlider.Fill render={<SliderFill />} />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb render={(props) => <SliderThumb persistent {...props} />} />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n );\n}\n\n/* ------------------------------------------ Skin ------------------------------------------- */\n\nexport function MinimalVideoSkinTailwind(props: MinimalVideoSkinProps): ReactNode {\n const { children, className, poster: posterProp, ...rest } = props;\n\n return (\n <Container className={cn(root(false), className)} {...rest}>\n {children}\n\n {posterProp && (\n <Poster\n src={isString(posterProp) ? posterProp : undefined}\n render={isRenderProp(posterProp) ? posterProp : undefined}\n className={poster(false)}\n />\n )}\n\n <BufferingIndicator\n render={(props) => (\n <div {...props} className={bufferingIndicator}>\n <SpinnerIcon className={icon} />\n </div>\n )}\n />\n\n <ErrorDialog.Root>\n <ErrorDialog.Popup className={error.root}>\n <div className={error.dialog}>\n <div className={error.content}>\n <ErrorDialog.Title className={error.title}>Something went wrong.</ErrorDialog.Title>\n <ErrorDialog.Description className={error.description} />\n </div>\n <div className={error.actions}>\n <ErrorDialog.Close className={cn(button.base, button.primary)}>OK</ErrorDialog.Close>\n </div>\n </div>\n </ErrorDialog.Popup>\n </ErrorDialog.Root>\n\n <Controls.Root\n data-controls=\"\" // Used as a hook for Tailwind has-[] styles\n className={controls}\n >\n <Tooltip.Provider>\n <div className={buttonGroupStart}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton className={iconState.play.button} render={<Button />}>\n <RestartIcon className={cn(icon, iconState.play.restart)} />\n <PlayIcon className={cn(icon, iconState.play.play)} />\n <PauseIcon className={cn(icon, iconState.play.pause)} />\n </PlayButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}></Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton seconds={-SEEK_TIME} render={<Button />}>\n <span className={iconContainer}>\n <SeekIcon className={cn(icon, iconFlipped)} />\n <span className={cn(seek.label, seek.labelBackward)}>{SEEK_TIME}</span>\n </span>\n </SeekButton>\n }\n />\n <Tooltip.Popup className={cn(popup.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} render={<Button />}>\n <span className={iconContainer}>\n <SeekIcon className={icon} />\n <span className={cn(seek.label, seek.labelForward)}>{SEEK_TIME}</span>\n </span>\n </SeekButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n </div>\n\n <div className={time.controls}>\n <Time.Group className={time.group}>\n <Time.Value type=\"current\" className={time.current} />\n <Time.Separator className={time.separator} />\n <Time.Value type=\"duration\" className={time.duration} />\n </Time.Group>\n\n <TimeSlider.Root render={<SliderRoot />}>\n <TimeSlider.Track render={<SliderTrack />}>\n <TimeSlider.Fill render={<SliderFill />} />\n <TimeSlider.Buffer render={<SliderBuffer />} />\n </TimeSlider.Track>\n <TimeSlider.Thumb render={<SliderThumb />} />\n <div className={preview.root}>\n <div className={preview.thumbnailWrapper}>\n <Slider.Thumbnail className={preview.thumbnail} />\n </div>\n <TimeSlider.Value type=\"pointer\" className={preview.time} />\n <SpinnerIcon className={cn(icon, preview.spinner)} />\n </div>\n </TimeSlider.Root>\n </div>\n\n <div className={buttonGroupEnd}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger render={<PlaybackRateButton className={playbackRate.button} render={<Button />} />} />\n <Tooltip.Popup className={cn(popup.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={iconState.captions.button} render={<Button />}>\n <CaptionsOffIcon className={cn(icon, iconState.captions.off)} />\n <CaptionsOnIcon className={cn(icon, iconState.captions.on)} />\n </CaptionsButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}></Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <CastButton className={iconState.cast.button} render={<Button />}>\n <CastEnterIcon className={cn(icon, iconState.cast.enter)} />\n <CastExitIcon className={cn(icon, iconState.cast.exit)} />\n </CastButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}></Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PiPButton className={iconState.pip.button} render={<Button />}>\n <PipEnterIcon className={cn(icon, iconState.pip.off)} />\n <PipExitIcon className={cn(icon, iconState.pip.on)} />\n </PiPButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}></Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <FullscreenButton className={iconState.fullscreen.button} render={<Button />}>\n <FullscreenEnterIcon className={cn(icon, iconState.fullscreen.enter)} />\n <FullscreenExitIcon className={cn(icon, iconState.fullscreen.exit)} />\n </FullscreenButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}></Tooltip.Popup>\n </Tooltip.Root>\n </div>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className={overlay} />\n </Container>\n );\n}\n"],"mappings":"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"}
@@ -275,7 +275,8 @@
275
275
  cursor: not-allowed;
276
276
  }
277
277
 
278
- &[data-availability="unavailable"] {
278
+ &[data-availability="unavailable"],
279
+ &[data-availability="unsupported"] {
279
280
  display: none;
280
281
  }
281
282
  }
@@ -810,6 +811,8 @@
810
811
  .media-button--fullscreen .media-icon--fullscreen-exit,
811
812
  .media-button--pip .media-icon--pip-enter,
812
813
  .media-button--pip .media-icon--pip-exit,
814
+ .media-button--cast .media-icon--cast-enter,
815
+ .media-button--cast .media-icon--cast-exit,
813
816
  .media-button--captions .media-icon--captions-off,
814
817
  .media-button--captions .media-icon--captions-on {
815
818
  display: none;
@@ -838,6 +841,10 @@
838
841
  .media-button--pip:not([data-pip]) .media-icon--pip-enter,
839
842
  /* Picture-in-Picture: active → exit */
840
843
  .media-button--pip[data-pip] .media-icon--pip-exit,
844
+ /* Cast: not connected → enter */
845
+ .media-button--cast:not([data-cast-state="connected"]) .media-icon--cast-enter,
846
+ /* Cast: connected → exit */
847
+ .media-button--cast[data-cast-state="connected"] .media-icon--cast-exit,
841
848
  /* Captions: not active → captions off */
842
849
  .media-button--captions:not([data-active]) .media-icon--captions-off,
843
850
  /* Captions: active → captions on */
@@ -5,12 +5,13 @@ import { AlertDialogPopup } from "../../ui/alert-dialog/alert-dialog-popup.js";
5
5
  import { AlertDialogTitle } from "../../ui/alert-dialog/alert-dialog-title.js";
6
6
  import { BufferingIndicator } from "../../ui/buffering-indicator/buffering-indicator.js";
7
7
  import { CaptionsButton } from "../../ui/captions-button/captions-button.js";
8
+ import { CastButton } from "../../ui/cast-button/cast-button.js";
8
9
  import { ControlsRoot } from "../../ui/controls/controls-root.js";
9
10
  import { ErrorDialogDescription } from "../../ui/error-dialog/error-dialog-description.js";
10
11
  import { ErrorDialogRoot } from "../../ui/error-dialog/error-dialog-root.js";
11
12
  import { FullscreenButton } from "../../ui/fullscreen-button/fullscreen-button.js";
12
- import { MediaGesture } from "../../ui/gesture/media-gesture.js";
13
- import { MediaHotkey } from "../../ui/hotkey/media-hotkey.js";
13
+ import { Gesture } from "../../ui/gesture/gesture.js";
14
+ import { Hotkey } from "../../ui/hotkey/hotkey.js";
14
15
  import { MuteButton } from "../../ui/mute-button/mute-button.js";
15
16
  import { PiPButton } from "../../ui/pip-button/pip-button.js";
16
17
  import { PlayButton } from "../../ui/play-button/play-button.js";
@@ -35,6 +36,8 @@ import { TooltipTrigger } from "../../ui/tooltip/tooltip-trigger.js";
35
36
  import { VolumeSliderRoot } from "../../ui/volume-slider/volume-slider-root.js";
36
37
  import CaptionsOffIcon from "../../icons/dist/react/default/captions-off.js";
37
38
  import CaptionsOnIcon from "../../icons/dist/react/default/captions-on.js";
39
+ import CastEnterIcon from "../../icons/dist/react/default/cast-enter.js";
40
+ import CastExitIcon from "../../icons/dist/react/default/cast-exit.js";
38
41
  import FullscreenEnterIcon from "../../icons/dist/react/default/fullscreen-enter.js";
39
42
  import FullscreenExitIcon from "../../icons/dist/react/default/fullscreen-exit.js";
40
43
  import PauseIcon from "../../icons/dist/react/default/pause.js";
@@ -250,6 +253,14 @@ function VideoSkin(props) {
250
253
  children: [/* @__PURE__ */ jsx(CaptionsOffIcon, { className: "media-icon media-icon--captions-off" }), /* @__PURE__ */ jsx(CaptionsOnIcon, { className: "media-icon media-icon--captions-on" })]
251
254
  }) }), /* @__PURE__ */ jsx(TooltipPopup, { className: "media-surface media-tooltip" })]
252
255
  }),
256
+ /* @__PURE__ */ jsxs(TooltipRoot, {
257
+ side: "top",
258
+ children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(CastButton, {
259
+ className: "media-button--cast",
260
+ render: /* @__PURE__ */ jsx(Button, {}),
261
+ children: [/* @__PURE__ */ jsx(CastEnterIcon, { className: "media-icon media-icon--cast-enter" }), /* @__PURE__ */ jsx(CastExitIcon, { className: "media-icon media-icon--cast-exit" })]
262
+ }) }), /* @__PURE__ */ jsx(TooltipPopup, { className: "media-surface media-tooltip" })]
263
+ }),
253
264
  /* @__PURE__ */ jsxs(TooltipRoot, {
254
265
  side: "top",
255
266
  children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(PiPButton, {
@@ -271,105 +282,105 @@ function VideoSkin(props) {
271
282
  ] })
272
283
  }),
273
284
  /* @__PURE__ */ jsx("div", { className: "media-overlay" }),
274
- /* @__PURE__ */ jsx(MediaHotkey, {
285
+ /* @__PURE__ */ jsx(Hotkey, {
275
286
  keys: "Space",
276
287
  action: "togglePaused"
277
288
  }),
278
- /* @__PURE__ */ jsx(MediaHotkey, {
289
+ /* @__PURE__ */ jsx(Hotkey, {
279
290
  keys: "k",
280
291
  action: "togglePaused"
281
292
  }),
282
- /* @__PURE__ */ jsx(MediaHotkey, {
293
+ /* @__PURE__ */ jsx(Hotkey, {
283
294
  keys: "m",
284
295
  action: "toggleMuted"
285
296
  }),
286
- /* @__PURE__ */ jsx(MediaHotkey, {
297
+ /* @__PURE__ */ jsx(Hotkey, {
287
298
  keys: "f",
288
299
  action: "toggleFullscreen"
289
300
  }),
290
- /* @__PURE__ */ jsx(MediaHotkey, {
301
+ /* @__PURE__ */ jsx(Hotkey, {
291
302
  keys: "c",
292
303
  action: "toggleSubtitles"
293
304
  }),
294
- /* @__PURE__ */ jsx(MediaHotkey, {
305
+ /* @__PURE__ */ jsx(Hotkey, {
295
306
  keys: "i",
296
307
  action: "togglePictureInPicture"
297
308
  }),
298
- /* @__PURE__ */ jsx(MediaHotkey, {
309
+ /* @__PURE__ */ jsx(Hotkey, {
299
310
  keys: "ArrowRight",
300
311
  action: "seekStep",
301
312
  value: 5
302
313
  }),
303
- /* @__PURE__ */ jsx(MediaHotkey, {
314
+ /* @__PURE__ */ jsx(Hotkey, {
304
315
  keys: "ArrowLeft",
305
316
  action: "seekStep",
306
317
  value: -5
307
318
  }),
308
- /* @__PURE__ */ jsx(MediaHotkey, {
319
+ /* @__PURE__ */ jsx(Hotkey, {
309
320
  keys: "l",
310
321
  action: "seekStep",
311
322
  value: 10
312
323
  }),
313
- /* @__PURE__ */ jsx(MediaHotkey, {
324
+ /* @__PURE__ */ jsx(Hotkey, {
314
325
  keys: "j",
315
326
  action: "seekStep",
316
327
  value: -10
317
328
  }),
318
- /* @__PURE__ */ jsx(MediaHotkey, {
329
+ /* @__PURE__ */ jsx(Hotkey, {
319
330
  keys: "ArrowUp",
320
331
  action: "volumeStep",
321
332
  value: .05
322
333
  }),
323
- /* @__PURE__ */ jsx(MediaHotkey, {
334
+ /* @__PURE__ */ jsx(Hotkey, {
324
335
  keys: "ArrowDown",
325
336
  action: "volumeStep",
326
337
  value: -.05
327
338
  }),
328
- /* @__PURE__ */ jsx(MediaHotkey, {
339
+ /* @__PURE__ */ jsx(Hotkey, {
329
340
  keys: "0-9",
330
341
  action: "seekToPercent"
331
342
  }),
332
- /* @__PURE__ */ jsx(MediaHotkey, {
343
+ /* @__PURE__ */ jsx(Hotkey, {
333
344
  keys: "Home",
334
345
  action: "seekToPercent",
335
346
  value: 0
336
347
  }),
337
- /* @__PURE__ */ jsx(MediaHotkey, {
348
+ /* @__PURE__ */ jsx(Hotkey, {
338
349
  keys: "End",
339
350
  action: "seekToPercent",
340
351
  value: 100
341
352
  }),
342
- /* @__PURE__ */ jsx(MediaHotkey, {
353
+ /* @__PURE__ */ jsx(Hotkey, {
343
354
  keys: ">",
344
355
  action: "speedUp"
345
356
  }),
346
- /* @__PURE__ */ jsx(MediaHotkey, {
357
+ /* @__PURE__ */ jsx(Hotkey, {
347
358
  keys: "<",
348
359
  action: "speedDown"
349
360
  }),
350
- /* @__PURE__ */ jsx(MediaGesture, {
361
+ /* @__PURE__ */ jsx(Gesture, {
351
362
  type: "tap",
352
363
  action: "togglePaused",
353
364
  pointer: "mouse",
354
365
  region: "center"
355
366
  }),
356
- /* @__PURE__ */ jsx(MediaGesture, {
367
+ /* @__PURE__ */ jsx(Gesture, {
357
368
  type: "tap",
358
369
  action: "toggleControls",
359
370
  pointer: "touch"
360
371
  }),
361
- /* @__PURE__ */ jsx(MediaGesture, {
372
+ /* @__PURE__ */ jsx(Gesture, {
362
373
  type: "doubletap",
363
374
  action: "seekStep",
364
375
  value: -10,
365
376
  region: "left"
366
377
  }),
367
- /* @__PURE__ */ jsx(MediaGesture, {
378
+ /* @__PURE__ */ jsx(Gesture, {
368
379
  type: "doubletap",
369
380
  action: "toggleFullscreen",
370
381
  region: "center"
371
382
  }),
372
- /* @__PURE__ */ jsx(MediaGesture, {
383
+ /* @__PURE__ */ jsx(Gesture, {
373
384
  type: "doubletap",
374
385
  action: "seekStep",
375
386
  value: 10,
@@ -1 +1 @@
1
- {"version":3,"file":"skin.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","ErrorDialog.Root","ErrorDialog.Popup","ErrorDialog.Title","ErrorDialog.Description","ErrorDialog.Close","Controls.Root","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","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 { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MediaGesture } from '@/ui/gesture/media-gesture';\nimport { MediaHotkey } from '@/ui/hotkey/media-hotkey';\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';\n\nconst SEEK_TIME = 10;\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 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.Root>\n <ErrorDialog.Popup className=\"media-error\">\n <div className=\"media-error__dialog media-surface\">\n <div className=\"media-error__content\">\n <ErrorDialog.Title className=\"media-error__title\">Something went wrong.</ErrorDialog.Title>\n <ErrorDialog.Description className=\"media-error__description\" />\n </div>\n <div className=\"media-error__actions\">\n <ErrorDialog.Close className=\"media-button media-button--primary\">OK</ErrorDialog.Close>\n </div>\n </div>\n </ErrorDialog.Popup>\n </ErrorDialog.Root>\n\n <Controls.Root className=\"media-surface media-controls\">\n <Tooltip.Provider>\n <div className=\"media-button-group\">\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 </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 </div>\n\n <div className=\"media-time-controls\">\n <Time.Value type=\"current\" className=\"media-time\" />\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-time media-preview__time\" />\n <SpinnerIcon className=\"media-preview__spinner media-icon\" />\n </div>\n </TimeSlider.Root>\n <Time.Value type=\"duration\" className=\"media-time\" />\n </div>\n\n <div className=\"media-button-group\">\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 </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 </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 </Tooltip.Root>\n </div>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className=\"media-overlay\" />\n\n {/* Hotkeys */}\n <MediaHotkey keys=\"Space\" action=\"togglePaused\" />\n <MediaHotkey keys=\"k\" action=\"togglePaused\" />\n <MediaHotkey keys=\"m\" action=\"toggleMuted\" />\n <MediaHotkey keys=\"f\" action=\"toggleFullscreen\" />\n <MediaHotkey keys=\"c\" action=\"toggleSubtitles\" />\n <MediaHotkey keys=\"i\" action=\"togglePictureInPicture\" />\n <MediaHotkey keys=\"ArrowRight\" action=\"seekStep\" value={5} />\n <MediaHotkey keys=\"ArrowLeft\" action=\"seekStep\" value={-5} />\n <MediaHotkey keys=\"l\" action=\"seekStep\" value={10} />\n <MediaHotkey keys=\"j\" action=\"seekStep\" value={-10} />\n <MediaHotkey keys=\"ArrowUp\" action=\"volumeStep\" value={0.05} />\n <MediaHotkey keys=\"ArrowDown\" action=\"volumeStep\" value={-0.05} />\n <MediaHotkey keys=\"0-9\" action=\"seekToPercent\" />\n <MediaHotkey keys=\"Home\" action=\"seekToPercent\" value={0} />\n <MediaHotkey keys=\"End\" action=\"seekToPercent\" value={100} />\n <MediaHotkey keys=\">\" action=\"speedUp\" />\n <MediaHotkey keys=\"<\" action=\"speedDown\" />\n\n {/* Gestures */}\n <MediaGesture type=\"tap\" action=\"togglePaused\" pointer=\"mouse\" region=\"center\" />\n <MediaGesture type=\"tap\" action=\"toggleControls\" pointer=\"touch\" />\n <MediaGesture type=\"doubletap\" action=\"seekStep\" value={-10} region=\"left\" />\n <MediaGesture type=\"doubletap\" action=\"toggleFullscreen\" region=\"center\" />\n <MediaGesture type=\"doubletap\" action=\"seekStep\" value={10} region=\"right\" />\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","ErrorDialog.Root","ErrorDialog.Popup","ErrorDialog.Title","ErrorDialog.Description","ErrorDialog.Close","Controls.Root","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","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 CastEnterIcon,\n CastExitIcon,\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 { CastButton } from '@/ui/cast-button';\nimport { Controls } from '@/ui/controls';\nimport { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { Gesture } from '@/ui/gesture/gesture';\nimport { Hotkey } from '@/ui/hotkey/hotkey';\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';\n\nconst SEEK_TIME = 10;\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 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.Root>\n <ErrorDialog.Popup className=\"media-error\">\n <div className=\"media-error__dialog media-surface\">\n <div className=\"media-error__content\">\n <ErrorDialog.Title className=\"media-error__title\">Something went wrong.</ErrorDialog.Title>\n <ErrorDialog.Description className=\"media-error__description\" />\n </div>\n <div className=\"media-error__actions\">\n <ErrorDialog.Close className=\"media-button media-button--primary\">OK</ErrorDialog.Close>\n </div>\n </div>\n </ErrorDialog.Popup>\n </ErrorDialog.Root>\n\n <Controls.Root className=\"media-surface media-controls\">\n <Tooltip.Provider>\n <div className=\"media-button-group\">\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 </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 </div>\n\n <div className=\"media-time-controls\">\n <Time.Value type=\"current\" className=\"media-time\" />\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-time media-preview__time\" />\n <SpinnerIcon className=\"media-preview__spinner media-icon\" />\n </div>\n </TimeSlider.Root>\n <Time.Value type=\"duration\" className=\"media-time\" />\n </div>\n\n <div className=\"media-button-group\">\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 </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <CastButton className=\"media-button--cast\" render={<Button />}>\n <CastEnterIcon className=\"media-icon media-icon--cast-enter\" />\n <CastExitIcon className=\"media-icon media-icon--cast-exit\" />\n </CastButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\" />\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 </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 </Tooltip.Root>\n </div>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className=\"media-overlay\" />\n\n {/* Hotkeys */}\n <Hotkey keys=\"Space\" action=\"togglePaused\" />\n <Hotkey keys=\"k\" action=\"togglePaused\" />\n <Hotkey keys=\"m\" action=\"toggleMuted\" />\n <Hotkey keys=\"f\" action=\"toggleFullscreen\" />\n <Hotkey keys=\"c\" action=\"toggleSubtitles\" />\n <Hotkey keys=\"i\" action=\"togglePictureInPicture\" />\n <Hotkey keys=\"ArrowRight\" action=\"seekStep\" value={5} />\n <Hotkey keys=\"ArrowLeft\" action=\"seekStep\" value={-5} />\n <Hotkey keys=\"l\" action=\"seekStep\" value={10} />\n <Hotkey keys=\"j\" action=\"seekStep\" value={-10} />\n <Hotkey keys=\"ArrowUp\" action=\"volumeStep\" value={0.05} />\n <Hotkey keys=\"ArrowDown\" action=\"volumeStep\" value={-0.05} />\n <Hotkey keys=\"0-9\" action=\"seekToPercent\" />\n <Hotkey keys=\"Home\" action=\"seekToPercent\" value={0} />\n <Hotkey keys=\"End\" action=\"seekToPercent\" value={100} />\n <Hotkey keys=\">\" action=\"speedUp\" />\n <Hotkey keys=\"<\" action=\"speedDown\" />\n\n {/* Gestures */}\n <Gesture type=\"tap\" action=\"togglePaused\" pointer=\"mouse\" region=\"center\" />\n <Gesture type=\"tap\" action=\"toggleControls\" pointer=\"touch\" />\n <Gesture type=\"doubletap\" action=\"seekStep\" value={-10} region=\"left\" />\n <Gesture type=\"doubletap\" action=\"toggleFullscreen\" region=\"center\" />\n <Gesture type=\"doubletap\" action=\"seekStep\" value={10} region=\"right\" />\n </Container>\n );\n}\n"],"mappings":"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"}
@@ -5,6 +5,7 @@ import { AlertDialogPopup } from "../../ui/alert-dialog/alert-dialog-popup.js";
5
5
  import { AlertDialogTitle } from "../../ui/alert-dialog/alert-dialog-title.js";
6
6
  import { BufferingIndicator } from "../../ui/buffering-indicator/buffering-indicator.js";
7
7
  import { CaptionsButton } from "../../ui/captions-button/captions-button.js";
8
+ import { CastButton } from "../../ui/cast-button/cast-button.js";
8
9
  import { ControlsRoot } from "../../ui/controls/controls-root.js";
9
10
  import { ErrorDialogDescription } from "../../ui/error-dialog/error-dialog-description.js";
10
11
  import { ErrorDialogRoot } from "../../ui/error-dialog/error-dialog-root.js";
@@ -38,6 +39,8 @@ import { playbackRate } from "../../skins/dist/default/default/tailwind/componen
38
39
  import { seek } from "../../skins/dist/default/default/tailwind/components/seek.js";
39
40
  import CaptionsOffIcon from "../../icons/dist/react/default/captions-off.js";
40
41
  import CaptionsOnIcon from "../../icons/dist/react/default/captions-on.js";
42
+ import CastEnterIcon from "../../icons/dist/react/default/cast-enter.js";
43
+ import CastExitIcon from "../../icons/dist/react/default/cast-exit.js";
41
44
  import FullscreenEnterIcon from "../../icons/dist/react/default/fullscreen-enter.js";
42
45
  import FullscreenExitIcon from "../../icons/dist/react/default/fullscreen-exit.js";
43
46
  import PauseIcon from "../../icons/dist/react/default/pause.js";
@@ -294,6 +297,14 @@ function VideoSkinTailwind(props) {
294
297
  children: [/* @__PURE__ */ jsx(CaptionsOffIcon, { className: cn(icon, iconState.captions.off) }), /* @__PURE__ */ jsx(CaptionsOnIcon, { className: cn(icon, iconState.captions.on) })]
295
298
  }) }), /* @__PURE__ */ jsx(TooltipPopup, { className: cn(popup.tooltip) })]
296
299
  }),
300
+ /* @__PURE__ */ jsxs(TooltipRoot, {
301
+ side: "top",
302
+ children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(CastButton, {
303
+ className: iconState.cast.button,
304
+ render: /* @__PURE__ */ jsx(Button, {}),
305
+ children: [/* @__PURE__ */ jsx(CastEnterIcon, { className: cn(icon, iconState.cast.enter) }), /* @__PURE__ */ jsx(CastExitIcon, { className: cn(icon, iconState.cast.exit) })]
306
+ }) }), /* @__PURE__ */ jsx(TooltipPopup, { className: cn(popup.tooltip) })]
307
+ }),
297
308
  /* @__PURE__ */ jsxs(TooltipRoot, {
298
309
  side: "top",
299
310
  children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(PiPButton, {