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

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 (736) hide show
  1. package/README.md +6 -0
  2. package/dist/default/icons/dist/react/default/captions-off.js +1 -0
  3. package/dist/default/icons/dist/react/default/captions-off.js.map +1 -1
  4. package/dist/default/icons/dist/react/default/captions-on.js +3 -5
  5. package/dist/default/icons/dist/react/default/captions-on.js.map +1 -1
  6. package/dist/default/icons/dist/react/default/cast-enter.js +38 -11
  7. package/dist/default/icons/dist/react/default/cast-enter.js.map +1 -1
  8. package/dist/default/icons/dist/react/default/cast-exit.js +55 -14
  9. package/dist/default/icons/dist/react/default/cast-exit.js.map +1 -1
  10. package/dist/default/icons/dist/react/default/check.js +22 -0
  11. package/dist/default/icons/dist/react/default/check.js.map +1 -0
  12. package/dist/default/icons/dist/react/default/chevron.js +21 -0
  13. package/dist/default/icons/dist/react/default/chevron.js.map +1 -0
  14. package/dist/default/icons/dist/react/default/fullscreen-enter.js +3 -5
  15. package/dist/default/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  16. package/dist/default/icons/dist/react/default/fullscreen-exit.js +3 -5
  17. package/dist/default/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  18. package/dist/default/icons/dist/react/default/pause.js +2 -3
  19. package/dist/default/icons/dist/react/default/pause.js.map +1 -1
  20. package/dist/default/icons/dist/react/default/pip-enter.js +4 -10
  21. package/dist/default/icons/dist/react/default/pip-enter.js.map +1 -1
  22. package/dist/default/icons/dist/react/default/pip-exit.js +4 -10
  23. package/dist/default/icons/dist/react/default/pip-exit.js.map +1 -1
  24. package/dist/default/icons/dist/react/default/play.js +3 -5
  25. package/dist/default/icons/dist/react/default/play.js.map +1 -1
  26. package/dist/default/icons/dist/react/default/restart.js +3 -8
  27. package/dist/default/icons/dist/react/default/restart.js.map +1 -1
  28. package/dist/default/icons/dist/react/default/seek.js +3 -5
  29. package/dist/default/icons/dist/react/default/seek.js.map +1 -1
  30. package/dist/default/icons/dist/react/default/spinner.js +38 -117
  31. package/dist/default/icons/dist/react/default/spinner.js.map +1 -1
  32. package/dist/default/icons/dist/react/default/volume-high.js +3 -8
  33. package/dist/default/icons/dist/react/default/volume-high.js.map +1 -1
  34. package/dist/default/icons/dist/react/default/volume-low.js +3 -5
  35. package/dist/default/icons/dist/react/default/volume-low.js.map +1 -1
  36. package/dist/default/icons/dist/react/default/volume-off.js +3 -5
  37. package/dist/default/icons/dist/react/default/volume-off.js.map +1 -1
  38. package/dist/default/icons/dist/react/minimal/captions-off.js +1 -0
  39. package/dist/default/icons/dist/react/minimal/captions-off.js.map +1 -1
  40. package/dist/default/icons/dist/react/minimal/captions-on.js +3 -5
  41. package/dist/default/icons/dist/react/minimal/captions-on.js.map +1 -1
  42. package/dist/default/icons/dist/react/minimal/cast-enter.js +38 -7
  43. package/dist/default/icons/dist/react/minimal/cast-enter.js.map +1 -1
  44. package/dist/default/icons/dist/react/minimal/cast-exit.js +56 -11
  45. package/dist/default/icons/dist/react/minimal/cast-exit.js.map +1 -1
  46. package/dist/default/icons/dist/react/minimal/check.js +22 -0
  47. package/dist/default/icons/dist/react/minimal/check.js.map +1 -0
  48. package/dist/default/icons/dist/react/minimal/chevron.js +21 -0
  49. package/dist/default/icons/dist/react/minimal/chevron.js.map +1 -0
  50. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js +5 -13
  51. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  52. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js +5 -13
  53. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  54. package/dist/default/icons/dist/react/minimal/pause.js +2 -3
  55. package/dist/default/icons/dist/react/minimal/pause.js.map +1 -1
  56. package/dist/default/icons/dist/react/minimal/pip-enter.js +5 -14
  57. package/dist/default/icons/dist/react/minimal/pip-enter.js.map +1 -1
  58. package/dist/default/icons/dist/react/minimal/pip-exit.js +5 -14
  59. package/dist/default/icons/dist/react/minimal/pip-exit.js.map +1 -1
  60. package/dist/default/icons/dist/react/minimal/play.js +3 -5
  61. package/dist/default/icons/dist/react/minimal/play.js.map +1 -1
  62. package/dist/default/icons/dist/react/minimal/restart.js +3 -8
  63. package/dist/default/icons/dist/react/minimal/restart.js.map +1 -1
  64. package/dist/default/icons/dist/react/minimal/seek.js +3 -5
  65. package/dist/default/icons/dist/react/minimal/seek.js.map +1 -1
  66. package/dist/default/icons/dist/react/minimal/spinner.js +38 -117
  67. package/dist/default/icons/dist/react/minimal/spinner.js.map +1 -1
  68. package/dist/default/icons/dist/react/minimal/volume-high.js +3 -8
  69. package/dist/default/icons/dist/react/minimal/volume-high.js.map +1 -1
  70. package/dist/default/icons/dist/react/minimal/volume-low.js +3 -5
  71. package/dist/default/icons/dist/react/minimal/volume-low.js.map +1 -1
  72. package/dist/default/icons/dist/react/minimal/volume-off.js +3 -5
  73. package/dist/default/icons/dist/react/minimal/volume-off.js.map +1 -1
  74. package/dist/default/icons/index.js +19 -0
  75. package/dist/default/icons/minimal/index.js +19 -0
  76. package/dist/default/index.js +17 -8
  77. package/dist/default/media/simple-hls-video/index.js +2 -2
  78. package/dist/default/media/simple-hls-video/index.js.map +1 -1
  79. package/dist/default/player/context.js +9 -1
  80. package/dist/default/player/context.js.map +1 -1
  81. package/dist/default/player/create-player.js +4 -1
  82. package/dist/default/player/create-player.js.map +1 -1
  83. package/dist/default/presets/audio/minimal-skin.css +209 -99
  84. package/dist/default/presets/audio/minimal-skin.js +107 -7
  85. package/dist/default/presets/audio/minimal-skin.js.map +1 -1
  86. package/dist/default/presets/audio/minimal-skin.tailwind.js +41 -7
  87. package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
  88. package/dist/default/presets/audio/skin.css +235 -99
  89. package/dist/default/presets/audio/skin.js +42 -7
  90. package/dist/default/presets/audio/skin.js.map +1 -1
  91. package/dist/default/presets/audio/skin.tailwind.js +115 -14
  92. package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
  93. package/dist/default/presets/live-audio/minimal-skin.css +209 -99
  94. package/dist/default/presets/live-audio/minimal-skin.js +32 -4
  95. package/dist/default/presets/live-audio/minimal-skin.js.map +1 -1
  96. package/dist/default/presets/live-audio/minimal-skin.tailwind.js +32 -4
  97. package/dist/default/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  98. package/dist/default/presets/live-audio/skin.css +235 -99
  99. package/dist/default/presets/live-audio/skin.js +9 -4
  100. package/dist/default/presets/live-audio/skin.js.map +1 -1
  101. package/dist/default/presets/live-audio/skin.tailwind.js +37 -9
  102. package/dist/default/presets/live-audio/skin.tailwind.js.map +1 -1
  103. package/dist/default/presets/live-video/minimal-skin.css +553 -138
  104. package/dist/default/presets/live-video/minimal-skin.js +112 -4
  105. package/dist/default/presets/live-video/minimal-skin.js.map +1 -1
  106. package/dist/default/presets/live-video/minimal-skin.tailwind.js +114 -4
  107. package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  108. package/dist/default/presets/live-video/skin.css +563 -136
  109. package/dist/default/presets/live-video/skin.js +55 -3
  110. package/dist/default/presets/live-video/skin.js.map +1 -1
  111. package/dist/default/presets/live-video/skin.tailwind.js +201 -8
  112. package/dist/default/presets/live-video/skin.tailwind.js.map +1 -1
  113. package/dist/default/presets/video/minimal-skin.css +553 -138
  114. package/dist/default/presets/video/minimal-skin.js +205 -23
  115. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  116. package/dist/default/presets/video/minimal-skin.tailwind.js +209 -24
  117. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  118. package/dist/default/presets/video/skin.css +563 -136
  119. package/dist/default/presets/video/skin.js +100 -28
  120. package/dist/default/presets/video/skin.js.map +1 -1
  121. package/dist/default/presets/video/skin.tailwind.js +208 -29
  122. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  123. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +3 -2
  124. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  125. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js +1 -1
  126. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  127. package/dist/default/skins/dist/default/default/tailwind/components/button.js +3 -2
  128. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  129. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
  130. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  131. package/dist/default/skins/dist/default/default/tailwind/components/icon.js +1 -1
  132. package/dist/default/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  133. package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js +40 -0
  134. package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js.map +1 -0
  135. package/dist/default/skins/dist/default/default/tailwind/components/menu.js +12 -0
  136. package/dist/default/skins/dist/default/default/tailwind/components/menu.js.map +1 -0
  137. package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js +1 -1
  138. package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -1
  139. package/dist/default/skins/dist/default/default/tailwind/components/preview.js +1 -1
  140. package/dist/default/skins/dist/default/default/tailwind/components/preview.js.map +1 -1
  141. package/dist/default/skins/dist/default/default/tailwind/components/reset.js +7 -0
  142. package/dist/default/skins/dist/default/default/tailwind/components/reset.js.map +1 -0
  143. package/dist/default/skins/dist/default/default/tailwind/components/root.js +2 -1
  144. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  145. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +1 -1
  146. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  147. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +13 -4
  148. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  149. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +5 -3
  150. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  151. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  152. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  153. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +3 -2
  154. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  155. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  156. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  157. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js +1 -1
  158. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  159. package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js +41 -0
  160. package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +1 -0
  161. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js +12 -0
  162. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -0
  163. package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js +6 -0
  164. package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -0
  165. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js +1 -1
  166. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -1
  167. package/dist/default/skins/dist/default/minimal/tailwind/components/reset.js +7 -0
  168. package/dist/default/skins/dist/default/minimal/tailwind/components/reset.js.map +1 -0
  169. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +2 -1
  170. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  171. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +1 -1
  172. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  173. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -4
  174. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  175. package/dist/default/tailwind.css +66 -0
  176. package/dist/default/ui/controls/context.js +4 -1
  177. package/dist/default/ui/controls/context.js.map +1 -1
  178. package/dist/default/ui/gesture/gesture.js +2 -1
  179. package/dist/default/ui/gesture/gesture.js.map +1 -1
  180. package/dist/default/ui/gesture/index.js +2 -0
  181. package/dist/default/ui/hotkey/hotkey.js +1 -0
  182. package/dist/default/ui/hotkey/hotkey.js.map +1 -1
  183. package/dist/default/ui/hotkey/index.js +2 -0
  184. package/dist/default/ui/input-indicators/use-indicator-visibility.js +25 -0
  185. package/dist/default/ui/input-indicators/use-indicator-visibility.js.map +1 -0
  186. package/dist/default/ui/input-indicators/use-input-action-subscription.js +22 -0
  187. package/dist/default/ui/input-indicators/use-input-action-subscription.js.map +1 -0
  188. package/dist/default/ui/input-indicators/use-input-indicator-root.js +21 -0
  189. package/dist/default/ui/input-indicators/use-input-indicator-root.js.map +1 -0
  190. package/dist/default/ui/input-indicators/use-rendered-indicator-state.js +40 -0
  191. package/dist/default/ui/input-indicators/use-rendered-indicator-state.js.map +1 -0
  192. package/dist/default/ui/live-button/index.js +2 -0
  193. package/dist/default/ui/live-button/live-button.js +89 -0
  194. package/dist/default/ui/live-button/live-button.js.map +1 -0
  195. package/dist/default/ui/menu/context.js +29 -0
  196. package/dist/default/ui/menu/context.js.map +1 -0
  197. package/dist/default/ui/menu/index.js +3 -0
  198. package/dist/default/ui/menu/index.parts.js +34 -0
  199. package/dist/default/ui/menu/index.parts.js.map +1 -0
  200. package/dist/default/ui/menu/menu-back.js +31 -0
  201. package/dist/default/ui/menu/menu-back.js.map +1 -0
  202. package/dist/default/ui/menu/menu-checkbox-item.js +50 -0
  203. package/dist/default/ui/menu/menu-checkbox-item.js.map +1 -0
  204. package/dist/default/ui/menu/menu-content.js +284 -0
  205. package/dist/default/ui/menu/menu-content.js.map +1 -0
  206. package/dist/default/ui/menu/menu-group.js +26 -0
  207. package/dist/default/ui/menu/menu-group.js.map +1 -0
  208. package/dist/default/ui/menu/menu-item-indicator.js +24 -0
  209. package/dist/default/ui/menu/menu-item-indicator.js.map +1 -0
  210. package/dist/default/ui/menu/menu-item.js +53 -0
  211. package/dist/default/ui/menu/menu-item.js.map +1 -0
  212. package/dist/default/ui/menu/menu-label.js +23 -0
  213. package/dist/default/ui/menu/menu-label.js.map +1 -0
  214. package/dist/default/ui/menu/menu-radio-group.js +33 -0
  215. package/dist/default/ui/menu/menu-radio-group.js.map +1 -0
  216. package/dist/default/ui/menu/menu-radio-item.js +57 -0
  217. package/dist/default/ui/menu/menu-radio-item.js.map +1 -0
  218. package/dist/default/ui/menu/menu-root.js +136 -0
  219. package/dist/default/ui/menu/menu-root.js.map +1 -0
  220. package/dist/default/ui/menu/menu-separator.js +23 -0
  221. package/dist/default/ui/menu/menu-separator.js.map +1 -0
  222. package/dist/default/ui/menu/menu-trigger.js +124 -0
  223. package/dist/default/ui/menu/menu-trigger.js.map +1 -0
  224. package/dist/default/ui/menu/menu-view.js +23 -0
  225. package/dist/default/ui/menu/menu-view.js.map +1 -0
  226. package/dist/default/ui/playback-rate-menu/context.js +20 -0
  227. package/dist/default/ui/playback-rate-menu/context.js.map +1 -0
  228. package/dist/default/ui/playback-rate-menu/index.js +3 -0
  229. package/dist/default/ui/playback-rate-menu/index.parts.js +17 -0
  230. package/dist/default/ui/playback-rate-menu/index.parts.js.map +1 -0
  231. package/dist/default/ui/playback-rate-menu/playback-rate-menu-content.js +28 -0
  232. package/dist/default/ui/playback-rate-menu/playback-rate-menu-content.js.map +1 -0
  233. package/dist/default/ui/playback-rate-menu/playback-rate-menu-root.js +36 -0
  234. package/dist/default/ui/playback-rate-menu/playback-rate-menu-root.js.map +1 -0
  235. package/dist/default/ui/playback-rate-menu/playback-rate-menu-trigger.js +51 -0
  236. package/dist/default/ui/playback-rate-menu/playback-rate-menu-trigger.js.map +1 -0
  237. package/dist/default/ui/playback-rate-menu/use-playback-rate-menu.js +27 -0
  238. package/dist/default/ui/playback-rate-menu/use-playback-rate-menu.js.map +1 -0
  239. package/dist/default/ui/popover/context.js.map +1 -1
  240. package/dist/default/ui/popover/popover-popup.js +20 -7
  241. package/dist/default/ui/popover/popover-popup.js.map +1 -1
  242. package/dist/default/ui/popover/popover-root.js +20 -5
  243. package/dist/default/ui/popover/popover-root.js.map +1 -1
  244. package/dist/default/ui/seek-indicator/context.js +20 -0
  245. package/dist/default/ui/seek-indicator/context.js.map +1 -0
  246. package/dist/default/ui/seek-indicator/index.js +2 -0
  247. package/dist/default/ui/seek-indicator/index.parts.js +12 -0
  248. package/dist/default/ui/seek-indicator/index.parts.js.map +1 -0
  249. package/dist/default/ui/seek-indicator/seek-indicator-root.js +30 -0
  250. package/dist/default/ui/seek-indicator/seek-indicator-root.js.map +1 -0
  251. package/dist/default/ui/seek-indicator/seek-indicator-value.js +23 -0
  252. package/dist/default/ui/seek-indicator/seek-indicator-value.js.map +1 -0
  253. package/dist/default/ui/slider/context.js.map +1 -1
  254. package/dist/default/ui/status-announcer/index.js +2 -0
  255. package/dist/default/ui/status-announcer/status-announcer.js +36 -0
  256. package/dist/default/ui/status-announcer/status-announcer.js.map +1 -0
  257. package/dist/default/ui/status-indicator/context.js +20 -0
  258. package/dist/default/ui/status-indicator/context.js.map +1 -0
  259. package/dist/default/ui/status-indicator/index.js +2 -0
  260. package/dist/default/ui/status-indicator/index.parts.js +12 -0
  261. package/dist/default/ui/status-indicator/index.parts.js.map +1 -0
  262. package/dist/default/ui/status-indicator/status-indicator-root.js +34 -0
  263. package/dist/default/ui/status-indicator/status-indicator-root.js.map +1 -0
  264. package/dist/default/ui/status-indicator/status-indicator-value.js +23 -0
  265. package/dist/default/ui/status-indicator/status-indicator-value.js.map +1 -0
  266. package/dist/default/ui/tooltip/context.js.map +1 -1
  267. package/dist/default/ui/tooltip/tooltip-popup.js +20 -7
  268. package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
  269. package/dist/default/ui/tooltip/tooltip-root.js +16 -4
  270. package/dist/default/ui/tooltip/tooltip-root.js.map +1 -1
  271. package/dist/default/ui/volume-indicator/context.js +20 -0
  272. package/dist/default/ui/volume-indicator/context.js.map +1 -0
  273. package/dist/default/ui/volume-indicator/index.js +2 -0
  274. package/dist/default/ui/volume-indicator/index.parts.js +14 -0
  275. package/dist/default/ui/volume-indicator/index.parts.js.map +1 -0
  276. package/dist/default/ui/volume-indicator/volume-indicator-fill.js +36 -0
  277. package/dist/default/ui/volume-indicator/volume-indicator-fill.js.map +1 -0
  278. package/dist/default/ui/volume-indicator/volume-indicator-root.js +30 -0
  279. package/dist/default/ui/volume-indicator/volume-indicator-root.js.map +1 -0
  280. package/dist/default/ui/volume-indicator/volume-indicator-value.js +23 -0
  281. package/dist/default/ui/volume-indicator/volume-indicator-value.js.map +1 -0
  282. package/dist/default/utils/use-render.js.map +1 -1
  283. package/dist/dev/icons/dist/react/default/captions-off.js +1 -0
  284. package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -1
  285. package/dist/dev/icons/dist/react/default/captions-on.js +3 -5
  286. package/dist/dev/icons/dist/react/default/captions-on.js.map +1 -1
  287. package/dist/dev/icons/dist/react/default/cast-enter.js +38 -11
  288. package/dist/dev/icons/dist/react/default/cast-enter.js.map +1 -1
  289. package/dist/dev/icons/dist/react/default/cast-exit.js +55 -14
  290. package/dist/dev/icons/dist/react/default/cast-exit.js.map +1 -1
  291. package/dist/dev/icons/dist/react/default/check.js +22 -0
  292. package/dist/dev/icons/dist/react/default/check.js.map +1 -0
  293. package/dist/dev/icons/dist/react/default/chevron.js +21 -0
  294. package/dist/dev/icons/dist/react/default/chevron.js.map +1 -0
  295. package/dist/dev/icons/dist/react/default/fullscreen-enter.js +3 -5
  296. package/dist/dev/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  297. package/dist/dev/icons/dist/react/default/fullscreen-exit.js +3 -5
  298. package/dist/dev/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  299. package/dist/dev/icons/dist/react/default/index.d.ts +23 -0
  300. package/dist/dev/icons/dist/react/default/index.d.ts.map +1 -0
  301. package/dist/dev/icons/dist/react/default/pause.js +2 -3
  302. package/dist/dev/icons/dist/react/default/pause.js.map +1 -1
  303. package/dist/dev/icons/dist/react/default/pip-enter.js +4 -10
  304. package/dist/dev/icons/dist/react/default/pip-enter.js.map +1 -1
  305. package/dist/dev/icons/dist/react/default/pip-exit.js +4 -10
  306. package/dist/dev/icons/dist/react/default/pip-exit.js.map +1 -1
  307. package/dist/dev/icons/dist/react/default/play.js +3 -5
  308. package/dist/dev/icons/dist/react/default/play.js.map +1 -1
  309. package/dist/dev/icons/dist/react/default/restart.js +3 -8
  310. package/dist/dev/icons/dist/react/default/restart.js.map +1 -1
  311. package/dist/dev/icons/dist/react/default/seek.js +3 -5
  312. package/dist/dev/icons/dist/react/default/seek.js.map +1 -1
  313. package/dist/dev/icons/dist/react/default/spinner.js +38 -117
  314. package/dist/dev/icons/dist/react/default/spinner.js.map +1 -1
  315. package/dist/dev/icons/dist/react/default/volume-high.js +3 -8
  316. package/dist/dev/icons/dist/react/default/volume-high.js.map +1 -1
  317. package/dist/dev/icons/dist/react/default/volume-low.js +3 -5
  318. package/dist/dev/icons/dist/react/default/volume-low.js.map +1 -1
  319. package/dist/dev/icons/dist/react/default/volume-off.js +3 -5
  320. package/dist/dev/icons/dist/react/default/volume-off.js.map +1 -1
  321. package/dist/dev/icons/dist/react/minimal/captions-off.js +1 -0
  322. package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -1
  323. package/dist/dev/icons/dist/react/minimal/captions-on.js +3 -5
  324. package/dist/dev/icons/dist/react/minimal/captions-on.js.map +1 -1
  325. package/dist/dev/icons/dist/react/minimal/cast-enter.js +38 -7
  326. package/dist/dev/icons/dist/react/minimal/cast-enter.js.map +1 -1
  327. package/dist/dev/icons/dist/react/minimal/cast-exit.js +56 -11
  328. package/dist/dev/icons/dist/react/minimal/cast-exit.js.map +1 -1
  329. package/dist/dev/icons/dist/react/minimal/check.js +22 -0
  330. package/dist/dev/icons/dist/react/minimal/check.js.map +1 -0
  331. package/dist/dev/icons/dist/react/minimal/chevron.js +21 -0
  332. package/dist/dev/icons/dist/react/minimal/chevron.js.map +1 -0
  333. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js +5 -13
  334. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  335. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js +5 -13
  336. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  337. package/dist/dev/icons/dist/react/minimal/index.d.ts +23 -0
  338. package/dist/dev/icons/dist/react/minimal/index.d.ts.map +1 -0
  339. package/dist/dev/icons/dist/react/minimal/pause.js +2 -3
  340. package/dist/dev/icons/dist/react/minimal/pause.js.map +1 -1
  341. package/dist/dev/icons/dist/react/minimal/pip-enter.js +5 -14
  342. package/dist/dev/icons/dist/react/minimal/pip-enter.js.map +1 -1
  343. package/dist/dev/icons/dist/react/minimal/pip-exit.js +5 -14
  344. package/dist/dev/icons/dist/react/minimal/pip-exit.js.map +1 -1
  345. package/dist/dev/icons/dist/react/minimal/play.js +3 -5
  346. package/dist/dev/icons/dist/react/minimal/play.js.map +1 -1
  347. package/dist/dev/icons/dist/react/minimal/restart.js +3 -8
  348. package/dist/dev/icons/dist/react/minimal/restart.js.map +1 -1
  349. package/dist/dev/icons/dist/react/minimal/seek.js +3 -5
  350. package/dist/dev/icons/dist/react/minimal/seek.js.map +1 -1
  351. package/dist/dev/icons/dist/react/minimal/spinner.js +38 -117
  352. package/dist/dev/icons/dist/react/minimal/spinner.js.map +1 -1
  353. package/dist/dev/icons/dist/react/minimal/volume-high.js +3 -8
  354. package/dist/dev/icons/dist/react/minimal/volume-high.js.map +1 -1
  355. package/dist/dev/icons/dist/react/minimal/volume-low.js +3 -5
  356. package/dist/dev/icons/dist/react/minimal/volume-low.js.map +1 -1
  357. package/dist/dev/icons/dist/react/minimal/volume-off.js +3 -5
  358. package/dist/dev/icons/dist/react/minimal/volume-off.js.map +1 -1
  359. package/dist/dev/icons/index.d.ts +2 -0
  360. package/dist/dev/icons/index.js +19 -0
  361. package/dist/dev/icons/minimal/index.d.ts +2 -0
  362. package/dist/dev/icons/minimal/index.js +19 -0
  363. package/dist/dev/index.d.ts +25 -8
  364. package/dist/dev/index.js +17 -8
  365. package/dist/dev/media/simple-hls-video/index.d.ts +2 -2
  366. package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -1
  367. package/dist/dev/media/simple-hls-video/index.js +2 -2
  368. package/dist/dev/media/simple-hls-video/index.js.map +1 -1
  369. package/dist/dev/player/context.d.ts +5 -2
  370. package/dist/dev/player/context.d.ts.map +1 -1
  371. package/dist/dev/player/context.js +9 -1
  372. package/dist/dev/player/context.js.map +1 -1
  373. package/dist/dev/player/create-player.d.ts.map +1 -1
  374. package/dist/dev/player/create-player.js +4 -1
  375. package/dist/dev/player/create-player.js.map +1 -1
  376. package/dist/dev/presets/audio/minimal-skin.css +209 -99
  377. package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
  378. package/dist/dev/presets/audio/minimal-skin.js +107 -7
  379. package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
  380. package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
  381. package/dist/dev/presets/audio/minimal-skin.tailwind.js +41 -7
  382. package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
  383. package/dist/dev/presets/audio/skin.css +235 -99
  384. package/dist/dev/presets/audio/skin.d.ts.map +1 -1
  385. package/dist/dev/presets/audio/skin.js +42 -7
  386. package/dist/dev/presets/audio/skin.js.map +1 -1
  387. package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
  388. package/dist/dev/presets/audio/skin.tailwind.js +115 -14
  389. package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
  390. package/dist/dev/presets/live-audio/minimal-skin.css +209 -99
  391. package/dist/dev/presets/live-audio/minimal-skin.d.ts.map +1 -1
  392. package/dist/dev/presets/live-audio/minimal-skin.js +32 -4
  393. package/dist/dev/presets/live-audio/minimal-skin.js.map +1 -1
  394. package/dist/dev/presets/live-audio/minimal-skin.tailwind.d.ts.map +1 -1
  395. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js +32 -4
  396. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  397. package/dist/dev/presets/live-audio/skin.css +235 -99
  398. package/dist/dev/presets/live-audio/skin.d.ts.map +1 -1
  399. package/dist/dev/presets/live-audio/skin.js +9 -4
  400. package/dist/dev/presets/live-audio/skin.js.map +1 -1
  401. package/dist/dev/presets/live-audio/skin.tailwind.d.ts.map +1 -1
  402. package/dist/dev/presets/live-audio/skin.tailwind.js +37 -9
  403. package/dist/dev/presets/live-audio/skin.tailwind.js.map +1 -1
  404. package/dist/dev/presets/live-video/minimal-skin.css +553 -138
  405. package/dist/dev/presets/live-video/minimal-skin.d.ts.map +1 -1
  406. package/dist/dev/presets/live-video/minimal-skin.js +112 -4
  407. package/dist/dev/presets/live-video/minimal-skin.js.map +1 -1
  408. package/dist/dev/presets/live-video/minimal-skin.tailwind.d.ts.map +1 -1
  409. package/dist/dev/presets/live-video/minimal-skin.tailwind.js +114 -4
  410. package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  411. package/dist/dev/presets/live-video/skin.css +563 -136
  412. package/dist/dev/presets/live-video/skin.d.ts.map +1 -1
  413. package/dist/dev/presets/live-video/skin.js +55 -3
  414. package/dist/dev/presets/live-video/skin.js.map +1 -1
  415. package/dist/dev/presets/live-video/skin.tailwind.d.ts.map +1 -1
  416. package/dist/dev/presets/live-video/skin.tailwind.js +201 -8
  417. package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -1
  418. package/dist/dev/presets/video/minimal-skin.css +553 -138
  419. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  420. package/dist/dev/presets/video/minimal-skin.js +205 -23
  421. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  422. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  423. package/dist/dev/presets/video/minimal-skin.tailwind.js +209 -24
  424. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  425. package/dist/dev/presets/video/skin.css +563 -136
  426. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  427. package/dist/dev/presets/video/skin.js +100 -28
  428. package/dist/dev/presets/video/skin.js.map +1 -1
  429. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  430. package/dist/dev/presets/video/skin.tailwind.js +208 -29
  431. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  432. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +3 -2
  433. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  434. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js +1 -1
  435. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  436. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +3 -2
  437. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  438. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +1 -1
  439. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  440. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js +1 -1
  441. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  442. package/dist/dev/skins/dist/default/default/tailwind/components/input-feedback.js +40 -0
  443. package/dist/dev/skins/dist/default/default/tailwind/components/input-feedback.js.map +1 -0
  444. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js +12 -0
  445. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js.map +1 -0
  446. package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js +1 -1
  447. package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -1
  448. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js +1 -1
  449. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js.map +1 -1
  450. package/dist/dev/skins/dist/default/default/tailwind/components/reset.js +7 -0
  451. package/dist/dev/skins/dist/default/default/tailwind/components/reset.js.map +1 -0
  452. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +2 -1
  453. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  454. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +1 -1
  455. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  456. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +13 -4
  457. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  458. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +5 -3
  459. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  460. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  461. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  462. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +3 -2
  463. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  464. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  465. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  466. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js +1 -1
  467. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  468. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-feedback.js +41 -0
  469. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +1 -0
  470. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js +12 -0
  471. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -0
  472. package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js +6 -0
  473. package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -0
  474. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js +1 -1
  475. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -1
  476. package/dist/dev/skins/dist/default/minimal/tailwind/components/reset.js +7 -0
  477. package/dist/dev/skins/dist/default/minimal/tailwind/components/reset.js.map +1 -0
  478. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +2 -1
  479. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  480. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +1 -1
  481. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  482. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -4
  483. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  484. package/dist/dev/tailwind.css +66 -0
  485. package/dist/dev/ui/controls/context.js +4 -1
  486. package/dist/dev/ui/controls/context.js.map +1 -1
  487. package/dist/dev/ui/gesture/gesture.js +2 -1
  488. package/dist/dev/ui/gesture/gesture.js.map +1 -1
  489. package/dist/dev/ui/gesture/index.d.ts +2 -0
  490. package/dist/dev/ui/gesture/index.js +2 -0
  491. package/dist/dev/ui/hotkey/hotkey.d.ts.map +1 -1
  492. package/dist/dev/ui/hotkey/hotkey.js +1 -0
  493. package/dist/dev/ui/hotkey/hotkey.js.map +1 -1
  494. package/dist/dev/ui/hotkey/index.d.ts +2 -0
  495. package/dist/dev/ui/hotkey/index.js +2 -0
  496. package/dist/dev/ui/input-indicators/use-indicator-visibility.js +25 -0
  497. package/dist/dev/ui/input-indicators/use-indicator-visibility.js.map +1 -0
  498. package/dist/dev/ui/input-indicators/use-input-action-subscription.js +22 -0
  499. package/dist/dev/ui/input-indicators/use-input-action-subscription.js.map +1 -0
  500. package/dist/dev/ui/input-indicators/use-input-indicator-root.js +21 -0
  501. package/dist/dev/ui/input-indicators/use-input-indicator-root.js.map +1 -0
  502. package/dist/dev/ui/input-indicators/use-rendered-indicator-state.js +40 -0
  503. package/dist/dev/ui/input-indicators/use-rendered-indicator-state.js.map +1 -0
  504. package/dist/dev/ui/live-button/index.d.ts +2 -0
  505. package/dist/dev/ui/live-button/index.js +2 -0
  506. package/dist/dev/ui/live-button/live-button.d.ts +34 -0
  507. package/dist/dev/ui/live-button/live-button.d.ts.map +1 -0
  508. package/dist/dev/ui/live-button/live-button.js +92 -0
  509. package/dist/dev/ui/live-button/live-button.js.map +1 -0
  510. package/dist/dev/ui/menu/context.d.ts +29 -0
  511. package/dist/dev/ui/menu/context.d.ts.map +1 -0
  512. package/dist/dev/ui/menu/context.js +29 -0
  513. package/dist/dev/ui/menu/context.js.map +1 -0
  514. package/dist/dev/ui/menu/index.d.ts +3 -0
  515. package/dist/dev/ui/menu/index.js +3 -0
  516. package/dist/dev/ui/menu/index.parts.d.ts +21 -0
  517. package/dist/dev/ui/menu/index.parts.d.ts.map +1 -0
  518. package/dist/dev/ui/menu/index.parts.js +34 -0
  519. package/dist/dev/ui/menu/index.parts.js.map +1 -0
  520. package/dist/dev/ui/menu/menu-back.d.ts +18 -0
  521. package/dist/dev/ui/menu/menu-back.d.ts.map +1 -0
  522. package/dist/dev/ui/menu/menu-back.js +31 -0
  523. package/dist/dev/ui/menu/menu-back.js.map +1 -0
  524. package/dist/dev/ui/menu/menu-checkbox-item.d.ts +22 -0
  525. package/dist/dev/ui/menu/menu-checkbox-item.d.ts.map +1 -0
  526. package/dist/dev/ui/menu/menu-checkbox-item.js +50 -0
  527. package/dist/dev/ui/menu/menu-checkbox-item.js.map +1 -0
  528. package/dist/dev/ui/menu/menu-content.d.ts +15 -0
  529. package/dist/dev/ui/menu/menu-content.d.ts.map +1 -0
  530. package/dist/dev/ui/menu/menu-content.js +284 -0
  531. package/dist/dev/ui/menu/menu-content.js.map +1 -0
  532. package/dist/dev/ui/menu/menu-group.d.ts +18 -0
  533. package/dist/dev/ui/menu/menu-group.d.ts.map +1 -0
  534. package/dist/dev/ui/menu/menu-group.js +26 -0
  535. package/dist/dev/ui/menu/menu-group.js.map +1 -0
  536. package/dist/dev/ui/menu/menu-item-indicator.d.ts +20 -0
  537. package/dist/dev/ui/menu/menu-item-indicator.d.ts.map +1 -0
  538. package/dist/dev/ui/menu/menu-item-indicator.js +24 -0
  539. package/dist/dev/ui/menu/menu-item-indicator.js.map +1 -0
  540. package/dist/dev/ui/menu/menu-item.d.ts +20 -0
  541. package/dist/dev/ui/menu/menu-item.d.ts.map +1 -0
  542. package/dist/dev/ui/menu/menu-item.js +53 -0
  543. package/dist/dev/ui/menu/menu-item.js.map +1 -0
  544. package/dist/dev/ui/menu/menu-label.d.ts +15 -0
  545. package/dist/dev/ui/menu/menu-label.d.ts.map +1 -0
  546. package/dist/dev/ui/menu/menu-label.js +23 -0
  547. package/dist/dev/ui/menu/menu-label.js.map +1 -0
  548. package/dist/dev/ui/menu/menu-radio-group.d.ts +22 -0
  549. package/dist/dev/ui/menu/menu-radio-group.d.ts.map +1 -0
  550. package/dist/dev/ui/menu/menu-radio-group.js +33 -0
  551. package/dist/dev/ui/menu/menu-radio-group.js.map +1 -0
  552. package/dist/dev/ui/menu/menu-radio-item.d.ts +20 -0
  553. package/dist/dev/ui/menu/menu-radio-item.d.ts.map +1 -0
  554. package/dist/dev/ui/menu/menu-radio-item.js +57 -0
  555. package/dist/dev/ui/menu/menu-radio-item.js.map +1 -0
  556. package/dist/dev/ui/menu/menu-root.d.ts +29 -0
  557. package/dist/dev/ui/menu/menu-root.d.ts.map +1 -0
  558. package/dist/dev/ui/menu/menu-root.js +136 -0
  559. package/dist/dev/ui/menu/menu-root.js.map +1 -0
  560. package/dist/dev/ui/menu/menu-separator.d.ts +15 -0
  561. package/dist/dev/ui/menu/menu-separator.d.ts.map +1 -0
  562. package/dist/dev/ui/menu/menu-separator.js +23 -0
  563. package/dist/dev/ui/menu/menu-separator.js.map +1 -0
  564. package/dist/dev/ui/menu/menu-trigger.d.ts +22 -0
  565. package/dist/dev/ui/menu/menu-trigger.d.ts.map +1 -0
  566. package/dist/dev/ui/menu/menu-trigger.js +124 -0
  567. package/dist/dev/ui/menu/menu-trigger.js.map +1 -0
  568. package/dist/dev/ui/menu/menu-view.d.ts +15 -0
  569. package/dist/dev/ui/menu/menu-view.d.ts.map +1 -0
  570. package/dist/dev/ui/menu/menu-view.js +23 -0
  571. package/dist/dev/ui/menu/menu-view.js.map +1 -0
  572. package/dist/dev/ui/playback-rate-menu/context.js +20 -0
  573. package/dist/dev/ui/playback-rate-menu/context.js.map +1 -0
  574. package/dist/dev/ui/playback-rate-menu/index.d.ts +3 -0
  575. package/dist/dev/ui/playback-rate-menu/index.js +3 -0
  576. package/dist/dev/ui/playback-rate-menu/index.parts.d.ts +12 -0
  577. package/dist/dev/ui/playback-rate-menu/index.parts.d.ts.map +1 -0
  578. package/dist/dev/ui/playback-rate-menu/index.parts.js +17 -0
  579. package/dist/dev/ui/playback-rate-menu/index.parts.js.map +1 -0
  580. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-content.d.ts +14 -0
  581. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-content.d.ts.map +1 -0
  582. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-content.js +28 -0
  583. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-content.js.map +1 -0
  584. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-root.d.ts +23 -0
  585. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-root.d.ts.map +1 -0
  586. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-root.js +39 -0
  587. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-root.js.map +1 -0
  588. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger.d.ts +14 -0
  589. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger.d.ts.map +1 -0
  590. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger.js +51 -0
  591. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger.js.map +1 -0
  592. package/dist/dev/ui/playback-rate-menu/use-playback-rate-menu.d.ts +26 -0
  593. package/dist/dev/ui/playback-rate-menu/use-playback-rate-menu.d.ts.map +1 -0
  594. package/dist/dev/ui/playback-rate-menu/use-playback-rate-menu.js +27 -0
  595. package/dist/dev/ui/playback-rate-menu/use-playback-rate-menu.js.map +1 -0
  596. package/dist/dev/ui/popover/context.d.ts +3 -1
  597. package/dist/dev/ui/popover/context.d.ts.map +1 -1
  598. package/dist/dev/ui/popover/context.js.map +1 -1
  599. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
  600. package/dist/dev/ui/popover/popover-popup.js +20 -7
  601. package/dist/dev/ui/popover/popover-popup.js.map +1 -1
  602. package/dist/dev/ui/popover/popover-root.d.ts +4 -1
  603. package/dist/dev/ui/popover/popover-root.d.ts.map +1 -1
  604. package/dist/dev/ui/popover/popover-root.js +20 -5
  605. package/dist/dev/ui/popover/popover-root.js.map +1 -1
  606. package/dist/dev/ui/seek-indicator/context.js +20 -0
  607. package/dist/dev/ui/seek-indicator/context.js.map +1 -0
  608. package/dist/dev/ui/seek-indicator/index.d.ts +2 -0
  609. package/dist/dev/ui/seek-indicator/index.js +2 -0
  610. package/dist/dev/ui/seek-indicator/index.parts.d.ts +10 -0
  611. package/dist/dev/ui/seek-indicator/index.parts.d.ts.map +1 -0
  612. package/dist/dev/ui/seek-indicator/index.parts.js +12 -0
  613. package/dist/dev/ui/seek-indicator/index.parts.js.map +1 -0
  614. package/dist/dev/ui/seek-indicator/seek-indicator-root.d.ts +14 -0
  615. package/dist/dev/ui/seek-indicator/seek-indicator-root.d.ts.map +1 -0
  616. package/dist/dev/ui/seek-indicator/seek-indicator-root.js +30 -0
  617. package/dist/dev/ui/seek-indicator/seek-indicator-root.js.map +1 -0
  618. package/dist/dev/ui/seek-indicator/seek-indicator-value.d.ts +13 -0
  619. package/dist/dev/ui/seek-indicator/seek-indicator-value.d.ts.map +1 -0
  620. package/dist/dev/ui/seek-indicator/seek-indicator-value.js +23 -0
  621. package/dist/dev/ui/seek-indicator/seek-indicator-value.js.map +1 -0
  622. package/dist/dev/ui/slider/context.js.map +1 -1
  623. package/dist/dev/ui/status-announcer/index.d.ts +2 -0
  624. package/dist/dev/ui/status-announcer/index.js +2 -0
  625. package/dist/dev/ui/status-announcer/status-announcer.d.ts +14 -0
  626. package/dist/dev/ui/status-announcer/status-announcer.d.ts.map +1 -0
  627. package/dist/dev/ui/status-announcer/status-announcer.js +36 -0
  628. package/dist/dev/ui/status-announcer/status-announcer.js.map +1 -0
  629. package/dist/dev/ui/status-indicator/context.js +20 -0
  630. package/dist/dev/ui/status-indicator/context.js.map +1 -0
  631. package/dist/dev/ui/status-indicator/index.d.ts +2 -0
  632. package/dist/dev/ui/status-indicator/index.js +2 -0
  633. package/dist/dev/ui/status-indicator/index.parts.d.ts +10 -0
  634. package/dist/dev/ui/status-indicator/index.parts.d.ts.map +1 -0
  635. package/dist/dev/ui/status-indicator/index.parts.js +12 -0
  636. package/dist/dev/ui/status-indicator/index.parts.js.map +1 -0
  637. package/dist/dev/ui/status-indicator/status-indicator-root.d.ts +14 -0
  638. package/dist/dev/ui/status-indicator/status-indicator-root.d.ts.map +1 -0
  639. package/dist/dev/ui/status-indicator/status-indicator-root.js +34 -0
  640. package/dist/dev/ui/status-indicator/status-indicator-root.js.map +1 -0
  641. package/dist/dev/ui/status-indicator/status-indicator-value.d.ts +13 -0
  642. package/dist/dev/ui/status-indicator/status-indicator-value.d.ts.map +1 -0
  643. package/dist/dev/ui/status-indicator/status-indicator-value.js +23 -0
  644. package/dist/dev/ui/status-indicator/status-indicator-value.js.map +1 -0
  645. package/dist/dev/ui/tooltip/context.d.ts +3 -1
  646. package/dist/dev/ui/tooltip/context.d.ts.map +1 -1
  647. package/dist/dev/ui/tooltip/context.js.map +1 -1
  648. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  649. package/dist/dev/ui/tooltip/tooltip-popup.js +20 -7
  650. package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
  651. package/dist/dev/ui/tooltip/tooltip-root.d.ts +4 -1
  652. package/dist/dev/ui/tooltip/tooltip-root.d.ts.map +1 -1
  653. package/dist/dev/ui/tooltip/tooltip-root.js +16 -4
  654. package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -1
  655. package/dist/dev/ui/volume-indicator/context.js +20 -0
  656. package/dist/dev/ui/volume-indicator/context.js.map +1 -0
  657. package/dist/dev/ui/volume-indicator/index.d.ts +2 -0
  658. package/dist/dev/ui/volume-indicator/index.js +2 -0
  659. package/dist/dev/ui/volume-indicator/index.parts.d.ts +11 -0
  660. package/dist/dev/ui/volume-indicator/index.parts.d.ts.map +1 -0
  661. package/dist/dev/ui/volume-indicator/index.parts.js +14 -0
  662. package/dist/dev/ui/volume-indicator/index.parts.js.map +1 -0
  663. package/dist/dev/ui/volume-indicator/volume-indicator-fill.d.ts +13 -0
  664. package/dist/dev/ui/volume-indicator/volume-indicator-fill.d.ts.map +1 -0
  665. package/dist/dev/ui/volume-indicator/volume-indicator-fill.js +36 -0
  666. package/dist/dev/ui/volume-indicator/volume-indicator-fill.js.map +1 -0
  667. package/dist/dev/ui/volume-indicator/volume-indicator-root.d.ts +14 -0
  668. package/dist/dev/ui/volume-indicator/volume-indicator-root.d.ts.map +1 -0
  669. package/dist/dev/ui/volume-indicator/volume-indicator-root.js +30 -0
  670. package/dist/dev/ui/volume-indicator/volume-indicator-root.js.map +1 -0
  671. package/dist/dev/ui/volume-indicator/volume-indicator-value.d.ts +13 -0
  672. package/dist/dev/ui/volume-indicator/volume-indicator-value.d.ts.map +1 -0
  673. package/dist/dev/ui/volume-indicator/volume-indicator-value.js +23 -0
  674. package/dist/dev/ui/volume-indicator/volume-indicator-value.js.map +1 -0
  675. package/dist/dev/utils/use-render.js.map +1 -1
  676. package/docs/README.md +7 -0
  677. package/docs/concepts/accessibility.md +60 -0
  678. package/docs/concepts/browser-support.md +37 -0
  679. package/docs/concepts/features.md +131 -0
  680. package/docs/concepts/overview.md +119 -0
  681. package/docs/concepts/presets.md +204 -0
  682. package/docs/concepts/skins.md +2094 -0
  683. package/docs/concepts/ui-components.md +83 -0
  684. package/docs/concepts/v10-roadmap.md +75 -0
  685. package/docs/concepts/why-videojs.md +113 -0
  686. package/docs/how-to/build-with-ai.md +39 -0
  687. package/docs/how-to/build-your-own-component.md +142 -0
  688. package/docs/how-to/customize-skins.md +5990 -0
  689. package/docs/how-to/installation.md +170 -0
  690. package/docs/llms.txt +91 -0
  691. package/docs/reference/buffering-indicator.md +152 -0
  692. package/docs/reference/captions-button.md +200 -0
  693. package/docs/reference/controls.md +238 -0
  694. package/docs/reference/create-player.md +261 -0
  695. package/docs/reference/create-selector.md +59 -0
  696. package/docs/reference/feature-buffer.md +54 -0
  697. package/docs/reference/feature-controls.md +74 -0
  698. package/docs/reference/feature-error.md +65 -0
  699. package/docs/reference/feature-fullscreen.md +94 -0
  700. package/docs/reference/feature-live.md +62 -0
  701. package/docs/reference/feature-pip.md +94 -0
  702. package/docs/reference/feature-playback-rate.md +70 -0
  703. package/docs/reference/feature-playback.md +109 -0
  704. package/docs/reference/feature-remote-playback.md +74 -0
  705. package/docs/reference/feature-source.md +70 -0
  706. package/docs/reference/feature-stream-type.md +46 -0
  707. package/docs/reference/feature-text-tracks.md +104 -0
  708. package/docs/reference/feature-time.md +84 -0
  709. package/docs/reference/feature-volume.md +99 -0
  710. package/docs/reference/fullscreen-button.md +212 -0
  711. package/docs/reference/mute-button.md +276 -0
  712. package/docs/reference/pip-button.md +212 -0
  713. package/docs/reference/play-button.md +224 -0
  714. package/docs/reference/playback-rate-button.md +169 -0
  715. package/docs/reference/player-container.md +103 -0
  716. package/docs/reference/player-provider.md +102 -0
  717. package/docs/reference/popover.md +527 -0
  718. package/docs/reference/poster.md +137 -0
  719. package/docs/reference/render-element.md +196 -0
  720. package/docs/reference/seek-button.md +213 -0
  721. package/docs/reference/slider.md +826 -0
  722. package/docs/reference/thumbnail.md +322 -0
  723. package/docs/reference/time-slider.md +741 -0
  724. package/docs/reference/time.md +495 -0
  725. package/docs/reference/tooltip.md +631 -0
  726. package/docs/reference/use-button.md +124 -0
  727. package/docs/reference/use-container-attach.md +42 -0
  728. package/docs/reference/use-media-attach.md +46 -0
  729. package/docs/reference/use-media.md +11 -0
  730. package/docs/reference/use-player-context.md +93 -0
  731. package/docs/reference/use-player.md +226 -0
  732. package/docs/reference/use-selector.md +132 -0
  733. package/docs/reference/use-snapshot.md +127 -0
  734. package/docs/reference/use-store.md +257 -0
  735. package/docs/reference/volume-slider.md +716 -0
  736. package/package.json +23 -10
