@videojs/react 10.0.0-beta.2 → 10.0.0-beta.22

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 (802) hide show
  1. package/dist/default/_virtual/_rolldown/runtime.js +6 -11
  2. package/dist/default/icons/dist/react/default/captions-off.js +1 -3
  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 +1 -3
  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 +32 -0
  7. package/dist/default/icons/dist/react/default/cast-enter.js.map +1 -0
  8. package/dist/default/icons/dist/react/default/cast-exit.js +36 -0
  9. package/dist/default/icons/dist/react/default/cast-exit.js.map +1 -0
  10. package/dist/default/icons/dist/react/default/fullscreen-enter.js +1 -3
  11. package/dist/default/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  12. package/dist/default/icons/dist/react/default/fullscreen-exit.js +1 -3
  13. package/dist/default/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  14. package/dist/default/icons/dist/react/default/pause.js +1 -3
  15. package/dist/default/icons/dist/react/default/pause.js.map +1 -1
  16. package/dist/default/icons/dist/react/default/pip-enter.js +32 -0
  17. package/dist/default/icons/dist/react/default/pip-enter.js.map +1 -0
  18. package/dist/default/icons/dist/react/default/pip-exit.js +32 -0
  19. package/dist/default/icons/dist/react/default/pip-exit.js.map +1 -0
  20. package/dist/default/icons/dist/react/default/play.js +1 -3
  21. package/dist/default/icons/dist/react/default/play.js.map +1 -1
  22. package/dist/default/icons/dist/react/default/restart.js +1 -3
  23. package/dist/default/icons/dist/react/default/restart.js.map +1 -1
  24. package/dist/default/icons/dist/react/default/seek.js +1 -3
  25. package/dist/default/icons/dist/react/default/seek.js.map +1 -1
  26. package/dist/default/icons/dist/react/default/spinner.js +1 -3
  27. package/dist/default/icons/dist/react/default/spinner.js.map +1 -1
  28. package/dist/default/icons/dist/react/default/volume-high.js +1 -3
  29. package/dist/default/icons/dist/react/default/volume-high.js.map +1 -1
  30. package/dist/default/icons/dist/react/default/volume-low.js +1 -3
  31. package/dist/default/icons/dist/react/default/volume-low.js.map +1 -1
  32. package/dist/default/icons/dist/react/default/volume-off.js +1 -3
  33. package/dist/default/icons/dist/react/default/volume-off.js.map +1 -1
  34. package/dist/default/icons/dist/react/minimal/captions-off.js +1 -3
  35. package/dist/default/icons/dist/react/minimal/captions-off.js.map +1 -1
  36. package/dist/default/icons/dist/react/minimal/captions-on.js +1 -3
  37. package/dist/default/icons/dist/react/minimal/captions-on.js.map +1 -1
  38. package/dist/default/icons/dist/react/minimal/cast-enter.js +28 -0
  39. package/dist/default/icons/dist/react/minimal/cast-enter.js.map +1 -0
  40. package/dist/default/icons/dist/react/minimal/cast-exit.js +32 -0
  41. package/dist/default/icons/dist/react/minimal/cast-exit.js.map +1 -0
  42. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js +1 -3
  43. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  44. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js +1 -3
  45. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  46. package/dist/default/icons/dist/react/minimal/pause.js +1 -3
  47. package/dist/default/icons/dist/react/minimal/pause.js.map +1 -1
  48. package/dist/default/icons/dist/react/minimal/pip-enter.js +36 -0
  49. package/dist/default/icons/dist/react/minimal/pip-enter.js.map +1 -0
  50. package/dist/default/icons/dist/react/minimal/pip-exit.js +36 -0
  51. package/dist/default/icons/dist/react/minimal/pip-exit.js.map +1 -0
  52. package/dist/default/icons/dist/react/minimal/play.js +1 -3
  53. package/dist/default/icons/dist/react/minimal/play.js.map +1 -1
  54. package/dist/default/icons/dist/react/minimal/restart.js +1 -3
  55. package/dist/default/icons/dist/react/minimal/restart.js.map +1 -1
  56. package/dist/default/icons/dist/react/minimal/seek.js +1 -3
  57. package/dist/default/icons/dist/react/minimal/seek.js.map +1 -1
  58. package/dist/default/icons/dist/react/minimal/spinner.js +1 -3
  59. package/dist/default/icons/dist/react/minimal/spinner.js.map +1 -1
  60. package/dist/default/icons/dist/react/minimal/volume-high.js +1 -3
  61. package/dist/default/icons/dist/react/minimal/volume-high.js.map +1 -1
  62. package/dist/default/icons/dist/react/minimal/volume-low.js +1 -3
  63. package/dist/default/icons/dist/react/minimal/volume-low.js.map +1 -1
  64. package/dist/default/icons/dist/react/minimal/volume-off.js +1 -3
  65. package/dist/default/icons/dist/react/minimal/volume-off.js.map +1 -1
  66. package/dist/default/index.js +26 -14
  67. package/dist/default/media/audio.js +5 -10
  68. package/dist/default/media/audio.js.map +1 -1
  69. package/dist/default/media/background-video/index.js +4 -6
  70. package/dist/default/media/background-video/index.js.map +1 -1
  71. package/dist/default/media/dash-video/index.js +21 -0
  72. package/dist/default/media/dash-video/index.js.map +1 -0
  73. package/dist/default/media/hls-video/index.js +8 -13
  74. package/dist/default/media/hls-video/index.js.map +1 -1
  75. package/dist/default/media/mux-audio/index.js +20 -0
  76. package/dist/default/media/mux-audio/index.js.map +1 -0
  77. package/dist/default/media/mux-video/index.js +21 -0
  78. package/dist/default/media/mux-video/index.js.map +1 -0
  79. package/dist/default/media/native-hls-video/index.js +21 -0
  80. package/dist/default/media/native-hls-video/index.js.map +1 -0
  81. package/dist/default/media/simple-hls-video/index.js +8 -12
  82. package/dist/default/media/simple-hls-video/index.js.map +1 -1
  83. package/dist/default/media/video.js +5 -10
  84. package/dist/default/media/video.js.map +1 -1
  85. package/dist/default/player/context.js +27 -15
  86. package/dist/default/player/context.js.map +1 -1
  87. package/dist/default/player/create-player.js +18 -6
  88. package/dist/default/player/create-player.js.map +1 -1
  89. package/dist/default/presets/audio/index.js +1 -2
  90. package/dist/default/presets/audio/minimal-skin.css +293 -194
  91. package/dist/default/presets/audio/minimal-skin.js +144 -123
  92. package/dist/default/presets/audio/minimal-skin.js.map +1 -1
  93. package/dist/default/presets/audio/minimal-skin.tailwind.js +156 -137
  94. package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
  95. package/dist/default/presets/audio/skin.css +276 -186
  96. package/dist/default/presets/audio/skin.js +218 -126
  97. package/dist/default/presets/audio/skin.js.map +1 -1
  98. package/dist/default/presets/audio/skin.tailwind.js +166 -141
  99. package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
  100. package/dist/default/presets/background/index.js +1 -2
  101. package/dist/default/presets/background/skin.js +1 -2
  102. package/dist/default/presets/background/skin.js.map +1 -1
  103. package/dist/default/presets/video/index.js +1 -2
  104. package/dist/default/presets/video/minimal-skin.css +593 -340
  105. package/dist/default/presets/video/minimal-skin.js +149 -122
  106. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  107. package/dist/default/presets/video/minimal-skin.tailwind.js +160 -138
  108. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  109. package/dist/default/presets/video/skin.css +561 -323
  110. package/dist/default/presets/video/skin.js +310 -171
  111. package/dist/default/presets/video/skin.js.map +1 -1
  112. package/dist/default/presets/video/skin.tailwind.js +215 -186
  113. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  114. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +17 -32
  115. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  116. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js +1 -1
  117. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  118. package/dist/default/skins/dist/default/default/tailwind/components/button-group.js +7 -0
  119. package/dist/default/skins/dist/default/default/tailwind/components/button-group.js.map +1 -0
  120. package/dist/default/skins/dist/default/default/tailwind/components/button.js +5 -5
  121. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  122. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +2 -3
  123. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  124. package/dist/default/skins/dist/default/default/tailwind/components/error.js +4 -5
  125. package/dist/default/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  126. package/dist/default/skins/dist/default/default/tailwind/components/icon.js +1 -2
  127. package/dist/default/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  128. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +2 -3
  129. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  130. package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js +1 -1
  131. package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -1
  132. package/dist/default/skins/dist/default/default/tailwind/components/popup.js +5 -6
  133. package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  134. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +15 -0
  135. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  136. package/dist/default/skins/dist/default/default/tailwind/components/preview.js +12 -0
  137. package/dist/default/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  138. package/dist/default/skins/dist/default/default/tailwind/components/root.js +2 -3
  139. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  140. package/dist/default/skins/dist/default/default/tailwind/components/seek.js +2 -3
  141. package/dist/default/skins/dist/default/default/tailwind/components/seek.js.map +1 -1
  142. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +2 -3
  143. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  144. package/dist/default/skins/dist/default/default/tailwind/components/surface.js +2 -3
  145. package/dist/default/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  146. package/dist/default/skins/dist/default/default/tailwind/components/time.js +1 -1
  147. package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  148. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +41 -25
  149. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  150. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +18 -27
  151. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  152. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  153. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  154. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js +1 -2
  155. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -1
  156. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +5 -5
  157. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  158. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +2 -3
  159. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  160. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +4 -5
  161. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  162. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js +1 -2
  163. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  164. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +2 -3
  165. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  166. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +5 -5
  167. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  168. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +15 -0
  169. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  170. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js +13 -0
  171. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  172. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +2 -3
  173. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  174. package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js +2 -3
  175. package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -1
  176. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +2 -3
  177. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  178. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +5 -6
  179. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  180. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +44 -23
  181. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  182. package/dist/{dev/skins/dist/default/default/tailwind/components → default/skins/dist/default/shared/tailwind}/icon-state.js +12 -2
  183. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
  184. package/dist/default/ui/alert-dialog/alert-dialog-close.js +2 -4
  185. package/dist/default/ui/alert-dialog/alert-dialog-close.js.map +1 -1
  186. package/dist/default/ui/alert-dialog/alert-dialog-description.js +2 -4
  187. package/dist/default/ui/alert-dialog/alert-dialog-description.js.map +1 -1
  188. package/dist/default/ui/alert-dialog/alert-dialog-popup.js +2 -4
  189. package/dist/default/ui/alert-dialog/alert-dialog-popup.js.map +1 -1
  190. package/dist/default/ui/alert-dialog/alert-dialog-root.js +5 -7
  191. package/dist/default/ui/alert-dialog/alert-dialog-root.js.map +1 -1
  192. package/dist/default/ui/alert-dialog/alert-dialog-title.js +2 -4
  193. package/dist/default/ui/alert-dialog/alert-dialog-title.js.map +1 -1
  194. package/dist/default/ui/alert-dialog/context.js +2 -4
  195. package/dist/default/ui/alert-dialog/context.js.map +1 -1
  196. package/dist/default/ui/alert-dialog/index.js +1 -2
  197. package/dist/default/ui/alert-dialog/index.parts.js +1 -2
  198. package/dist/default/ui/buffering-indicator/buffering-indicator.js +4 -4
  199. package/dist/default/ui/buffering-indicator/buffering-indicator.js.map +1 -1
  200. package/dist/default/ui/buffering-indicator/index.js +1 -2
  201. package/dist/default/ui/captions-button/captions-button.js +4 -5
  202. package/dist/default/ui/captions-button/captions-button.js.map +1 -1
  203. package/dist/default/ui/captions-button/index.js +1 -2
  204. package/dist/default/ui/cast-button/cast-button.js +17 -0
  205. package/dist/default/ui/cast-button/cast-button.js.map +1 -0
  206. package/dist/default/ui/cast-button/index.js +2 -0
  207. package/dist/default/ui/controls/context.js +2 -4
  208. package/dist/default/ui/controls/context.js.map +1 -1
  209. package/dist/default/ui/controls/controls-group.js +2 -4
  210. package/dist/default/ui/controls/controls-group.js.map +1 -1
  211. package/dist/default/ui/controls/controls-root.js +2 -4
  212. package/dist/default/ui/controls/controls-root.js.map +1 -1
  213. package/dist/default/ui/controls/index.js +1 -2
  214. package/dist/default/ui/controls/index.parts.js +1 -2
  215. package/dist/default/ui/create-context-part.js +2 -4
  216. package/dist/default/ui/create-context-part.js.map +1 -1
  217. package/dist/default/ui/create-media-button.js +22 -10
  218. package/dist/default/ui/create-media-button.js.map +1 -1
  219. package/dist/default/ui/error-dialog/context.js +14 -0
  220. package/dist/default/ui/error-dialog/context.js.map +1 -0
  221. package/dist/default/ui/error-dialog/error-dialog-description.js +28 -0
  222. package/dist/default/ui/error-dialog/error-dialog-description.js.map +1 -0
  223. package/dist/default/ui/error-dialog/error-dialog-root.js +57 -0
  224. package/dist/default/ui/error-dialog/error-dialog-root.js.map +1 -0
  225. package/dist/default/ui/error-dialog/index.js +3 -0
  226. package/dist/default/ui/error-dialog/index.parts.js +18 -0
  227. package/dist/default/ui/error-dialog/index.parts.js.map +1 -0
  228. package/dist/default/ui/fullscreen-button/fullscreen-button.js +4 -5
  229. package/dist/default/ui/fullscreen-button/fullscreen-button.js.map +1 -1
  230. package/dist/default/ui/fullscreen-button/index.js +1 -2
  231. package/dist/default/ui/gesture/media-gesture.js +42 -0
  232. package/dist/default/ui/gesture/media-gesture.js.map +1 -0
  233. package/dist/default/ui/gesture/use-doubletap-gesture.js +29 -0
  234. package/dist/default/ui/gesture/use-doubletap-gesture.js.map +1 -0
  235. package/dist/default/ui/gesture/use-tap-gesture.js +29 -0
  236. package/dist/default/ui/gesture/use-tap-gesture.js.map +1 -0
  237. package/dist/default/ui/hooks/use-button.js +2 -4
  238. package/dist/default/ui/hooks/use-button.js.map +1 -1
  239. package/dist/default/ui/hooks/use-slider.js +4 -6
  240. package/dist/default/ui/hooks/use-slider.js.map +1 -1
  241. package/dist/default/ui/hotkey/media-hotkey.js +41 -0
  242. package/dist/default/ui/hotkey/media-hotkey.js.map +1 -0
  243. package/dist/default/ui/hotkey/use-aria-key-shortcuts.js +16 -0
  244. package/dist/default/ui/hotkey/use-aria-key-shortcuts.js.map +1 -0
  245. package/dist/default/ui/hotkey/use-hotkey.js +32 -0
  246. package/dist/default/ui/hotkey/use-hotkey.js.map +1 -0
  247. package/dist/default/ui/mute-button/index.js +1 -2
  248. package/dist/default/ui/mute-button/mute-button.js +4 -5
  249. package/dist/default/ui/mute-button/mute-button.js.map +1 -1
  250. package/dist/default/ui/pip-button/index.js +1 -2
  251. package/dist/default/ui/pip-button/pip-button.js +4 -5
  252. package/dist/default/ui/pip-button/pip-button.js.map +1 -1
  253. package/dist/default/ui/play-button/index.js +1 -2
  254. package/dist/default/ui/play-button/play-button.js +4 -5
  255. package/dist/default/ui/play-button/play-button.js.map +1 -1
  256. package/dist/default/ui/playback-rate-button/index.js +1 -2
  257. package/dist/default/ui/playback-rate-button/playback-rate-button.js +2 -4
  258. package/dist/default/ui/playback-rate-button/playback-rate-button.js.map +1 -1
  259. package/dist/default/ui/popover/context.js +2 -4
  260. package/dist/default/ui/popover/context.js.map +1 -1
  261. package/dist/default/ui/popover/index.js +1 -2
  262. package/dist/default/ui/popover/index.parts.js +1 -2
  263. package/dist/default/ui/popover/popover-arrow.js +2 -4
  264. package/dist/default/ui/popover/popover-arrow.js.map +1 -1
  265. package/dist/default/ui/popover/popover-popup.js +13 -6
  266. package/dist/default/ui/popover/popover-popup.js.map +1 -1
  267. package/dist/default/ui/popover/popover-root.js +4 -6
  268. package/dist/default/ui/popover/popover-root.js.map +1 -1
  269. package/dist/default/ui/popover/popover-trigger.js +2 -4
  270. package/dist/default/ui/popover/popover-trigger.js.map +1 -1
  271. package/dist/default/ui/poster/index.js +1 -2
  272. package/dist/default/ui/poster/poster.js +2 -4
  273. package/dist/default/ui/poster/poster.js.map +1 -1
  274. package/dist/default/ui/seek-button/index.js +1 -2
  275. package/dist/default/ui/seek-button/seek-button.js +2 -4
  276. package/dist/default/ui/seek-button/seek-button.js.map +1 -1
  277. package/dist/default/ui/slider/context.js +2 -4
  278. package/dist/default/ui/slider/context.js.map +1 -1
  279. package/dist/default/ui/slider/index.js +1 -2
  280. package/dist/default/ui/slider/index.parts.js +1 -2
  281. package/dist/default/ui/slider/slider-buffer.js +2 -4
  282. package/dist/default/ui/slider/slider-buffer.js.map +1 -1
  283. package/dist/default/ui/slider/slider-fill.js +2 -4
  284. package/dist/default/ui/slider/slider-fill.js.map +1 -1
  285. package/dist/default/ui/slider/slider-preview.js +2 -4
  286. package/dist/default/ui/slider/slider-preview.js.map +1 -1
  287. package/dist/default/ui/slider/slider-root.js +2 -4
  288. package/dist/default/ui/slider/slider-root.js.map +1 -1
  289. package/dist/default/ui/slider/slider-thumb.js +2 -4
  290. package/dist/default/ui/slider/slider-thumb.js.map +1 -1
  291. package/dist/default/ui/slider/slider-thumbnail.js +2 -4
  292. package/dist/default/ui/slider/slider-thumbnail.js.map +1 -1
  293. package/dist/default/ui/slider/slider-track.js +2 -4
  294. package/dist/default/ui/slider/slider-track.js.map +1 -1
  295. package/dist/default/ui/slider/slider-value.js +2 -4
  296. package/dist/default/ui/slider/slider-value.js.map +1 -1
  297. package/dist/default/ui/thumbnail/index.js +2 -0
  298. package/dist/default/ui/thumbnail/thumbnail.js +3 -6
  299. package/dist/default/ui/thumbnail/thumbnail.js.map +1 -1
  300. package/dist/default/ui/time/index.js +1 -2
  301. package/dist/default/ui/time/index.parts.js +1 -2
  302. package/dist/default/ui/time/time-group.js +2 -4
  303. package/dist/default/ui/time/time-group.js.map +1 -1
  304. package/dist/default/ui/time/time-separator.js +2 -4
  305. package/dist/default/ui/time/time-separator.js.map +1 -1
  306. package/dist/default/ui/time/time-value.js +2 -4
  307. package/dist/default/ui/time/time-value.js.map +1 -1
  308. package/dist/default/ui/time-slider/index.js +1 -2
  309. package/dist/default/ui/time-slider/index.parts.js +1 -2
  310. package/dist/default/ui/time-slider/time-slider-root.js +6 -8
  311. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
  312. package/dist/default/ui/tooltip/context.js +6 -5
  313. package/dist/default/ui/tooltip/context.js.map +1 -1
  314. package/dist/default/ui/tooltip/group-context.js +2 -4
  315. package/dist/default/ui/tooltip/group-context.js.map +1 -1
  316. package/dist/default/ui/tooltip/index.js +2 -3
  317. package/dist/default/ui/tooltip/index.parts.js +1 -2
  318. package/dist/default/ui/tooltip/tooltip-arrow.js +2 -4
  319. package/dist/default/ui/tooltip/tooltip-arrow.js.map +1 -1
  320. package/dist/default/ui/tooltip/tooltip-popup.js +15 -7
  321. package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
  322. package/dist/default/ui/tooltip/tooltip-provider.js +2 -4
  323. package/dist/default/ui/tooltip/tooltip-provider.js.map +1 -1
  324. package/dist/default/ui/tooltip/tooltip-root.js +9 -7
  325. package/dist/default/ui/tooltip/tooltip-root.js.map +1 -1
  326. package/dist/default/ui/tooltip/tooltip-trigger.js +4 -9
  327. package/dist/default/ui/tooltip/tooltip-trigger.js.map +1 -1
  328. package/dist/default/ui/volume-slider/index.js +1 -2
  329. package/dist/default/ui/volume-slider/index.parts.js +1 -2
  330. package/dist/default/ui/volume-slider/volume-slider-root.js +36 -20
  331. package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -1
  332. package/dist/default/utils/attach-media-element.js +1 -1
  333. package/dist/default/utils/media-props.js +14 -6
  334. package/dist/default/utils/media-props.js.map +1 -1
  335. package/dist/default/utils/merge-props.js +2 -3
  336. package/dist/default/utils/merge-props.js.map +1 -1
  337. package/dist/default/utils/use-composed-refs.js +2 -4
  338. package/dist/default/utils/use-composed-refs.js.map +1 -1
  339. package/dist/default/utils/use-destroy.js +14 -8
  340. package/dist/default/utils/use-destroy.js.map +1 -1
  341. package/dist/default/utils/use-force-render.js +2 -4
  342. package/dist/default/utils/use-force-render.js.map +1 -1
  343. package/dist/default/utils/use-latest-ref.js +2 -4
  344. package/dist/default/utils/use-latest-ref.js.map +1 -1
  345. package/dist/default/utils/use-media-instance.js +22 -0
  346. package/dist/default/utils/use-media-instance.js.map +1 -0
  347. package/dist/default/utils/use-render.js +7 -5
  348. package/dist/default/utils/use-render.js.map +1 -1
  349. package/dist/default/utils/use-safe-id.js +3 -5
  350. package/dist/default/utils/use-safe-id.js.map +1 -1
  351. package/dist/dev/_virtual/_rolldown/runtime.js +6 -11
  352. package/dist/dev/icons/dist/react/default/captions-off.js +1 -3
  353. package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -1
  354. package/dist/dev/icons/dist/react/default/captions-on.js +1 -3
  355. package/dist/dev/icons/dist/react/default/captions-on.js.map +1 -1
  356. package/dist/dev/icons/dist/react/default/cast-enter.js +32 -0
  357. package/dist/dev/icons/dist/react/default/cast-enter.js.map +1 -0
  358. package/dist/dev/icons/dist/react/default/cast-exit.js +36 -0
  359. package/dist/dev/icons/dist/react/default/cast-exit.js.map +1 -0
  360. package/dist/dev/icons/dist/react/default/fullscreen-enter.js +1 -3
  361. package/dist/dev/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  362. package/dist/dev/icons/dist/react/default/fullscreen-exit.js +1 -3
  363. package/dist/dev/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  364. package/dist/dev/icons/dist/react/default/pause.js +1 -3
  365. package/dist/dev/icons/dist/react/default/pause.js.map +1 -1
  366. package/dist/dev/icons/dist/react/default/pip-enter.js +32 -0
  367. package/dist/dev/icons/dist/react/default/pip-enter.js.map +1 -0
  368. package/dist/dev/icons/dist/react/default/pip-exit.js +32 -0
  369. package/dist/dev/icons/dist/react/default/pip-exit.js.map +1 -0
  370. package/dist/dev/icons/dist/react/default/play.js +1 -3
  371. package/dist/dev/icons/dist/react/default/play.js.map +1 -1
  372. package/dist/dev/icons/dist/react/default/restart.js +1 -3
  373. package/dist/dev/icons/dist/react/default/restart.js.map +1 -1
  374. package/dist/dev/icons/dist/react/default/seek.js +1 -3
  375. package/dist/dev/icons/dist/react/default/seek.js.map +1 -1
  376. package/dist/dev/icons/dist/react/default/spinner.js +1 -3
  377. package/dist/dev/icons/dist/react/default/spinner.js.map +1 -1
  378. package/dist/dev/icons/dist/react/default/volume-high.js +1 -3
  379. package/dist/dev/icons/dist/react/default/volume-high.js.map +1 -1
  380. package/dist/dev/icons/dist/react/default/volume-low.js +1 -3
  381. package/dist/dev/icons/dist/react/default/volume-low.js.map +1 -1
  382. package/dist/dev/icons/dist/react/default/volume-off.js +1 -3
  383. package/dist/dev/icons/dist/react/default/volume-off.js.map +1 -1
  384. package/dist/dev/icons/dist/react/minimal/captions-off.js +1 -3
  385. package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -1
  386. package/dist/dev/icons/dist/react/minimal/captions-on.js +1 -3
  387. package/dist/dev/icons/dist/react/minimal/captions-on.js.map +1 -1
  388. package/dist/dev/icons/dist/react/minimal/cast-enter.js +28 -0
  389. package/dist/dev/icons/dist/react/minimal/cast-enter.js.map +1 -0
  390. package/dist/dev/icons/dist/react/minimal/cast-exit.js +32 -0
  391. package/dist/dev/icons/dist/react/minimal/cast-exit.js.map +1 -0
  392. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js +1 -3
  393. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  394. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js +1 -3
  395. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  396. package/dist/dev/icons/dist/react/minimal/pause.js +1 -3
  397. package/dist/dev/icons/dist/react/minimal/pause.js.map +1 -1
  398. package/dist/dev/icons/dist/react/minimal/pip-enter.js +36 -0
  399. package/dist/dev/icons/dist/react/minimal/pip-enter.js.map +1 -0
  400. package/dist/dev/icons/dist/react/minimal/pip-exit.js +36 -0
  401. package/dist/dev/icons/dist/react/minimal/pip-exit.js.map +1 -0
  402. package/dist/dev/icons/dist/react/minimal/play.js +1 -3
  403. package/dist/dev/icons/dist/react/minimal/play.js.map +1 -1
  404. package/dist/dev/icons/dist/react/minimal/restart.js +1 -3
  405. package/dist/dev/icons/dist/react/minimal/restart.js.map +1 -1
  406. package/dist/dev/icons/dist/react/minimal/seek.js +1 -3
  407. package/dist/dev/icons/dist/react/minimal/seek.js.map +1 -1
  408. package/dist/dev/icons/dist/react/minimal/spinner.js +1 -3
  409. package/dist/dev/icons/dist/react/minimal/spinner.js.map +1 -1
  410. package/dist/dev/icons/dist/react/minimal/volume-high.js +1 -3
  411. package/dist/dev/icons/dist/react/minimal/volume-high.js.map +1 -1
  412. package/dist/dev/icons/dist/react/minimal/volume-low.js +1 -3
  413. package/dist/dev/icons/dist/react/minimal/volume-low.js.map +1 -1
  414. package/dist/dev/icons/dist/react/minimal/volume-off.js +1 -3
  415. package/dist/dev/icons/dist/react/minimal/volume-off.js.map +1 -1
  416. package/dist/dev/index.d.ts +23 -8
  417. package/dist/dev/index.js +26 -14
  418. package/dist/dev/media/audio.d.ts.map +1 -1
  419. package/dist/dev/media/audio.js +5 -10
  420. package/dist/dev/media/audio.js.map +1 -1
  421. package/dist/dev/media/background-video/index.js +4 -6
  422. package/dist/dev/media/background-video/index.js.map +1 -1
  423. package/dist/dev/media/dash-video/index.d.ts +16 -0
  424. package/dist/dev/media/dash-video/index.d.ts.map +1 -0
  425. package/dist/dev/media/dash-video/index.js +21 -0
  426. package/dist/dev/media/dash-video/index.js.map +1 -0
  427. package/dist/dev/media/hls-video/index.d.ts +8 -3
  428. package/dist/dev/media/hls-video/index.d.ts.map +1 -1
  429. package/dist/dev/media/hls-video/index.js +8 -13
  430. package/dist/dev/media/hls-video/index.js.map +1 -1
  431. package/dist/dev/media/mux-audio/index.d.ts +13 -0
  432. package/dist/dev/media/mux-audio/index.d.ts.map +1 -0
  433. package/dist/dev/media/mux-audio/index.js +20 -0
  434. package/dist/dev/media/mux-audio/index.js.map +1 -0
  435. package/dist/dev/media/mux-video/index.d.ts +16 -0
  436. package/dist/dev/media/mux-video/index.d.ts.map +1 -0
  437. package/dist/dev/media/mux-video/index.js +21 -0
  438. package/dist/dev/media/mux-video/index.js.map +1 -0
  439. package/dist/dev/media/native-hls-video/index.d.ts +16 -0
  440. package/dist/dev/media/native-hls-video/index.d.ts.map +1 -0
  441. package/dist/dev/media/native-hls-video/index.js +21 -0
  442. package/dist/dev/media/native-hls-video/index.js.map +1 -0
  443. package/dist/dev/media/simple-hls-video/index.d.ts +4 -1
  444. package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -1
  445. package/dist/dev/media/simple-hls-video/index.js +8 -12
  446. package/dist/dev/media/simple-hls-video/index.js.map +1 -1
  447. package/dist/dev/media/video.d.ts.map +1 -1
  448. package/dist/dev/media/video.js +5 -10
  449. package/dist/dev/media/video.js.map +1 -1
  450. package/dist/dev/player/context.d.ts +24 -7
  451. package/dist/dev/player/context.d.ts.map +1 -1
  452. package/dist/dev/player/context.js +27 -15
  453. package/dist/dev/player/context.js.map +1 -1
  454. package/dist/dev/player/create-player.js +18 -6
  455. package/dist/dev/player/create-player.js.map +1 -1
  456. package/dist/dev/presets/audio/index.js +1 -2
  457. package/dist/dev/presets/audio/minimal-skin.css +293 -194
  458. package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
  459. package/dist/dev/presets/audio/minimal-skin.js +144 -123
  460. package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
  461. package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
  462. package/dist/dev/presets/audio/minimal-skin.tailwind.js +156 -137
  463. package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
  464. package/dist/dev/presets/audio/skin.css +276 -186
  465. package/dist/dev/presets/audio/skin.d.ts.map +1 -1
  466. package/dist/dev/presets/audio/skin.js +218 -126
  467. package/dist/dev/presets/audio/skin.js.map +1 -1
  468. package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
  469. package/dist/dev/presets/audio/skin.tailwind.js +166 -141
  470. package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
  471. package/dist/dev/presets/background/index.js +1 -2
  472. package/dist/dev/presets/background/skin.js +1 -2
  473. package/dist/dev/presets/background/skin.js.map +1 -1
  474. package/dist/dev/presets/types.d.ts +6 -1
  475. package/dist/dev/presets/types.d.ts.map +1 -1
  476. package/dist/dev/presets/video/index.js +1 -2
  477. package/dist/dev/presets/video/minimal-skin.css +593 -340
  478. package/dist/dev/presets/video/minimal-skin.d.ts +2 -2
  479. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  480. package/dist/dev/presets/video/minimal-skin.js +149 -122
  481. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  482. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  483. package/dist/dev/presets/video/minimal-skin.tailwind.js +160 -138
  484. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  485. package/dist/dev/presets/video/skin.css +561 -323
  486. package/dist/dev/presets/video/skin.d.ts +2 -2
  487. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  488. package/dist/dev/presets/video/skin.js +310 -171
  489. package/dist/dev/presets/video/skin.js.map +1 -1
  490. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  491. package/dist/dev/presets/video/skin.tailwind.js +215 -186
  492. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  493. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +17 -32
  494. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  495. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js +1 -1
  496. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  497. package/dist/dev/skins/dist/default/default/tailwind/components/button-group.js +7 -0
  498. package/dist/dev/skins/dist/default/default/tailwind/components/button-group.js.map +1 -0
  499. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +5 -5
  500. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  501. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +2 -3
  502. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  503. package/dist/dev/skins/dist/default/default/tailwind/components/error.js +4 -5
  504. package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  505. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js +1 -2
  506. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  507. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +2 -3
  508. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  509. package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js +1 -1
  510. package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -1
  511. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +5 -6
  512. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  513. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +15 -0
  514. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  515. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js +12 -0
  516. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  517. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +2 -3
  518. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  519. package/dist/dev/skins/dist/default/default/tailwind/components/seek.js +2 -3
  520. package/dist/dev/skins/dist/default/default/tailwind/components/seek.js.map +1 -1
  521. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +2 -3
  522. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  523. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js +2 -3
  524. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  525. package/dist/dev/skins/dist/default/default/tailwind/components/time.js +1 -1
  526. package/dist/dev/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  527. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +41 -25
  528. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  529. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +18 -27
  530. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  531. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  532. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  533. package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js +1 -2
  534. package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -1
  535. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +5 -5
  536. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  537. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +2 -3
  538. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  539. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +4 -5
  540. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  541. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js +1 -2
  542. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  543. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +2 -3
  544. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  545. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +5 -5
  546. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  547. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +15 -0
  548. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  549. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js +13 -0
  550. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  551. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +2 -3
  552. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  553. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js +2 -3
  554. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -1
  555. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +2 -3
  556. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  557. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +5 -6
  558. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  559. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +44 -23
  560. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  561. package/dist/{default/skins/dist/default/default/tailwind/components → dev/skins/dist/default/shared/tailwind}/icon-state.js +12 -2
  562. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
  563. package/dist/dev/ui/alert-dialog/alert-dialog-close.js +2 -4
  564. package/dist/dev/ui/alert-dialog/alert-dialog-close.js.map +1 -1
  565. package/dist/dev/ui/alert-dialog/alert-dialog-description.js +2 -4
  566. package/dist/dev/ui/alert-dialog/alert-dialog-description.js.map +1 -1
  567. package/dist/dev/ui/alert-dialog/alert-dialog-popup.js +2 -4
  568. package/dist/dev/ui/alert-dialog/alert-dialog-popup.js.map +1 -1
  569. package/dist/dev/ui/alert-dialog/alert-dialog-root.js +5 -7
  570. package/dist/dev/ui/alert-dialog/alert-dialog-root.js.map +1 -1
  571. package/dist/dev/ui/alert-dialog/alert-dialog-title.js +2 -4
  572. package/dist/dev/ui/alert-dialog/alert-dialog-title.js.map +1 -1
  573. package/dist/dev/ui/alert-dialog/context.js +2 -4
  574. package/dist/dev/ui/alert-dialog/context.js.map +1 -1
  575. package/dist/dev/ui/alert-dialog/index.js +1 -2
  576. package/dist/dev/ui/alert-dialog/index.parts.js +1 -2
  577. package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts.map +1 -1
  578. package/dist/dev/ui/buffering-indicator/buffering-indicator.js +4 -4
  579. package/dist/dev/ui/buffering-indicator/buffering-indicator.js.map +1 -1
  580. package/dist/dev/ui/buffering-indicator/index.js +1 -2
  581. package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -1
  582. package/dist/dev/ui/captions-button/captions-button.js +4 -5
  583. package/dist/dev/ui/captions-button/captions-button.js.map +1 -1
  584. package/dist/dev/ui/captions-button/index.js +1 -2
  585. package/dist/dev/ui/cast-button/cast-button.d.ts +15 -0
  586. package/dist/dev/ui/cast-button/cast-button.d.ts.map +1 -0
  587. package/dist/dev/ui/cast-button/cast-button.js +17 -0
  588. package/dist/dev/ui/cast-button/cast-button.js.map +1 -0
  589. package/dist/dev/ui/cast-button/index.d.ts +2 -0
  590. package/dist/dev/ui/cast-button/index.js +2 -0
  591. package/dist/dev/ui/controls/context.js +2 -4
  592. package/dist/dev/ui/controls/context.js.map +1 -1
  593. package/dist/dev/ui/controls/controls-group.js +2 -4
  594. package/dist/dev/ui/controls/controls-group.js.map +1 -1
  595. package/dist/dev/ui/controls/controls-root.js +2 -4
  596. package/dist/dev/ui/controls/controls-root.js.map +1 -1
  597. package/dist/dev/ui/controls/index.js +1 -2
  598. package/dist/dev/ui/controls/index.parts.js +1 -2
  599. package/dist/dev/ui/create-context-part.js +2 -4
  600. package/dist/dev/ui/create-context-part.js.map +1 -1
  601. package/dist/dev/ui/create-media-button.js +22 -10
  602. package/dist/dev/ui/create-media-button.js.map +1 -1
  603. package/dist/dev/ui/error-dialog/context.d.ts +10 -0
  604. package/dist/dev/ui/error-dialog/context.d.ts.map +1 -0
  605. package/dist/dev/ui/error-dialog/context.js +14 -0
  606. package/dist/dev/ui/error-dialog/context.js.map +1 -0
  607. package/dist/dev/ui/error-dialog/error-dialog-description.d.ts +14 -0
  608. package/dist/dev/ui/error-dialog/error-dialog-description.d.ts.map +1 -0
  609. package/dist/dev/ui/error-dialog/error-dialog-description.js +28 -0
  610. package/dist/dev/ui/error-dialog/error-dialog-description.js.map +1 -0
  611. package/dist/dev/ui/error-dialog/error-dialog-root.d.ts +15 -0
  612. package/dist/dev/ui/error-dialog/error-dialog-root.d.ts.map +1 -0
  613. package/dist/dev/ui/error-dialog/error-dialog-root.js +57 -0
  614. package/dist/dev/ui/error-dialog/error-dialog-root.js.map +1 -0
  615. package/dist/dev/ui/error-dialog/index.d.ts +3 -0
  616. package/dist/dev/ui/error-dialog/index.js +3 -0
  617. package/dist/dev/ui/error-dialog/index.parts.d.ts +13 -0
  618. package/dist/dev/ui/error-dialog/index.parts.d.ts.map +1 -0
  619. package/dist/dev/ui/error-dialog/index.parts.js +18 -0
  620. package/dist/dev/ui/error-dialog/index.parts.js.map +1 -0
  621. package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts.map +1 -1
  622. package/dist/dev/ui/fullscreen-button/fullscreen-button.js +4 -5
  623. package/dist/dev/ui/fullscreen-button/fullscreen-button.js.map +1 -1
  624. package/dist/dev/ui/fullscreen-button/index.js +1 -2
  625. package/dist/dev/ui/gesture/media-gesture.d.ts +23 -0
  626. package/dist/dev/ui/gesture/media-gesture.d.ts.map +1 -0
  627. package/dist/dev/ui/gesture/media-gesture.js +42 -0
  628. package/dist/dev/ui/gesture/media-gesture.js.map +1 -0
  629. package/dist/dev/ui/gesture/use-doubletap-gesture.d.ts +14 -0
  630. package/dist/dev/ui/gesture/use-doubletap-gesture.d.ts.map +1 -0
  631. package/dist/dev/ui/gesture/use-doubletap-gesture.js +29 -0
  632. package/dist/dev/ui/gesture/use-doubletap-gesture.js.map +1 -0
  633. package/dist/dev/ui/gesture/use-tap-gesture.d.ts +14 -0
  634. package/dist/dev/ui/gesture/use-tap-gesture.d.ts.map +1 -0
  635. package/dist/dev/ui/gesture/use-tap-gesture.js +29 -0
  636. package/dist/dev/ui/gesture/use-tap-gesture.js.map +1 -0
  637. package/dist/dev/ui/hooks/use-button.js +2 -4
  638. package/dist/dev/ui/hooks/use-button.js.map +1 -1
  639. package/dist/dev/ui/hooks/use-slider.d.ts +1 -1
  640. package/dist/dev/ui/hooks/use-slider.js +4 -6
  641. package/dist/dev/ui/hooks/use-slider.js.map +1 -1
  642. package/dist/dev/ui/hotkey/media-hotkey.d.ts +21 -0
  643. package/dist/dev/ui/hotkey/media-hotkey.d.ts.map +1 -0
  644. package/dist/dev/ui/hotkey/media-hotkey.js +41 -0
  645. package/dist/dev/ui/hotkey/media-hotkey.js.map +1 -0
  646. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.d.ts +5 -0
  647. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.d.ts.map +1 -0
  648. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.js +16 -0
  649. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.js.map +1 -0
  650. package/dist/dev/ui/hotkey/use-hotkey.d.ts +12 -0
  651. package/dist/dev/ui/hotkey/use-hotkey.d.ts.map +1 -0
  652. package/dist/dev/ui/hotkey/use-hotkey.js +32 -0
  653. package/dist/dev/ui/hotkey/use-hotkey.js.map +1 -0
  654. package/dist/dev/ui/mute-button/index.js +1 -2
  655. package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -1
  656. package/dist/dev/ui/mute-button/mute-button.js +4 -5
  657. package/dist/dev/ui/mute-button/mute-button.js.map +1 -1
  658. package/dist/dev/ui/pip-button/index.js +1 -2
  659. package/dist/dev/ui/pip-button/pip-button.d.ts.map +1 -1
  660. package/dist/dev/ui/pip-button/pip-button.js +4 -5
  661. package/dist/dev/ui/pip-button/pip-button.js.map +1 -1
  662. package/dist/dev/ui/play-button/index.js +1 -2
  663. package/dist/dev/ui/play-button/play-button.d.ts.map +1 -1
  664. package/dist/dev/ui/play-button/play-button.js +4 -5
  665. package/dist/dev/ui/play-button/play-button.js.map +1 -1
  666. package/dist/dev/ui/playback-rate-button/index.js +1 -2
  667. package/dist/dev/ui/playback-rate-button/playback-rate-button.js +2 -4
  668. package/dist/dev/ui/playback-rate-button/playback-rate-button.js.map +1 -1
  669. package/dist/dev/ui/popover/context.js +2 -4
  670. package/dist/dev/ui/popover/context.js.map +1 -1
  671. package/dist/dev/ui/popover/index.js +1 -2
  672. package/dist/dev/ui/popover/index.parts.js +1 -2
  673. package/dist/dev/ui/popover/popover-arrow.js +2 -4
  674. package/dist/dev/ui/popover/popover-arrow.js.map +1 -1
  675. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
  676. package/dist/dev/ui/popover/popover-popup.js +13 -6
  677. package/dist/dev/ui/popover/popover-popup.js.map +1 -1
  678. package/dist/dev/ui/popover/popover-root.js +4 -6
  679. package/dist/dev/ui/popover/popover-root.js.map +1 -1
  680. package/dist/dev/ui/popover/popover-trigger.js +2 -4
  681. package/dist/dev/ui/popover/popover-trigger.js.map +1 -1
  682. package/dist/dev/ui/poster/index.js +1 -2
  683. package/dist/dev/ui/poster/poster.js +2 -4
  684. package/dist/dev/ui/poster/poster.js.map +1 -1
  685. package/dist/dev/ui/seek-button/index.js +1 -2
  686. package/dist/dev/ui/seek-button/seek-button.js +2 -4
  687. package/dist/dev/ui/seek-button/seek-button.js.map +1 -1
  688. package/dist/dev/ui/slider/context.js +2 -4
  689. package/dist/dev/ui/slider/context.js.map +1 -1
  690. package/dist/dev/ui/slider/index.js +1 -2
  691. package/dist/dev/ui/slider/index.parts.js +1 -2
  692. package/dist/dev/ui/slider/slider-buffer.js +2 -4
  693. package/dist/dev/ui/slider/slider-buffer.js.map +1 -1
  694. package/dist/dev/ui/slider/slider-fill.js +2 -4
  695. package/dist/dev/ui/slider/slider-fill.js.map +1 -1
  696. package/dist/dev/ui/slider/slider-preview.js +2 -4
  697. package/dist/dev/ui/slider/slider-preview.js.map +1 -1
  698. package/dist/dev/ui/slider/slider-root.js +2 -4
  699. package/dist/dev/ui/slider/slider-root.js.map +1 -1
  700. package/dist/dev/ui/slider/slider-thumb.js +2 -4
  701. package/dist/dev/ui/slider/slider-thumb.js.map +1 -1
  702. package/dist/dev/ui/slider/slider-thumbnail.js +2 -4
  703. package/dist/dev/ui/slider/slider-thumbnail.js.map +1 -1
  704. package/dist/dev/ui/slider/slider-track.js +2 -4
  705. package/dist/dev/ui/slider/slider-track.js.map +1 -1
  706. package/dist/dev/ui/slider/slider-value.js +2 -4
  707. package/dist/dev/ui/slider/slider-value.js.map +1 -1
  708. package/dist/dev/ui/thumbnail/index.d.ts +2 -0
  709. package/dist/dev/ui/thumbnail/index.js +2 -0
  710. package/dist/dev/ui/thumbnail/thumbnail.d.ts.map +1 -1
  711. package/dist/dev/ui/thumbnail/thumbnail.js +3 -6
  712. package/dist/dev/ui/thumbnail/thumbnail.js.map +1 -1
  713. package/dist/dev/ui/time/index.js +1 -2
  714. package/dist/dev/ui/time/index.parts.js +1 -2
  715. package/dist/dev/ui/time/time-group.js +2 -4
  716. package/dist/dev/ui/time/time-group.js.map +1 -1
  717. package/dist/dev/ui/time/time-separator.js +2 -4
  718. package/dist/dev/ui/time/time-separator.js.map +1 -1
  719. package/dist/dev/ui/time/time-value.js +2 -4
  720. package/dist/dev/ui/time/time-value.js.map +1 -1
  721. package/dist/dev/ui/time-slider/index.js +1 -2
  722. package/dist/dev/ui/time-slider/index.parts.js +1 -2
  723. package/dist/dev/ui/time-slider/time-slider-root.js +6 -8
  724. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
  725. package/dist/dev/ui/tooltip/context.d.ts +4 -1
  726. package/dist/dev/ui/tooltip/context.d.ts.map +1 -1
  727. package/dist/dev/ui/tooltip/context.js +6 -5
  728. package/dist/dev/ui/tooltip/context.js.map +1 -1
  729. package/dist/dev/ui/tooltip/group-context.js +2 -4
  730. package/dist/dev/ui/tooltip/group-context.js.map +1 -1
  731. package/dist/dev/ui/tooltip/index.d.ts +2 -2
  732. package/dist/dev/ui/tooltip/index.js +2 -3
  733. package/dist/dev/ui/tooltip/index.parts.js +1 -2
  734. package/dist/dev/ui/tooltip/tooltip-arrow.js +2 -4
  735. package/dist/dev/ui/tooltip/tooltip-arrow.js.map +1 -1
  736. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  737. package/dist/dev/ui/tooltip/tooltip-popup.js +15 -7
  738. package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
  739. package/dist/dev/ui/tooltip/tooltip-provider.js +2 -4
  740. package/dist/dev/ui/tooltip/tooltip-provider.js.map +1 -1
  741. package/dist/dev/ui/tooltip/tooltip-root.d.ts.map +1 -1
  742. package/dist/dev/ui/tooltip/tooltip-root.js +9 -7
  743. package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -1
  744. package/dist/dev/ui/tooltip/tooltip-trigger.d.ts.map +1 -1
  745. package/dist/dev/ui/tooltip/tooltip-trigger.js +4 -9
  746. package/dist/dev/ui/tooltip/tooltip-trigger.js.map +1 -1
  747. package/dist/dev/ui/volume-slider/index.js +1 -2
  748. package/dist/dev/ui/volume-slider/index.parts.js +1 -2
  749. package/dist/dev/ui/volume-slider/volume-slider-root.d.ts.map +1 -1
  750. package/dist/dev/ui/volume-slider/volume-slider-root.js +36 -20
  751. package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -1
  752. package/dist/dev/utils/attach-media-element.d.ts +9 -0
  753. package/dist/dev/utils/attach-media-element.d.ts.map +1 -0
  754. package/dist/dev/utils/attach-media-element.js +1 -1
  755. package/dist/dev/utils/media-props.d.ts +8 -0
  756. package/dist/dev/utils/media-props.d.ts.map +1 -0
  757. package/dist/dev/utils/media-props.js +14 -6
  758. package/dist/dev/utils/media-props.js.map +1 -1
  759. package/dist/dev/utils/merge-props.js +2 -3
  760. package/dist/dev/utils/merge-props.js.map +1 -1
  761. package/dist/dev/utils/use-composed-refs.d.ts +29 -0
  762. package/dist/dev/utils/use-composed-refs.d.ts.map +1 -0
  763. package/dist/dev/utils/use-composed-refs.js +2 -4
  764. package/dist/dev/utils/use-composed-refs.js.map +1 -1
  765. package/dist/dev/utils/use-destroy.d.ts +22 -0
  766. package/dist/dev/utils/use-destroy.d.ts.map +1 -0
  767. package/dist/dev/utils/use-destroy.js +14 -8
  768. package/dist/dev/utils/use-destroy.js.map +1 -1
  769. package/dist/dev/utils/use-force-render.js +2 -4
  770. package/dist/dev/utils/use-force-render.js.map +1 -1
  771. package/dist/dev/utils/use-latest-ref.d.ts +18 -0
  772. package/dist/dev/utils/use-latest-ref.d.ts.map +1 -0
  773. package/dist/dev/utils/use-latest-ref.js +2 -4
  774. package/dist/dev/utils/use-latest-ref.js.map +1 -1
  775. package/dist/dev/utils/use-media-instance.d.ts +16 -0
  776. package/dist/dev/utils/use-media-instance.d.ts.map +1 -0
  777. package/dist/dev/utils/use-media-instance.js +22 -0
  778. package/dist/dev/utils/use-media-instance.js.map +1 -0
  779. package/dist/dev/utils/use-render.d.ts.map +1 -1
  780. package/dist/dev/utils/use-render.js +7 -5
  781. package/dist/dev/utils/use-render.js.map +1 -1
  782. package/dist/dev/utils/use-safe-id.js +3 -5
  783. package/dist/dev/utils/use-safe-id.js.map +1 -1
  784. package/package.json +15 -15
  785. package/dist/default/icons/dist/react/default/pip.js +0 -27
  786. package/dist/default/icons/dist/react/default/pip.js.map +0 -1
  787. package/dist/default/icons/dist/react/minimal/pip.js +0 -27
  788. package/dist/default/icons/dist/react/minimal/pip.js.map +0 -1
  789. package/dist/default/presets/video/error-dialog.js +0 -51
  790. package/dist/default/presets/video/error-dialog.js.map +0 -1
  791. package/dist/default/skins/dist/default/default/tailwind/components/icon-state.js.map +0 -1
  792. package/dist/default/skins/dist/default/minimal/tailwind/components/icon-state.js +0 -29
  793. package/dist/default/skins/dist/default/minimal/tailwind/components/icon-state.js.map +0 -1
  794. package/dist/dev/icons/dist/react/default/pip.js +0 -27
  795. package/dist/dev/icons/dist/react/default/pip.js.map +0 -1
  796. package/dist/dev/icons/dist/react/minimal/pip.js +0 -27
  797. package/dist/dev/icons/dist/react/minimal/pip.js.map +0 -1
  798. package/dist/dev/presets/video/error-dialog.js +0 -51
  799. package/dist/dev/presets/video/error-dialog.js.map +0 -1
  800. package/dist/dev/skins/dist/default/default/tailwind/components/icon-state.js.map +0 -1
  801. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js +0 -29
  802. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js.map +0 -1
