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

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 (1027) hide show
  1. package/dist/default/__generated__/skins/default-video/styles/base.css +25 -0
  2. package/dist/default/__generated__/skins/default-video/styles/buttons.css +152 -0
  3. package/dist/default/__generated__/skins/default-video/styles/container.css +45 -0
  4. package/dist/default/__generated__/skins/default-video/styles/controls.css +45 -0
  5. package/dist/default/__generated__/skins/default-video/styles/overlays.css +11 -0
  6. package/dist/default/__generated__/skins/default-video/styles/popups.css +45 -0
  7. package/dist/default/__generated__/skins/default-video/styles/poster.css +47 -0
  8. package/dist/default/__generated__/skins/default-video/styles/sliders.css +112 -0
  9. package/dist/default/__generated__/skins/default-video/styles/styles.css +514 -0
  10. package/dist/default/__generated__/skins/default-video/styles/theme.css +22 -0
  11. package/dist/default/i18n/context.js +3 -3
  12. package/dist/default/i18n/context.js.map +1 -1
  13. package/dist/default/i18n/locales/id/register.js +8 -0
  14. package/dist/default/i18n/locales/id/register.js.map +1 -0
  15. package/dist/default/i18n/locales/id.js +2 -0
  16. package/dist/default/i18n/locales/lt/register.js +8 -0
  17. package/dist/default/i18n/locales/lt/register.js.map +1 -0
  18. package/dist/default/i18n/locales/lt.js +2 -0
  19. package/dist/default/icons/dist/react/default/airplay-enter.js.map +1 -1
  20. package/dist/default/icons/dist/react/default/airplay-exit.js +1 -2
  21. package/dist/default/icons/dist/react/default/airplay-exit.js.map +1 -1
  22. package/dist/default/icons/dist/react/default/captions-off.js.map +1 -1
  23. package/dist/default/icons/dist/react/default/captions-on.js.map +1 -1
  24. package/dist/default/icons/dist/react/default/cast-enter.js +2 -45
  25. package/dist/default/icons/dist/react/default/cast-enter.js.map +1 -1
  26. package/dist/default/icons/dist/react/default/cast-exit.js +4 -61
  27. package/dist/default/icons/dist/react/default/cast-exit.js.map +1 -1
  28. package/dist/default/icons/dist/react/default/check.js.map +1 -1
  29. package/dist/default/icons/dist/react/default/chevron.js.map +1 -1
  30. package/dist/default/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  31. package/dist/default/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  32. package/dist/default/icons/dist/react/default/gear.js.map +1 -1
  33. package/dist/default/icons/dist/react/default/pause.js.map +1 -1
  34. package/dist/default/icons/dist/react/default/pip-enter.js.map +1 -1
  35. package/dist/default/icons/dist/react/default/pip-exit.js.map +1 -1
  36. package/dist/default/icons/dist/react/default/play.js.map +1 -1
  37. package/dist/default/icons/dist/react/default/quality.js +1 -1
  38. package/dist/default/icons/dist/react/default/quality.js.map +1 -1
  39. package/dist/default/icons/dist/react/default/restart.js.map +1 -1
  40. package/dist/default/icons/dist/react/default/seek.js.map +1 -1
  41. package/dist/default/icons/dist/react/default/speech.js.map +1 -1
  42. package/dist/default/icons/dist/react/default/speed.js.map +1 -1
  43. package/dist/default/icons/dist/react/default/spinner.js +1 -1
  44. package/dist/default/icons/dist/react/default/spinner.js.map +1 -1
  45. package/dist/default/icons/dist/react/default/switches.js.map +1 -1
  46. package/dist/default/icons/dist/react/default/volume-high.js.map +1 -1
  47. package/dist/default/icons/dist/react/default/volume-low.js.map +1 -1
  48. package/dist/default/icons/dist/react/default/volume-off.js.map +1 -1
  49. package/dist/default/icons/dist/react/minimal/airplay-enter.js.map +1 -1
  50. package/dist/default/icons/dist/react/minimal/airplay-exit.js +1 -2
  51. package/dist/default/icons/dist/react/minimal/airplay-exit.js.map +1 -1
  52. package/dist/default/icons/dist/react/minimal/captions-off.js.map +1 -1
  53. package/dist/default/icons/dist/react/minimal/captions-on.js.map +1 -1
  54. package/dist/default/icons/dist/react/minimal/cast-enter.js +2 -45
  55. package/dist/default/icons/dist/react/minimal/cast-enter.js.map +1 -1
  56. package/dist/default/icons/dist/react/minimal/cast-exit.js +4 -61
  57. package/dist/default/icons/dist/react/minimal/cast-exit.js.map +1 -1
  58. package/dist/default/icons/dist/react/minimal/check.js.map +1 -1
  59. package/dist/default/icons/dist/react/minimal/chevron.js.map +1 -1
  60. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  61. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  62. package/dist/default/icons/dist/react/minimal/gear.js.map +1 -1
  63. package/dist/default/icons/dist/react/minimal/pause.js.map +1 -1
  64. package/dist/default/icons/dist/react/minimal/pip-enter.js.map +1 -1
  65. package/dist/default/icons/dist/react/minimal/pip-exit.js.map +1 -1
  66. package/dist/default/icons/dist/react/minimal/play.js.map +1 -1
  67. package/dist/default/icons/dist/react/minimal/quality.js +1 -1
  68. package/dist/default/icons/dist/react/minimal/quality.js.map +1 -1
  69. package/dist/default/icons/dist/react/minimal/restart.js.map +1 -1
  70. package/dist/default/icons/dist/react/minimal/seek.js.map +1 -1
  71. package/dist/default/icons/dist/react/minimal/speech.js +7 -40
  72. package/dist/default/icons/dist/react/minimal/speech.js.map +1 -1
  73. package/dist/default/icons/dist/react/minimal/speed.js.map +1 -1
  74. package/dist/default/icons/dist/react/minimal/spinner.js +1 -1
  75. package/dist/default/icons/dist/react/minimal/spinner.js.map +1 -1
  76. package/dist/default/icons/dist/react/minimal/switches.js.map +1 -1
  77. package/dist/default/icons/dist/react/minimal/volume-high.js.map +1 -1
  78. package/dist/default/icons/dist/react/minimal/volume-low.js.map +1 -1
  79. package/dist/default/icons/dist/react/minimal/volume-off.js.map +1 -1
  80. package/dist/default/index.js +7 -3
  81. package/dist/default/media/cloudflare-video/index.js +2 -0
  82. package/dist/default/media/cloudflare-video/media.js +38 -0
  83. package/dist/default/media/cloudflare-video/media.js.map +1 -0
  84. package/dist/default/media/google-cast/google-cast.js +3 -3
  85. package/dist/default/media/google-cast/google-cast.js.map +1 -1
  86. package/dist/default/media/hls-audio/index.js +2 -0
  87. package/dist/default/media/hls-audio/media.js +21 -0
  88. package/dist/default/media/hls-audio/media.js.map +1 -0
  89. package/dist/default/media/hls-background-video/index.js +2 -0
  90. package/dist/default/media/hls-background-video/media.js +45 -0
  91. package/dist/default/media/hls-background-video/media.js.map +1 -0
  92. package/dist/default/media/hls-video/index.js +2 -0
  93. package/dist/{dev/media/simple-hls-video → default/media/hls-video}/media.js +6 -7
  94. package/dist/default/media/hls-video/media.js.map +1 -0
  95. package/dist/default/media/mux-audio/{media.js → hls-js.js} +2 -2
  96. package/dist/default/media/mux-audio/hls-js.js.map +1 -0
  97. package/dist/default/media/mux-audio/index.js +1 -1
  98. package/dist/default/media/mux-audio/spf.js +26 -0
  99. package/dist/default/media/mux-audio/spf.js.map +1 -0
  100. package/dist/default/media/mux-background-video/index.js +2 -0
  101. package/dist/default/media/mux-data/mux-data.js +7 -3
  102. package/dist/default/media/mux-data/mux-data.js.map +1 -1
  103. package/dist/default/media/mux-video/hls-js.js +27 -0
  104. package/dist/default/media/mux-video/hls-js.js.map +1 -0
  105. package/dist/default/media/mux-video/index.js +1 -1
  106. package/dist/default/media/mux-video/spf.js +27 -0
  107. package/dist/default/media/mux-video/spf.js.map +1 -0
  108. package/dist/default/media/mux-video/storyboard.js +43 -0
  109. package/dist/default/media/mux-video/storyboard.js.map +1 -0
  110. package/dist/default/media/spotify-audio/index.js +2 -0
  111. package/dist/default/media/spotify-audio/media.js +40 -0
  112. package/dist/default/media/spotify-audio/media.js.map +1 -0
  113. package/dist/default/media/tiktok-video/index.js +2 -0
  114. package/dist/default/media/tiktok-video/media.js +38 -0
  115. package/dist/default/media/tiktok-video/media.js.map +1 -0
  116. package/dist/default/media/twitch-video/index.js +2 -0
  117. package/dist/default/media/twitch-video/media.js +38 -0
  118. package/dist/default/media/twitch-video/media.js.map +1 -0
  119. package/dist/default/media/vimeo-video/media.js +4 -4
  120. package/dist/default/media/vimeo-video/media.js.map +1 -1
  121. package/dist/default/media/youtube-video/index.js +2 -0
  122. package/dist/default/media/youtube-video/media.js +37 -0
  123. package/dist/default/media/youtube-video/media.js.map +1 -0
  124. package/dist/default/player/container.js +8 -3
  125. package/dist/default/player/container.js.map +1 -1
  126. package/dist/default/player/context.js +6 -10
  127. package/dist/default/player/context.js.map +1 -1
  128. package/dist/default/player/create-player.js +44 -13
  129. package/dist/default/player/create-player.js.map +1 -1
  130. package/dist/default/player/popup-group-context.js +18 -0
  131. package/dist/default/player/popup-group-context.js.map +1 -0
  132. package/dist/default/presets/audio/index.js +8 -1
  133. package/dist/default/presets/audio/index.js.map +1 -0
  134. package/dist/default/presets/audio/minimal-skin.css +426 -295
  135. package/dist/default/presets/audio/minimal-skin.js +12 -19
  136. package/dist/default/presets/audio/minimal-skin.js.map +1 -1
  137. package/dist/default/presets/audio/minimal-skin.tailwind.js +81 -20
  138. package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
  139. package/dist/default/presets/audio/player.js +13 -0
  140. package/dist/default/presets/audio/player.js.map +1 -0
  141. package/dist/default/presets/audio/skin.css +458 -341
  142. package/dist/default/presets/audio/skin.js +13 -19
  143. package/dist/default/presets/audio/skin.js.map +1 -1
  144. package/dist/default/presets/audio/skin.tailwind.js +14 -19
  145. package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
  146. package/dist/default/presets/background/index.js +8 -1
  147. package/dist/default/presets/background/index.js.map +1 -0
  148. package/dist/default/presets/background/player.js +13 -0
  149. package/dist/default/presets/background/player.js.map +1 -0
  150. package/dist/default/presets/background/skin.css +3 -3
  151. package/dist/default/presets/live-audio/index.js +8 -1
  152. package/dist/default/presets/live-audio/index.js.map +1 -0
  153. package/dist/default/presets/live-audio/minimal-skin.css +426 -295
  154. package/dist/default/presets/live-audio/minimal-skin.js +2 -2
  155. package/dist/default/presets/live-audio/minimal-skin.js.map +1 -1
  156. package/dist/default/presets/live-audio/minimal-skin.tailwind.js +4 -4
  157. package/dist/default/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  158. package/dist/default/presets/live-audio/player.js +13 -0
  159. package/dist/default/presets/live-audio/player.js.map +1 -0
  160. package/dist/default/presets/live-audio/skin.css +458 -341
  161. package/dist/default/presets/live-audio/skin.js +2 -2
  162. package/dist/default/presets/live-audio/skin.js.map +1 -1
  163. package/dist/default/presets/live-audio/skin.tailwind.js +4 -4
  164. package/dist/default/presets/live-audio/skin.tailwind.js.map +1 -1
  165. package/dist/default/presets/live-video/index.js +8 -1
  166. package/dist/default/presets/live-video/index.js.map +1 -0
  167. package/dist/default/presets/live-video/minimal-skin.css +655 -588
  168. package/dist/default/presets/live-video/minimal-skin.js +12 -12
  169. package/dist/default/presets/live-video/minimal-skin.js.map +1 -1
  170. package/dist/default/presets/live-video/minimal-skin.tailwind.js +27 -26
  171. package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  172. package/dist/default/presets/live-video/player.js +13 -0
  173. package/dist/default/presets/live-video/player.js.map +1 -0
  174. package/dist/default/presets/live-video/skin.css +656 -618
  175. package/dist/default/presets/live-video/skin.js +11 -11
  176. package/dist/default/presets/live-video/skin.js.map +1 -1
  177. package/dist/default/presets/live-video/skin.tailwind.js +24 -112
  178. package/dist/default/presets/live-video/skin.tailwind.js.map +1 -1
  179. package/dist/default/presets/video/index.js +8 -1
  180. package/dist/default/presets/video/index.js.map +1 -0
  181. package/dist/default/presets/video/minimal-skin.css +655 -588
  182. package/dist/default/presets/video/minimal-skin.js +212 -211
  183. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  184. package/dist/default/presets/video/minimal-skin.tailwind.js +226 -233
  185. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  186. package/dist/default/presets/video/player.js +13 -0
  187. package/dist/default/presets/video/player.js.map +1 -0
  188. package/dist/default/presets/video/skin.css +656 -618
  189. package/dist/default/presets/video/skin.js +212 -207
  190. package/dist/default/presets/video/skin.js.map +1 -1
  191. package/dist/default/presets/video/skin.tailwind.js +224 -227
  192. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  193. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +6 -6
  194. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  195. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js +1 -1
  196. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  197. package/dist/default/skins/dist/default/default/tailwind/components/button.js +4 -4
  198. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  199. package/dist/default/skins/dist/default/default/tailwind/components/container.js +8 -0
  200. package/dist/default/skins/dist/default/default/tailwind/components/container.js.map +1 -0
  201. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
  202. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  203. package/dist/default/skins/dist/default/default/tailwind/components/error.js +1 -1
  204. package/dist/default/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  205. package/dist/default/skins/dist/default/default/tailwind/components/icon.js +1 -1
  206. package/dist/default/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  207. package/dist/default/skins/dist/default/default/tailwind/components/input-indicator-overlay.js +7 -0
  208. package/dist/default/skins/dist/default/default/tailwind/components/input-indicator-overlay.js.map +1 -0
  209. package/dist/default/skins/dist/default/default/tailwind/components/input-indicator.js +9 -0
  210. package/dist/default/skins/dist/default/default/tailwind/components/input-indicator.js.map +1 -0
  211. package/dist/default/skins/dist/default/default/tailwind/components/menu.js +8 -12
  212. package/dist/default/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  213. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  214. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  215. package/dist/default/skins/dist/default/default/tailwind/components/popup.js +1 -1
  216. package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  217. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +1 -1
  218. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  219. package/dist/default/skins/dist/default/default/tailwind/components/seek-indicator.js +12 -0
  220. package/dist/default/skins/dist/default/default/tailwind/components/seek-indicator.js.map +1 -0
  221. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +17 -9
  222. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  223. package/dist/default/skins/dist/default/default/tailwind/components/status-indicator.js +29 -0
  224. package/dist/default/skins/dist/default/default/tailwind/components/status-indicator.js.map +1 -0
  225. package/dist/default/skins/dist/default/default/tailwind/components/surface.js +1 -1
  226. package/dist/default/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  227. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js +3 -4
  228. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
  229. package/dist/default/skins/dist/default/default/tailwind/components/time.js +2 -2
  230. package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  231. package/dist/default/skins/dist/default/default/tailwind/components/volume-indicator.js +18 -0
  232. package/dist/default/skins/dist/default/default/tailwind/components/volume-indicator.js.map +1 -0
  233. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +22 -19
  234. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  235. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +6 -6
  236. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  237. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  238. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  239. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +4 -4
  240. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  241. package/dist/default/skins/dist/default/minimal/tailwind/components/container.js +8 -0
  242. package/dist/default/skins/dist/default/minimal/tailwind/components/container.js.map +1 -0
  243. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  244. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  245. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +1 -1
  246. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  247. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js +1 -1
  248. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  249. package/dist/default/skins/dist/default/minimal/tailwind/components/input-indicator-overlay.js +7 -0
  250. package/dist/default/skins/dist/default/minimal/tailwind/components/input-indicator-overlay.js.map +1 -0
  251. package/dist/default/skins/dist/default/minimal/tailwind/components/input-indicator.js +10 -0
  252. package/dist/default/skins/dist/default/minimal/tailwind/components/input-indicator.js.map +1 -0
  253. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js +9 -13
  254. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  255. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  256. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  257. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +2 -2
  258. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  259. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +1 -1
  260. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  261. package/dist/default/skins/dist/default/minimal/tailwind/components/seek-indicator.js +12 -0
  262. package/dist/default/skins/dist/default/minimal/tailwind/components/seek-indicator.js.map +1 -0
  263. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +17 -9
  264. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  265. package/dist/default/skins/dist/default/minimal/tailwind/components/status-indicator.js +29 -0
  266. package/dist/default/skins/dist/default/minimal/tailwind/components/status-indicator.js.map +1 -0
  267. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js +3 -5
  268. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
  269. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +2 -2
  270. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  271. package/dist/default/skins/dist/default/minimal/tailwind/components/volume-indicator.js +19 -0
  272. package/dist/default/skins/dist/default/minimal/tailwind/components/volume-indicator.js.map +1 -0
  273. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +14 -15
  274. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  275. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +22 -20
  276. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  277. package/dist/default/ui/audio-track/use-audio-track-options.js +8 -23
  278. package/dist/default/ui/audio-track/use-audio-track-options.js.map +1 -1
  279. package/dist/default/ui/audio-track-radio-group/audio-track-radio-group.js +65 -0
  280. package/dist/default/ui/audio-track-radio-group/audio-track-radio-group.js.map +1 -0
  281. package/dist/default/ui/audio-track-radio-group/index.js +2 -0
  282. package/dist/default/ui/captions-radio-group/captions-radio-group.js +65 -0
  283. package/dist/default/ui/captions-radio-group/captions-radio-group.js.map +1 -0
  284. package/dist/default/ui/captions-radio-group/index.js +2 -1
  285. package/dist/default/ui/captions-radio-group/use-captions-options.js +12 -29
  286. package/dist/default/ui/captions-radio-group/use-captions-options.js.map +1 -1
  287. package/dist/default/ui/hooks/create-radio-options-hook.js +43 -0
  288. package/dist/default/ui/hooks/create-radio-options-hook.js.map +1 -0
  289. package/dist/default/ui/hooks/use-slider.js +49 -13
  290. package/dist/default/ui/hooks/use-slider.js.map +1 -1
  291. package/dist/{dev/ui/input-indicators → default/ui/input-indicator}/use-indicator-visibility.js +1 -1
  292. package/dist/default/ui/input-indicator/use-indicator-visibility.js.map +1 -0
  293. package/dist/default/ui/{input-indicators → input-indicator}/use-input-action-subscription.js +1 -1
  294. package/dist/default/ui/input-indicator/use-input-action-subscription.js.map +1 -0
  295. package/dist/default/ui/{input-indicators → input-indicator}/use-input-indicator-root.js +1 -1
  296. package/dist/default/ui/input-indicator/use-input-indicator-root.js.map +1 -0
  297. package/dist/default/ui/{input-indicators → input-indicator}/use-rendered-indicator-state.js +1 -1
  298. package/dist/default/ui/input-indicator/use-rendered-indicator-state.js.map +1 -0
  299. package/dist/default/ui/menu/context.js +1 -11
  300. package/dist/default/ui/menu/context.js.map +1 -1
  301. package/dist/default/ui/menu/index.parts.js +3 -9
  302. package/dist/default/ui/menu/index.parts.js.map +1 -1
  303. package/dist/default/ui/menu/menu-checkbox-item.js +4 -1
  304. package/dist/default/ui/menu/menu-checkbox-item.js.map +1 -1
  305. package/dist/default/ui/menu/menu-content.js +78 -236
  306. package/dist/default/ui/menu/menu-content.js.map +1 -1
  307. package/dist/default/ui/menu/menu-item.js +11 -18
  308. package/dist/default/ui/menu/menu-item.js.map +1 -1
  309. package/dist/default/ui/menu/menu-keyboard.js +31 -0
  310. package/dist/default/ui/menu/menu-keyboard.js.map +1 -0
  311. package/dist/default/ui/menu/menu-radio-item.js +8 -6
  312. package/dist/default/ui/menu/menu-radio-item.js.map +1 -1
  313. package/dist/default/ui/menu/menu-root.js +46 -61
  314. package/dist/default/ui/menu/menu-root.js.map +1 -1
  315. package/dist/default/ui/menu/menu-trigger.js +50 -87
  316. package/dist/default/ui/menu/menu-trigger.js.map +1 -1
  317. package/dist/default/ui/mute-button/mute-button.js +2 -1
  318. package/dist/default/ui/mute-button/mute-button.js.map +1 -1
  319. package/dist/default/ui/playback-rate/use-playback-rate-options.js +14 -22
  320. package/dist/default/ui/playback-rate/use-playback-rate-options.js.map +1 -1
  321. package/dist/default/ui/playback-rate-radio-group/index.js +2 -0
  322. package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group.js +65 -0
  323. package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group.js.map +1 -0
  324. package/dist/default/ui/popover/popover-popup.js +10 -80
  325. package/dist/default/ui/popover/popover-popup.js.map +1 -1
  326. package/dist/default/ui/popover/popover-root.js +2 -1
  327. package/dist/default/ui/popover/popover-root.js.map +1 -1
  328. package/dist/default/ui/popover/popover-trigger.js +4 -5
  329. package/dist/default/ui/popover/popover-trigger.js.map +1 -1
  330. package/dist/default/ui/popover/use-popup-position.js +34 -0
  331. package/dist/default/ui/popover/use-popup-position.js.map +1 -0
  332. package/dist/default/ui/poster/poster.js +8 -4
  333. package/dist/default/ui/poster/poster.js.map +1 -1
  334. package/dist/default/ui/quality/use-quality-options.js +9 -30
  335. package/dist/default/ui/quality/use-quality-options.js.map +1 -1
  336. package/dist/default/ui/quality-radio-group/index.js +2 -0
  337. package/dist/default/ui/quality-radio-group/quality-radio-group.js +66 -0
  338. package/dist/default/ui/quality-radio-group/quality-radio-group.js.map +1 -0
  339. package/dist/default/ui/seek-indicator/seek-indicator-root.js +1 -1
  340. package/dist/default/ui/seek-indicator/seek-indicator-root.js.map +1 -1
  341. package/dist/default/ui/slider/context.js +7 -2
  342. package/dist/default/ui/slider/context.js.map +1 -1
  343. package/dist/default/ui/slider/slider-preview.js +2 -3
  344. package/dist/default/ui/slider/slider-preview.js.map +1 -1
  345. package/dist/default/ui/slider/slider-root.js +3 -1
  346. package/dist/default/ui/slider/slider-root.js.map +1 -1
  347. package/dist/default/ui/slider/slider-thumbnail.js +2 -2
  348. package/dist/default/ui/slider/slider-thumbnail.js.map +1 -1
  349. package/dist/default/ui/slider/slider-value.js +3 -2
  350. package/dist/default/ui/slider/slider-value.js.map +1 -1
  351. package/dist/default/ui/status-announcer/status-announcer.js +7 -4
  352. package/dist/default/ui/status-announcer/status-announcer.js.map +1 -1
  353. package/dist/default/ui/status-indicator/status-indicator-root.js +2 -2
  354. package/dist/default/ui/status-indicator/status-indicator-root.js.map +1 -1
  355. package/dist/default/ui/time/time-value.js +13 -5
  356. package/dist/default/ui/time/time-value.js.map +1 -1
  357. package/dist/default/ui/time-slider/index.parts.js +5 -1
  358. package/dist/default/ui/time-slider/index.parts.js.map +1 -1
  359. package/dist/default/ui/time-slider/time-slider-chapters/slider-segments.js +61 -0
  360. package/dist/default/ui/time-slider/time-slider-chapters/slider-segments.js.map +1 -0
  361. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js +46 -0
  362. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js.map +1 -0
  363. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapters.js +52 -0
  364. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapters.js.map +1 -0
  365. package/dist/default/ui/time-slider/time-slider-root.js +6 -4
  366. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
  367. package/dist/default/ui/tooltip/tooltip-popup.js +13 -82
  368. package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
  369. package/dist/default/ui/tooltip/tooltip-root.js +5 -1
  370. package/dist/default/ui/tooltip/tooltip-root.js.map +1 -1
  371. package/dist/default/ui/tooltip/tooltip-trigger.js +2 -4
  372. package/dist/default/ui/tooltip/tooltip-trigger.js.map +1 -1
  373. package/dist/default/ui/volume-indicator/volume-indicator-root.js +1 -1
  374. package/dist/default/ui/volume-indicator/volume-indicator-root.js.map +1 -1
  375. package/dist/default/ui/volume-slider/volume-slider-root.js +10 -4
  376. package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -1
  377. package/dist/dev/__generated__/skins/default-video/styles/base.css +25 -0
  378. package/dist/dev/__generated__/skins/default-video/styles/buttons.css +152 -0
  379. package/dist/dev/__generated__/skins/default-video/styles/container.css +45 -0
  380. package/dist/dev/__generated__/skins/default-video/styles/controls.css +45 -0
  381. package/dist/dev/__generated__/skins/default-video/styles/overlays.css +11 -0
  382. package/dist/dev/__generated__/skins/default-video/styles/popups.css +45 -0
  383. package/dist/dev/__generated__/skins/default-video/styles/poster.css +47 -0
  384. package/dist/dev/__generated__/skins/default-video/styles/sliders.css +112 -0
  385. package/dist/dev/__generated__/skins/default-video/styles/styles.css +514 -0
  386. package/dist/dev/__generated__/skins/default-video/styles/theme.css +22 -0
  387. package/dist/dev/_virtual/_rolldown/runtime.js +15 -1
  388. package/dist/dev/i18n/context.d.ts.map +1 -1
  389. package/dist/dev/i18n/context.js +3 -3
  390. package/dist/dev/i18n/context.js.map +1 -1
  391. package/dist/dev/i18n/locales/id/register.d.ts +1 -0
  392. package/dist/dev/i18n/locales/id/register.js +8 -0
  393. package/dist/dev/i18n/locales/id/register.js.map +1 -0
  394. package/dist/dev/i18n/locales/id.d.ts +2 -0
  395. package/dist/dev/i18n/locales/id.js +2 -0
  396. package/dist/dev/i18n/locales/lt/register.d.ts +1 -0
  397. package/dist/dev/i18n/locales/lt/register.js +8 -0
  398. package/dist/dev/i18n/locales/lt/register.js.map +1 -0
  399. package/dist/dev/i18n/locales/lt.d.ts +2 -0
  400. package/dist/dev/i18n/locales/lt.js +2 -0
  401. package/dist/dev/icons/dist/react/default/airplay-enter.js.map +1 -1
  402. package/dist/dev/icons/dist/react/default/airplay-exit.js +1 -2
  403. package/dist/dev/icons/dist/react/default/airplay-exit.js.map +1 -1
  404. package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -1
  405. package/dist/dev/icons/dist/react/default/captions-on.js.map +1 -1
  406. package/dist/dev/icons/dist/react/default/cast-enter.js +2 -45
  407. package/dist/dev/icons/dist/react/default/cast-enter.js.map +1 -1
  408. package/dist/dev/icons/dist/react/default/cast-exit.js +4 -61
  409. package/dist/dev/icons/dist/react/default/cast-exit.js.map +1 -1
  410. package/dist/dev/icons/dist/react/default/check.js.map +1 -1
  411. package/dist/dev/icons/dist/react/default/chevron.js.map +1 -1
  412. package/dist/dev/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  413. package/dist/dev/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  414. package/dist/dev/icons/dist/react/default/gear.js.map +1 -1
  415. package/dist/dev/icons/dist/react/default/pause.js.map +1 -1
  416. package/dist/dev/icons/dist/react/default/pip-enter.js.map +1 -1
  417. package/dist/dev/icons/dist/react/default/pip-exit.js.map +1 -1
  418. package/dist/dev/icons/dist/react/default/play.js.map +1 -1
  419. package/dist/dev/icons/dist/react/default/quality.js +1 -1
  420. package/dist/dev/icons/dist/react/default/quality.js.map +1 -1
  421. package/dist/dev/icons/dist/react/default/restart.js.map +1 -1
  422. package/dist/dev/icons/dist/react/default/seek.js.map +1 -1
  423. package/dist/dev/icons/dist/react/default/speech.js.map +1 -1
  424. package/dist/dev/icons/dist/react/default/speed.js.map +1 -1
  425. package/dist/dev/icons/dist/react/default/spinner.js +1 -1
  426. package/dist/dev/icons/dist/react/default/spinner.js.map +1 -1
  427. package/dist/dev/icons/dist/react/default/switches.js.map +1 -1
  428. package/dist/dev/icons/dist/react/default/volume-high.js.map +1 -1
  429. package/dist/dev/icons/dist/react/default/volume-low.js.map +1 -1
  430. package/dist/dev/icons/dist/react/default/volume-off.js.map +1 -1
  431. package/dist/dev/icons/dist/react/minimal/airplay-enter.js.map +1 -1
  432. package/dist/dev/icons/dist/react/minimal/airplay-exit.js +1 -2
  433. package/dist/dev/icons/dist/react/minimal/airplay-exit.js.map +1 -1
  434. package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -1
  435. package/dist/dev/icons/dist/react/minimal/captions-on.js.map +1 -1
  436. package/dist/dev/icons/dist/react/minimal/cast-enter.js +2 -45
  437. package/dist/dev/icons/dist/react/minimal/cast-enter.js.map +1 -1
  438. package/dist/dev/icons/dist/react/minimal/cast-exit.js +4 -61
  439. package/dist/dev/icons/dist/react/minimal/cast-exit.js.map +1 -1
  440. package/dist/dev/icons/dist/react/minimal/check.js.map +1 -1
  441. package/dist/dev/icons/dist/react/minimal/chevron.js.map +1 -1
  442. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  443. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  444. package/dist/dev/icons/dist/react/minimal/gear.js.map +1 -1
  445. package/dist/dev/icons/dist/react/minimal/pause.js.map +1 -1
  446. package/dist/dev/icons/dist/react/minimal/pip-enter.js.map +1 -1
  447. package/dist/dev/icons/dist/react/minimal/pip-exit.js.map +1 -1
  448. package/dist/dev/icons/dist/react/minimal/play.js.map +1 -1
  449. package/dist/dev/icons/dist/react/minimal/quality.js +1 -1
  450. package/dist/dev/icons/dist/react/minimal/quality.js.map +1 -1
  451. package/dist/dev/icons/dist/react/minimal/restart.js.map +1 -1
  452. package/dist/dev/icons/dist/react/minimal/seek.js.map +1 -1
  453. package/dist/dev/icons/dist/react/minimal/speech.js +7 -40
  454. package/dist/dev/icons/dist/react/minimal/speech.js.map +1 -1
  455. package/dist/dev/icons/dist/react/minimal/speed.js.map +1 -1
  456. package/dist/dev/icons/dist/react/minimal/spinner.js +1 -1
  457. package/dist/dev/icons/dist/react/minimal/spinner.js.map +1 -1
  458. package/dist/dev/icons/dist/react/minimal/switches.js.map +1 -1
  459. package/dist/dev/icons/dist/react/minimal/volume-high.js.map +1 -1
  460. package/dist/dev/icons/dist/react/minimal/volume-low.js.map +1 -1
  461. package/dist/dev/icons/dist/react/minimal/volume-off.js.map +1 -1
  462. package/dist/dev/index.d.ts +18 -2
  463. package/dist/dev/index.d.ts.map +1 -0
  464. package/dist/dev/index.js +7 -3
  465. package/dist/dev/media/cloudflare-video/index.d.ts +2 -0
  466. package/dist/dev/media/cloudflare-video/index.js +2 -0
  467. package/dist/dev/media/cloudflare-video/media.d.ts +13 -0
  468. package/dist/dev/media/cloudflare-video/media.d.ts.map +1 -0
  469. package/dist/dev/media/cloudflare-video/media.js +38 -0
  470. package/dist/dev/media/cloudflare-video/media.js.map +1 -0
  471. package/dist/dev/media/google-cast/google-cast.d.ts +3 -3
  472. package/dist/dev/media/google-cast/google-cast.js +3 -3
  473. package/dist/dev/media/google-cast/google-cast.js.map +1 -1
  474. package/dist/dev/media/hls-audio/index.d.ts +2 -0
  475. package/dist/dev/media/hls-audio/index.js +2 -0
  476. package/dist/dev/media/hls-audio/media.d.ts +13 -0
  477. package/dist/dev/media/hls-audio/media.d.ts.map +1 -0
  478. package/dist/dev/media/hls-audio/media.js +21 -0
  479. package/dist/dev/media/hls-audio/media.js.map +1 -0
  480. package/dist/dev/media/hls-background-video/index.d.ts +2 -0
  481. package/dist/dev/media/hls-background-video/index.js +2 -0
  482. package/dist/dev/media/hls-background-video/media.d.ts +28 -0
  483. package/dist/dev/media/hls-background-video/media.d.ts.map +1 -0
  484. package/dist/dev/media/hls-background-video/media.js +45 -0
  485. package/dist/dev/media/hls-background-video/media.js.map +1 -0
  486. package/dist/dev/media/hls-video/index.d.ts +2 -0
  487. package/dist/dev/media/hls-video/index.js +2 -0
  488. package/dist/dev/media/hls-video/media.d.ts +13 -0
  489. package/dist/dev/media/hls-video/media.d.ts.map +1 -0
  490. package/dist/{default/media/simple-hls-video → dev/media/hls-video}/media.js +6 -7
  491. package/dist/dev/media/hls-video/media.js.map +1 -0
  492. package/dist/dev/media/mux-audio/{media.d.ts → hls-js.d.ts} +3 -3
  493. package/dist/dev/media/mux-audio/hls-js.d.ts.map +1 -0
  494. package/dist/dev/media/mux-audio/{media.js → hls-js.js} +2 -2
  495. package/dist/dev/media/mux-audio/hls-js.js.map +1 -0
  496. package/dist/dev/media/mux-audio/index.d.ts +1 -1
  497. package/dist/dev/media/mux-audio/index.js +1 -1
  498. package/dist/dev/media/mux-audio/spf.d.ts +14 -0
  499. package/dist/dev/media/mux-audio/spf.d.ts.map +1 -0
  500. package/dist/dev/media/mux-audio/spf.js +26 -0
  501. package/dist/dev/media/mux-audio/spf.js.map +1 -0
  502. package/dist/dev/media/mux-background-video/index.d.ts +3 -0
  503. package/dist/dev/media/mux-background-video/index.js +2 -0
  504. package/dist/dev/media/mux-data/mux-data.d.ts +7 -3
  505. package/dist/dev/media/mux-data/mux-data.d.ts.map +1 -1
  506. package/dist/dev/media/mux-data/mux-data.js +7 -3
  507. package/dist/dev/media/mux-data/mux-data.js.map +1 -1
  508. package/dist/dev/media/mux-video/{media.d.ts → hls-js.d.ts} +3 -3
  509. package/dist/dev/media/mux-video/hls-js.d.ts.map +1 -0
  510. package/dist/dev/media/mux-video/hls-js.js +27 -0
  511. package/dist/dev/media/mux-video/hls-js.js.map +1 -0
  512. package/dist/dev/media/mux-video/index.d.ts +1 -1
  513. package/dist/dev/media/mux-video/index.js +1 -1
  514. package/dist/dev/media/mux-video/spf.d.ts +14 -0
  515. package/dist/dev/media/mux-video/spf.d.ts.map +1 -0
  516. package/dist/dev/media/mux-video/spf.js +27 -0
  517. package/dist/dev/media/mux-video/spf.js.map +1 -0
  518. package/dist/dev/media/mux-video/storyboard.js +43 -0
  519. package/dist/dev/media/mux-video/storyboard.js.map +1 -0
  520. package/dist/dev/media/spotify-audio/index.d.ts +2 -0
  521. package/dist/dev/media/spotify-audio/index.js +2 -0
  522. package/dist/dev/media/spotify-audio/media.d.ts +13 -0
  523. package/dist/dev/media/spotify-audio/media.d.ts.map +1 -0
  524. package/dist/dev/media/spotify-audio/media.js +40 -0
  525. package/dist/dev/media/spotify-audio/media.js.map +1 -0
  526. package/dist/dev/media/tiktok-video/index.d.ts +2 -0
  527. package/dist/dev/media/tiktok-video/index.js +2 -0
  528. package/dist/dev/media/tiktok-video/media.d.ts +13 -0
  529. package/dist/dev/media/tiktok-video/media.d.ts.map +1 -0
  530. package/dist/dev/media/tiktok-video/media.js +38 -0
  531. package/dist/dev/media/tiktok-video/media.js.map +1 -0
  532. package/dist/dev/media/twitch-video/index.d.ts +2 -0
  533. package/dist/dev/media/twitch-video/index.js +2 -0
  534. package/dist/dev/media/twitch-video/media.d.ts +13 -0
  535. package/dist/dev/media/twitch-video/media.d.ts.map +1 -0
  536. package/dist/dev/media/twitch-video/media.js +38 -0
  537. package/dist/dev/media/twitch-video/media.js.map +1 -0
  538. package/dist/dev/media/vimeo-video/media.d.ts.map +1 -1
  539. package/dist/dev/media/vimeo-video/media.js +4 -4
  540. package/dist/dev/media/vimeo-video/media.js.map +1 -1
  541. package/dist/dev/media/youtube-video/index.d.ts +2 -0
  542. package/dist/dev/media/youtube-video/index.js +2 -0
  543. package/dist/dev/media/youtube-video/media.d.ts +13 -0
  544. package/dist/dev/media/youtube-video/media.d.ts.map +1 -0
  545. package/dist/dev/media/youtube-video/media.js +37 -0
  546. package/dist/dev/media/youtube-video/media.js.map +1 -0
  547. package/dist/dev/player/container.d.ts.map +1 -1
  548. package/dist/dev/player/container.js +8 -3
  549. package/dist/dev/player/container.js.map +1 -1
  550. package/dist/dev/player/context.d.ts +7 -8
  551. package/dist/dev/player/context.d.ts.map +1 -1
  552. package/dist/dev/player/context.js +6 -10
  553. package/dist/dev/player/context.js.map +1 -1
  554. package/dist/dev/player/create-player.d.ts +6 -8
  555. package/dist/dev/player/create-player.d.ts.map +1 -1
  556. package/dist/dev/player/create-player.js +45 -14
  557. package/dist/dev/player/create-player.js.map +1 -1
  558. package/dist/dev/player/popup-group-context.js +18 -0
  559. package/dist/dev/player/popup-group-context.js.map +1 -0
  560. package/dist/dev/presets/audio/index.d.ts +2 -1
  561. package/dist/dev/presets/audio/index.js +8 -1
  562. package/dist/dev/presets/audio/index.js.map +1 -0
  563. package/dist/dev/presets/audio/minimal-skin.css +426 -295
  564. package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
  565. package/dist/dev/presets/audio/minimal-skin.js +12 -19
  566. package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
  567. package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
  568. package/dist/dev/presets/audio/minimal-skin.tailwind.js +81 -20
  569. package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
  570. package/dist/dev/presets/audio/player.d.ts +13 -0
  571. package/dist/dev/presets/audio/player.d.ts.map +1 -0
  572. package/dist/dev/presets/audio/player.js +13 -0
  573. package/dist/dev/presets/audio/player.js.map +1 -0
  574. package/dist/dev/presets/audio/skin.css +458 -341
  575. package/dist/dev/presets/audio/skin.d.ts.map +1 -1
  576. package/dist/dev/presets/audio/skin.js +13 -19
  577. package/dist/dev/presets/audio/skin.js.map +1 -1
  578. package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
  579. package/dist/dev/presets/audio/skin.tailwind.js +14 -19
  580. package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
  581. package/dist/dev/presets/background/index.d.ts +2 -1
  582. package/dist/dev/presets/background/index.js +8 -1
  583. package/dist/dev/presets/background/index.js.map +1 -0
  584. package/dist/dev/presets/background/player.d.ts +10 -0
  585. package/dist/dev/presets/background/player.d.ts.map +1 -0
  586. package/dist/dev/presets/background/player.js +13 -0
  587. package/dist/dev/presets/background/player.js.map +1 -0
  588. package/dist/dev/presets/background/skin.css +3 -3
  589. package/dist/dev/presets/live-audio/index.d.ts +2 -1
  590. package/dist/dev/presets/live-audio/index.js +8 -1
  591. package/dist/dev/presets/live-audio/index.js.map +1 -0
  592. package/dist/dev/presets/live-audio/minimal-skin.css +426 -295
  593. package/dist/dev/presets/live-audio/minimal-skin.js +2 -2
  594. package/dist/dev/presets/live-audio/minimal-skin.js.map +1 -1
  595. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js +4 -4
  596. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  597. package/dist/dev/presets/live-audio/player.d.ts +13 -0
  598. package/dist/dev/presets/live-audio/player.d.ts.map +1 -0
  599. package/dist/dev/presets/live-audio/player.js +13 -0
  600. package/dist/dev/presets/live-audio/player.js.map +1 -0
  601. package/dist/dev/presets/live-audio/skin.css +458 -341
  602. package/dist/dev/presets/live-audio/skin.js +2 -2
  603. package/dist/dev/presets/live-audio/skin.js.map +1 -1
  604. package/dist/dev/presets/live-audio/skin.tailwind.js +4 -4
  605. package/dist/dev/presets/live-audio/skin.tailwind.js.map +1 -1
  606. package/dist/dev/presets/live-video/index.d.ts +2 -1
  607. package/dist/dev/presets/live-video/index.js +8 -1
  608. package/dist/dev/presets/live-video/index.js.map +1 -0
  609. package/dist/dev/presets/live-video/minimal-skin.css +655 -588
  610. package/dist/dev/presets/live-video/minimal-skin.js +12 -12
  611. package/dist/dev/presets/live-video/minimal-skin.js.map +1 -1
  612. package/dist/dev/presets/live-video/minimal-skin.tailwind.d.ts.map +1 -1
  613. package/dist/dev/presets/live-video/minimal-skin.tailwind.js +27 -26
  614. package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  615. package/dist/dev/presets/live-video/player.d.ts +13 -0
  616. package/dist/dev/presets/live-video/player.d.ts.map +1 -0
  617. package/dist/dev/presets/live-video/player.js +13 -0
  618. package/dist/dev/presets/live-video/player.js.map +1 -0
  619. package/dist/dev/presets/live-video/skin.css +656 -618
  620. package/dist/dev/presets/live-video/skin.js +11 -11
  621. package/dist/dev/presets/live-video/skin.js.map +1 -1
  622. package/dist/dev/presets/live-video/skin.tailwind.d.ts.map +1 -1
  623. package/dist/dev/presets/live-video/skin.tailwind.js +24 -112
  624. package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -1
  625. package/dist/dev/presets/video/index.d.ts +2 -1
  626. package/dist/dev/presets/video/index.js +8 -1
  627. package/dist/dev/presets/video/index.js.map +1 -0
  628. package/dist/dev/presets/video/minimal-skin.css +655 -588
  629. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  630. package/dist/dev/presets/video/minimal-skin.js +212 -211
  631. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  632. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  633. package/dist/dev/presets/video/minimal-skin.tailwind.js +226 -233
  634. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  635. package/dist/dev/presets/video/player.d.ts +13 -0
  636. package/dist/dev/presets/video/player.d.ts.map +1 -0
  637. package/dist/dev/presets/video/player.js +13 -0
  638. package/dist/dev/presets/video/player.js.map +1 -0
  639. package/dist/dev/presets/video/skin.css +656 -618
  640. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  641. package/dist/dev/presets/video/skin.js +212 -207
  642. package/dist/dev/presets/video/skin.js.map +1 -1
  643. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  644. package/dist/dev/presets/video/skin.tailwind.js +224 -227
  645. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  646. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +6 -6
  647. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  648. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js +1 -1
  649. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  650. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +4 -4
  651. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  652. package/dist/dev/skins/dist/default/default/tailwind/components/container.js +8 -0
  653. package/dist/dev/skins/dist/default/default/tailwind/components/container.js.map +1 -0
  654. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +1 -1
  655. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  656. package/dist/dev/skins/dist/default/default/tailwind/components/error.js +1 -1
  657. package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  658. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js +1 -1
  659. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  660. package/dist/dev/skins/dist/default/default/tailwind/components/input-indicator-overlay.js +7 -0
  661. package/dist/dev/skins/dist/default/default/tailwind/components/input-indicator-overlay.js.map +1 -0
  662. package/dist/dev/skins/dist/default/default/tailwind/components/input-indicator.js +9 -0
  663. package/dist/dev/skins/dist/default/default/tailwind/components/input-indicator.js.map +1 -0
  664. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js +8 -12
  665. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  666. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  667. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  668. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +1 -1
  669. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  670. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +1 -1
  671. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  672. package/dist/dev/skins/dist/default/default/tailwind/components/seek-indicator.js +12 -0
  673. package/dist/dev/skins/dist/default/default/tailwind/components/seek-indicator.js.map +1 -0
  674. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +17 -9
  675. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  676. package/dist/dev/skins/dist/default/default/tailwind/components/status-indicator.js +29 -0
  677. package/dist/dev/skins/dist/default/default/tailwind/components/status-indicator.js.map +1 -0
  678. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js +1 -1
  679. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  680. package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js +3 -4
  681. package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
  682. package/dist/dev/skins/dist/default/default/tailwind/components/time.js +2 -2
  683. package/dist/dev/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  684. package/dist/dev/skins/dist/default/default/tailwind/components/volume-indicator.js +18 -0
  685. package/dist/dev/skins/dist/default/default/tailwind/components/volume-indicator.js.map +1 -0
  686. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +22 -19
  687. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  688. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +6 -6
  689. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  690. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  691. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  692. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +4 -4
  693. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  694. package/dist/dev/skins/dist/default/minimal/tailwind/components/container.js +8 -0
  695. package/dist/dev/skins/dist/default/minimal/tailwind/components/container.js.map +1 -0
  696. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  697. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  698. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +1 -1
  699. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  700. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js +1 -1
  701. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  702. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-indicator-overlay.js +7 -0
  703. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-indicator-overlay.js.map +1 -0
  704. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-indicator.js +10 -0
  705. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-indicator.js.map +1 -0
  706. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js +9 -13
  707. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  708. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  709. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  710. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +2 -2
  711. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  712. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +1 -1
  713. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  714. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek-indicator.js +12 -0
  715. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek-indicator.js.map +1 -0
  716. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +17 -9
  717. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  718. package/dist/dev/skins/dist/default/minimal/tailwind/components/status-indicator.js +29 -0
  719. package/dist/dev/skins/dist/default/minimal/tailwind/components/status-indicator.js.map +1 -0
  720. package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js +3 -5
  721. package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
  722. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +2 -2
  723. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  724. package/dist/dev/skins/dist/default/minimal/tailwind/components/volume-indicator.js +19 -0
  725. package/dist/dev/skins/dist/default/minimal/tailwind/components/volume-indicator.js.map +1 -0
  726. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +14 -15
  727. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  728. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +22 -20
  729. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  730. package/dist/dev/ui/audio-track/use-audio-track-options.d.ts +6 -6
  731. package/dist/dev/ui/audio-track/use-audio-track-options.d.ts.map +1 -1
  732. package/dist/dev/ui/audio-track/use-audio-track-options.js +9 -27
  733. package/dist/dev/ui/audio-track/use-audio-track-options.js.map +1 -1
  734. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.d.ts +43 -0
  735. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.d.ts.map +1 -0
  736. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.js +65 -0
  737. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.js.map +1 -0
  738. package/dist/dev/ui/audio-track-radio-group/index.d.ts +2 -0
  739. package/dist/dev/ui/audio-track-radio-group/index.js +2 -0
  740. package/dist/dev/ui/captions-radio-group/captions-radio-group.d.ts +43 -0
  741. package/dist/dev/ui/captions-radio-group/captions-radio-group.d.ts.map +1 -0
  742. package/dist/dev/ui/captions-radio-group/captions-radio-group.js +65 -0
  743. package/dist/dev/ui/captions-radio-group/captions-radio-group.js.map +1 -0
  744. package/dist/dev/ui/captions-radio-group/index.d.ts +2 -1
  745. package/dist/dev/ui/captions-radio-group/index.js +2 -1
  746. package/dist/dev/ui/captions-radio-group/use-captions-options.d.ts +6 -6
  747. package/dist/dev/ui/captions-radio-group/use-captions-options.d.ts.map +1 -1
  748. package/dist/dev/ui/captions-radio-group/use-captions-options.js +13 -33
  749. package/dist/dev/ui/captions-radio-group/use-captions-options.js.map +1 -1
  750. package/dist/dev/ui/hooks/create-radio-options-hook.d.ts +11 -0
  751. package/dist/dev/ui/hooks/create-radio-options-hook.d.ts.map +1 -0
  752. package/dist/dev/ui/hooks/create-radio-options-hook.js +46 -0
  753. package/dist/dev/ui/hooks/create-radio-options-hook.js.map +1 -0
  754. package/dist/dev/ui/hooks/use-slider.d.ts +2 -1
  755. package/dist/dev/ui/hooks/use-slider.d.ts.map +1 -1
  756. package/dist/dev/ui/hooks/use-slider.js +49 -13
  757. package/dist/dev/ui/hooks/use-slider.js.map +1 -1
  758. package/dist/{default/ui/input-indicators → dev/ui/input-indicator}/use-indicator-visibility.js +1 -1
  759. package/dist/dev/ui/input-indicator/use-indicator-visibility.js.map +1 -0
  760. package/dist/dev/ui/{input-indicators → input-indicator}/use-input-action-subscription.js +1 -1
  761. package/dist/dev/ui/input-indicator/use-input-action-subscription.js.map +1 -0
  762. package/dist/dev/ui/{input-indicators → input-indicator}/use-input-indicator-root.js +1 -1
  763. package/dist/dev/ui/input-indicator/use-input-indicator-root.js.map +1 -0
  764. package/dist/dev/ui/{input-indicators → input-indicator}/use-rendered-indicator-state.js +1 -1
  765. package/dist/dev/ui/input-indicator/use-rendered-indicator-state.js.map +1 -0
  766. package/dist/dev/ui/menu/context.d.ts +1 -10
  767. package/dist/dev/ui/menu/context.d.ts.map +1 -1
  768. package/dist/dev/ui/menu/context.js +1 -11
  769. package/dist/dev/ui/menu/context.js.map +1 -1
  770. package/dist/dev/ui/menu/index.parts.d.ts +3 -6
  771. package/dist/dev/ui/menu/index.parts.js +3 -9
  772. package/dist/dev/ui/menu/index.parts.js.map +1 -1
  773. package/dist/dev/ui/menu/menu-checkbox-item.js +4 -1
  774. package/dist/dev/ui/menu/menu-checkbox-item.js.map +1 -1
  775. package/dist/dev/ui/menu/menu-content.d.ts.map +1 -1
  776. package/dist/dev/ui/menu/menu-content.js +78 -236
  777. package/dist/dev/ui/menu/menu-content.js.map +1 -1
  778. package/dist/dev/ui/menu/menu-item.d.ts +0 -3
  779. package/dist/dev/ui/menu/menu-item.d.ts.map +1 -1
  780. package/dist/dev/ui/menu/menu-item.js +11 -18
  781. package/dist/dev/ui/menu/menu-item.js.map +1 -1
  782. package/dist/dev/ui/menu/menu-keyboard.js +31 -0
  783. package/dist/dev/ui/menu/menu-keyboard.js.map +1 -0
  784. package/dist/dev/ui/menu/menu-radio-item.d.ts.map +1 -1
  785. package/dist/dev/ui/menu/menu-radio-item.js +8 -6
  786. package/dist/dev/ui/menu/menu-radio-item.js.map +1 -1
  787. package/dist/dev/ui/menu/menu-root.d.ts.map +1 -1
  788. package/dist/dev/ui/menu/menu-root.js +46 -61
  789. package/dist/dev/ui/menu/menu-root.js.map +1 -1
  790. package/dist/dev/ui/menu/menu-trigger.d.ts +5 -5
  791. package/dist/dev/ui/menu/menu-trigger.d.ts.map +1 -1
  792. package/dist/dev/ui/menu/menu-trigger.js +50 -87
  793. package/dist/dev/ui/menu/menu-trigger.js.map +1 -1
  794. package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -1
  795. package/dist/dev/ui/mute-button/mute-button.js +2 -1
  796. package/dist/dev/ui/mute-button/mute-button.js.map +1 -1
  797. package/dist/dev/ui/playback-rate/use-playback-rate-options.d.ts +6 -7
  798. package/dist/dev/ui/playback-rate/use-playback-rate-options.d.ts.map +1 -1
  799. package/dist/dev/ui/playback-rate/use-playback-rate-options.js +15 -26
  800. package/dist/dev/ui/playback-rate/use-playback-rate-options.js.map +1 -1
  801. package/dist/dev/ui/playback-rate-radio-group/index.d.ts +2 -0
  802. package/dist/dev/ui/playback-rate-radio-group/index.js +2 -0
  803. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.d.ts +43 -0
  804. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.d.ts.map +1 -0
  805. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.js +65 -0
  806. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.js.map +1 -0
  807. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
  808. package/dist/dev/ui/popover/popover-popup.js +10 -80
  809. package/dist/dev/ui/popover/popover-popup.js.map +1 -1
  810. package/dist/dev/ui/popover/popover-root.d.ts.map +1 -1
  811. package/dist/dev/ui/popover/popover-root.js +2 -1
  812. package/dist/dev/ui/popover/popover-root.js.map +1 -1
  813. package/dist/dev/ui/popover/popover-trigger.d.ts.map +1 -1
  814. package/dist/dev/ui/popover/popover-trigger.js +4 -5
  815. package/dist/dev/ui/popover/popover-trigger.js.map +1 -1
  816. package/dist/dev/ui/popover/use-popup-position.js +34 -0
  817. package/dist/dev/ui/popover/use-popup-position.js.map +1 -0
  818. package/dist/dev/ui/poster/poster.js +8 -4
  819. package/dist/dev/ui/poster/poster.js.map +1 -1
  820. package/dist/dev/ui/quality/use-quality-options.d.ts +6 -8
  821. package/dist/dev/ui/quality/use-quality-options.d.ts.map +1 -1
  822. package/dist/dev/ui/quality/use-quality-options.js +10 -34
  823. package/dist/dev/ui/quality/use-quality-options.js.map +1 -1
  824. package/dist/dev/ui/quality-radio-group/index.d.ts +2 -0
  825. package/dist/dev/ui/quality-radio-group/index.js +2 -0
  826. package/dist/dev/ui/quality-radio-group/quality-radio-group.d.ts +44 -0
  827. package/dist/dev/ui/quality-radio-group/quality-radio-group.d.ts.map +1 -0
  828. package/dist/dev/ui/quality-radio-group/quality-radio-group.js +66 -0
  829. package/dist/dev/ui/quality-radio-group/quality-radio-group.js.map +1 -0
  830. package/dist/dev/ui/seek-indicator/seek-indicator-root.js +1 -1
  831. package/dist/dev/ui/seek-indicator/seek-indicator-root.js.map +1 -1
  832. package/dist/dev/ui/slider/context.js +7 -2
  833. package/dist/dev/ui/slider/context.js.map +1 -1
  834. package/dist/dev/ui/slider/slider-preview.d.ts.map +1 -1
  835. package/dist/dev/ui/slider/slider-preview.js +2 -3
  836. package/dist/dev/ui/slider/slider-preview.js.map +1 -1
  837. package/dist/dev/ui/slider/slider-root.d.ts.map +1 -1
  838. package/dist/dev/ui/slider/slider-root.js +3 -1
  839. package/dist/dev/ui/slider/slider-root.js.map +1 -1
  840. package/dist/dev/ui/slider/slider-thumbnail.js +2 -2
  841. package/dist/dev/ui/slider/slider-thumbnail.js.map +1 -1
  842. package/dist/dev/ui/slider/slider-value.d.ts.map +1 -1
  843. package/dist/dev/ui/slider/slider-value.js +3 -2
  844. package/dist/dev/ui/slider/slider-value.js.map +1 -1
  845. package/dist/dev/ui/status-announcer/status-announcer.d.ts.map +1 -1
  846. package/dist/dev/ui/status-announcer/status-announcer.js +7 -4
  847. package/dist/dev/ui/status-announcer/status-announcer.js.map +1 -1
  848. package/dist/dev/ui/status-indicator/status-indicator-root.d.ts.map +1 -1
  849. package/dist/dev/ui/status-indicator/status-indicator-root.js +2 -2
  850. package/dist/dev/ui/status-indicator/status-indicator-root.js.map +1 -1
  851. package/dist/dev/ui/time/time-value.d.ts.map +1 -1
  852. package/dist/dev/ui/time/time-value.js +13 -5
  853. package/dist/dev/ui/time/time-value.js.map +1 -1
  854. package/dist/dev/ui/time-slider/index.parts.d.ts +4 -2
  855. package/dist/dev/ui/time-slider/index.parts.js +5 -1
  856. package/dist/dev/ui/time-slider/index.parts.js.map +1 -1
  857. package/dist/dev/ui/time-slider/time-slider-chapters/slider-segments.js +61 -0
  858. package/dist/dev/ui/time-slider/time-slider-chapters/slider-segments.js.map +1 -0
  859. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.d.ts +19 -0
  860. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.d.ts.map +1 -0
  861. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js +46 -0
  862. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js.map +1 -0
  863. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.d.ts +22 -0
  864. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.d.ts.map +1 -0
  865. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.js +52 -0
  866. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.js.map +1 -0
  867. package/dist/dev/ui/time-slider/time-slider-root.d.ts.map +1 -1
  868. package/dist/dev/ui/time-slider/time-slider-root.js +6 -4
  869. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
  870. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  871. package/dist/dev/ui/tooltip/tooltip-popup.js +13 -82
  872. package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
  873. package/dist/dev/ui/tooltip/tooltip-root.d.ts.map +1 -1
  874. package/dist/dev/ui/tooltip/tooltip-root.js +5 -1
  875. package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -1
  876. package/dist/dev/ui/tooltip/tooltip-trigger.d.ts.map +1 -1
  877. package/dist/dev/ui/tooltip/tooltip-trigger.js +2 -4
  878. package/dist/dev/ui/tooltip/tooltip-trigger.js.map +1 -1
  879. package/dist/dev/ui/volume-indicator/volume-indicator-root.js +1 -1
  880. package/dist/dev/ui/volume-indicator/volume-indicator-root.js.map +1 -1
  881. package/dist/dev/ui/volume-slider/volume-slider-root.d.ts.map +1 -1
  882. package/dist/dev/ui/volume-slider/volume-slider-root.js +10 -4
  883. package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -1
  884. package/docs/README.md +1 -1
  885. package/docs/concepts/cast.md +6 -6
  886. package/docs/concepts/features.md +9 -6
  887. package/docs/concepts/i18n.md +16 -26
  888. package/docs/concepts/media-sources.md +383 -0
  889. package/docs/concepts/mux-data.md +9 -7
  890. package/docs/concepts/overview.md +15 -18
  891. package/docs/concepts/presets.md +18 -19
  892. package/docs/concepts/skins.md +864 -859
  893. package/docs/concepts/ui-components.md +3 -3
  894. package/docs/concepts/why-videojs.md +4 -4
  895. package/docs/how-to/build-your-own-component.md +7 -5
  896. package/docs/how-to/customize-skins.md +2677 -2363
  897. package/docs/how-to/i18n-override-translations.md +3 -3
  898. package/docs/how-to/i18n-register-locale.md +3 -3
  899. package/docs/how-to/i18n-ssr.md +3 -3
  900. package/docs/how-to/i18n-switch-locale.md +3 -3
  901. package/docs/how-to/installation.md +3 -8
  902. package/docs/llms.txt +42 -39
  903. package/docs/reference/airplay-button.md +6 -6
  904. package/docs/reference/audio-track-radio-group.md +198 -29
  905. package/docs/reference/buffering-indicator.md +6 -6
  906. package/docs/reference/captions-button.md +6 -6
  907. package/docs/reference/captions-radio-group.md +206 -29
  908. package/docs/reference/cast-button.md +6 -6
  909. package/docs/reference/controls.md +6 -6
  910. package/docs/reference/create-player.md +22 -31
  911. package/docs/reference/create-translator.md +1 -1
  912. package/docs/reference/dash-video.md +14 -0
  913. package/docs/reference/feature-controls.md +13 -1
  914. package/docs/reference/feature-fullscreen.md +1 -1
  915. package/docs/reference/feature-orientation-lock.md +2 -2
  916. package/docs/reference/feature-text-tracks.md +3 -1
  917. package/docs/reference/feature-volume.md +10 -0
  918. package/docs/reference/fullscreen-button.md +6 -6
  919. package/docs/reference/get-i18n-translations.md +1 -1
  920. package/docs/reference/has-registered-locale.md +1 -1
  921. package/docs/reference/{simple-hls-audio-only.md → hls-audio.md} +5 -5
  922. package/docs/reference/{simple-hls-video.md → hls-video.md} +4 -4
  923. package/docs/reference/hlsjs-video.md +17 -9
  924. package/docs/reference/menu.md +65 -157
  925. package/docs/reference/mute-button.md +60 -18
  926. package/docs/reference/mux-audio.md +1 -107
  927. package/docs/reference/mux-video.md +1 -107
  928. package/docs/reference/native-hls-video.md +24 -0
  929. package/docs/reference/pip-button.md +6 -6
  930. package/docs/reference/play-button.md +6 -6
  931. package/docs/reference/playback-rate-button.md +6 -6
  932. package/docs/reference/playback-rate-radio-group.md +200 -29
  933. package/docs/reference/player-container.md +25 -25
  934. package/docs/reference/player-provider.md +24 -24
  935. package/docs/reference/popover.md +6 -6
  936. package/docs/reference/poster.md +6 -6
  937. package/docs/reference/quality-radio-group.md +200 -31
  938. package/docs/reference/register-i18n.md +1 -1
  939. package/docs/reference/seek-button.md +6 -6
  940. package/docs/reference/slider.md +1 -1
  941. package/docs/reference/thumbnail.md +7 -7
  942. package/docs/reference/time-slider.md +251 -7
  943. package/docs/reference/time.md +78 -34
  944. package/docs/reference/translation-phrases.md +27 -3
  945. package/docs/reference/use-container-attach.md +5 -5
  946. package/docs/reference/use-locale.md +1 -1
  947. package/docs/reference/use-media-attach.md +2 -2
  948. package/docs/reference/use-media.md +16 -10
  949. package/docs/reference/use-player-context.md +2 -7
  950. package/docs/reference/use-player.md +25 -19
  951. package/docs/reference/use-store.md +15 -15
  952. package/docs/reference/volume-slider.md +13 -11
  953. package/package.json +28 -8
  954. package/dist/default/media/mux-audio/media.js.map +0 -1
  955. package/dist/default/media/mux-video/media.js +0 -56
  956. package/dist/default/media/mux-video/media.js.map +0 -1
  957. package/dist/default/media/simple-hls-audio-only/index.js +0 -2
  958. package/dist/default/media/simple-hls-audio-only/media.js +0 -22
  959. package/dist/default/media/simple-hls-audio-only/media.js.map +0 -1
  960. package/dist/default/media/simple-hls-video/index.js +0 -2
  961. package/dist/default/media/simple-hls-video/media.js.map +0 -1
  962. package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js +0 -40
  963. package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js.map +0 -1
  964. package/dist/default/skins/dist/default/default/tailwind/components/root.js +0 -8
  965. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +0 -1
  966. package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js +0 -41
  967. package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +0 -1
  968. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +0 -8
  969. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +0 -1
  970. package/dist/default/tailwind.css +0 -42
  971. package/dist/default/ui/input-indicators/use-indicator-visibility.js.map +0 -1
  972. package/dist/default/ui/input-indicators/use-input-action-subscription.js.map +0 -1
  973. package/dist/default/ui/input-indicators/use-input-indicator-root.js.map +0 -1
  974. package/dist/default/ui/input-indicators/use-rendered-indicator-state.js.map +0 -1
  975. package/dist/default/ui/menu/menu-back.js +0 -34
  976. package/dist/default/ui/menu/menu-back.js.map +0 -1
  977. package/dist/default/ui/menu/menu-item-setting-provider.js +0 -77
  978. package/dist/default/ui/menu/menu-item-setting-provider.js.map +0 -1
  979. package/dist/default/ui/menu/menu-item-value.js +0 -28
  980. package/dist/default/ui/menu/menu-item-value.js.map +0 -1
  981. package/dist/default/ui/menu/menu-view.js +0 -23
  982. package/dist/default/ui/menu/menu-view.js.map +0 -1
  983. package/dist/dev/media/mux-audio/media.d.ts.map +0 -1
  984. package/dist/dev/media/mux-audio/media.js.map +0 -1
  985. package/dist/dev/media/mux-video/media.d.ts.map +0 -1
  986. package/dist/dev/media/mux-video/media.js +0 -56
  987. package/dist/dev/media/mux-video/media.js.map +0 -1
  988. package/dist/dev/media/simple-hls-audio-only/index.d.ts +0 -2
  989. package/dist/dev/media/simple-hls-audio-only/index.js +0 -2
  990. package/dist/dev/media/simple-hls-audio-only/media.d.ts +0 -13
  991. package/dist/dev/media/simple-hls-audio-only/media.d.ts.map +0 -1
  992. package/dist/dev/media/simple-hls-audio-only/media.js +0 -22
  993. package/dist/dev/media/simple-hls-audio-only/media.js.map +0 -1
  994. package/dist/dev/media/simple-hls-video/index.d.ts +0 -2
  995. package/dist/dev/media/simple-hls-video/index.js +0 -2
  996. package/dist/dev/media/simple-hls-video/media.d.ts +0 -13
  997. package/dist/dev/media/simple-hls-video/media.d.ts.map +0 -1
  998. package/dist/dev/media/simple-hls-video/media.js.map +0 -1
  999. package/dist/dev/skins/dist/default/default/tailwind/components/input-feedback.js +0 -40
  1000. package/dist/dev/skins/dist/default/default/tailwind/components/input-feedback.js.map +0 -1
  1001. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +0 -8
  1002. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +0 -1
  1003. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-feedback.js +0 -41
  1004. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +0 -1
  1005. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +0 -8
  1006. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +0 -1
  1007. package/dist/dev/tailwind.css +0 -42
  1008. package/dist/dev/ui/input-indicators/use-indicator-visibility.js.map +0 -1
  1009. package/dist/dev/ui/input-indicators/use-input-action-subscription.js.map +0 -1
  1010. package/dist/dev/ui/input-indicators/use-input-indicator-root.js.map +0 -1
  1011. package/dist/dev/ui/input-indicators/use-rendered-indicator-state.js.map +0 -1
  1012. package/dist/dev/ui/menu/menu-back.d.ts +0 -17
  1013. package/dist/dev/ui/menu/menu-back.d.ts.map +0 -1
  1014. package/dist/dev/ui/menu/menu-back.js +0 -34
  1015. package/dist/dev/ui/menu/menu-back.js.map +0 -1
  1016. package/dist/dev/ui/menu/menu-item-setting-provider.js +0 -77
  1017. package/dist/dev/ui/menu/menu-item-setting-provider.js.map +0 -1
  1018. package/dist/dev/ui/menu/menu-item-type.d.ts +0 -5
  1019. package/dist/dev/ui/menu/menu-item-type.d.ts.map +0 -1
  1020. package/dist/dev/ui/menu/menu-item-value.d.ts +0 -12
  1021. package/dist/dev/ui/menu/menu-item-value.d.ts.map +0 -1
  1022. package/dist/dev/ui/menu/menu-item-value.js +0 -28
  1023. package/dist/dev/ui/menu/menu-item-value.js.map +0 -1
  1024. package/dist/dev/ui/menu/menu-view.d.ts +0 -13
  1025. package/dist/dev/ui/menu/menu-view.d.ts.map +0 -1
  1026. package/dist/dev/ui/menu/menu-view.js +0 -23
  1027. package/dist/dev/ui/menu/menu-view.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/slider/context.tsx"],"sourcesContent":["'use client';\n\nimport type { SliderState, StateAttrMap } from '@videojs/core';\nimport type { SliderThumbProps } from '@videojs/core/dom';\nimport type { ProviderProps, RefCallback } from 'react';\nimport { createContext, useContext } from 'react';\n\nexport interface SliderContextValue {\n state: SliderState;\n /** Pointer position converted to the value domain (not 0–100 percent). */\n pointerValue: number;\n thumbRef: RefCallback<HTMLElement>;\n thumbProps: SliderThumbProps;\n stateAttrMap: StateAttrMap<SliderState>;\n getAttrs: (state: SliderState) => object;\n formatValue?: ((value: number, type: 'current' | 'pointer') => string) | undefined;\n}\n\nconst SliderContext = createContext<SliderContextValue | null>(null);\n\ntype SliderProviderProps = ProviderProps<SliderContextValue>;\n\nexport function SliderProvider({ value, children }: SliderProviderProps) {\n return <SliderContext.Provider value={value}>{children}</SliderContext.Provider>;\n}\n\nexport function useSliderContext(): SliderContextValue {\n const ctx = useContext(SliderContext);\n if (!ctx) throw new Error('Slider compound components must be used within a Slider.Root');\n return ctx;\n}\n"],"mappings":";;;;AAkBA,MAAM,gBAAgB,cAAyC,IAAI;AAInE,SAAgB,eAAe,EAAE,OAAO,YAAiC;CACvE,OAAO,oBAAC,cAAc,UAAf;EAA+B;EAAQ;CAAiC,CAAA;AACjF;AAEA,SAAgB,mBAAuC;CACrD,MAAM,MAAM,WAAW,aAAa;CACpC,IAAI,CAAC,KAAK,MAAM,IAAI,MAAM,8DAA8D;CACxF,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/slider/context.tsx"],"sourcesContent":["'use client';\n\nimport type { SliderInput, SliderState, StateAttrMap } from '@videojs/core';\nimport type { SliderThumbProps } from '@videojs/core/dom';\nimport type { State } from '@videojs/store';\nimport type { ProviderProps, RefCallback } from 'react';\nimport { createContext, useContext, useSyncExternalStore } from 'react';\n\nexport interface SliderContextValue {\n state: SliderState;\n /** Pointer position converted to the value domain (not 0–100 percent). */\n pointerValue: number;\n input?: State<SliderInput> | undefined;\n getPointerValue?: ((percent: number) => number) | undefined;\n thumbRef: RefCallback<HTMLElement>;\n thumbProps: SliderThumbProps;\n stateAttrMap: StateAttrMap<SliderState>;\n getAttrs: (state: SliderState) => object;\n formatValue?: ((value: number, type: 'current' | 'pointer') => string) | undefined;\n}\n\nconst SliderContext = createContext<SliderContextValue | null>(null);\n\ntype SliderProviderProps = ProviderProps<SliderContextValue>;\n\nexport function SliderProvider({ value, children }: SliderProviderProps) {\n return <SliderContext.Provider value={value}>{children}</SliderContext.Provider>;\n}\n\nexport function useSliderContext(): SliderContextValue {\n const ctx = useContext(SliderContext);\n if (!ctx) throw new Error('Slider compound components must be used within a Slider.Root');\n return ctx;\n}\n\nexport function useSliderPointerValue(enabled = true): number {\n const context = useSliderContext();\n const percent = useSyncExternalStore(\n (onChange) => context.input?.subscribe(onChange) ?? (() => {}),\n () => (enabled ? (context.input?.current.pointerPercent ?? null) : null),\n () => (enabled ? (context.input?.current.pointerPercent ?? null) : null)\n );\n return percent === null ? context.pointerValue : (context.getPointerValue?.(percent) ?? context.pointerValue);\n}\n"],"mappings":";;;;AAqBA,MAAM,gBAAgB,cAAyC,IAAI;AAInE,SAAgB,eAAe,EAAE,OAAO,YAAiC;CACvE,OAAO,oBAAC,cAAc,UAAf;EAA+B;EAAQ;CAAiC,CAAA;AACjF;AAEA,SAAgB,mBAAuC;CACrD,MAAM,MAAM,WAAW,aAAa;CACpC,IAAI,CAAC,KAAK,MAAM,IAAI,MAAM,8DAA8D;CACxF,OAAO;AACT;AAEA,SAAgB,sBAAsB,UAAU,MAAc;CAC5D,MAAM,UAAU,iBAAiB;CACjC,MAAM,UAAU,sBACb,aAAa,QAAQ,OAAO,UAAU,QAAQ,YAAY,CAAC,UACrD,UAAW,QAAQ,OAAO,QAAQ,kBAAkB,OAAQ,YAC5D,UAAW,QAAQ,OAAO,QAAQ,kBAAkB,OAAQ,IACrE;CACA,OAAO,YAAY,OAAO,QAAQ,eAAgB,QAAQ,kBAAkB,OAAO,KAAK,QAAQ;AAClG"}