@@ -0,0 +1,6 @@
1
+ //#region ../skins/dist/default/minimal/tailwind/components/playback-rate.js
2
+ const playbackRate = { button: `tabular-nums after:w-[4ch] after:content-[attr(data-rate)_'×'] data-[inline-rate-label]:after:content-none` };
3
+ //#endregion
4
+ export { playbackRate };
5
+
6
+ //# sourceMappingURL=playback-rate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playback-rate.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/playback-rate.js"],"sourcesContent":["//#region src/minimal/tailwind/components/playback-rate.ts\nconst playbackRate = { button: `tabular-nums after:w-[4ch] after:content-[attr(data-rate)_'×'] data-[inline-rate-label]:after:content-none` };\n//#endregion\nexport { playbackRate };\n\n//# sourceMappingURL=playback-rate.js.map"],"mappings":";AACA,MAAM,eAAe,EAAE,QAAQ,8GAA8G"}
@@ -5,7 +5,7 @@ const preview = {
5
5
  thumbnailWrapper: "relative rounded-lg bg-black/90",
6
6
  thumbnail: cn("block rounded-[inherit] transition-opacity duration-150 ease-out", "data-loading:opacity-0"),
7
7
  time: "mt-2 block text-center tabular-nums",
8
- spinner: cn("absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 opacity-0", "transition-opacity duration-150 ease-out", "group-has-[[role=img][data-loading]]/preview:opacity-100")
8
+ spinner: cn("absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 opacity-0", "transition-opacity duration-150 ease-out", "group-not-has-[[role=img][data-loading]]/preview:[--media-spinner-animation:none] group-has-[[role=img][data-loading]]/preview:opacity-100")
9
9
  };
