@videojs/react 10.0.0-beta.27 → 10.0.0-beta.29

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 (865) hide show
  1. package/dist/default/__generated__/skins/default-video/styles/buttons.css +132 -18
  2. package/dist/default/__generated__/skins/default-video/styles/captions.css +22 -0
  3. package/dist/default/__generated__/skins/default-video/styles/container.css +121 -8
  4. package/dist/default/__generated__/skins/default-video/styles/controls.css +436 -21
  5. package/dist/default/__generated__/skins/default-video/styles/dialog.css +169 -0
  6. package/dist/default/__generated__/skins/default-video/styles/indicator.css +459 -0
  7. package/dist/default/__generated__/skins/default-video/styles/menus.css +254 -0
  8. package/dist/default/__generated__/skins/default-video/styles/overlays.css +26 -2
  9. package/dist/default/__generated__/skins/default-video/styles/popups.css +338 -12
  10. package/dist/default/__generated__/skins/default-video/styles/poster.css +4 -4
  11. package/dist/default/__generated__/skins/default-video/styles/sliders.css +355 -31
  12. package/dist/default/__generated__/skins/default-video/styles/styles.css +2455 -216
  13. package/dist/default/__generated__/skins/default-video/styles/theme.css +4 -19
  14. package/dist/default/__generated__/skins/default-video/styles/video.css +29 -0
  15. package/dist/default/__generated__/skins/minimal-video/styles/base.css +25 -0
  16. package/dist/default/__generated__/skins/minimal-video/styles/buttons.css +266 -0
  17. package/dist/default/__generated__/skins/minimal-video/styles/captions.css +22 -0
  18. package/dist/default/__generated__/skins/minimal-video/styles/container.css +158 -0
  19. package/dist/default/__generated__/skins/minimal-video/styles/controls.css +182 -0
  20. package/dist/default/__generated__/skins/minimal-video/styles/dialog.css +77 -0
  21. package/dist/default/__generated__/skins/minimal-video/styles/indicator.css +322 -0
  22. package/dist/default/__generated__/skins/minimal-video/styles/menus.css +254 -0
  23. package/dist/default/__generated__/skins/minimal-video/styles/overlays.css +35 -0
  24. package/dist/default/__generated__/skins/minimal-video/styles/popups.css +371 -0
  25. package/dist/default/__generated__/skins/minimal-video/styles/poster.css +47 -0
  26. package/dist/default/__generated__/skins/minimal-video/styles/sliders.css +436 -0
  27. package/dist/default/__generated__/skins/minimal-video/styles/styles.css +2246 -0
  28. package/dist/default/__generated__/skins/minimal-video/styles/theme.css +7 -0
  29. package/dist/default/__generated__/skins/minimal-video/styles/video.css +29 -0
  30. package/dist/default/i18n/context.js +0 -1
  31. package/dist/default/i18n/context.js.map +1 -1
  32. package/dist/default/i18n/create-i18n.js +0 -1
  33. package/dist/default/i18n/create-i18n.js.map +1 -1
  34. package/dist/default/i18n/index.js +2 -1
  35. package/dist/default/i18n/text.js +20 -0
  36. package/dist/default/i18n/text.js.map +1 -0
  37. package/dist/default/icons/dist/react/default/airplay-exit.js +3 -3
  38. package/dist/default/icons/dist/react/default/airplay-exit.js.map +1 -1
  39. package/dist/default/icons/dist/react/minimal/airplay-exit.js +3 -3
  40. package/dist/default/icons/dist/react/minimal/airplay-exit.js.map +1 -1
  41. package/dist/default/index.js +2 -1
  42. package/dist/default/media/audio.js +0 -1
  43. package/dist/default/media/audio.js.map +1 -1
  44. package/dist/default/media/hls-background-video/media.js +18 -3
  45. package/dist/default/media/hls-background-video/media.js.map +1 -1
  46. package/dist/default/media/video.js +0 -1
  47. package/dist/default/media/video.js.map +1 -1
  48. package/dist/default/player/container.js +0 -1
  49. package/dist/default/player/container.js.map +1 -1
  50. package/dist/default/player/context.js +0 -1
  51. package/dist/default/player/context.js.map +1 -1
  52. package/dist/default/player/create-player.js +0 -1
  53. package/dist/default/player/create-player.js.map +1 -1
  54. package/dist/default/player/popup-group-context.js +0 -1
  55. package/dist/default/player/popup-group-context.js.map +1 -1
  56. package/dist/default/presets/audio/minimal-skin.css +117 -118
  57. package/dist/default/presets/audio/minimal-skin.js +2 -1
  58. package/dist/default/presets/audio/minimal-skin.js.map +1 -1
  59. package/dist/default/presets/audio/minimal-skin.tailwind.js +2 -1
  60. package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
  61. package/dist/default/presets/audio/skin.css +95 -99
  62. package/dist/default/presets/audio/skin.js +2 -1
  63. package/dist/default/presets/audio/skin.js.map +1 -1
  64. package/dist/default/presets/audio/skin.tailwind.js +2 -1
  65. package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
  66. package/dist/default/presets/background/skin.js +1 -0
  67. package/dist/default/presets/background/skin.js.map +1 -1
  68. package/dist/default/presets/live-audio/minimal-skin.css +117 -118
  69. package/dist/default/presets/live-audio/minimal-skin.js +1 -0
  70. package/dist/default/presets/live-audio/minimal-skin.js.map +1 -1
  71. package/dist/default/presets/live-audio/minimal-skin.tailwind.js +1 -0
  72. package/dist/default/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  73. package/dist/default/presets/live-audio/skin.css +95 -99
  74. package/dist/default/presets/live-audio/skin.js +1 -0
  75. package/dist/default/presets/live-audio/skin.js.map +1 -1
  76. package/dist/default/presets/live-audio/skin.tailwind.js +1 -0
  77. package/dist/default/presets/live-audio/skin.tailwind.js.map +1 -1
  78. package/dist/default/presets/live-video/minimal-skin.css +158 -137
  79. package/dist/default/presets/live-video/minimal-skin.js +4 -8
  80. package/dist/default/presets/live-video/minimal-skin.js.map +1 -1
  81. package/dist/default/presets/live-video/minimal-skin.tailwind.js +6 -8
  82. package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  83. package/dist/default/presets/live-video/skin.css +120 -106
  84. package/dist/default/presets/live-video/skin.js +4 -8
  85. package/dist/default/presets/live-video/skin.js.map +1 -1
  86. package/dist/default/presets/live-video/skin.tailwind.js +8 -10
  87. package/dist/default/presets/live-video/skin.tailwind.js.map +1 -1
  88. package/dist/default/presets/video/minimal-skin.css +158 -137
  89. package/dist/default/presets/video/minimal-skin.js +4 -8
  90. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  91. package/dist/default/presets/video/minimal-skin.tailwind.js +6 -8
  92. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  93. package/dist/default/presets/video/skin.css +120 -106
  94. package/dist/default/presets/video/skin.js +4 -8
  95. package/dist/default/presets/video/skin.js.map +1 -1
  96. package/dist/default/presets/video/skin.tailwind.js +7 -9
  97. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  98. package/dist/default/skins/dist/default/default/tailwind/components/button.js +3 -1
  99. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  100. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +8 -1
  101. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  102. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +13 -13
  103. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  104. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
  105. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
  106. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +3 -3
  107. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  108. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
  109. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  110. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
  111. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  112. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
  113. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
  114. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -6
  115. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  116. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +4 -4
  117. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  118. package/dist/default/ui/airplay-button/airplay-button.js +0 -1
  119. package/dist/default/ui/airplay-button/airplay-button.js.map +1 -1
  120. package/dist/default/ui/alert-dialog/alert-dialog-close.js +0 -1
  121. package/dist/default/ui/alert-dialog/alert-dialog-close.js.map +1 -1
  122. package/dist/default/ui/alert-dialog/alert-dialog-description.js +0 -1
  123. package/dist/default/ui/alert-dialog/alert-dialog-description.js.map +1 -1
  124. package/dist/default/ui/alert-dialog/alert-dialog-popup.js +0 -1
  125. package/dist/default/ui/alert-dialog/alert-dialog-popup.js.map +1 -1
  126. package/dist/default/ui/alert-dialog/alert-dialog-root.js +0 -1
  127. package/dist/default/ui/alert-dialog/alert-dialog-root.js.map +1 -1
  128. package/dist/default/ui/alert-dialog/alert-dialog-title.js +0 -1
  129. package/dist/default/ui/alert-dialog/alert-dialog-title.js.map +1 -1
  130. package/dist/default/ui/alert-dialog/context.js +0 -1
  131. package/dist/default/ui/alert-dialog/context.js.map +1 -1
  132. package/dist/default/ui/audio-track/use-audio-track-options.js +0 -1
  133. package/dist/default/ui/audio-track/use-audio-track-options.js.map +1 -1
  134. package/dist/default/ui/audio-track-radio-group/audio-track-radio-group.js +0 -1
  135. package/dist/default/ui/audio-track-radio-group/audio-track-radio-group.js.map +1 -1
  136. package/dist/default/ui/buffering-indicator/buffering-indicator.js +0 -1
  137. package/dist/default/ui/buffering-indicator/buffering-indicator.js.map +1 -1
  138. package/dist/default/ui/captions-button/captions-button.js +0 -1
  139. package/dist/default/ui/captions-button/captions-button.js.map +1 -1
  140. package/dist/default/ui/captions-radio-group/captions-radio-group.js +0 -1
  141. package/dist/default/ui/captions-radio-group/captions-radio-group.js.map +1 -1
  142. package/dist/default/ui/captions-radio-group/use-captions-options.js +0 -1
  143. package/dist/default/ui/captions-radio-group/use-captions-options.js.map +1 -1
  144. package/dist/default/ui/cast-button/cast-button.js +0 -1
  145. package/dist/default/ui/cast-button/cast-button.js.map +1 -1
  146. package/dist/default/ui/controls/context.js +0 -1
  147. package/dist/default/ui/controls/context.js.map +1 -1
  148. package/dist/default/ui/controls/controls-group.js +0 -1
  149. package/dist/default/ui/controls/controls-group.js.map +1 -1
  150. package/dist/default/ui/controls/controls-root.js +0 -1
  151. package/dist/default/ui/controls/controls-root.js.map +1 -1
  152. package/dist/default/ui/create-context-part.js +0 -1
  153. package/dist/default/ui/create-context-part.js.map +1 -1
  154. package/dist/default/ui/create-media-button.js +0 -1
  155. package/dist/default/ui/create-media-button.js.map +1 -1
  156. package/dist/default/ui/error-dialog/context.js +0 -1
  157. package/dist/default/ui/error-dialog/context.js.map +1 -1
  158. package/dist/default/ui/error-dialog/error-dialog-close.js +0 -1
  159. package/dist/default/ui/error-dialog/error-dialog-close.js.map +1 -1
  160. package/dist/default/ui/error-dialog/error-dialog-description.js +0 -1
  161. package/dist/default/ui/error-dialog/error-dialog-description.js.map +1 -1
  162. package/dist/default/ui/error-dialog/error-dialog-root.js +0 -1
  163. package/dist/default/ui/error-dialog/error-dialog-root.js.map +1 -1
  164. package/dist/default/ui/error-dialog/error-dialog-title.js +0 -1
  165. package/dist/default/ui/error-dialog/error-dialog-title.js.map +1 -1
  166. package/dist/default/ui/fullscreen-button/fullscreen-button.js +0 -1
  167. package/dist/default/ui/fullscreen-button/fullscreen-button.js.map +1 -1
  168. package/dist/default/ui/gesture/gesture.js +0 -1
  169. package/dist/default/ui/gesture/gesture.js.map +1 -1
  170. package/dist/default/ui/gesture/use-doubletap-gesture.js +0 -1
  171. package/dist/default/ui/gesture/use-doubletap-gesture.js.map +1 -1
  172. package/dist/default/ui/gesture/use-tap-gesture.js +0 -1
  173. package/dist/default/ui/gesture/use-tap-gesture.js.map +1 -1
  174. package/dist/default/ui/hooks/create-radio-options-hook.js +0 -1
  175. package/dist/default/ui/hooks/create-radio-options-hook.js.map +1 -1
  176. package/dist/default/ui/hooks/use-button.js +0 -1
  177. package/dist/default/ui/hooks/use-button.js.map +1 -1
  178. package/dist/default/ui/hooks/use-positioned-state.js +0 -1
  179. package/dist/default/ui/hooks/use-positioned-state.js.map +1 -1
  180. package/dist/default/ui/hooks/use-slider.js +0 -1
  181. package/dist/default/ui/hooks/use-slider.js.map +1 -1
  182. package/dist/default/ui/hotkey/hotkey.js +0 -1
  183. package/dist/default/ui/hotkey/hotkey.js.map +1 -1
  184. package/dist/default/ui/hotkey/use-hotkey-shortcut.js +0 -1
  185. package/dist/default/ui/hotkey/use-hotkey-shortcut.js.map +1 -1
  186. package/dist/default/ui/hotkey/use-hotkey.js +0 -1
  187. package/dist/default/ui/hotkey/use-hotkey.js.map +1 -1
  188. package/dist/default/ui/input-indicator/use-indicator-visibility.js +0 -1
  189. package/dist/default/ui/input-indicator/use-indicator-visibility.js.map +1 -1
  190. package/dist/default/ui/input-indicator/use-input-action-subscription.js +0 -1
  191. package/dist/default/ui/input-indicator/use-input-action-subscription.js.map +1 -1
  192. package/dist/default/ui/input-indicator/use-input-indicator-root.js +0 -1
  193. package/dist/default/ui/input-indicator/use-input-indicator-root.js.map +1 -1
  194. package/dist/default/ui/input-indicator/use-rendered-indicator-state.js +0 -1
  195. package/dist/default/ui/input-indicator/use-rendered-indicator-state.js.map +1 -1
  196. package/dist/default/ui/live-button/live-button.js +0 -1
  197. package/dist/default/ui/live-button/live-button.js.map +1 -1
  198. package/dist/default/ui/menu/context.js +6 -2
  199. package/dist/default/ui/menu/context.js.map +1 -1
  200. package/dist/default/ui/menu/menu-checkbox-item.js +0 -1
  201. package/dist/default/ui/menu/menu-checkbox-item.js.map +1 -1
  202. package/dist/default/ui/menu/menu-content.js +0 -1
  203. package/dist/default/ui/menu/menu-content.js.map +1 -1
  204. package/dist/default/ui/menu/menu-group-label.js +0 -1
  205. package/dist/default/ui/menu/menu-group-label.js.map +1 -1
  206. package/dist/default/ui/menu/menu-group.js +0 -1
  207. package/dist/default/ui/menu/menu-group.js.map +1 -1
  208. package/dist/default/ui/menu/menu-item-indicator.js +3 -3
  209. package/dist/default/ui/menu/menu-item-indicator.js.map +1 -1
  210. package/dist/default/ui/menu/menu-item.js +0 -1
  211. package/dist/default/ui/menu/menu-item.js.map +1 -1
  212. package/dist/default/ui/menu/menu-radio-group.js +0 -1
  213. package/dist/default/ui/menu/menu-radio-group.js.map +1 -1
  214. package/dist/default/ui/menu/menu-radio-item.js +19 -16
  215. package/dist/default/ui/menu/menu-radio-item.js.map +1 -1
  216. package/dist/default/ui/menu/menu-root.js +5 -7
  217. package/dist/default/ui/menu/menu-root.js.map +1 -1
  218. package/dist/default/ui/menu/menu-separator.js +0 -1
  219. package/dist/default/ui/menu/menu-separator.js.map +1 -1
  220. package/dist/default/ui/menu/menu-trigger.js +26 -12
  221. package/dist/default/ui/menu/menu-trigger.js.map +1 -1
  222. package/dist/default/ui/menu/use-menu-group.js +0 -1
  223. package/dist/default/ui/menu/use-menu-group.js.map +1 -1
  224. package/dist/default/ui/mute-button/mute-button.js +0 -1
  225. package/dist/default/ui/mute-button/mute-button.js.map +1 -1
  226. package/dist/default/ui/pip-button/pip-button.js +0 -1
  227. package/dist/default/ui/pip-button/pip-button.js.map +1 -1
  228. package/dist/default/ui/play-button/play-button.js +0 -1
  229. package/dist/default/ui/play-button/play-button.js.map +1 -1
  230. package/dist/default/ui/playback-rate/use-playback-rate-options.js +0 -1
  231. package/dist/default/ui/playback-rate/use-playback-rate-options.js.map +1 -1
  232. package/dist/default/ui/playback-rate-button/playback-rate-button.js +0 -1
  233. package/dist/default/ui/playback-rate-button/playback-rate-button.js.map +1 -1
  234. package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group.js +0 -1
  235. package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group.js.map +1 -1
  236. package/dist/default/ui/popover/context.js +0 -1
  237. package/dist/default/ui/popover/context.js.map +1 -1
  238. package/dist/default/ui/popover/popover-arrow.js +0 -1
  239. package/dist/default/ui/popover/popover-arrow.js.map +1 -1
  240. package/dist/default/ui/popover/popover-popup.js +0 -1
  241. package/dist/default/ui/popover/popover-popup.js.map +1 -1
  242. package/dist/default/ui/popover/popover-root.js +0 -1
  243. package/dist/default/ui/popover/popover-root.js.map +1 -1
  244. package/dist/default/ui/popover/popover-trigger.js +0 -1
  245. package/dist/default/ui/popover/popover-trigger.js.map +1 -1
  246. package/dist/default/ui/popover/use-popup-position.js +0 -1
  247. package/dist/default/ui/popover/use-popup-position.js.map +1 -1
  248. package/dist/default/ui/poster/poster.js +64 -18
  249. package/dist/default/ui/poster/poster.js.map +1 -1
  250. package/dist/default/ui/quality/use-quality-options.js +0 -1
  251. package/dist/default/ui/quality/use-quality-options.js.map +1 -1
  252. package/dist/default/ui/quality-radio-group/quality-radio-group.js +0 -1
  253. package/dist/default/ui/quality-radio-group/quality-radio-group.js.map +1 -1
  254. package/dist/default/ui/seek-button/seek-button.js +0 -1
  255. package/dist/default/ui/seek-button/seek-button.js.map +1 -1
  256. package/dist/default/ui/seek-indicator/context.js +0 -1
  257. package/dist/default/ui/seek-indicator/context.js.map +1 -1
  258. package/dist/default/ui/seek-indicator/seek-indicator-root.js +0 -1
  259. package/dist/default/ui/seek-indicator/seek-indicator-root.js.map +1 -1
  260. package/dist/default/ui/seek-indicator/seek-indicator-value.js +0 -1
  261. package/dist/default/ui/seek-indicator/seek-indicator-value.js.map +1 -1
  262. package/dist/default/ui/slider/context.js +0 -1
  263. package/dist/default/ui/slider/context.js.map +1 -1
  264. package/dist/default/ui/slider/slider-buffer.js +0 -1
  265. package/dist/default/ui/slider/slider-buffer.js.map +1 -1
  266. package/dist/default/ui/slider/slider-fill.js +0 -1
  267. package/dist/default/ui/slider/slider-fill.js.map +1 -1
  268. package/dist/default/ui/slider/slider-preview.js +0 -1
  269. package/dist/default/ui/slider/slider-preview.js.map +1 -1
  270. package/dist/default/ui/slider/slider-root.js +0 -1
  271. package/dist/default/ui/slider/slider-root.js.map +1 -1
  272. package/dist/default/ui/slider/slider-thumb.js +0 -1
  273. package/dist/default/ui/slider/slider-thumb.js.map +1 -1
  274. package/dist/default/ui/slider/slider-thumbnail.js +0 -1
  275. package/dist/default/ui/slider/slider-thumbnail.js.map +1 -1
  276. package/dist/default/ui/slider/slider-track.js +0 -1
  277. package/dist/default/ui/slider/slider-track.js.map +1 -1
  278. package/dist/default/ui/slider/slider-value.js +0 -1
  279. package/dist/default/ui/slider/slider-value.js.map +1 -1
  280. package/dist/default/ui/status-announcer/status-announcer.js +0 -1
  281. package/dist/default/ui/status-announcer/status-announcer.js.map +1 -1
  282. package/dist/default/ui/status-indicator/context.js +0 -1
  283. package/dist/default/ui/status-indicator/context.js.map +1 -1
  284. package/dist/default/ui/status-indicator/status-indicator-root.js +0 -1
  285. package/dist/default/ui/status-indicator/status-indicator-root.js.map +1 -1
  286. package/dist/default/ui/status-indicator/status-indicator-value.js +0 -1
  287. package/dist/default/ui/status-indicator/status-indicator-value.js.map +1 -1
  288. package/dist/default/ui/thumbnail/thumbnail.js +0 -1
  289. package/dist/default/ui/thumbnail/thumbnail.js.map +1 -1
  290. package/dist/default/ui/time/time-group.js +0 -1
  291. package/dist/default/ui/time/time-group.js.map +1 -1
  292. package/dist/default/ui/time/time-separator.js +0 -1
  293. package/dist/default/ui/time/time-separator.js.map +1 -1
  294. package/dist/default/ui/time/time-value.js +0 -1
  295. package/dist/default/ui/time/time-value.js.map +1 -1
  296. package/dist/default/ui/time-slider/time-slider-chapters/slider-segments.js +0 -1
  297. package/dist/default/ui/time-slider/time-slider-chapters/slider-segments.js.map +1 -1
  298. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js +0 -1
  299. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js.map +1 -1
  300. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapters.js +0 -1
  301. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapters.js.map +1 -1
  302. package/dist/default/ui/time-slider/time-slider-root.js +0 -1
  303. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
  304. package/dist/default/ui/tooltip/context.js +0 -1
  305. package/dist/default/ui/tooltip/context.js.map +1 -1
  306. package/dist/default/ui/tooltip/group-context.js +0 -1
  307. package/dist/default/ui/tooltip/group-context.js.map +1 -1
  308. package/dist/default/ui/tooltip/tooltip-arrow.js +0 -1
  309. package/dist/default/ui/tooltip/tooltip-arrow.js.map +1 -1
  310. package/dist/default/ui/tooltip/tooltip-label.js +0 -1
  311. package/dist/default/ui/tooltip/tooltip-label.js.map +1 -1
  312. package/dist/default/ui/tooltip/tooltip-popup.js +0 -1
  313. package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
  314. package/dist/default/ui/tooltip/tooltip-provider.js +0 -1
  315. package/dist/default/ui/tooltip/tooltip-provider.js.map +1 -1
  316. package/dist/default/ui/tooltip/tooltip-root.js +0 -1
  317. package/dist/default/ui/tooltip/tooltip-root.js.map +1 -1
  318. package/dist/default/ui/tooltip/tooltip-shortcut.js +0 -1
  319. package/dist/default/ui/tooltip/tooltip-shortcut.js.map +1 -1
  320. package/dist/default/ui/tooltip/tooltip-trigger.js +0 -1
  321. package/dist/default/ui/tooltip/tooltip-trigger.js.map +1 -1
  322. package/dist/default/ui/volume-indicator/context.js +0 -1
  323. package/dist/default/ui/volume-indicator/context.js.map +1 -1
  324. package/dist/default/ui/volume-indicator/volume-indicator-fill.js +0 -1
  325. package/dist/default/ui/volume-indicator/volume-indicator-fill.js.map +1 -1
  326. package/dist/default/ui/volume-indicator/volume-indicator-root.js +0 -1
  327. package/dist/default/ui/volume-indicator/volume-indicator-root.js.map +1 -1
  328. package/dist/default/ui/volume-indicator/volume-indicator-value.js +0 -1
  329. package/dist/default/ui/volume-indicator/volume-indicator-value.js.map +1 -1
  330. package/dist/default/ui/volume-slider/volume-slider-root.js +0 -1
  331. package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -1
  332. package/dist/default/utils/merge-props.js +0 -1
  333. package/dist/default/utils/merge-props.js.map +1 -1
  334. package/dist/default/utils/use-attach-iframe.js +0 -1
  335. package/dist/default/utils/use-attach-iframe.js.map +1 -1
  336. package/dist/default/utils/use-attach-media.js +0 -1
  337. package/dist/default/utils/use-attach-media.js.map +1 -1
  338. package/dist/default/utils/use-composed-refs.js +0 -1
  339. package/dist/default/utils/use-composed-refs.js.map +1 -1
  340. package/dist/default/utils/use-destroy.js +0 -1
  341. package/dist/default/utils/use-destroy.js.map +1 -1
  342. package/dist/default/utils/use-force-render.js +0 -1
  343. package/dist/default/utils/use-force-render.js.map +1 -1
  344. package/dist/default/utils/use-latest-ref.js +0 -1
  345. package/dist/default/utils/use-latest-ref.js.map +1 -1
  346. package/dist/default/utils/use-media-component.js +0 -1
  347. package/dist/default/utils/use-media-component.js.map +1 -1
  348. package/dist/default/utils/use-media-instance.js +0 -1
  349. package/dist/default/utils/use-media-instance.js.map +1 -1
  350. package/dist/default/utils/use-render.js +2 -9
  351. package/dist/default/utils/use-render.js.map +1 -1
  352. package/dist/default/utils/use-safe-id.js +0 -1
  353. package/dist/default/utils/use-safe-id.js.map +1 -1
  354. package/dist/dev/__generated__/skins/default-video/styles/buttons.css +132 -18
  355. package/dist/dev/__generated__/skins/default-video/styles/captions.css +22 -0
  356. package/dist/dev/__generated__/skins/default-video/styles/container.css +121 -8
  357. package/dist/dev/__generated__/skins/default-video/styles/controls.css +436 -21
  358. package/dist/dev/__generated__/skins/default-video/styles/dialog.css +169 -0
  359. package/dist/dev/__generated__/skins/default-video/styles/indicator.css +459 -0
  360. package/dist/dev/__generated__/skins/default-video/styles/menus.css +254 -0
  361. package/dist/dev/__generated__/skins/default-video/styles/overlays.css +26 -2
  362. package/dist/dev/__generated__/skins/default-video/styles/popups.css +338 -12
  363. package/dist/dev/__generated__/skins/default-video/styles/poster.css +4 -4
  364. package/dist/dev/__generated__/skins/default-video/styles/sliders.css +355 -31
  365. package/dist/dev/__generated__/skins/default-video/styles/styles.css +2455 -216
  366. package/dist/dev/__generated__/skins/default-video/styles/theme.css +4 -19
  367. package/dist/dev/__generated__/skins/default-video/styles/video.css +29 -0
  368. package/dist/dev/__generated__/skins/minimal-video/styles/base.css +25 -0
  369. package/dist/dev/__generated__/skins/minimal-video/styles/buttons.css +266 -0
  370. package/dist/dev/__generated__/skins/minimal-video/styles/captions.css +22 -0
  371. package/dist/dev/__generated__/skins/minimal-video/styles/container.css +158 -0
  372. package/dist/dev/__generated__/skins/minimal-video/styles/controls.css +182 -0
  373. package/dist/dev/__generated__/skins/minimal-video/styles/dialog.css +77 -0
  374. package/dist/dev/__generated__/skins/minimal-video/styles/indicator.css +322 -0
  375. package/dist/dev/__generated__/skins/minimal-video/styles/menus.css +254 -0
  376. package/dist/dev/__generated__/skins/minimal-video/styles/overlays.css +35 -0
  377. package/dist/dev/__generated__/skins/minimal-video/styles/popups.css +371 -0
  378. package/dist/dev/__generated__/skins/minimal-video/styles/poster.css +47 -0
  379. package/dist/dev/__generated__/skins/minimal-video/styles/sliders.css +436 -0
  380. package/dist/dev/__generated__/skins/minimal-video/styles/styles.css +2246 -0
  381. package/dist/dev/__generated__/skins/minimal-video/styles/theme.css +7 -0
  382. package/dist/dev/__generated__/skins/minimal-video/styles/video.css +29 -0
  383. package/dist/dev/i18n/context.d.ts.map +1 -1
  384. package/dist/dev/i18n/context.js +0 -1
  385. package/dist/dev/i18n/context.js.map +1 -1
  386. package/dist/dev/i18n/create-i18n.d.ts.map +1 -1
  387. package/dist/dev/i18n/create-i18n.js +0 -1
  388. package/dist/dev/i18n/create-i18n.js.map +1 -1
  389. package/dist/dev/i18n/index.d.ts +2 -1
  390. package/dist/dev/i18n/index.js +2 -1
  391. package/dist/dev/i18n/text.d.ts +11 -0
  392. package/dist/dev/i18n/text.d.ts.map +1 -0
  393. package/dist/dev/i18n/text.js +20 -0
  394. package/dist/dev/i18n/text.js.map +1 -0
  395. package/dist/dev/icons/dist/react/default/airplay-exit.js +3 -3
  396. package/dist/dev/icons/dist/react/default/airplay-exit.js.map +1 -1
  397. package/dist/dev/icons/dist/react/minimal/airplay-exit.js +3 -3
  398. package/dist/dev/icons/dist/react/minimal/airplay-exit.js.map +1 -1
  399. package/dist/dev/icons/index.d.ts +6 -1
  400. package/dist/dev/icons/index.d.ts.map +1 -0
  401. package/dist/dev/icons/minimal/index.d.ts +6 -1
  402. package/dist/dev/icons/minimal/index.d.ts.map +1 -0
  403. package/dist/dev/index.d.ts +3 -2
  404. package/dist/dev/index.js +2 -1
  405. package/dist/dev/media/audio.d.ts.map +1 -1
  406. package/dist/dev/media/audio.js +0 -1
  407. package/dist/dev/media/audio.js.map +1 -1
  408. package/dist/dev/media/hls-background-video/media.d.ts +8 -0
  409. package/dist/dev/media/hls-background-video/media.d.ts.map +1 -1
  410. package/dist/dev/media/hls-background-video/media.js +18 -3
  411. package/dist/dev/media/hls-background-video/media.js.map +1 -1
  412. package/dist/dev/media/video.d.ts.map +1 -1
  413. package/dist/dev/media/video.js +0 -1
  414. package/dist/dev/media/video.js.map +1 -1
  415. package/dist/dev/player/container.d.ts.map +1 -1
  416. package/dist/dev/player/container.js +0 -1
  417. package/dist/dev/player/container.js.map +1 -1
  418. package/dist/dev/player/context.d.ts.map +1 -1
  419. package/dist/dev/player/context.js +0 -1
  420. package/dist/dev/player/context.js.map +1 -1
  421. package/dist/dev/player/create-player.d.ts.map +1 -1
  422. package/dist/dev/player/create-player.js +0 -1
  423. package/dist/dev/player/create-player.js.map +1 -1
  424. package/dist/dev/player/popup-group-context.js +0 -1
  425. package/dist/dev/player/popup-group-context.js.map +1 -1
  426. package/dist/dev/presets/audio/minimal-skin.css +117 -118
  427. package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
  428. package/dist/dev/presets/audio/minimal-skin.js +2 -1
  429. package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
  430. package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
  431. package/dist/dev/presets/audio/minimal-skin.tailwind.js +2 -1
  432. package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
  433. package/dist/dev/presets/audio/player.d.ts +2 -2
  434. package/dist/dev/presets/audio/skin.css +95 -99
  435. package/dist/dev/presets/audio/skin.d.ts.map +1 -1
  436. package/dist/dev/presets/audio/skin.js +2 -1
  437. package/dist/dev/presets/audio/skin.js.map +1 -1
  438. package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
  439. package/dist/dev/presets/audio/skin.tailwind.js +2 -1
  440. package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
  441. package/dist/dev/presets/background/skin.d.ts.map +1 -1
  442. package/dist/dev/presets/background/skin.js +1 -0
  443. package/dist/dev/presets/background/skin.js.map +1 -1
  444. package/dist/dev/presets/live-audio/minimal-skin.css +117 -118
  445. package/dist/dev/presets/live-audio/minimal-skin.d.ts.map +1 -1
  446. package/dist/dev/presets/live-audio/minimal-skin.js +1 -0
  447. package/dist/dev/presets/live-audio/minimal-skin.js.map +1 -1
  448. package/dist/dev/presets/live-audio/minimal-skin.tailwind.d.ts.map +1 -1
  449. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js +1 -0
  450. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  451. package/dist/dev/presets/live-audio/player.d.ts +2 -2
  452. package/dist/dev/presets/live-audio/skin.css +95 -99
  453. package/dist/dev/presets/live-audio/skin.d.ts.map +1 -1
  454. package/dist/dev/presets/live-audio/skin.js +1 -0
  455. package/dist/dev/presets/live-audio/skin.js.map +1 -1
  456. package/dist/dev/presets/live-audio/skin.tailwind.d.ts.map +1 -1
  457. package/dist/dev/presets/live-audio/skin.tailwind.js +1 -0
  458. package/dist/dev/presets/live-audio/skin.tailwind.js.map +1 -1
  459. package/dist/dev/presets/live-video/minimal-skin.css +158 -137
  460. package/dist/dev/presets/live-video/minimal-skin.js +4 -8
  461. package/dist/dev/presets/live-video/minimal-skin.js.map +1 -1
  462. package/dist/dev/presets/live-video/minimal-skin.tailwind.js +6 -8
  463. package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  464. package/dist/dev/presets/live-video/player.d.ts +2 -2
  465. package/dist/dev/presets/live-video/skin.css +120 -106
  466. package/dist/dev/presets/live-video/skin.js +4 -8
  467. package/dist/dev/presets/live-video/skin.js.map +1 -1
  468. package/dist/dev/presets/live-video/skin.tailwind.js +8 -10
  469. package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -1
  470. package/dist/dev/presets/types.d.ts +15 -2
  471. package/dist/dev/presets/types.d.ts.map +1 -1
  472. package/dist/dev/presets/video/minimal-skin.css +158 -137
  473. package/dist/dev/presets/video/minimal-skin.js +4 -8
  474. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  475. package/dist/dev/presets/video/minimal-skin.tailwind.js +6 -8
  476. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  477. package/dist/dev/presets/video/player.d.ts +2 -2
  478. package/dist/dev/presets/video/skin.css +120 -106
  479. package/dist/dev/presets/video/skin.js +4 -8
  480. package/dist/dev/presets/video/skin.js.map +1 -1
  481. package/dist/dev/presets/video/skin.tailwind.js +7 -9
  482. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  483. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +3 -1
  484. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  485. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +8 -1
  486. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  487. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +13 -13
  488. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  489. package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
  490. package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
  491. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +3 -3
  492. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  493. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
  494. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  495. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
  496. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  497. package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
  498. package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
  499. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -6
  500. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  501. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +4 -4
  502. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  503. package/dist/dev/ui/airplay-button/airplay-button.d.ts.map +1 -1
  504. package/dist/dev/ui/airplay-button/airplay-button.js +0 -1
  505. package/dist/dev/ui/airplay-button/airplay-button.js.map +1 -1
  506. package/dist/dev/ui/alert-dialog/alert-dialog-close.d.ts.map +1 -1
  507. package/dist/dev/ui/alert-dialog/alert-dialog-close.js +0 -1
  508. package/dist/dev/ui/alert-dialog/alert-dialog-close.js.map +1 -1
  509. package/dist/dev/ui/alert-dialog/alert-dialog-description.d.ts.map +1 -1
  510. package/dist/dev/ui/alert-dialog/alert-dialog-description.js +0 -1
  511. package/dist/dev/ui/alert-dialog/alert-dialog-description.js.map +1 -1
  512. package/dist/dev/ui/alert-dialog/alert-dialog-popup.d.ts.map +1 -1
  513. package/dist/dev/ui/alert-dialog/alert-dialog-popup.js +0 -1
  514. package/dist/dev/ui/alert-dialog/alert-dialog-popup.js.map +1 -1
  515. package/dist/dev/ui/alert-dialog/alert-dialog-root.d.ts.map +1 -1
  516. package/dist/dev/ui/alert-dialog/alert-dialog-root.js +0 -1
  517. package/dist/dev/ui/alert-dialog/alert-dialog-root.js.map +1 -1
  518. package/dist/dev/ui/alert-dialog/alert-dialog-title.d.ts.map +1 -1
  519. package/dist/dev/ui/alert-dialog/alert-dialog-title.js +0 -1
  520. package/dist/dev/ui/alert-dialog/alert-dialog-title.js.map +1 -1
  521. package/dist/dev/ui/alert-dialog/context.d.ts.map +1 -1
  522. package/dist/dev/ui/alert-dialog/context.js +0 -1
  523. package/dist/dev/ui/alert-dialog/context.js.map +1 -1
  524. package/dist/dev/ui/audio-track/use-audio-track-options.d.ts.map +1 -1
  525. package/dist/dev/ui/audio-track/use-audio-track-options.js +0 -1
  526. package/dist/dev/ui/audio-track/use-audio-track-options.js.map +1 -1
  527. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.d.ts.map +1 -1
  528. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.js +0 -1
  529. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.js.map +1 -1
  530. package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts.map +1 -1
  531. package/dist/dev/ui/buffering-indicator/buffering-indicator.js +0 -1
  532. package/dist/dev/ui/buffering-indicator/buffering-indicator.js.map +1 -1
  533. package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -1
  534. package/dist/dev/ui/captions-button/captions-button.js +0 -1
  535. package/dist/dev/ui/captions-button/captions-button.js.map +1 -1
  536. package/dist/dev/ui/captions-radio-group/captions-radio-group.d.ts.map +1 -1
  537. package/dist/dev/ui/captions-radio-group/captions-radio-group.js +0 -1
  538. package/dist/dev/ui/captions-radio-group/captions-radio-group.js.map +1 -1
  539. package/dist/dev/ui/captions-radio-group/use-captions-options.d.ts.map +1 -1
  540. package/dist/dev/ui/captions-radio-group/use-captions-options.js +0 -1
  541. package/dist/dev/ui/captions-radio-group/use-captions-options.js.map +1 -1
  542. package/dist/dev/ui/cast-button/cast-button.d.ts.map +1 -1
  543. package/dist/dev/ui/cast-button/cast-button.js +0 -1
  544. package/dist/dev/ui/cast-button/cast-button.js.map +1 -1
  545. package/dist/dev/ui/controls/context.js +0 -1
  546. package/dist/dev/ui/controls/context.js.map +1 -1
  547. package/dist/dev/ui/controls/controls-group.d.ts.map +1 -1
  548. package/dist/dev/ui/controls/controls-group.js +0 -1
  549. package/dist/dev/ui/controls/controls-group.js.map +1 -1
  550. package/dist/dev/ui/controls/controls-root.d.ts.map +1 -1
  551. package/dist/dev/ui/controls/controls-root.js +0 -1
  552. package/dist/dev/ui/controls/controls-root.js.map +1 -1
  553. package/dist/dev/ui/create-context-part.js +0 -1
  554. package/dist/dev/ui/create-context-part.js.map +1 -1
  555. package/dist/dev/ui/create-media-button.js +0 -1
  556. package/dist/dev/ui/create-media-button.js.map +1 -1
  557. package/dist/dev/ui/error-dialog/context.d.ts.map +1 -1
  558. package/dist/dev/ui/error-dialog/context.js +0 -1
  559. package/dist/dev/ui/error-dialog/context.js.map +1 -1
  560. package/dist/dev/ui/error-dialog/error-dialog-close.d.ts.map +1 -1
  561. package/dist/dev/ui/error-dialog/error-dialog-close.js +0 -1
  562. package/dist/dev/ui/error-dialog/error-dialog-close.js.map +1 -1
  563. package/dist/dev/ui/error-dialog/error-dialog-description.d.ts.map +1 -1
  564. package/dist/dev/ui/error-dialog/error-dialog-description.js +0 -1
  565. package/dist/dev/ui/error-dialog/error-dialog-description.js.map +1 -1
  566. package/dist/dev/ui/error-dialog/error-dialog-root.d.ts.map +1 -1
  567. package/dist/dev/ui/error-dialog/error-dialog-root.js +0 -1
  568. package/dist/dev/ui/error-dialog/error-dialog-root.js.map +1 -1
  569. package/dist/dev/ui/error-dialog/error-dialog-title.d.ts.map +1 -1
  570. package/dist/dev/ui/error-dialog/error-dialog-title.js +0 -1
  571. package/dist/dev/ui/error-dialog/error-dialog-title.js.map +1 -1
  572. package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts.map +1 -1
  573. package/dist/dev/ui/fullscreen-button/fullscreen-button.js +0 -1
  574. package/dist/dev/ui/fullscreen-button/fullscreen-button.js.map +1 -1
  575. package/dist/dev/ui/gesture/gesture.d.ts +6 -13
  576. package/dist/dev/ui/gesture/gesture.d.ts.map +1 -1
  577. package/dist/dev/ui/gesture/gesture.js +0 -1
  578. package/dist/dev/ui/gesture/gesture.js.map +1 -1
  579. package/dist/dev/ui/gesture/use-doubletap-gesture.d.ts +2 -5
  580. package/dist/dev/ui/gesture/use-doubletap-gesture.d.ts.map +1 -1
  581. package/dist/dev/ui/gesture/use-doubletap-gesture.js +0 -1
  582. package/dist/dev/ui/gesture/use-doubletap-gesture.js.map +1 -1
  583. package/dist/dev/ui/gesture/use-tap-gesture.d.ts +2 -5
  584. package/dist/dev/ui/gesture/use-tap-gesture.d.ts.map +1 -1
  585. package/dist/dev/ui/gesture/use-tap-gesture.js +0 -1
  586. package/dist/dev/ui/gesture/use-tap-gesture.js.map +1 -1
  587. package/dist/dev/ui/hooks/create-radio-options-hook.d.ts.map +1 -1
  588. package/dist/dev/ui/hooks/create-radio-options-hook.js +0 -1
  589. package/dist/dev/ui/hooks/create-radio-options-hook.js.map +1 -1
  590. package/dist/dev/ui/hooks/use-button.d.ts.map +1 -1
  591. package/dist/dev/ui/hooks/use-button.js +0 -1
  592. package/dist/dev/ui/hooks/use-button.js.map +1 -1
  593. package/dist/dev/ui/hooks/use-positioned-state.js +0 -1
  594. package/dist/dev/ui/hooks/use-positioned-state.js.map +1 -1
  595. package/dist/dev/ui/hooks/use-slider.d.ts.map +1 -1
  596. package/dist/dev/ui/hooks/use-slider.js +0 -1
  597. package/dist/dev/ui/hooks/use-slider.js.map +1 -1
  598. package/dist/dev/ui/hotkey/hotkey.d.ts +6 -12
  599. package/dist/dev/ui/hotkey/hotkey.d.ts.map +1 -1
  600. package/dist/dev/ui/hotkey/hotkey.js +0 -1
  601. package/dist/dev/ui/hotkey/hotkey.js.map +1 -1
  602. package/dist/dev/ui/hotkey/use-hotkey-shortcut.d.ts.map +1 -1
  603. package/dist/dev/ui/hotkey/use-hotkey-shortcut.js +0 -1
  604. package/dist/dev/ui/hotkey/use-hotkey-shortcut.js.map +1 -1
  605. package/dist/dev/ui/hotkey/use-hotkey.d.ts.map +1 -1
  606. package/dist/dev/ui/hotkey/use-hotkey.js +0 -1
  607. package/dist/dev/ui/hotkey/use-hotkey.js.map +1 -1
  608. package/dist/dev/ui/input-indicator/use-indicator-visibility.js +0 -1
  609. package/dist/dev/ui/input-indicator/use-indicator-visibility.js.map +1 -1
  610. package/dist/dev/ui/input-indicator/use-input-action-subscription.js +0 -1
  611. package/dist/dev/ui/input-indicator/use-input-action-subscription.js.map +1 -1
  612. package/dist/dev/ui/input-indicator/use-input-indicator-root.js +0 -1
  613. package/dist/dev/ui/input-indicator/use-input-indicator-root.js.map +1 -1
  614. package/dist/dev/ui/input-indicator/use-rendered-indicator-state.js +0 -1
  615. package/dist/dev/ui/input-indicator/use-rendered-indicator-state.js.map +1 -1
  616. package/dist/dev/ui/live-button/live-button.d.ts.map +1 -1
  617. package/dist/dev/ui/live-button/live-button.js +0 -1
  618. package/dist/dev/ui/live-button/live-button.js.map +1 -1
  619. package/dist/dev/ui/menu/context.d.ts.map +1 -1
  620. package/dist/dev/ui/menu/context.js +6 -2
  621. package/dist/dev/ui/menu/context.js.map +1 -1
  622. package/dist/dev/ui/menu/menu-checkbox-item.d.ts.map +1 -1
  623. package/dist/dev/ui/menu/menu-checkbox-item.js +0 -1
  624. package/dist/dev/ui/menu/menu-checkbox-item.js.map +1 -1
  625. package/dist/dev/ui/menu/menu-content.d.ts.map +1 -1
  626. package/dist/dev/ui/menu/menu-content.js +0 -1
  627. package/dist/dev/ui/menu/menu-content.js.map +1 -1
  628. package/dist/dev/ui/menu/menu-group-label.d.ts.map +1 -1
  629. package/dist/dev/ui/menu/menu-group-label.js +0 -1
  630. package/dist/dev/ui/menu/menu-group-label.js.map +1 -1
  631. package/dist/dev/ui/menu/menu-group.d.ts.map +1 -1
  632. package/dist/dev/ui/menu/menu-group.js +0 -1
  633. package/dist/dev/ui/menu/menu-group.js.map +1 -1
  634. package/dist/dev/ui/menu/menu-item-indicator.d.ts.map +1 -1
  635. package/dist/dev/ui/menu/menu-item-indicator.js +3 -3
  636. package/dist/dev/ui/menu/menu-item-indicator.js.map +1 -1
  637. package/dist/dev/ui/menu/menu-item.d.ts.map +1 -1
  638. package/dist/dev/ui/menu/menu-item.js +0 -1
  639. package/dist/dev/ui/menu/menu-item.js.map +1 -1
  640. package/dist/dev/ui/menu/menu-radio-group.d.ts.map +1 -1
  641. package/dist/dev/ui/menu/menu-radio-group.js +0 -1
  642. package/dist/dev/ui/menu/menu-radio-group.js.map +1 -1
  643. package/dist/dev/ui/menu/menu-radio-item.d.ts.map +1 -1
  644. package/dist/dev/ui/menu/menu-radio-item.js +19 -16
  645. package/dist/dev/ui/menu/menu-radio-item.js.map +1 -1
  646. package/dist/dev/ui/menu/menu-root.d.ts.map +1 -1
  647. package/dist/dev/ui/menu/menu-root.js +5 -7
  648. package/dist/dev/ui/menu/menu-root.js.map +1 -1
  649. package/dist/dev/ui/menu/menu-separator.d.ts.map +1 -1
  650. package/dist/dev/ui/menu/menu-separator.js +0 -1
  651. package/dist/dev/ui/menu/menu-separator.js.map +1 -1
  652. package/dist/dev/ui/menu/menu-trigger.d.ts.map +1 -1
  653. package/dist/dev/ui/menu/menu-trigger.js +26 -12
  654. package/dist/dev/ui/menu/menu-trigger.js.map +1 -1
  655. package/dist/dev/ui/menu/use-menu-group.js +0 -1
  656. package/dist/dev/ui/menu/use-menu-group.js.map +1 -1
  657. package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -1
  658. package/dist/dev/ui/mute-button/mute-button.js +0 -1
  659. package/dist/dev/ui/mute-button/mute-button.js.map +1 -1
  660. package/dist/dev/ui/pip-button/pip-button.d.ts.map +1 -1
  661. package/dist/dev/ui/pip-button/pip-button.js +0 -1
  662. package/dist/dev/ui/pip-button/pip-button.js.map +1 -1
  663. package/dist/dev/ui/play-button/play-button.d.ts.map +1 -1
  664. package/dist/dev/ui/play-button/play-button.js +0 -1
  665. package/dist/dev/ui/play-button/play-button.js.map +1 -1
  666. package/dist/dev/ui/playback-rate/use-playback-rate-options.d.ts.map +1 -1
  667. package/dist/dev/ui/playback-rate/use-playback-rate-options.js +0 -1
  668. package/dist/dev/ui/playback-rate/use-playback-rate-options.js.map +1 -1
  669. package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts.map +1 -1
  670. package/dist/dev/ui/playback-rate-button/playback-rate-button.js +0 -1
  671. package/dist/dev/ui/playback-rate-button/playback-rate-button.js.map +1 -1
  672. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.d.ts.map +1 -1
  673. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.js +0 -1
  674. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.js.map +1 -1
  675. package/dist/dev/ui/popover/context.d.ts.map +1 -1
  676. package/dist/dev/ui/popover/context.js +0 -1
  677. package/dist/dev/ui/popover/context.js.map +1 -1
  678. package/dist/dev/ui/popover/popover-arrow.d.ts.map +1 -1
  679. package/dist/dev/ui/popover/popover-arrow.js +0 -1
  680. package/dist/dev/ui/popover/popover-arrow.js.map +1 -1
  681. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
  682. package/dist/dev/ui/popover/popover-popup.js +0 -1
  683. package/dist/dev/ui/popover/popover-popup.js.map +1 -1
  684. package/dist/dev/ui/popover/popover-root.d.ts.map +1 -1
  685. package/dist/dev/ui/popover/popover-root.js +0 -1
  686. package/dist/dev/ui/popover/popover-root.js.map +1 -1
  687. package/dist/dev/ui/popover/popover-trigger.d.ts.map +1 -1
  688. package/dist/dev/ui/popover/popover-trigger.js +0 -1
  689. package/dist/dev/ui/popover/popover-trigger.js.map +1 -1
  690. package/dist/dev/ui/popover/use-popup-position.js +0 -1
  691. package/dist/dev/ui/popover/use-popup-position.js.map +1 -1
  692. package/dist/dev/ui/poster/poster.d.ts +15 -4
  693. package/dist/dev/ui/poster/poster.d.ts.map +1 -1
  694. package/dist/dev/ui/poster/poster.js +64 -18
  695. package/dist/dev/ui/poster/poster.js.map +1 -1
  696. package/dist/dev/ui/quality/use-quality-options.d.ts.map +1 -1
  697. package/dist/dev/ui/quality/use-quality-options.js +0 -1
  698. package/dist/dev/ui/quality/use-quality-options.js.map +1 -1
  699. package/dist/dev/ui/quality-radio-group/quality-radio-group.d.ts.map +1 -1
  700. package/dist/dev/ui/quality-radio-group/quality-radio-group.js +0 -1
  701. package/dist/dev/ui/quality-radio-group/quality-radio-group.js.map +1 -1
  702. package/dist/dev/ui/seek-button/seek-button.d.ts.map +1 -1
  703. package/dist/dev/ui/seek-button/seek-button.js +0 -1
  704. package/dist/dev/ui/seek-button/seek-button.js.map +1 -1
  705. package/dist/dev/ui/seek-indicator/context.js +0 -1
  706. package/dist/dev/ui/seek-indicator/context.js.map +1 -1
  707. package/dist/dev/ui/seek-indicator/seek-indicator-root.d.ts.map +1 -1
  708. package/dist/dev/ui/seek-indicator/seek-indicator-root.js +0 -1
  709. package/dist/dev/ui/seek-indicator/seek-indicator-root.js.map +1 -1
  710. package/dist/dev/ui/seek-indicator/seek-indicator-value.d.ts.map +1 -1
  711. package/dist/dev/ui/seek-indicator/seek-indicator-value.js +0 -1
  712. package/dist/dev/ui/seek-indicator/seek-indicator-value.js.map +1 -1
  713. package/dist/dev/ui/slider/context.js +0 -1
  714. package/dist/dev/ui/slider/context.js.map +1 -1
  715. package/dist/dev/ui/slider/slider-buffer.d.ts.map +1 -1
  716. package/dist/dev/ui/slider/slider-buffer.js +0 -1
  717. package/dist/dev/ui/slider/slider-buffer.js.map +1 -1
  718. package/dist/dev/ui/slider/slider-fill.d.ts.map +1 -1
  719. package/dist/dev/ui/slider/slider-fill.js +0 -1
  720. package/dist/dev/ui/slider/slider-fill.js.map +1 -1
  721. package/dist/dev/ui/slider/slider-preview.d.ts +5 -9
  722. package/dist/dev/ui/slider/slider-preview.d.ts.map +1 -1
  723. package/dist/dev/ui/slider/slider-preview.js +0 -1
  724. package/dist/dev/ui/slider/slider-preview.js.map +1 -1
  725. package/dist/dev/ui/slider/slider-root.d.ts.map +1 -1
  726. package/dist/dev/ui/slider/slider-root.js +0 -1
  727. package/dist/dev/ui/slider/slider-root.js.map +1 -1
  728. package/dist/dev/ui/slider/slider-thumb.d.ts.map +1 -1
  729. package/dist/dev/ui/slider/slider-thumb.js +0 -1
  730. package/dist/dev/ui/slider/slider-thumb.js.map +1 -1
  731. package/dist/dev/ui/slider/slider-thumbnail.d.ts.map +1 -1
  732. package/dist/dev/ui/slider/slider-thumbnail.js +0 -1
  733. package/dist/dev/ui/slider/slider-thumbnail.js.map +1 -1
  734. package/dist/dev/ui/slider/slider-track.d.ts.map +1 -1
  735. package/dist/dev/ui/slider/slider-track.js +0 -1
  736. package/dist/dev/ui/slider/slider-track.js.map +1 -1
  737. package/dist/dev/ui/slider/slider-value.d.ts.map +1 -1
  738. package/dist/dev/ui/slider/slider-value.js +0 -1
  739. package/dist/dev/ui/slider/slider-value.js.map +1 -1
  740. package/dist/dev/ui/status-announcer/status-announcer.d.ts.map +1 -1
  741. package/dist/dev/ui/status-announcer/status-announcer.js +0 -1
  742. package/dist/dev/ui/status-announcer/status-announcer.js.map +1 -1
  743. package/dist/dev/ui/status-indicator/context.js +0 -1
  744. package/dist/dev/ui/status-indicator/context.js.map +1 -1
  745. package/dist/dev/ui/status-indicator/status-indicator-root.d.ts.map +1 -1
  746. package/dist/dev/ui/status-indicator/status-indicator-root.js +0 -1
  747. package/dist/dev/ui/status-indicator/status-indicator-root.js.map +1 -1
  748. package/dist/dev/ui/status-indicator/status-indicator-value.d.ts.map +1 -1
  749. package/dist/dev/ui/status-indicator/status-indicator-value.js +0 -1
  750. package/dist/dev/ui/status-indicator/status-indicator-value.js.map +1 -1
  751. package/dist/dev/ui/thumbnail/thumbnail.d.ts.map +1 -1
  752. package/dist/dev/ui/thumbnail/thumbnail.js +0 -1
  753. package/dist/dev/ui/thumbnail/thumbnail.js.map +1 -1
  754. package/dist/dev/ui/time/time-group.d.ts.map +1 -1
  755. package/dist/dev/ui/time/time-group.js +0 -1
  756. package/dist/dev/ui/time/time-group.js.map +1 -1
  757. package/dist/dev/ui/time/time-separator.d.ts.map +1 -1
  758. package/dist/dev/ui/time/time-separator.js +0 -1
  759. package/dist/dev/ui/time/time-separator.js.map +1 -1
  760. package/dist/dev/ui/time/time-value.d.ts.map +1 -1
  761. package/dist/dev/ui/time/time-value.js +0 -1
  762. package/dist/dev/ui/time/time-value.js.map +1 -1
  763. package/dist/dev/ui/time-slider/time-slider-chapters/slider-segments.js +0 -1
  764. package/dist/dev/ui/time-slider/time-slider-chapters/slider-segments.js.map +1 -1
  765. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.d.ts.map +1 -1
  766. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js +0 -1
  767. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js.map +1 -1
  768. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.d.ts.map +1 -1
  769. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.js +0 -1
  770. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.js.map +1 -1
  771. package/dist/dev/ui/time-slider/time-slider-root.d.ts.map +1 -1
  772. package/dist/dev/ui/time-slider/time-slider-root.js +0 -1
  773. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
  774. package/dist/dev/ui/tooltip/context.d.ts.map +1 -1
  775. package/dist/dev/ui/tooltip/context.js +0 -1
  776. package/dist/dev/ui/tooltip/context.js.map +1 -1
  777. package/dist/dev/ui/tooltip/group-context.js +0 -1
  778. package/dist/dev/ui/tooltip/group-context.js.map +1 -1
  779. package/dist/dev/ui/tooltip/tooltip-arrow.d.ts.map +1 -1
  780. package/dist/dev/ui/tooltip/tooltip-arrow.js +0 -1
  781. package/dist/dev/ui/tooltip/tooltip-arrow.js.map +1 -1
  782. package/dist/dev/ui/tooltip/tooltip-label.d.ts.map +1 -1
  783. package/dist/dev/ui/tooltip/tooltip-label.js +0 -1
  784. package/dist/dev/ui/tooltip/tooltip-label.js.map +1 -1
  785. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  786. package/dist/dev/ui/tooltip/tooltip-popup.js +0 -1
  787. package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
  788. package/dist/dev/ui/tooltip/tooltip-provider.d.ts.map +1 -1
  789. package/dist/dev/ui/tooltip/tooltip-provider.js +0 -1
  790. package/dist/dev/ui/tooltip/tooltip-provider.js.map +1 -1
  791. package/dist/dev/ui/tooltip/tooltip-root.d.ts.map +1 -1
  792. package/dist/dev/ui/tooltip/tooltip-root.js +0 -1
  793. package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -1
  794. package/dist/dev/ui/tooltip/tooltip-shortcut.d.ts.map +1 -1
  795. package/dist/dev/ui/tooltip/tooltip-shortcut.js +0 -1
  796. package/dist/dev/ui/tooltip/tooltip-shortcut.js.map +1 -1
  797. package/dist/dev/ui/tooltip/tooltip-trigger.d.ts.map +1 -1
  798. package/dist/dev/ui/tooltip/tooltip-trigger.js +0 -1
  799. package/dist/dev/ui/tooltip/tooltip-trigger.js.map +1 -1
  800. package/dist/dev/ui/volume-indicator/context.js +0 -1
  801. package/dist/dev/ui/volume-indicator/context.js.map +1 -1
  802. package/dist/dev/ui/volume-indicator/volume-indicator-fill.d.ts.map +1 -1
  803. package/dist/dev/ui/volume-indicator/volume-indicator-fill.js +0 -1
  804. package/dist/dev/ui/volume-indicator/volume-indicator-fill.js.map +1 -1
  805. package/dist/dev/ui/volume-indicator/volume-indicator-root.d.ts.map +1 -1
  806. package/dist/dev/ui/volume-indicator/volume-indicator-root.js +0 -1
  807. package/dist/dev/ui/volume-indicator/volume-indicator-root.js.map +1 -1
  808. package/dist/dev/ui/volume-indicator/volume-indicator-value.d.ts.map +1 -1
  809. package/dist/dev/ui/volume-indicator/volume-indicator-value.js +0 -1
  810. package/dist/dev/ui/volume-indicator/volume-indicator-value.js.map +1 -1
  811. package/dist/dev/ui/volume-slider/volume-slider-root.d.ts.map +1 -1
  812. package/dist/dev/ui/volume-slider/volume-slider-root.js +0 -1
  813. package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -1
  814. package/dist/dev/utils/merge-props.d.ts.map +1 -1
  815. package/dist/dev/utils/merge-props.js +0 -1
  816. package/dist/dev/utils/merge-props.js.map +1 -1
  817. package/dist/dev/utils/use-attach-iframe.js +0 -1
  818. package/dist/dev/utils/use-attach-iframe.js.map +1 -1
  819. package/dist/dev/utils/use-attach-media.d.ts.map +1 -1
  820. package/dist/dev/utils/use-attach-media.js +0 -1
  821. package/dist/dev/utils/use-attach-media.js.map +1 -1
  822. package/dist/dev/utils/use-composed-refs.d.ts.map +1 -1
  823. package/dist/dev/utils/use-composed-refs.js +0 -1
  824. package/dist/dev/utils/use-composed-refs.js.map +1 -1
  825. package/dist/dev/utils/use-destroy.d.ts.map +1 -1
  826. package/dist/dev/utils/use-destroy.js +0 -1
  827. package/dist/dev/utils/use-destroy.js.map +1 -1
  828. package/dist/dev/utils/use-force-render.js +0 -1
  829. package/dist/dev/utils/use-force-render.js.map +1 -1
  830. package/dist/dev/utils/use-latest-ref.d.ts.map +1 -1
  831. package/dist/dev/utils/use-latest-ref.js +0 -1
  832. package/dist/dev/utils/use-latest-ref.js.map +1 -1
  833. package/dist/dev/utils/use-media-component.d.ts.map +1 -1
  834. package/dist/dev/utils/use-media-component.js +0 -1
  835. package/dist/dev/utils/use-media-component.js.map +1 -1
  836. package/dist/dev/utils/use-media-instance.d.ts.map +1 -1
  837. package/dist/dev/utils/use-media-instance.js +0 -1
  838. package/dist/dev/utils/use-media-instance.js.map +1 -1
  839. package/dist/dev/utils/use-render.d.ts.map +1 -1
  840. package/dist/dev/utils/use-render.js +2 -9
  841. package/dist/dev/utils/use-render.js.map +1 -1
  842. package/dist/dev/utils/use-safe-id.js +0 -1
  843. package/dist/dev/utils/use-safe-id.js.map +1 -1
  844. package/docs/README.md +1 -1
  845. package/docs/concepts/features.md +2 -2
  846. package/docs/concepts/media-sources.md +79 -1
  847. package/docs/concepts/skins.md +128 -126
  848. package/docs/how-to/build-your-own-component.md +1 -1
  849. package/docs/how-to/customize-skins.md +511 -505
  850. package/docs/how-to/migrate-from-media-chrome.md +412 -0
  851. package/docs/how-to/migrate-from-mux-player.md +551 -0
  852. package/docs/how-to/migrate-from-plyr.md +385 -0
  853. package/docs/how-to/migrate-from-video-js-8.md +594 -0
  854. package/docs/llms.txt +9 -0
  855. package/docs/reference/create-player.md +2 -2
  856. package/docs/reference/feature-volume.md +4 -2
  857. package/docs/reference/menu.md +6 -18
  858. package/docs/reference/mute-button.md +34 -0
  859. package/docs/reference/popover.md +6 -6
  860. package/docs/reference/poster.md +187 -13
  861. package/docs/reference/slider.md +1 -1
  862. package/docs/reference/time-slider.md +1 -1
  863. package/docs/reference/tooltip.md +10 -10
  864. package/docs/reference/volume-slider.md +2 -2
  865. package/package.json +13 -8
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-arrow.js","names":[],"sources":["../../../../src/ui/tooltip/tooltip-arrow.tsx"],"sourcesContent":["'use client';\n\nimport type { TooltipState } from '@videojs/core';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { createContextPart } from '../create-context-part';\nimport { useTooltipContext } from './context';\n\nexport interface TooltipArrowProps extends UIComponentProps<'div', TooltipState> {}\n\n/** Decorative arrow pointing from the tooltip toward the trigger. Hidden from assistive technology. */\nexport const TooltipArrow = createContextPart<TooltipArrowProps, TooltipState>({\n displayName: 'TooltipArrow',\n tag: 'div',\n useContext: useTooltipContext,\n staticProps: { 'aria-hidden': 'true' as const },\n});\n\nexport namespace TooltipArrow {\n export type Props = TooltipArrowProps;\n export type State = TooltipState;\n}\n"],"mappings":";;;;;AAWA,MAAa,eAAe,kBAAmD;CAC7E,aAAa;CACb,KAAK;CACL,YAAY;CACZ,aAAa,EAAE,eAAe,OAAgB;AAChD,CAAC"}
1
+ {"version":3,"file":"tooltip-arrow.js","names":[],"sources":["../../../../src/ui/tooltip/tooltip-arrow.tsx"],"sourcesContent":["import type { TooltipState } from '@videojs/core';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { createContextPart } from '../create-context-part';\nimport { useTooltipContext } from './context';\n\nexport interface TooltipArrowProps extends UIComponentProps<'div', TooltipState> {}\n\n/** Decorative arrow pointing from the tooltip toward the trigger. Hidden from assistive technology. */\nexport const TooltipArrow = createContextPart<TooltipArrowProps, TooltipState>({\n displayName: 'TooltipArrow',\n tag: 'div',\n useContext: useTooltipContext,\n staticProps: { 'aria-hidden': 'true' as const },\n});\n\nexport namespace TooltipArrow {\n export type Props = TooltipArrowProps;\n export type State = TooltipState;\n}\n"],"mappings":";;;;AASA,MAAa,eAAe,kBAAmD;CAC7E,aAAa;CACb,KAAK;CACL,YAAY;CACZ,aAAa,EAAE,eAAe,OAAgB;AAChD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-label.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-label.tsx"],"mappings":";;;UASiB,0BAA0B,yBAAyB;;cAGvD,8BAAY,0BAAA,KAAA,4CAAA,cAAA;kBAmBR;OACH,QAAQ;OACR,QAAQ"}
1
+ {"version":3,"file":"tooltip-label.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-label.tsx"],"mappings":";;;UAOiB,0BAA0B,yBAAyB;;cAGvD,8BAAY,0BAAA,KAAA,4CAAA,cAAA;kBAmBR;OACH,QAAQ;OACR,QAAQ"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { renderElement } from "../../utils/use-render.js";
3
2
  import { useTooltipContext } from "./context.js";