@@ -1 +1 @@
1
- {"version":3,"file":"slider-preview.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-preview.tsx"],"mappings":";;;;UAYiB,2BAA2B,wBAAwB;;EAElE,WAAW;;;cAIA,+BAAa,0BAAA,KAAA,6CAAA,cAAA;kBAsCT;OACH,QAAQ"}
1
+ {"version":3,"file":"slider-preview.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-preview.tsx"],"mappings":";;;;UAaiB,2BAA2B,wBAAwB;;EAElE,WAAW;;;cAIA,+BAAa,0BAAA,KAAA,6CAAA,cAAA;kBAmCT;OACH,QAAQ"}
@@ -3,6 +3,7 @@ import { renderElement } from "../../utils/use-render.js";
3
3
  import { useSliderContext } from "./context.js";
4
4
  import { getSliderPreviewStyle } from "@videojs/core/dom";
5
5
  import { forwardRef, useEffect, useRef, useState } from "react";
6
+ import { observeResize } from "@videojs/utils/dom";
6
7
  //#region src/ui/slider/slider-preview.tsx
7
8
  /** Positioning container for preview content that tracks the pointer along the slider. */
8
9
  const SliderPreview = forwardRef(function SliderPreview(componentProps, forwardedRef) {
@@ -14,11 +15,9 @@ const SliderPreview = forwardRef(function SliderPreview(componentProps, forwarde
14
15
  useEffect(() => {
15
16
  const el = measureRef.current;
16
17
  if (!el) return;
17
- const observer = new ResizeObserver(([entry]) => {
18
+ return observeResize(el, ([entry]) => {
18
19
  setWidth(entry.contentRect.width);
19
20
  });
20
- observer.observe(el);
21
- return () => observer.disconnect();
22
21
  }, []);
23
22
  const positionStyle = getSliderPreviewStyle(width, overflow);
24
23
  return renderElement("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"slider-preview.js","names":[],"sources":["../../../../src/ui/slider/slider-preview.tsx"],"sourcesContent":["'use client';\n\nimport type { SliderState } from '@videojs/core';\nimport type { SliderPreviewOverflow } from '@videojs/core/dom';\nimport { getSliderPreviewStyle } from '@videojs/core/dom';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef, useEffect, useRef, useState } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useSliderContext } from './context';\n\nexport interface SliderPreviewProps extends UIComponentProps<'div', SliderState> {\n /** How the preview handles the slider boundaries. `'clamp'` keeps the preview within bounds, `'visible'` allows it to extend beyond the edges. */\n overflow?: SliderPreviewOverflow | undefined;\n}\n\n/** Positioning container for preview content that tracks the pointer along the slider. */\nexport const SliderPreview = forwardRef(function SliderPreview(\n componentProps: SliderPreviewProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const { render, className, style, overflow = 'clamp', ...elementProps } = componentProps;\n\n const context = useSliderContext();\n const { state } = context;\n\n const measureRef = useRef<HTMLDivElement>(null);\n const [width, setWidth] = useState(0);\n\n useEffect(() => {\n const el = measureRef.current;\n if (!el) return;\n\n const observer = new ResizeObserver(([entry]) => {\n setWidth(entry!.contentRect.width);\n });\n\n observer.observe(el);\n return () => observer.disconnect();\n }, []);\n\n const positionStyle = getSliderPreviewStyle(width, overflow);\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: context.stateAttrMap,\n ref: [forwardedRef, measureRef],\n props: [{ style: positionStyle }, elementProps],\n }\n );\n});\n\nexport namespace SliderPreview {\n export type Props = SliderPreviewProps;\n}\n"],"mappings":";;;;;;;AAkBA,MAAa,gBAAgB,WAAW,SAAS,cAC/C,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,WAAW,SAAS,GAAG,iBAAiB;CAE1E,MAAM,UAAU,iBAAiB;CACjC,MAAM,EAAE,UAAU;CAElB,MAAM,aAAa,OAAuB,IAAI;CAC9C,MAAM,CAAC,OAAO,YAAY,SAAS,CAAC;CAEpC,gBAAgB;EACd,MAAM,KAAK,WAAW;EACtB,IAAI,CAAC,IAAI;EAET,MAAM,WAAW,IAAI,gBAAgB,CAAC,WAAW;GAC/C,SAAS,MAAO,YAAY,KAAK;EACnC,CAAC;EAED,SAAS,QAAQ,EAAE;EACnB,aAAa,SAAS,WAAW;CACnC,GAAG,CAAC,CAAC;CAEL,MAAM,gBAAgB,sBAAsB,OAAO,QAAQ;CAE3D,OAAO,cACL,OACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA,cAAc,QAAQ;EACtB,KAAK,CAAC,cAAc,UAAU;EAC9B,OAAO,CAAC,EAAE,OAAO,cAAc,GAAG,YAAY;CAChD,CACF;AACF,CAAC"}
1
+ {"version":3,"file":"slider-preview.js","names":[],"sources":["../../../../src/ui/slider/slider-preview.tsx"],"sourcesContent":["'use client';\n\nimport type { SliderState } from '@videojs/core';\nimport type { SliderPreviewOverflow } from '@videojs/core/dom';\nimport { getSliderPreviewStyle } from '@videojs/core/dom';\nimport { observeResize } from '@videojs/utils/dom';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef, useEffect, useRef, useState } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useSliderContext } from './context';\n\nexport interface SliderPreviewProps extends UIComponentProps<'div', SliderState> {\n /** How the preview handles the slider boundaries. `'clamp'` keeps the preview within bounds, `'visible'` allows it to extend beyond the edges. */\n overflow?: SliderPreviewOverflow | undefined;\n}\n\n/** Positioning container for preview content that tracks the pointer along the slider. */\nexport const SliderPreview = forwardRef(function SliderPreview(\n componentProps: SliderPreviewProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const { render, className, style, overflow = 'clamp', ...elementProps } = componentProps;\n\n const context = useSliderContext();\n const { state } = context;\n\n const measureRef = useRef<HTMLDivElement>(null);\n const [width, setWidth] = useState(0);\n\n useEffect(() => {\n const el = measureRef.current;\n if (!el) return;\n\n return observeResize(el, ([entry]) => {\n setWidth(entry!.contentRect.width);\n });\n }, []);\n\n const positionStyle = getSliderPreviewStyle(width, overflow);\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: context.stateAttrMap,\n ref: [forwardedRef, measureRef],\n props: [{ style: positionStyle }, elementProps],\n }\n );\n});\n\nexport namespace SliderPreview {\n export type Props = SliderPreviewProps;\n}\n"],"mappings":";;;;;;;;AAmBA,MAAa,gBAAgB,WAAW,SAAS,cAC/C,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,WAAW,SAAS,GAAG,iBAAiB;CAE1E,MAAM,UAAU,iBAAiB;CACjC,MAAM,EAAE,UAAU;CAElB,MAAM,aAAa,OAAuB,IAAI;CAC9C,MAAM,CAAC,OAAO,YAAY,SAAS,CAAC;CAEpC,gBAAgB;EACd,MAAM,KAAK,WAAW;EACtB,IAAI,CAAC,IAAI;EAET,OAAO,cAAc,KAAK,CAAC,WAAW;GACpC,SAAS,MAAO,YAAY,KAAK;EACnC,CAAC;CACH,GAAG,CAAC,CAAC;CAEL,MAAM,gBAAgB,sBAAsB,OAAO,QAAQ;CAE3D,OAAO,cACL,OACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA,cAAc,QAAQ;EACtB,KAAK,CAAC,cAAc,UAAU;EAC9B,OAAO,CAAC,EAAE,OAAO,cAAc,GAAG,YAAY;CAChD,CACF;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"slider-root.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-root.tsx"],"mappings":";;;UAaiB,wBAAwB,wBAAwB,WAAW,QAAQ,WAAW;EAC7F,kBAAkB;EAClB,kBAAkB;EAClB;EACA;;cAGW,4BAAU,0BAAA,KAAA,0CAAA,cAAA;kBAoFN;OACH,QAAQ;OACR,QAAQ,WAAW"}
1
+ {"version":3,"file":"slider-root.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-root.tsx"],"mappings":";;;UAaiB,wBAAwB,wBAAwB,WAAW,QAAQ,WAAW;EAC7F,kBAAkB;EAClB,kBAAkB;EAClB;EACA;;cAGW,4BAAU,0BAAA,KAAA,0CAAA,cAAA;kBAuFN;OACH,QAAQ;OACR,QAAQ,WAAW"}
@@ -23,7 +23,7 @@ const SliderRoot = forwardRef(function SliderRoot(componentProps, forwardedRef)
23
23
  disabled,
24
24
  thumbAlignment
25
25
  });
26
- const { state, cssVars, rootRef, thumbRef: sliderThumbRef, rootProps, rootStyle, thumbProps } = useSlider({
26
+ const { state, input, cssVars, rootRef, thumbRef: sliderThumbRef, rootProps, rootStyle, thumbProps } = useSlider({
27
27
  computeState: (input) => {
28
28
  core.setInput(input);
29
29
  return core.getSliderState(value);
@@ -44,6 +44,8 @@ const SliderRoot = forwardRef(function SliderRoot(componentProps, forwardedRef)
44
44
  value: {
45
45
  state,
46
46
  pointerValue: core.valueFromPercent(state.pointerPercent),
47
+ input,
48
+ getPointerValue: (percent) => core.valueFromPercent(percent),
47
49
  thumbRef: sliderThumbRef,
48
50
  thumbProps,
49
51
  stateAttrMap: SliderDataAttrs,
@@ -1 +1 @@
1
- {"version":3,"file":"slider-root.js","names":[],"sources":["../../../../src/ui/slider/slider-root.tsx"],"sourcesContent":["'use client';\n\nimport { SliderCore, SliderDataAttrs } from '@videojs/core';\nimport { getSliderCSSVars } from '@videojs/core/dom';\nimport { translateText } from '@videojs/core/i18n';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef, useState } from 'react';\nimport { useTranslator } from '../../i18n/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useSlider } from '../hooks/use-slider';\nimport { SliderProvider } from './context';\n\nexport interface SliderRootProps extends UIComponentProps<'div', SliderCore.State>, SliderCore.Props {\n onValueChange?: ((value: number) => void) | undefined;\n onValueCommit?: ((value: number) => void) | undefined;\n onDragStart?: (() => void) | undefined;\n onDragEnd?: (() => void) | undefined;\n}\n\nexport const SliderRoot = forwardRef(function SliderRoot(\n componentProps: SliderRootProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const {\n render,\n className,\n style,\n label,\n min,\n max,\n step,\n largeStep,\n orientation,\n disabled,\n thumbAlignment,\n value = 0,\n onValueChange,\n onValueCommit,\n onDragStart,\n onDragEnd,\n ...elementProps\n } = componentProps;\n\n const [core] = useState(() => new SliderCore());\n const translator = useTranslator();\n core.setProps({ label, min, max, step, largeStep, orientation, disabled, thumbAlignment });\n\n const {\n state,\n cssVars,\n rootRef,\n thumbRef: sliderThumbRef,\n rootProps,\n rootStyle,\n thumbProps,\n } = useSlider({\n computeState: (input) => {\n core.setInput(input);\n return core.getSliderState(value);\n },\n getPercent: () => core.percentFromValue(value),\n getStepPercent: () => core.getStepPercent(),\n getLargeStepPercent: () => core.getLargeStepPercent(),\n orientation,\n disabled,\n adjustPercent: (rawPercent, thumbSize, trackSize) =>\n core.adjustPercentForAlignment(rawPercent, thumbSize, trackSize),\n getCSSVars: getSliderCSSVars,\n onValueChange: (percent) => onValueChange?.(core.valueFromPercent(percent)),\n onValueCommit: (percent) => onValueCommit?.(core.valueFromPercent(percent)),\n onDragStart,\n onDragEnd,\n });\n\n return (\n <SliderProvider\n value={{\n state,\n pointerValue: core.valueFromPercent(state.pointerPercent),\n thumbRef: sliderThumbRef,\n thumbProps,\n stateAttrMap: SliderDataAttrs,\n getAttrs: (sliderState) => {\n const attrs = core.getAttrs(sliderState);\n return { ...attrs, 'aria-label': translateText(attrs['aria-label'], translator) };\n },\n formatValue: undefined,\n }}\n >\n {renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: SliderDataAttrs,\n ref: [forwardedRef, rootRef],\n props: [{ style: { ...cssVars, ...rootStyle } }, rootProps, elementProps],\n }\n )}\n </SliderProvider>\n );\n});\n\nexport namespace SliderRoot {\n export type Props = SliderRootProps;\n export type State = SliderCore.State;\n}\n"],"mappings":";;;;;;;;;;;AAoBA,MAAa,aAAa,WAAW,SAAS,WAC5C,gBACA,cACA;CACA,MAAM,EACJ,QACA,WACA,OACA,OACA,KACA,KACA,MACA,WACA,aACA,UACA,gBACA,QAAQ,GACR,eACA,eACA,aACA,WACA,GAAG,iBACD;CAEJ,MAAM,CAAC,QAAQ,eAAe,IAAI,WAAW,CAAC;CAC9C,MAAM,aAAa,cAAc;CACjC,KAAK,SAAS;EAAE;EAAO;EAAK;EAAK;EAAM;EAAW;EAAa;EAAU;CAAe,CAAC;CAEzF,MAAM,EACJ,OACA,SACA,SACA,UAAU,gBACV,WACA,WACA,eACE,UAAU;EACZ,eAAe,UAAU;GACvB,KAAK,SAAS,KAAK;GACnB,OAAO,KAAK,eAAe,KAAK;EAClC;EACA,kBAAkB,KAAK,iBAAiB,KAAK;EAC7C,sBAAsB,KAAK,eAAe;EAC1C,2BAA2B,KAAK,oBAAoB;EACpD;EACA;EACA,gBAAgB,YAAY,WAAW,cACrC,KAAK,0BAA0B,YAAY,WAAW,SAAS;EACjE,YAAY;EACZ,gBAAgB,YAAY,gBAAgB,KAAK,iBAAiB,OAAO,CAAC;EAC1E,gBAAgB,YAAY,gBAAgB,KAAK,iBAAiB,OAAO,CAAC;EAC1E;EACA;CACF,CAAC;CAED,OACE,oBAAC,gBAAD;EACE,OAAO;GACL;GACA,cAAc,KAAK,iBAAiB,MAAM,cAAc;GACxD,UAAU;GACV;GACA,cAAc;GACd,WAAW,gBAAgB;IACzB,MAAM,QAAQ,KAAK,SAAS,WAAW;IACvC,OAAO;KAAE,GAAG;KAAO,cAAc,cAAc,MAAM,eAAe,UAAU;IAAE;GAClF;GACA,aAAa,KAAA;EACf;EAEC,UAAA,cACC,OACA;GAAE;GAAQ;GAAW;EAAM,GAC3B;GACE;GACA,cAAc;GACd,KAAK,CAAC,cAAc,OAAO;GAC3B,OAAO;IAAC,EAAE,OAAO;KAAE,GAAG;KAAS,GAAG;IAAU,EAAE;IAAG;IAAW;GAAY;EAC1E,CACF;CACc,CAAA;AAEpB,CAAC"}
1
+ {"version":3,"file":"slider-root.js","names":[],"sources":["../../../../src/ui/slider/slider-root.tsx"],"sourcesContent":["'use client';\n\nimport { SliderCore, SliderDataAttrs } from '@videojs/core';\nimport { getSliderCSSVars } from '@videojs/core/dom';\nimport { translateText } from '@videojs/core/i18n';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef, useState } from 'react';\nimport { useTranslator } from '../../i18n/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useSlider } from '../hooks/use-slider';\nimport { SliderProvider } from './context';\n\nexport interface SliderRootProps extends UIComponentProps<'div', SliderCore.State>, SliderCore.Props {\n onValueChange?: ((value: number) => void) | undefined;\n onValueCommit?: ((value: number) => void) | undefined;\n onDragStart?: (() => void) | undefined;\n onDragEnd?: (() => void) | undefined;\n}\n\nexport const SliderRoot = forwardRef(function SliderRoot(\n componentProps: SliderRootProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const {\n render,\n className,\n style,\n label,\n min,\n max,\n step,\n largeStep,\n orientation,\n disabled,\n thumbAlignment,\n value = 0,\n onValueChange,\n onValueCommit,\n onDragStart,\n onDragEnd,\n ...elementProps\n } = componentProps;\n\n const [core] = useState(() => new SliderCore());\n const translator = useTranslator();\n core.setProps({ label, min, max, step, largeStep, orientation, disabled, thumbAlignment });\n\n const {\n state,\n input,\n cssVars,\n rootRef,\n thumbRef: sliderThumbRef,\n rootProps,\n rootStyle,\n thumbProps,\n } = useSlider({\n computeState: (input) => {\n core.setInput(input);\n return core.getSliderState(value);\n },\n getPercent: () => core.percentFromValue(value),\n getStepPercent: () => core.getStepPercent(),\n getLargeStepPercent: () => core.getLargeStepPercent(),\n orientation,\n disabled,\n adjustPercent: (rawPercent, thumbSize, trackSize) =>\n core.adjustPercentForAlignment(rawPercent, thumbSize, trackSize),\n getCSSVars: getSliderCSSVars,\n onValueChange: (percent) => onValueChange?.(core.valueFromPercent(percent)),\n onValueCommit: (percent) => onValueCommit?.(core.valueFromPercent(percent)),\n onDragStart,\n onDragEnd,\n });\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: sliderThumbRef,\n thumbProps,\n stateAttrMap: SliderDataAttrs,\n getAttrs: (sliderState) => {\n const attrs = core.getAttrs(sliderState);\n return { ...attrs, 'aria-label': translateText(attrs['aria-label'], translator) };\n },\n formatValue: undefined,\n }}\n >\n {renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: SliderDataAttrs,\n ref: [forwardedRef, rootRef],\n props: [{ style: { ...cssVars, ...rootStyle } }, rootProps, elementProps],\n }\n )}\n </SliderProvider>\n );\n});\n\nexport namespace SliderRoot {\n export type Props = SliderRootProps;\n export type State = SliderCore.State;\n}\n"],"mappings":";;;;;;;;;;;AAoBA,MAAa,aAAa,WAAW,SAAS,WAC5C,gBACA,cACA;CACA,MAAM,EACJ,QACA,WACA,OACA,OACA,KACA,KACA,MACA,WACA,aACA,UACA,gBACA,QAAQ,GACR,eACA,eACA,aACA,WACA,GAAG,iBACD;CAEJ,MAAM,CAAC,QAAQ,eAAe,IAAI,WAAW,CAAC;CAC9C,MAAM,aAAa,cAAc;CACjC,KAAK,SAAS;EAAE;EAAO;EAAK;EAAK;EAAM;EAAW;EAAa;EAAU;CAAe,CAAC;CAEzF,MAAM,EACJ,OACA,OACA,SACA,SACA,UAAU,gBACV,WACA,WACA,eACE,UAAU;EACZ,eAAe,UAAU;GACvB,KAAK,SAAS,KAAK;GACnB,OAAO,KAAK,eAAe,KAAK;EAClC;EACA,kBAAkB,KAAK,iBAAiB,KAAK;EAC7C,sBAAsB,KAAK,eAAe;EAC1C,2BAA2B,KAAK,oBAAoB;EACpD;EACA;EACA,gBAAgB,YAAY,WAAW,cACrC,KAAK,0BAA0B,YAAY,WAAW,SAAS;EACjE,YAAY;EACZ,gBAAgB,YAAY,gBAAgB,KAAK,iBAAiB,OAAO,CAAC;EAC1E,gBAAgB,YAAY,gBAAgB,KAAK,iBAAiB,OAAO,CAAC;EAC1E;EACA;CACF,CAAC;CAED,OACE,oBAAC,gBAAD;EACE,OAAO;GACL;GACA,cAAc,KAAK,iBAAiB,MAAM,cAAc;GACxD;GACA,kBAAkB,YAAY,KAAK,iBAAiB,OAAO;GAC3D,UAAU;GACV;GACA,cAAc;GACd,WAAW,gBAAgB;IACzB,MAAM,QAAQ,KAAK,SAAS,WAAW;IACvC,OAAO;KAAE,GAAG;KAAO,cAAc,cAAc,MAAM,eAAe,UAAU;IAAE;GAClF;GACA,aAAa,KAAA;EACf;EAEC,UAAA,cACC,OACA;GAAE;GAAQ;GAAW;EAAM,GAC3B;GACE;GACA,cAAc;GACd,KAAK,CAAC,cAAc,OAAO;GAC3B,OAAO;IAAC,EAAE,OAAO;KAAE,GAAG;KAAS,GAAG;IAAU,EAAE;IAAG;IAAW;GAAY;EAC1E,CACF;CACc,CAAA;AAEpB,CAAC"}
@@ -1,11 +1,11 @@
1
1
  "use client";
2
- import { useSliderContext } from "./context.js";
2
+ import { useSliderPointerValue } from "./context.js";
3
3
  import { Thumbnail } from "../thumbnail/thumbnail.js";
4
4
  import { forwardRef } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region src/ui/slider/slider-thumbnail.tsx
7
7
  const SliderThumbnail = forwardRef(function SliderThumbnail(componentProps, forwardedRef) {
8
- const { pointerValue } = useSliderContext();
8
+ const pointerValue = useSliderPointerValue();
9
9
  return /* @__PURE__ */ jsx(Thumbnail, {
10
10
  ref: forwardedRef,
11
11
  ...componentProps,
@@ -1 +1 @@
1
- {"version":3,"file":"slider-thumbnail.js","names":[],"sources":["../../../../src/ui/slider/slider-thumbnail.tsx"],"sourcesContent":["'use client';\n\nimport type { ThumbnailCore } from '@videojs/core';\nimport { forwardRef } from 'react';\n\nimport { Thumbnail, type ThumbnailProps } from '../thumbnail/thumbnail';\nimport { useSliderContext } from './context';\n\nexport interface SliderThumbnailProps extends Omit<ThumbnailProps, 'time'> {}\n\nexport const SliderThumbnail = forwardRef<HTMLDivElement, SliderThumbnailProps>(\n function SliderThumbnail(componentProps, forwardedRef) {\n const { pointerValue } = useSliderContext();\n return <Thumbnail ref={forwardedRef} {...componentProps} time={pointerValue} />;\n }\n);\n\nexport namespace SliderThumbnail {\n export type Props = SliderThumbnailProps;\n export type State = ThumbnailCore.State;\n}\n"],"mappings":";;;;;;AAUA,MAAa,kBAAkB,WAC7B,SAAS,gBAAgB,gBAAgB,cAAc;CACrD,MAAM,EAAE,iBAAiB,iBAAiB;CAC1C,OAAO,oBAAC,WAAD;EAAW,KAAK;EAAc,GAAI;EAAgB,MAAM;CAAe,CAAA;AAChF,CACF"}
1
+ {"version":3,"file":"slider-thumbnail.js","names":[],"sources":["../../../../src/ui/slider/slider-thumbnail.tsx"],"sourcesContent":["'use client';\n\nimport type { ThumbnailCore } from '@videojs/core';\nimport { forwardRef } from 'react';\n\nimport { Thumbnail, type ThumbnailProps } from '../thumbnail/thumbnail';\nimport { useSliderPointerValue } from './context';\n\nexport interface SliderThumbnailProps extends Omit<ThumbnailProps, 'time'> {}\n\nexport const SliderThumbnail = forwardRef<HTMLDivElement, SliderThumbnailProps>(\n function SliderThumbnail(componentProps, forwardedRef) {\n const pointerValue = useSliderPointerValue();\n return <Thumbnail ref={forwardedRef} {...componentProps} time={pointerValue} />;\n }\n);\n\nexport namespace SliderThumbnail {\n export type Props = SliderThumbnailProps;\n export type State = ThumbnailCore.State;\n}\n"],"mappings":";;;;;;AAUA,MAAa,kBAAkB,WAC7B,SAAS,gBAAgB,gBAAgB,cAAc;CACrD,MAAM,eAAe,sBAAsB;CAC3C,OAAO,oBAAC,WAAD;EAAW,KAAK;EAAc,GAAI;EAAgB,MAAM;CAAe,CAAA;AAChF,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"slider-value.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-value.tsx"],"mappings":";;;UAUiB,yBAAyB,2BAA2B;;EAEnE;;EAEA,WAAW;;;cAIA,6BAAW,0BAAA,KAAA,2CAAA,cAAA;kBAyBP;OACH,QAAQ"}
1
+ {"version":3,"file":"slider-value.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-value.tsx"],"mappings":";;;UAUiB,yBAAyB,2BAA2B;;EAEnE;;EAEA,WAAW;;;cAIA,6BAAW,0BAAA,KAAA,2CAAA,cAAA;kBA0BP;OACH,QAAQ"}
@@ -1,13 +1,14 @@
1
1
  "use client";
2
2
  import { renderElement } from "../../utils/use-render.js";
3
- import { useSliderContext } from "./context.js";
3
+ import { useSliderContext, useSliderPointerValue } from "./context.js";
4
4
  import { forwardRef } from "react";
5
5
  //#region src/ui/slider/slider-value.tsx
6
6
  /** Displays a formatted text representation of the slider value. Renders an `<output>` element. */
7
7
  const SliderValue = forwardRef(function SliderValue(componentProps, forwardedRef) {
8
8
  const { render, className, style, type = "current", format, ...elementProps } = componentProps;
9
9
  const context = useSliderContext();
10
- const { state, pointerValue, formatValue } = context;
10
+ const { state, formatValue } = context;
11
+ const pointerValue = useSliderPointerValue(type === "pointer");
11
12
  const rawValue = type === "pointer" ? pointerValue : state.value;
12
13
  const text = format ? format(rawValue) : formatValue ? formatValue(rawValue, type) : String(Math.round(rawValue));
13
14
  return renderElement("output", {
@@ -1 +1 @@
1
- {"version":3,"file":"slider-value.js","names":[],"sources":["../../../../src/ui/slider/slider-value.tsx"],"sourcesContent":["'use client';\n\nimport type { SliderState } 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 { useSliderContext } from './context';\n\nexport interface SliderValueProps extends UIComponentProps<'output', SliderState> {\n /** Which slider value to display: the current position or the pointer position. */\n type?: 'current' | 'pointer' | undefined;\n /** Custom formatter for the displayed value. Overrides the root's `formatValue`. */\n format?: ((value: number) => string) | undefined;\n}\n\n/** Displays a formatted text representation of the slider value. Renders an `<output>` element. */\nexport const SliderValue = forwardRef(function SliderValue(\n componentProps: SliderValueProps,\n forwardedRef: ForwardedRef<HTMLOutputElement>\n) {\n const { render, className, style, type = 'current', format, ...elementProps } = componentProps;\n\n const context = useSliderContext();\n const { state, pointerValue, formatValue } = context;\n\n const rawValue = type === 'pointer' ? pointerValue : state.value;\n\n const text = format ? format(rawValue) : formatValue ? formatValue(rawValue, type) : String(Math.round(rawValue));\n\n return renderElement(\n 'output',\n { render, className, style },\n {\n state,\n stateAttrMap: context.stateAttrMap,\n ref: forwardedRef,\n props: [{ 'aria-live': 'off', children: text }, elementProps],\n }\n );\n});\n\nexport namespace SliderValue {\n export type Props = SliderValueProps;\n}\n"],"mappings":";;;;;;AAkBA,MAAa,cAAc,WAAW,SAAS,YAC7C,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,OAAO,WAAW,QAAQ,GAAG,iBAAiB;CAEhF,MAAM,UAAU,iBAAiB;CACjC,MAAM,EAAE,OAAO,cAAc,gBAAgB;CAE7C,MAAM,WAAW,SAAS,YAAY,eAAe,MAAM;CAE3D,MAAM,OAAO,SAAS,OAAO,QAAQ,IAAI,cAAc,YAAY,UAAU,IAAI,IAAI,OAAO,KAAK,MAAM,QAAQ,CAAC;CAEhH,OAAO,cACL,UACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA,cAAc,QAAQ;EACtB,KAAK;EACL,OAAO,CAAC;GAAE,aAAa;GAAO,UAAU;EAAK,GAAG,YAAY;CAC9D,CACF;AACF,CAAC"}
1
+ {"version":3,"file":"slider-value.js","names":[],"sources":["../../../../src/ui/slider/slider-value.tsx"],"sourcesContent":["'use client';\n\nimport type { SliderState } 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 { useSliderContext, useSliderPointerValue } from './context';\n\nexport interface SliderValueProps extends UIComponentProps<'output', SliderState> {\n /** Which slider value to display: the current position or the pointer position. */\n type?: 'current' | 'pointer' | undefined;\n /** Custom formatter for the displayed value. Overrides the root's `formatValue`. */\n format?: ((value: number) => string) | undefined;\n}\n\n/** Displays a formatted text representation of the slider value. Renders an `<output>` element. */\nexport const SliderValue = forwardRef(function SliderValue(\n componentProps: SliderValueProps,\n forwardedRef: ForwardedRef<HTMLOutputElement>\n) {\n const { render, className, style, type = 'current', format, ...elementProps } = componentProps;\n\n const context = useSliderContext();\n const { state, formatValue } = context;\n const pointerValue = useSliderPointerValue(type === 'pointer');\n\n const rawValue = type === 'pointer' ? pointerValue : state.value;\n\n const text = format ? format(rawValue) : formatValue ? formatValue(rawValue, type) : String(Math.round(rawValue));\n\n return renderElement(\n 'output',\n { render, className, style },\n {\n state,\n stateAttrMap: context.stateAttrMap,\n ref: forwardedRef,\n props: [{ 'aria-live': 'off', children: text }, elementProps],\n }\n );\n});\n\nexport namespace SliderValue {\n export type Props = SliderValueProps;\n}\n"],"mappings":";;;;;;AAkBA,MAAa,cAAc,WAAW,SAAS,YAC7C,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,OAAO,WAAW,QAAQ,GAAG,iBAAiB;CAEhF,MAAM,UAAU,iBAAiB;CACjC,MAAM,EAAE,OAAO,gBAAgB;CAC/B,MAAM,eAAe,sBAAsB,SAAS,SAAS;CAE7D,MAAM,WAAW,SAAS,YAAY,eAAe,MAAM;CAE3D,MAAM,OAAO,SAAS,OAAO,QAAQ,IAAI,cAAc,YAAY,UAAU,IAAI,IAAI,OAAO,KAAK,MAAM,QAAQ,CAAC;CAEhH,OAAO,cACL,UACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA,cAAc,QAAQ;EACtB,KAAK;EACL,OAAO,CAAC;GAAE,aAAa;GAAO,UAAU;EAAK,GAAG,YAAY;CAC9D,CACF;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"status-announcer.d.ts","names":[],"sources":["../../../../src/ui/status-announcer/status-announcer.tsx"],"mappings":";;;UAYiB,6BACP,wBAAwB,oBAAoB,QAClD,KAAK,oBAAoB;cAEhB,iCAAe,0BAAA,KAAA,+CAAA,cAAA;kBA8CX;OACH,QAAQ;OACR,QAAQ,oBAAoB"}
1
+ {"version":3,"file":"status-announcer.d.ts","names":[],"sources":["../../../../src/ui/status-announcer/status-announcer.tsx"],"mappings":";;;UAYiB,6BACP,wBAAwB,oBAAoB,QAClD,KAAK,oBAAoB;cAEhB,iCAAe,0BAAA,KAAA,+CAAA,cAAA;kBAiDX;OACH,QAAQ;OACR,QAAQ,oBAAoB"}
@@ -3,8 +3,9 @@ import { useLocale, useTranslator } from "../../i18n/context.js";
3
3
  import { useContainer, usePlayer } from "../../player/context.js";
4
4
  import { useDestroy } from "../../utils/use-destroy.js";
5
5
  import { renderElement } from "../../utils/use-render.js";
6
- import { isSliderFocused, subscribeToStatusAnnouncer } from "@videojs/core/dom";
6
+ import { shouldAnnounceStatusChange, subscribeToStatusAnnouncer } from "@videojs/core/dom";
7
7
  import { forwardRef, useEffect, useState, useSyncExternalStore } from "react";
8
+ import { jsx } from "react/jsx-runtime";
8
9
  import { StatusAnnouncerCore, createStatusAnnouncerLabels } from "@videojs/core";
9
10
  //#region src/ui/status-announcer/status-announcer.tsx
10
11
  const StatusAnnouncer = forwardRef(function StatusAnnouncer(componentProps, forwardedRef) {
@@ -21,8 +22,7 @@ const StatusAnnouncer = forwardRef(function StatusAnnouncer(componentProps, forw
21
22
  ...createStatusAnnouncerLabels(translator, locale),
22
23
  ...labels
23
24
  },
24
- shouldAnnounceSeek: () => !container || !isSliderFocused(container),
25
- shouldAnnounceVolume: () => !container || !isSliderFocused(container)
25
+ shouldAnnounce: () => shouldAnnounceStatusChange(container)
26
26
  });
27
27
  useEffect(() => subscribeToStatusAnnouncer(store, core), [core, store]);
28
28
  const state = useSyncExternalStore((callback) => core.state.subscribe(callback), () => core.state.current, () => core.state.current);
@@ -35,7 +35,10 @@ const StatusAnnouncer = forwardRef(function StatusAnnouncer(componentProps, forw
35
35
  ref: forwardedRef,
36
36
  props: [elementProps, {
37
37
  role: "status",
38
- children: state.label ?? ""
38
+ children: /* @__PURE__ */ jsx("span", {
39
+ "data-status-announcer-content": "",
40
+ children: state.label ?? ""
41
+ }, state.generation)
39
42
  }]
40
43
  });
41
44
  });
@@ -1 +1 @@
1
- {"version":3,"file":"status-announcer.js","names":[],"sources":["../../../../src/ui/status-announcer/status-announcer.tsx"],"sourcesContent":["'use client';\n\nimport { createStatusAnnouncerLabels, StatusAnnouncerCore } from '@videojs/core';\nimport { isSliderFocused, subscribeToStatusAnnouncer } from '@videojs/core/dom';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef, useEffect, useState, useSyncExternalStore } from 'react';\nimport { useLocale, useTranslator } from '../../i18n/context';\nimport { useContainer, usePlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { useDestroy } from '../../utils/use-destroy';\nimport { renderElement } from '../../utils/use-render';\n\nexport interface StatusAnnouncerProps\n extends UIComponentProps<'div', StatusAnnouncerCore.State>,\n Pick<StatusAnnouncerCore.Props, 'closeDelay' | 'labels'> {}\n\nexport const StatusAnnouncer = forwardRef(function StatusAnnouncer(\n componentProps: StatusAnnouncerProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const { render, className, style, closeDelay, labels, ...elementProps } = componentProps;\n const translator = useTranslator();\n const locale = useLocale();\n const [core] = useState(() => new StatusAnnouncerCore());\n const store = usePlayer();\n const container = useContainer();\n useDestroy(core);\n core.setProps({\n closeDelay,\n labels: {\n ...createStatusAnnouncerLabels(translator, locale),\n ...labels,\n },\n shouldAnnounceSeek: () => !container || !isSliderFocused(container),\n shouldAnnounceVolume: () => !container || !isSliderFocused(container),\n });\n\n useEffect(() => subscribeToStatusAnnouncer(store, core), [core, store]);\n\n const state = useSyncExternalStore(\n (callback) => core.state.subscribe(callback),\n () => core.state.current,\n () => core.state.current\n );\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n ref: forwardedRef,\n props: [\n elementProps,\n {\n role: 'status',\n children: state.label ?? '',\n },\n ],\n }\n );\n});\n\nexport namespace StatusAnnouncer {\n export type Props = StatusAnnouncerProps;\n export type State = StatusAnnouncerCore.State;\n}\n"],"mappings":";;;;;;;;;AAgBA,MAAa,kBAAkB,WAAW,SAAS,gBACjD,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,YAAY,QAAQ,GAAG,iBAAiB;CAC1E,MAAM,aAAa,cAAc;CACjC,MAAM,SAAS,UAAU;CACzB,MAAM,CAAC,QAAQ,eAAe,IAAI,oBAAoB,CAAC;CACvD,MAAM,QAAQ,UAAU;CACxB,MAAM,YAAY,aAAa;CAC/B,WAAW,IAAI;CACf,KAAK,SAAS;EACZ;EACA,QAAQ;GACN,GAAG,4BAA4B,YAAY,MAAM;GACjD,GAAG;EACL;EACA,0BAA0B,CAAC,aAAa,CAAC,gBAAgB,SAAS;EAClE,4BAA4B,CAAC,aAAa,CAAC,gBAAgB,SAAS;CACtE,CAAC;CAED,gBAAgB,2BAA2B,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;CAEtE,MAAM,QAAQ,sBACX,aAAa,KAAK,MAAM,UAAU,QAAQ,SACrC,KAAK,MAAM,eACX,KAAK,MAAM,OACnB;CAEA,OAAO,cACL,OACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA,KAAK;EACL,OAAO,CACL,cACA;GACE,MAAM;GACN,UAAU,MAAM,SAAS;EAC3B,CACF;CACF,CACF;AACF,CAAC"}
1
+ {"version":3,"file":"status-announcer.js","names":[],"sources":["../../../../src/ui/status-announcer/status-announcer.tsx"],"sourcesContent":["'use client';\n\nimport { createStatusAnnouncerLabels, StatusAnnouncerCore } from '@videojs/core';\nimport { shouldAnnounceStatusChange, subscribeToStatusAnnouncer } from '@videojs/core/dom';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef, useEffect, useState, useSyncExternalStore } from 'react';\nimport { useLocale, useTranslator } from '../../i18n/context';\nimport { useContainer, usePlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { useDestroy } from '../../utils/use-destroy';\nimport { renderElement } from '../../utils/use-render';\n\nexport interface StatusAnnouncerProps\n extends UIComponentProps<'div', StatusAnnouncerCore.State>,\n Pick<StatusAnnouncerCore.Props, 'closeDelay' | 'labels'> {}\n\nexport const StatusAnnouncer = forwardRef(function StatusAnnouncer(\n componentProps: StatusAnnouncerProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const { render, className, style, closeDelay, labels, ...elementProps } = componentProps;\n const translator = useTranslator();\n const locale = useLocale();\n const [core] = useState(() => new StatusAnnouncerCore());\n const store = usePlayer();\n const container = useContainer();\n useDestroy(core);\n core.setProps({\n closeDelay,\n labels: {\n ...createStatusAnnouncerLabels(translator, locale),\n ...labels,\n },\n shouldAnnounce: () => shouldAnnounceStatusChange(container),\n });\n\n useEffect(() => subscribeToStatusAnnouncer(store, core), [core, store]);\n\n const state = useSyncExternalStore(\n (callback) => core.state.subscribe(callback),\n () => core.state.current,\n () => core.state.current\n );\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n ref: forwardedRef,\n props: [\n elementProps,\n {\n role: 'status',\n children: (\n <span key={state.generation} data-status-announcer-content=\"\">\n {state.label ?? ''}\n </span>\n ),\n },\n ],\n }\n );\n});\n\nexport namespace StatusAnnouncer {\n export type Props = StatusAnnouncerProps;\n export type State = StatusAnnouncerCore.State;\n}\n"],"mappings":";;;;;;;;;;AAgBA,MAAa,kBAAkB,WAAW,SAAS,gBACjD,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,YAAY,QAAQ,GAAG,iBAAiB;CAC1E,MAAM,aAAa,cAAc;CACjC,MAAM,SAAS,UAAU;CACzB,MAAM,CAAC,QAAQ,eAAe,IAAI,oBAAoB,CAAC;CACvD,MAAM,QAAQ,UAAU;CACxB,MAAM,YAAY,aAAa;CAC/B,WAAW,IAAI;CACf,KAAK,SAAS;EACZ;EACA,QAAQ;GACN,GAAG,4BAA4B,YAAY,MAAM;GACjD,GAAG;EACL;EACA,sBAAsB,2BAA2B,SAAS;CAC5D,CAAC;CAED,gBAAgB,2BAA2B,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;CAEtE,MAAM,QAAQ,sBACX,aAAa,KAAK,MAAM,UAAU,QAAQ,SACrC,KAAK,MAAM,eACX,KAAK,MAAM,OACnB;CAEA,OAAO,cACL,OACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA,KAAK;EACL,OAAO,CACL,cACA;GACE,MAAM;GACN,UACE,oBAAC,QAAD;IAA6B,iCAA8B;IACxD,UAAA,MAAM,SAAS;GACZ,GAFK,MAAM,UAEX;EAEV,CACF;CACF,CACF;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"status-indicator-root.d.ts","names":[],"sources":["../../../../src/ui/status-indicator/status-indicator-root.tsx"],"mappings":";;;UAYiB,iCACP,wBAAwB,oBAAoB,QAClD,KAAK,oBAAoB;cAEhB,qCAAmB,0BAAA,KAAA,mDAAA,cAAA;kBA8Bf;OACH,QAAQ;OACR,QAAQ,oBAAoB"}
1
+ {"version":3,"file":"status-indicator-root.d.ts","names":[],"sources":["../../../../src/ui/status-indicator/status-indicator-root.tsx"],"mappings":";;;UAYiB,iCACP,wBAAwB,oBAAoB,QAClD,KAAK,oBAAoB;cAEhB,qCAAmB,0BAAA,KAAA,mDAAA,cAAA;kBAkCf;OACH,QAAQ;OACR,QAAQ,oBAAoB"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { useTranslator } from "../../i18n/context.js";
3
3
  import { renderElement } from "../../utils/use-render.js";
4
- import { useInputIndicatorRoot } from "../input-indicators/use-input-indicator-root.js";
4
+ import { useInputIndicatorRoot } from "../input-indicator/use-input-indicator-root.js";
5
5
  import { StatusIndicatorProvider } from "./context.js";
6
6
  import { forwardRef } from "react";
7
7
  import { jsx } from "react/jsx-runtime";
@@ -13,7 +13,7 @@ const StatusIndicatorRoot = forwardRef(function StatusIndicatorRoot(componentPro
13
13
  actions,
14
14
  closeDelay,
15
15
  labels: createInputIndicatorLabels(useTranslator())
16
- });
16
+ }, { replayOnUpdate: false });
17
17
  if (!present) return null;
18
18
  return /* @__PURE__ */ jsx(StatusIndicatorProvider, {
19
19
  value: { state },
@@ -1 +1 @@
1
- {"version":3,"file":"status-indicator-root.js","names":[],"sources":["../../../../src/ui/status-indicator/status-indicator-root.tsx"],"sourcesContent":["'use client';\n\nimport { createInputIndicatorLabels, StatusIndicatorCore, StatusIndicatorDataAttrs } 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-indicators/use-input-indicator-root';\nimport { StatusIndicatorProvider } from './context';\n\nexport interface StatusIndicatorRootProps\n extends UIComponentProps<'div', StatusIndicatorCore.State>,\n Omit<StatusIndicatorCore.Props, 'labels'> {}\n\nexport const StatusIndicatorRoot = forwardRef(function StatusIndicatorRoot(\n componentProps: StatusIndicatorRootProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const { render, className, style, actions, closeDelay, ...elementProps } = componentProps;\n const translator = useTranslator();\n const { elementRef, present, state } = useInputIndicatorRoot(() => new StatusIndicatorCore(), {\n actions,\n closeDelay,\n labels: createInputIndicatorLabels(translator),\n });\n\n if (!present) return null;\n\n return (\n <StatusIndicatorProvider value={{ state }}>\n {renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: StatusIndicatorDataAttrs,\n ref: [forwardedRef, elementRef],\n props: [elementProps],\n }\n )}\n </StatusIndicatorProvider>\n );\n});\n\nexport namespace StatusIndicatorRoot {\n export type Props = StatusIndicatorRootProps;\n export type State = StatusIndicatorCore.State;\n}\n"],"mappings":";;;;;;;;;AAgBA,MAAa,sBAAsB,WAAW,SAAS,oBACrD,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,SAAS,YAAY,GAAG,iBAAiB;CAE3E,MAAM,EAAE,YAAY,SAAS,UAAU,4BAA4B,IAAI,oBAAoB,GAAG;EAC5F;EACA;EACA,QAAQ,2BAJS,cAI2B,CAAC;CAC/C,CAAC;CAED,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":"status-indicator-root.js","names":[],"sources":["../../../../src/ui/status-indicator/status-indicator-root.tsx"],"sourcesContent":["'use client';\n\nimport { createInputIndicatorLabels, StatusIndicatorCore, StatusIndicatorDataAttrs } 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 { StatusIndicatorProvider } from './context';\n\nexport interface StatusIndicatorRootProps\n extends UIComponentProps<'div', StatusIndicatorCore.State>,\n Omit<StatusIndicatorCore.Props, 'labels'> {}\n\nexport const StatusIndicatorRoot = forwardRef(function StatusIndicatorRoot(\n componentProps: StatusIndicatorRootProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const { render, className, style, actions, closeDelay, ...elementProps } = componentProps;\n const translator = useTranslator();\n const { elementRef, present, state } = useInputIndicatorRoot(\n () => new StatusIndicatorCore(),\n {\n actions,\n closeDelay,\n labels: createInputIndicatorLabels(translator),\n },\n { replayOnUpdate: false }\n );\n\n if (!present) return null;\n\n return (\n <StatusIndicatorProvider value={{ state }}>\n {renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: StatusIndicatorDataAttrs,\n ref: [forwardedRef, elementRef],\n props: [elementProps],\n }\n )}\n </StatusIndicatorProvider>\n );\n});\n\nexport namespace StatusIndicatorRoot {\n export type Props = StatusIndicatorRootProps;\n export type State = StatusIndicatorCore.State;\n}\n"],"mappings":";;;;;;;;;AAgBA,MAAa,sBAAsB,WAAW,SAAS,oBACrD,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,SAAS,YAAY,GAAG,iBAAiB;CAE3E,MAAM,EAAE,YAAY,SAAS,UAAU,4BAC/B,IAAI,oBAAoB,GAC9B;EACE;EACA;EACA,QAAQ,2BANO,cAM6B,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":"time-value.d.ts","names":[],"sources":["../../../../src/ui/time/time-value.tsx"],"mappings":";;;UAgBiB,mBAAmB,KAAK,yBAAyB,SAAS,qBAAqB,SAAS;;;;;;;;;;;cAY5F,uBAAK,0BAAA,KAAA,qCAAA,cAAA;kBAkGD;OACH,QAAQ;OACR,QAAQ,SAAS"}
1
+ {"version":3,"file":"time-value.d.ts","names":[],"sources":["../../../../src/ui/time/time-value.tsx"],"mappings":";;;UAgBiB,mBAAmB,KAAK,yBAAyB,SAAS,qBAAqB,SAAS;;;;;;;;;;;cAY5F,uBAAK,0BAAA,KAAA,qCAAA,cAAA;kBAwGD;OACH,QAAQ;OACR,QAAQ,SAAS"}
@@ -6,9 +6,9 @@ import { logMissingFeature, selectTime } from "@videojs/core/dom";
6
6
  import { translateText } from "@videojs/core/i18n";
7
7
  import { forwardRef, useEffect, useState } from "react";
8
8
  import { isInteractiveActivation } from "@videojs/utils/dom";
9
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
10
  import { TimeCore, TimeDataAttrs } from "@videojs/core";
11
- import { remainingSuffixText } from "@videojs/core/i18n/text/time";
11
+ import { durationSuffixText, elapsedSuffixText, remainingSuffixText } from "@videojs/core/i18n/text/time";
12
12
  import { formatTimeAsPhrase } from "@videojs/utils/time";
13
13
  //#region src/ui/time/time-value.tsx
14
14
  /**
@@ -43,10 +43,17 @@ const Value = forwardRef(function Value(componentProps, forwardedRef) {
43
43
  return null;
44
44
  }
45
45
  core.setMedia(time);
46
+ core.setFormatLocale(locale);
46
47
  const state = core.getState();
47
48
  const attrs = core.getAttrs(state, defaultType);
48
- const resolvedLabelParams = core.getLabelParams(state) ? { duration: state.type === "remaining" ? translateText(remainingSuffixText, translator, { duration: formatTimeAsPhrase(Math.abs(state.seconds), { locale }) }) : formatTimeAsPhrase(Math.abs(state.seconds), { locale }) } : void 0;
49
- const content = state.negative ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
49
+ const labelParams = core.getLabelParams(state);
50
+ const suffixText = {
51
+ current: elapsedSuffixText,
52
+ duration: durationSuffixText,
53
+ remaining: remainingSuffixText
54
+ }[state.type];
55
+ const resolvedLabelParams = labelParams ? { duration: translateText(suffixText, translator, { duration: formatTimeAsPhrase(Math.abs(state.seconds), { locale }) }) } : void 0;
56
+ const content = state.negative ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
50
57
  "aria-hidden": "true",
51
58
  children: negativeSign ?? TimeCore.defaultProps.negativeSign
52
59
  }), state.text] }) : state.text;
@@ -75,10 +82,11 @@ const Value = forwardRef(function Value(componentProps, forwardedRef) {
75
82
  stateAttrMap: TimeDataAttrs,
76
83
  ref: [forwardedRef],
77
84
  props: [{
78
- dateTime: state.datetime,
85
+ dateTime: toggle ? void 0 : state.datetime,
79
86
  children: content,
80
87
  ...attrs,
81
88
  "aria-label": translateText(attrs["aria-label"], translator, resolvedLabelParams),
89
+ "aria-description": attrs["aria-description"] ? translateText(attrs["aria-description"], translator) : void 0,
82
90
  ...toggle ? {
83
91
  onClick: handleClick,
84
92
  onKeyDown: handleKeyDown
@@ -1 +1 @@
1
- {"version":3,"file":"time-value.js","names":[],"sources":["../../../../src/ui/time/time-value.tsx"],"sourcesContent":["'use client';\n\nimport { TimeCore, TimeDataAttrs } from '@videojs/core';\nimport { logMissingFeature, selectTime } from '@videojs/core/dom';\nimport { translateText } from '@videojs/core/i18n';\nimport { remainingSuffixText } from '@videojs/core/i18n/text/time';\nimport { isInteractiveActivation } from '@videojs/utils/dom';\nimport { formatTimeAsPhrase } from '@videojs/utils/time';\nimport type { ForwardedRef, KeyboardEvent, MouseEvent } from 'react';\nimport { forwardRef, useEffect, useState } from 'react';\n\nimport { useLocale, useTranslator } from '../../i18n/context';\nimport { usePlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\n\nexport interface ValueProps extends Omit<UIComponentProps<'time', TimeCore.State>, 'children'>, TimeCore.Props {}\n\n/**\n * Displays a formatted time value (current, duration, or remaining).\n *\n * @example\n * ```tsx\n * <Time.Value />\n * <Time.Value type=\"duration\" />\n * <Time.Value type=\"remaining\" negativeSign=\"−\" />\n * ```\n */\nexport const Value = forwardRef(function Value(\n componentProps: ValueProps,\n forwardedRef: ForwardedRef<HTMLTimeElement>\n) {\n const { render, className, style, type, negativeSign, label, toggle = false, ...elementProps } = componentProps;\n\n const time = usePlayer(selectTime);\n const translator = useTranslator();\n const locale = useLocale();\n\n const [core] = useState(() => new TimeCore());\n\n const defaultType = type ?? TimeCore.defaultProps.type;\n const [activeType, setActiveType] = useState(defaultType);\n // biome-ignore lint/correctness/useExhaustiveDependencies: We want to listen for changes to defaultType and toggle (so we revert to default), this just means one less useEffect.\n useEffect(() => {\n setActiveType(defaultType);\n }, [defaultType, toggle]);\n\n core.setProps({\n type: activeType,\n negativeSign,\n label,\n toggle,\n });\n\n if (!time) {\n if (__DEV__) logMissingFeature('Time.Value', 'time');\n return null;\n }\n\n core.setMedia(time);\n const state = core.getState();\n const attrs = core.getAttrs(state, defaultType);\n const labelParams = core.getLabelParams(state);\n const resolvedLabelParams = labelParams\n ? {\n duration:\n state.type === 'remaining'\n ? translateText(remainingSuffixText, translator, {\n duration: formatTimeAsPhrase(Math.abs(state.seconds), { locale }),\n })\n : formatTimeAsPhrase(Math.abs(state.seconds), { locale }),\n }\n : undefined;\n\n const content = state.negative ? (\n <>\n <span aria-hidden=\"true\">{negativeSign ?? TimeCore.defaultProps.negativeSign}</span>\n {state.text}\n </>\n ) : (\n state.text\n );\n\n const toggleType = () => {\n setActiveType((value) => {\n if (defaultType === 'current') {\n return value === 'remaining' ? 'current' : 'remaining';\n }\n return value === 'duration' ? 'remaining' : 'duration';\n });\n };\n\n const handleClick = (event: MouseEvent<HTMLTimeElement>) => {\n if (event.defaultPrevented) return;\n toggleType();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLTimeElement>) => {\n if (event.defaultPrevented || !isInteractiveActivation(event.nativeEvent)) return;\n // Prevent space from scrolling page.\n event.preventDefault();\n if (event.repeat) return;\n toggleType();\n };\n\n return renderElement(\n 'time',\n { render, className, style },\n {\n state,\n stateAttrMap: TimeDataAttrs,\n ref: [forwardedRef],\n props: [\n {\n dateTime: state.datetime,\n children: content,\n ...attrs,\n 'aria-label': translateText(attrs['aria-label'], translator, resolvedLabelParams),\n ...(toggle ? { onClick: handleClick, onKeyDown: handleKeyDown } : undefined),\n },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace Value {\n export type Props = ValueProps;\n export type State = TimeCore.State;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAa,QAAQ,WAAW,SAAS,MACvC,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,MAAM,cAAc,OAAO,SAAS,OAAO,GAAG,iBAAiB;CAEjG,MAAM,OAAO,UAAU,UAAU;CACjC,MAAM,aAAa,cAAc;CACjC,MAAM,SAAS,UAAU;CAEzB,MAAM,CAAC,QAAQ,eAAe,IAAI,SAAS,CAAC;CAE5C,MAAM,cAAc,QAAQ,SAAS,aAAa;CAClD,MAAM,CAAC,YAAY,iBAAiB,SAAS,WAAW;CAExD,gBAAgB;EACd,cAAc,WAAW;CAC3B,GAAG,CAAC,aAAa,MAAM,CAAC;CAExB,KAAK,SAAS;EACZ,MAAM;EACN;EACA;EACA;CACF,CAAC;CAED,IAAI,CAAC,MAAM;EACI,kBAAkB,cAAc,MAAM;EACnD,OAAO;CACT;CAEA,KAAK,SAAS,IAAI;CAClB,MAAM,QAAQ,KAAK,SAAS;CAC5B,MAAM,QAAQ,KAAK,SAAS,OAAO,WAAW;CAE9C,MAAM,sBADc,KAAK,eAAe,KACF,IAClC,EACE,UACE,MAAM,SAAS,cACX,cAAc,qBAAqB,YAAY,EAC7C,UAAU,mBAAmB,KAAK,IAAI,MAAM,OAAO,GAAG,EAAE,OAAO,CAAC,EAClE,CAAC,IACD,mBAAmB,KAAK,IAAI,MAAM,OAAO,GAAG,EAAE,OAAO,CAAC,EAC9D,IACA,KAAA;CAEJ,MAAM,UAAU,MAAM,WACpB,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,QAAD;EAAM,eAAY;EAAQ,UAAA,gBAAgB,SAAS,aAAa;CAAmB,CAAA,GAClF,MAAM,IACP,EAAA,CAAA,IAEF,MAAM;CAGR,MAAM,mBAAmB;EACvB,eAAe,UAAU;GACvB,IAAI,gBAAgB,WAClB,OAAO,UAAU,cAAc,YAAY;GAE7C,OAAO,UAAU,aAAa,cAAc;EAC9C,CAAC;CACH;CAEA,MAAM,eAAe,UAAuC;EAC1D,IAAI,MAAM,kBAAkB;EAC5B,WAAW;CACb;CAEA,MAAM,iBAAiB,UAA0C;EAC/D,IAAI,MAAM,oBAAoB,CAAC,wBAAwB,MAAM,WAAW,GAAG;EAE3E,MAAM,eAAe;EACrB,IAAI,MAAM,QAAQ;EAClB,WAAW;CACb;CAEA,OAAO,cACL,QACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA,cAAc;EACd,KAAK,CAAC,YAAY;EAClB,OAAO,CACL;GACE,UAAU,MAAM;GAChB,UAAU;GACV,GAAG;GACH,cAAc,cAAc,MAAM,eAAe,YAAY,mBAAmB;GAChF,GAAI,SAAS;IAAE,SAAS;IAAa,WAAW;GAAc,IAAI,KAAA;EACpE,GACA,YACF;CACF,CACF;AACF,CAAC"}
1
+ {"version":3,"file":"time-value.js","names":[],"sources":["../../../../src/ui/time/time-value.tsx"],"sourcesContent":["'use client';\n\nimport { TimeCore, TimeDataAttrs } from '@videojs/core';\nimport { logMissingFeature, selectTime } from '@videojs/core/dom';\nimport { translateText } from '@videojs/core/i18n';\nimport { durationSuffixText, elapsedSuffixText, remainingSuffixText } from '@videojs/core/i18n/text/time';\nimport { isInteractiveActivation } from '@videojs/utils/dom';\nimport { formatTimeAsPhrase } from '@videojs/utils/time';\nimport type { ForwardedRef, KeyboardEvent, MouseEvent } from 'react';\nimport { forwardRef, useEffect, useState } from 'react';\n\nimport { useLocale, useTranslator } from '../../i18n/context';\nimport { usePlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\n\nexport interface ValueProps extends Omit<UIComponentProps<'time', TimeCore.State>, 'children'>, TimeCore.Props {}\n\n/**\n * Displays a formatted time value (current, duration, or remaining).\n *\n * @example\n * ```tsx\n * <Time.Value />\n * <Time.Value type=\"duration\" />\n * <Time.Value type=\"remaining\" negativeSign=\"−\" />\n * ```\n */\nexport const Value = forwardRef(function Value(\n componentProps: ValueProps,\n forwardedRef: ForwardedRef<HTMLTimeElement>\n) {\n const { render, className, style, type, negativeSign, label, toggle = false, ...elementProps } = componentProps;\n\n const time = usePlayer(selectTime);\n const translator = useTranslator();\n const locale = useLocale();\n\n const [core] = useState(() => new TimeCore());\n\n const defaultType = type ?? TimeCore.defaultProps.type;\n const [activeType, setActiveType] = useState(defaultType);\n // biome-ignore lint/correctness/useExhaustiveDependencies: We want to listen for changes to defaultType and toggle (so we revert to default), this just means one less useEffect.\n useEffect(() => {\n setActiveType(defaultType);\n }, [defaultType, toggle]);\n\n core.setProps({\n type: activeType,\n negativeSign,\n label,\n toggle,\n });\n\n if (!time) {\n if (__DEV__) logMissingFeature('Time.Value', 'time');\n return null;\n }\n\n core.setMedia(time);\n core.setFormatLocale(locale);\n const state = core.getState();\n const attrs = core.getAttrs(state, defaultType);\n const labelParams = core.getLabelParams(state);\n const suffixText = {\n current: elapsedSuffixText,\n duration: durationSuffixText,\n remaining: remainingSuffixText,\n }[state.type];\n const resolvedLabelParams = labelParams\n ? {\n duration: translateText(suffixText, translator, {\n duration: formatTimeAsPhrase(Math.abs(state.seconds), { locale }),\n }),\n }\n : undefined;\n\n const content = state.negative ? (\n <>\n <span aria-hidden=\"true\">{negativeSign ?? TimeCore.defaultProps.negativeSign}</span>\n {state.text}\n </>\n ) : (\n state.text\n );\n\n const toggleType = () => {\n setActiveType((value) => {\n if (defaultType === 'current') {\n return value === 'remaining' ? 'current' : 'remaining';\n }\n return value === 'duration' ? 'remaining' : 'duration';\n });\n };\n\n const handleClick = (event: MouseEvent<HTMLTimeElement>) => {\n if (event.defaultPrevented) return;\n toggleType();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLTimeElement>) => {\n if (event.defaultPrevented || !isInteractiveActivation(event.nativeEvent)) return;\n // Prevent space from scrolling page.\n event.preventDefault();\n if (event.repeat) return;\n toggleType();\n };\n\n return renderElement(\n 'time',\n { render, className, style },\n {\n state,\n stateAttrMap: TimeDataAttrs,\n ref: [forwardedRef],\n props: [\n {\n dateTime: toggle ? undefined : state.datetime,\n children: content,\n ...attrs,\n 'aria-label': translateText(attrs['aria-label'], translator, resolvedLabelParams),\n 'aria-description': attrs['aria-description']\n ? translateText(attrs['aria-description'], translator)\n : undefined,\n ...(toggle ? { onClick: handleClick, onKeyDown: handleKeyDown } : undefined),\n },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace Value {\n export type Props = ValueProps;\n export type State = TimeCore.State;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAa,QAAQ,WAAW,SAAS,MACvC,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,MAAM,cAAc,OAAO,SAAS,OAAO,GAAG,iBAAiB;CAEjG,MAAM,OAAO,UAAU,UAAU;CACjC,MAAM,aAAa,cAAc;CACjC,MAAM,SAAS,UAAU;CAEzB,MAAM,CAAC,QAAQ,eAAe,IAAI,SAAS,CAAC;CAE5C,MAAM,cAAc,QAAQ,SAAS,aAAa;CAClD,MAAM,CAAC,YAAY,iBAAiB,SAAS,WAAW;CAExD,gBAAgB;EACd,cAAc,WAAW;CAC3B,GAAG,CAAC,aAAa,MAAM,CAAC;CAExB,KAAK,SAAS;EACZ,MAAM;EACN;EACA;EACA;CACF,CAAC;CAED,IAAI,CAAC,MAAM;EACI,kBAAkB,cAAc,MAAM;EACnD,OAAO;CACT;CAEA,KAAK,SAAS,IAAI;CAClB,KAAK,gBAAgB,MAAM;CAC3B,MAAM,QAAQ,KAAK,SAAS;CAC5B,MAAM,QAAQ,KAAK,SAAS,OAAO,WAAW;CAC9C,MAAM,cAAc,KAAK,eAAe,KAAK;CAC7C,MAAM,aAAa;EACjB,SAAS;EACT,UAAU;EACV,WAAW;CACb,EAAE,MAAM;CACR,MAAM,sBAAsB,cACxB,EACE,UAAU,cAAc,YAAY,YAAY,EAC9C,UAAU,mBAAmB,KAAK,IAAI,MAAM,OAAO,GAAG,EAAE,OAAO,CAAC,EAClE,CAAC,EACH,IACA,KAAA;CAEJ,MAAM,UAAU,MAAM,WACpB,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,QAAD;EAAM,eAAY;EAAQ,UAAA,gBAAgB,SAAS,aAAa;CAAmB,CAAA,GAClF,MAAM,IACP,EAAA,CAAA,IAEF,MAAM;CAGR,MAAM,mBAAmB;EACvB,eAAe,UAAU;GACvB,IAAI,gBAAgB,WAClB,OAAO,UAAU,cAAc,YAAY;GAE7C,OAAO,UAAU,aAAa,cAAc;EAC9C,CAAC;CACH;CAEA,MAAM,eAAe,UAAuC;EAC1D,IAAI,MAAM,kBAAkB;EAC5B,WAAW;CACb;CAEA,MAAM,iBAAiB,UAA0C;EAC/D,IAAI,MAAM,oBAAoB,CAAC,wBAAwB,MAAM,WAAW,GAAG;EAE3E,MAAM,eAAe;EACrB,IAAI,MAAM,QAAQ;EAClB,WAAW;CACb;CAEA,OAAO,cACL,QACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA,cAAc;EACd,KAAK,CAAC,YAAY;EAClB,OAAO,CACL;GACE,UAAU,SAAS,KAAA,IAAY,MAAM;GACrC,UAAU;GACV,GAAG;GACH,cAAc,cAAc,MAAM,eAAe,YAAY,mBAAmB;GAChF,oBAAoB,MAAM,sBACtB,cAAc,MAAM,qBAAqB,UAAU,IACnD,KAAA;GACJ,GAAI,SAAS;IAAE,SAAS;IAAa,WAAW;GAAc,IAAI,KAAA;EACpE,GACA,YACF;CACF,CACF;AACF,CAAC"}
@@ -5,10 +5,12 @@ import { SliderThumb, SliderThumbProps } from "../slider/slider-thumb.js";
5
5
  import { SliderTrack, SliderTrackProps } from "../slider/slider-track.js";
6
6
  import { SliderValue, SliderValueProps } from "../slider/slider-value.js";
7
7
  import "../slider/index.parts.js";
8
+ import { TimeSliderChapterTitle, TimeSliderChapterTitleProps } from "./time-slider-chapters/time-slider-chapter-title.js";
9
+ import { TimeSliderChapters, TimeSliderChaptersProps } from "./time-slider-chapters/time-slider-chapters.js";
8
10
  import { TimeSliderRoot, TimeSliderRootProps } from "./time-slider-root.js";
9
11
  declare namespace index_parts_d_exports {
10
- export { SliderBuffer as Buffer, SliderBufferProps as BufferProps, SliderFill as Fill, SliderFillProps as FillProps, SliderPreview as Preview, SliderPreviewProps as PreviewProps, TimeSliderRoot as Root, TimeSliderRootProps as RootProps, SliderThumb as Thumb, SliderThumbProps as ThumbProps, SliderTrack as Track, SliderTrackProps as TrackProps, SliderValue as Value, SliderValueProps as ValueProps };
12
+ export { SliderBuffer as Buffer, SliderBufferProps as BufferProps, TimeSliderChapterTitle as ChapterTitle, TimeSliderChapterTitleProps as ChapterTitleProps, TimeSliderChapters as Chapters, TimeSliderChaptersProps as ChaptersProps, SliderFill as Fill, SliderFillProps as FillProps, SliderPreview as Preview, SliderPreviewProps as PreviewProps, TimeSliderRoot as Root, TimeSliderRootProps as RootProps, SliderThumb as Thumb, SliderThumbProps as ThumbProps, SliderTrack as Track, SliderTrackProps as TrackProps, SliderValue as Value, SliderValueProps as ValueProps };
11
13
  }
12
14
  //#endregion
13
- export { SliderBuffer as Buffer, type SliderBufferProps as BufferProps, SliderFill as Fill, type SliderFillProps as FillProps, SliderPreview as Preview, type SliderPreviewProps as PreviewProps, TimeSliderRoot as Root, type TimeSliderRootProps as RootProps, SliderThumb as Thumb, type SliderThumbProps as ThumbProps, SliderTrack as Track, type SliderTrackProps as TrackProps, SliderValue as Value, type SliderValueProps as ValueProps, index_parts_d_exports };
15
+ export { SliderBuffer as Buffer, type SliderBufferProps as BufferProps, TimeSliderChapterTitle as ChapterTitle, type TimeSliderChapterTitleProps as ChapterTitleProps, TimeSliderChapters as Chapters, type TimeSliderChaptersProps as ChaptersProps, SliderFill as Fill, type SliderFillProps as FillProps, SliderPreview as Preview, type SliderPreviewProps as PreviewProps, TimeSliderRoot as Root, type TimeSliderRootProps as RootProps, SliderThumb as Thumb, type SliderThumbProps as ThumbProps, SliderTrack as Track, type SliderTrackProps as TrackProps, SliderValue as Value, type SliderValueProps as ValueProps, index_parts_d_exports };
14
16
  //# sourceMappingURL=index.parts.d.ts.map
@@ -5,10 +5,14 @@ import { SliderPreview } from "../slider/slider-preview.js";
5
5
  import { SliderThumb } from "../slider/slider-thumb.js";
6
6
  import { SliderTrack } from "../slider/slider-track.js";
7
7
  import { SliderValue } from "../slider/slider-value.js";
8
+ import { TimeSliderChapterTitle } from "./time-slider-chapters/time-slider-chapter-title.js";
9
+ import { TimeSliderChapters } from "./time-slider-chapters/time-slider-chapters.js";
8
10
  import { TimeSliderRoot } from "./time-slider-root.js";
9
11
  //#region src/ui/time-slider/index.parts.ts
10
12
  var index_parts_exports = /* @__PURE__ */ __exportAll({
11
13
  Buffer: () => SliderBuffer,
14
+ ChapterTitle: () => TimeSliderChapterTitle,
15
+ Chapters: () => TimeSliderChapters,
12
16
  Fill: () => SliderFill,
13
17
  Preview: () => SliderPreview,
14
18
  Root: () => TimeSliderRoot,
@@ -17,6 +21,6 @@ var index_parts_exports = /* @__PURE__ */ __exportAll({
17
21
  Value: () => SliderValue
18
22
  });
19
23
  //#endregion
20
- export { SliderBuffer as Buffer, SliderFill as Fill, SliderPreview as Preview, TimeSliderRoot as Root, SliderThumb as Thumb, SliderTrack as Track, SliderValue as Value, index_parts_exports };
24
+ export { SliderBuffer as Buffer, TimeSliderChapterTitle as ChapterTitle, TimeSliderChapters as Chapters, SliderFill as Fill, SliderPreview as Preview, TimeSliderRoot as Root, SliderThumb as Thumb, SliderTrack as Track, SliderValue as Value, index_parts_exports };
21
25
 
22
26
  //# sourceMappingURL=index.parts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.parts.js","names":[],"sources":["../../../../src/ui/time-slider/index.parts.ts"],"sourcesContent":["export {\n Buffer,\n type BufferProps,\n Fill,\n type FillProps,\n Preview,\n type PreviewProps,\n Thumb,\n type ThumbProps,\n Track,\n type TrackProps,\n Value,\n type ValueProps,\n} from '../slider/index.parts';\nexport { TimeSliderRoot as Root, type TimeSliderRootProps as RootProps } from './time-slider-root';\n"],"mappings":""}
1
+ {"version":3,"file":"index.parts.js","names":[],"sources":["../../../../src/ui/time-slider/index.parts.ts"],"sourcesContent":["export {\n Buffer,\n type BufferProps,\n Fill,\n type FillProps,\n Preview,\n type PreviewProps,\n Thumb,\n type ThumbProps,\n Track,\n type TrackProps,\n Value,\n type ValueProps,\n} from '../slider/index.parts';\nexport {\n TimeSliderChapterTitle as ChapterTitle,\n type TimeSliderChapterTitleProps as ChapterTitleProps,\n} from './time-slider-chapters/time-slider-chapter-title';\nexport {\n TimeSliderChapters as Chapters,\n type TimeSliderChaptersProps as ChaptersProps,\n} from './time-slider-chapters/time-slider-chapters';\nexport { TimeSliderRoot as Root, type TimeSliderRootProps as RootProps } from './time-slider-root';\n"],"mappings":""}
@@ -0,0 +1,61 @@
1
+ "use client";
2
+ import { renderElement } from "../../../utils/use-render.js";
3
+ import { useSliderContext, useSliderPointerValue } from "../../slider/context.js";
4
+ import { getStateDataAttrs } from "@videojs/core/dom";
5
+ import { Fragment, forwardRef, useMemo, useState } from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { SliderSegmentsCore, TimeSliderChapterCSSVars } from "@videojs/core";
8
+ //#region src/ui/time-slider/time-slider-chapters/slider-segments.tsx
9
+ /** Private React adapter for rendering normalized numeric slider segments. */
10
+ const SliderSegments = forwardRef(function SliderSegments(componentProps, ref) {
11
+ const { ranges, min, max, renderSegment, render, className, style, ...elementProps } = componentProps;
12
+ const slider = useSliderContext();
13
+ const pointerValue = useSliderPointerValue();
14
+ const [core] = useState(() => new SliderSegmentsCore());
15
+ const geometry = useMemo(() => core.getGeometry({
16
+ ranges,
17
+ min,
18
+ max,
19
+ orientation: slider.state.orientation
20
+ }), [
21
+ core,
22
+ ranges,
23
+ min,
24
+ max,
25
+ slider.state.orientation
26
+ ]);
27
+ const sliderAttrs = getStateDataAttrs(slider.state, slider.stateAttrMap);
28
+ const segments = geometry.map((segment) => {
29
+ const state = core.getState(segment, slider.state, pointerValue);
30
+ const segmentStyle = {
31
+ [TimeSliderChapterCSSVars.start]: state.startPercent,
32
+ [TimeSliderChapterCSSVars.end]: state.endPercent,
33
+ [TimeSliderChapterCSSVars.width]: state.width ?? state.height,
34
+ [TimeSliderChapterCSSVars.fill]: `${state.fillPercent}%`
35
+ };
36
+ return /* @__PURE__ */ jsx(Fragment, { children: renderSegment({
37
+ ...sliderAttrs,
38
+ style: segmentStyle
39
+ }, state) }, state.key);
40
+ });
41
+ const state = geometry.length > 0 ? core.getState(geometry[0], slider.state, pointerValue) : null;
42
+ if (!state) return null;
43
+ return renderElement("div", {
44
+ render,
45
+ className,
46
+ style
47
+ }, {
48
+ state,
49
+ ref,
50
+ props: [
51
+ { "aria-hidden": "true" },
52
+ sliderAttrs,
53
+ elementProps,
54
+ { children: segments }
55
+ ]
56
+ });
57
+ });
58
+ //#endregion
59
+ export { SliderSegments };
60
+
61
+ //# sourceMappingURL=slider-segments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider-segments.js","names":[],"sources":["../../../../../src/ui/time-slider/time-slider-chapters/slider-segments.tsx"],"sourcesContent":["'use client';\n\nimport {\n type SliderSegmentRange,\n type SliderSegmentState,\n SliderSegmentsCore,\n TimeSliderChapterCSSVars,\n} from '@videojs/core';\nimport { getStateDataAttrs } from '@videojs/core/dom';\nimport type { CSSProperties, ReactElement } from 'react';\nimport { Fragment, forwardRef, useMemo, useState } from 'react';\n\nimport type { HTMLProps, UIComponentProps } from '../../../utils/types';\nimport { renderElement } from '../../../utils/use-render';\nimport { useSliderContext, useSliderPointerValue } from '../../slider/context';\n\ntype SegmentProps = Omit<HTMLProps<HTMLElement>, 'ref'>;\n\ninterface SliderSegmentsProps extends Omit<UIComponentProps<'div', SliderSegmentState>, 'children'> {\n ranges: readonly SliderSegmentRange[];\n min: number;\n max: number;\n renderSegment: (props: SegmentProps, state: SliderSegmentState) => ReactElement;\n}\n\n/** Private React adapter for rendering normalized numeric slider segments. */\nexport const SliderSegments = forwardRef<HTMLDivElement, SliderSegmentsProps>(\n function SliderSegments(componentProps, ref) {\n const { ranges, min, max, renderSegment, render, className, style, ...elementProps } = componentProps;\n const slider = useSliderContext();\n const pointerValue = useSliderPointerValue();\n const [core] = useState(() => new SliderSegmentsCore());\n const geometry = useMemo(\n () => core.getGeometry({ ranges, min, max, orientation: slider.state.orientation }),\n [core, ranges, min, max, slider.state.orientation]\n );\n const sliderAttrs = getStateDataAttrs(slider.state, slider.stateAttrMap);\n\n const segments = geometry.map((segment) => {\n const state = core.getState(segment, slider.state, pointerValue);\n const segmentStyle = {\n [TimeSliderChapterCSSVars.start]: state.startPercent,\n [TimeSliderChapterCSSVars.end]: state.endPercent,\n [TimeSliderChapterCSSVars.width]: state.width ?? state.height,\n [TimeSliderChapterCSSVars.fill]: `${state.fillPercent}%`,\n } as CSSProperties;\n\n return (\n <Fragment key={state.key}>\n {renderSegment(\n {\n ...sliderAttrs,\n style: segmentStyle,\n },\n state\n )}\n </Fragment>\n );\n });\n\n const state = geometry.length > 0 ? core.getState(geometry[0]!, slider.state, pointerValue) : null;\n if (!state) return null;\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n ref,\n props: [{ 'aria-hidden': 'true' }, sliderAttrs, elementProps, { children: segments }],\n }\n );\n }\n);\n"],"mappings":";;;;;;;;;AA0BA,MAAa,iBAAiB,WAC5B,SAAS,eAAe,gBAAgB,KAAK;CAC3C,MAAM,EAAE,QAAQ,KAAK,KAAK,eAAe,QAAQ,WAAW,OAAO,GAAG,iBAAiB;CACvF,MAAM,SAAS,iBAAiB;CAChC,MAAM,eAAe,sBAAsB;CAC3C,MAAM,CAAC,QAAQ,eAAe,IAAI,mBAAmB,CAAC;CACtD,MAAM,WAAW,cACT,KAAK,YAAY;EAAE;EAAQ;EAAK;EAAK,aAAa,OAAO,MAAM;CAAY,CAAC,GAClF;EAAC;EAAM;EAAQ;EAAK;EAAK,OAAO,MAAM;CAAW,CACnD;CACA,MAAM,cAAc,kBAAkB,OAAO,OAAO,OAAO,YAAY;CAEvE,MAAM,WAAW,SAAS,KAAK,YAAY;EACzC,MAAM,QAAQ,KAAK,SAAS,SAAS,OAAO,OAAO,YAAY;EAC/D,MAAM,eAAe;IAClB,yBAAyB,QAAQ,MAAM;IACvC,yBAAyB,MAAM,MAAM;IACrC,yBAAyB,QAAQ,MAAM,SAAS,MAAM;IACtD,yBAAyB,OAAO,GAAG,MAAM,YAAY;EACxD;EAEA,OACE,oBAAC,UAAD,EAAA,UACG,cACC;GACE,GAAG;GACH,OAAO;EACT,GACA,KACF,EACQ,GARK,MAAM,GAQX;CAEd,CAAC;CAED,MAAM,QAAQ,SAAS,SAAS,IAAI,KAAK,SAAS,SAAS,IAAK,OAAO,OAAO,YAAY,IAAI;CAC9F,IAAI,CAAC,OAAO,OAAO;CAEnB,OAAO,cACL,OACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA;EACA,OAAO;GAAC,EAAE,eAAe,OAAO;GAAG;GAAa;GAAc,EAAE,UAAU,SAAS;EAAC;CACtF,CACF;AACF,CACF"}
@@ -0,0 +1,19 @@
1
+ import { UIComponentProps } from "../../../utils/types.js";
2
+ import { MediaTextCue } from "@videojs/media";
3
+ //#region src/ui/time-slider/time-slider-chapters/time-slider-chapter-title.d.ts
4
+ interface TimeSliderChapterTitleState {
5
+ /** Chapter at the current interaction value. */
6
+ cue: MediaTextCue | null;
7
+ /** Chapter cue text, or an empty string for an uncovered interval. */
8
+ text: string;
9
+ }
10
+ interface TimeSliderChapterTitleProps extends UIComponentProps<'span', TimeSliderChapterTitleState> {}
11
+ /** Displays the chapter title at the current pointer or keyboard position. */
12
+ declare const TimeSliderChapterTitle: import("react").ForwardRefExoticComponent<Omit<TimeSliderChapterTitleProps, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
13
+ declare namespace TimeSliderChapterTitle {
14
+ type Props = TimeSliderChapterTitleProps;
15
+ type State = TimeSliderChapterTitleState;
16
+ }
17
+ //#endregion
18
+ export { TimeSliderChapterTitle, TimeSliderChapterTitleProps, TimeSliderChapterTitleState };
19
+ //# sourceMappingURL=time-slider-chapter-title.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-slider-chapter-title.d.ts","names":[],"sources":["../../../../../src/ui/time-slider/time-slider-chapters/time-slider-chapter-title.tsx"],"mappings":";;;UAYiB;;EAEf,KAAK;;EAEL;;UAGe,oCAAoC,yBAAyB;;cAGjE,wCAAsB,0BAAA,KAAA,sDAAA,cAAA;kBAqClB;OACH,QAAQ;OACR,QAAQ"}
@@ -0,0 +1,46 @@
1
+ "use client";
2
+ import { usePlayer } from "../../../player/context.js";
3
+ import { renderElement } from "../../../utils/use-render.js";
4
+ import { useSliderContext, useSliderPointerValue } from "../../slider/context.js";
5
+ import { selectTextTrack, selectTime } from "@videojs/core/dom";
6
+ import { forwardRef, useMemo, useState } from "react";
7
+ import { TimeSliderChaptersCore } from "@videojs/core";
8
+ //#region src/ui/time-slider/time-slider-chapters/time-slider-chapter-title.tsx
9
+ /** Displays the chapter title at the current pointer or keyboard position. */
10
+ const TimeSliderChapterTitle = forwardRef(function TimeSliderChapterTitle(componentProps, ref) {
11
+ const { render, className, style, ...elementProps } = componentProps;
12
+ const slider = useSliderContext();
13
+ const pointerValue = useSliderPointerValue();
14
+ const textTrack = usePlayer(selectTextTrack);
15
+ const time = usePlayer(selectTime);
16
+ const [core] = useState(() => new TimeSliderChaptersCore());
17
+ const { chapters } = useMemo(() => core.getRanges(textTrack?.chaptersCues ?? [], 0, time?.duration ?? 0), [
18
+ core,
19
+ textTrack?.chaptersCues,
20
+ time?.duration
21
+ ]);
22
+ const keyboard = slider.state.interactive && !slider.state.pointing && !slider.state.dragging;
23
+ const value = slider.state.pointing || slider.state.dragging ? pointerValue : slider.state.value;
24
+ const cue = core.findChapter(chapters, value)?.cue ?? null;
25
+ const state = {
26
+ cue,
27
+ text: cue?.text ?? ""
28
+ };
29
+ return renderElement("span", {
30
+ render,
31
+ className,
32
+ style
33
+ }, {
34
+ state,
35
+ ref,
36
+ props: [{
37
+ "aria-hidden": keyboard ? void 0 : true,
38
+ "aria-live": keyboard ? "polite" : void 0,
39
+ children: state.text
40
+ }, elementProps]
41
+ });
42
+ });
43
+ //#endregion
44
+ export { TimeSliderChapterTitle };
45
+
46
+ //# sourceMappingURL=time-slider-chapter-title.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-slider-chapter-title.js","names":[],"sources":["../../../../../src/ui/time-slider/time-slider-chapters/time-slider-chapter-title.tsx"],"sourcesContent":["'use client';\n\nimport { TimeSliderChaptersCore } from '@videojs/core';\nimport { selectTextTrack, selectTime } from '@videojs/core/dom';\nimport type { MediaTextCue } from '@videojs/media';\nimport { forwardRef, useMemo, useState } from 'react';\n\nimport { usePlayer } from '../../../player/context';\nimport type { UIComponentProps } from '../../../utils/types';\nimport { renderElement } from '../../../utils/use-render';\nimport { useSliderContext, useSliderPointerValue } from '../../slider/context';\n\nexport interface TimeSliderChapterTitleState {\n /** Chapter at the current interaction value. */\n cue: MediaTextCue | null;\n /** Chapter cue text, or an empty string for an uncovered interval. */\n text: string;\n}\n\nexport interface TimeSliderChapterTitleProps extends UIComponentProps<'span', TimeSliderChapterTitleState> {}\n\n/** Displays the chapter title at the current pointer or keyboard position. */\nexport const TimeSliderChapterTitle = forwardRef<HTMLSpanElement, TimeSliderChapterTitleProps>(\n function TimeSliderChapterTitle(componentProps, ref) {\n const { render, className, style, ...elementProps } = componentProps;\n const slider = useSliderContext();\n const pointerValue = useSliderPointerValue();\n const textTrack = usePlayer(selectTextTrack);\n const time = usePlayer(selectTime);\n const [core] = useState(() => new TimeSliderChaptersCore());\n const { chapters } = useMemo(\n () => core.getRanges(textTrack?.chaptersCues ?? [], 0, time?.duration ?? 0),\n [core, textTrack?.chaptersCues, time?.duration]\n );\n const keyboard = slider.state.interactive && !slider.state.pointing && !slider.state.dragging;\n const value = slider.state.pointing || slider.state.dragging ? pointerValue : slider.state.value;\n const chapter = core.findChapter(chapters, value);\n const cue = chapter?.cue ?? null;\n const state = { cue, text: cue?.text ?? '' };\n\n return renderElement(\n 'span',\n { render, className, style },\n {\n state,\n ref,\n props: [\n {\n 'aria-hidden': keyboard ? undefined : true,\n 'aria-live': keyboard ? 'polite' : undefined,\n children: state.text,\n },\n elementProps,\n ],\n }\n );\n }\n);\n\nexport namespace TimeSliderChapterTitle {\n export type Props = TimeSliderChapterTitleProps;\n export type State = TimeSliderChapterTitleState;\n}\n"],"mappings":";;;;;;;;;AAsBA,MAAa,yBAAyB,WACpC,SAAS,uBAAuB,gBAAgB,KAAK;CACnD,MAAM,EAAE,QAAQ,WAAW,OAAO,GAAG,iBAAiB;CACtD,MAAM,SAAS,iBAAiB;CAChC,MAAM,eAAe,sBAAsB;CAC3C,MAAM,YAAY,UAAU,eAAe;CAC3C,MAAM,OAAO,UAAU,UAAU;CACjC,MAAM,CAAC,QAAQ,eAAe,IAAI,uBAAuB,CAAC;CAC1D,MAAM,EAAE,aAAa,cACb,KAAK,UAAU,WAAW,gBAAgB,CAAC,GAAG,GAAG,MAAM,YAAY,CAAC,GAC1E;EAAC;EAAM,WAAW;EAAc,MAAM;CAAQ,CAChD;CACA,MAAM,WAAW,OAAO,MAAM,eAAe,CAAC,OAAO,MAAM,YAAY,CAAC,OAAO,MAAM;CACrF,MAAM,QAAQ,OAAO,MAAM,YAAY,OAAO,MAAM,WAAW,eAAe,OAAO,MAAM;CAE3F,MAAM,MADU,KAAK,YAAY,UAAU,KACzB,CAAC,EAAE,OAAO;CAC5B,MAAM,QAAQ;EAAE;EAAK,MAAM,KAAK,QAAQ;CAAG;CAE3C,OAAO,cACL,QACA;EAAE;EAAQ;EAAW;CAAM,GAC3B;EACE;EACA;EACA,OAAO,CACL;GACE,eAAe,WAAW,KAAA,IAAY;GACtC,aAAa,WAAW,WAAW,KAAA;GACnC,UAAU,MAAM;EAClB,GACA,YACF;CACF,CACF;AACF,CACF"}
@@ -0,0 +1,22 @@
1
+ import { HTMLProps, UIComponentProps } from "../../../utils/types.js";
2
+ import { ReactElement } from "react";
3
+ import { TimeSliderChapterRange, TimeSliderChaptersCore } from "@videojs/core";
4
+ //#region src/ui/time-slider/time-slider-chapters/time-slider-chapters.d.ts
5
+ type TimeSliderChapterState = TimeSliderChaptersCore.State;
6
+ interface TimeSliderChaptersState {
7
+ /** Normalized ranges spanning the full slider domain. */
8
+ chapters: readonly TimeSliderChapterRange[];
9
+ }
10
+ interface TimeSliderChaptersProps extends Omit<UIComponentProps<'div', TimeSliderChaptersState>, 'children'> {
11
+ /** Render one consumer-owned subtree for every normalized chapter range. */
12
+ renderChapter: (props: Omit<HTMLProps<HTMLElement>, 'ref'>, state: TimeSliderChapterState) => ReactElement;
13
+ }
14
+ /** Renders normalized chapter ranges across the full slider, including one full range when chapter cues are absent. */
15
+ declare const TimeSliderChapters: import("react").ForwardRefExoticComponent<Omit<TimeSliderChaptersProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
16
+ declare namespace TimeSliderChapters {
17
+ type Props = TimeSliderChaptersProps;
18
+ type State = TimeSliderChaptersState;
19
+ }
20
+ //#endregion
21
+ export { TimeSliderChapterState, TimeSliderChapters, TimeSliderChaptersProps, TimeSliderChaptersState };
22
+ //# sourceMappingURL=time-slider-chapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-slider-chapters.d.ts","names":[],"sources":["../../../../../src/ui/time-slider/time-slider-chapters/time-slider-chapters.tsx"],"mappings":";;;;KAkBY,yBAAyB,uBAAuB;UAE3C;;EAEf,mBAAmB;;UAGJ,gCAAgC,KAAK,wBAAwB;;EAE5E,gBAAgB,OAAO,KAAK,UAAU,sBAAsB,OAAO,2BAA2B;;;cAInF,oCAAkB,0BAAA,KAAA,kDAAA,cAAA;kBA6Cd;OACH,QAAQ;OACR,QAAQ"}