10
10
  //#endregion
11
11
  export { preview };
@@ -1 +1 @@
1
- {"version":3,"file":"preview.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/preview.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/components/preview.ts\nconst preview = {\n\troot: \"group/preview pointer-events-none\",\n\tthumbnailWrapper: \"relative rounded-lg bg-black/90\",\n\tthumbnail: cn(\"block rounded-[inherit] transition-opacity duration-150 ease-out\", \"data-loading:opacity-0\"),\n\ttime: \"mt-2 block text-center tabular-nums\",\n\tspinner: cn(\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 opacity-0\", \"transition-opacity duration-150 ease-out\", \"group-has-[[role=img][data-loading]]/preview:opacity-100\")\n};\n//#endregion\nexport { preview };\n\n//# sourceMappingURL=preview.js.map"],"mappings":";;AAEA,MAAM,UAAU;CACf,MAAM;CACN,kBAAkB;CAClB,WAAW,GAAG,oEAAoE,yBAAyB;CAC3G,MAAM;CACN,SAAS,GAAG,yEAAyE,4CAA4C,2DAA2D;CAC5L"}
1
+ {"version":3,"file":"preview.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/preview.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/components/preview.ts\nconst preview = {\n\troot: \"group/preview pointer-events-none\",\n\tthumbnailWrapper: \"relative rounded-lg bg-black/90\",\n\tthumbnail: cn(\"block rounded-[inherit] transition-opacity duration-150 ease-out\", \"data-loading:opacity-0\"),\n\ttime: \"mt-2 block text-center tabular-nums\",\n\tspinner: cn(\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 opacity-0\", \"transition-opacity duration-150 ease-out\", \"group-not-has-[[role=img][data-loading]]/preview:[--media-spinner-animation:none] group-has-[[role=img][data-loading]]/preview:opacity-100\")\n};\n//#endregion\nexport { preview };\n\n//# sourceMappingURL=preview.js.map"],"mappings":";;AAEA,MAAM,UAAU;CACf,MAAM;CACN,kBAAkB;CAClB,WAAW,GAAG,oEAAoE,yBAAyB;CAC3G,MAAM;CACN,SAAS,GAAG,yEAAyE,4CAA4C,6IAA6I;CAC9Q"}
@@ -0,0 +1,7 @@
1
+ import { cn } from "@videojs/utils/style";
2
+ //#region ../skins/dist/default/minimal/tailwind/components/reset.js
3
+ const reset = cn("**:box-border", "[&_[hidden][hidden]]:hidden", "[&_button]:font-[inherit]", "motion-safe:[interpolate-size:allow-keywords]");
4
+ //#endregion
5
+ export { reset };
6
+
7
+ //# sourceMappingURL=reset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/reset.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/components/reset.ts\nconst reset = cn(\"**:box-border\", \"[&_[hidden][hidden]]:hidden\", \"[&_button]:font-[inherit]\", \"motion-safe:[interpolate-size:allow-keywords]\");\n//#endregion\nexport { reset };\n\n//# sourceMappingURL=reset.js.map"],"mappings":";;AAEA,MAAM,QAAQ,GAAG,iBAAiB,+BAA+B,6BAA6B,gDAAgD"}
@@ -1,6 +1,7 @@
1
+ import { reset } from "./reset.js";
1
2
  import { cn } from "@videojs/utils/style";