4
3
  import { forwardRef } from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-label.js","names":[],"sources":["../../../../src/ui/tooltip/tooltip-label.tsx"],"sourcesContent":["'use client';\n\nimport type { TooltipState } from '@videojs/core';\nimport { forwardRef } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useTooltipContext } from './context';\n\nexport interface TooltipLabelProps extends UIComponentProps<'span', TooltipState> {}\n\n/** Tooltip body label; defaults to context `content.label` from the linked trigger. */\nexport const TooltipLabel = forwardRef<HTMLSpanElement, TooltipLabelProps>(function TooltipLabel(\n { render, className, style, children, ...elementProps },\n forwardedRef\n) {\n const { state, stateAttrMap, content } = useTooltipContext();\n const body = children !== undefined ? children : (content?.label ?? '');\n\n return renderElement(\n 'span',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: forwardedRef,\n props: [elementProps, { children: body }],\n }\n );\n});\n\nexport namespace TooltipLabel {\n export type Props = TooltipLabelProps;\n export type State = TooltipState;\n}\n"],"mappings":";;;;;;AAYA,MAAa,eAAe,WAA+C,SAAS,aAClF,EAAE,QAAQ,WAAW,OAAO,UAAU,GAAG,gBACzC,cACA;CACA,MAAM,EAAE,OAAO,cAAc,YAAY,kBAAkB;CAC3D,MAAM,OAAO,aAAa,KAAA,IAAY,WAAY,SAAS,SAAS;CAEpE,OAAO,cACL,QACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA;EACA,KAAK;EACL,OAAO,CAAC,cAAc,EAAE,UAAU,KAAK,CAAC;CAC1C,CACF;AACF,CAAC"}