@@ -1,15 +1,14 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { usePlayer } from "../../player/context.js";
4
- import { renderElement } from "../../utils/use-render.js";
5
3
  import { useLatestRef } from "../../utils/use-latest-ref.js";
4
+ import { renderElement } from "../../utils/use-render.js";
6
5
  import { useSlider } from "../hooks/use-slider.js";
7
6
  import { SliderProvider } from "../slider/context.js";
8
- import { getSliderCSSVars, selectVolume } from "@videojs/core/dom";
9
- import { forwardRef, useState } from "react";
7
+ import { createWheelStep, getSliderCSSVars, selectVolume } from "@videojs/core/dom";
8
+ import { forwardRef, useCallback, useRef, useState } from "react";
10
9
  import { jsx } from "react/jsx-runtime";
11
- import { SliderDataAttrs, VolumeSliderCore } from "@videojs/core";
12
-
10
+ import { VolumeSliderCore, VolumeSliderDataAttrs } from "@videojs/core";
11
+ import { listen } from "@videojs/utils/dom";
13
12
  //#region src/ui/volume-slider/volume-slider-root.tsx
14
13
  const noopVolume = {
15
14
  volume: 0,
@@ -19,7 +18,7 @@ const noopVolume = {
19
18
  toggleMuted: () => false
20
19
  };
21
20
  const VolumeSliderRoot = forwardRef(function VolumeSliderRoot(componentProps, forwardedRef) {
22
- const { render, className, style, label, orientation, step = VolumeSliderCore.defaultProps.step, largeStep = VolumeSliderCore.defaultProps.largeStep, disabled, thumbAlignment, onDragStart, onDragEnd, ...elementProps } = componentProps;
21
+ const { render, className, style, label, orientation, step = VolumeSliderCore.defaultProps.step, largeStep = VolumeSliderCore.defaultProps.largeStep, wheelStep = VolumeSliderCore.defaultProps.wheelStep, disabled, thumbAlignment, onDragStart, onDragEnd, ...elementProps } = componentProps;
23
22
  const volume = usePlayer(selectVolume);
24
23
  const [core] = useState(() => new VolumeSliderCore());
25
24
  core.setProps({
@@ -27,32 +26,45 @@ const VolumeSliderRoot = forwardRef(function VolumeSliderRoot(componentProps, fo
27
26
  orientation,
28
27
  step,
29
28
  largeStep,
29
+ wheelStep,
30
30
  disabled,
31
31
  thumbAlignment
32
32
  });
33
33
  const volumeRef = useLatestRef(volume);
34
+ const disabledRef = useLatestRef(disabled);
35
+ const getPercent = () => (volumeRef.current?.volume ?? 0) * 100;
36
+ const getStepPercent = () => core.getStepPercent();
37
+ const setVolume = (percent) => volumeRef.current?.setVolume(percent / 100);
34
38
  const { state, cssVars, rootRef, thumbRef, rootProps, rootStyle, thumbProps } = useSlider({
35
39
  computeState: (input) => {
36
40
  core.setInput(input);
37
41
  core.setMedia(volume ?? noopVolume);
38
42
  return core.getState();
39
43
  },
40
- getPercent: () => volume ? volume.volume * 100 : 0,
41
- getStepPercent: () => core.getStepPercent(),
44
+ getPercent,
45
+ getStepPercent,
42
46
  getLargeStepPercent: () => core.getLargeStepPercent(),
43
47
  orientation,
44
48
  disabled,
45
49
  adjustPercent: (rawPercent, thumbSize, trackSize) => core.adjustPercentForAlignment(rawPercent, thumbSize, trackSize),
46
50
  getCSSVars: getSliderCSSVars,
47
- onValueChange: (percent) => {
48
- volumeRef.current?.setVolume(percent / 100);
49
- },
50
- onValueCommit: (percent) => {
51
- volumeRef.current?.setVolume(percent / 100);
52
- },
51
+ onValueChange: setVolume,
52
+ onValueCommit: setVolume,
53
53
  onDragStart,
54
54
  onDragEnd
55
55
  });
56
+ const [wheelHandler] = useState(() => createWheelStep({
57
+ isDisabled: () => !!disabledRef.current || !volumeRef.current,
58
+ getPercent: () => (volumeRef.current?.volume ?? 0) * 100,
59
+ getStepPercent: () => core.getWheelStepPercent(),
60
+ onValueChange: (percent) => volumeRef.current?.setVolume(percent / 100)
61
+ }));
62
+ const wheelCleanupRef = useRef(null);
63
+ const wheelRef = useCallback((element) => {
64
+ wheelCleanupRef.current?.();
65
+ wheelCleanupRef.current = null;
66
+ if (element) wheelCleanupRef.current = listen(element, "wheel", wheelHandler.onWheel, { passive: false });
67
+ }, [wheelHandler]);
56
68
  if (!volume) return null;
57
69
  return /* @__PURE__ */ jsx(SliderProvider, {
58
70
  value: {
@@ -60,7 +72,7 @@ const VolumeSliderRoot = forwardRef(function VolumeSliderRoot(componentProps, fo
60
72
  pointerValue: core.valueFromPercent(state.pointerPercent),
61
73
  thumbRef,
62
74
  thumbProps,
63
- stateAttrMap: SliderDataAttrs,
75
+ stateAttrMap: VolumeSliderDataAttrs,
64
76
  getAttrs: (sliderState) => core.getAttrs(sliderState),
65
77
  formatValue: (value) => `${Math.round(value)}%`
66
78
  },
@@ -70,8 +82,12 @@ const VolumeSliderRoot = forwardRef(function VolumeSliderRoot(componentProps, fo
70
82
  style
71
83
  }, {
72
84
  state,
73
- stateAttrMap: SliderDataAttrs,
74
- ref: [forwardedRef, rootRef],
85
+ stateAttrMap: VolumeSliderDataAttrs,
86
+ ref: [
87
+ forwardedRef,
88
+ rootRef,
89
+ wheelRef
90
+ ],
75
91
  props: [
76
92
  { style: {
77
93
  ...cssVars,
@@ -83,7 +99,7 @@ const VolumeSliderRoot = forwardRef(function VolumeSliderRoot(componentProps, fo
83
99
  })
84
100
  });
85
101
  });
86
-
87
102
  //#endregion
88
103
  export { VolumeSliderRoot };
104
+
89
105
  //# sourceMappingURL=volume-slider-root.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"volume-slider-root.js","names":[],"sources":["../../../../src/ui/volume-slider/volume-slider-root.tsx"],"sourcesContent":["'use client';\n\nimport { SliderDataAttrs, VolumeSliderCore } from '@videojs/core';\nimport { getSliderCSSVars, logMissingFeature, selectVolume } from '@videojs/core/dom';\nimport { forwardRef, useState } from 'react';\n\nimport { usePlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { useLatestRef } from '../../utils/use-latest-ref';\nimport { renderElement } from '../../utils/use-render';\nimport { useSlider } from '../hooks/use-slider';\nimport { SliderProvider } from '../slider/context';\n\nconst noopVolume = {\n volume: 0,\n muted: false,\n volumeAvailability: 'unsupported' as const,\n setVolume: () => 0,\n toggleMuted: () => false,\n};\n\nexport interface VolumeSliderRootProps extends UIComponentProps<'div', VolumeSliderCore.State>, VolumeSliderCore.Props {\n onDragStart?: (() => void) | undefined;\n onDragEnd?: (() => void) | undefined;\n}\n\nexport const VolumeSliderRoot = forwardRef<HTMLDivElement, VolumeSliderRootProps>(\n function VolumeSliderRoot(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n label,\n orientation,\n step = VolumeSliderCore.defaultProps.step,\n largeStep = VolumeSliderCore.defaultProps.largeStep,\n disabled,\n thumbAlignment,\n onDragStart,\n onDragEnd,\n ...elementProps\n } = componentProps;\n\n const volume = usePlayer(selectVolume);\n\n const [core] = useState(() => new VolumeSliderCore());\n core.setProps({ label, orientation, step, largeStep, disabled, thumbAlignment });\n\n // Keep a ref to the latest volume state for callbacks.\n const volumeRef = useLatestRef(volume);\n\n const { state, cssVars, rootRef, thumbRef, rootProps, rootStyle, thumbProps } = useSlider<VolumeSliderCore.State>({\n computeState: (input) => {\n core.setInput(input);\n core.setMedia(volume ?? noopVolume);\n return core.getState();\n },\n getPercent: () => (volume ? volume.volume * 100 : 0),\n getStepPercent: () => core.getStepPercent(),\n getLargeStepPercent: () => core.getLargeStepPercent(),\n orientation,\n disabled,\n adjustPercent: (rawPercent, thumbSize, trackSize) =>\n core.adjustPercentForAlignment(rawPercent, thumbSize, trackSize),\n getCSSVars: getSliderCSSVars,\n onValueChange: (percent) => {\n volumeRef.current?.setVolume(percent / 100);\n },\n onValueCommit: (percent) => {\n volumeRef.current?.setVolume(percent / 100);\n },\n onDragStart,\n onDragEnd,\n });\n\n if (!volume) {\n if (__DEV__) logMissingFeature('VolumeSlider', 'volume');\n return null;\n }\n\n return (\n <SliderProvider\n value={{\n state,\n pointerValue: core.valueFromPercent(state.pointerPercent),\n thumbRef,\n thumbProps,\n stateAttrMap: SliderDataAttrs,\n getAttrs: (sliderState) => core.getAttrs(sliderState as VolumeSliderCore.State),\n formatValue: (value) => `${Math.round(value)}%`,\n }}\n >\n {renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: SliderDataAttrs,\n ref: [forwardedRef, rootRef],\n props: [{ style: { ...cssVars, ...rootStyle } }, rootProps, elementProps],\n }\n )}\n </SliderProvider>\n );\n }\n);\n\nexport namespace VolumeSliderRoot {\n export type Props = VolumeSliderRootProps;\n export type State = VolumeSliderCore.State;\n}\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAM,aAAa;CACjB,QAAQ;CACR,OAAO;CACP,oBAAoB;CACpB,iBAAiB;CACjB,mBAAmB;CACpB;AAOD,MAAa,mBAAmB,WAC9B,SAAS,iBAAiB,gBAAgB,cAAc;CACtD,MAAM,EACJ,QACA,WACA,OACA,OACA,aACA,OAAO,iBAAiB,aAAa,MACrC,YAAY,iBAAiB,aAAa,WAC1C,UACA,gBACA,aACA,WACA,GAAG,iBACD;CAEJ,MAAM,SAAS,UAAU,aAAa;CAEtC,MAAM,CAAC,QAAQ,eAAe,IAAI,kBAAkB,CAAC;AACrD,MAAK,SAAS;EAAE;EAAO;EAAa;EAAM;EAAW;EAAU;EAAgB,CAAC;CAGhF,MAAM,YAAY,aAAa,OAAO;CAEtC,MAAM,EAAE,OAAO,SAAS,SAAS,UAAU,WAAW,WAAW,eAAe,UAAkC;EAChH,eAAe,UAAU;AACvB,QAAK,SAAS,MAAM;AACpB,QAAK,SAAS,UAAU,WAAW;AACnC,UAAO,KAAK,UAAU;;EAExB,kBAAmB,SAAS,OAAO,SAAS,MAAM;EAClD,sBAAsB,KAAK,gBAAgB;EAC3C,2BAA2B,KAAK,qBAAqB;EACrD;EACA;EACA,gBAAgB,YAAY,WAAW,cACrC,KAAK,0BAA0B,YAAY,WAAW,UAAU;EAClE,YAAY;EACZ,gBAAgB,YAAY;AAC1B,aAAU,SAAS,UAAU,UAAU,IAAI;;EAE7C,gBAAgB,YAAY;AAC1B,aAAU,SAAS,UAAU,UAAU,IAAI;;EAE7C;EACA;EACD,CAAC;AAEF,KAAI,CAAC,OAEH,QAAO;AAGT,QACE,oBAAC;EACC,OAAO;GACL;GACA,cAAc,KAAK,iBAAiB,MAAM,eAAe;GACzD;GACA;GACA,cAAc;GACd,WAAW,gBAAgB,KAAK,SAAS,YAAsC;GAC/E,cAAc,UAAU,GAAG,KAAK,MAAM,MAAM,CAAC;GAC9C;YAEA,cACC,OACA;GAAE;GAAQ;GAAW;GAAO,EAC5B;GACE;GACA,cAAc;GACd,KAAK,CAAC,cAAc,QAAQ;GAC5B,OAAO;IAAC,EAAE,OAAO;KAAE,GAAG;KAAS,GAAG;KAAW,EAAE;IAAE;IAAW;IAAa;GAC1E,CACF;GACc;EAGtB"}
1
+ {"version":3,"file":"volume-slider-root.js","names":[],"sources":["../../../../src/ui/volume-slider/volume-slider-root.tsx"],"sourcesContent":["'use client';\n\nimport { VolumeSliderCore, VolumeSliderDataAttrs } from '@videojs/core';\nimport { createWheelStep, getSliderCSSVars, logMissingFeature, selectVolume } from '@videojs/core/dom';\nimport { listen } from '@videojs/utils/dom';\nimport { forwardRef, useCallback, useRef, useState } from 'react';\n\nimport { usePlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { useLatestRef } from '../../utils/use-latest-ref';\nimport { renderElement } from '../../utils/use-render';\nimport { useSlider } from '../hooks/use-slider';\nimport { SliderProvider } from '../slider/context';\n\nconst noopVolume = {\n volume: 0,\n muted: false,\n volumeAvailability: 'unsupported' as const,\n setVolume: () => 0,\n toggleMuted: () => false,\n};\n\nexport interface VolumeSliderRootProps extends UIComponentProps<'div', VolumeSliderCore.State>, VolumeSliderCore.Props {\n onDragStart?: (() => void) | undefined;\n onDragEnd?: (() => void) | undefined;\n}\n\nexport const VolumeSliderRoot = forwardRef<HTMLDivElement, VolumeSliderRootProps>(\n function VolumeSliderRoot(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n label,\n orientation,\n step = VolumeSliderCore.defaultProps.step,\n largeStep = VolumeSliderCore.defaultProps.largeStep,\n wheelStep = VolumeSliderCore.defaultProps.wheelStep,\n disabled,\n thumbAlignment,\n onDragStart,\n onDragEnd,\n ...elementProps\n } = componentProps;\n\n const volume = usePlayer(selectVolume);\n\n const [core] = useState(() => new VolumeSliderCore());\n core.setProps({ label, orientation, step, largeStep, wheelStep, disabled, thumbAlignment });\n\n // Keep refs to the latest dynamic values for stable closures.\n const volumeRef = useLatestRef(volume);\n const disabledRef = useLatestRef(disabled);\n\n const getPercent = () => (volumeRef.current?.volume ?? 0) * 100;\n const getStepPercent = () => core.getStepPercent();\n const setVolume = (percent: number) => volumeRef.current?.setVolume(percent / 100);\n\n const { state, cssVars, rootRef, thumbRef, rootProps, rootStyle, thumbProps } = useSlider<VolumeSliderCore.State>({\n computeState: (input) => {\n core.setInput(input);\n core.setMedia(volume ?? noopVolume);\n return core.getState();\n },\n getPercent,\n getStepPercent,\n getLargeStepPercent: () => core.getLargeStepPercent(),\n orientation,\n disabled,\n adjustPercent: (rawPercent, thumbSize, trackSize) =>\n core.adjustPercentForAlignment(rawPercent, thumbSize, trackSize),\n getCSSVars: getSliderCSSVars,\n onValueChange: setVolume,\n onValueCommit: setVolume,\n onDragStart,\n onDragEnd,\n });\n\n const [wheelHandler] = useState(() =>\n createWheelStep({\n isDisabled: () => !!disabledRef.current || !volumeRef.current,\n getPercent: () => (volumeRef.current?.volume ?? 0) * 100,\n getStepPercent: () => core.getWheelStepPercent(),\n onValueChange: (percent) => volumeRef.current?.setVolume(percent / 100),\n })\n );\n\n // Attach non-passive wheel listener via callback ref so it covers\n // late-mounted elements (null → mounted after volume appears).\n const wheelCleanupRef = useRef<(() => void) | null>(null);\n const wheelRef = useCallback(\n (element: HTMLDivElement | null) => {\n wheelCleanupRef.current?.();\n wheelCleanupRef.current = null;\n if (element) {\n wheelCleanupRef.current = listen(element, 'wheel', wheelHandler.onWheel, { passive: false });\n }\n },\n [wheelHandler]\n );\n\n if (!volume) {\n if (__DEV__) logMissingFeature('VolumeSlider', 'volume');\n return null;\n }\n\n return (\n <SliderProvider\n value={{\n state,\n pointerValue: core.valueFromPercent(state.pointerPercent),\n thumbRef,\n thumbProps,\n stateAttrMap: VolumeSliderDataAttrs,\n getAttrs: (sliderState) => core.getAttrs(sliderState as VolumeSliderCore.State),\n formatValue: (value) => `${Math.round(value)}%`,\n }}\n >\n {renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: VolumeSliderDataAttrs,\n ref: [forwardedRef, rootRef, wheelRef],\n props: [{ style: { ...cssVars, ...rootStyle } }, rootProps, elementProps],\n }\n )}\n </SliderProvider>\n );\n }\n);\n\nexport namespace VolumeSliderRoot {\n export type Props = VolumeSliderRootProps;\n export type State = VolumeSliderCore.State;\n}\n"],"mappings":";;;;;;;;;;;;AAcA,MAAM,aAAa;CACjB,QAAQ;CACR,OAAO;CACP,oBAAoB;CACpB,iBAAiB;CACjB,mBAAmB;CACpB;AAOD,MAAa,mBAAmB,WAC9B,SAAS,iBAAiB,gBAAgB,cAAc;CACtD,MAAM,EACJ,QACA,WACA,OACA,OACA,aACA,OAAO,iBAAiB,aAAa,MACrC,YAAY,iBAAiB,aAAa,WAC1C,YAAY,iBAAiB,aAAa,WAC1C,UACA,gBACA,aACA,WACA,GAAG,iBACD;CAEJ,MAAM,SAAS,UAAU,aAAa;CAEtC,MAAM,CAAC,QAAQ,eAAe,IAAI,kBAAkB,CAAC;AACrD,MAAK,SAAS;EAAE;EAAO;EAAa;EAAM;EAAW;EAAW;EAAU;EAAgB,CAAC;CAG3F,MAAM,YAAY,aAAa,OAAO;CACtC,MAAM,cAAc,aAAa,SAAS;CAE1C,MAAM,oBAAoB,UAAU,SAAS,UAAU,KAAK;CAC5D,MAAM,uBAAuB,KAAK,gBAAgB;CAClD,MAAM,aAAa,YAAoB,UAAU,SAAS,UAAU,UAAU,IAAI;CAElF,MAAM,EAAE,OAAO,SAAS,SAAS,UAAU,WAAW,WAAW,eAAe,UAAkC;EAChH,eAAe,UAAU;AACvB,QAAK,SAAS,MAAM;AACpB,QAAK,SAAS,UAAU,WAAW;AACnC,UAAO,KAAK,UAAU;;EAExB;EACA;EACA,2BAA2B,KAAK,qBAAqB;EACrD;EACA;EACA,gBAAgB,YAAY,WAAW,cACrC,KAAK,0BAA0B,YAAY,WAAW,UAAU;EAClE,YAAY;EACZ,eAAe;EACf,eAAe;EACf;EACA;EACD,CAAC;CAEF,MAAM,CAAC,gBAAgB,eACrB,gBAAgB;EACd,kBAAkB,CAAC,CAAC,YAAY,WAAW,CAAC,UAAU;EACtD,mBAAmB,UAAU,SAAS,UAAU,KAAK;EACrD,sBAAsB,KAAK,qBAAqB;EAChD,gBAAgB,YAAY,UAAU,SAAS,UAAU,UAAU,IAAI;EACxE,CAAC,CACH;CAID,MAAM,kBAAkB,OAA4B,KAAK;CACzD,MAAM,WAAW,aACd,YAAmC;AAClC,kBAAgB,WAAW;AAC3B,kBAAgB,UAAU;AAC1B,MAAI,QACF,iBAAgB,UAAU,OAAO,SAAS,SAAS,aAAa,SAAS,EAAE,SAAS,OAAO,CAAC;IAGhG,CAAC,aAAa,CACf;AAED,KAAI,CAAC,OAEH,QAAO;AAGT,QACE,oBAAC,gBAAD;EACE,OAAO;GACL;GACA,cAAc,KAAK,iBAAiB,MAAM,eAAe;GACzD;GACA;GACA,cAAc;GACd,WAAW,gBAAgB,KAAK,SAAS,YAAsC;GAC/E,cAAc,UAAU,GAAG,KAAK,MAAM,MAAM,CAAC;GAC9C;YAEA,cACC,OACA;GAAE;GAAQ;GAAW;GAAO,EAC5B;GACE;GACA,cAAc;GACd,KAAK;IAAC;IAAc;IAAS;IAAS;GACtC,OAAO;IAAC,EAAE,OAAO;KAAE,GAAG;KAAS,GAAG;KAAW,EAAE;IAAE;IAAW;IAAa;GAC1E,CACF;EACc,CAAA;EAGtB"}
@@ -6,7 +6,7 @@ function attachMediaElement(media) {
6
6
  return () => media.detach();
7
7
  };
8
8
  }
9
-
10
9
  //#endregion
11
10
  export { attachMediaElement };
11
+
12
12
  //# sourceMappingURL=attach-media-element.js.map
@@ -1,11 +1,19 @@
1
1
  //#region src/utils/media-props.ts
2
- function mediaProps(media, props) {
3
- const { src, ...remainingProps } = props;
4
- if (props.preload && media.preload !== props.preload) media.preload = props.preload;
5
- if (media.src !== src) media.src = src ?? "";
6
- return remainingProps;
2
+ function getSettableProps(DelegateClass) {
3
+ const props = /* @__PURE__ */ new Set();
4
+ for (let proto = DelegateClass.prototype; proto && proto !== Object.prototype; proto = Object.getPrototypeOf(proto)) for (const key of Object.getOwnPropertyNames(proto)) if (Object.getOwnPropertyDescriptor(proto, key)?.set) props.add(key);
5
+ return props;
6
+ }
7
+ function mediaProps(media, DelegateClass, props) {
8
+ const delegateKeys = getSettableProps(DelegateClass);
9
+ const rest = {};
10
+ for (const key of Object.keys(props)) if (delegateKeys.has(key)) {
11
+ const value = props[key];
12
+ if (media[key] !== value) media[key] = value;
13
+ } else rest[key] = props[key];
14
+ return rest;
7
15
  }
8
-
9
16
  //#endregion
10
17
  export { mediaProps };
18
+
11
19
  //# sourceMappingURL=media-props.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-props.js","names":[],"sources":["../../../src/utils/media-props.ts"],"sourcesContent":["import type { MediaApi } from '@videojs/core/dom';\nimport type { VideoHTMLAttributes } from 'react';\n\ninterface VideoProps extends VideoHTMLAttributes<HTMLVideoElement> {}\n\nexport function mediaProps(media: MediaApi, props: VideoProps) {\n const { src, ...remainingProps } = props;\n\n // Preload can still be passed as a prop to the native media element\n if (props.preload && media.preload !== props.preload) {\n media.preload = props.preload as '' | 'none' | 'metadata' | 'auto';\n }\n\n if (media.src !== src) {\n media.src = src ?? '';\n }\n\n // The remaining props are passed to the native media element\n return remainingProps;\n}\n"],"mappings":";AAKA,SAAgB,WAAW,OAAiB,OAAmB;CAC7D,MAAM,EAAE,KAAK,GAAG,mBAAmB;AAGnC,KAAI,MAAM,WAAW,MAAM,YAAY,MAAM,QAC3C,OAAM,UAAU,MAAM;AAGxB,KAAI,MAAM,QAAQ,IAChB,OAAM,MAAM,OAAO;AAIrB,QAAO"}
1
+ {"version":3,"file":"media-props.js","names":[],"sources":["../../../src/utils/media-props.ts"],"sourcesContent":["import type { Media } from '@videojs/core';\n\ntype AnyClass = abstract new (...args: any[]) => any;\n\nfunction getSettableProps(DelegateClass: AnyClass): Set<string> {\n const props = new Set<string>();\n for (let proto = DelegateClass.prototype; proto && proto !== Object.prototype; proto = Object.getPrototypeOf(proto)) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (desc?.set) props.add(key);\n }\n }\n return props;\n}\n\nexport function mediaProps(media: Media, DelegateClass: AnyClass, props: Record<string, any>) {\n const delegateKeys = getSettableProps(DelegateClass);\n const rest: Record<string, any> = {};\n\n for (const key of Object.keys(props)) {\n if (delegateKeys.has(key)) {\n const value = props[key];\n if ((media as any)[key] !== value) {\n (media as any)[key] = value;\n }\n } else {\n rest[key] = props[key];\n }\n }\n\n return rest;\n}\n"],"mappings":";AAIA,SAAS,iBAAiB,eAAsC;CAC9D,MAAM,wBAAQ,IAAI,KAAa;AAC/B,MAAK,IAAI,QAAQ,cAAc,WAAW,SAAS,UAAU,OAAO,WAAW,QAAQ,OAAO,eAAe,MAAM,CACjH,MAAK,MAAM,OAAO,OAAO,oBAAoB,MAAM,CAEjD,KADa,OAAO,yBAAyB,OAAO,IAAI,EAC9C,IAAK,OAAM,IAAI,IAAI;AAGjC,QAAO;;AAGT,SAAgB,WAAW,OAAc,eAAyB,OAA4B;CAC5F,MAAM,eAAe,iBAAiB,cAAc;CACpD,MAAM,OAA4B,EAAE;AAEpC,MAAK,MAAM,OAAO,OAAO,KAAK,MAAM,CAClC,KAAI,aAAa,IAAI,IAAI,EAAE;EACzB,MAAM,QAAQ,MAAM;AACpB,MAAK,MAAc,SAAS,MACzB,OAAc,OAAO;OAGxB,MAAK,OAAO,MAAM;AAItB,QAAO"}
@@ -1,5 +1,4 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  //#region src/utils/merge-props.ts
4
3
  /**
5
4
  * Check if a key is an event handler key (on* with capital letter).
@@ -79,7 +78,7 @@ function mergeProps(...propSets) {
79
78
  for (const props of propSets) merged = mergeOne(merged, props);
80
79
  return merged;
81
80
  }
82
-
83
81
  //#endregion
84
82
  export { mergeProps };
83
+
85
84
  //# sourceMappingURL=merge-props.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge-props.js","names":[],"sources":["../../../src/utils/merge-props.ts"],"sourcesContent":["'use client';\n\nimport type { ComponentPropsWithRef, CSSProperties, ElementType, SyntheticEvent } from 'react';\n\ntype Props<T extends ElementType = ElementType> = ComponentPropsWithRef<T>;\n\n/**\n * Check if a key is an event handler key (on* with capital letter).\n */\nfunction isEventHandlerKey(key: string): boolean {\n return (\n key.charCodeAt(0) === 111 /* o */ &&\n key.charCodeAt(1) === 110 /* n */ &&\n key.charCodeAt(2) >= 65 /* A */ &&\n key.charCodeAt(2) <= 90 /* Z */\n );\n}\n\n/**\n * Check if a key/value pair is an event handler (includes undefined values).\n */\nfunction isEventHandler(key: string, value: unknown): boolean {\n return isEventHandlerKey(key) && (typeof value === 'function' || typeof value === 'undefined');\n}\n\n/**\n * Merge two event handlers - external runs first, ours runs second.\n */\nfunction mergeEventHandlers(\n ours: ((event: SyntheticEvent) => void) | undefined,\n theirs: ((event: SyntheticEvent) => void) | undefined\n): ((event: SyntheticEvent) => void) | undefined {\n if (!theirs) return ours;\n if (!ours) return theirs;\n\n return (event: SyntheticEvent) => {\n theirs(event);\n ours(event);\n };\n}\n\n/**\n * Merge two className values - concatenate strings.\n */\nfunction mergeClassNames(ours: string | undefined, theirs: string | undefined): string | undefined {\n if (theirs && ours) return `${theirs} ${ours}`;\n return theirs || ours;\n}\n\n/**\n * Merge two style objects - theirs overwrites conflicts.\n */\nfunction mergeStyles(ours: CSSProperties | undefined, theirs: CSSProperties | undefined): CSSProperties | undefined {\n if (!theirs) return ours;\n if (!ours) return theirs;\n return { ...ours, ...theirs };\n}\n\n/**\n * Merge a single props object into accumulated result.\n */\nfunction mergeOne<T extends ElementType>(\n merged: Record<string, unknown>,\n props: Props<T> | undefined\n): Record<string, unknown> {\n if (!props) return merged;\n\n for (const key in props) {\n const value = props[key as keyof typeof props];\n\n if (key === 'className') {\n merged.className = mergeClassNames(merged.className as string | undefined, value as string);\n } else if (key === 'style') {\n merged.style = mergeStyles(merged.style as CSSProperties | undefined, value as CSSProperties);\n } else if (isEventHandler(key, value)) {\n merged[key] = mergeEventHandlers(\n merged[key] as ((event: SyntheticEvent) => void) | undefined,\n value as (event: SyntheticEvent) => void\n );\n } else {\n merged[key] = value;\n }\n }\n\n return merged;\n}\n\n/**\n * Merge multiple props objects.\n *\n * - Event handlers (on*): chained - external first, ours second\n * - className: concatenated\n * - style: merged objects (external wins conflicts)\n * - other: last one wins\n *\n * @public\n * @example\n * ```ts\n * const merged = mergeProps(\n * { onClick: ourHandler, className: 'base' },\n * { onClick: theirHandler, className: 'custom' }\n * );\n * // { onClick: chainedHandler, className: 'custom base' }\n * ```\n */\nexport function mergeProps<T extends ElementType>(...propSets: (Props<T> | undefined)[]): Props<T> {\n let merged: Record<string, unknown> = {};\n\n for (const props of propSets) {\n merged = mergeOne(merged, props);\n }\n\n return merged as Props<T>;\n}\n"],"mappings":";;;;;;AASA,SAAS,kBAAkB,KAAsB;AAC/C,QACE,IAAI,WAAW,EAAE,KAAK,OACtB,IAAI,WAAW,EAAE,KAAK,OACtB,IAAI,WAAW,EAAE,IAAI,MACrB,IAAI,WAAW,EAAE,IAAI;;;;;AAOzB,SAAS,eAAe,KAAa,OAAyB;AAC5D,QAAO,kBAAkB,IAAI,KAAK,OAAO,UAAU,cAAc,OAAO,UAAU;;;;;AAMpF,SAAS,mBACP,MACA,QAC+C;AAC/C,KAAI,CAAC,OAAQ,QAAO;AACpB,KAAI,CAAC,KAAM,QAAO;AAElB,SAAQ,UAA0B;AAChC,SAAO,MAAM;AACb,OAAK,MAAM;;;;;;AAOf,SAAS,gBAAgB,MAA0B,QAAgD;AACjG,KAAI,UAAU,KAAM,QAAO,GAAG,OAAO,GAAG;AACxC,QAAO,UAAU;;;;;AAMnB,SAAS,YAAY,MAAiC,QAA8D;AAClH,KAAI,CAAC,OAAQ,QAAO;AACpB,KAAI,CAAC,KAAM,QAAO;AAClB,QAAO;EAAE,GAAG;EAAM,GAAG;EAAQ;;;;;AAM/B,SAAS,SACP,QACA,OACyB;AACzB,KAAI,CAAC,MAAO,QAAO;AAEnB,MAAK,MAAM,OAAO,OAAO;EACvB,MAAM,QAAQ,MAAM;AAEpB,MAAI,QAAQ,YACV,QAAO,YAAY,gBAAgB,OAAO,WAAiC,MAAgB;WAClF,QAAQ,QACjB,QAAO,QAAQ,YAAY,OAAO,OAAoC,MAAuB;WACpF,eAAe,KAAK,MAAM,CACnC,QAAO,OAAO,mBACZ,OAAO,MACP,MACD;MAED,QAAO,OAAO;;AAIlB,QAAO;;;;;;;;;;;;;;;;;;;;AAqBT,SAAgB,WAAkC,GAAG,UAA8C;CACjG,IAAI,SAAkC,EAAE;AAExC,MAAK,MAAM,SAAS,SAClB,UAAS,SAAS,QAAQ,MAAM;AAGlC,QAAO"}
1
+ {"version":3,"file":"merge-props.js","names":[],"sources":["../../../src/utils/merge-props.ts"],"sourcesContent":["'use client';\n\nimport type { ComponentPropsWithRef, CSSProperties, ElementType, SyntheticEvent } from 'react';\n\ntype Props<T extends ElementType = ElementType> = ComponentPropsWithRef<T>;\n\n/**\n * Check if a key is an event handler key (on* with capital letter).\n */\nfunction isEventHandlerKey(key: string): boolean {\n return (\n key.charCodeAt(0) === 111 /* o */ &&\n key.charCodeAt(1) === 110 /* n */ &&\n key.charCodeAt(2) >= 65 /* A */ &&\n key.charCodeAt(2) <= 90 /* Z */\n );\n}\n\n/**\n * Check if a key/value pair is an event handler (includes undefined values).\n */\nfunction isEventHandler(key: string, value: unknown): boolean {\n return isEventHandlerKey(key) && (typeof value === 'function' || typeof value === 'undefined');\n}\n\n/**\n * Merge two event handlers - external runs first, ours runs second.\n */\nfunction mergeEventHandlers(\n ours: ((event: SyntheticEvent) => void) | undefined,\n theirs: ((event: SyntheticEvent) => void) | undefined\n): ((event: SyntheticEvent) => void) | undefined {\n if (!theirs) return ours;\n if (!ours) return theirs;\n\n return (event: SyntheticEvent) => {\n theirs(event);\n ours(event);\n };\n}\n\n/**\n * Merge two className values - concatenate strings.\n */\nfunction mergeClassNames(ours: string | undefined, theirs: string | undefined): string | undefined {\n if (theirs && ours) return `${theirs} ${ours}`;\n return theirs || ours;\n}\n\n/**\n * Merge two style objects - theirs overwrites conflicts.\n */\nfunction mergeStyles(ours: CSSProperties | undefined, theirs: CSSProperties | undefined): CSSProperties | undefined {\n if (!theirs) return ours;\n if (!ours) return theirs;\n return { ...ours, ...theirs };\n}\n\n/**\n * Merge a single props object into accumulated result.\n */\nfunction mergeOne<T extends ElementType>(\n merged: Record<string, unknown>,\n props: Props<T> | undefined\n): Record<string, unknown> {\n if (!props) return merged;\n\n for (const key in props) {\n const value = props[key as keyof typeof props];\n\n if (key === 'className') {\n merged.className = mergeClassNames(merged.className as string | undefined, value as string);\n } else if (key === 'style') {\n merged.style = mergeStyles(merged.style as CSSProperties | undefined, value as CSSProperties);\n } else if (isEventHandler(key, value)) {\n merged[key] = mergeEventHandlers(\n merged[key] as ((event: SyntheticEvent) => void) | undefined,\n value as (event: SyntheticEvent) => void\n );\n } else {\n merged[key] = value;\n }\n }\n\n return merged;\n}\n\n/**\n * Merge multiple props objects.\n *\n * - Event handlers (on*): chained - external first, ours second\n * - className: concatenated\n * - style: merged objects (external wins conflicts)\n * - other: last one wins\n *\n * @public\n * @example\n * ```ts\n * const merged = mergeProps(\n * { onClick: ourHandler, className: 'base' },\n * { onClick: theirHandler, className: 'custom' }\n * );\n * // { onClick: chainedHandler, className: 'custom base' }\n * ```\n */\nexport function mergeProps<T extends ElementType>(...propSets: (Props<T> | undefined)[]): Props<T> {\n let merged: Record<string, unknown> = {};\n\n for (const props of propSets) {\n merged = mergeOne(merged, props);\n }\n\n return merged as Props<T>;\n}\n"],"mappings":";;;;;AASA,SAAS,kBAAkB,KAAsB;AAC/C,QACE,IAAI,WAAW,EAAE,KAAK,OACtB,IAAI,WAAW,EAAE,KAAK,OACtB,IAAI,WAAW,EAAE,IAAI,MACrB,IAAI,WAAW,EAAE,IAAI;;;;;AAOzB,SAAS,eAAe,KAAa,OAAyB;AAC5D,QAAO,kBAAkB,IAAI,KAAK,OAAO,UAAU,cAAc,OAAO,UAAU;;;;;AAMpF,SAAS,mBACP,MACA,QAC+C;AAC/C,KAAI,CAAC,OAAQ,QAAO;AACpB,KAAI,CAAC,KAAM,QAAO;AAElB,SAAQ,UAA0B;AAChC,SAAO,MAAM;AACb,OAAK,MAAM;;;;;;AAOf,SAAS,gBAAgB,MAA0B,QAAgD;AACjG,KAAI,UAAU,KAAM,QAAO,GAAG,OAAO,GAAG;AACxC,QAAO,UAAU;;;;;AAMnB,SAAS,YAAY,MAAiC,QAA8D;AAClH,KAAI,CAAC,OAAQ,QAAO;AACpB,KAAI,CAAC,KAAM,QAAO;AAClB,QAAO;EAAE,GAAG;EAAM,GAAG;EAAQ;;;;;AAM/B,SAAS,SACP,QACA,OACyB;AACzB,KAAI,CAAC,MAAO,QAAO;AAEnB,MAAK,MAAM,OAAO,OAAO;EACvB,MAAM,QAAQ,MAAM;AAEpB,MAAI,QAAQ,YACV,QAAO,YAAY,gBAAgB,OAAO,WAAiC,MAAgB;WAClF,QAAQ,QACjB,QAAO,QAAQ,YAAY,OAAO,OAAoC,MAAuB;WACpF,eAAe,KAAK,MAAM,CACnC,QAAO,OAAO,mBACZ,OAAO,MACP,MACD;MAED,QAAO,OAAO;;AAIlB,QAAO;;;;;;;;;;;;;;;;;;;;AAqBT,SAAgB,WAAkC,GAAG,UAA8C;CACjG,IAAI,SAAkC,EAAE;AAExC,MAAK,MAAM,SAAS,SAClB,UAAS,SAAS,QAAQ,MAAM;AAGlC,QAAO"}
@@ -1,8 +1,6 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { useCallback } from "react";
4
3
  import { isFunction } from "@videojs/utils/predicate";
5
-
6
4
  //#region src/utils/use-composed-refs.ts
7
5
  /**
8
6
  * Set a given ref to a given value.
@@ -51,7 +49,7 @@ function composeRefs(...refs) {
51
49
  function useComposedRefs(...refs) {
52
50
  return useCallback(composeRefs(...refs), [...refs]);
53
51
  }
54
-
55
52
  //#endregion
56
53
  export { composeRefs, useComposedRefs };
54
+
57
55
  //# sourceMappingURL=use-composed-refs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-composed-refs.js","names":[],"sources":["../../../src/utils/use-composed-refs.ts"],"sourcesContent":["'use client';\n\nimport { isFunction } from '@videojs/utils/predicate';\nimport type { Ref, RefCallback } from 'react';\n\nimport { useCallback } from 'react';\n\ntype OptionalRef<T> = Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value.\n *\n * Handles both callback refs and RefObject(s).\n *\n * @returns Cleanup function if the ref callback returned one (React 19+)\n */\nfunction setRef<T>(ref: OptionalRef<T>, value: T): (() => void) | void | undefined {\n if (isFunction(ref)) {\n return ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * Compose multiple refs into a single callback ref.\n *\n * @example\n * ```tsx\n * const composedRef = composeRefs(ref1, ref2, ref3);\n * return <div ref={composedRef} />;\n * ```\n */\nexport function composeRefs<T>(...refs: (OptionalRef<T> | OptionalRef<T>[])[]): RefCallback<T> {\n const flatRefs = refs.flat();\n\n return (node): (() => void) | void => {\n const cleanups = flatRefs.map((ref) => setRef(ref, node));\n\n // Only return cleanup if any refs returned one (React 19+).\n // React 18 handles cleanup by calling the ref callback with null.\n if (cleanups.some(isFunction)) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (isFunction(cleanup)) {\n cleanup();\n } else {\n setRef(flatRefs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * Hook that composes multiple refs into a single callback ref.\n *\n * Memoized for stable reference.\n *\n * @example\n * ```tsx\n * const composedRef = useComposedRefs(forwardedRef, localRef);\n * return <div ref={composedRef} />;\n * ```\n */\nexport function useComposedRefs<T>(...refs: OptionalRef<T>[]): RefCallback<T> {\n return useCallback(composeRefs(...refs), [...refs]);\n}\n"],"mappings":";;;;;;;;;;;;;AAgBA,SAAS,OAAU,KAAqB,OAA2C;AACjF,KAAI,WAAW,IAAI,CACjB,QAAO,IAAI,MAAM;UACR,QAAQ,QAAQ,QAAQ,OACjC,KAAI,UAAU;;;;;;;;;;;AAalB,SAAgB,YAAe,GAAG,MAA6D;CAC7F,MAAM,WAAW,KAAK,MAAM;AAE5B,SAAQ,SAA8B;EACpC,MAAM,WAAW,SAAS,KAAK,QAAQ,OAAO,KAAK,KAAK,CAAC;AAIzD,MAAI,SAAS,KAAK,WAAW,CAC3B,cAAa;AACX,QAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;IACxC,MAAM,UAAU,SAAS;AACzB,QAAI,WAAW,QAAQ,CACrB,UAAS;QAET,QAAO,SAAS,IAAI,KAAK;;;;;;;;;;;;;;;;AAmBrC,SAAgB,gBAAmB,GAAG,MAAwC;AAC5E,QAAO,YAAY,YAAY,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC"}
1
+ {"version":3,"file":"use-composed-refs.js","names":[],"sources":["../../../src/utils/use-composed-refs.ts"],"sourcesContent":["'use client';\n\nimport { isFunction } from '@videojs/utils/predicate';\nimport type { Ref, RefCallback } from 'react';\n\nimport { useCallback } from 'react';\n\ntype OptionalRef<T> = Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value.\n *\n * Handles both callback refs and RefObject(s).\n *\n * @returns Cleanup function if the ref callback returned one (React 19+)\n */\nfunction setRef<T>(ref: OptionalRef<T>, value: T): (() => void) | void | undefined {\n if (isFunction(ref)) {\n return ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * Compose multiple refs into a single callback ref.\n *\n * @example\n * ```tsx\n * const composedRef = composeRefs(ref1, ref2, ref3);\n * return <div ref={composedRef} />;\n * ```\n */\nexport function composeRefs<T>(...refs: (OptionalRef<T> | OptionalRef<T>[])[]): RefCallback<T> {\n const flatRefs = refs.flat();\n\n return (node): (() => void) | void => {\n const cleanups = flatRefs.map((ref) => setRef(ref, node));\n\n // Only return cleanup if any refs returned one (React 19+).\n // React 18 handles cleanup by calling the ref callback with null.\n if (cleanups.some(isFunction)) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (isFunction(cleanup)) {\n cleanup();\n } else {\n setRef(flatRefs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * Hook that composes multiple refs into a single callback ref.\n *\n * Memoized for stable reference.\n *\n * @example\n * ```tsx\n * const composedRef = useComposedRefs(forwardedRef, localRef);\n * return <div ref={composedRef} />;\n * ```\n */\nexport function useComposedRefs<T>(...refs: OptionalRef<T>[]): RefCallback<T> {\n return useCallback(composeRefs(...refs), [...refs]);\n}\n"],"mappings":";;;;;;;;;;;AAgBA,SAAS,OAAU,KAAqB,OAA2C;AACjF,KAAI,WAAW,IAAI,CACjB,QAAO,IAAI,MAAM;UACR,QAAQ,QAAQ,QAAQ,KAAA,EACjC,KAAI,UAAU;;;;;;;;;;;AAalB,SAAgB,YAAe,GAAG,MAA6D;CAC7F,MAAM,WAAW,KAAK,MAAM;AAE5B,SAAQ,SAA8B;EACpC,MAAM,WAAW,SAAS,KAAK,QAAQ,OAAO,KAAK,KAAK,CAAC;AAIzD,MAAI,SAAS,KAAK,WAAW,CAC3B,cAAa;AACX,QAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;IACxC,MAAM,UAAU,SAAS;AACzB,QAAI,WAAW,QAAQ,CACrB,UAAS;QAET,QAAO,SAAS,IAAI,KAAK;;;;;;;;;;;;;;;;AAmBrC,SAAgB,gBAAmB,GAAG,MAAwC;AAC5E,QAAO,YAAY,YAAY,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC"}
@@ -1,7 +1,6 @@
1
- 'use client';
2
-
1
+ "use client";
2
+ import { useLatestRef } from "./use-latest-ref.js";
3
3
  import { useEffect, useRef } from "react";
4
-
5
4
  //#region src/utils/use-destroy.ts
6
5
  /**
7
6
  * Destroy an instance on unmount, deferring destruction to survive React
@@ -14,20 +13,27 @@ import { useEffect, useRef } from "react";
14
13
  * @param instance - Object with a `destroy()` method.
15
14
  * @param setup - Optional setup called on first mount. Skipped on StrictMode
16
15
  * re-mount since the previous setup was never torn down.
16
+ * @param teardown - Optional teardown called right before `destroy()` on real
17
+ * unmount. Skipped on StrictMode simulated unmount.
17
18
  */
18
- function useDestroy(instance, setup) {
19
+ function useDestroy(instance, setup, teardown) {
19
20
  const pendingRef = useRef(null);
21
+ const setupRef = useLatestRef(setup);
22
+ const teardownRef = useLatestRef(teardown);
20
23
  useEffect(() => {
21
24
  if (pendingRef.current !== null) {
22
25
  clearTimeout(pendingRef.current);
23
26
  pendingRef.current = null;
24
- } else setup?.();
27
+ } else setupRef.current?.();
25
28
  return () => {
26
- pendingRef.current = setTimeout(() => instance.destroy(), 0);
29
+ pendingRef.current = setTimeout(() => {
30
+ teardownRef.current?.();
31
+ instance.destroy();
32
+ }, 0);
27
33
  };
28
- }, [instance, setup]);
34
+ }, [instance]);
29
35
  }
30
-
31
36
  //#endregion
32
37
  export { useDestroy };
38
+
33
39
  //# sourceMappingURL=use-destroy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-destroy.js","names":[],"sources":["../../../src/utils/use-destroy.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useRef } from 'react';\n\ninterface Destroyable {\n destroy(): void;\n}\n\n/**\n * Destroy an instance on unmount, deferring destruction to survive React\n * StrictMode's simulated unmount/re-mount cycle.\n *\n * StrictMode runs effects, then immediately runs cleanup, then re-runs\n * effects — all synchronously. By deferring `destroy()` to a macrotask,\n * the re-mount effect can cancel it before it fires.\n *\n * @param instance - Object with a `destroy()` method.\n * @param setup - Optional setup called on first mount. Skipped on StrictMode\n * re-mount since the previous setup was never torn down.\n */\nexport function useDestroy(instance: Destroyable, setup?: () => void): void {\n const pendingRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (pendingRef.current !== null) {\n clearTimeout(pendingRef.current);\n pendingRef.current = null;\n } else {\n setup?.();\n }\n\n return () => {\n pendingRef.current = setTimeout(() => instance.destroy(), 0);\n };\n }, [instance, setup]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAoBA,SAAgB,WAAW,UAAuB,OAA0B;CAC1E,MAAM,aAAa,OAA6C,KAAK;AAErE,iBAAgB;AACd,MAAI,WAAW,YAAY,MAAM;AAC/B,gBAAa,WAAW,QAAQ;AAChC,cAAW,UAAU;QAErB,UAAS;AAGX,eAAa;AACX,cAAW,UAAU,iBAAiB,SAAS,SAAS,EAAE,EAAE;;IAE7D,CAAC,UAAU,MAAM,CAAC"}
1
+ {"version":3,"file":"use-destroy.js","names":[],"sources":["../../../src/utils/use-destroy.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useRef } from 'react';\n\nimport { useLatestRef } from './use-latest-ref';\n\ninterface Destroyable {\n destroy(): void;\n}\n\n/**\n * Destroy an instance on unmount, deferring destruction to survive React\n * StrictMode's simulated unmount/re-mount cycle.\n *\n * StrictMode runs effects, then immediately runs cleanup, then re-runs\n * effects — all synchronously. By deferring `destroy()` to a macrotask,\n * the re-mount effect can cancel it before it fires.\n *\n * @param instance - Object with a `destroy()` method.\n * @param setup - Optional setup called on first mount. Skipped on StrictMode\n * re-mount since the previous setup was never torn down.\n * @param teardown - Optional teardown called right before `destroy()` on real\n * unmount. Skipped on StrictMode simulated unmount.\n */\nexport function useDestroy(instance: Destroyable, setup?: () => void, teardown?: () => void): void {\n const pendingRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const setupRef = useLatestRef(setup);\n const teardownRef = useLatestRef(teardown);\n\n useEffect(() => {\n if (pendingRef.current !== null) {\n clearTimeout(pendingRef.current);\n pendingRef.current = null;\n } else {\n setupRef.current?.();\n }\n\n return () => {\n pendingRef.current = setTimeout(() => {\n teardownRef.current?.();\n instance.destroy();\n }, 0);\n };\n }, [instance]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAwBA,SAAgB,WAAW,UAAuB,OAAoB,UAA6B;CACjG,MAAM,aAAa,OAA6C,KAAK;CACrE,MAAM,WAAW,aAAa,MAAM;CACpC,MAAM,cAAc,aAAa,SAAS;AAE1C,iBAAgB;AACd,MAAI,WAAW,YAAY,MAAM;AAC/B,gBAAa,WAAW,QAAQ;AAChC,cAAW,UAAU;QAErB,UAAS,WAAW;AAGtB,eAAa;AACX,cAAW,UAAU,iBAAiB;AACpC,gBAAY,WAAW;AACvB,aAAS,SAAS;MACjB,EAAE;;IAEN,CAAC,SAAS,CAAC"}
@@ -1,13 +1,11 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { useReducer } from "react";
4
-
5
3
  //#region src/utils/use-force-render.ts
6
4
  function useForceRender() {
7
5
  const [, forceRender] = useReducer((c) => c + 1, 0);
8
6
  return forceRender;
9
7
  }
10
-
11
8
  //#endregion
12
9
  export { useForceRender };
10
+
13
11
  //# sourceMappingURL=use-force-render.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-force-render.js","names":[],"sources":["../../../src/utils/use-force-render.ts"],"sourcesContent":["'use client';\n\nimport { useReducer } from 'react';\n\nexport function useForceRender() {\n const [, forceRender] = useReducer((c: number) => c + 1, 0);\n return forceRender;\n}\n\nexport namespace useForceRender {\n export type Result = () => void;\n}\n"],"mappings":";;;;;AAIA,SAAgB,iBAAiB;CAC/B,MAAM,GAAG,eAAe,YAAY,MAAc,IAAI,GAAG,EAAE;AAC3D,QAAO"}
1
+ {"version":3,"file":"use-force-render.js","names":[],"sources":["../../../src/utils/use-force-render.ts"],"sourcesContent":["'use client';\n\nimport { useReducer } from 'react';\n\nexport function useForceRender() {\n const [, forceRender] = useReducer((c: number) => c + 1, 0);\n return forceRender;\n}\n\nexport namespace useForceRender {\n export type Result = () => void;\n}\n"],"mappings":";;;AAIA,SAAgB,iBAAiB;CAC/B,MAAM,GAAG,eAAe,YAAY,MAAc,IAAI,GAAG,EAAE;AAC3D,QAAO"}
@@ -1,7 +1,5 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { useRef } from "react";
4
-
5
3
  //#region src/utils/use-latest-ref.ts
6
4
  /**
7
5
  * Keep a ref that always points to the latest value.
@@ -14,7 +12,7 @@ function useLatestRef(value) {
14
12
  ref.current = value;
15
13
  return ref;
16
14
  }
17
-
18
15
  //#endregion
19
16
  export { useLatestRef };
17
+
20
18
  //# sourceMappingURL=use-latest-ref.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-latest-ref.js","names":[],"sources":["../../../src/utils/use-latest-ref.ts"],"sourcesContent":["'use client';\n\nimport { useRef } from 'react';\n\n/**\n * Keep a ref that always points to the latest value.\n *\n * Useful for capturing callbacks or derived values inside closures\n * that are created once (e.g. factory callbacks) without stale reads.\n */\nexport function useLatestRef<Value>(value: Value): Readonly<{ current: Value }> {\n const ref = useRef(value);\n ref.current = value;\n return ref;\n}\n\nexport namespace useLatestRef {\n export type Result<Value> = Readonly<{ current: Value }>;\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAgB,aAAoB,OAA4C;CAC9E,MAAM,MAAM,OAAO,MAAM;AACzB,KAAI,UAAU;AACd,QAAO"}
1
+ {"version":3,"file":"use-latest-ref.js","names":[],"sources":["../../../src/utils/use-latest-ref.ts"],"sourcesContent":["'use client';\n\nimport { useRef } from 'react';\n\n/**\n * Keep a ref that always points to the latest value.\n *\n * Useful for capturing callbacks or derived values inside closures\n * that are created once (e.g. factory callbacks) without stale reads.\n */\nexport function useLatestRef<Value>(value: Value): Readonly<{ current: Value }> {\n const ref = useRef(value);\n ref.current = value;\n return ref;\n}\n\nexport namespace useLatestRef {\n export type Result<Value> = Readonly<{ current: Value }>;\n}\n"],"mappings":";;;;;;;;;AAUA,SAAgB,aAAoB,OAA4C;CAC9E,MAAM,MAAM,OAAO,MAAM;AACzB,KAAI,UAAU;AACd,QAAO"}
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { useMediaAttach } from "../player/context.js";
3
+ import { useDestroy } from "./use-destroy.js";
4
+ import { useState } from "react";
5
+ //#region src/utils/use-media-instance.ts
6
+ /**
7
+ * Create and manage a media instance lifecycle within a player context.
8
+ *
9
+ * Instantiates the media class once, attaches it to the player on mount,
10
+ * and safely detaches on unmount using a functional updater to avoid race
11
+ * conditions when swapping media components (e.g. DashVideo → HlsVideo).
12
+ */
13
+ function useMediaInstance(MediaClass) {
14
+ const [instance] = useState(() => new MediaClass());
15
+ const setMedia = useMediaAttach();
16
+ useDestroy(instance, () => setMedia?.(instance), () => setMedia?.((prev) => prev === instance ? null : prev));
17
+ return instance;
18
+ }
19
+ //#endregion
20
+ export { useMediaInstance };
21
+
22
+ //# sourceMappingURL=use-media-instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-media-instance.js","names":[],"sources":["../../../src/utils/use-media-instance.ts"],"sourcesContent":["'use client';\n\nimport type { Media } from '@videojs/core';\nimport { useState } from 'react';\n\nimport { useMediaAttach } from '../player/context';\nimport { useDestroy } from './use-destroy';\n\n/**\n * Create and manage a media instance lifecycle within a player context.\n *\n * Instantiates the media class once, attaches it to the player on mount,\n * and safely detaches on unmount using a functional updater to avoid race\n * conditions when swapping media components (e.g. DashVideo → HlsVideo).\n */\nexport function useMediaInstance<Instance extends Media & { destroy(): void }>(\n MediaClass: new () => Instance\n): Instance {\n const [instance] = useState(() => new MediaClass());\n const setMedia = useMediaAttach();\n\n useDestroy(\n instance,\n () => setMedia?.(instance),\n () => setMedia?.((prev) => (prev === instance ? null : prev))\n );\n\n return instance;\n}\n"],"mappings":";;;;;;;;;;;;AAeA,SAAgB,iBACd,YACU;CACV,MAAM,CAAC,YAAY,eAAe,IAAI,YAAY,CAAC;CACnD,MAAM,WAAW,gBAAgB;AAEjC,YACE,gBACM,WAAW,SAAS,QACpB,YAAY,SAAU,SAAS,WAAW,OAAO,KAAM,CAC9D;AAED,QAAO"}
@@ -1,12 +1,14 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { composeRefs } from "./use-composed-refs.js";
4
3
  import { mergeProps } from "./merge-props.js";
5
4
  import { getStateDataAttrs } from "@videojs/core/dom";
6
5
  import { cloneElement, createElement, isValidElement } from "react";
7
6
  import { isFunction } from "@videojs/utils/predicate";
8
-
9
7
  //#region src/utils/use-render.tsx
8
+ /** Check if a value is a render prop (function or React element). */
9
+ function isRenderProp(value) {
10
+ return isFunction(value) || isValidElement(value);
11
+ }
10
12
  function resolveClassName(className, state) {
11
13
  return isFunction(className) ? className(state) : className;
12
14
  }
@@ -65,7 +67,7 @@ function renderElement(element, componentProps, params) {
65
67
  mergedProps.ref = composeRefs(ref, mergedProps.ref);
66
68
  return createElement(element, mergedProps);
67
69
  }
68
-
69
70
  //#endregion
70
- export { renderElement };
71
+ export { isRenderProp, renderElement };
72
+
71
73
  //# sourceMappingURL=use-render.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-render.js","names":[],"sources":["../../../src/utils/use-render.tsx"],"sourcesContent":["'use client';\n\nimport { getStateDataAttrs, type StateAttrMap } from '@videojs/core/dom';\nimport { isFunction } from '@videojs/utils/predicate';\nimport type { CSSProperties, ReactElement, Ref } from 'react';\nimport { cloneElement, createElement, isValidElement } from 'react';\nimport { mergeProps } from './merge-props';\nimport type { HTMLProps, RenderProp } from './types';\nimport { composeRefs } from './use-composed-refs';\n\ntype IntrinsicTagName = keyof React.JSX.IntrinsicElements;\n\nexport interface UseRenderComponentProps<State> {\n className?: string | ((state: State) => string | undefined) | undefined;\n style?: CSSProperties | ((state: State) => CSSProperties | undefined) | undefined;\n render?: RenderProp<State> | undefined;\n}\n\nexport interface UseRenderParameters<State, RenderedElementType extends Element> {\n state: State;\n ref?: Ref<RenderedElementType> | Ref<RenderedElementType>[] | undefined;\n props?: object | object[] | undefined;\n stateAttrMap?: StateAttrMap<State> | undefined;\n}\n\nfunction resolveClassName<State>(\n className: string | ((state: State) => string | undefined) | undefined,\n state: State\n): string | undefined {\n return isFunction(className) ? className(state) : className;\n}\n\nfunction resolveStyle<State>(\n style: CSSProperties | ((state: State) => CSSProperties | undefined) | undefined,\n state: State\n): CSSProperties | undefined {\n return isFunction(style) ? style(state) : style;\n}\n\nfunction getElementRef(element: ReactElement): Ref<unknown> | undefined {\n // React 19+ uses element.props.ref, older versions use element.ref\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const elementAny = element as any;\n return elementAny.ref ?? elementAny.props?.ref;\n}\n\n/**\n * Render a UI component element.\n *\n * Handles:\n * - Default tag rendering\n * - Render prop (element or function)\n * - Props merging (event handlers chained, className concatenated, style merged)\n * - Ref composition\n * - className/style as functions of state\n *\n * @public\n * @example\n * ```tsx\n * return renderElement('button', componentProps, {\n * state,\n * ref: [forwardedRef, buttonRef],\n * props: [{ type: 'button' }, elementProps, getButtonProps],\n * });\n * ```\n */\nexport function renderElement<\n State extends object,\n RenderedElementType extends Element,\n TagName extends IntrinsicTagName,\n>(\n element: TagName,\n componentProps: UseRenderComponentProps<State>,\n params: UseRenderParameters<State, RenderedElementType>\n): ReactElement | null {\n const { className: classNameProp, style: styleProp, render } = componentProps;\n const { state, ref, props, stateAttrMap } = params;\n\n // Resolve className and style if they're functions\n const className = resolveClassName(classNameProp, state);\n const style = resolveStyle(styleProp, state);\n\n // Generate data attributes from state\n const stateDataAttrs = getStateDataAttrs(state, stateAttrMap);\n\n // Merge: state data attrs first, then props (so props can override)\n const propsArray = Array.isArray(props) ? props : props ? [props] : [];\n const mergedProps = mergeProps(stateDataAttrs, ...(propsArray as Record<string, unknown>[]));\n\n if (className !== undefined) {\n // Add resolved className and style\n mergedProps.className = mergedProps.className ? `${mergedProps.className} ${className}` : className;\n }\n\n if (style !== undefined) {\n mergedProps.style = mergedProps.style ? { ...(mergedProps.style as CSSProperties), ...style } : style;\n }\n\n if (isFunction(render)) {\n // Render function: call with props and state\n const mergedRef = composeRefs(ref, mergedProps.ref);\n return render({ ...mergedProps, ref: mergedRef } as HTMLProps, state);\n }\n\n if (isValidElement(render)) {\n const elementRef = getElementRef(render);\n\n const mergedRef = composeRefs(ref, mergedProps.ref, elementRef);\n\n const elementProps = mergeProps(mergedProps, render.props as Record<string, unknown>);\n elementProps.ref = mergedRef;\n\n return cloneElement(render, elementProps);\n }\n\n // Default tag\n const mergedRef = composeRefs(ref, mergedProps.ref);\n mergedProps.ref = mergedRef;\n\n return createElement(element, mergedProps);\n}\n\nexport namespace renderElement {\n export type ComponentProps<State> = UseRenderComponentProps<State>;\n export type Parameters<State, RenderedElementType extends Element> = UseRenderParameters<State, RenderedElementType>;\n}\n"],"mappings":";;;;;;;;;AAyBA,SAAS,iBACP,WACA,OACoB;AACpB,QAAO,WAAW,UAAU,GAAG,UAAU,MAAM,GAAG;;AAGpD,SAAS,aACP,OACA,OAC2B;AAC3B,QAAO,WAAW,MAAM,GAAG,MAAM,MAAM,GAAG;;AAG5C,SAAS,cAAc,SAAiD;CAGtE,MAAM,aAAa;AACnB,QAAO,WAAW,OAAO,WAAW,OAAO;;;;;;;;;;;;;;;;;;;;;;AAuB7C,SAAgB,cAKd,SACA,gBACA,QACqB;CACrB,MAAM,EAAE,WAAW,eAAe,OAAO,WAAW,WAAW;CAC/D,MAAM,EAAE,OAAO,KAAK,OAAO,iBAAiB;CAG5C,MAAM,YAAY,iBAAiB,eAAe,MAAM;CACxD,MAAM,QAAQ,aAAa,WAAW,MAAM;CAO5C,MAAM,cAAc,WAJG,kBAAkB,OAAO,aAAa,EAId,GAD5B,MAAM,QAAQ,MAAM,GAAG,QAAQ,QAAQ,CAAC,MAAM,GAAG,EAAE,CACsB;AAE5F,KAAI,cAAc,OAEhB,aAAY,YAAY,YAAY,YAAY,GAAG,YAAY,UAAU,GAAG,cAAc;AAG5F,KAAI,UAAU,OACZ,aAAY,QAAQ,YAAY,QAAQ;EAAE,GAAI,YAAY;EAAyB,GAAG;EAAO,GAAG;AAGlG,KAAI,WAAW,OAAO,EAAE;EAEtB,MAAM,YAAY,YAAY,KAAK,YAAY,IAAI;AACnD,SAAO,OAAO;GAAE,GAAG;GAAa,KAAK;GAAW,EAAe,MAAM;;AAGvE,KAAI,eAAe,OAAO,EAAE;EAC1B,MAAM,aAAa,cAAc,OAAO;EAExC,MAAM,YAAY,YAAY,KAAK,YAAY,KAAK,WAAW;EAE/D,MAAM,eAAe,WAAW,aAAa,OAAO,MAAiC;AACrF,eAAa,MAAM;AAEnB,SAAO,aAAa,QAAQ,aAAa;;AAK3C,aAAY,MADM,YAAY,KAAK,YAAY,IAAI;AAGnD,QAAO,cAAc,SAAS,YAAY"}
1
+ {"version":3,"file":"use-render.js","names":[],"sources":["../../../src/utils/use-render.tsx"],"sourcesContent":["'use client';\n\nimport { getStateDataAttrs, type StateAttrMap } from '@videojs/core/dom';\nimport { isFunction } from '@videojs/utils/predicate';\nimport type { CSSProperties, ReactElement, Ref } from 'react';\nimport { cloneElement, createElement, isValidElement } from 'react';\nimport { mergeProps } from './merge-props';\nimport type { HTMLProps, RenderProp } from './types';\nimport { composeRefs } from './use-composed-refs';\n\n/** Check if a value is a render prop (function or React element). */\nexport function isRenderProp(value: unknown): value is RenderProp<any> {\n return isFunction(value) || isValidElement(value);\n}\n\ntype IntrinsicTagName = keyof React.JSX.IntrinsicElements;\n\nexport interface UseRenderComponentProps<State> {\n className?: string | ((state: State) => string | undefined) | undefined;\n style?: CSSProperties | ((state: State) => CSSProperties | undefined) | undefined;\n render?: RenderProp<State> | undefined;\n}\n\nexport interface UseRenderParameters<State, RenderedElementType extends Element> {\n state: State;\n ref?: Ref<RenderedElementType> | Ref<RenderedElementType>[] | undefined;\n props?: object | object[] | undefined;\n stateAttrMap?: StateAttrMap<State> | undefined;\n}\n\nfunction resolveClassName<State>(\n className: string | ((state: State) => string | undefined) | undefined,\n state: State\n): string | undefined {\n return isFunction(className) ? className(state) : className;\n}\n\nfunction resolveStyle<State>(\n style: CSSProperties | ((state: State) => CSSProperties | undefined) | undefined,\n state: State\n): CSSProperties | undefined {\n return isFunction(style) ? style(state) : style;\n}\n\nfunction getElementRef(element: ReactElement): Ref<unknown> | undefined {\n // React 19+ uses element.props.ref, older versions use element.ref\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const elementAny = element as any;\n return elementAny.ref ?? elementAny.props?.ref;\n}\n\n/**\n * Render a UI component element.\n *\n * Handles:\n * - Default tag rendering\n * - Render prop (element or function)\n * - Props merging (event handlers chained, className concatenated, style merged)\n * - Ref composition\n * - className/style as functions of state\n *\n * @public\n * @example\n * ```tsx\n * return renderElement('button', componentProps, {\n * state,\n * ref: [forwardedRef, buttonRef],\n * props: [{ type: 'button' }, elementProps, getButtonProps],\n * });\n * ```\n */\nexport function renderElement<\n State extends object,\n RenderedElementType extends Element,\n TagName extends IntrinsicTagName,\n>(\n element: TagName,\n componentProps: UseRenderComponentProps<State>,\n params: UseRenderParameters<State, RenderedElementType>\n): ReactElement | null {\n const { className: classNameProp, style: styleProp, render } = componentProps;\n const { state, ref, props, stateAttrMap } = params;\n\n // Resolve className and style if they're functions\n const className = resolveClassName(classNameProp, state);\n const style = resolveStyle(styleProp, state);\n\n // Generate data attributes from state\n const stateDataAttrs = getStateDataAttrs(state, stateAttrMap);\n\n // Merge: state data attrs first, then props (so props can override)\n const propsArray = Array.isArray(props) ? props : props ? [props] : [];\n const mergedProps = mergeProps(stateDataAttrs, ...(propsArray as Record<string, unknown>[]));\n\n if (className !== undefined) {\n // Add resolved className and style\n mergedProps.className = mergedProps.className ? `${mergedProps.className} ${className}` : className;\n }\n\n if (style !== undefined) {\n mergedProps.style = mergedProps.style ? { ...(mergedProps.style as CSSProperties), ...style } : style;\n }\n\n if (isFunction(render)) {\n // Render function: call with props and state\n const mergedRef = composeRefs(ref, mergedProps.ref);\n return render({ ...mergedProps, ref: mergedRef } as HTMLProps, state);\n }\n\n if (isValidElement(render)) {\n const elementRef = getElementRef(render);\n\n const mergedRef = composeRefs(ref, mergedProps.ref, elementRef);\n\n const elementProps = mergeProps(mergedProps, render.props as Record<string, unknown>);\n elementProps.ref = mergedRef;\n\n return cloneElement(render, elementProps);\n }\n\n // Default tag\n const mergedRef = composeRefs(ref, mergedProps.ref);\n mergedProps.ref = mergedRef;\n\n return createElement(element, mergedProps);\n}\n\nexport namespace renderElement {\n export type ComponentProps<State> = UseRenderComponentProps<State>;\n export type Parameters<State, RenderedElementType extends Element> = UseRenderParameters<State, RenderedElementType>;\n}\n"],"mappings":";;;;;;;;AAWA,SAAgB,aAAa,OAA0C;AACrE,QAAO,WAAW,MAAM,IAAI,eAAe,MAAM;;AAkBnD,SAAS,iBACP,WACA,OACoB;AACpB,QAAO,WAAW,UAAU,GAAG,UAAU,MAAM,GAAG;;AAGpD,SAAS,aACP,OACA,OAC2B;AAC3B,QAAO,WAAW,MAAM,GAAG,MAAM,MAAM,GAAG;;AAG5C,SAAS,cAAc,SAAiD;CAGtE,MAAM,aAAa;AACnB,QAAO,WAAW,OAAO,WAAW,OAAO;;;;;;;;;;;;;;;;;;;;;;AAuB7C,SAAgB,cAKd,SACA,gBACA,QACqB;CACrB,MAAM,EAAE,WAAW,eAAe,OAAO,WAAW,WAAW;CAC/D,MAAM,EAAE,OAAO,KAAK,OAAO,iBAAiB;CAG5C,MAAM,YAAY,iBAAiB,eAAe,MAAM;CACxD,MAAM,QAAQ,aAAa,WAAW,MAAM;CAO5C,MAAM,cAAc,WAJG,kBAAkB,OAAO,aAAa,EAId,GAD5B,MAAM,QAAQ,MAAM,GAAG,QAAQ,QAAQ,CAAC,MAAM,GAAG,EAAE,CACsB;AAE5F,KAAI,cAAc,KAAA,EAEhB,aAAY,YAAY,YAAY,YAAY,GAAG,YAAY,UAAU,GAAG,cAAc;AAG5F,KAAI,UAAU,KAAA,EACZ,aAAY,QAAQ,YAAY,QAAQ;EAAE,GAAI,YAAY;EAAyB,GAAG;EAAO,GAAG;AAGlG,KAAI,WAAW,OAAO,EAAE;EAEtB,MAAM,YAAY,YAAY,KAAK,YAAY,IAAI;AACnD,SAAO,OAAO;GAAE,GAAG;GAAa,KAAK;GAAW,EAAe,MAAM;;AAGvE,KAAI,eAAe,OAAO,EAAE;EAC1B,MAAM,aAAa,cAAc,OAAO;EAExC,MAAM,YAAY,YAAY,KAAK,YAAY,KAAK,WAAW;EAE/D,MAAM,eAAe,WAAW,aAAa,OAAO,MAAiC;AACrF,eAAa,MAAM;AAEnB,SAAO,aAAa,QAAQ,aAAa;;AAK3C,aAAY,MADM,YAAY,KAAK,YAAY,IAAI;AAGnD,QAAO,cAAc,SAAS,YAAY"}
@@ -1,7 +1,5 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { useId } from "react";
4
-
5
3
  //#region src/utils/use-safe-id.ts
6
4
  const UNSAFE_CHARS = /[^a-zA-Z0-9_-]/g;
7
5
  /**
@@ -14,9 +12,9 @@ const UNSAFE_CHARS = /[^a-zA-Z0-9_-]/g;
14
12
  */
15
13
  function useSafeId(prefix) {
16
14
  const raw = useId().replace(UNSAFE_CHARS, "");
17
- return prefix ? `${prefix}${raw}` : raw;
15
+ return prefix ? `${prefix}-${raw}` : raw;
18
16
  }
19
-
20
17
  //#endregion
21
18
  export { useSafeId };
19
+
22
20
  //# sourceMappingURL=use-safe-id.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-safe-id.js","names":[],"sources":["../../../src/utils/use-safe-id.ts"],"sourcesContent":["'use client';\n\nimport { useId } from 'react';\n\nconst UNSAFE_CHARS = /[^a-zA-Z0-9_-]/g;\n\n/**\n * Generate a CSS-safe identifier from React's `useId()`.\n *\n * `useId()` returns values like `:r0:` which contain colons — invalid\n * in CSS `<dashed-ident>` tokens (used by `anchor-name` / `position-anchor`).\n * This hook strips non-alphanumeric/underscore/hyphen characters and\n * optionally prepends a prefix.\n */\nexport function useSafeId(prefix?: string): string {\n const raw = useId().replace(UNSAFE_CHARS, '');\n return prefix ? `${prefix}${raw}` : raw;\n}\n"],"mappings":";;;;;AAIA,MAAM,eAAe;;;;;;;;;AAUrB,SAAgB,UAAU,QAAyB;CACjD,MAAM,MAAM,OAAO,CAAC,QAAQ,cAAc,GAAG;AAC7C,QAAO,SAAS,GAAG,SAAS,QAAQ"}
1
+ {"version":3,"file":"use-safe-id.js","names":[],"sources":["../../../src/utils/use-safe-id.ts"],"sourcesContent":["'use client';\n\nimport { useId } from 'react';\n\nconst UNSAFE_CHARS = /[^a-zA-Z0-9_-]/g;\n\n/**\n * Generate a CSS-safe identifier from React's `useId()`.\n *\n * `useId()` returns values like `:r0:` which contain colons — invalid\n * in CSS `<dashed-ident>` tokens (used by `anchor-name` / `position-anchor`).\n * This hook strips non-alphanumeric/underscore/hyphen characters and\n * optionally prepends a prefix.\n */\nexport function useSafeId(prefix?: string): string {\n const raw = useId().replace(UNSAFE_CHARS, '');\n return prefix ? `${prefix}-${raw}` : raw;\n}\n"],"mappings":";;;AAIA,MAAM,eAAe;;;;;;;;;AAUrB,SAAgB,UAAU,QAAyB;CACjD,MAAM,MAAM,OAAO,CAAC,QAAQ,cAAc,GAAG;AAC7C,QAAO,SAAS,GAAG,OAAO,GAAG,QAAQ"}
@@ -2,17 +2,12 @@
2
2
  var __defProp = Object.defineProperty;
3
3
  var __exportAll = (all, no_symbols) => {
4
4
  let target = {};
5
- for (var name in all) {
6
- __defProp(target, name, {
7
- get: all[name],
8
- enumerable: true
9
- });
10
- }
11
- if (!no_symbols) {
12
- __defProp(target, Symbol.toStringTag, { value: "Module" });
13
- }
5
+ for (var name in all) __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true
8
+ });
9
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
14
10
  return target;
15
11
  };
16
-
17
12
  //#endregion
18
- export { __exportAll };
13
+ export { __exportAll };
@@ -1,5 +1,4 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
-
3
2
  //#region ../icons/dist/react/default/captions-off.js
4
3
  const CaptionsOffIcon = (props) => /* @__PURE__ */ jsxs("svg", {
5
4
  xmlns: "http://www.w3.org/2000/svg",
@@ -7,7 +6,6 @@ const CaptionsOffIcon = (props) => /* @__PURE__ */ jsxs("svg", {
7
6
  height: 18,
8
7
  fill: "none",
9
8
  "aria-hidden": "true",
10
- viewBox: "0 0 18 18",
11
9
  ...props,
12
10
  children: [
13
11
  /* @__PURE__ */ jsx("rect", {
@@ -61,7 +59,7 @@ const CaptionsOffIcon = (props) => /* @__PURE__ */ jsxs("svg", {
61
59
  })
62
60
  ]
63
61
  });
64
-
65
62
  //#endregion
66
63
  export { CaptionsOffIcon as default };
64
+
67
65
  //# sourceMappingURL=captions-off.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"captions-off.js","names":[],"sources":["../../../../../../../icons/dist/react/default/captions-off.js"],"sourcesContent":["import { jsx, jsxs } from \"react/jsx-runtime\";\nconst CaptionsOffIcon = (props) => /* @__PURE__ */ jsxs(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 18, height: 18, fill: \"none\", \"aria-hidden\": \"true\", viewBox: \"0 0 18 18\", ...props, children: [\n /* @__PURE__ */ jsx(\"rect\", { width: 16, height: 12, x: 1, y: 3, stroke: \"currentColor\", strokeWidth: 2, rx: 3 }),\n /* @__PURE__ */ jsx(\"rect\", { width: 3, height: 2, x: 3, y: 8, fill: \"currentColor\", rx: 1 }),\n /* @__PURE__ */ jsx(\"rect\", { width: 2, height: 2, x: 13, y: 8, fill: \"currentColor\", rx: 1 }),\n /* @__PURE__ */ jsx(\"rect\", { width: 4, height: 2, x: 11, y: 11, fill: \"currentColor\", rx: 1 }),\n /* @__PURE__ */ jsx(\"rect\", { width: 5, height: 2, x: 7, y: 8, fill: \"currentColor\", rx: 1 }),\n /* @__PURE__ */ jsx(\"rect\", { width: 7, height: 2, x: 3, y: 11, fill: \"currentColor\", rx: 1 })\n] });\nexport default CaptionsOffIcon;\n"],"mappings":";;;AACA,MAAM,mBAAmB,UAA0B,qBAAK,OAAO;CAAE,OAAO;CAA8B,OAAO;CAAI,QAAQ;CAAI,MAAM;CAAQ,eAAe;CAAQ,SAAS;CAAa,GAAG;CAAO,UAAU;EAC1L,oBAAI,QAAQ;GAAE,OAAO;GAAI,QAAQ;GAAI,GAAG;GAAG,GAAG;GAAG,QAAQ;GAAgB,aAAa;GAAG,IAAI;GAAG,CAAC;EACjG,oBAAI,QAAQ;GAAE,OAAO;GAAG,QAAQ;GAAG,GAAG;GAAG,GAAG;GAAG,MAAM;GAAgB,IAAI;GAAG,CAAC;EAC7E,oBAAI,QAAQ;GAAE,OAAO;GAAG,QAAQ;GAAG,GAAG;GAAI,GAAG;GAAG,MAAM;GAAgB,IAAI;GAAG,CAAC;EAC9E,oBAAI,QAAQ;GAAE,OAAO;GAAG,QAAQ;GAAG,GAAG;GAAI,GAAG;GAAI,MAAM;GAAgB,IAAI;GAAG,CAAC;EAC/E,oBAAI,QAAQ;GAAE,OAAO;GAAG,QAAQ;GAAG,GAAG;GAAG,GAAG;GAAG,MAAM;GAAgB,IAAI;GAAG,CAAC;EAC7E,oBAAI,QAAQ;GAAE,OAAO;GAAG,QAAQ;GAAG,GAAG;GAAG,GAAG;GAAI,MAAM;GAAgB,IAAI;GAAG,CAAC;EAC/F;CAAE,CAAC"}
1
+ {"version":3,"file":"captions-off.js","names":[],"sources":["../../../../../../../icons/dist/react/default/captions-off.js"],"sourcesContent":["import { jsx, jsxs } from \"react/jsx-runtime\";\nconst CaptionsOffIcon = (props) => /* @__PURE__ */ jsxs(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 18, height: 18, fill: \"none\", \"aria-hidden\": \"true\", ...props, children: [\n /* @__PURE__ */ jsx(\"rect\", { width: 16, height: 12, x: 1, y: 3, stroke: \"currentColor\", strokeWidth: 2, rx: 3 }),\n /* @__PURE__ */ jsx(\"rect\", { width: 3, height: 2, x: 3, y: 8, fill: \"currentColor\", rx: 1 }),\n /* @__PURE__ */ jsx(\"rect\", { width: 2, height: 2, x: 13, y: 8, fill: \"currentColor\", rx: 1 }),\n /* @__PURE__ */ jsx(\"rect\", { width: 4, height: 2, x: 11, y: 11, fill: \"currentColor\", rx: 1 }),\n /* @__PURE__ */ jsx(\"rect\", { width: 5, height: 2, x: 7, y: 8, fill: \"currentColor\", rx: 1 }),\n /* @__PURE__ */ jsx(\"rect\", { width: 7, height: 2, x: 3, y: 11, fill: \"currentColor\", rx: 1 })\n] });\nexport default CaptionsOffIcon;\n"],"mappings":";;AACA,MAAM,mBAAmB,UAA0B,qBAAK,OAAO;CAAE,OAAO;CAA8B,OAAO;CAAI,QAAQ;CAAI,MAAM;CAAQ,eAAe;CAAQ,GAAG;CAAO,UAAU;EACpK,oBAAI,QAAQ;GAAE,OAAO;GAAI,QAAQ;GAAI,GAAG;GAAG,GAAG;GAAG,QAAQ;GAAgB,aAAa;GAAG,IAAI;GAAG,CAAC;EACjG,oBAAI,QAAQ;GAAE,OAAO;GAAG,QAAQ;GAAG,GAAG;GAAG,GAAG;GAAG,MAAM;GAAgB,IAAI;GAAG,CAAC;EAC7E,oBAAI,QAAQ;GAAE,OAAO;GAAG,QAAQ;GAAG,GAAG;GAAI,GAAG;GAAG,MAAM;GAAgB,IAAI;GAAG,CAAC;EAC9E,oBAAI,QAAQ;GAAE,OAAO;GAAG,QAAQ;GAAG,GAAG;GAAI,GAAG;GAAI,MAAM;GAAgB,IAAI;GAAG,CAAC;EAC/E,oBAAI,QAAQ;GAAE,OAAO;GAAG,QAAQ;GAAG,GAAG;GAAG,GAAG;GAAG,MAAM;GAAgB,IAAI;GAAG,CAAC;EAC7E,oBAAI,QAAQ;GAAE,OAAO;GAAG,QAAQ;GAAG,GAAG;GAAG,GAAG;GAAI,MAAM;GAAgB,IAAI;GAAG,CAAC;EAC/F;CAAE,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
-
3
2
  //#region ../icons/dist/react/default/captions-on.js
4
3
  const CaptionsOnIcon = (props) => /* @__PURE__ */ jsx("svg", {
5
4
  xmlns: "http://www.w3.org/2000/svg",
@@ -7,14 +6,13 @@ const CaptionsOnIcon = (props) => /* @__PURE__ */ jsx("svg", {
7
6
  height: 18,
8
7
  fill: "none",
9
8
  "aria-hidden": "true",
10
- viewBox: "0 0 18 18",
11
9
  ...props,
12
10
  children: /* @__PURE__ */ jsx("path", {
13
11
  fill: "currentColor",
14
12
  d: "M15 2a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3zM4 11a1 1 0 1 0 0 2h5a1 1 0 1 0 0-2zm8 0a1 1 0 1 0 0 2h2a1 1 0 1 0 0-2zM4 8a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2zm4 0a1 1 0 0 0 0 2h3a1 1 0 1 0 0-2zm6 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2"
15
13
  })
16
14
  });
17
-
18
15
  //#endregion
19
16
  export { CaptionsOnIcon as default };
17
+
20
18
  //# sourceMappingURL=captions-on.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"captions-on.js","names":[],"sources":["../../../../../../../icons/dist/react/default/captions-on.js"],"sourcesContent":["import { jsx } from \"react/jsx-runtime\";\nconst CaptionsOnIcon = (props) => /* @__PURE__ */ jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 18, height: 18, fill: \"none\", \"aria-hidden\": \"true\", viewBox: \"0 0 18 18\", ...props, children: /* @__PURE__ */ jsx(\"path\", { fill: \"currentColor\", d: \"M15 2a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3zM4 11a1 1 0 1 0 0 2h5a1 1 0 1 0 0-2zm8 0a1 1 0 1 0 0 2h2a1 1 0 1 0 0-2zM4 8a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2zm4 0a1 1 0 0 0 0 2h3a1 1 0 1 0 0-2zm6 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2\" }) });\nexport default CaptionsOnIcon;\n"],"mappings":";;;AACA,MAAM,kBAAkB,UAA0B,oBAAI,OAAO;CAAE,OAAO;CAA8B,OAAO;CAAI,QAAQ;CAAI,MAAM;CAAQ,eAAe;CAAQ,SAAS;CAAa,GAAG;CAAO,UAA0B,oBAAI,QAAQ;EAAE,MAAM;EAAgB,GAAG;EAAqP,CAAC;CAAE,CAAC"}
1
+ {"version":3,"file":"captions-on.js","names":[],"sources":["../../../../../../../icons/dist/react/default/captions-on.js"],"sourcesContent":["import { jsx } from \"react/jsx-runtime\";\nconst CaptionsOnIcon = (props) => /* @__PURE__ */ jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 18, height: 18, fill: \"none\", \"aria-hidden\": \"true\", ...props, children: /* @__PURE__ */ jsx(\"path\", { fill: \"currentColor\", d: \"M15 2a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3zM4 11a1 1 0 1 0 0 2h5a1 1 0 1 0 0-2zm8 0a1 1 0 1 0 0 2h2a1 1 0 1 0 0-2zM4 8a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2zm4 0a1 1 0 0 0 0 2h3a1 1 0 1 0 0-2zm6 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2\" }) });\nexport default CaptionsOnIcon;\n"],"mappings":";;AACA,MAAM,kBAAkB,UAA0B,oBAAI,OAAO;CAAE,OAAO;CAA8B,OAAO;CAAI,QAAQ;CAAI,MAAM;CAAQ,eAAe;CAAQ,GAAG;CAAO,UAA0B,oBAAI,QAAQ;EAAE,MAAM;EAAgB,GAAG;EAAqP,CAAC;CAAE,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ //#region ../icons/dist/react/default/cast-enter.js
3
+ const CastEnterIcon = (props) => /* @__PURE__ */ jsxs("svg", {
4
+ xmlns: "http://www.w3.org/2000/svg",
5
+ width: 18,
6
+ height: 18,
7
+ fill: "none",
8
+ "aria-hidden": "true",
9
+ ...props,
10
+ children: [
11
+ /* @__PURE__ */ jsx("path", {
12
+ fill: "currentColor",
13
+ d: "M.75 13.25c1.38 0 2.5 1.085 2.5 2.5V16H.5v-2.75z"
14
+ }),
15
+ /* @__PURE__ */ jsx("path", {
16
+ fill: "currentColor",
17
+ d: "M.75 10.25c3.04 0 5.5 2.46 5.5 5.5V16h-2v-.25c0-1.96-1.567-3.5-3.5-3.5H.5v-2z"
18
+ }),
19
+ /* @__PURE__ */ jsx("path", {
20
+ fill: "currentColor",
21
+ d: "M.75 7.25a8.5 8.5 0 0 1 8.5 8.5V16h-2v-.25c0-3.611-2.91-6.5-6.5-6.5H.5v-2z"
22
+ }),
23
+ /* @__PURE__ */ jsx("path", {
24
+ fill: "currentColor",
25
+ d: "M17.5 14.25c0 .963-.787 1.75-1.75 1.75h-5.5v-2h5.25V4h-13v2.25h-2v-2.5C.5 2.787 1.287 2 2.25 2h13.5c.963 0 1.75.787 1.75 1.75z"
26
+ })
27
+ ]
28
+ });
29
+ //#endregion
30
+ export { CastEnterIcon as default };
31
+
32
+ //# sourceMappingURL=cast-enter.js.map