2
3
  //#region ../skins/dist/default/minimal/tailwind/components/root.js
3
- const root = cn("block relative isolate @container/media-root", "rounded-(--media-border-radius,0.75rem)", "font-[Inter_Variable,Inter,ui-sans-serif,system-ui,sans-serif] leading-normal subpixel-antialiased", "[&>*]:text-xs @3xl/media-root:[&>*]:text-sm", "**:box-border", "[&_button]:font-[inherit]", "motion-safe:[interpolate-size:allow-keywords]");
4
+ const root = cn(reset, "block relative isolate h-full w-full @container/media-root", "rounded-(--media-border-radius,0.75rem)", "font-[Inter_Variable,Inter,ui-sans-serif,system-ui,sans-serif] text-[0.8125rem] leading-normal subpixel-antialiased", "outline-2 outline-transparent -outline-offset-4", "transition-[outline-offset,outline-color] duration-100 ease-out", "focus-visible:outline-current focus-visible:outline-offset-2", "[--media-current-shadow-color:oklch(from_currentColor_0_0_0/clamp(0,calc((l-0.5)*0.5),0.15))]", "[--media-current-shadow-color-subtle:oklch(from_var(--media-current-shadow-color)_l_c_h/calc(alpha*0.4))]", "[--media-icon-size:18px]");
4
5
  //#endregion
5
6
  export { root };
6
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"root.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/root.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/components/root.ts\nconst root = cn(\"block relative isolate @container/media-root\", \"rounded-(--media-border-radius,0.75rem)\", \"font-[Inter_Variable,Inter,ui-sans-serif,system-ui,sans-serif] leading-normal subpixel-antialiased\", \"[&>*]:text-xs @3xl/media-root:[&>*]:text-sm\", \"**:box-border\", \"[&_button]:font-[inherit]\", \"motion-safe:[interpolate-size:allow-keywords]\");\n//#endregion\nexport { root };\n\n//# sourceMappingURL=root.js.map"],"mappings":";;AAEA,MAAM,OAAO,GAAG,gDAAgD,2CAA2C,sGAAsG,+CAA+C,iBAAiB,6BAA6B,gDAAgD"}
1
+ {"version":3,"file":"root.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/root.js"],"sourcesContent":["import { reset } from \"./reset.js\";\nimport { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/components/root.ts\nconst root = cn(reset, \"block relative isolate h-full w-full @container/media-root\", \"rounded-(--media-border-radius,0.75rem)\", \"font-[Inter_Variable,Inter,ui-sans-serif,system-ui,sans-serif] text-[0.8125rem] leading-normal subpixel-antialiased\", \"outline-2 outline-transparent -outline-offset-4\", \"transition-[outline-offset,outline-color] duration-100 ease-out\", \"focus-visible:outline-current focus-visible:outline-offset-2\", \"[--media-current-shadow-color:oklch(from_currentColor_0_0_0/clamp(0,calc((l-0.5)*0.5),0.15))]\", \"[--media-current-shadow-color-subtle:oklch(from_var(--media-current-shadow-color)_l_c_h/calc(alpha*0.4))]\", \"[--media-icon-size:18px]\");\n//#endregion\nexport { root };\n\n//# sourceMappingURL=root.js.map"],"mappings":";;;AAGA,MAAM,OAAO,GAAG,OAAO,8DAA8D,2CAA2C,uHAAuH,mDAAmD,mEAAmE,gEAAgE,iGAAiG,6GAA6G,2BAA2B"}
@@ -9,7 +9,7 @@ const slider = {
9
9
  buffer: cn("bg-current/20 duration-250 ease-out", "data-[orientation=horizontal]:inset-y-0 data-[orientation=horizontal]:left-0", "data-[orientation=horizontal]:transition-[width] data-[orientation=horizontal]:w-(--media-slider-buffer,0)", "data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0", "data-[orientation=vertical]:transition-[height] data-[orientation=vertical]:h-(--media-slider-buffer)")
10
10
  },
11
11
  thumb: {
12
- base: cn("z-10 absolute size-3 -translate-x-1/2 -translate-y-1/2", "bg-current rounded-full", "shadow-[0_0_0_1px_var(--media-controls-current-shadow-color-subtle,oklch(0_0_0/0.1)),0_1px_3px_0_oklch(0_0_0/0.15),0_1px_2px_-1px_oklch(0_0_0/0.15)]", "transition-[opacity,scale,outline-offset] duration-150 ease-out select-none", "outline-2 outline-transparent -outline-offset-2", "focus-visible:outline-current focus-visible:outline-offset-2", "data-[orientation=horizontal]:top-1/2 data-[orientation=horizontal]:left-(--media-slider-fill,0)", "data-[orientation=vertical]:left-1/2 data-[orientation=vertical]:top-[calc(100%-var(--media-slider-fill,0))]"),
12
+ base: cn("z-10 absolute size-3 -translate-x-1/2 -translate-y-1/2", "bg-current rounded-full", "shadow-[0_0_0_1px_var(--media-current-shadow-color-subtle,oklch(0_0_0/0.1)),0_1px_3px_0_oklch(0_0_0/0.15),0_1px_2px_-1px_oklch(0_0_0/0.15)]", "transition-[opacity,scale,outline-offset] duration-150 ease-out select-none", "outline-2 outline-transparent -outline-offset-2", "focus-visible:outline-current focus-visible:outline-offset-2", "data-[orientation=horizontal]:top-1/2 data-[orientation=horizontal]:left-(--media-slider-fill,0)", "data-[orientation=vertical]:left-1/2 data-[orientation=vertical]:top-[calc(100%-var(--media-slider-fill,0))]"),
13
13
  interactive: cn("opacity-0 scale-70 origin-center", "group-hover/slider:opacity-100 group-hover/slider:scale-100", "group-focus-within/slider:opacity-100 group-focus-within/slider:scale-100")
14
14
  }
15
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"slider.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/slider.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/components/slider.ts\nconst slider = {\n\troot: cn(\"group/slider relative flex flex-1 items-center justify-center rounded-full outline-none cursor-pointer\", \"data-[orientation=horizontal]:min-w-20 data-[orientation=horizontal]:w-full data-[orientation=horizontal]:h-8\", \"data-[orientation=vertical]:w-8 data-[orientation=vertical]:h-[4.5rem]\"),\n\ttrack: cn(\"relative isolate overflow-hidden bg-current/20 rounded-[inherit] select-none\", \"data-[orientation=horizontal]:w-full data-[orientation=horizontal]:h-0.75\", \"data-[orientation=vertical]:w-0.75 data-[orientation=vertical]:h-full\"),\n\tfill: {\n\t\tbase: \"absolute rounded-[inherit] pointer-events-none\",\n\t\tfill: cn(\"bg-current\", \"data-[orientation=horizontal]:inset-y-0 data-[orientation=horizontal]:left-0\", \"data-[orientation=horizontal]:w-(--media-slider-fill,0)\", \"data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0\", \"data-[orientation=vertical]:h-(--media-slider-fill,0)\"),\n\t\tbuffer: cn(\"bg-current/20 duration-250 ease-out\", \"data-[orientation=horizontal]:inset-y-0 data-[orientation=horizontal]:left-0\", \"data-[orientation=horizontal]:transition-[width] data-[orientation=horizontal]:w-(--media-slider-buffer,0)\", \"data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0\", \"data-[orientation=vertical]:transition-[height] data-[orientation=vertical]:h-(--media-slider-buffer)\")\n\t},\n\tthumb: {\n\t\tbase: cn(\"z-10 absolute size-3 -translate-x-1/2 -translate-y-1/2\", \"bg-current rounded-full\", \"shadow-[0_0_0_1px_var(--media-controls-current-shadow-color-subtle,oklch(0_0_0/0.1)),0_1px_3px_0_oklch(0_0_0/0.15),0_1px_2px_-1px_oklch(0_0_0/0.15)]\", \"transition-[opacity,scale,outline-offset] duration-150 ease-out select-none\", \"outline-2 outline-transparent -outline-offset-2\", \"focus-visible:outline-current focus-visible:outline-offset-2\", \"data-[orientation=horizontal]:top-1/2 data-[orientation=horizontal]:left-(--media-slider-fill,0)\", \"data-[orientation=vertical]:left-1/2 data-[orientation=vertical]:top-[calc(100%-var(--media-slider-fill,0))]\"),\n\t\tinteractive: cn(\"opacity-0 scale-70 origin-center\", \"group-hover/slider:opacity-100 group-hover/slider:scale-100\", \"group-focus-within/slider:opacity-100 group-focus-within/slider:scale-100\")\n\t}\n};\n//#endregion\nexport { slider };\n\n//# sourceMappingURL=slider.js.map"],"mappings":";;AAEA,MAAM,SAAS;CACd,MAAM,GAAG,0GAA0G,iHAAiH,yEAAyE;CAC7S,OAAO,GAAG,gFAAgF,6EAA6E,wEAAwE;CAC/O,MAAM;EACL,MAAM;EACN,MAAM,GAAG,cAAc,gFAAgF,2DAA2D,8EAA8E,wDAAwD;EACxS,QAAQ,GAAG,uCAAuC,gFAAgF,8GAA8G,8EAA8E,wGAAwG;EACta;CACD,OAAO;EACN,MAAM,GAAG,0DAA0D,2BAA2B,wJAAwJ,+EAA+E,mDAAmD,gEAAgE,oGAAoG,+GAA+G;EAC3oB,aAAa,GAAG,oCAAoC,+DAA+D,4EAA4E;EAC/L;CACD"}
1
+ {"version":3,"file":"slider.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/slider.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/components/slider.ts\nconst slider = {\n\troot: cn(\"group/slider relative flex flex-1 items-center justify-center rounded-full outline-none cursor-pointer\", \"data-[orientation=horizontal]:min-w-20 data-[orientation=horizontal]:w-full data-[orientation=horizontal]:h-8\", \"data-[orientation=vertical]:w-8 data-[orientation=vertical]:h-[4.5rem]\"),\n\ttrack: cn(\"relative isolate overflow-hidden bg-current/20 rounded-[inherit] select-none\", \"data-[orientation=horizontal]:w-full data-[orientation=horizontal]:h-0.75\", \"data-[orientation=vertical]:w-0.75 data-[orientation=vertical]:h-full\"),\n\tfill: {\n\t\tbase: \"absolute rounded-[inherit] pointer-events-none\",\n\t\tfill: cn(\"bg-current\", \"data-[orientation=horizontal]:inset-y-0 data-[orientation=horizontal]:left-0\", \"data-[orientation=horizontal]:w-(--media-slider-fill,0)\", \"data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0\", \"data-[orientation=vertical]:h-(--media-slider-fill,0)\"),\n\t\tbuffer: cn(\"bg-current/20 duration-250 ease-out\", \"data-[orientation=horizontal]:inset-y-0 data-[orientation=horizontal]:left-0\", \"data-[orientation=horizontal]:transition-[width] data-[orientation=horizontal]:w-(--media-slider-buffer,0)\", \"data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0\", \"data-[orientation=vertical]:transition-[height] data-[orientation=vertical]:h-(--media-slider-buffer)\")\n\t},\n\tthumb: {\n\t\tbase: cn(\"z-10 absolute size-3 -translate-x-1/2 -translate-y-1/2\", \"bg-current rounded-full\", \"shadow-[0_0_0_1px_var(--media-current-shadow-color-subtle,oklch(0_0_0/0.1)),0_1px_3px_0_oklch(0_0_0/0.15),0_1px_2px_-1px_oklch(0_0_0/0.15)]\", \"transition-[opacity,scale,outline-offset] duration-150 ease-out select-none\", \"outline-2 outline-transparent -outline-offset-2\", \"focus-visible:outline-current focus-visible:outline-offset-2\", \"data-[orientation=horizontal]:top-1/2 data-[orientation=horizontal]:left-(--media-slider-fill,0)\", \"data-[orientation=vertical]:left-1/2 data-[orientation=vertical]:top-[calc(100%-var(--media-slider-fill,0))]\"),\n\t\tinteractive: cn(\"opacity-0 scale-70 origin-center\", \"group-hover/slider:opacity-100 group-hover/slider:scale-100\", \"group-focus-within/slider:opacity-100 group-focus-within/slider:scale-100\")\n\t}\n};\n//#endregion\nexport { slider };\n\n//# sourceMappingURL=slider.js.map"],"mappings":";;AAEA,MAAM,SAAS;CACd,MAAM,GAAG,0GAA0G,iHAAiH,yEAAyE;CAC7S,OAAO,GAAG,gFAAgF,6EAA6E,wEAAwE;CAC/O,MAAM;EACL,MAAM;EACN,MAAM,GAAG,cAAc,gFAAgF,2DAA2D,8EAA8E,wDAAwD;EACxS,QAAQ,GAAG,uCAAuC,gFAAgF,8GAA8G,8EAA8E,wGAAwG;EACta;CACD,OAAO;EACN,MAAM,GAAG,0DAA0D,2BAA2B,+IAA+I,+EAA+E,mDAAmD,gEAAgE,oGAAoG,+GAA+G;EACloB,aAAa,GAAG,oCAAoC,+DAA+D,4EAA4E;EAC/L;CACD"}
@@ -1,16 +1,19 @@
1
- import "../../shared/tailwind/icon-state.js";
2
1
  import { controls as controls$1 } from "./components/controls.js";
3
2
  import { error as error$1 } from "./components/error.js";
4
3
  import { popup as popup$1 } from "./components/popup.js";
5
4
  import { root as root$1 } from "./components/root.js";
5
+ import "../../shared/tailwind/icon-state.js";
6
6
  import "./components/buffering.js";
7
7
  import "./components/button.js";
8
8
  import { buttonGroup } from "./components/button-group.js";
9
9
  import "./components/icon.js";
10
+ import "./components/menu.js";
11
+ import "./components/playback-rate.js";
10
12
  import "./components/seek.js";
11
13
  import { slider as slider$1 } from "./components/slider.js";
12
14
  import { time as time$1 } from "./components/time.js";
13
15
  import { preview as preview$1 } from "./components/preview.js";
16
+ import "./components/input-feedback.js";
14
17
  import "./components/overlay.js";
15
18
  import "./components/poster.js";
16
19
  import { cn } from "@videojs/utils/style";