1
+ {"version":3,"file":"tooltip-label.js","names":[],"sources":["../../../../src/ui/tooltip/tooltip-label.tsx"],"sourcesContent":["import type { TooltipState } from '@videojs/core';\nimport { forwardRef } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useTooltipContext } from './context';\n\nexport interface TooltipLabelProps extends UIComponentProps<'span', TooltipState> {}\n\n/** Tooltip body label; defaults to context `content.label` from the linked trigger. */\nexport const TooltipLabel = forwardRef<HTMLSpanElement, TooltipLabelProps>(function TooltipLabel(\n { render, className, style, children, ...elementProps },\n forwardedRef\n) {\n const { state, stateAttrMap, content } = useTooltipContext();\n const body = children !== undefined ? children : (content?.label ?? '');\n\n return renderElement(\n 'span',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: forwardedRef,\n props: [elementProps, { children: body }],\n }\n );\n});\n\nexport namespace TooltipLabel {\n export type Props = TooltipLabelProps;\n export type State = TooltipState;\n}\n"],"mappings":";;;;;AAUA,MAAa,eAAe,WAA+C,SAAS,aAClF,EAAE,QAAQ,WAAW,OAAO,UAAU,GAAG,gBACzC,cACA;CACA,MAAM,EAAE,OAAO,cAAc,YAAY,kBAAkB;CAC3D,MAAM,OAAO,aAAa,KAAA,IAAY,WAAY,SAAS,SAAS;CAEpE,OAAO,cACL,QACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA;EACA,KAAK;EACL,OAAO,CAAC,cAAc,EAAE,UAAU,KAAK,CAAC;CAC1C,CACF;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-popup.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-popup.tsx"],"mappings":";;;UAaiB,0BAA0B,wBAAwB;;cAGtD,8BAAY,0BAAA,KAAA,4CAAA,cAAA;kBAmFR;OACH,QAAQ;OACR,QAAQ"}
1
+ {"version":3,"file":"tooltip-popup.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-popup.tsx"],"mappings":";;;UAWiB,0BAA0B,wBAAwB;;cAGtD,8BAAY,0BAAA,KAAA,4CAAA,cAAA;kBAmFR;OACH,QAAQ;OACR,QAAQ"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { useComposedRefs } from "../../utils/use-composed-refs.js";
3
2
  import { renderElement } from "../../utils/use-render.js";
4
3
  import { useTooltipContext } from "./context.js";
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-popup.js","names":[],"sources":["../../../../src/ui/tooltip/tooltip-popup.tsx"],"sourcesContent":["'use client';\n\nimport { TooltipCSSVars, type TooltipState } from '@videojs/core';\nimport { forwardRef, useCallback, useMemo, useRef } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { useComposedRefs } from '../../utils/use-composed-refs';\nimport { renderElement } from '../../utils/use-render';\nimport { usePopupPosition } from '../popover/use-popup-position';\nimport { useTooltipContext } from './context';\nimport { TooltipLabel } from './tooltip-label';\nimport { TooltipShortcut } from './tooltip-shortcut';\n\nexport interface TooltipPopupProps extends UIComponentProps<'div', TooltipState> {}\n\n/** Container for the tooltip content. Positioned relative to the trigger using CSS anchor positioning with a JavaScript fallback. */\nexport const TooltipPopup = forwardRef<HTMLDivElement, TooltipPopupProps>(function TooltipPopup(\n { render, className, style, children, ...elementProps },\n forwardedRef\n) {\n const {\n core,\n tooltip,\n state,\n preferredSide,\n setPositionedSide,\n stateAttrMap,\n anchorName,\n popupId,\n boundary,\n container,\n } = useTooltipContext();\n const internalRef = useRef<HTMLDivElement>(null);\n\n const popupRef = useCallback(\n (el: HTMLDivElement | null) => {\n tooltip.setPopupElement(el);\n },\n [tooltip]\n );\n\n const composedRef = useComposedRefs(forwardedRef, popupRef, internalRef);\n\n // --- Positioning ---\n\n const posOpts = useMemo(() => ({ side: preferredSide, align: state.align }), [preferredSide, state.align]);\n\n const positioningStyle = usePopupPosition({\n open: state.open,\n anchorName,\n position: posOpts,\n triggerSource: tooltip,\n popupRef: internalRef,\n boundary,\n container,\n cssVars: TooltipCSSVars,\n onSideChange: setPositionedSide,\n });\n\n // --- Visibility ---\n\n if (!state.open) {\n return null;\n }\n\n const body =\n children !== undefined ? (\n children\n ) : (\n <>\n <TooltipLabel />\n <TooltipShortcut />\n </>\n );\n\n // Remap DOM focus events to React synthetic event names.\n const { onFocusOut, ...restPopupProps } = tooltip.popupProps;\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: composedRef,\n props: [\n {\n id: popupId,\n style: positioningStyle,\n ...core.getPopupAttrs(state),\n },\n { children: body },\n { ...restPopupProps, onBlur: onFocusOut },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace TooltipPopup {\n export type Props = TooltipPopupProps;\n export type State = TooltipState;\n}\n"],"mappings":";;;;;;;;;;;;AAgBA,MAAa,eAAe,WAA8C,SAAS,aACjF,EAAE,QAAQ,WAAW,OAAO,UAAU,GAAG,gBACzC,cACA;CACA,MAAM,EACJ,MACA,SACA,OACA,eACA,mBACA,cACA,YACA,SACA,UACA,cACE,kBAAkB;CACtB,MAAM,cAAc,OAAuB,IAAI;CAS/C,MAAM,cAAc,gBAAgB,cAPnB,aACd,OAA8B;EAC7B,QAAQ,gBAAgB,EAAE;CAC5B,GACA,CAAC,OAAO,CAG+C,GAAG,WAAW;CAIvE,MAAM,UAAU,eAAe;EAAE,MAAM;EAAe,OAAO,MAAM;CAAM,IAAI,CAAC,eAAe,MAAM,KAAK,CAAC;CAEzG,MAAM,mBAAmB,iBAAiB;EACxC,MAAM,MAAM;EACZ;EACA,UAAU;EACV,eAAe;EACf,UAAU;EACV;EACA;EACA,SAAS;EACT,cAAc;CAChB,CAAC;CAID,IAAI,CAAC,MAAM,MACT,OAAO;CAGT,MAAM,OACJ,aAAa,KAAA,IACX,WAEA,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,cAAD,CAAe,CAAA,GACf,oBAAC,iBAAD,CAAkB,CAAA,CAClB,EAAA,CAAA;CAIN,MAAM,EAAE,YAAY,GAAG,mBAAmB,QAAQ;CAElD,OAAO,cACL,OACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA;EACA,KAAK;EACL,OAAO;GACL;IACE,IAAI;IACJ,OAAO;IACP,GAAG,KAAK,cAAc,KAAK;GAC7B;GACA,EAAE,UAAU,KAAK;GACjB;IAAE,GAAG;IAAgB,QAAQ;GAAW;GACxC;EACF;CACF,CACF;AACF,CAAC"}
1
+ {"version":3,"file":"tooltip-popup.js","names":[],"sources":["../../../../src/ui/tooltip/tooltip-popup.tsx"],"sourcesContent":["import { TooltipCSSVars, type TooltipState } from '@videojs/core';\nimport { forwardRef, useCallback, useMemo, useRef } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { useComposedRefs } from '../../utils/use-composed-refs';\nimport { renderElement } from '../../utils/use-render';\nimport { usePopupPosition } from '../popover/use-popup-position';\nimport { useTooltipContext } from './context';\nimport { TooltipLabel } from './tooltip-label';\nimport { TooltipShortcut } from './tooltip-shortcut';\n\nexport interface TooltipPopupProps extends UIComponentProps<'div', TooltipState> {}\n\n/** Container for the tooltip content. Positioned relative to the trigger using CSS anchor positioning with a JavaScript fallback. */\nexport const TooltipPopup = forwardRef<HTMLDivElement, TooltipPopupProps>(function TooltipPopup(\n { render, className, style, children, ...elementProps },\n forwardedRef\n) {\n const {\n core,\n tooltip,\n state,\n preferredSide,\n setPositionedSide,\n stateAttrMap,\n anchorName,\n popupId,\n boundary,\n container,\n } = useTooltipContext();\n const internalRef = useRef<HTMLDivElement>(null);\n\n const popupRef = useCallback(\n (el: HTMLDivElement | null) => {\n tooltip.setPopupElement(el);\n },\n [tooltip]\n );\n\n const composedRef = useComposedRefs(forwardedRef, popupRef, internalRef);\n\n // --- Positioning ---\n\n const posOpts = useMemo(() => ({ side: preferredSide, align: state.align }), [preferredSide, state.align]);\n\n const positioningStyle = usePopupPosition({\n open: state.open,\n anchorName,\n position: posOpts,\n triggerSource: tooltip,\n popupRef: internalRef,\n boundary,\n container,\n cssVars: TooltipCSSVars,\n onSideChange: setPositionedSide,\n });\n\n // --- Visibility ---\n\n if (!state.open) {\n return null;\n }\n\n const body =\n children !== undefined ? (\n children\n ) : (\n <>\n <TooltipLabel />\n <TooltipShortcut />\n </>\n );\n\n // Remap DOM focus events to React synthetic event names.\n const { onFocusOut, ...restPopupProps } = tooltip.popupProps;\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: composedRef,\n props: [\n {\n id: popupId,\n style: positioningStyle,\n ...core.getPopupAttrs(state),\n },\n { children: body },\n { ...restPopupProps, onBlur: onFocusOut },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace TooltipPopup {\n export type Props = TooltipPopupProps;\n export type State = TooltipState;\n}\n"],"mappings":";;;;;;;;;;;AAcA,MAAa,eAAe,WAA8C,SAAS,aACjF,EAAE,QAAQ,WAAW,OAAO,UAAU,GAAG,gBACzC,cACA;CACA,MAAM,EACJ,MACA,SACA,OACA,eACA,mBACA,cACA,YACA,SACA,UACA,cACE,kBAAkB;CACtB,MAAM,cAAc,OAAuB,IAAI;CAS/C,MAAM,cAAc,gBAAgB,cAPnB,aACd,OAA8B;EAC7B,QAAQ,gBAAgB,EAAE;CAC5B,GACA,CAAC,OAAO,CAG+C,GAAG,WAAW;CAIvE,MAAM,UAAU,eAAe;EAAE,MAAM;EAAe,OAAO,MAAM;CAAM,IAAI,CAAC,eAAe,MAAM,KAAK,CAAC;CAEzG,MAAM,mBAAmB,iBAAiB;EACxC,MAAM,MAAM;EACZ;EACA,UAAU;EACV,eAAe;EACf,UAAU;EACV;EACA;EACA,SAAS;EACT,cAAc;CAChB,CAAC;CAID,IAAI,CAAC,MAAM,MACT,OAAO;CAGT,MAAM,OACJ,aAAa,KAAA,IACX,WAEA,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,cAAD,CAAe,CAAA,GACf,oBAAC,iBAAD,CAAkB,CAAA,CAClB,EAAA,CAAA;CAIN,MAAM,EAAE,YAAY,GAAG,mBAAmB,QAAQ;CAElD,OAAO,cACL,OACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA;EACA,KAAK;EACL,OAAO;GACL;IACE,IAAI;IACJ,OAAO;IACP,GAAG,KAAK,cAAc,KAAK;GAC7B;GACA,EAAE,UAAU,KAAK;GACjB;IAAE,GAAG;IAAgB,QAAQ;GAAW;GACxC;EACF;CACF,CACF;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-provider.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-provider.tsx"],"mappings":";;;UAQiB,6BAA6B;EAC5C,WAAW;;iBAGG,kBAAkB,OAAO,YAAY,SAAS,YAAY,uBAAuB;kBAOhF;OACH,QAAQ"}
1
+ {"version":3,"file":"tooltip-provider.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-provider.tsx"],"mappings":";;;UAMiB,6BAA6B;EAC5C,WAAW;;iBAGG,kBAAkB,OAAO,YAAY,SAAS,YAAY,uBAAuB;kBAOhF;OACH,QAAQ"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { TooltipGroupContextProvider } from "./group-context.js";
3
2
  import { useState } from "react";
4
3
  import { jsx } from "react/jsx-runtime";
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-provider.js","names":[],"sources":["../../../../src/ui/tooltip/tooltip-provider.tsx"],"sourcesContent":["'use client';\n\nimport { TooltipGroupCore, type TooltipGroupProps } from '@videojs/core';\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\n\nimport { TooltipGroupContextProvider } from './group-context';\n\nexport interface TooltipProviderProps extends TooltipGroupProps {\n children?: ReactNode;\n}\n\nexport function TooltipProvider({ delay, closeDelay, timeout, children }: TooltipProviderProps): ReactNode {\n const [group] = useState(() => new TooltipGroupCore({ delay, closeDelay, timeout }));\n group.setProps({ delay, closeDelay, timeout });\n\n return <TooltipGroupContextProvider value={{ group }}>{children}</TooltipGroupContextProvider>;\n}\n\nexport namespace TooltipProvider {\n export type Props = TooltipProviderProps;\n}\n"],"mappings":";;;;;;AAYA,SAAgB,gBAAgB,EAAE,OAAO,YAAY,SAAS,YAA6C;CACzG,MAAM,CAAC,SAAS,eAAe,IAAI,iBAAiB;EAAE;EAAO;EAAY;CAAQ,CAAC,CAAC;CACnF,MAAM,SAAS;EAAE;EAAO;EAAY;CAAQ,CAAC;CAE7C,OAAO,oBAAC,6BAAD;EAA6B,OAAO,EAAE,MAAM;EAAI;CAAsC,CAAA;AAC/F"}
1
+ {"version":3,"file":"tooltip-provider.js","names":[],"sources":["../../../../src/ui/tooltip/tooltip-provider.tsx"],"sourcesContent":["import { TooltipGroupCore, type TooltipGroupProps } from '@videojs/core';\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\n\nimport { TooltipGroupContextProvider } from './group-context';\n\nexport interface TooltipProviderProps extends TooltipGroupProps {\n children?: ReactNode;\n}\n\nexport function TooltipProvider({ delay, closeDelay, timeout, children }: TooltipProviderProps): ReactNode {\n const [group] = useState(() => new TooltipGroupCore({ delay, closeDelay, timeout }));\n group.setProps({ delay, closeDelay, timeout });\n\n return <TooltipGroupContextProvider value={{ group }}>{children}</TooltipGroupContextProvider>;\n}\n\nexport namespace TooltipProvider {\n export type Props = TooltipProviderProps;\n}\n"],"mappings":";;;;;AAUA,SAAgB,gBAAgB,EAAE,OAAO,YAAY,SAAS,YAA6C;CACzG,MAAM,CAAC,SAAS,eAAe,IAAI,iBAAiB;EAAE;EAAO;EAAY;CAAQ,CAAC,CAAC;CACnF,MAAM,SAAS;EAAE;EAAO;EAAY;CAAQ,CAAC;CAE7C,OAAO,oBAAC,6BAAD;EAA6B,OAAO,EAAE,MAAM;EAAI;CAAsC,CAAA;AAC/F"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-root.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-root.tsx"],"mappings":";;;;UAuBiB,yBAAyB;;EAExC,WAAW;;EAEX,gBAAgB,eAAe,SAAS;;EAExC,wBAAwB;EACxB,WAAW;;iBAGG,cACd,MAAM,gBACN,aACA,cAAc,kBACd,sBAAsB,0BACtB,OACA,YACA,uBACA,UACA,UACA,aACG,aACF,mBAAmB;kBAqGL;OACH,QAAQ"}
1
+ {"version":3,"file":"tooltip-root.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-root.tsx"],"mappings":";;;;UAqBiB,yBAAyB;;EAExC,WAAW;;EAEX,gBAAgB,eAAe,SAAS;;EAExC,wBAAwB;EACxB,WAAW;;iBAGG,cACd,MAAM,gBACN,aACA,cAAc,kBACd,sBAAsB,0BACtB,OACA,YACA,uBACA,UACA,UACA,aACG,aACF,mBAAmB;kBAqGL;OACH,QAAQ"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { useOptionalContainer } from "../../player/context.js";
3
2
  import { useOptionalPopupGroup } from "../../player/popup-group-context.js";
4
3
  import { useLatestRef } from "../../utils/use-latest-ref.js";
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-root.js","names":[],"sources":["../../../../src/ui/tooltip/tooltip-root.tsx"],"sourcesContent":["'use client';\n\nimport { type TooltipProps as CoreTooltipProps, TooltipCore, TooltipDataAttrs } from '@videojs/core';\nimport {\n createTooltip,\n createTransition,\n type PositioningBoundary,\n type TooltipChangeDetails,\n} from '@videojs/core/dom';\nimport { useSnapshot } from '@videojs/store/react';\nimport { isUndefined } from '@videojs/utils/predicate';\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useOptionalContainer } from '../../player/context';\nimport { useOptionalPopupGroup } from '../../player/popup-group-context';\nimport { useDestroy } from '../../utils/use-destroy';\nimport { useLatestRef } from '../../utils/use-latest-ref';\nimport { useSafeId } from '../../utils/use-safe-id';\nimport { useOptionalControlsContext } from '../controls/context';\nimport { usePositionedState } from '../hooks/use-positioned-state';\nimport { type TooltipContent, TooltipContextProvider } from './context';\nimport { useTooltipGroup } from './group-context';\n\nexport interface TooltipRootProps extends CoreTooltipProps {\n /** Boundary used to constrain the popup size. */\n boundary?: PositioningBoundary;\n /** Called when the tooltip open state changes (fires immediately, before animations). */\n onOpenChange?: (open: boolean, details: TooltipChangeDetails) => void;\n /** Called after open/close animations complete. */\n onOpenChangeComplete?: (open: boolean) => void;\n children?: ReactNode;\n}\n\nexport function TooltipRoot({\n open: controlledOpen,\n defaultOpen = TooltipCore.defaultProps.defaultOpen,\n onOpenChange: onOpenChangeProp,\n onOpenChangeComplete: onOpenChangeCompleteProp,\n delay = TooltipCore.defaultProps.delay,\n closeDelay = TooltipCore.defaultProps.closeDelay,\n disableHoverablePopup = TooltipCore.defaultProps.disableHoverablePopup,\n disabled = TooltipCore.defaultProps.disabled,\n boundary = 'container',\n children,\n ...coreProps\n}: TooltipRootProps): ReactNode {\n const container = useOptionalContainer();\n const popupGroup = useOptionalPopupGroup();\n const controls = useOptionalControlsContext();\n const [core] = useState(() => new TooltipCore(coreProps));\n core.setProps(coreProps);\n\n const isControlled = !isUndefined(controlledOpen);\n\n const groupFromContext = useTooltipGroup();\n\n // Keep refs that always point to the latest values so the\n // createTooltip closure never reads stale props.\n const onOpenChangeRef = useLatestRef(onOpenChangeProp);\n const onOpenChangeCompleteRef = useLatestRef(onOpenChangeCompleteProp);\n const delayRef = useLatestRef(delay);\n const closeDelayRef = useLatestRef(closeDelay);\n const disableHoverablePopupRef = useLatestRef(disableHoverablePopup);\n const disabledRef = useLatestRef(disabled);\n const groupRef = useLatestRef(groupFromContext);\n const popupGroupRef = useLatestRef(popupGroup);\n\n const [tooltip] = useState(() => {\n const instance = createTooltip({\n transition: createTransition(),\n onOpenChange: (nextOpen: boolean, details: TooltipChangeDetails) => {\n onOpenChangeRef.current?.(nextOpen, details);\n },\n onOpenChangeComplete: (nextOpen: boolean) => {\n onOpenChangeCompleteRef.current?.(nextOpen);\n },\n delay: () => delayRef.current,\n closeDelay: () => closeDelayRef.current,\n disableHoverablePopup: () => disableHoverablePopupRef.current,\n disabled: () => disabledRef.current,\n group: () => groupRef.current,\n popupGroup: () => popupGroupRef.current,\n });\n\n // Apply defaultOpen on creation (uncontrolled only)\n if (!isControlled && defaultOpen) {\n instance.open();\n }\n\n return instance;\n });\n\n const [content, setContent] = useState<TooltipContent | undefined>();\n\n const anchorName = useSafeId();\n const popupId = useSafeId('tooltip');\n\n // Sync controlled open prop -> internal input state.\n useEffect(() => {\n if (isUndefined(controlledOpen)) return;\n\n const { active: inputOpen } = tooltip.input.current;\n if (controlledOpen === inputOpen) return;\n\n if (controlledOpen) {\n tooltip.open();\n } else {\n tooltip.close();\n }\n }, [controlledOpen, tooltip]);\n\n useEffect(() => {\n if (isUndefined(controls?.state.visible)) return;\n if (controls.state.visible) return;\n\n tooltip.close('imperative-action');\n }, [controls?.state.visible, tooltip]);\n\n useDestroy(tooltip);\n\n const input = useSnapshot(tooltip.input);\n core.setInput(input);\n const { state, preferredSide, setPositionedSide } = usePositionedState(core.getState());\n\n return (\n <TooltipContextProvider\n value={{\n core,\n tooltip,\n state,\n preferredSide,\n setPositionedSide,\n stateAttrMap: TooltipDataAttrs,\n anchorName,\n popupId,\n content,\n setContent,\n boundary,\n container,\n }}\n >\n {children}\n </TooltipContextProvider>\n );\n}\n\nexport namespace TooltipRoot {\n export type Props = TooltipRootProps;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAiCA,SAAgB,YAAY,EAC1B,MAAM,gBACN,cAAc,YAAY,aAAa,aACvC,cAAc,kBACd,sBAAsB,0BACtB,QAAQ,YAAY,aAAa,OACjC,aAAa,YAAY,aAAa,YACtC,wBAAwB,YAAY,aAAa,uBACjD,WAAW,YAAY,aAAa,UACpC,WAAW,aACX,UACA,GAAG,aAC2B;CAC9B,MAAM,YAAY,qBAAqB;CACvC,MAAM,aAAa,sBAAsB;CACzC,MAAM,WAAW,2BAA2B;CAC5C,MAAM,CAAC,QAAQ,eAAe,IAAI,YAAY,SAAS,CAAC;CACxD,KAAK,SAAS,SAAS;CAEvB,MAAM,eAAe,CAAC,YAAY,cAAc;CAEhD,MAAM,mBAAmB,gBAAgB;CAIzC,MAAM,kBAAkB,aAAa,gBAAgB;CACrD,MAAM,0BAA0B,aAAa,wBAAwB;CACrE,MAAM,WAAW,aAAa,KAAK;CACnC,MAAM,gBAAgB,aAAa,UAAU;CAC7C,MAAM,2BAA2B,aAAa,qBAAqB;CACnE,MAAM,cAAc,aAAa,QAAQ;CACzC,MAAM,WAAW,aAAa,gBAAgB;CAC9C,MAAM,gBAAgB,aAAa,UAAU;CAE7C,MAAM,CAAC,WAAW,eAAe;EAC/B,MAAM,WAAW,cAAc;GAC7B,YAAY,iBAAiB;GAC7B,eAAe,UAAmB,YAAkC;IAClE,gBAAgB,UAAU,UAAU,OAAO;GAC7C;GACA,uBAAuB,aAAsB;IAC3C,wBAAwB,UAAU,QAAQ;GAC5C;GACA,aAAa,SAAS;GACtB,kBAAkB,cAAc;GAChC,6BAA6B,yBAAyB;GACtD,gBAAgB,YAAY;GAC5B,aAAa,SAAS;GACtB,kBAAkB,cAAc;EAClC,CAAC;EAGD,IAAI,CAAC,gBAAgB,aACnB,SAAS,KAAK;EAGhB,OAAO;CACT,CAAC;CAED,MAAM,CAAC,SAAS,cAAc,SAAqC;CAEnE,MAAM,aAAa,UAAU;CAC7B,MAAM,UAAU,UAAU,SAAS;CAGnC,gBAAgB;EACd,IAAI,YAAY,cAAc,GAAG;EAEjC,MAAM,EAAE,QAAQ,cAAc,QAAQ,MAAM;EAC5C,IAAI,mBAAmB,WAAW;EAElC,IAAI,gBACF,QAAQ,KAAK;OAEb,QAAQ,MAAM;CAElB,GAAG,CAAC,gBAAgB,OAAO,CAAC;CAE5B,gBAAgB;EACd,IAAI,YAAY,UAAU,MAAM,OAAO,GAAG;EAC1C,IAAI,SAAS,MAAM,SAAS;EAE5B,QAAQ,MAAM,mBAAmB;CACnC,GAAG,CAAC,UAAU,MAAM,SAAS,OAAO,CAAC;CAErC,WAAW,OAAO;CAElB,MAAM,QAAQ,YAAY,QAAQ,KAAK;CACvC,KAAK,SAAS,KAAK;CACnB,MAAM,EAAE,OAAO,eAAe,sBAAsB,mBAAmB,KAAK,SAAS,CAAC;CAEtF,OACE,oBAAC,wBAAD;EACE,OAAO;GACL;GACA;GACA;GACA;GACA;GACA,cAAc;GACd;GACA;GACA;GACA;GACA;GACA;EACF;EAEC;CACqB,CAAA;AAE5B"}
1
+ {"version":3,"file":"tooltip-root.js","names":[],"sources":["../../../../src/ui/tooltip/tooltip-root.tsx"],"sourcesContent":["import { type TooltipProps as CoreTooltipProps, TooltipCore, TooltipDataAttrs } from '@videojs/core';\nimport {\n createTooltip,\n createTransition,\n type PositioningBoundary,\n type TooltipChangeDetails,\n} from '@videojs/core/dom';\nimport { useSnapshot } from '@videojs/store/react';\nimport { isUndefined } from '@videojs/utils/predicate';\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useOptionalContainer } from '../../player/context';\nimport { useOptionalPopupGroup } from '../../player/popup-group-context';\nimport { useDestroy } from '../../utils/use-destroy';\nimport { useLatestRef } from '../../utils/use-latest-ref';\nimport { useSafeId } from '../../utils/use-safe-id';\nimport { useOptionalControlsContext } from '../controls/context';\nimport { usePositionedState } from '../hooks/use-positioned-state';\nimport { type TooltipContent, TooltipContextProvider } from './context';\nimport { useTooltipGroup } from './group-context';\n\nexport interface TooltipRootProps extends CoreTooltipProps {\n /** Boundary used to constrain the popup size. */\n boundary?: PositioningBoundary;\n /** Called when the tooltip open state changes (fires immediately, before animations). */\n onOpenChange?: (open: boolean, details: TooltipChangeDetails) => void;\n /** Called after open/close animations complete. */\n onOpenChangeComplete?: (open: boolean) => void;\n children?: ReactNode;\n}\n\nexport function TooltipRoot({\n open: controlledOpen,\n defaultOpen = TooltipCore.defaultProps.defaultOpen,\n onOpenChange: onOpenChangeProp,\n onOpenChangeComplete: onOpenChangeCompleteProp,\n delay = TooltipCore.defaultProps.delay,\n closeDelay = TooltipCore.defaultProps.closeDelay,\n disableHoverablePopup = TooltipCore.defaultProps.disableHoverablePopup,\n disabled = TooltipCore.defaultProps.disabled,\n boundary = 'container',\n children,\n ...coreProps\n}: TooltipRootProps): ReactNode {\n const container = useOptionalContainer();\n const popupGroup = useOptionalPopupGroup();\n const controls = useOptionalControlsContext();\n const [core] = useState(() => new TooltipCore(coreProps));\n core.setProps(coreProps);\n\n const isControlled = !isUndefined(controlledOpen);\n\n const groupFromContext = useTooltipGroup();\n\n // Keep refs that always point to the latest values so the\n // createTooltip closure never reads stale props.\n const onOpenChangeRef = useLatestRef(onOpenChangeProp);\n const onOpenChangeCompleteRef = useLatestRef(onOpenChangeCompleteProp);\n const delayRef = useLatestRef(delay);\n const closeDelayRef = useLatestRef(closeDelay);\n const disableHoverablePopupRef = useLatestRef(disableHoverablePopup);\n const disabledRef = useLatestRef(disabled);\n const groupRef = useLatestRef(groupFromContext);\n const popupGroupRef = useLatestRef(popupGroup);\n\n const [tooltip] = useState(() => {\n const instance = createTooltip({\n transition: createTransition(),\n onOpenChange: (nextOpen: boolean, details: TooltipChangeDetails) => {\n onOpenChangeRef.current?.(nextOpen, details);\n },\n onOpenChangeComplete: (nextOpen: boolean) => {\n onOpenChangeCompleteRef.current?.(nextOpen);\n },\n delay: () => delayRef.current,\n closeDelay: () => closeDelayRef.current,\n disableHoverablePopup: () => disableHoverablePopupRef.current,\n disabled: () => disabledRef.current,\n group: () => groupRef.current,\n popupGroup: () => popupGroupRef.current,\n });\n\n // Apply defaultOpen on creation (uncontrolled only)\n if (!isControlled && defaultOpen) {\n instance.open();\n }\n\n return instance;\n });\n\n const [content, setContent] = useState<TooltipContent | undefined>();\n\n const anchorName = useSafeId();\n const popupId = useSafeId('tooltip');\n\n // Sync controlled open prop -> internal input state.\n useEffect(() => {\n if (isUndefined(controlledOpen)) return;\n\n const { active: inputOpen } = tooltip.input.current;\n if (controlledOpen === inputOpen) return;\n\n if (controlledOpen) {\n tooltip.open();\n } else {\n tooltip.close();\n }\n }, [controlledOpen, tooltip]);\n\n useEffect(() => {\n if (isUndefined(controls?.state.visible)) return;\n if (controls.state.visible) return;\n\n tooltip.close('imperative-action');\n }, [controls?.state.visible, tooltip]);\n\n useDestroy(tooltip);\n\n const input = useSnapshot(tooltip.input);\n core.setInput(input);\n const { state, preferredSide, setPositionedSide } = usePositionedState(core.getState());\n\n return (\n <TooltipContextProvider\n value={{\n core,\n tooltip,\n state,\n preferredSide,\n setPositionedSide,\n stateAttrMap: TooltipDataAttrs,\n anchorName,\n popupId,\n content,\n setContent,\n boundary,\n container,\n }}\n >\n {children}\n </TooltipContextProvider>\n );\n}\n\nexport namespace TooltipRoot {\n export type Props = TooltipRootProps;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA+BA,SAAgB,YAAY,EAC1B,MAAM,gBACN,cAAc,YAAY,aAAa,aACvC,cAAc,kBACd,sBAAsB,0BACtB,QAAQ,YAAY,aAAa,OACjC,aAAa,YAAY,aAAa,YACtC,wBAAwB,YAAY,aAAa,uBACjD,WAAW,YAAY,aAAa,UACpC,WAAW,aACX,UACA,GAAG,aAC2B;CAC9B,MAAM,YAAY,qBAAqB;CACvC,MAAM,aAAa,sBAAsB;CACzC,MAAM,WAAW,2BAA2B;CAC5C,MAAM,CAAC,QAAQ,eAAe,IAAI,YAAY,SAAS,CAAC;CACxD,KAAK,SAAS,SAAS;CAEvB,MAAM,eAAe,CAAC,YAAY,cAAc;CAEhD,MAAM,mBAAmB,gBAAgB;CAIzC,MAAM,kBAAkB,aAAa,gBAAgB;CACrD,MAAM,0BAA0B,aAAa,wBAAwB;CACrE,MAAM,WAAW,aAAa,KAAK;CACnC,MAAM,gBAAgB,aAAa,UAAU;CAC7C,MAAM,2BAA2B,aAAa,qBAAqB;CACnE,MAAM,cAAc,aAAa,QAAQ;CACzC,MAAM,WAAW,aAAa,gBAAgB;CAC9C,MAAM,gBAAgB,aAAa,UAAU;CAE7C,MAAM,CAAC,WAAW,eAAe;EAC/B,MAAM,WAAW,cAAc;GAC7B,YAAY,iBAAiB;GAC7B,eAAe,UAAmB,YAAkC;IAClE,gBAAgB,UAAU,UAAU,OAAO;GAC7C;GACA,uBAAuB,aAAsB;IAC3C,wBAAwB,UAAU,QAAQ;GAC5C;GACA,aAAa,SAAS;GACtB,kBAAkB,cAAc;GAChC,6BAA6B,yBAAyB;GACtD,gBAAgB,YAAY;GAC5B,aAAa,SAAS;GACtB,kBAAkB,cAAc;EAClC,CAAC;EAGD,IAAI,CAAC,gBAAgB,aACnB,SAAS,KAAK;EAGhB,OAAO;CACT,CAAC;CAED,MAAM,CAAC,SAAS,cAAc,SAAqC;CAEnE,MAAM,aAAa,UAAU;CAC7B,MAAM,UAAU,UAAU,SAAS;CAGnC,gBAAgB;EACd,IAAI,YAAY,cAAc,GAAG;EAEjC,MAAM,EAAE,QAAQ,cAAc,QAAQ,MAAM;EAC5C,IAAI,mBAAmB,WAAW;EAElC,IAAI,gBACF,QAAQ,KAAK;OAEb,QAAQ,MAAM;CAElB,GAAG,CAAC,gBAAgB,OAAO,CAAC;CAE5B,gBAAgB;EACd,IAAI,YAAY,UAAU,MAAM,OAAO,GAAG;EAC1C,IAAI,SAAS,MAAM,SAAS;EAE5B,QAAQ,MAAM,mBAAmB;CACnC,GAAG,CAAC,UAAU,MAAM,SAAS,OAAO,CAAC;CAErC,WAAW,OAAO;CAElB,MAAM,QAAQ,YAAY,QAAQ,KAAK;CACvC,KAAK,SAAS,KAAK;CACnB,MAAM,EAAE,OAAO,eAAe,sBAAsB,mBAAmB,KAAK,SAAS,CAAC;CAEtF,OACE,oBAAC,wBAAD;EACE,OAAO;GACL;GACA;GACA;GACA;GACA;GACA,cAAc;GACd;GACA;GACA;GACA;GACA;GACA;EACF;EAEC;CACqB,CAAA;AAE5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-shortcut.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-shortcut.tsx"],"mappings":";;;UASiB,6BAA6B,wBAAwB;;cAGzD,iCAAe,0BAAA,KAAA,+CAAA,cAAA;kBAuBX;OACH,QAAQ;OACR,QAAQ"}
1
+ {"version":3,"file":"tooltip-shortcut.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-shortcut.tsx"],"mappings":";;;UAOiB,6BAA6B,wBAAwB;;cAGzD,iCAAe,0BAAA,KAAA,+CAAA,cAAA;kBAuBX;OACH,QAAQ;OACR,QAAQ"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { renderElement } from "../../utils/use-render.js";
3
2
  import { useTooltipContext } from "./context.js";
4
3
  import { forwardRef } from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-shortcut.js","names":[],"sources":["../../../../src/ui/tooltip/tooltip-shortcut.tsx"],"sourcesContent":["'use client';\n\nimport type { TooltipState } from '@videojs/core';\nimport { forwardRef } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useTooltipContext } from './context';\n\nexport interface TooltipShortcutProps extends UIComponentProps<'kbd', TooltipState> {}\n\n/** Keyboard shortcut hint; apply skin `className` (CSS: `media-tooltip__kbd`; Tailwind: `popup.tooltipShortcut`). */\nexport const TooltipShortcut = forwardRef<HTMLElement, TooltipShortcutProps>(function TooltipShortcut(\n { render, className, style, children, ...elementProps },\n forwardedRef\n) {\n const { state, stateAttrMap, content } = useTooltipContext();\n const shortcut = children !== undefined && children !== null ? children : (content?.shortcut ?? null);\n\n if (!shortcut) {\n return null;\n }\n\n return renderElement(\n 'kbd',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: forwardedRef,\n props: [elementProps, { children: shortcut }],\n }\n );\n});\n\nexport namespace TooltipShortcut {\n export type Props = TooltipShortcutProps;\n export type State = TooltipState;\n}\n"],"mappings":";;;;;;AAYA,MAAa,kBAAkB,WAA8C,SAAS,gBACpF,EAAE,QAAQ,WAAW,OAAO,UAAU,GAAG,gBACzC,cACA;CACA,MAAM,EAAE,OAAO,cAAc,YAAY,kBAAkB;CAC3D,MAAM,WAAW,aAAa,KAAA,KAAa,aAAa,OAAO,WAAY,SAAS,YAAY;CAEhG,IAAI,CAAC,UACH,OAAO;CAGT,OAAO,cACL,OACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA;EACA,KAAK;EACL,OAAO,CAAC,cAAc,EAAE,UAAU,SAAS,CAAC;CAC9C,CACF;AACF,CAAC"}