@@ -18,7 +21,7 @@ import { cn } from "@videojs/utils/style";
18
21
  const root = (isShadowDOM) => cn(root$1, "bg-black overflow-clip", "after:absolute after:pointer-events-none after:rounded-[inherit] after:z-10", "after:inset-0 after:ring-1 after:ring-inset after:ring-black/15 dark:after:ring-white/15", {
19
22
  "[&_::slotted(video)]:block [&_::slotted(video)]:w-full [&_::slotted(video)]:h-full [&_::slotted(video)]:rounded-(--media-video-border-radius) [&_::slotted(video)]:[object-fit:var(--media-object-fit,cover)] [&_::slotted(video)]:[object-position:var(--media-object-position,center)]": isShadowDOM,
20
23
  "[&_video]:block [&_video]:w-full [&_video]:h-full [&_video]:rounded-[inherit] [&_video]:[object-fit:var(--media-object-fit,contain)] [&_video]:[object-position:var(--media-object-position,center)]": !isShadowDOM
21
- }, "[--media-video-border-radius:var(--media-border-radius,0.75rem)]", "[--media-controls-background-color:transparent]", "[--media-controls-transition-duration:100ms]", "[--media-controls-transition-timing-function:ease-out]", "[--media-error-dialog-transition-duration:150ms]", "[--media-error-dialog-transition-delay:100ms]", "[--media-error-dialog-transition-timing-function:ease-out]", "[--media-popup-transition-duration:100ms]", "[--media-popup-transition-timing-function:ease-out]", "[--media-tooltip-background-color:oklch(1_0_0/0.1)]", "[--media-tooltip-border-color:transparent]", "[--media-tooltip-backdrop-filter:blur(16px)_saturate(1.5)]", "[--media-tooltip-text-color:currentColor]", "[--media-tooltip-side-offset:0.5rem]", "[--media-popover-side-offset:1.5rem]", "motion-reduce:[--media-error-dialog-transition-duration:50ms]", "motion-reduce:[--media-error-dialog-transition-delay:0ms]", "motion-reduce:[--media-popup-transition-duration:0ms]", "[@media(prefers-reduced-transparency:reduce)]:[--media-controls-background-color:oklch(0_0_0)]", "contrast-more:[--media-controls-background-color:oklch(0_0_0)]", "[@media(prefers-reduced-transparency:reduce)]:[--media-tooltip-background-color:oklch(0_0_0)]", "contrast-more:[--media-tooltip-background-color:oklch(0_0_0)]", "@2xl/media-root:[&>*]:[--media-popover-side-offset:0rem]", "[@media(pointer:fine)]:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:300ms]", "[@media(pointer:coarse)]:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:150ms]", "motion-reduce:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:50ms]", "[--media-caption-track-y:-0.5rem]", "[--media-caption-track-delay:25ms]", "[--media-caption-track-duration:var(--media-controls-transition-duration)]", "has-[[data-controls][data-visible]]:[--media-caption-track-y:-5rem]", "@2xl/media-root:has-[[data-controls][data-visible]]:[&>*]:[--media-caption-track-y:-3rem]", !isShadowDOM ? [
24
+ }, "[--media-video-border-radius:var(--media-border-radius,0.75rem)]", "[--media-controls-background-color:transparent]", "[--media-controls-transition-duration:100ms]", "[--media-controls-transition-timing-function:ease-out]", "[--media-error-dialog-transition-duration:150ms]", "[--media-error-dialog-transition-delay:100ms]", "[--media-error-dialog-transition-timing-function:ease-out]", "[--media-popup-transition-duration:100ms]", "[--media-popup-transition-timing-function:ease-out]", "[--media-tooltip-background-color:oklch(1_0_0/0.1)]", "[--media-tooltip-border-color:transparent]", "[--media-tooltip-backdrop-filter:blur(16px)_saturate(1.5)]", "[--media-tooltip-text-color:currentColor]", "[--media-tooltip-side-offset:0.5rem]", "[--media-tooltip-boundary-offset:0.5rem]", "[--media-popover-side-offset:1.5rem]", "[--media-popover-boundary-offset:0.5rem]", "motion-reduce:[--media-error-dialog-transition-duration:50ms]", "motion-reduce:[--media-error-dialog-transition-delay:0ms]", "motion-reduce:[--media-popup-transition-duration:0ms]", "[@media(prefers-reduced-transparency:reduce)]:[--media-controls-background-color:oklch(0_0_0)]", "contrast-more:[--media-controls-background-color:oklch(0_0_0)]", "[@media(prefers-reduced-transparency:reduce)]:[--media-tooltip-background-color:oklch(0_0_0)]", "contrast-more:[--media-tooltip-background-color:oklch(0_0_0)]", "@2xl/media-root:*:[--media-popover-side-offset:0.5rem]", "pointer-fine:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:300ms]", "pointer-coarse:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:150ms]", "motion-reduce:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:50ms]", "[--media-caption-track-y:-0.5rem]", "[--media-caption-track-delay:25ms]", "[--media-caption-track-duration:var(--media-controls-transition-duration)]", "has-[[data-controls][data-visible]]:[--media-caption-track-y:-5rem]", "@2xl/media-root:has-[[data-controls][data-visible]]:*:[--media-caption-track-y:-3rem]", !isShadowDOM ? [
22
25
  "[&_video::-webkit-media-text-track-container]:transition-[translate]",
23
26
  "[&_video::-webkit-media-text-track-container]:duration-(--media-caption-track-duration)",
24
27
  "[&_video::-webkit-media-text-track-container]:ease-out",
@@ -31,7 +34,7 @@ const root = (isShadowDOM) => cn(root$1, "bg-black overflow-clip", "after:absolu
31
34
  "[&:fullscreen_video]:object-contain": !isShadowDOM,
32
35
  "[&:fullscreen_::slotted(video)]:object-contain": isShadowDOM
33
36
  });
34
- const controls = cn(controls$1, "absolute bottom-1 inset-x-1", "p-1 gap-x-2 flex-wrap rounded-xl", "text-white z-10", "peer-data-open/error:hidden", "ease-(--media-controls-transition-timing-function)", "duration-(--media-controls-transition-duration)", "[@media(pointer:fine)]:will-change-[translate,filter,opacity]", "[@media(pointer:fine)]:transition-[translate,filter,opacity]", "[@media(pointer:coarse)]:will-change-[translate,opacity]", "[@media(pointer:coarse)]:transition-[translate,opacity]", "not-data-visible:opacity-0 not-data-visible:pointer-events-none", "motion-safe:not-data-visible:translate-y-full", "[@media(pointer:fine)]:motion-safe:not-data-visible:blur-sm", "@2xl/media-root:flex-nowrap @2xl/media-root:bottom-2 @2xl/media-root:inset-x-2");
37
+ const controls = cn(controls$1, "absolute bottom-1 inset-x-1", "p-1 gap-x-2 flex-wrap rounded-xl", "mx-auto max-w-4xl", "text-white z-10", "peer-data-open/error:hidden", "ease-(--media-controls-transition-timing-function)", "duration-(--media-controls-transition-duration)", "pointer-fine:will-change-[translate,filter,opacity]", "pointer-fine:transition-[translate,filter,opacity]", "pointer-coarse:will-change-[translate,opacity]", "pointer-coarse:transition-[translate,opacity]", "not-data-visible:opacity-0 not-data-visible:pointer-events-none", "motion-safe:not-data-visible:translate-y-full", "pointer-fine:motion-safe:not-data-visible:blur-sm", "@2xl/media-root:flex-nowrap @2xl/media-root:bottom-2 @2xl/media-root:inset-x-2", "@2xl/media-root:*:[--media-popover-side-offset:0rem]");
35
38
  const buttonGroupStart = cn(buttonGroup, "flex-1 @2xl/media-root:flex-none");
36
39
  const buttonGroupEnd = cn(buttonGroup, "flex-1 justify-end @2xl/media-root:flex-none");
37
40
  const time = {
@@ -46,7 +49,7 @@ const error = {
46
49
  };
47
50
  const preview = {
48
51
  ...preview$1,
49
- root: cn("[--media-preview-max-width:11rem] [--media-preview-padding:-0.5rem] [--media-preview-inset:calc(100cqi-100%)]", "absolute [left:clamp(calc(var(--media-preview-max-width)/2+var(--media-preview-padding)),var(--media-slider-pointer),calc(100%-var(--media-preview-max-width)/2-var(--media-preview-padding)+var(--media-preview-inset)))] bottom-full -translate-x-1/2", "@2xl/media-root:bottom-[calc(100%+0.25rem)] @2xl/media-root:[left:var(--media-slider-pointer)]", "opacity-0 scale-80 blur-sm origin-bottom", "transition-[scale,opacity,filter] duration-150", "group-data-pointing/slider:opacity-100 group-data-pointing/slider:scale-100 group-data-pointing/slider:blur-none", "[&:has([role=img][data-hidden])]:opacity-0 [&:has([role=img][data-hidden])]:scale-80 [&:has([role=img][data-hidden])]:blur-sm", "[&:has([role=img][data-loading])]:max-h-24", preview$1.root),
52
+ root: cn("[--media-preview-max-width:11rem] [--media-preview-padding:-0.5rem] [--media-preview-inset:calc(100cqi-100%)]", "absolute [left:clamp(calc(var(--media-preview-max-width)/2+var(--media-preview-padding)),var(--media-slider-pointer),calc(100%-var(--media-preview-max-width)/2-var(--media-preview-padding)+var(--media-preview-inset)))] bottom-full -translate-x-1/2", "@2xl/media-root:bottom-[calc(100%+0.25rem)] @2xl/media-root:[left:var(--media-slider-pointer)]", "opacity-0 scale-80 blur-sm origin-bottom", "transition-[scale,opacity,filter] duration-150", "group-data-pointing/slider:opacity-100 group-data-pointing/slider:scale-100 group-data-pointing/slider:blur-none", "has-[[role=img][data-hidden]]:opacity-0 has-[[role=img][data-hidden]]:scale-80 has-[[role=img][data-hidden]]:blur-sm", "has-[[role=img][data-loading]]:max-h-24", preview$1.root),
50
53
  thumbnailWrapper: cn(preview$1.thumbnailWrapper, "after:absolute after:inset-0 after:rounded-[inherit]", "after:ring-1 after:ring-black/5 after:shadow-sm after:shadow-black/20"),
51
54
  thumbnail: cn(preview$1.thumbnail, "max-w-(--media-preview-max-width)")
52
55
  };
@@ -1 +1 @@
1
- {"version":3,"file":"video.tailwind.js","names":[],"sources":["../../../../../../../../skins/dist/default/minimal/tailwind/video.tailwind.js"],"sourcesContent":["import { controls as controls$1 } from \"./components/controls.js\";\nimport { error as error$1 } from \"./components/error.js\";\nimport { popup as popup$1 } from \"./components/popup.js\";\nimport { root as root$1 } from \"./components/root.js\";\nimport { iconState } from \"../../shared/tailwind/icon-state.js\";\nimport { bufferingIndicator } from \"./components/buffering.js\";\nimport { button } from \"./components/button.js\";\nimport { buttonGroup } from \"./components/button-group.js\";\nimport { icon, iconContainer, iconFlipped, iconHidden } from \"./components/icon.js\";\nimport { seek } from \"./components/seek.js\";\nimport { slider as slider$1 } from \"./components/slider.js\";\nimport { time as time$1 } from \"./components/time.js\";\nimport { preview as preview$1 } from \"./components/preview.js\";\nimport { overlay } from \"./components/overlay.js\";\nimport { playbackRate } from \"./components/playback-rate.js\";\nimport { poster } from \"./components/poster.js\";\nimport { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/video.tailwind.ts\nconst root = (isShadowDOM) => cn(root$1, \"bg-black overflow-clip\", \"after:absolute after:pointer-events-none after:rounded-[inherit] after:z-10\", \"after:inset-0 after:ring-1 after:ring-inset after:ring-black/15 dark:after:ring-white/15\", {\n\t\"[&_::slotted(video)]:block [&_::slotted(video)]:w-full [&_::slotted(video)]:h-full [&_::slotted(video)]:rounded-(--media-video-border-radius) [&_::slotted(video)]:[object-fit:var(--media-object-fit,cover)] [&_::slotted(video)]:[object-position:var(--media-object-position,center)]\": isShadowDOM,\n\t\"[&_video]:block [&_video]:w-full [&_video]:h-full [&_video]:rounded-[inherit] [&_video]:[object-fit:var(--media-object-fit,contain)] [&_video]:[object-position:var(--media-object-position,center)]\": !isShadowDOM\n}, \"[--media-video-border-radius:var(--media-border-radius,0.75rem)]\", \"[--media-controls-background-color:transparent]\", \"[--media-controls-transition-duration:100ms]\", \"[--media-controls-transition-timing-function:ease-out]\", \"[--media-error-dialog-transition-duration:150ms]\", \"[--media-error-dialog-transition-delay:100ms]\", \"[--media-error-dialog-transition-timing-function:ease-out]\", \"[--media-popup-transition-duration:100ms]\", \"[--media-popup-transition-timing-function:ease-out]\", \"[--media-tooltip-background-color:oklch(1_0_0/0.1)]\", \"[--media-tooltip-border-color:transparent]\", \"[--media-tooltip-backdrop-filter:blur(16px)_saturate(1.5)]\", \"[--media-tooltip-text-color:currentColor]\", \"[--media-tooltip-side-offset:0.5rem]\", \"[--media-popover-side-offset:1.5rem]\", \"motion-reduce:[--media-error-dialog-transition-duration:50ms]\", \"motion-reduce:[--media-error-dialog-transition-delay:0ms]\", \"motion-reduce:[--media-popup-transition-duration:0ms]\", \"[@media(prefers-reduced-transparency:reduce)]:[--media-controls-background-color:oklch(0_0_0)]\", \"contrast-more:[--media-controls-background-color:oklch(0_0_0)]\", \"[@media(prefers-reduced-transparency:reduce)]:[--media-tooltip-background-color:oklch(0_0_0)]\", \"contrast-more:[--media-tooltip-background-color:oklch(0_0_0)]\", \"@2xl/media-root:[&>*]:[--media-popover-side-offset:0rem]\", \"[@media(pointer:fine)]:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:300ms]\", \"[@media(pointer:coarse)]:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:150ms]\", \"motion-reduce:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:50ms]\", \"[--media-caption-track-y:-0.5rem]\", \"[--media-caption-track-delay:25ms]\", \"[--media-caption-track-duration:var(--media-controls-transition-duration)]\", \"has-[[data-controls][data-visible]]:[--media-caption-track-y:-5rem]\", \"@2xl/media-root:has-[[data-controls][data-visible]]:[&>*]:[--media-caption-track-y:-3rem]\", !isShadowDOM ? [\n\t\"[&_video::-webkit-media-text-track-container]:transition-[translate]\",\n\t\"[&_video::-webkit-media-text-track-container]:duration-(--media-caption-track-duration)\",\n\t\"[&_video::-webkit-media-text-track-container]:ease-out\",\n\t\"[&_video::-webkit-media-text-track-container]:delay-(--media-caption-track-delay)\",\n\t\"[&_video::-webkit-media-text-track-container]:translate-y-(--media-caption-track-y)\",\n\t\"[&_video::-webkit-media-text-track-container]:scale-98\",\n\t\"[&_video::-webkit-media-text-track-container]:z-1\",\n\t\"[&_video::-webkit-media-text-track-container]:font-[inherit]\"\n] : [], \"[&:fullscreen]:[--media-border-radius:0]\", {\n\t\"[&:fullscreen_video]:object-contain\": !isShadowDOM,\n\t\"[&:fullscreen_::slotted(video)]:object-contain\": isShadowDOM\n});\nconst controls = cn(controls$1, \"absolute bottom-1 inset-x-1\", \"p-1 gap-x-2 flex-wrap rounded-xl\", \"text-white z-10\", \"peer-data-open/error:hidden\", \"ease-(--media-controls-transition-timing-function)\", \"duration-(--media-controls-transition-duration)\", \"[@media(pointer:fine)]:will-change-[translate,filter,opacity]\", \"[@media(pointer:fine)]:transition-[translate,filter,opacity]\", \"[@media(pointer:coarse)]:will-change-[translate,opacity]\", \"[@media(pointer:coarse)]:transition-[translate,opacity]\", \"not-data-visible:opacity-0 not-data-visible:pointer-events-none\", \"motion-safe:not-data-visible:translate-y-full\", \"[@media(pointer:fine)]:motion-safe:not-data-visible:blur-sm\", \"@2xl/media-root:flex-nowrap @2xl/media-root:bottom-2 @2xl/media-root:inset-x-2\");\nconst buttonGroupStart = cn(buttonGroup, \"flex-1 @2xl/media-root:flex-none\");\nconst buttonGroupEnd = cn(buttonGroup, \"flex-1 justify-end @2xl/media-root:flex-none\");\nconst time = {\n\t...time$1,\n\tcontrols: cn(time$1.controls, \"grow-0 shrink-0 basis-full order-[-1] px-2.5\", \"@2xl/media-root:grow @2xl/media-root:shrink @2xl/media-root:basis-0 @2xl/media-root:order-[unset]\")\n};\nconst error = {\n\t...error$1,\n\troot: cn(error$1.root, \"pointer-events-none outline-none\"),\n\tdialog: cn(error$1.dialog, \"pointer-events-auto\"),\n\ttitle: cn(error$1.title, \"text-lg\")\n};\nconst preview = {\n\t...preview$1,\n\troot: cn(\"[--media-preview-max-width:11rem] [--media-preview-padding:-0.5rem] [--media-preview-inset:calc(100cqi-100%)]\", \"absolute [left:clamp(calc(var(--media-preview-max-width)/2+var(--media-preview-padding)),var(--media-slider-pointer),calc(100%-var(--media-preview-max-width)/2-var(--media-preview-padding)+var(--media-preview-inset)))] bottom-full -translate-x-1/2\", \"@2xl/media-root:bottom-[calc(100%+0.25rem)] @2xl/media-root:[left:var(--media-slider-pointer)]\", \"opacity-0 scale-80 blur-sm origin-bottom\", \"transition-[scale,opacity,filter] duration-150\", \"group-data-pointing/slider:opacity-100 group-data-pointing/slider:scale-100 group-data-pointing/slider:blur-none\", \"[&:has([role=img][data-hidden])]:opacity-0 [&:has([role=img][data-hidden])]:scale-80 [&:has([role=img][data-hidden])]:blur-sm\", \"[&:has([role=img][data-loading])]:max-h-24\", preview$1.root),\n\tthumbnailWrapper: cn(preview$1.thumbnailWrapper, \"after:absolute after:inset-0 after:rounded-[inherit]\", \"after:ring-1 after:ring-black/5 after:shadow-sm after:shadow-black/20\"),\n\tthumbnail: cn(preview$1.thumbnail, \"max-w-(--media-preview-max-width)\")\n};\nconst slider = {\n\t...slider$1,\n\ttrack: cn(slider$1.track, \"ring-1 ring-black/5\")\n};\nconst popup = {\n\t...popup$1,\n\tvolume: cn(popup$1.popover, \"py-3 px-0 bg-transparent rounded-xl\", \"[@media(prefers-reduced-transparency:reduce)]:bg-(--media-controls-background-color)\", \"contrast-more:bg-(--media-controls-background-color)\")\n};\n//#endregion\nexport { bufferingIndicator, button, buttonGroup, buttonGroupEnd, buttonGroupStart, controls, error, icon, iconContainer, iconFlipped, iconHidden, iconState, overlay, playbackRate, popup, poster, preview, root, seek, slider, time };\n\n//# sourceMappingURL=video.tailwind.js.map"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,MAAM,QAAQ,gBAAgB,GAAG,QAAQ,0BAA0B,+EAA+E,4FAA4F;CAC7O,4RAA4R;CAC5R,wMAAwM,CAAC;CACzM,EAAE,oEAAoE,mDAAmD,gDAAgD,0DAA0D,oDAAoD,iDAAiD,8DAA8D,6CAA6C,uDAAuD,uDAAuD,8CAA8C,8DAA8D,6CAA6C,wCAAwC,wCAAwC,iEAAiE,6DAA6D,yDAAyD,kGAAkG,kEAAkE,iGAAiG,iEAAiE,4DAA4D,iHAAiH,mHAAmH,uGAAuG,qCAAqC,sCAAsC,8EAA8E,uEAAuE,6FAA6F,CAAC,cAAc;CAC19D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAAG,EAAE,EAAE,4CAA4C;CACnD,uCAAuC,CAAC;CACxC,kDAAkD;CAClD,CAAC;AACF,MAAM,WAAW,GAAG,YAAY,+BAA+B,oCAAoC,mBAAmB,+BAA+B,sDAAsD,mDAAmD,iEAAiE,gEAAgE,4DAA4D,2DAA2D,mEAAmE,iDAAiD,+DAA+D,iFAAiF;AAC1vB,MAAM,mBAAmB,GAAG,aAAa,mCAAmC;AAC5E,MAAM,iBAAiB,GAAG,aAAa,+CAA+C;AACtF,MAAM,OAAO;CACZ,GAAG;CACH,UAAU,GAAG,OAAO,UAAU,gDAAgD,oGAAoG;CAClL;AACD,MAAM,QAAQ;CACb,GAAG;CACH,MAAM,GAAG,QAAQ,MAAM,mCAAmC;CAC1D,QAAQ,GAAG,QAAQ,QAAQ,sBAAsB;CACjD,OAAO,GAAG,QAAQ,OAAO,UAAU;CACnC;AACD,MAAM,UAAU;CACf,GAAG;CACH,MAAM,GAAG,iHAAiH,2PAA2P,kGAAkG,4CAA4C,kDAAkD,oHAAoH,iIAAiI,8CAA8C,UAAU,KAAK;CACv2B,kBAAkB,GAAG,UAAU,kBAAkB,wDAAwD,wEAAwE;CACjL,WAAW,GAAG,UAAU,WAAW,oCAAoC;CACvE;AACD,MAAM,SAAS;CACd,GAAG;CACH,OAAO,GAAG,SAAS,OAAO,sBAAsB;CAChD;AACD,MAAM,QAAQ;CACb,GAAG;CACH,QAAQ,GAAG,QAAQ,SAAS,uCAAuC,wFAAwF,uDAAuD;CAClN"}
1
+ {"version":3,"file":"video.tailwind.js","names":[],"sources":["../../../../../../../../skins/dist/default/minimal/tailwind/video.tailwind.js"],"sourcesContent":["import { controls as controls$1 } from \"./components/controls.js\";\nimport { error as error$1 } from \"./components/error.js\";\nimport { popup as popup$1 } from \"./components/popup.js\";\nimport { root as root$1 } from \"./components/root.js\";\nimport { iconState } from \"../../shared/tailwind/icon-state.js\";\nimport { bufferingIndicator } from \"./components/buffering.js\";\nimport { button } from \"./components/button.js\";\nimport { buttonGroup } from \"./components/button-group.js\";\nimport { icon, iconContainer, iconFlipped, iconHidden } from \"./components/icon.js\";\nimport { menu } from \"./components/menu.js\";\nimport { playbackRate } from \"./components/playback-rate.js\";\nimport { seek } from \"./components/seek.js\";\nimport { slider as slider$1 } from \"./components/slider.js\";\nimport { time as time$1 } from \"./components/time.js\";\nimport { preview as preview$1 } from \"./components/preview.js\";\nimport { inputFeedback } from \"./components/input-feedback.js\";\nimport { overlay } from \"./components/overlay.js\";\nimport { poster } from \"./components/poster.js\";\nimport { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/video.tailwind.ts\nconst root = (isShadowDOM) => cn(root$1, \"bg-black overflow-clip\", \"after:absolute after:pointer-events-none after:rounded-[inherit] after:z-10\", \"after:inset-0 after:ring-1 after:ring-inset after:ring-black/15 dark:after:ring-white/15\", {\n\t\"[&_::slotted(video)]:block [&_::slotted(video)]:w-full [&_::slotted(video)]:h-full [&_::slotted(video)]:rounded-(--media-video-border-radius) [&_::slotted(video)]:[object-fit:var(--media-object-fit,cover)] [&_::slotted(video)]:[object-position:var(--media-object-position,center)]\": isShadowDOM,\n\t\"[&_video]:block [&_video]:w-full [&_video]:h-full [&_video]:rounded-[inherit] [&_video]:[object-fit:var(--media-object-fit,contain)] [&_video]:[object-position:var(--media-object-position,center)]\": !isShadowDOM\n}, \"[--media-video-border-radius:var(--media-border-radius,0.75rem)]\", \"[--media-controls-background-color:transparent]\", \"[--media-controls-transition-duration:100ms]\", \"[--media-controls-transition-timing-function:ease-out]\", \"[--media-error-dialog-transition-duration:150ms]\", \"[--media-error-dialog-transition-delay:100ms]\", \"[--media-error-dialog-transition-timing-function:ease-out]\", \"[--media-popup-transition-duration:100ms]\", \"[--media-popup-transition-timing-function:ease-out]\", \"[--media-tooltip-background-color:oklch(1_0_0/0.1)]\", \"[--media-tooltip-border-color:transparent]\", \"[--media-tooltip-backdrop-filter:blur(16px)_saturate(1.5)]\", \"[--media-tooltip-text-color:currentColor]\", \"[--media-tooltip-side-offset:0.5rem]\", \"[--media-tooltip-boundary-offset:0.5rem]\", \"[--media-popover-side-offset:1.5rem]\", \"[--media-popover-boundary-offset:0.5rem]\", \"motion-reduce:[--media-error-dialog-transition-duration:50ms]\", \"motion-reduce:[--media-error-dialog-transition-delay:0ms]\", \"motion-reduce:[--media-popup-transition-duration:0ms]\", \"[@media(prefers-reduced-transparency:reduce)]:[--media-controls-background-color:oklch(0_0_0)]\", \"contrast-more:[--media-controls-background-color:oklch(0_0_0)]\", \"[@media(prefers-reduced-transparency:reduce)]:[--media-tooltip-background-color:oklch(0_0_0)]\", \"contrast-more:[--media-tooltip-background-color:oklch(0_0_0)]\", \"@2xl/media-root:*:[--media-popover-side-offset:0.5rem]\", \"pointer-fine:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:300ms]\", \"pointer-coarse:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:150ms]\", \"motion-reduce:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:50ms]\", \"[--media-caption-track-y:-0.5rem]\", \"[--media-caption-track-delay:25ms]\", \"[--media-caption-track-duration:var(--media-controls-transition-duration)]\", \"has-[[data-controls][data-visible]]:[--media-caption-track-y:-5rem]\", \"@2xl/media-root:has-[[data-controls][data-visible]]:*:[--media-caption-track-y:-3rem]\", !isShadowDOM ? [\n\t\"[&_video::-webkit-media-text-track-container]:transition-[translate]\",\n\t\"[&_video::-webkit-media-text-track-container]:duration-(--media-caption-track-duration)\",\n\t\"[&_video::-webkit-media-text-track-container]:ease-out\",\n\t\"[&_video::-webkit-media-text-track-container]:delay-(--media-caption-track-delay)\",\n\t\"[&_video::-webkit-media-text-track-container]:translate-y-(--media-caption-track-y)\",\n\t\"[&_video::-webkit-media-text-track-container]:scale-98\",\n\t\"[&_video::-webkit-media-text-track-container]:z-1\",\n\t\"[&_video::-webkit-media-text-track-container]:font-[inherit]\"\n] : [], \"[&:fullscreen]:[--media-border-radius:0]\", {\n\t\"[&:fullscreen_video]:object-contain\": !isShadowDOM,\n\t\"[&:fullscreen_::slotted(video)]:object-contain\": isShadowDOM\n});\nconst controls = cn(controls$1, \"absolute bottom-1 inset-x-1\", \"p-1 gap-x-2 flex-wrap rounded-xl\", \"mx-auto max-w-4xl\", \"text-white z-10\", \"peer-data-open/error:hidden\", \"ease-(--media-controls-transition-timing-function)\", \"duration-(--media-controls-transition-duration)\", \"pointer-fine:will-change-[translate,filter,opacity]\", \"pointer-fine:transition-[translate,filter,opacity]\", \"pointer-coarse:will-change-[translate,opacity]\", \"pointer-coarse:transition-[translate,opacity]\", \"not-data-visible:opacity-0 not-data-visible:pointer-events-none\", \"motion-safe:not-data-visible:translate-y-full\", \"pointer-fine:motion-safe:not-data-visible:blur-sm\", \"@2xl/media-root:flex-nowrap @2xl/media-root:bottom-2 @2xl/media-root:inset-x-2\", \"@2xl/media-root:*:[--media-popover-side-offset:0rem]\");\nconst buttonGroupStart = cn(buttonGroup, \"flex-1 @2xl/media-root:flex-none\");\nconst buttonGroupEnd = cn(buttonGroup, \"flex-1 justify-end @2xl/media-root:flex-none\");\nconst time = {\n\t...time$1,\n\tcontrols: cn(time$1.controls, \"grow-0 shrink-0 basis-full order-[-1] px-2.5\", \"@2xl/media-root:grow @2xl/media-root:shrink @2xl/media-root:basis-0 @2xl/media-root:order-[unset]\")\n};\nconst error = {\n\t...error$1,\n\troot: cn(error$1.root, \"pointer-events-none outline-none\"),\n\tdialog: cn(error$1.dialog, \"pointer-events-auto\"),\n\ttitle: cn(error$1.title, \"text-lg\")\n};\nconst preview = {\n\t...preview$1,\n\troot: cn(\"[--media-preview-max-width:11rem] [--media-preview-padding:-0.5rem] [--media-preview-inset:calc(100cqi-100%)]\", \"absolute [left:clamp(calc(var(--media-preview-max-width)/2+var(--media-preview-padding)),var(--media-slider-pointer),calc(100%-var(--media-preview-max-width)/2-var(--media-preview-padding)+var(--media-preview-inset)))] bottom-full -translate-x-1/2\", \"@2xl/media-root:bottom-[calc(100%+0.25rem)] @2xl/media-root:[left:var(--media-slider-pointer)]\", \"opacity-0 scale-80 blur-sm origin-bottom\", \"transition-[scale,opacity,filter] duration-150\", \"group-data-pointing/slider:opacity-100 group-data-pointing/slider:scale-100 group-data-pointing/slider:blur-none\", \"has-[[role=img][data-hidden]]:opacity-0 has-[[role=img][data-hidden]]:scale-80 has-[[role=img][data-hidden]]:blur-sm\", \"has-[[role=img][data-loading]]:max-h-24\", preview$1.root),\n\tthumbnailWrapper: cn(preview$1.thumbnailWrapper, \"after:absolute after:inset-0 after:rounded-[inherit]\", \"after:ring-1 after:ring-black/5 after:shadow-sm after:shadow-black/20\"),\n\tthumbnail: cn(preview$1.thumbnail, \"max-w-(--media-preview-max-width)\")\n};\nconst slider = {\n\t...slider$1,\n\ttrack: cn(slider$1.track, \"ring-1 ring-black/5\")\n};\nconst popup = {\n\t...popup$1,\n\tvolume: cn(popup$1.popover, \"py-3 px-0 bg-transparent rounded-xl\", \"[@media(prefers-reduced-transparency:reduce)]:bg-(--media-controls-background-color)\", \"contrast-more:bg-(--media-controls-background-color)\")\n};\n//#endregion\nexport { bufferingIndicator, button, buttonGroup, buttonGroupEnd, buttonGroupStart, controls, error, icon, iconContainer, iconFlipped, iconHidden, iconState, inputFeedback, menu, overlay, playbackRate, popup, poster, preview, root, seek, slider, time };\n\n//# sourceMappingURL=video.tailwind.js.map"],"mappings":";;;;;;;;;;;;;;;;;;;;AAoBA,MAAM,QAAQ,gBAAgB,GAAG,QAAQ,0BAA0B,+EAA+E,4FAA4F;CAC7O,4RAA4R;CAC5R,wMAAwM,CAAC;CACzM,EAAE,oEAAoE,mDAAmD,gDAAgD,0DAA0D,oDAAoD,iDAAiD,8DAA8D,6CAA6C,uDAAuD,uDAAuD,8CAA8C,8DAA8D,6CAA6C,wCAAwC,4CAA4C,wCAAwC,4CAA4C,iEAAiE,6DAA6D,yDAAyD,kGAAkG,kEAAkE,iGAAiG,iEAAiE,0DAA0D,uGAAuG,yGAAyG,uGAAuG,qCAAqC,sCAAsC,8EAA8E,uEAAuE,yFAAyF,CAAC,cAAc;CACxhE;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAAG,EAAE,EAAE,4CAA4C;CACnD,uCAAuC,CAAC;CACxC,kDAAkD;CAClD,CAAC;AACF,MAAM,WAAW,GAAG,YAAY,+BAA+B,oCAAoC,qBAAqB,mBAAmB,+BAA+B,sDAAsD,mDAAmD,uDAAuD,sDAAsD,kDAAkD,iDAAiD,mEAAmE,iDAAiD,qDAAqD,kFAAkF,uDAAuD;AACrxB,MAAM,mBAAmB,GAAG,aAAa,mCAAmC;AAC5E,MAAM,iBAAiB,GAAG,aAAa,+CAA+C;AACtF,MAAM,OAAO;CACZ,GAAG;CACH,UAAU,GAAG,OAAO,UAAU,gDAAgD,oGAAoG;CAClL;AACD,MAAM,QAAQ;CACb,GAAG;CACH,MAAM,GAAG,QAAQ,MAAM,mCAAmC;CAC1D,QAAQ,GAAG,QAAQ,QAAQ,sBAAsB;CACjD,OAAO,GAAG,QAAQ,OAAO,UAAU;CACnC;AACD,MAAM,UAAU;CACf,GAAG;CACH,MAAM,GAAG,iHAAiH,2PAA2P,kGAAkG,4CAA4C,kDAAkD,oHAAoH,wHAAwH,2CAA2C,UAAU,KAAK;CAC31B,kBAAkB,GAAG,UAAU,kBAAkB,wDAAwD,wEAAwE;CACjL,WAAW,GAAG,UAAU,WAAW,oCAAoC;CACvE;AACD,MAAM,SAAS;CACd,GAAG;CACH,OAAO,GAAG,SAAS,OAAO,sBAAsB;CAChD;AACD,MAAM,QAAQ;CACb,GAAG;CACH,QAAQ,GAAG,QAAQ,SAAS,uCAAuC,wFAAwF,uDAAuD;CAClN"}
@@ -0,0 +1,66 @@
1
+ /* -------------------------------------------------------------------------- */
2
+ /* Supporting @keyframes, @properties and @theme for Tailwind CSS */
3
+ /* -------------------------------------------------------------------------- */
4
+
5
+ /* -------------------------------------------------------------------------- */
6
+ /* Global @keyframes for all video skins (CSS & Tailwind) */
7
+ /* -------------------------------------------------------------------------- */
8
+
9
+ @keyframes media-shake {
10
+ 0%,
11
+ 100% {
12
+ translate: 0 0;
13
+ }
14
+ 20% {
15
+ translate: -6px 0;
16
+ }
17
+ 40% {
18
+ translate: 4px 0;
19
+ }
20
+ 60% {
21
+ translate: -2px 0;
22
+ }
23
+ 80% {
24
+ translate: 1px 0;
25
+ }
26
+ }
27
+
28
+ @keyframes media-slide-in-forward {
29
+ from {
30
+ translate: -60% 0;
31
+ opacity: 0;
32
+ }
33
+ }
34
+
35
+ @keyframes media-slide-in-backward {
36
+ from {
37
+ translate: 60% 0;
38
+ opacity: 0;
39
+ }
40
+ }
41
+
42
+ @keyframes media-pop-in {
43
+ from {
44
+ scale: 0.8;
45
+ opacity: 0;
46
+ }
47
+ }
48
+
49
+ /* -------------------------------------------------------------------------- */
50
+ /* Global @properties for all video skins (CSS & Tailwind) */
51
+ /* -------------------------------------------------------------------------- */
52
+
53
+ @property --media-progress-fill {
54
+ syntax: "<percentage>";
55
+ inherits: true;
56
+ initial-value: 0%;
57
+ }
58
+
59
+
60
+ @theme {
61
+ --animate-media-shake: media-shake 300ms ease-in-out;
62
+ --animate-media-slide-in-forward: media-slide-in-forward 300ms ease-in-out;
63
+ --animate-media-slide-in-backward: media-slide-in-backward 300ms ease-in-out;
64
+ --animate-media-pop-in: media-pop-in 250ms ease-out;
65
+ }
66
+
@@ -8,7 +8,10 @@ function useControlsContext() {
8
8
  if (!ctx) throw new Error("Controls compound components must be used within a Controls.Root");
9
9
  return ctx;
10
10
  }
11
+ function useOptionalControlsContext() {
12
+ return useContext(ControlsContext);
13
+ }
11
14
  //#endregion
12
- export { ControlsContextProvider, useControlsContext };
15
+ export { ControlsContextProvider, useControlsContext, useOptionalControlsContext };
13
16
 
14
17
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/controls/context.tsx"],"sourcesContent":["'use client';\n\nimport type { ControlsState, StateAttrMap } from '@videojs/core';\nimport { createContext, useContext } from 'react';\n\nexport interface ControlsContextValue {\n state: ControlsState;\n stateAttrMap: StateAttrMap<ControlsState>;\n}\n\nconst ControlsContext = createContext<ControlsContextValue | null>(null);\n\nexport const ControlsContextProvider = ControlsContext.Provider;\n\nexport function useControlsContext(): ControlsContextValue {\n const ctx = useContext(ControlsContext);\n if (!ctx) throw new Error('Controls compound components must be used within a Controls.Root');\n return ctx;\n}\n"],"mappings":";;;AAUA,MAAM,kBAAkB,cAA2C,KAAK;AAExE,MAAa,0BAA0B,gBAAgB;AAEvD,SAAgB,qBAA2C;CACzD,MAAM,MAAM,WAAW,gBAAgB;AACvC,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,mEAAmE;AAC7F,QAAO"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/controls/context.tsx"],"sourcesContent":["'use client';\n\nimport type { ControlsState, StateAttrMap } from '@videojs/core';\nimport { createContext, useContext } from 'react';\n\nexport interface ControlsContextValue {\n state: ControlsState;\n stateAttrMap: StateAttrMap<ControlsState>;\n}\n\nconst ControlsContext = createContext<ControlsContextValue | null>(null);\n\nexport const ControlsContextProvider = ControlsContext.Provider;\n\nexport function useControlsContext(): ControlsContextValue {\n const ctx = useContext(ControlsContext);\n if (!ctx) throw new Error('Controls compound components must be used within a Controls.Root');\n return ctx;\n}\n\nexport function useOptionalControlsContext(): ControlsContextValue | null {\n return useContext(ControlsContext);\n}\n"],"mappings":";;;AAUA,MAAM,kBAAkB,cAA2C,KAAK;AAExE,MAAa,0BAA0B,gBAAgB;AAEvD,SAAgB,qBAA2C;CACzD,MAAM,MAAM,WAAW,gBAAgB;AACvC,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,mEAAmE;AAC7F,QAAO;;AAGT,SAAgB,6BAA0D;AACxE,QAAO,WAAW,gBAAgB"}
@@ -20,7 +20,8 @@ function Gesture({ type, action, value, pointer, region, disabled }) {
20
20
  const options = {
21
21
  pointer,
22
22
  region,
23
- action
23
+ action,
24
+ value
24
25
  };
25
26
  if (type === "doubletap") return createDoubleTapGesture(container, onActivate, options);
26
27
  return createTapGesture(container, onActivate, options);
@@ -1 +1 @@
1
- {"version":3,"file":"gesture.js","names":[],"sources":["../../../../src/ui/gesture/gesture.tsx"],"sourcesContent":["'use client';\n\nimport {\n type AnyPlayerStore,\n createDoubleTapGesture,\n createTapGesture,\n type GestureActionName,\n type GesturePointerType,\n type GestureRegion,\n resolveGestureAction,\n} from '@videojs/core/dom';\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\n\nimport { useContainer, usePlayer } from '../../player/context';\n\nexport interface GestureProps {\n type: 'tap' | 'doubletap' | (string & {});\n action: GestureActionName | (string & {});\n value?: number;\n pointer?: GesturePointerType;\n region?: GestureRegion;\n disabled?: boolean;\n}\n\nexport function Gesture({ type, action, value, pointer, region, disabled }: GestureProps): ReactNode {\n const store = usePlayer() as AnyPlayerStore;\n const container = useContainer();\n\n useEffect(() => {\n if (!container || !type || !action || disabled) return;\n\n const resolver = resolveGestureAction(action);\n if (!resolver) return;\n\n const onActivate = (event: PointerEvent) => {\n resolver({ store, value, event });\n };\n\n const options = { pointer, region, action };\n\n if (type === 'doubletap') {\n return createDoubleTapGesture(container, onActivate, options);\n }\n\n return createTapGesture(container, onActivate, options);\n }, [container, store, type, action, value, pointer, region, disabled]);\n\n return null;\n}\n\nexport namespace Gesture {\n export type Props = GestureProps;\n}\n\n/** @deprecated Use `GestureProps` instead. */\nexport type MediaGestureProps = GestureProps;\n\n/** @deprecated Use `Gesture` instead. */\nexport const MediaGesture = Gesture;\n"],"mappings":";;;;;AAyBA,SAAgB,QAAQ,EAAE,MAAM,QAAQ,OAAO,SAAS,QAAQ,YAAqC;CACnG,MAAM,QAAQ,WAAW;CACzB,MAAM,YAAY,cAAc;AAEhC,iBAAgB;AACd,MAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,SAAU;EAEhD,MAAM,WAAW,qBAAqB,OAAO;AAC7C,MAAI,CAAC,SAAU;EAEf,MAAM,cAAc,UAAwB;AAC1C,YAAS;IAAE;IAAO;IAAO;IAAO,CAAC;;EAGnC,MAAM,UAAU;GAAE;GAAS;GAAQ;GAAQ;AAE3C,MAAI,SAAS,YACX,QAAO,uBAAuB,WAAW,YAAY,QAAQ;AAG/D,SAAO,iBAAiB,WAAW,YAAY,QAAQ;IACtD;EAAC;EAAW;EAAO;EAAM;EAAQ;EAAO;EAAS;EAAQ;EAAS,CAAC;AAEtE,QAAO;;;AAWT,MAAa,eAAe"}
1
+ {"version":3,"file":"gesture.js","names":[],"sources":["../../../../src/ui/gesture/gesture.tsx"],"sourcesContent":["'use client';\n\nimport {\n type AnyPlayerStore,\n createDoubleTapGesture,\n createTapGesture,\n type GestureActionName,\n type GesturePointerType,\n type GestureRegion,\n resolveGestureAction,\n} from '@videojs/core/dom';\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\n\nimport { useContainer, usePlayer } from '../../player/context';\n\nexport interface GestureProps {\n type: 'tap' | 'doubletap' | (string & {});\n action: GestureActionName | (string & {});\n value?: number;\n pointer?: GesturePointerType;\n region?: GestureRegion;\n disabled?: boolean;\n}\n\nexport function Gesture({ type, action, value, pointer, region, disabled }: GestureProps): ReactNode {\n const store = usePlayer() as AnyPlayerStore;\n const container = useContainer();\n\n useEffect(() => {\n if (!container || !type || !action || disabled) return;\n\n const resolver = resolveGestureAction(action);\n if (!resolver) return;\n\n const onActivate = (event: PointerEvent) => {\n resolver({ store, value, event });\n };\n\n const options = { pointer, region, action, value };\n\n if (type === 'doubletap') {\n return createDoubleTapGesture(container, onActivate, options);\n }\n\n return createTapGesture(container, onActivate, options);\n }, [container, store, type, action, value, pointer, region, disabled]);\n\n return null;\n}\n\nexport namespace Gesture {\n export type Props = GestureProps;\n}\n\n/** @deprecated Use `GestureProps` instead. */\nexport type MediaGestureProps = GestureProps;\n\n/** @deprecated Use `Gesture` instead. */\nexport const MediaGesture = Gesture;\n"],"mappings":";;;;;AAyBA,SAAgB,QAAQ,EAAE,MAAM,QAAQ,OAAO,SAAS,QAAQ,YAAqC;CACnG,MAAM,QAAQ,WAAW;CACzB,MAAM,YAAY,cAAc;AAEhC,iBAAgB;AACd,MAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,SAAU;EAEhD,MAAM,WAAW,qBAAqB,OAAO;AAC7C,MAAI,CAAC,SAAU;EAEf,MAAM,cAAc,UAAwB;AAC1C,YAAS;IAAE;IAAO;IAAO;IAAO,CAAC;;EAGnC,MAAM,UAAU;GAAE;GAAS;GAAQ;GAAQ;GAAO;AAElD,MAAI,SAAS,YACX,QAAO,uBAAuB,WAAW,YAAY,QAAQ;AAG/D,SAAO,iBAAiB,WAAW,YAAY,QAAQ;IACtD;EAAC;EAAW;EAAO;EAAM;EAAQ;EAAO;EAAS;EAAQ;EAAS,CAAC;AAEtE,QAAO;;;AAWT,MAAa,eAAe"}
@@ -0,0 +1,2 @@
1
+ import { Gesture, MediaGesture } from "./gesture.js";
2
+ export { Gesture, MediaGesture };
@@ -13,6 +13,7 @@ function Hotkey({ keys, action, value, disabled, target }) {
13
13
  return createHotkey(container, {
14
14
  keys,
15
15
  action,
16
+ value,
16
17
  target,
17
18
  disabled,
18
19
  repeatable: !isHotkeyToggleAction(action),
@@ -1 +1 @@
1
- {"version":3,"file":"hotkey.js","names":[],"sources":["../../../../src/ui/hotkey/hotkey.tsx"],"sourcesContent":["'use client';\n\nimport {\n type AnyPlayerStore,\n createHotkey,\n type HotkeyActionName,\n isHotkeyToggleAction,\n resolveHotkeyAction,\n} from '@videojs/core/dom';\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\n\nimport { useContainer, usePlayer } from '../../player/context';\n\nexport interface HotkeyProps {\n keys: string;\n action: HotkeyActionName | (string & {});\n value?: number;\n disabled?: boolean;\n target?: 'player' | 'document';\n}\n\nexport function Hotkey({ keys, action, value, disabled, target }: HotkeyProps): ReactNode {\n const store = usePlayer() as AnyPlayerStore;\n const container = useContainer();\n\n useEffect(() => {\n if (!container || !keys || !action || disabled) return;\n\n const resolver = resolveHotkeyAction(action);\n if (!resolver) return;\n\n return createHotkey(container, {\n keys,\n action,\n target,\n disabled,\n repeatable: !isHotkeyToggleAction(action),\n onActivate: (_event, key) => {\n resolver({ store, key, value });\n },\n });\n }, [container, store, keys, action, value, disabled, target]);\n\n return null;\n}\n\nexport namespace Hotkey {\n export type Props = HotkeyProps;\n}\n\n/** @deprecated Use `HotkeyProps` instead. */\nexport type MediaHotkeyProps = HotkeyProps;\n\n/** @deprecated Use `Hotkey` instead. */\nexport const MediaHotkey = Hotkey;\n"],"mappings":";;;;;AAsBA,SAAgB,OAAO,EAAE,MAAM,QAAQ,OAAO,UAAU,UAAkC;CACxF,MAAM,QAAQ,WAAW;CACzB,MAAM,YAAY,cAAc;AAEhC,iBAAgB;AACd,MAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,SAAU;EAEhD,MAAM,WAAW,oBAAoB,OAAO;AAC5C,MAAI,CAAC,SAAU;AAEf,SAAO,aAAa,WAAW;GAC7B;GACA;GACA;GACA;GACA,YAAY,CAAC,qBAAqB,OAAO;GACzC,aAAa,QAAQ,QAAQ;AAC3B,aAAS;KAAE;KAAO;KAAK;KAAO,CAAC;;GAElC,CAAC;IACD;EAAC;EAAW;EAAO;EAAM;EAAQ;EAAO;EAAU;EAAO,CAAC;AAE7D,QAAO;;;AAWT,MAAa,cAAc"}
1
+ {"version":3,"file":"hotkey.js","names":[],"sources":["../../../../src/ui/hotkey/hotkey.tsx"],"sourcesContent":["'use client';\n\nimport {\n type AnyPlayerStore,\n createHotkey,\n type HotkeyActionName,\n isHotkeyToggleAction,\n resolveHotkeyAction,\n} from '@videojs/core/dom';\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\n\nimport { useContainer, usePlayer } from '../../player/context';\n\nexport interface HotkeyProps {\n keys: string;\n action: HotkeyActionName | (string & {});\n value?: number;\n disabled?: boolean;\n target?: 'player' | 'document';\n}\n\nexport function Hotkey({ keys, action, value, disabled, target }: HotkeyProps): ReactNode {\n const store = usePlayer() as AnyPlayerStore;\n const container = useContainer();\n\n useEffect(() => {\n if (!container || !keys || !action || disabled) return;\n\n const resolver = resolveHotkeyAction(action);\n if (!resolver) return;\n\n return createHotkey(container, {\n keys,\n action,\n value,\n target,\n disabled,\n repeatable: !isHotkeyToggleAction(action),\n onActivate: (_event, key) => {\n resolver({ store, key, value });\n },\n });\n }, [container, store, keys, action, value, disabled, target]);\n\n return null;\n}\n\nexport namespace Hotkey {\n export type Props = HotkeyProps;\n}\n\n/** @deprecated Use `HotkeyProps` instead. */\nexport type MediaHotkeyProps = HotkeyProps;\n\n/** @deprecated Use `Hotkey` instead. */\nexport const MediaHotkey = Hotkey;\n"],"mappings":";;;;;AAsBA,SAAgB,OAAO,EAAE,MAAM,QAAQ,OAAO,UAAU,UAAkC;CACxF,MAAM,QAAQ,WAAW;CACzB,MAAM,YAAY,cAAc;AAEhC,iBAAgB;AACd,MAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,SAAU;EAEhD,MAAM,WAAW,oBAAoB,OAAO;AAC5C,MAAI,CAAC,SAAU;AAEf,SAAO,aAAa,WAAW;GAC7B;GACA;GACA;GACA;GACA;GACA,YAAY,CAAC,qBAAqB,OAAO;GACzC,aAAa,QAAQ,QAAQ;AAC3B,aAAS;KAAE;KAAO;KAAK;KAAO,CAAC;;GAElC,CAAC;IACD;EAAC;EAAW;EAAO;EAAM;EAAQ;EAAO;EAAU;EAAO,CAAC;AAE7D,QAAO;;;AAWT,MAAa,cAAc"}
@@ -0,0 +1,2 @@
1
+ import { Hotkey, MediaHotkey } from "./hotkey.js";
2
+ export { Hotkey, MediaHotkey };
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { useContainer } from "../../player/context.js";
3
+ import { useLatestRef } from "../../utils/use-latest-ref.js";
4
+ import { getIndicatorVisibilityCoordinator } from "@videojs/core/dom";
5
+ import { useCallback, useEffect, useRef, useState } from "react";
6
+ //#region src/ui/input-indicators/use-indicator-visibility.ts
7
+ function useIndicatorVisibility(close) {
8
+ const container = useContainer();
9
+ const closeRef = useLatestRef(close);
10
+ const coordinatorRef = useRef(null);
11
+ const [handle] = useState(() => ({ close: () => closeRef.current() }));
12
+ useEffect(() => {
13
+ if (!container) return;
14
+ const coordinator = getIndicatorVisibilityCoordinator(container);
15
+ coordinatorRef.current = coordinator;
16
+ return coordinator.register(handle);
17
+ }, [container, handle]);
18
+ return useCallback(() => {
19
+ coordinatorRef.current?.show(handle);
20
+ }, [handle]);
21
+ }
22
+ //#endregion
23
+ export { useIndicatorVisibility };
24
+
25
+ //# sourceMappingURL=use-indicator-visibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-indicator-visibility.js","names":[],"sources":["../../../../src/ui/input-indicators/use-indicator-visibility.ts"],"sourcesContent":["'use client';\n\nimport type { IndicatorVisibilityHandle } from '@videojs/core';\nimport { getIndicatorVisibilityCoordinator } from '@videojs/core/dom';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { useContainer } from '../../player/context';\nimport { useLatestRef } from '../../utils/use-latest-ref';\n\nexport function useIndicatorVisibility(close: () => void): () => void {\n const container = useContainer();\n const closeRef = useLatestRef(close);\n const coordinatorRef = useRef<ReturnType<typeof getIndicatorVisibilityCoordinator> | null>(null);\n const [handle] = useState<IndicatorVisibilityHandle>(() => ({\n close: () => closeRef.current(),\n }));\n\n useEffect(() => {\n if (!container) return;\n\n const coordinator = getIndicatorVisibilityCoordinator(container);\n coordinatorRef.current = coordinator;\n\n return coordinator.register(handle);\n }, [container, handle]);\n\n return useCallback(() => {\n coordinatorRef.current?.show(handle);\n }, [handle]);\n}\n"],"mappings":";;;;;;AASA,SAAgB,uBAAuB,OAA+B;CACpE,MAAM,YAAY,cAAc;CAChC,MAAM,WAAW,aAAa,MAAM;CACpC,MAAM,iBAAiB,OAAoE,KAAK;CAChG,MAAM,CAAC,UAAU,gBAA2C,EAC1D,aAAa,SAAS,SAAS,EAChC,EAAE;AAEH,iBAAgB;AACd,MAAI,CAAC,UAAW;EAEhB,MAAM,cAAc,kCAAkC,UAAU;AAChE,iBAAe,UAAU;AAEzB,SAAO,YAAY,SAAS,OAAO;IAClC,CAAC,WAAW,OAAO,CAAC;AAEvB,QAAO,kBAAkB;AACvB,iBAAe,SAAS,KAAK,OAAO;IACnC,CAAC,OAAO,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { useContainer, usePlayer } from "../../player/context.js";
3
+ import { useLatestRef } from "../../utils/use-latest-ref.js";
4
+ import { getMediaSnapshot, subscribeToInputActions } from "@videojs/core/dom";
5
+ import { useEffect } from "react";
6
+ //#region src/ui/input-indicators/use-input-action-subscription.ts
7
+ function useInputActionSubscription(callback) {
8
+ const container = useContainer();
9
+ const store = usePlayer();
10
+ const callbackRef = useLatestRef(callback);
11
+ const storeRef = useLatestRef(store);
12
+ useEffect(() => {
13
+ if (!container) return;
14
+ return subscribeToInputActions(container, (event) => {
15
+ callbackRef.current(event, getMediaSnapshot(storeRef.current));
16
+ });
17
+ }, [container]);
18
+ }
19
+ //#endregion
20
+ export { useInputActionSubscription };
21
+
22
+ //# sourceMappingURL=use-input-action-subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-input-action-subscription.js","names":[],"sources":["../../../../src/ui/input-indicators/use-input-action-subscription.ts"],"sourcesContent":["'use client';\n\nimport type { InputActionEvent, MediaSnapshot } from '@videojs/core';\nimport { getMediaSnapshot, subscribeToInputActions } from '@videojs/core/dom';\nimport { useEffect } from 'react';\n\nimport { useContainer, usePlayer } from '../../player/context';\nimport { useLatestRef } from '../../utils/use-latest-ref';\n\nexport function useInputActionSubscription(callback: (event: InputActionEvent, snapshot: MediaSnapshot) => void): void {\n const container = useContainer();\n const store = usePlayer();\n const callbackRef = useLatestRef(callback);\n const storeRef = useLatestRef(store);\n\n useEffect(() => {\n if (!container) return;\n\n return subscribeToInputActions(container, (event) => {\n callbackRef.current(event, getMediaSnapshot(storeRef.current));\n });\n }, [container]);\n}\n"],"mappings":";;;;;;AASA,SAAgB,2BAA2B,UAA4E;CACrH,MAAM,YAAY,cAAc;CAChC,MAAM,QAAQ,WAAW;CACzB,MAAM,cAAc,aAAa,SAAS;CAC1C,MAAM,WAAW,aAAa,MAAM;AAEpC,iBAAgB;AACd,MAAI,CAAC,UAAW;AAEhB,SAAO,wBAAwB,YAAY,UAAU;AACnD,eAAY,QAAQ,OAAO,iBAAiB,SAAS,QAAQ,CAAC;IAC9D;IACD,CAAC,UAAU,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import { useDestroy } from "../../utils/use-destroy.js";
3
+ import { useIndicatorVisibility } from "./use-indicator-visibility.js";
4
+ import { useInputActionSubscription } from "./use-input-action-subscription.js";
5
+ import { useRenderedIndicatorState } from "./use-rendered-indicator-state.js";
6
+ import { useState, useSyncExternalStore } from "react";
7
+ //#region src/ui/input-indicators/use-input-indicator-root.ts
8
+ function useInputIndicatorRoot(createCore, props) {
9
+ const [core] = useState(createCore);
10
+ useDestroy(core);
11
+ core.setProps(props);
12
+ const showIndicator = useIndicatorVisibility(() => core.close());
13
+ useInputActionSubscription((event, snapshot) => {
14
+ if (core.processEvent(event, snapshot)) showIndicator();
15
+ });
16
+ return useRenderedIndicatorState(useSyncExternalStore((callback) => core.state.subscribe(callback), () => core.state.current, () => core.state.current));
17
+ }
18
+ //#endregion
19
+ export { useInputIndicatorRoot };
20
+
21
+ //# sourceMappingURL=use-input-indicator-root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-input-indicator-root.js","names":[],"sources":["../../../../src/ui/input-indicators/use-input-indicator-root.ts"],"sourcesContent":["'use client';\n\nimport type { IndicatorLifecycleState, InputActionEvent, MediaSnapshot } from '@videojs/core';\nimport type { State as StoreState } from '@videojs/store';\nimport { useState, useSyncExternalStore } from 'react';\n\nimport { useDestroy } from '../../utils/use-destroy';\nimport { useIndicatorVisibility } from './use-indicator-visibility';\nimport { useInputActionSubscription } from './use-input-action-subscription';\nimport { useRenderedIndicatorState } from './use-rendered-indicator-state';\n\ninterface InputIndicatorRootCore<IndicatorState extends IndicatorLifecycleState, Props> {\n readonly state: StoreState<IndicatorState>;\n setProps(props: Props): void;\n destroy(): void;\n close(): void;\n processEvent(event: InputActionEvent, snapshot: MediaSnapshot): boolean;\n}\n\nexport function useInputIndicatorRoot<IndicatorState extends IndicatorLifecycleState, Props>(\n createCore: () => InputIndicatorRootCore<IndicatorState, Props>,\n props: Props\n) {\n const [core] = useState(createCore);\n useDestroy(core);\n core.setProps(props);\n const showIndicator = useIndicatorVisibility(() => core.close());\n\n useInputActionSubscription((event, snapshot) => {\n if (core.processEvent(event, snapshot)) showIndicator();\n });\n\n const currentState = useSyncExternalStore(\n (callback) => core.state.subscribe(callback),\n () => core.state.current,\n () => core.state.current\n );\n\n return useRenderedIndicatorState(currentState);\n}\n"],"mappings":";;;;;;;AAmBA,SAAgB,sBACd,YACA,OACA;CACA,MAAM,CAAC,QAAQ,SAAS,WAAW;AACnC,YAAW,KAAK;AAChB,MAAK,SAAS,MAAM;CACpB,MAAM,gBAAgB,6BAA6B,KAAK,OAAO,CAAC;AAEhE,6BAA4B,OAAO,aAAa;AAC9C,MAAI,KAAK,aAAa,OAAO,SAAS,CAAE,gBAAe;GACvD;AAQF,QAAO,0BANc,sBAClB,aAAa,KAAK,MAAM,UAAU,SAAS,QACtC,KAAK,MAAM,eACX,KAAK,MAAM,QAClB,CAE6C"}
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ import { useDestroy } from "../../utils/use-destroy.js";
3
+ import { createTransition } from "@videojs/core/dom";
4
+ import { useEffect, useRef, useState, useSyncExternalStore } from "react";
5
+ import { getRenderedIndicatorState, isIndicatorPresent } from "@videojs/core";
6
+ //#region src/ui/input-indicators/use-rendered-indicator-state.ts
7
+ function useRenderedIndicatorState(currentState) {
8
+ const elementRef = useRef(null);
9
+ const currentStateRef = useRef(currentState);
10
+ const snapshotRef = useRef(currentState);
11
+ const [transition] = useState(() => createTransition());
12
+ useDestroy(transition);
13
+ currentStateRef.current = currentState;
14
+ const transitionState = useSyncExternalStore((callback) => transition.state.subscribe(callback), () => transition.state.current, () => transition.state.current);
15
+ const { generation, open } = currentState;
16
+ useEffect(() => {
17
+ if (open) {
18
+ const nextState = currentStateRef.current;
19
+ if (nextState.generation !== generation) return;
20
+ snapshotRef.current = nextState;
21
+ transition.open();
22
+ return;
23
+ }
24
+ const { active, status } = transition.state.current;
25
+ if (active && status !== "ending") transition.close(elementRef.current);
26
+ }, [
27
+ generation,
28
+ open,
29
+ transition
30
+ ]);
31
+ return {
32
+ elementRef,
33
+ present: isIndicatorPresent(currentState, transitionState),
34
+ state: getRenderedIndicatorState(currentState, snapshotRef.current, transitionState)
35
+ };
36
+ }
37
+ //#endregion
38
+ export { useRenderedIndicatorState };
39
+
40
+ //# sourceMappingURL=use-rendered-indicator-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-rendered-indicator-state.js","names":[],"sources":["../../../../src/ui/input-indicators/use-rendered-indicator-state.ts"],"sourcesContent":["'use client';\n\nimport { getRenderedIndicatorState, type IndicatorLifecycleState, isIndicatorPresent } from '@videojs/core';\nimport { createTransition } from '@videojs/core/dom';\nimport { useEffect, useRef, useState, useSyncExternalStore } from 'react';\n\nimport { useDestroy } from '../../utils/use-destroy';\n\nexport function useRenderedIndicatorState<State extends IndicatorLifecycleState>(currentState: State) {\n const elementRef = useRef<HTMLElement>(null);\n const currentStateRef = useRef(currentState);\n const snapshotRef = useRef(currentState);\n const [transition] = useState(() => createTransition());\n useDestroy(transition);\n currentStateRef.current = currentState;\n\n const transitionState = useSyncExternalStore(\n (callback) => transition.state.subscribe(callback),\n () => transition.state.current,\n () => transition.state.current\n );\n\n const { generation, open } = currentState;\n\n useEffect(() => {\n if (open) {\n const nextState = currentStateRef.current;\n if (nextState.generation !== generation) return;\n\n snapshotRef.current = nextState;\n void transition.open();\n return;\n }\n\n const { active, status } = transition.state.current;\n if (active && status !== 'ending') {\n void transition.close(elementRef.current);\n }\n }, [generation, open, transition]);\n\n return {\n elementRef,\n present: isIndicatorPresent(currentState, transitionState),\n state: getRenderedIndicatorState(currentState, snapshotRef.current, transitionState),\n };\n}\n"],"mappings":";;;;;;AAQA,SAAgB,0BAAiE,cAAqB;CACpG,MAAM,aAAa,OAAoB,KAAK;CAC5C,MAAM,kBAAkB,OAAO,aAAa;CAC5C,MAAM,cAAc,OAAO,aAAa;CACxC,MAAM,CAAC,cAAc,eAAe,kBAAkB,CAAC;AACvD,YAAW,WAAW;AACtB,iBAAgB,UAAU;CAE1B,MAAM,kBAAkB,sBACrB,aAAa,WAAW,MAAM,UAAU,SAAS,QAC5C,WAAW,MAAM,eACjB,WAAW,MAAM,QACxB;CAED,MAAM,EAAE,YAAY,SAAS;AAE7B,iBAAgB;AACd,MAAI,MAAM;GACR,MAAM,YAAY,gBAAgB;AAClC,OAAI,UAAU,eAAe,WAAY;AAEzC,eAAY,UAAU;AACjB,cAAW,MAAM;AACtB;;EAGF,MAAM,EAAE,QAAQ,WAAW,WAAW,MAAM;AAC5C,MAAI,UAAU,WAAW,SAClB,YAAW,MAAM,WAAW,QAAQ;IAE1C;EAAC;EAAY;EAAM;EAAW,CAAC;AAElC,QAAO;EACL;EACA,SAAS,mBAAmB,cAAc,gBAAgB;EAC1D,OAAO,0BAA0B,cAAc,YAAY,SAAS,gBAAgB;EACrF"}
@@ -0,0 +1,2 @@
1
+ import { LiveButton } from "./live-button.js";
2
+ export { LiveButton };
@@ -0,0 +1,89 @@
1
+ "use client";
2
+ import { usePlayer } from "../../player/context.js";
3
+ import { renderElement } from "../../utils/use-render.js";
4
+ import { useButton } from "../hooks/use-button.js";
5
+ import { useOptionalTooltipContext } from "../tooltip/context.js";
6
+ import { selectBuffer, selectLive, selectTime } from "@videojs/core/dom";
7
+ import { forwardRef, useLayoutEffect, useState } from "react";
8
+ import { LiveButtonCore, LiveButtonDataAttrs } from "@videojs/core";
9
+ //#region src/ui/live-button/live-button.tsx
10
+ const DISPLAY_NAME = "LiveButton";
11
+ /**
12
+ * A button that indicates live status and seeks to the live edge when
13
+ * pressed. Exposes `data-live` while the stream is live (or DVR) and
14
+ * `data-live-edge` while playing at the live edge so skins can style a
15
+ * red-dot ↔ grey-dot treatment.
16
+ *
17
+ * Selects from `live`, `time`, and `buffer` features and composes them
18
+ * itself rather than going through `createMediaButton`, since the LiveButton
19
+ * needs three feature slices to detect the live edge and seek.
20
+ *
21
+ * Falls back to `LiveButtonCore.defaultText` (`'Live'` by default) when no
22
+ * children are provided. Override the static field globally for i18n.
23
+ *
24
+ * @example
25
+ * ```tsx
26
+ * <LiveButton />
27
+ * ```
28
+ *
29
+ * @see https://github.com/video-dev/media-ui-extensions/blob/main/proposals/0007-live-edge.md
30
+ */
31
+ const LiveButton = forwardRef(function LiveButton(componentProps, forwardedRef) {
32
+ const { children, render, className, style, label, disabled, ...elementProps } = componentProps;
33
+ const live = usePlayer(selectLive);
34
+ const time = usePlayer(selectTime);
35
+ const buffer = usePlayer(selectBuffer);
36
+ const media = live && time && buffer ? {
37
+ currentTime: time.currentTime,
38
+ seek: time.seek,
39
+ seekable: buffer.seekable,
40
+ liveEdgeStart: live.liveEdgeStart,
41
+ targetLiveWindow: live.targetLiveWindow
42
+ } : null;
43
+ const tooltipCtx = useOptionalTooltipContext();
44
+ const [core] = useState(() => new LiveButtonCore());
45
+ core.setProps({
46
+ label,
47
+ disabled
48
+ });
49
+ const { getButtonProps, buttonRef } = useButton({
50
+ displayName: DISPLAY_NAME,
51
+ onActivate: () => {
52
+ if (media) core.seekToLive(media);
53
+ },
54
+ isDisabled: () => !!disabled || !media
55
+ });
56
+ if (media) core.setMedia(media);
57
+ const state = media ? core.getState() : null;
58
+ const labelText = state ? core.getLabel(state) : void 0;
59
+ useLayoutEffect(() => {
60
+ if (!tooltipCtx) return;
61
+ tooltipCtx.setContent(labelText);
62
+ return () => tooltipCtx.setContent(void 0);
63
+ }, [tooltipCtx, labelText]);
64
+ if (!media || !state) return null;
65
+ const attrs = core.getAttrs(state);
66
+ const content = children ?? LiveButtonCore.defaultText;
67
+ return renderElement("button", {
68
+ render,
69
+ className,
70
+ style
71
+ }, {
72
+ state,
73
+ stateAttrMap: LiveButtonDataAttrs,
74
+ ref: [forwardedRef, buttonRef],
75
+ props: [
76
+ attrs,
77
+ {
78
+ children: content,
79
+ ...elementProps
80
+ },
81
+ getButtonProps()
82
+ ]
83
+ });
84
+ });
85
+ LiveButton.displayName = DISPLAY_NAME;
86
+ //#endregion
87
+ export { LiveButton };
88
+
89
+ //# sourceMappingURL=live-button.js.map