1
+ {"version":3,"file":"tooltip-shortcut.js","names":[],"sources":["../../../../src/ui/tooltip/tooltip-shortcut.tsx"],"sourcesContent":["import type { TooltipState } from '@videojs/core';\nimport { forwardRef } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useTooltipContext } from './context';\n\nexport interface TooltipShortcutProps extends UIComponentProps<'kbd', TooltipState> {}\n\n/** Keyboard shortcut hint; apply skin `className` (CSS: `media-tooltip__kbd`; Tailwind: `popup.tooltipShortcut`). */\nexport const TooltipShortcut = forwardRef<HTMLElement, TooltipShortcutProps>(function TooltipShortcut(\n { render, className, style, children, ...elementProps },\n forwardedRef\n) {\n const { state, stateAttrMap, content } = useTooltipContext();\n const shortcut = children !== undefined && children !== null ? children : (content?.shortcut ?? null);\n\n if (!shortcut) {\n return null;\n }\n\n return renderElement(\n 'kbd',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: forwardedRef,\n props: [elementProps, { children: shortcut }],\n }\n );\n});\n\nexport namespace TooltipShortcut {\n export type Props = TooltipShortcutProps;\n export type State = TooltipState;\n}\n"],"mappings":";;;;;AAUA,MAAa,kBAAkB,WAA8C,SAAS,gBACpF,EAAE,QAAQ,WAAW,OAAO,UAAU,GAAG,gBACzC,cACA;CACA,MAAM,EAAE,OAAO,cAAc,YAAY,kBAAkB;CAC3D,MAAM,WAAW,aAAa,KAAA,KAAa,aAAa,OAAO,WAAY,SAAS,YAAY;CAEhG,IAAI,CAAC,UACH,OAAO;CAGT,OAAO,cACL,OACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA;EACA,KAAK;EACL,OAAO,CAAC,cAAc,EAAE,UAAU,SAAS,CAAC;CAC9C,CACF;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-trigger.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-trigger.tsx"],"mappings":";;;UASiB,4BAA4B,2BAA2B;;cAG3D,gCAAc,0BAAA,KAAA,8CAAA,cAAA;kBAoCV;OACH,QAAQ;OACR,QAAQ"}
1
+ {"version":3,"file":"tooltip-trigger.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-trigger.tsx"],"mappings":";;;UAOiB,4BAA4B,2BAA2B;;cAG3D,gCAAc,0BAAA,KAAA,8CAAA,cAAA;kBAoCV;OACH,QAAQ;OACR,QAAQ"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { renderElement } from "../../utils/use-render.js";
3
2
  import { useTooltipContext } from "./context.js";
4
3
  import { forwardRef, useCallback } from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-trigger.js","names":[],"sources":["../../../../src/ui/tooltip/tooltip-trigger.tsx"],"sourcesContent":["'use client';\n\nimport type { TooltipState } from '@videojs/core';\nimport { forwardRef, useCallback } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useTooltipContext } from './context';\n\nexport interface TooltipTriggerProps extends UIComponentProps<'button', TooltipState> {}\n\n/** Element that triggers the tooltip on hover and focus. Renders a `<button>` element. */\nexport const TooltipTrigger = forwardRef<HTMLButtonElement, TooltipTriggerProps>(function TooltipTrigger(\n { render, className, style, ...elementProps },\n forwardedRef\n) {\n const { tooltip, state, stateAttrMap } = useTooltipContext();\n\n const triggerRef = useCallback(\n (el: HTMLButtonElement | null) => {\n tooltip.setTriggerElement(el);\n },\n [tooltip]\n );\n\n // Remap DOM focus events to React synthetic event names.\n // createTooltip() uses onFocusIn/onFocusOut (matching DOM focusin/focusout),\n // but React maps those to onFocus/onBlur.\n const { onFocusIn, onFocusOut, ...restTriggerProps } = tooltip.triggerProps;\n\n return renderElement(\n 'button',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: [forwardedRef, triggerRef],\n props: [\n {\n type: 'button' as const,\n },\n { ...restTriggerProps, onFocus: onFocusIn, onBlur: onFocusOut },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace TooltipTrigger {\n export type Props = TooltipTriggerProps;\n export type State = TooltipState;\n}\n"],"mappings":";;;;;;AAYA,MAAa,iBAAiB,WAAmD,SAAS,eACxF,EAAE,QAAQ,WAAW,OAAO,GAAG,gBAC/B,cACA;CACA,MAAM,EAAE,SAAS,OAAO,iBAAiB,kBAAkB;CAE3D,MAAM,aAAa,aAChB,OAAiC;EAChC,QAAQ,kBAAkB,EAAE;CAC9B,GACA,CAAC,OAAO,CACV;CAKA,MAAM,EAAE,WAAW,YAAY,GAAG,qBAAqB,QAAQ;CAE/D,OAAO,cACL,UACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA;EACA,KAAK,CAAC,cAAc,UAAU;EAC9B,OAAO;GACL,EACE,MAAM,SACR;GACA;IAAE,GAAG;IAAkB,SAAS;IAAW,QAAQ;GAAW;GAC9D;EACF;CACF,CACF;AACF,CAAC"}
1
+ {"version":3,"file":"tooltip-trigger.js","names":[],"sources":["../../../../src/ui/tooltip/tooltip-trigger.tsx"],"sourcesContent":["import type { TooltipState } from '@videojs/core';\nimport { forwardRef, useCallback } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useTooltipContext } from './context';\n\nexport interface TooltipTriggerProps extends UIComponentProps<'button', TooltipState> {}\n\n/** Element that triggers the tooltip on hover and focus. Renders a `<button>` element. */\nexport const TooltipTrigger = forwardRef<HTMLButtonElement, TooltipTriggerProps>(function TooltipTrigger(\n { render, className, style, ...elementProps },\n forwardedRef\n) {\n const { tooltip, state, stateAttrMap } = useTooltipContext();\n\n const triggerRef = useCallback(\n (el: HTMLButtonElement | null) => {\n tooltip.setTriggerElement(el);\n },\n [tooltip]\n );\n\n // Remap DOM focus events to React synthetic event names.\n // createTooltip() uses onFocusIn/onFocusOut (matching DOM focusin/focusout),\n // but React maps those to onFocus/onBlur.\n const { onFocusIn, onFocusOut, ...restTriggerProps } = tooltip.triggerProps;\n\n return renderElement(\n 'button',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: [forwardedRef, triggerRef],\n props: [\n {\n type: 'button' as const,\n },\n { ...restTriggerProps, onFocus: onFocusIn, onBlur: onFocusOut },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace TooltipTrigger {\n export type Props = TooltipTriggerProps;\n export type State = TooltipState;\n}\n"],"mappings":";;;;;AAUA,MAAa,iBAAiB,WAAmD,SAAS,eACxF,EAAE,QAAQ,WAAW,OAAO,GAAG,gBAC/B,cACA;CACA,MAAM,EAAE,SAAS,OAAO,iBAAiB,kBAAkB;CAE3D,MAAM,aAAa,aAChB,OAAiC;EAChC,QAAQ,kBAAkB,EAAE;CAC9B,GACA,CAAC,OAAO,CACV;CAKA,MAAM,EAAE,WAAW,YAAY,GAAG,qBAAqB,QAAQ;CAE/D,OAAO,cACL,UACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA;EACA,KAAK,CAAC,cAAc,UAAU;EAC9B,OAAO;GACL,EACE,MAAM,SACR;GACA;IAAE,GAAG;IAAkB,SAAS;IAAW,QAAQ;GAAW;GAC9D;EACF;CACF,CACF;AACF,CAAC"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { createContext, useContext } from "react";
3
2
  import { jsx } from "react/jsx-runtime";
4
3
  //#region src/ui/volume-indicator/context.tsx
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/volume-indicator/context.tsx"],"sourcesContent":["'use client';\n\nimport type { VolumeIndicatorCore } from '@videojs/core';\nimport { createContext, type ProviderProps, useContext } from 'react';\n\nexport interface VolumeIndicatorContextValue {\n state: VolumeIndicatorCore.State;\n}\n\nconst VolumeIndicatorContext = createContext<VolumeIndicatorContextValue | null>(null);\n\nexport function VolumeIndicatorProvider({ value, children }: ProviderProps<VolumeIndicatorContextValue>) {\n return <VolumeIndicatorContext.Provider value={value}>{children}</VolumeIndicatorContext.Provider>;\n}\n\nexport function useVolumeIndicatorContext(): VolumeIndicatorContextValue {\n const ctx = useContext(VolumeIndicatorContext);\n if (!ctx) throw new Error('VolumeIndicator child compounds must be used within a VolumeIndicator.Root');\n return ctx;\n}\n"],"mappings":";;;;AASA,MAAM,yBAAyB,cAAkD,IAAI;AAErF,SAAgB,wBAAwB,EAAE,OAAO,YAAwD;CACvG,OAAO,oBAAC,uBAAuB,UAAxB;EAAwC;EAAQ;CAA0C,CAAA;AACnG;AAEA,SAAgB,4BAAyD;CACvE,MAAM,MAAM,WAAW,sBAAsB;CAC7C,IAAI,CAAC,KAAK,MAAM,IAAI,MAAM,4EAA4E;CACtG,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/volume-indicator/context.tsx"],"sourcesContent":["import type { VolumeIndicatorCore } from '@videojs/core';\nimport { createContext, type ProviderProps, useContext } from 'react';\n\nexport interface VolumeIndicatorContextValue {\n state: VolumeIndicatorCore.State;\n}\n\nconst VolumeIndicatorContext = createContext<VolumeIndicatorContextValue | null>(null);\n\nexport function VolumeIndicatorProvider({ value, children }: ProviderProps<VolumeIndicatorContextValue>) {\n return <VolumeIndicatorContext.Provider value={value}>{children}</VolumeIndicatorContext.Provider>;\n}\n\nexport function useVolumeIndicatorContext(): VolumeIndicatorContextValue {\n const ctx = useContext(VolumeIndicatorContext);\n if (!ctx) throw new Error('VolumeIndicator child compounds must be used within a VolumeIndicator.Root');\n return ctx;\n}\n"],"mappings":";;;AAOA,MAAM,yBAAyB,cAAkD,IAAI;AAErF,SAAgB,wBAAwB,EAAE,OAAO,YAAwD;CACvG,OAAO,oBAAC,uBAAuB,UAAxB;EAAwC;EAAQ;CAA0C,CAAA;AACnG;AAEA,SAAgB,4BAAyD;CACvE,MAAM,MAAM,WAAW,sBAAsB;CAC7C,IAAI,CAAC,KAAK,MAAM,IAAI,MAAM,4EAA4E;CACtG,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"volume-indicator-fill.d.ts","names":[],"sources":["../../../../src/ui/volume-indicator/volume-indicator-fill.tsx"],"mappings":";;;UAWiB,iCAAiC,wBAAwB,oBAAoB;cAEjF,qCAAmB,0BAAA,KAAA,mDAAA,cAAA;kBAmBf;OACH,QAAQ"}
1
+ {"version":3,"file":"volume-indicator-fill.d.ts","names":[],"sources":["../../../../src/ui/volume-indicator/volume-indicator-fill.tsx"],"mappings":";;;UASiB,iCAAiC,wBAAwB,oBAAoB;cAEjF,qCAAmB,0BAAA,KAAA,mDAAA,cAAA;kBAmBf;OACH,QAAQ"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { renderElement } from "../../utils/use-render.js";
3
2
  import { useVolumeIndicatorContext } from "./context.js";
4
3
  import { forwardRef } from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"volume-indicator-fill.js","names":[],"sources":["../../../../src/ui/volume-indicator/volume-indicator-fill.tsx"],"sourcesContent":["'use client';\n\nimport { type VolumeIndicatorCore, VolumeIndicatorCSSVars } from '@videojs/core';\nimport { isFunction } from '@videojs/utils/predicate';\nimport type { CSSProperties, ForwardedRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useVolumeIndicatorContext } from './context';\n\nexport interface VolumeIndicatorFillProps extends UIComponentProps<'div', VolumeIndicatorCore.State> {}\n\nexport const VolumeIndicatorFill = forwardRef(function VolumeIndicatorFill(\n componentProps: VolumeIndicatorFillProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const { render, className, style, ...elementProps } = componentProps;\n const { state } = useVolumeIndicatorContext();\n const fillStyle = getVolumeIndicatorFillStyle(state, style);\n\n return renderElement(\n 'div',\n { render, className, style: fillStyle },\n {\n state,\n ref: forwardedRef,\n props: [elementProps],\n }\n );\n});\n\nexport namespace VolumeIndicatorFill {\n export type Props = VolumeIndicatorFillProps;\n}\n\nfunction getVolumeIndicatorFillStyle(\n state: VolumeIndicatorCore.State,\n style: VolumeIndicatorFillProps['style']\n): VolumeIndicatorFillProps['style'] {\n const vars = state.fill\n ? ({\n [VolumeIndicatorCSSVars.fill]: state.fill,\n } as CSSProperties)\n : undefined;\n\n if (!vars) return style;\n\n if (isFunction(style)) {\n return (nextState) => ({\n ...style(nextState),\n ...vars,\n });\n }\n\n return {\n ...style,\n ...vars,\n };\n}\n"],"mappings":";;;;;;;AAaA,MAAa,sBAAsB,WAAW,SAAS,oBACrD,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,GAAG,iBAAiB;CACtD,MAAM,EAAE,UAAU,0BAA0B;CAG5C,OAAO,cACL,OACA;EAAE;EAAQ;EAAW,OAJL,4BAA4B,OAAO,KAIf;CAAE,GACtC;EACE;EACA,KAAK;EACL,OAAO,CAAC,YAAY;CACtB,CACF;AACF,CAAC;AAMD,SAAS,4BACP,OACA,OACmC;CACnC,MAAM,OAAO,MAAM,OACd,GACE,uBAAuB,OAAO,MAAM,KACvC,IACA,KAAA;CAEJ,IAAI,CAAC,MAAM,OAAO;CAElB,IAAI,WAAW,KAAK,GAClB,QAAQ,eAAe;EACrB,GAAG,MAAM,SAAS;EAClB,GAAG;CACL;CAGF,OAAO;EACL,GAAG;EACH,GAAG;CACL;AACF"}
1
+ {"version":3,"file":"volume-indicator-fill.js","names":[],"sources":["../../../../src/ui/volume-indicator/volume-indicator-fill.tsx"],"sourcesContent":["import { type VolumeIndicatorCore, VolumeIndicatorCSSVars } from '@videojs/core';\nimport { isFunction } from '@videojs/utils/predicate';\nimport type { CSSProperties, ForwardedRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useVolumeIndicatorContext } from './context';\n\nexport interface VolumeIndicatorFillProps extends UIComponentProps<'div', VolumeIndicatorCore.State> {}\n\nexport const VolumeIndicatorFill = forwardRef(function VolumeIndicatorFill(\n componentProps: VolumeIndicatorFillProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const { render, className, style, ...elementProps } = componentProps;\n const { state } = useVolumeIndicatorContext();\n const fillStyle = getVolumeIndicatorFillStyle(state, style);\n\n return renderElement(\n 'div',\n { render, className, style: fillStyle },\n {\n state,\n ref: forwardedRef,\n props: [elementProps],\n }\n );\n});\n\nexport namespace VolumeIndicatorFill {\n export type Props = VolumeIndicatorFillProps;\n}\n\nfunction getVolumeIndicatorFillStyle(\n state: VolumeIndicatorCore.State,\n style: VolumeIndicatorFillProps['style']\n): VolumeIndicatorFillProps['style'] {\n const vars = state.fill\n ? ({\n [VolumeIndicatorCSSVars.fill]: state.fill,\n } as CSSProperties)\n : undefined;\n\n if (!vars) return style;\n\n if (isFunction(style)) {\n return (nextState) => ({\n ...style(nextState),\n ...vars,\n });\n }\n\n return {\n ...style,\n ...vars,\n };\n}\n"],"mappings":";;;;;;AAWA,MAAa,sBAAsB,WAAW,SAAS,oBACrD,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,GAAG,iBAAiB;CACtD,MAAM,EAAE,UAAU,0BAA0B;CAG5C,OAAO,cACL,OACA;EAAE;EAAQ;EAAW,OAJL,4BAA4B,OAAO,KAIf;CAAE,GACtC;EACE;EACA,KAAK;EACL,OAAO,CAAC,YAAY;CACtB,CACF;AACF,CAAC;AAMD,SAAS,4BACP,OACA,OACmC;CACnC,MAAM,OAAO,MAAM,OACd,GACE,uBAAuB,OAAO,MAAM,KACvC,IACA,KAAA;CAEJ,IAAI,CAAC,MAAM,OAAO;CAElB,IAAI,WAAW,KAAK,GAClB,QAAQ,eAAe;EACrB,GAAG,MAAM,SAAS;EAClB,GAAG;CACL;CAGF,OAAO;EACL,GAAG;EACH,GAAG;CACL;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"volume-indicator-root.d.ts","names":[],"sources":["../../../../src/ui/volume-indicator/volume-indicator-root.tsx"],"mappings":";;;UAYiB,iCACP,wBAAwB,oBAAoB,QAClD,KAAK,oBAAoB;cAEhB,qCAAmB,0BAAA,KAAA,mDAAA,cAAA;kBAiCf;OACH,QAAQ;OACR,QAAQ,oBAAoB"}
1
+ {"version":3,"file":"volume-indicator-root.d.ts","names":[],"sources":["../../../../src/ui/volume-indicator/volume-indicator-root.tsx"],"mappings":";;;UAUiB,iCACP,wBAAwB,oBAAoB,QAClD,KAAK,oBAAoB;cAEhB,qCAAmB,0BAAA,KAAA,mDAAA,cAAA;kBAiCf;OACH,QAAQ;OACR,QAAQ,oBAAoB"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { useTranslator } from "../../i18n/context.js";
3
2
  import { renderElement } from "../../utils/use-render.js";
4
3
  import { useInputIndicatorRoot } from "../input-indicator/use-input-indicator-root.js";
@@ -1 +1 @@
1
- {"version":3,"file":"volume-indicator-root.js","names":[],"sources":["../../../../src/ui/volume-indicator/volume-indicator-root.tsx"],"sourcesContent":["'use client';\n\nimport { createInputIndicatorLabels, VolumeIndicatorCore, VolumeIndicatorDataAttrs } from '@videojs/core';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport { useTranslator } from '../../i18n/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useInputIndicatorRoot } from '../input-indicator/use-input-indicator-root';\nimport { VolumeIndicatorProvider } from './context';\n\nexport interface VolumeIndicatorRootProps\n extends UIComponentProps<'div', VolumeIndicatorCore.State>,\n Omit<VolumeIndicatorCore.Props, 'labels'> {}\n\nexport const VolumeIndicatorRoot = forwardRef(function VolumeIndicatorRoot(\n componentProps: VolumeIndicatorRootProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const { render, className, style, closeDelay, ...elementProps } = componentProps;\n const translator = useTranslator();\n const { elementRef, present, state } = useInputIndicatorRoot(\n () => new VolumeIndicatorCore(),\n {\n closeDelay,\n labels: createInputIndicatorLabels(translator),\n },\n { replayOnUpdate: false }\n );\n\n if (!present) return null;\n\n return (\n <VolumeIndicatorProvider value={{ state }}>\n {renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: VolumeIndicatorDataAttrs,\n ref: [forwardedRef, elementRef],\n props: [elementProps],\n }\n )}\n </VolumeIndicatorProvider>\n );\n});\n\nexport namespace VolumeIndicatorRoot {\n export type Props = VolumeIndicatorRootProps;\n export type State = VolumeIndicatorCore.State;\n}\n"],"mappings":";;;;;;;;;AAgBA,MAAa,sBAAsB,WAAW,SAAS,oBACrD,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,YAAY,GAAG,iBAAiB;CAElE,MAAM,EAAE,YAAY,SAAS,UAAU,4BAC/B,IAAI,oBAAoB,GAC9B;EACE;EACA,QAAQ,2BALO,cAK6B,CAAC;CAC/C,GACA,EAAE,gBAAgB,MAAM,CAC1B;CAEA,IAAI,CAAC,SAAS,OAAO;CAErB,OACE,oBAAC,yBAAD;EAAyB,OAAO,EAAE,MAAM;EACrC,UAAA,cACC,OACA;GAAE;GAAQ;GAAW;EAAM,GAC3B;GACE;GACA,cAAc;GACd,KAAK,CAAC,cAAc,UAAU;GAC9B,OAAO,CAAC,YAAY;EACtB,CACF;CACuB,CAAA;AAE7B,CAAC"}
1
+ {"version":3,"file":"volume-indicator-root.js","names":[],"sources":["../../../../src/ui/volume-indicator/volume-indicator-root.tsx"],"sourcesContent":["import { createInputIndicatorLabels, VolumeIndicatorCore, VolumeIndicatorDataAttrs } from '@videojs/core';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport { useTranslator } from '../../i18n/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useInputIndicatorRoot } from '../input-indicator/use-input-indicator-root';\nimport { VolumeIndicatorProvider } from './context';\n\nexport interface VolumeIndicatorRootProps\n extends UIComponentProps<'div', VolumeIndicatorCore.State>,\n Omit<VolumeIndicatorCore.Props, 'labels'> {}\n\nexport const VolumeIndicatorRoot = forwardRef(function VolumeIndicatorRoot(\n componentProps: VolumeIndicatorRootProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const { render, className, style, closeDelay, ...elementProps } = componentProps;\n const translator = useTranslator();\n const { elementRef, present, state } = useInputIndicatorRoot(\n () => new VolumeIndicatorCore(),\n {\n closeDelay,\n labels: createInputIndicatorLabels(translator),\n },\n { replayOnUpdate: false }\n );\n\n if (!present) return null;\n\n return (\n <VolumeIndicatorProvider value={{ state }}>\n {renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: VolumeIndicatorDataAttrs,\n ref: [forwardedRef, elementRef],\n props: [elementProps],\n }\n )}\n </VolumeIndicatorProvider>\n );\n});\n\nexport namespace VolumeIndicatorRoot {\n export type Props = VolumeIndicatorRootProps;\n export type State = VolumeIndicatorCore.State;\n}\n"],"mappings":";;;;;;;;AAcA,MAAa,sBAAsB,WAAW,SAAS,oBACrD,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,YAAY,GAAG,iBAAiB;CAElE,MAAM,EAAE,YAAY,SAAS,UAAU,4BAC/B,IAAI,oBAAoB,GAC9B;EACE;EACA,QAAQ,2BALO,cAK6B,CAAC;CAC/C,GACA,EAAE,gBAAgB,MAAM,CAC1B;CAEA,IAAI,CAAC,SAAS,OAAO;CAErB,OACE,oBAAC,yBAAD;EAAyB,OAAO,EAAE,MAAM;EACrC,UAAA,cACC,OACA;GAAE;GAAQ;GAAW;EAAM,GAC3B;GACE;GACA,cAAc;GACd,KAAK,CAAC,cAAc,UAAU;GAC9B,OAAO,CAAC,YAAY;EACtB,CACF;CACuB,CAAA;AAE7B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"volume-indicator-value.d.ts","names":[],"sources":["../../../../src/ui/volume-indicator/volume-indicator-value.tsx"],"mappings":";;;UAUiB,kCAAkC,yBAAyB,oBAAoB;cAEnF,sCAAoB,0BAAA,KAAA,oDAAA,cAAA;kBAkBhB;OACH,QAAQ"}
1
+ {"version":3,"file":"volume-indicator-value.d.ts","names":[],"sources":["../../../../src/ui/volume-indicator/volume-indicator-value.tsx"],"mappings":";;;UAQiB,kCAAkC,yBAAyB,oBAAoB;cAEnF,sCAAoB,0BAAA,KAAA,oDAAA,cAAA;kBAkBhB;OACH,QAAQ"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { renderElement } from "../../utils/use-render.js";
3
2
  import { useVolumeIndicatorContext } from "./context.js";
4
3
  import { forwardRef } from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"volume-indicator-value.js","names":[],"sources":["../../../../src/ui/volume-indicator/volume-indicator-value.tsx"],"sourcesContent":["'use client';\n\nimport { getVolumeIndicatorDisplayValue, type VolumeIndicatorCore } from '@videojs/core';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useVolumeIndicatorContext } from './context';\n\nexport interface VolumeIndicatorValueProps extends UIComponentProps<'span', VolumeIndicatorCore.State> {}\n\nexport const VolumeIndicatorValue = forwardRef(function VolumeIndicatorValue(\n componentProps: VolumeIndicatorValueProps,\n forwardedRef: ForwardedRef<HTMLSpanElement>\n) {\n const { render, className, style, ...elementProps } = componentProps;\n const { state } = useVolumeIndicatorContext();\n\n return renderElement(\n 'span',\n { render, className, style },\n {\n state,\n ref: forwardedRef,\n props: [{ children: getVolumeIndicatorDisplayValue(state) }, elementProps],\n }\n );\n});\n\nexport namespace VolumeIndicatorValue {\n export type Props = VolumeIndicatorValueProps;\n}\n"],"mappings":";;;;;;AAYA,MAAa,uBAAuB,WAAW,SAAS,qBACtD,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,GAAG,iBAAiB;CACtD,MAAM,EAAE,UAAU,0BAA0B;CAE5C,OAAO,cACL,QACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA,KAAK;EACL,OAAO,CAAC,EAAE,UAAU,+BAA+B,KAAK,EAAE,GAAG,YAAY;CAC3E,CACF;AACF,CAAC"}
1
+ {"version":3,"file":"volume-indicator-value.js","names":[],"sources":["../../../../src/ui/volume-indicator/volume-indicator-value.tsx"],"sourcesContent":["import { getVolumeIndicatorDisplayValue, type VolumeIndicatorCore } from '@videojs/core';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useVolumeIndicatorContext } from './context';\n\nexport interface VolumeIndicatorValueProps extends UIComponentProps<'span', VolumeIndicatorCore.State> {}\n\nexport const VolumeIndicatorValue = forwardRef(function VolumeIndicatorValue(\n componentProps: VolumeIndicatorValueProps,\n forwardedRef: ForwardedRef<HTMLSpanElement>\n) {\n const { render, className, style, ...elementProps } = componentProps;\n const { state } = useVolumeIndicatorContext();\n\n return renderElement(\n 'span',\n { render, className, style },\n {\n state,\n ref: forwardedRef,\n props: [{ children: getVolumeIndicatorDisplayValue(state) }, elementProps],\n }\n );\n});\n\nexport namespace VolumeIndicatorValue {\n export type Props = VolumeIndicatorValueProps;\n}\n"],"mappings":";;;;;AAUA,MAAa,uBAAuB,WAAW,SAAS,qBACtD,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,GAAG,iBAAiB;CACtD,MAAM,EAAE,UAAU,0BAA0B;CAE5C,OAAO,cACL,QACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA,KAAK;EACL,OAAO,CAAC,EAAE,UAAU,+BAA+B,KAAK,EAAE,GAAG,YAAY;CAC3E,CACF;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"volume-slider-root.d.ts","names":[],"sources":["../../../../src/ui/volume-slider/volume-slider-root.tsx"],"mappings":";;;UAyBiB,8BAA8B,wBAAwB,iBAAiB,QAAQ,iBAAiB;EAC/G;EACA;;cAGW,kCAAgB,0BAAA,KAAA,gDAAA,cAAA;kBA+HZ;OACH,QAAQ;OACR,QAAQ,iBAAiB"}
1
+ {"version":3,"file":"volume-slider-root.d.ts","names":[],"sources":["../../../../src/ui/volume-slider/volume-slider-root.tsx"],"mappings":";;;UAuBiB,8BAA8B,wBAAwB,iBAAiB,QAAQ,iBAAiB;EAC/G;EACA;;cAGW,kCAAgB,0BAAA,KAAA,gDAAA,cAAA;kBA+HZ;OACH,QAAQ;OACR,QAAQ,iBAAiB"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { useLocale, useTranslator } from "../../i18n/context.js";
3
2
  import { usePlayer } from "../../player/context.js";
4
3
  import { useLatestRef } from "../../utils/use-latest-ref.js";
@@ -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 { VolumeSliderCore, VolumeSliderDataAttrs } from '@videojs/core';\nimport { createWheelStep, getSliderCSSVars, logMissingFeature, selectVolume } from '@videojs/core/dom';\nimport { translateText } from '@videojs/core/i18n';\nimport { listen } from '@videojs/utils/dom';\nimport { forwardRef, useCallback, useRef, useState } from 'react';\n\nimport { useLocale, useTranslator } from '../../i18n/context';\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 mutedAvailability: '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 const translator = useTranslator();\n const locale = useLocale();\n const isUnavailable = volume?.volumeAvailability !== 'available';\n const isDisabled = Boolean(disabled) || isUnavailable;\n\n const [core] = useState(() => new VolumeSliderCore());\n core.setProps({ label, orientation, step, largeStep, wheelStep, disabled, thumbAlignment });\n core.setFormatLocale(locale);\n\n // Keep refs to the latest dynamic values for stable closures.\n const volumeRef = useLatestRef(volume);\n const disabledRef = useLatestRef(isDisabled);\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, input, cssVars, rootRef, thumbRef, rootProps, rootStyle, thumbProps } =\n 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: isDisabled,\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,\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 if (state.hidden) return null;\n\n return (\n <SliderProvider\n value={{\n state,\n pointerValue: core.valueFromPercent(state.pointerPercent),\n input,\n getPointerValue: (percent) => core.valueFromPercent(percent),\n thumbRef,\n thumbProps,\n stateAttrMap: VolumeSliderDataAttrs,\n getAttrs: (sliderState) => {\n const attrs = core.getAttrs(sliderState as VolumeSliderCore.State);\n return {\n ...attrs,\n 'aria-label': translateText(attrs['aria-label'], translator),\n 'aria-valuetext': translateText(\n attrs['aria-valuetext'],\n translator,\n core.getValueTextParams(sliderState as VolumeSliderCore.State)\n ),\n };\n },\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":";;;;;;;;;;;;;;AAgBA,MAAM,aAAa;CACjB,QAAQ;CACR,OAAO;CACP,oBAAoB;CACpB,mBAAmB;CACnB,iBAAiB;CACjB,mBAAmB;AACrB;AAOA,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,YAAY;CACrC,MAAM,aAAa,cAAc;CACjC,MAAM,SAAS,UAAU;CACzB,MAAM,gBAAgB,QAAQ,uBAAuB;CACrD,MAAM,aAAa,QAAQ,QAAQ,KAAK;CAExC,MAAM,CAAC,QAAQ,eAAe,IAAI,iBAAiB,CAAC;CACpD,KAAK,SAAS;EAAE;EAAO;EAAa;EAAM;EAAW;EAAW;EAAU;CAAe,CAAC;CAC1F,KAAK,gBAAgB,MAAM;CAG3B,MAAM,YAAY,aAAa,MAAM;CACrC,MAAM,cAAc,aAAa,UAAU;CAE3C,MAAM,oBAAoB,UAAU,SAAS,UAAU,KAAK;CAC5D,MAAM,uBAAuB,KAAK,eAAe;CACjD,MAAM,aAAa,YAAoB,UAAU,SAAS,UAAU,UAAU,GAAG;CAEjF,MAAM,EAAE,OAAO,OAAO,SAAS,SAAS,UAAU,WAAW,WAAW,eACtE,UAAkC;EAChC,eAAe,UAAU;GACvB,KAAK,SAAS,KAAK;GACnB,KAAK,SAAS,UAAU,UAAU;GAClC,OAAO,KAAK,SAAS;EACvB;EACA;EACA;EACA,2BAA2B,KAAK,oBAAoB;EACpD;EACA,UAAU;EACV,gBAAgB,YAAY,WAAW,cACrC,KAAK,0BAA0B,YAAY,WAAW,SAAS;EACjE,YAAY;EACZ,eAAe;EACf,eAAe;EACf;EACA;CACF,CAAC;CAEH,MAAM,CAAC,gBAAgB,eACrB,gBAAgB;EACd,kBAAkB,YAAY;EAC9B,mBAAmB,UAAU,SAAS,UAAU,KAAK;EACrD,sBAAsB,KAAK,oBAAoB;EAC/C,gBAAgB,YAAY,UAAU,SAAS,UAAU,UAAU,GAAG;CACxE,CAAC,CACH;CAIA,MAAM,kBAAkB,OAA4B,IAAI;CACxD,MAAM,WAAW,aACd,YAAmC;EAClC,gBAAgB,UAAU;EAC1B,gBAAgB,UAAU;EAC1B,IAAI,SACF,gBAAgB,UAAU,OAAO,SAAS,SAAS,aAAa,SAAS,EAAE,SAAS,MAAM,CAAC;CAE/F,GACA,CAAC,YAAY,CACf;CAEA,IAAI,CAAC,QAAQ;EACE,kBAAkB,gBAAgB,QAAQ;EACvD,OAAO;CACT;CAEA,IAAI,MAAM,QAAQ,OAAO;CAEzB,OACE,oBAAC,gBAAD;EACE,OAAO;GACL;GACA,cAAc,KAAK,iBAAiB,MAAM,cAAc;GACxD;GACA,kBAAkB,YAAY,KAAK,iBAAiB,OAAO;GAC3D;GACA;GACA,cAAc;GACd,WAAW,gBAAgB;IACzB,MAAM,QAAQ,KAAK,SAAS,WAAqC;IACjE,OAAO;KACL,GAAG;KACH,cAAc,cAAc,MAAM,eAAe,UAAU;KAC3D,kBAAkB,cAChB,MAAM,mBACN,YACA,KAAK,mBAAmB,WAAqC,CAC/D;IACF;GACF;GACA,cAAc,UAAU,GAAG,KAAK,MAAM,KAAK,EAAE;EAC/C;EAEC,UAAA,cACC,OACA;GAAE;GAAQ;GAAW;EAAM,GAC3B;GACE;GACA,cAAc;GACd,KAAK;IAAC;IAAc;IAAS;GAAQ;GACrC,OAAO;IAAC,EAAE,OAAO;KAAE,GAAG;KAAS,GAAG;IAAU,EAAE;IAAG;IAAW;GAAY;EAC1E,CACF;CACc,CAAA;AAEpB,CACF"}
1
+ {"version":3,"file":"volume-slider-root.js","names":[],"sources":["../../../../src/ui/volume-slider/volume-slider-root.tsx"],"sourcesContent":["import { VolumeSliderCore, VolumeSliderDataAttrs } from '@videojs/core';\nimport { createWheelStep, getSliderCSSVars, logMissingFeature, selectVolume } from '@videojs/core/dom';\nimport { translateText } from '@videojs/core/i18n';\nimport { listen } from '@videojs/utils/dom';\nimport { forwardRef, useCallback, useRef, useState } from 'react';\n\nimport { useLocale, useTranslator } from '../../i18n/context';\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 mutedAvailability: '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 const translator = useTranslator();\n const locale = useLocale();\n const isUnavailable = volume?.volumeAvailability !== 'available';\n const isDisabled = Boolean(disabled) || isUnavailable;\n\n const [core] = useState(() => new VolumeSliderCore());\n core.setProps({ label, orientation, step, largeStep, wheelStep, disabled, thumbAlignment });\n core.setFormatLocale(locale);\n\n // Keep refs to the latest dynamic values for stable closures.\n const volumeRef = useLatestRef(volume);\n const disabledRef = useLatestRef(isDisabled);\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, input, cssVars, rootRef, thumbRef, rootProps, rootStyle, thumbProps } =\n 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: isDisabled,\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,\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 if (state.hidden) return null;\n\n return (\n <SliderProvider\n value={{\n state,\n pointerValue: core.valueFromPercent(state.pointerPercent),\n input,\n getPointerValue: (percent) => core.valueFromPercent(percent),\n thumbRef,\n thumbProps,\n stateAttrMap: VolumeSliderDataAttrs,\n getAttrs: (sliderState) => {\n const attrs = core.getAttrs(sliderState as VolumeSliderCore.State);\n return {\n ...attrs,\n 'aria-label': translateText(attrs['aria-label'], translator),\n 'aria-valuetext': translateText(\n attrs['aria-valuetext'],\n translator,\n core.getValueTextParams(sliderState as VolumeSliderCore.State)\n ),\n };\n },\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,mBAAmB;CACnB,iBAAiB;CACjB,mBAAmB;AACrB;AAOA,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,YAAY;CACrC,MAAM,aAAa,cAAc;CACjC,MAAM,SAAS,UAAU;CACzB,MAAM,gBAAgB,QAAQ,uBAAuB;CACrD,MAAM,aAAa,QAAQ,QAAQ,KAAK;CAExC,MAAM,CAAC,QAAQ,eAAe,IAAI,iBAAiB,CAAC;CACpD,KAAK,SAAS;EAAE;EAAO;EAAa;EAAM;EAAW;EAAW;EAAU;CAAe,CAAC;CAC1F,KAAK,gBAAgB,MAAM;CAG3B,MAAM,YAAY,aAAa,MAAM;CACrC,MAAM,cAAc,aAAa,UAAU;CAE3C,MAAM,oBAAoB,UAAU,SAAS,UAAU,KAAK;CAC5D,MAAM,uBAAuB,KAAK,eAAe;CACjD,MAAM,aAAa,YAAoB,UAAU,SAAS,UAAU,UAAU,GAAG;CAEjF,MAAM,EAAE,OAAO,OAAO,SAAS,SAAS,UAAU,WAAW,WAAW,eACtE,UAAkC;EAChC,eAAe,UAAU;GACvB,KAAK,SAAS,KAAK;GACnB,KAAK,SAAS,UAAU,UAAU;GAClC,OAAO,KAAK,SAAS;EACvB;EACA;EACA;EACA,2BAA2B,KAAK,oBAAoB;EACpD;EACA,UAAU;EACV,gBAAgB,YAAY,WAAW,cACrC,KAAK,0BAA0B,YAAY,WAAW,SAAS;EACjE,YAAY;EACZ,eAAe;EACf,eAAe;EACf;EACA;CACF,CAAC;CAEH,MAAM,CAAC,gBAAgB,eACrB,gBAAgB;EACd,kBAAkB,YAAY;EAC9B,mBAAmB,UAAU,SAAS,UAAU,KAAK;EACrD,sBAAsB,KAAK,oBAAoB;EAC/C,gBAAgB,YAAY,UAAU,SAAS,UAAU,UAAU,GAAG;CACxE,CAAC,CACH;CAIA,MAAM,kBAAkB,OAA4B,IAAI;CACxD,MAAM,WAAW,aACd,YAAmC;EAClC,gBAAgB,UAAU;EAC1B,gBAAgB,UAAU;EAC1B,IAAI,SACF,gBAAgB,UAAU,OAAO,SAAS,SAAS,aAAa,SAAS,EAAE,SAAS,MAAM,CAAC;CAE/F,GACA,CAAC,YAAY,CACf;CAEA,IAAI,CAAC,QAAQ;EACE,kBAAkB,gBAAgB,QAAQ;EACvD,OAAO;CACT;CAEA,IAAI,MAAM,QAAQ,OAAO;CAEzB,OACE,oBAAC,gBAAD;EACE,OAAO;GACL;GACA,cAAc,KAAK,iBAAiB,MAAM,cAAc;GACxD;GACA,kBAAkB,YAAY,KAAK,iBAAiB,OAAO;GAC3D;GACA;GACA,cAAc;GACd,WAAW,gBAAgB;IACzB,MAAM,QAAQ,KAAK,SAAS,WAAqC;IACjE,OAAO;KACL,GAAG;KACH,cAAc,cAAc,MAAM,eAAe,UAAU;KAC3D,kBAAkB,cAChB,MAAM,mBACN,YACA,KAAK,mBAAmB,WAAqC,CAC/D;IACF;GACF;GACA,cAAc,UAAU,GAAG,KAAK,MAAM,KAAK,EAAE;EAC/C;EAEC,UAAA,cACC,OACA;GAAE;GAAQ;GAAW;EAAM,GAC3B;GACE;GACA,cAAc;GACd,KAAK;IAAC;IAAc;IAAS;GAAQ;GACrC,OAAO;IAAC,EAAE,OAAO;KAAE,GAAG;KAAS,GAAG;IAAU,EAAE;IAAG;IAAW;GAAY;EAC1E,CACF;CACc,CAAA;AAEpB,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"merge-props.d.ts","names":[],"sources":["../../../src/utils/merge-props.ts"],"mappings":";;KAIK,MAAM,UAAU,cAAc,eAAe,sBAAsB;;;;;;;;;;;;;;;;;;;iBAqGxD,WAAW,UAAU,gBAAgB,WAAW,MAAM,oBAAoB,MAAM"}
1
+ {"version":3,"file":"merge-props.d.ts","names":[],"sources":["../../../src/utils/merge-props.ts"],"mappings":";;KAEK,MAAM,UAAU,cAAc,eAAe,sBAAsB;;;;;;;;;;;;;;;;;;;iBAqGxD,WAAW,UAAU,gBAAgB,WAAW,MAAM,oBAAoB,MAAM"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  //#region src/utils/merge-props.ts
3
2
  /**
4
3
  * Check if a key is an event handler key (on* with capital letter).
@@ -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;CAC/C,OACE,IAAI,WAAW,CAAC,MAAM,OACtB,IAAI,WAAW,CAAC,MAAM,OACtB,IAAI,WAAW,CAAC,KAAK,MACrB,IAAI,WAAW,CAAC,KAAK;AAEzB;;;;AAKA,SAAS,eAAe,KAAa,OAAyB;CAC5D,OAAO,kBAAkB,GAAG,MAAM,OAAO,UAAU,cAAc,OAAO,UAAU;AACpF;;;;AAKA,SAAS,mBACP,MACA,QAC+C;CAC/C,IAAI,CAAC,QAAQ,OAAO;CACpB,IAAI,CAAC,MAAM,OAAO;CAElB,QAAQ,UAA0B;EAChC,OAAO,KAAK;EACZ,KAAK,KAAK;CACZ;AACF;;;;AAKA,SAAS,gBAAgB,MAA0B,QAAgD;CACjG,IAAI,UAAU,MAAM,OAAO,GAAG,OAAO,GAAG;CACxC,OAAO,UAAU;AACnB;;;;AAKA,SAAS,YAAY,MAAiC,QAA8D;CAClH,IAAI,CAAC,QAAQ,OAAO;CACpB,IAAI,CAAC,MAAM,OAAO;CAClB,OAAO;EAAE,GAAG;EAAM,GAAG;CAAO;AAC9B;;;;AAKA,SAAS,SACP,QACA,OACyB;CACzB,IAAI,CAAC,OAAO,OAAO;CAEnB,KAAK,MAAM,OAAO,OAAO;EACvB,MAAM,QAAQ,MAAM;EAEpB,IAAI,QAAQ,aACV,OAAO,YAAY,gBAAgB,OAAO,WAAiC,KAAe;OACrF,IAAI,QAAQ,SACjB,OAAO,QAAQ,YAAY,OAAO,OAAoC,KAAsB;OACvF,IAAI,eAAe,KAAK,KAAK,GAClC,OAAO,OAAO,mBACZ,OAAO,MACP,KACF;OAEA,OAAO,OAAO;CAElB;CAEA,OAAO;AACT;;;;;;;;;;;;;;;;;;;AAoBA,SAAgB,WAAkC,GAAG,UAA8C;CACjG,IAAI,SAAkC,CAAC;CAEvC,KAAK,MAAM,SAAS,UAClB,SAAS,SAAS,QAAQ,KAAK;CAGjC,OAAO;AACT"}
1
+ {"version":3,"file":"merge-props.js","names":[],"sources":["../../../src/utils/merge-props.ts"],"sourcesContent":["import 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":";;;;AAOA,SAAS,kBAAkB,KAAsB;CAC/C,OACE,IAAI,WAAW,CAAC,MAAM,OACtB,IAAI,WAAW,CAAC,MAAM,OACtB,IAAI,WAAW,CAAC,KAAK,MACrB,IAAI,WAAW,CAAC,KAAK;AAEzB;;;;AAKA,SAAS,eAAe,KAAa,OAAyB;CAC5D,OAAO,kBAAkB,GAAG,MAAM,OAAO,UAAU,cAAc,OAAO,UAAU;AACpF;;;;AAKA,SAAS,mBACP,MACA,QAC+C;CAC/C,IAAI,CAAC,QAAQ,OAAO;CACpB,IAAI,CAAC,MAAM,OAAO;CAElB,QAAQ,UAA0B;EAChC,OAAO,KAAK;EACZ,KAAK,KAAK;CACZ;AACF;;;;AAKA,SAAS,gBAAgB,MAA0B,QAAgD;CACjG,IAAI,UAAU,MAAM,OAAO,GAAG,OAAO,GAAG;CACxC,OAAO,UAAU;AACnB;;;;AAKA,SAAS,YAAY,MAAiC,QAA8D;CAClH,IAAI,CAAC,QAAQ,OAAO;CACpB,IAAI,CAAC,MAAM,OAAO;CAClB,OAAO;EAAE,GAAG;EAAM,GAAG;CAAO;AAC9B;;;;AAKA,SAAS,SACP,QACA,OACyB;CACzB,IAAI,CAAC,OAAO,OAAO;CAEnB,KAAK,MAAM,OAAO,OAAO;EACvB,MAAM,QAAQ,MAAM;EAEpB,IAAI,QAAQ,aACV,OAAO,YAAY,gBAAgB,OAAO,WAAiC,KAAe;OACrF,IAAI,QAAQ,SACjB,OAAO,QAAQ,YAAY,OAAO,OAAoC,KAAsB;OACvF,IAAI,eAAe,KAAK,KAAK,GAClC,OAAO,OAAO,mBACZ,OAAO,MACP,KACF;OAEA,OAAO,OAAO;CAElB;CAEA,OAAO;AACT;;;;;;;;;;;;;;;;;;;AAoBA,SAAgB,WAAkC,GAAG,UAA8C;CACjG,IAAI,SAAkC,CAAC;CAEvC,KAAK,MAAM,SAAS,UAClB,SAAS,SAAS,QAAQ,KAAK;CAGjC,OAAO;AACT"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { useCallback } from "react";
3
2
  //#region src/utils/use-attach-iframe.ts
4
3
  function useAttachIframe(media) {
@@ -1 +1 @@
1
- {"version":3,"file":"use-attach-iframe.js","names":[],"sources":["../../../src/utils/use-attach-iframe.ts"],"sourcesContent":["'use client';\n\nimport type { MediaEngineHost } from '@videojs/media';\nimport type { RefCallback } from 'react';\nimport { useCallback } from 'react';\n\nexport function useAttachIframe<T extends HTMLIFrameElement>(media: MediaEngineHost): RefCallback<T> {\n return useCallback(\n (element: T | null) => {\n if (element) media.attach?.(element);\n else media.detach?.();\n return () => media.detach?.();\n },\n [media]\n );\n}\n"],"mappings":";;;AAMA,SAAgB,gBAA6C,OAAwC;CACnG,OAAO,aACJ,YAAsB;EACrB,IAAI,SAAS,MAAM,SAAS,OAAO;OAC9B,MAAM,SAAS;EACpB,aAAa,MAAM,SAAS;CAC9B,GACA,CAAC,KAAK,CACR;AACF"}
1
+ {"version":3,"file":"use-attach-iframe.js","names":[],"sources":["../../../src/utils/use-attach-iframe.ts"],"sourcesContent":["import type { MediaEngineHost } from '@videojs/media';\nimport type { RefCallback } from 'react';\nimport { useCallback } from 'react';\n\nexport function useAttachIframe<T extends HTMLIFrameElement>(media: MediaEngineHost): RefCallback<T> {\n return useCallback(\n (element: T | null) => {\n if (element) media.attach?.(element);\n else media.detach?.();\n return () => media.detach?.();\n },\n [media]\n );\n}\n"],"mappings":";;AAIA,SAAgB,gBAA6C,OAAwC;CACnG,OAAO,aACJ,YAAsB;EACrB,IAAI,SAAS,MAAM,SAAS,OAAO;OAC9B,MAAM,SAAS;EACpB,aAAa,MAAM,SAAS;CAC9B,GACA,CAAC,KAAK,CACR;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-attach-media.d.ts","names":[],"sources":["../../../src/utils/use-attach-media.ts"],"mappings":";;;iBAMgB,eAAe,UAAU,kBAAkB,OAAO,kBAAkB,YAAY"}
1
+ {"version":3,"file":"use-attach-media.d.ts","names":[],"sources":["../../../src/utils/use-attach-media.ts"],"mappings":";;;iBAIgB,eAAe,UAAU,kBAAkB,OAAO,kBAAkB,YAAY"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { useCallback } from "react";
3
2
  //#region src/utils/use-attach-media.ts
4
3
  function useAttachMedia(media) {
@@ -1 +1 @@
1
- {"version":3,"file":"use-attach-media.js","names":[],"sources":["../../../src/utils/use-attach-media.ts"],"sourcesContent":["'use client';\n\nimport type { MediaEngineHost } from '@videojs/media';\nimport type { RefCallback } from 'react';\nimport { useCallback } from 'react';\n\nexport function useAttachMedia<T extends HTMLMediaElement>(media: MediaEngineHost): RefCallback<T> {\n return useCallback(\n (element: T | null) => {\n if (element) media.attach?.(element);\n else media.detach?.();\n return () => media.detach?.();\n },\n [media]\n );\n}\n"],"mappings":";;;AAMA,SAAgB,eAA2C,OAAwC;CACjG,OAAO,aACJ,YAAsB;EACrB,IAAI,SAAS,MAAM,SAAS,OAAO;OAC9B,MAAM,SAAS;EACpB,aAAa,MAAM,SAAS;CAC9B,GACA,CAAC,KAAK,CACR;AACF"}
1
+ {"version":3,"file":"use-attach-media.js","names":[],"sources":["../../../src/utils/use-attach-media.ts"],"sourcesContent":["import type { MediaEngineHost } from '@videojs/media';\nimport type { RefCallback } from 'react';\nimport { useCallback } from 'react';\n\nexport function useAttachMedia<T extends HTMLMediaElement>(media: MediaEngineHost): RefCallback<T> {\n return useCallback(\n (element: T | null) => {\n if (element) media.attach?.(element);\n else media.detach?.();\n return () => media.detach?.();\n },\n [media]\n );\n}\n"],"mappings":";;AAIA,SAAgB,eAA2C,OAAwC;CACjG,OAAO,aACJ,YAAsB;EACrB,IAAI,SAAS,MAAM,SAAS,OAAO;OAC9B,MAAM,SAAS;EACpB,aAAa,MAAM,SAAS;CAC9B,GACA,CAAC,KAAK,CACR;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-composed-refs.d.ts","names":[],"sources":["../../../src/utils/use-composed-refs.ts"],"mappings":";;KAOK,YAAY,KAAK,IAAI;;;;;;;;;;iBA0BV,YAAY,MAAM,OAAO,YAAY,KAAK,YAAY,UAAU,YAAY;;;;;;;;;;;;iBAkC5E,gBAAgB,MAAM,MAAM,YAAY,OAAO,YAAY"}
1
+ {"version":3,"file":"use-composed-refs.d.ts","names":[],"sources":["../../../src/utils/use-composed-refs.ts"],"mappings":";;KAKK,YAAY,KAAK,IAAI;;;;;;;;;;iBA0BV,YAAY,MAAM,OAAO,YAAY,KAAK,YAAY,UAAU,YAAY;;;;;;;;;;;;iBAkC5E,gBAAgB,MAAM,MAAM,YAAY,OAAO,YAAY"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { useCallback } from "react";
3
2
  import { isFunction } from "@videojs/utils/predicate";
4
3
  //#region src/utils/use-composed-refs.ts
@@ -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;CACjF,IAAI,WAAW,GAAG,GAChB,OAAO,IAAI,KAAK;MACX,IAAI,QAAQ,QAAQ,QAAQ,KAAA,GACjC,IAAI,UAAU;AAElB;;;;;;;;;;AAWA,SAAgB,YAAe,GAAG,MAA6D;CAC7F,MAAM,WAAW,KAAK,KAAK;CAE3B,QAAQ,SAA8B;EACpC,MAAM,WAAW,SAAS,KAAK,QAAQ,OAAO,KAAK,IAAI,CAAC;EAIxD,IAAI,SAAS,KAAK,UAAU,GAC1B,aAAa;GACX,KAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;IACxC,MAAM,UAAU,SAAS;IACzB,IAAI,WAAW,OAAO,GACpB,QAAQ;SAER,OAAO,SAAS,IAAI,IAAI;GAE5B;EACF;CAEJ;AACF;;;;;;;;;;;;AAaA,SAAgB,gBAAmB,GAAG,MAAwC;CAC5E,OAAO,YAAY,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;AACpD"}
1
+ {"version":3,"file":"use-composed-refs.js","names":[],"sources":["../../../src/utils/use-composed-refs.ts"],"sourcesContent":["import { 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":";;;;;;;;;;AAcA,SAAS,OAAU,KAAqB,OAA2C;CACjF,IAAI,WAAW,GAAG,GAChB,OAAO,IAAI,KAAK;MACX,IAAI,QAAQ,QAAQ,QAAQ,KAAA,GACjC,IAAI,UAAU;AAElB;;;;;;;;;;AAWA,SAAgB,YAAe,GAAG,MAA6D;CAC7F,MAAM,WAAW,KAAK,KAAK;CAE3B,QAAQ,SAA8B;EACpC,MAAM,WAAW,SAAS,KAAK,QAAQ,OAAO,KAAK,IAAI,CAAC;EAIxD,IAAI,SAAS,KAAK,UAAU,GAC1B,aAAa;GACX,KAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;IACxC,MAAM,UAAU,SAAS;IACzB,IAAI,WAAW,OAAO,GACpB,QAAQ;SAER,OAAO,SAAS,IAAI,IAAI;GAE5B;EACF;CAEJ;AACF;;;;;;;;;;;;AAaA,SAAgB,gBAAmB,GAAG,MAAwC;CAC5E,OAAO,YAAY,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;AACpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-destroy.d.ts","names":[],"sources":["../../../src/utils/use-destroy.ts"],"mappings":";UAMU;EACR;;;;;;;;;;;;;;;;iBAiBc,WAAW,UAAU,aAAa,oBAAoB"}
1
+ {"version":3,"file":"use-destroy.d.ts","names":[],"sources":["../../../src/utils/use-destroy.ts"],"mappings":";UAIU;EACR;;;;;;;;;;;;;;;;iBAiBc,WAAW,UAAU,aAAa,oBAAoB"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { useLatestRef } from "./use-latest-ref.js";
3
2
  import { useEffect, useRef } from "react";
4
3
  //#region src/utils/use-destroy.ts
@@ -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\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,IAAI;CACpE,MAAM,WAAW,aAAa,KAAK;CACnC,MAAM,cAAc,aAAa,QAAQ;CAEzC,gBAAgB;EACd,IAAI,WAAW,YAAY,MAAM;GAC/B,aAAa,WAAW,OAAO;GAC/B,WAAW,UAAU;EACvB,OACE,SAAS,UAAU;EAGrB,aAAa;GACX,WAAW,UAAU,iBAAiB;IACpC,YAAY,UAAU;IACtB,SAAS,QAAQ;GACnB,GAAG,CAAC;EACN;CACF,GAAG,CAAC,QAAQ,CAAC;AACf"}
1
+ {"version":3,"file":"use-destroy.js","names":[],"sources":["../../../src/utils/use-destroy.ts"],"sourcesContent":["import { 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":";;;;;;;;;;;;;;;;;AAsBA,SAAgB,WAAW,UAAuB,OAAoB,UAA6B;CACjG,MAAM,aAAa,OAA6C,IAAI;CACpE,MAAM,WAAW,aAAa,KAAK;CACnC,MAAM,cAAc,aAAa,QAAQ;CAEzC,gBAAgB;EACd,IAAI,WAAW,YAAY,MAAM;GAC/B,aAAa,WAAW,OAAO;GAC/B,WAAW,UAAU;EACvB,OACE,SAAS,UAAU;EAGrB,aAAa;GACX,WAAW,UAAU,iBAAiB;IACpC,YAAY,UAAU;IACtB,SAAS,QAAQ;GACnB,GAAG,CAAC;EACN;CACF,GAAG,CAAC,QAAQ,CAAC;AACf"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { useReducer } from "react";
3
2
  //#region src/utils/use-force-render.ts
4
3
  function useForceRender() {
@@ -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,CAAC;CAC1D,OAAO;AACT"}
1
+ {"version":3,"file":"use-force-render.js","names":[],"sources":["../../../src/utils/use-force-render.ts"],"sourcesContent":["import { 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":";;AAEA,SAAgB,iBAAiB;CAC/B,MAAM,GAAG,eAAe,YAAY,MAAc,IAAI,GAAG,CAAC;CAC1D,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-latest-ref.d.ts","names":[],"sources":["../../../src/utils/use-latest-ref.ts"],"mappings":";;;;;;;iBAUgB,aAAa,OAAO,OAAO,QAAQ;EAAW,SAAS;;kBAMtD;OACH,OAAO,SAAS;IAAW,SAAS"}
1
+ {"version":3,"file":"use-latest-ref.d.ts","names":[],"sources":["../../../src/utils/use-latest-ref.ts"],"mappings":";;;;;;;iBAQgB,aAAa,OAAO,OAAO,QAAQ;EAAW,SAAS;;kBAMtD;OACH,OAAO,SAAS;IAAW,SAAS"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { useRef } from "react";
3
2
  //#region src/utils/use-latest-ref.ts
4
3
  /**
@@ -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,KAAK;CACxB,IAAI,UAAU;CACd,OAAO;AACT"}
1
+ {"version":3,"file":"use-latest-ref.js","names":[],"sources":["../../../src/utils/use-latest-ref.ts"],"sourcesContent":["import { 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":";;;;;;;;AAQA,SAAgB,aAAoB,OAA4C;CAC9E,MAAM,MAAM,OAAO,KAAK;CACxB,IAAI,UAAU;CACd,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-media-component.d.ts","names":[],"sources":["../../../src/utils/use-media-component.ts"],"mappings":";;;;;;;;;;;iBAkBgB,kBAAkB,kBAAkB;EAAmB;GACrE,0BAA0B,YACzB"}
1
+ {"version":3,"file":"use-media-component.d.ts","names":[],"sources":["../../../src/utils/use-media-component.ts"],"mappings":";;;;;;;;;;;iBAgBgB,kBAAkB,kBAAkB;EAAmB;GACrE,0BAA0B,YACzB"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { useMedia } from "../player/context.js";
3
2
  import { useDestroy } from "./use-destroy.js";
4
3
  import { useEffect, useState } from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"use-media-component.js","names":[],"sources":["../../../src/utils/use-media-component.ts"],"sourcesContent":["'use client';\n\nimport type { HTMLMediaTargetLike, MediaComponent } from '@videojs/media/dom/media-host';\nimport { addMediaComponent, HTMLMediaElementHost } from '@videojs/media/dom/media-host';\nimport { useEffect, useState } from 'react';\n\nimport { useMedia } from '../player/context';\nimport { useDestroy } from './use-destroy';\n\n/**\n * Create a media component (e.g. `GoogleCast`, `MuxData`) and register it\n * with the media provided by the surrounding player context.\n *\n * Instantiates the component class once, registers it when a media host is\n * available, follows the media when it changes, and destroys the component\n * on unmount. Media that is not a media host (e.g. a plain `<video>`\n * element) cannot carry media components and is ignored.\n */\nexport function useMediaComponent<Component extends MediaComponent & { destroy(): void }>(\n ComponentClass: new () => Component\n): Component {\n const media = useMedia();\n const [component] = useState(() => new ComponentClass());\n\n useDestroy(component);\n\n useEffect(() => {\n if (!(media instanceof HTMLMediaElementHost)) return;\n return addMediaComponent(media as HTMLMediaElementHost<HTMLMediaTargetLike, any>, component);\n }, [media, component]);\n\n return component;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,SAAgB,kBACd,gBACW;CACX,MAAM,QAAQ,SAAS;CACvB,MAAM,CAAC,aAAa,eAAe,IAAI,eAAe,CAAC;CAEvD,WAAW,SAAS;CAEpB,gBAAgB;EACd,IAAI,EAAE,iBAAiB,uBAAuB;EAC9C,OAAO,kBAAkB,OAAyD,SAAS;CAC7F,GAAG,CAAC,OAAO,SAAS,CAAC;CAErB,OAAO;AACT"}
1
+ {"version":3,"file":"use-media-component.js","names":[],"sources":["../../../src/utils/use-media-component.ts"],"sourcesContent":["import type { HTMLMediaTargetLike, MediaComponent } from '@videojs/media/dom/media-host';\nimport { addMediaComponent, HTMLMediaElementHost } from '@videojs/media/dom/media-host';\nimport { useEffect, useState } from 'react';\n\nimport { useMedia } from '../player/context';\nimport { useDestroy } from './use-destroy';\n\n/**\n * Create a media component (e.g. `GoogleCast`, `MuxData`) and register it\n * with the media provided by the surrounding player context.\n *\n * Instantiates the component class once, registers it when a media host is\n * available, follows the media when it changes, and destroys the component\n * on unmount. Media that is not a media host (e.g. a plain `<video>`\n * element) cannot carry media components and is ignored.\n */\nexport function useMediaComponent<Component extends MediaComponent & { destroy(): void }>(\n ComponentClass: new () => Component\n): Component {\n const media = useMedia();\n const [component] = useState(() => new ComponentClass());\n\n useDestroy(component);\n\n useEffect(() => {\n if (!(media instanceof HTMLMediaElementHost)) return;\n return addMediaComponent(media as HTMLMediaElementHost<HTMLMediaTargetLike, any>, component);\n }, [media, component]);\n\n return component;\n}\n"],"mappings":";;;;;;;;;;;;;;AAgBA,SAAgB,kBACd,gBACW;CACX,MAAM,QAAQ,SAAS;CACvB,MAAM,CAAC,aAAa,eAAe,IAAI,eAAe,CAAC;CAEvD,WAAW,SAAS;CAEpB,gBAAgB;EACd,IAAI,EAAE,iBAAiB,uBAAuB;EAC9C,OAAO,kBAAkB,OAAyD,SAAS;CAC7F,GAAG,CAAC,OAAO,SAAS,CAAC;CAErB,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-media-instance.d.ts","names":[],"sources":["../../../src/utils/use-media-instance.ts"],"mappings":";;;;;;;;;;;;;;iBAoBgB,iBAAiB,iBAAiB;EAAU;GAC1D,sBAAsB,UACtB,SAAS,OAAO,oBACf"}
1
+ {"version":3,"file":"use-media-instance.d.ts","names":[],"sources":["../../../src/utils/use-media-instance.ts"],"mappings":";;;;;;;;;;;;;;iBAkBgB,iBAAiB,iBAAiB;EAAU;GAC1D,sBAAsB,UACtB,SAAS,OAAO,oBACf"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { useMediaAttach } from "../player/context.js";
3
2
  import { useDestroy } from "./use-destroy.js";
4
3
  import { useState } from "react";
@@ -1 +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/media';\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 → HlsJsVideo).\n *\n * An optional `setup` callback runs once on mount — e.g. to add media\n * components via `addMediaComponent`. Components registered there are destroyed\n * together with the media instance on unmount (`media.destroy()` destroys\n * all of its registered components).\n */\nexport function useMediaInstance<Instance extends Media & { destroy(): void }>(\n MediaClass: new () => Instance,\n setup?: (media: Instance) => void\n): Instance {\n const [instance] = useState(() => new MediaClass());\n const setMedia = useMediaAttach();\n\n useDestroy(\n instance,\n () => {\n setup?.(instance);\n setMedia?.(instance);\n },\n () => setMedia?.((prev) => (prev === instance ? null : prev))\n );\n\n return instance;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAoBA,SAAgB,iBACd,YACA,OACU;CACV,MAAM,CAAC,YAAY,eAAe,IAAI,WAAW,CAAC;CAClD,MAAM,WAAW,eAAe;CAEhC,WACE,gBACM;EACJ,QAAQ,QAAQ;EAChB,WAAW,QAAQ;CACrB,SACM,YAAY,SAAU,SAAS,WAAW,OAAO,IAAK,CAC9D;CAEA,OAAO;AACT"}
1
+ {"version":3,"file":"use-media-instance.js","names":[],"sources":["../../../src/utils/use-media-instance.ts"],"sourcesContent":["import type { Media } from '@videojs/media';\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 → HlsJsVideo).\n *\n * An optional `setup` callback runs once on mount — e.g. to add media\n * components via `addMediaComponent`. Components registered there are destroyed\n * together with the media instance on unmount (`media.destroy()` destroys\n * all of its registered components).\n */\nexport function useMediaInstance<Instance extends Media & { destroy(): void }>(\n MediaClass: new () => Instance,\n setup?: (media: Instance) => void\n): Instance {\n const [instance] = useState(() => new MediaClass());\n const setMedia = useMediaAttach();\n\n useDestroy(\n instance,\n () => {\n setup?.(instance);\n setMedia?.(instance);\n },\n () => setMedia?.((prev) => (prev === instance ? null : prev))\n );\n\n return instance;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,SAAgB,iBACd,YACA,OACU;CACV,MAAM,CAAC,YAAY,eAAe,IAAI,WAAW,CAAC;CAClD,MAAM,WAAW,eAAe;CAEhC,WACE,gBACM;EACJ,QAAQ,QAAQ;EAChB,WAAW,QAAQ;CACrB,SACM,YAAY,SAAU,SAAS,WAAW,OAAO,IAAK,CAC9D;CAEA,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-render.d.ts","names":[],"sources":["../../../src/utils/use-render.tsx"],"mappings":";;;;KAeK,yBAAyB,MAAM,IAAI;UAEvB,wBAAwB;EACvC,uBAAuB,OAAO;EAC9B,QAAQ,kBAAkB,OAAO,UAAU;EAC3C,SAAS,WAAW;;UAGL,oBAAoB,OAAO,4BAA4B;EACtE,OAAO;EACP,MAAM,IAAI,uBAAuB,IAAI;EACrC;EACA,eAAe,aAAa;;;;;;;;;;;;;;;;;;;;;;iBA4Cd,cACd,sBACA,4BAA4B,SAC5B,gBAAgB,kBAEhB,SAAS,SACT,gBAAgB,wBAAwB,QACxC,QAAQ,oBAAoB,OAAO,uBAClC;kBAiDc;OACH,eAAe,SAAS,wBAAwB;OAChD,WAAW,OAAO,4BAA4B,WAAW,oBAAoB,OAAO"}
1
+ {"version":3,"file":"use-render.d.ts","names":[],"sources":["../../../src/utils/use-render.tsx"],"mappings":";;;;KAcK,yBAAyB,MAAM,IAAI;UAEvB,wBAAwB;EACvC,uBAAuB,OAAO;EAC9B,QAAQ,kBAAkB,OAAO,UAAU;EAC3C,SAAS,WAAW;;UAGL,oBAAoB,OAAO,4BAA4B;EACtE,OAAO;EACP,MAAM,IAAI,uBAAuB,IAAI;EACrC;EACA,eAAe,aAAa;;;;;;;;;;;;;;;;;;;;;;iBAqCd,cACd,sBACA,4BAA4B,SAC5B,gBAAgB,kBAEhB,SAAS,SACT,gBAAgB,wBAAwB,QACxC,QAAQ,oBAAoB,OAAO,uBAClC;kBAiDc;OACH,eAAe,SAAS,wBAAwB;OAChD,WAAW,OAAO,4BAA4B,WAAW,oBAAoB,OAAO"}
@@ -1,17 +1,10 @@
1
- "use client";
2
1
  import { composeRefs } from "./use-composed-refs.js";
3
2
  import { mergeProps } from "./merge-props.js";
4
3
  import { getStateDataAttrs } from "@videojs/core/dom";
5
4
  import { cloneElement, createElement, isValidElement } from "react";
6
5
  import { isFunction } from "@videojs/utils/predicate";
6
+ import { resolveClassName } from "@videojs/utils/style";
7
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
- }
12
- function resolveClassName(className, state) {
13
- return isFunction(className) ? className(state) : className;
14
- }
15
8
  function resolveStyle(style, state) {
16
9
  return isFunction(style) ? style(state) : style;
17
10
  }
@@ -68,6 +61,6 @@ function renderElement(element, componentProps, params) {
68
61
  return createElement(element, mergedProps);
69
62
  }
70
63
  //#endregion
71
- export { isRenderProp, renderElement };
64
+ export { renderElement };
72
65
 
73
66
  //# sourceMappingURL=use-render.js.map