@videojs/react 10.0.0-alpha.3 → 10.0.0-alpha.5

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 (382) hide show
  1. package/dist/default/icons/dist/react/default/captions-off.js +66 -0
  2. package/dist/default/icons/dist/react/default/captions-off.js.map +1 -0
  3. package/dist/default/icons/dist/react/default/captions-on.js +19 -0
  4. package/dist/default/icons/dist/react/default/captions-on.js.map +1 -0
  5. package/dist/default/icons/dist/react/default/fullscreen-enter.js +19 -0
  6. package/dist/default/icons/dist/react/default/fullscreen-enter.js.map +1 -0
  7. package/dist/default/icons/dist/react/default/fullscreen-exit.js +19 -0
  8. package/dist/default/icons/dist/react/default/fullscreen-exit.js.map +1 -0
  9. package/dist/default/icons/dist/react/default/pause.js +30 -0
  10. package/dist/default/icons/dist/react/default/pause.js.map +1 -0
  11. package/dist/default/icons/dist/react/default/pip.js +26 -0
  12. package/dist/default/icons/dist/react/default/pip.js.map +1 -0
  13. package/dist/default/icons/dist/react/default/play.js +19 -0
  14. package/dist/default/icons/dist/react/default/play.js.map +1 -0
  15. package/dist/default/icons/dist/react/default/restart.js +22 -0
  16. package/dist/default/icons/dist/react/default/restart.js.map +1 -0
  17. package/dist/default/icons/dist/react/default/seek.js +19 -0
  18. package/dist/default/icons/dist/react/default/seek.js.map +1 -0
  19. package/dist/default/icons/dist/react/default/spinner.js +149 -0
  20. package/dist/default/icons/dist/react/default/spinner.js.map +1 -0
  21. package/dist/default/icons/dist/react/default/volume-high.js +22 -0
  22. package/dist/default/icons/dist/react/default/volume-high.js.map +1 -0
  23. package/dist/default/icons/dist/react/default/volume-low.js +19 -0
  24. package/dist/default/icons/dist/react/default/volume-low.js.map +1 -0
  25. package/dist/default/icons/dist/react/default/volume-off.js +19 -0
  26. package/dist/default/icons/dist/react/default/volume-off.js.map +1 -0
  27. package/dist/default/icons/dist/react/minimal/captions-off.js +66 -0
  28. package/dist/default/icons/dist/react/minimal/captions-off.js.map +1 -0
  29. package/dist/default/icons/dist/react/minimal/captions-on.js +19 -0
  30. package/dist/default/icons/dist/react/minimal/captions-on.js.map +1 -0
  31. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js +29 -0
  32. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js.map +1 -0
  33. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js +29 -0
  34. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js.map +1 -0
  35. package/dist/default/icons/dist/react/minimal/pause.js +30 -0
  36. package/dist/default/icons/dist/react/minimal/pause.js.map +1 -0
  37. package/dist/default/icons/dist/react/minimal/pip.js +26 -0
  38. package/dist/default/icons/dist/react/minimal/pip.js.map +1 -0
  39. package/dist/default/icons/dist/react/minimal/play.js +19 -0
  40. package/dist/default/icons/dist/react/minimal/play.js.map +1 -0
  41. package/dist/default/icons/dist/react/minimal/restart.js +22 -0
  42. package/dist/default/icons/dist/react/minimal/restart.js.map +1 -0
  43. package/dist/default/icons/dist/react/minimal/seek.js +19 -0
  44. package/dist/default/icons/dist/react/minimal/seek.js.map +1 -0
  45. package/dist/default/icons/dist/react/minimal/spinner.js +149 -0
  46. package/dist/default/icons/dist/react/minimal/spinner.js.map +1 -0
  47. package/dist/default/icons/dist/react/minimal/volume-high.js +22 -0
  48. package/dist/default/icons/dist/react/minimal/volume-high.js.map +1 -0
  49. package/dist/default/icons/dist/react/minimal/volume-low.js +19 -0
  50. package/dist/default/icons/dist/react/minimal/volume-low.js.map +1 -0
  51. package/dist/default/icons/dist/react/minimal/volume-off.js +19 -0
  52. package/dist/default/icons/dist/react/minimal/volume-off.js.map +1 -0
  53. package/dist/default/index.js +10 -2
  54. package/dist/default/player/context.js +11 -1
  55. package/dist/default/player/context.js.map +1 -1
  56. package/dist/default/presets/audio/index.js +2 -1
  57. package/dist/default/presets/audio/skin.css +1 -0
  58. package/dist/default/presets/background/index.js +2 -1
  59. package/dist/default/presets/background/skin.css +21 -2
  60. package/dist/default/presets/background/skin.js +7 -2
  61. package/dist/default/presets/background/skin.js.map +1 -1
  62. package/dist/default/presets/video/index.js +2 -1
  63. package/dist/default/presets/video/minimal-skin.css +178 -53
  64. package/dist/default/presets/video/minimal-skin.js +74 -89
  65. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  66. package/dist/default/presets/video/minimal-skin.tailwind.js +137 -106
  67. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  68. package/dist/default/presets/video/skin.css +179 -54
  69. package/dist/default/presets/video/skin.js +74 -89
  70. package/dist/default/presets/video/skin.js.map +1 -1
  71. package/dist/default/presets/video/skin.tailwind.js +134 -105
  72. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  73. package/dist/default/skins/dist/default/video/default.tailwind.js +90 -0
  74. package/dist/default/skins/dist/default/video/default.tailwind.js.map +1 -0
  75. package/dist/default/skins/dist/default/video/minimal.tailwind.js +86 -0
  76. package/dist/default/skins/dist/default/video/minimal.tailwind.js.map +1 -0
  77. package/dist/default/ui/captions-button/captions-button.js +1 -16
  78. package/dist/default/ui/captions-button/captions-button.js.map +1 -1
  79. package/dist/default/ui/controls/context.js +16 -0
  80. package/dist/default/ui/controls/context.js.map +1 -0
  81. package/dist/default/ui/controls/controls-group.js +4 -1
  82. package/dist/default/ui/controls/controls-group.js.map +1 -1
  83. package/dist/default/ui/controls/controls-root.js +19 -10
  84. package/dist/default/ui/controls/controls-root.js.map +1 -1
  85. package/dist/default/ui/create-context-part.js +29 -0
  86. package/dist/default/ui/create-context-part.js.map +1 -0
  87. package/dist/default/ui/create-media-button.js +52 -0
  88. package/dist/default/ui/create-media-button.js.map +1 -0
  89. package/dist/default/ui/fullscreen-button/fullscreen-button.js +8 -33
  90. package/dist/default/ui/fullscreen-button/fullscreen-button.js.map +1 -1
  91. package/dist/default/ui/hooks/use-slider.js +75 -0
  92. package/dist/default/ui/hooks/use-slider.js.map +1 -0
  93. package/dist/default/ui/mute-button/mute-button.js +8 -36
  94. package/dist/default/ui/mute-button/mute-button.js.map +1 -1
  95. package/dist/default/ui/pip-button/pip-button.js +8 -33
  96. package/dist/default/ui/pip-button/pip-button.js.map +1 -1
  97. package/dist/default/ui/play-button/play-button.js +7 -33
  98. package/dist/default/ui/play-button/play-button.js.map +1 -1
  99. package/dist/default/ui/playback-rate-button/index.js +3 -0
  100. package/dist/default/ui/playback-rate-button/playback-rate-button.js +34 -0
  101. package/dist/default/ui/playback-rate-button/playback-rate-button.js.map +1 -0
  102. package/dist/default/ui/popover/context.js +16 -0
  103. package/dist/default/ui/popover/context.js.map +1 -0
  104. package/dist/default/ui/popover/index.js +4 -0
  105. package/dist/default/ui/popover/index.parts.js +17 -0
  106. package/dist/default/ui/popover/index.parts.js.map +1 -0
  107. package/dist/default/ui/popover/popover-arrow.js +17 -0
  108. package/dist/default/ui/popover/popover-arrow.js.map +1 -0
  109. package/dist/default/ui/popover/popover-popup.js +94 -0
  110. package/dist/default/ui/popover/popover-popup.js.map +1 -0
  111. package/dist/default/ui/popover/popover-root.js +69 -0
  112. package/dist/default/ui/popover/popover-root.js.map +1 -0
  113. package/dist/default/ui/popover/popover-trigger.js +43 -0
  114. package/dist/default/ui/popover/popover-trigger.js.map +1 -0
  115. package/dist/default/ui/poster/poster.js +2 -1
  116. package/dist/default/ui/poster/poster.js.map +1 -1
  117. package/dist/default/ui/seek-button/seek-button.js +7 -34
  118. package/dist/default/ui/seek-button/seek-button.js.map +1 -1
  119. package/dist/default/ui/slider/context.js +22 -0
  120. package/dist/default/ui/slider/context.js.map +1 -0
  121. package/dist/default/ui/slider/index.js +3 -0
  122. package/dist/default/ui/slider/index.parts.js +21 -0
  123. package/dist/default/ui/slider/index.parts.js.map +1 -0
  124. package/dist/default/ui/slider/slider-buffer.js +16 -0
  125. package/dist/default/ui/slider/slider-buffer.js.map +1 -0
  126. package/dist/default/ui/slider/slider-fill.js +16 -0
  127. package/dist/default/ui/slider/slider-fill.js.map +1 -0
  128. package/dist/default/ui/slider/slider-root.js +71 -0
  129. package/dist/default/ui/slider/slider-root.js.map +1 -0
  130. package/dist/default/ui/slider/slider-thumb.js +32 -0
  131. package/dist/default/ui/slider/slider-thumb.js.map +1 -0
  132. package/dist/default/ui/slider/slider-track.js +16 -0
  133. package/dist/default/ui/slider/slider-track.js.map +1 -0
  134. package/dist/default/ui/slider/slider-value.js +32 -0
  135. package/dist/default/ui/slider/slider-value.js.map +1 -0
  136. package/dist/default/ui/thumbnail/thumbnail.js +87 -0
  137. package/dist/default/ui/thumbnail/thumbnail.js.map +1 -0
  138. package/dist/default/ui/time/time-value.js +2 -1
  139. package/dist/default/ui/time/time-value.js.map +1 -1
  140. package/dist/default/ui/time-slider/index.js +3 -0
  141. package/dist/default/ui/time-slider/index.parts.js +21 -0
  142. package/dist/default/ui/time-slider/index.parts.js.map +1 -0
  143. package/dist/default/ui/time-slider/time-slider-root.js +96 -0
  144. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -0
  145. package/dist/default/ui/volume-slider/index.js +3 -0
  146. package/dist/default/ui/volume-slider/index.parts.js +19 -0
  147. package/dist/default/ui/volume-slider/index.parts.js.map +1 -0
  148. package/dist/default/ui/volume-slider/volume-slider-root.js +86 -0
  149. package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -0
  150. package/dist/default/utils/use-force-render.js +13 -0
  151. package/dist/default/utils/use-force-render.js.map +1 -0
  152. package/dist/default/utils/use-latest-ref.js +20 -0
  153. package/dist/default/utils/use-latest-ref.js.map +1 -0
  154. package/dist/default/utils/use-safe-id.js +22 -0
  155. package/dist/default/utils/use-safe-id.js.map +1 -0
  156. package/dist/dev/icons/dist/react/default/captions-off.js +66 -0
  157. package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -0
  158. package/dist/dev/icons/dist/react/default/captions-on.js +19 -0
  159. package/dist/dev/icons/dist/react/default/captions-on.js.map +1 -0
  160. package/dist/dev/icons/dist/react/default/fullscreen-enter.js +19 -0
  161. package/dist/dev/icons/dist/react/default/fullscreen-enter.js.map +1 -0
  162. package/dist/dev/icons/dist/react/default/fullscreen-exit.js +19 -0
  163. package/dist/dev/icons/dist/react/default/fullscreen-exit.js.map +1 -0
  164. package/dist/dev/icons/dist/react/default/pause.js +30 -0
  165. package/dist/dev/icons/dist/react/default/pause.js.map +1 -0
  166. package/dist/dev/icons/dist/react/default/pip.js +26 -0
  167. package/dist/dev/icons/dist/react/default/pip.js.map +1 -0
  168. package/dist/dev/icons/dist/react/default/play.js +19 -0
  169. package/dist/dev/icons/dist/react/default/play.js.map +1 -0
  170. package/dist/dev/icons/dist/react/default/restart.js +22 -0
  171. package/dist/dev/icons/dist/react/default/restart.js.map +1 -0
  172. package/dist/dev/icons/dist/react/default/seek.js +19 -0
  173. package/dist/dev/icons/dist/react/default/seek.js.map +1 -0
  174. package/dist/dev/icons/dist/react/default/spinner.js +149 -0
  175. package/dist/dev/icons/dist/react/default/spinner.js.map +1 -0
  176. package/dist/dev/icons/dist/react/default/volume-high.js +22 -0
  177. package/dist/dev/icons/dist/react/default/volume-high.js.map +1 -0
  178. package/dist/dev/icons/dist/react/default/volume-low.js +19 -0
  179. package/dist/dev/icons/dist/react/default/volume-low.js.map +1 -0
  180. package/dist/dev/icons/dist/react/default/volume-off.js +19 -0
  181. package/dist/dev/icons/dist/react/default/volume-off.js.map +1 -0
  182. package/dist/dev/icons/dist/react/minimal/captions-off.js +66 -0
  183. package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -0
  184. package/dist/dev/icons/dist/react/minimal/captions-on.js +19 -0
  185. package/dist/dev/icons/dist/react/minimal/captions-on.js.map +1 -0
  186. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js +29 -0
  187. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js.map +1 -0
  188. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js +29 -0
  189. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js.map +1 -0
  190. package/dist/dev/icons/dist/react/minimal/pause.js +30 -0
  191. package/dist/dev/icons/dist/react/minimal/pause.js.map +1 -0
  192. package/dist/dev/icons/dist/react/minimal/pip.js +26 -0
  193. package/dist/dev/icons/dist/react/minimal/pip.js.map +1 -0
  194. package/dist/dev/icons/dist/react/minimal/play.js +19 -0
  195. package/dist/dev/icons/dist/react/minimal/play.js.map +1 -0
  196. package/dist/dev/icons/dist/react/minimal/restart.js +22 -0
  197. package/dist/dev/icons/dist/react/minimal/restart.js.map +1 -0
  198. package/dist/dev/icons/dist/react/minimal/seek.js +19 -0
  199. package/dist/dev/icons/dist/react/minimal/seek.js.map +1 -0
  200. package/dist/dev/icons/dist/react/minimal/spinner.js +149 -0
  201. package/dist/dev/icons/dist/react/minimal/spinner.js.map +1 -0
  202. package/dist/dev/icons/dist/react/minimal/volume-high.js +22 -0
  203. package/dist/dev/icons/dist/react/minimal/volume-high.js.map +1 -0
  204. package/dist/dev/icons/dist/react/minimal/volume-low.js +19 -0
  205. package/dist/dev/icons/dist/react/minimal/volume-low.js.map +1 -0
  206. package/dist/dev/icons/dist/react/minimal/volume-off.js +19 -0
  207. package/dist/dev/icons/dist/react/minimal/volume-off.js.map +1 -0
  208. package/dist/dev/index.d.ts +20 -2
  209. package/dist/dev/index.js +10 -2
  210. package/dist/dev/player/context.d.ts.map +1 -1
  211. package/dist/dev/player/context.js +11 -1
  212. package/dist/dev/player/context.js.map +1 -1
  213. package/dist/dev/presets/audio/index.d.ts +2 -1
  214. package/dist/dev/presets/audio/index.js +2 -1
  215. package/dist/dev/presets/audio/skin.css +1 -0
  216. package/dist/dev/presets/background/index.d.ts +2 -1
  217. package/dist/dev/presets/background/index.js +2 -1
  218. package/dist/dev/presets/background/skin.css +21 -2
  219. package/dist/dev/presets/background/skin.d.ts.map +1 -1
  220. package/dist/dev/presets/background/skin.js +7 -2
  221. package/dist/dev/presets/background/skin.js.map +1 -1
  222. package/dist/dev/presets/video/index.d.ts +2 -1
  223. package/dist/dev/presets/video/index.js +2 -1
  224. package/dist/dev/presets/video/minimal-skin.css +178 -53
  225. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  226. package/dist/dev/presets/video/minimal-skin.js +74 -89
  227. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  228. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  229. package/dist/dev/presets/video/minimal-skin.tailwind.js +137 -106
  230. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  231. package/dist/dev/presets/video/skin.css +179 -54
  232. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  233. package/dist/dev/presets/video/skin.js +74 -89
  234. package/dist/dev/presets/video/skin.js.map +1 -1
  235. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  236. package/dist/dev/presets/video/skin.tailwind.js +134 -105
  237. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  238. package/dist/dev/skins/dist/default/video/default.tailwind.js +90 -0
  239. package/dist/dev/skins/dist/default/video/default.tailwind.js.map +1 -0
  240. package/dist/dev/skins/dist/default/video/minimal.tailwind.js +86 -0
  241. package/dist/dev/skins/dist/default/video/minimal.tailwind.js.map +1 -0
  242. package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -1
  243. package/dist/dev/ui/captions-button/captions-button.js +1 -16
  244. package/dist/dev/ui/captions-button/captions-button.js.map +1 -1
  245. package/dist/dev/ui/controls/context.js +16 -0
  246. package/dist/dev/ui/controls/context.js.map +1 -0
  247. package/dist/dev/ui/controls/controls-group.d.ts +2 -2
  248. package/dist/dev/ui/controls/controls-group.d.ts.map +1 -1
  249. package/dist/dev/ui/controls/controls-group.js +4 -1
  250. package/dist/dev/ui/controls/controls-group.js.map +1 -1
  251. package/dist/dev/ui/controls/controls-root.d.ts.map +1 -1
  252. package/dist/dev/ui/controls/controls-root.js +19 -10
  253. package/dist/dev/ui/controls/controls-root.js.map +1 -1
  254. package/dist/dev/ui/create-context-part.js +29 -0
  255. package/dist/dev/ui/create-context-part.js.map +1 -0
  256. package/dist/dev/ui/create-media-button.js +55 -0
  257. package/dist/dev/ui/create-media-button.js.map +1 -0
  258. package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts +2 -1
  259. package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts.map +1 -1
  260. package/dist/dev/ui/fullscreen-button/fullscreen-button.js +9 -37
  261. package/dist/dev/ui/fullscreen-button/fullscreen-button.js.map +1 -1
  262. package/dist/dev/ui/hooks/use-slider.d.ts +36 -0
  263. package/dist/dev/ui/hooks/use-slider.d.ts.map +1 -0
  264. package/dist/dev/ui/hooks/use-slider.js +75 -0
  265. package/dist/dev/ui/hooks/use-slider.js.map +1 -0
  266. package/dist/dev/ui/mute-button/mute-button.d.ts +2 -4
  267. package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -1
  268. package/dist/dev/ui/mute-button/mute-button.js +9 -40
  269. package/dist/dev/ui/mute-button/mute-button.js.map +1 -1
  270. package/dist/dev/ui/pip-button/pip-button.d.ts +2 -1
  271. package/dist/dev/ui/pip-button/pip-button.d.ts.map +1 -1
  272. package/dist/dev/ui/pip-button/pip-button.js +9 -37
  273. package/dist/dev/ui/pip-button/pip-button.js.map +1 -1
  274. package/dist/dev/ui/play-button/play-button.d.ts +1 -1
  275. package/dist/dev/ui/play-button/play-button.d.ts.map +1 -1
  276. package/dist/dev/ui/play-button/play-button.js +8 -37
  277. package/dist/dev/ui/play-button/play-button.js.map +1 -1
  278. package/dist/dev/ui/playback-rate-button/index.d.ts +2 -0
  279. package/dist/dev/ui/playback-rate-button/index.js +3 -0
  280. package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts +30 -0
  281. package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts.map +1 -0
  282. package/dist/dev/ui/playback-rate-button/playback-rate-button.js +34 -0
  283. package/dist/dev/ui/playback-rate-button/playback-rate-button.js.map +1 -0
  284. package/dist/dev/ui/popover/context.d.ts +17 -0
  285. package/dist/dev/ui/popover/context.d.ts.map +1 -0
  286. package/dist/dev/ui/popover/context.js +16 -0
  287. package/dist/dev/ui/popover/context.js.map +1 -0
  288. package/dist/dev/ui/popover/index.d.ts +3 -0
  289. package/dist/dev/ui/popover/index.js +4 -0
  290. package/dist/dev/ui/popover/index.parts.d.ts +12 -0
  291. package/dist/dev/ui/popover/index.parts.d.ts.map +1 -0
  292. package/dist/dev/ui/popover/index.parts.js +17 -0
  293. package/dist/dev/ui/popover/index.parts.js.map +1 -0
  294. package/dist/dev/ui/popover/popover-arrow.d.ts +15 -0
  295. package/dist/dev/ui/popover/popover-arrow.d.ts.map +1 -0
  296. package/dist/dev/ui/popover/popover-arrow.js +17 -0
  297. package/dist/dev/ui/popover/popover-arrow.js.map +1 -0
  298. package/dist/dev/ui/popover/popover-popup.d.ts +15 -0
  299. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -0
  300. package/dist/dev/ui/popover/popover-popup.js +94 -0
  301. package/dist/dev/ui/popover/popover-popup.js.map +1 -0
  302. package/dist/dev/ui/popover/popover-root.d.ts +29 -0
  303. package/dist/dev/ui/popover/popover-root.d.ts.map +1 -0
  304. package/dist/dev/ui/popover/popover-root.js +69 -0
  305. package/dist/dev/ui/popover/popover-root.js.map +1 -0
  306. package/dist/dev/ui/popover/popover-trigger.d.ts +15 -0
  307. package/dist/dev/ui/popover/popover-trigger.d.ts.map +1 -0
  308. package/dist/dev/ui/popover/popover-trigger.js +43 -0
  309. package/dist/dev/ui/popover/popover-trigger.js.map +1 -0
  310. package/dist/dev/ui/poster/poster.d.ts.map +1 -1
  311. package/dist/dev/ui/poster/poster.js +2 -1
  312. package/dist/dev/ui/poster/poster.js.map +1 -1
  313. package/dist/dev/ui/seek-button/seek-button.d.ts +1 -1
  314. package/dist/dev/ui/seek-button/seek-button.d.ts.map +1 -1
  315. package/dist/dev/ui/seek-button/seek-button.js +8 -38
  316. package/dist/dev/ui/seek-button/seek-button.js.map +1 -1
  317. package/dist/dev/ui/slider/context.js +22 -0
  318. package/dist/dev/ui/slider/context.js.map +1 -0
  319. package/dist/dev/ui/slider/index.d.ts +2 -0
  320. package/dist/dev/ui/slider/index.js +3 -0
  321. package/dist/dev/ui/slider/index.parts.d.ts +14 -0
  322. package/dist/dev/ui/slider/index.parts.d.ts.map +1 -0
  323. package/dist/dev/ui/slider/index.parts.js +21 -0
  324. package/dist/dev/ui/slider/index.parts.js.map +1 -0
  325. package/dist/dev/ui/slider/slider-buffer.d.ts +14 -0
  326. package/dist/dev/ui/slider/slider-buffer.d.ts.map +1 -0
  327. package/dist/dev/ui/slider/slider-buffer.js +16 -0
  328. package/dist/dev/ui/slider/slider-buffer.js.map +1 -0
  329. package/dist/dev/ui/slider/slider-fill.d.ts +14 -0
  330. package/dist/dev/ui/slider/slider-fill.d.ts.map +1 -0
  331. package/dist/dev/ui/slider/slider-fill.js +16 -0
  332. package/dist/dev/ui/slider/slider-fill.js.map +1 -0
  333. package/dist/dev/ui/slider/slider-root.d.ts +19 -0
  334. package/dist/dev/ui/slider/slider-root.d.ts.map +1 -0
  335. package/dist/dev/ui/slider/slider-root.js +71 -0
  336. package/dist/dev/ui/slider/slider-root.js.map +1 -0
  337. package/dist/dev/ui/slider/slider-thumb.d.ts +14 -0
  338. package/dist/dev/ui/slider/slider-thumb.d.ts.map +1 -0
  339. package/dist/dev/ui/slider/slider-thumb.js +32 -0
  340. package/dist/dev/ui/slider/slider-thumb.js.map +1 -0
  341. package/dist/dev/ui/slider/slider-track.d.ts +14 -0
  342. package/dist/dev/ui/slider/slider-track.d.ts.map +1 -0
  343. package/dist/dev/ui/slider/slider-track.js +16 -0
  344. package/dist/dev/ui/slider/slider-track.js.map +1 -0
  345. package/dist/dev/ui/slider/slider-value.d.ts +19 -0
  346. package/dist/dev/ui/slider/slider-value.d.ts.map +1 -0
  347. package/dist/dev/ui/slider/slider-value.js +32 -0
  348. package/dist/dev/ui/slider/slider-value.js.map +1 -0
  349. package/dist/dev/ui/thumbnail/thumbnail.d.ts +17 -0
  350. package/dist/dev/ui/thumbnail/thumbnail.d.ts.map +1 -0
  351. package/dist/dev/ui/thumbnail/thumbnail.js +87 -0
  352. package/dist/dev/ui/thumbnail/thumbnail.js.map +1 -0
  353. package/dist/dev/ui/time/time-value.d.ts.map +1 -1
  354. package/dist/dev/ui/time/time-value.js +2 -1
  355. package/dist/dev/ui/time/time-value.js.map +1 -1
  356. package/dist/dev/ui/time-slider/index.d.ts +2 -0
  357. package/dist/dev/ui/time-slider/index.js +3 -0
  358. package/dist/dev/ui/time-slider/index.parts.d.ts +15 -0
  359. package/dist/dev/ui/time-slider/index.parts.d.ts.map +1 -0
  360. package/dist/dev/ui/time-slider/index.parts.js +21 -0
  361. package/dist/dev/ui/time-slider/index.parts.js.map +1 -0
  362. package/dist/dev/ui/time-slider/time-slider-root.d.ts +17 -0
  363. package/dist/dev/ui/time-slider/time-slider-root.d.ts.map +1 -0
  364. package/dist/dev/ui/time-slider/time-slider-root.js +99 -0
  365. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -0
  366. package/dist/dev/ui/volume-slider/index.d.ts +2 -0
  367. package/dist/dev/ui/volume-slider/index.js +3 -0
  368. package/dist/dev/ui/volume-slider/index.parts.d.ts +14 -0
  369. package/dist/dev/ui/volume-slider/index.parts.d.ts.map +1 -0
  370. package/dist/dev/ui/volume-slider/index.parts.js +19 -0
  371. package/dist/dev/ui/volume-slider/index.parts.js.map +1 -0
  372. package/dist/dev/ui/volume-slider/volume-slider-root.d.ts +17 -0
  373. package/dist/dev/ui/volume-slider/volume-slider-root.d.ts.map +1 -0
  374. package/dist/dev/ui/volume-slider/volume-slider-root.js +89 -0
  375. package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -0
  376. package/dist/dev/utils/use-force-render.js +13 -0
  377. package/dist/dev/utils/use-force-render.js.map +1 -0
  378. package/dist/dev/utils/use-latest-ref.js +20 -0
  379. package/dist/dev/utils/use-latest-ref.js.map +1 -0
  380. package/dist/dev/utils/use-safe-id.js +22 -0
  381. package/dist/dev/utils/use-safe-id.js.map +1 -0
  382. package/package.json +11 -20
@@ -0,0 +1,71 @@
1
+ 'use client';
2
+
3
+ import { renderElement } from "../../utils/use-render.js";
4
+ import { useSlider } from "../hooks/use-slider.js";
5
+ import { SliderProvider } from "./context.js";
6
+ import { getSliderCSSVars } from "@videojs/core/dom";
7
+ import { forwardRef, useState } from "react";
8
+ import { jsx } from "react/jsx-runtime";
9
+ import { SliderCore, SliderDataAttrs } from "@videojs/core";
10
+
11
+ //#region src/ui/slider/slider-root.tsx
12
+ const SliderRoot = forwardRef(function SliderRoot(componentProps, forwardedRef) {
13
+ const { render, className, style, label, min, max, step, largeStep, orientation, disabled, thumbAlignment, value = 0, onValueChange, onValueCommit, onDragStart, onDragEnd, ...elementProps } = componentProps;
14
+ const [core] = useState(() => new SliderCore());
15
+ core.setProps({
16
+ label,
17
+ min,
18
+ max,
19
+ step,
20
+ largeStep,
21
+ orientation,
22
+ disabled,
23
+ thumbAlignment
24
+ });
25
+ const { state, cssVars, rootRef, thumbRef: sliderThumbRef, rootProps, thumbProps } = useSlider({
26
+ computeState: (input) => {
27
+ core.setInput(input);
28
+ return core.getSliderState(value);
29
+ },
30
+ getPercent: () => core.percentFromValue(value),
31
+ getStepPercent: () => core.getStepPercent(),
32
+ getLargeStepPercent: () => core.getLargeStepPercent(),
33
+ orientation,
34
+ disabled,
35
+ adjustPercent: (rawPercent, thumbSize, trackSize) => core.adjustPercentForAlignment(rawPercent, thumbSize, trackSize),
36
+ getCSSVars: getSliderCSSVars,
37
+ onValueChange: (percent) => onValueChange?.(core.valueFromPercent(percent)),
38
+ onValueCommit: (percent) => onValueCommit?.(core.valueFromPercent(percent)),
39
+ onDragStart,
40
+ onDragEnd
41
+ });
42
+ return /* @__PURE__ */ jsx(SliderProvider, {
43
+ value: {
44
+ state,
45
+ pointerValue: core.valueFromPercent(state.pointerPercent),
46
+ thumbRef: sliderThumbRef,
47
+ thumbProps,
48
+ stateAttrMap: SliderDataAttrs,
49
+ getAttrs: (sliderState) => core.getAttrs(sliderState),
50
+ formatValue: void 0
51
+ },
52
+ children: renderElement("div", {
53
+ render,
54
+ className,
55
+ style
56
+ }, {
57
+ state,
58
+ stateAttrMap: SliderDataAttrs,
59
+ ref: [forwardedRef, rootRef],
60
+ props: [
61
+ { style: cssVars },
62
+ rootProps,
63
+ elementProps
64
+ ]
65
+ })
66
+ });
67
+ });
68
+
69
+ //#endregion
70
+ export { SliderRoot };
71
+ //# sourceMappingURL=slider-root.js.map
@@ -0,0 +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 type { ForwardedRef } from 'react';\nimport { forwardRef, useState } from 'react';\n\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 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 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) => core.getAttrs(sliderState),\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 }, 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":";;;;;;;;;;;AAmBA,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,YAAY,CAAC;AAC/C,MAAK,SAAS;EAAE;EAAO;EAAK;EAAK;EAAM;EAAW;EAAa;EAAU;EAAgB,CAAC;CAE1F,MAAM,EACJ,OACA,SACA,SACA,UAAU,gBACV,WACA,eACE,UAAU;EACZ,eAAe,UAAU;AACvB,QAAK,SAAS,MAAM;AACpB,UAAO,KAAK,eAAe,MAAM;;EAEnC,kBAAkB,KAAK,iBAAiB,MAAM;EAC9C,sBAAsB,KAAK,gBAAgB;EAC3C,2BAA2B,KAAK,qBAAqB;EACrD;EACA;EACA,gBAAgB,YAAY,WAAW,cACrC,KAAK,0BAA0B,YAAY,WAAW,UAAU;EAClE,YAAY;EACZ,gBAAgB,YAAY,gBAAgB,KAAK,iBAAiB,QAAQ,CAAC;EAC3E,gBAAgB,YAAY,gBAAgB,KAAK,iBAAiB,QAAQ,CAAC;EAC3E;EACA;EACD,CAAC;AAEF,QACE,oBAAC;EACC,OAAO;GACL;GACA,cAAc,KAAK,iBAAiB,MAAM,eAAe;GACzD,UAAU;GACV;GACA,cAAc;GACd,WAAW,gBAAgB,KAAK,SAAS,YAAY;GACrD,aAAa;GACd;YAEA,cACC,OACA;GAAE;GAAQ;GAAW;GAAO,EAC5B;GACE;GACA,cAAc;GACd,KAAK,CAAC,cAAc,QAAQ;GAC5B,OAAO;IAAC,EAAE,OAAO,SAAS;IAAE;IAAW;IAAa;GACrD,CACF;GACc;EAEnB"}
@@ -0,0 +1,14 @@
1
+ import { UIComponentProps } from "../../utils/types.js";
2
+ import * as react from "react";
3
+ import { SliderState } from "@videojs/core";
4
+
5
+ //#region src/ui/slider/slider-thumb.d.ts
6
+ interface SliderThumbProps extends UIComponentProps<'div', SliderState> {}
7
+ /** Draggable handle for setting the slider value. Receives focus and handles keyboard interaction. */
8
+ declare const SliderThumb: react.ForwardRefExoticComponent<Omit<SliderThumbProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
9
+ declare namespace SliderThumb {
10
+ type Props = SliderThumbProps;
11
+ }
12
+ //#endregion
13
+ export { SliderThumb, SliderThumbProps };
14
+ //# sourceMappingURL=slider-thumb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider-thumb.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-thumb.tsx"],"mappings":";;;;;UAUiB,gBAAA,SAAyB,gBAAA,QAAwB,WAAA;;cAGrD,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,gBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBAsBP,WAAA;EAAA,KACH,KAAA,GAAQ,gBAAA;AAAA"}
@@ -0,0 +1,32 @@
1
+ 'use client';
2
+
3
+ import { renderElement } from "../../utils/use-render.js";
4
+ import { useSliderContext } from "./context.js";
5
+ import { forwardRef } from "react";
6
+
7
+ //#region src/ui/slider/slider-thumb.tsx
8
+ /** Draggable handle for setting the slider value. Receives focus and handles keyboard interaction. */
9
+ const SliderThumb = forwardRef(function SliderThumb(componentProps, forwardedRef) {
10
+ const { render, className, style, ...elementProps } = componentProps;
11
+ const context = useSliderContext();
12
+ const { state, thumbRef, thumbProps, getAttrs } = context;
13
+ const attrs = getAttrs(state);
14
+ return renderElement("div", {
15
+ render,
16
+ className,
17
+ style
18
+ }, {
19
+ state,
20
+ stateAttrMap: context.stateAttrMap,
21
+ ref: [forwardedRef, thumbRef],
22
+ props: [
23
+ attrs,
24
+ thumbProps,
25
+ elementProps
26
+ ]
27
+ });
28
+ });
29
+
30
+ //#endregion
31
+ export { SliderThumb };
32
+ //# sourceMappingURL=slider-thumb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider-thumb.js","names":[],"sources":["../../../../src/ui/slider/slider-thumb.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 SliderThumbProps extends UIComponentProps<'div', SliderState> {}\n\n/** Draggable handle for setting the slider value. Receives focus and handles keyboard interaction. */\nexport const SliderThumb = forwardRef(function SliderThumb(\n componentProps: SliderThumbProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const { render, className, style, ...elementProps } = componentProps;\n\n const context = useSliderContext();\n const { state, thumbRef, thumbProps, getAttrs } = context;\n const attrs = getAttrs(state);\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: context.stateAttrMap,\n ref: [forwardedRef, thumbRef],\n props: [attrs, thumbProps, elementProps],\n }\n );\n});\n\nexport namespace SliderThumb {\n export type Props = SliderThumbProps;\n}\n"],"mappings":";;;;;;;;AAaA,MAAa,cAAc,WAAW,SAAS,YAC7C,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,GAAG,iBAAiB;CAEtD,MAAM,UAAU,kBAAkB;CAClC,MAAM,EAAE,OAAO,UAAU,YAAY,aAAa;CAClD,MAAM,QAAQ,SAAS,MAAM;AAE7B,QAAO,cACL,OACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc,QAAQ;EACtB,KAAK,CAAC,cAAc,SAAS;EAC7B,OAAO;GAAC;GAAO;GAAY;GAAa;EACzC,CACF;EACD"}
@@ -0,0 +1,14 @@
1
+ import { UIComponentProps } from "../../utils/types.js";
2
+ import * as react from "react";
3
+ import { SliderState } from "@videojs/core";
4
+
5
+ //#region src/ui/slider/slider-track.d.ts
6
+ interface SliderTrackProps extends UIComponentProps<'div', SliderState> {}
7
+ /** Contains the slider's visual track and interactive hit zone. */
8
+ declare const SliderTrack: react.ForwardRefExoticComponent<SliderTrackProps>;
9
+ declare namespace SliderTrack {
10
+ type Props = SliderTrackProps;
11
+ }
12
+ //#endregion
13
+ export { SliderTrack, SliderTrackProps };
14
+ //# sourceMappingURL=slider-track.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider-track.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-track.tsx"],"mappings":";;;;;UAQiB,gBAAA,SAAyB,gBAAA,QAAwB,WAAA;;cAGrD,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,gBAAA;AAAA,kBAMP,WAAA;EAAA,KACH,KAAA,GAAQ,gBAAA;AAAA"}
@@ -0,0 +1,16 @@
1
+ 'use client';
2
+
3
+ import { createContextPart } from "../create-context-part.js";
4
+ import { useSliderContext } from "./context.js";
5
+
6
+ //#region src/ui/slider/slider-track.tsx
7
+ /** Contains the slider's visual track and interactive hit zone. */
8
+ const SliderTrack = createContextPart({
9
+ displayName: "SliderTrack",
10
+ tag: "div",
11
+ useContext: useSliderContext
12
+ });
13
+
14
+ //#endregion
15
+ export { SliderTrack };
16
+ //# sourceMappingURL=slider-track.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider-track.js","names":[],"sources":["../../../../src/ui/slider/slider-track.tsx"],"sourcesContent":["'use client';\n\nimport type { SliderState } from '@videojs/core';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { createContextPart } from '../create-context-part';\nimport { useSliderContext } from './context';\n\nexport interface SliderTrackProps extends UIComponentProps<'div', SliderState> {}\n\n/** Contains the slider's visual track and interactive hit zone. */\nexport const SliderTrack = createContextPart<SliderTrackProps, SliderState>({\n displayName: 'SliderTrack',\n tag: 'div',\n useContext: useSliderContext,\n});\n\nexport namespace SliderTrack {\n export type Props = SliderTrackProps;\n}\n"],"mappings":";;;;;;;AAWA,MAAa,cAAc,kBAAiD;CAC1E,aAAa;CACb,KAAK;CACL,YAAY;CACb,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { UIComponentProps } from "../../utils/types.js";
2
+ import * as react from "react";
3
+ import { SliderState } from "@videojs/core";
4
+
5
+ //#region src/ui/slider/slider-value.d.ts
6
+ interface SliderValueProps extends UIComponentProps<'output', SliderState> {
7
+ /** Which slider value to display: the current position or the pointer position. */
8
+ type?: 'current' | 'pointer' | undefined;
9
+ /** Custom formatter for the displayed value. Overrides the root's `formatValue`. */
10
+ format?: ((value: number) => string) | undefined;
11
+ }
12
+ /** Displays a formatted text representation of the slider value. Renders an `<output>` element. */
13
+ declare const SliderValue: react.ForwardRefExoticComponent<Omit<SliderValueProps, "ref"> & react.RefAttributes<HTMLOutputElement>>;
14
+ declare namespace SliderValue {
15
+ type Props = SliderValueProps;
16
+ }
17
+ //#endregion
18
+ export { SliderValue, SliderValueProps };
19
+ //# sourceMappingURL=slider-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider-value.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-value.tsx"],"mappings":";;;;;UAUiB,gBAAA,SAAyB,gBAAA,WAA2B,WAAA;;EAEnE,IAAA;EAFe;EAIf,MAAA,KAAW,KAAA;AAAA;;cAIA,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,gBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,kBAyBP,WAAA;EAAA,KACH,KAAA,GAAQ,gBAAA;AAAA"}
@@ -0,0 +1,32 @@
1
+ 'use client';
2
+
3
+ import { renderElement } from "../../utils/use-render.js";
4
+ import { useSliderContext } from "./context.js";
5
+ import { forwardRef } from "react";
6
+
7
+ //#region src/ui/slider/slider-value.tsx
8
+ /** Displays a formatted text representation of the slider value. Renders an `<output>` element. */
9
+ const SliderValue = forwardRef(function SliderValue(componentProps, forwardedRef) {
10
+ const { render, className, style, type = "current", format, ...elementProps } = componentProps;
11
+ const context = useSliderContext();
12
+ const { state, pointerValue, formatValue } = context;
13
+ const rawValue = type === "pointer" ? pointerValue : state.value;
14
+ const text = format ? format(rawValue) : formatValue ? formatValue(rawValue, type) : String(Math.round(rawValue));
15
+ return renderElement("output", {
16
+ render,
17
+ className,
18
+ style
19
+ }, {
20
+ state,
21
+ stateAttrMap: context.stateAttrMap,
22
+ ref: forwardedRef,
23
+ props: [{
24
+ "aria-live": "off",
25
+ children: text
26
+ }, elementProps]
27
+ });
28
+ });
29
+
30
+ //#endregion
31
+ export { SliderValue };
32
+ //# sourceMappingURL=slider-value.js.map
@@ -0,0 +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,kBAAkB;CAClC,MAAM,EAAE,OAAO,cAAc,gBAAgB;CAE7C,MAAM,WAAW,SAAS,YAAY,eAAe,MAAM;CAE3D,MAAM,OAAO,SAAS,OAAO,SAAS,GAAG,cAAc,YAAY,UAAU,KAAK,GAAG,OAAO,KAAK,MAAM,SAAS,CAAC;AAEjH,QAAO,cACL,UACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc,QAAQ;EACtB,KAAK;EACL,OAAO,CAAC;GAAE,aAAa;GAAO,UAAU;GAAM,EAAE,aAAa;EAC9D,CACF;EACD"}
@@ -0,0 +1,17 @@
1
+ import { UIComponentProps } from "../../utils/types.js";
2
+ import * as react from "react";
3
+ import { ThumbnailCore, ThumbnailImage } from "@videojs/core";
4
+
5
+ //#region src/ui/thumbnail/thumbnail.d.ts
6
+ interface ThumbnailProps extends UIComponentProps<'div', ThumbnailCore.State>, ThumbnailCore.Props {
7
+ /** Pre-parsed thumbnail images — bypasses the automatic `<track>` detection. */
8
+ thumbnails?: ThumbnailImage[] | undefined;
9
+ }
10
+ declare const Thumbnail: react.ForwardRefExoticComponent<Omit<ThumbnailProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
11
+ declare namespace Thumbnail {
12
+ type Props = ThumbnailProps;
13
+ type State = ThumbnailCore.State;
14
+ }
15
+ //#endregion
16
+ export { Thumbnail, ThumbnailProps };
17
+ //# sourceMappingURL=thumbnail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thumbnail.d.ts","names":[],"sources":["../../../../src/ui/thumbnail/thumbnail.tsx"],"mappings":";;;;;UAiBiB,cAAA,SAAuB,gBAAA,QAAwB,aAAA,CAAc,KAAA,GAAQ,aAAA,CAAc,KAAA;;EAElG,UAAA,GAAa,cAAA;AAAA;AAAA,cAGF,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,cAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBAwGL,SAAA;EAAA,KACH,KAAA,GAAQ,cAAA;EAAA,KACR,KAAA,GAAQ,aAAA,CAAc,KAAA;AAAA"}
@@ -0,0 +1,87 @@
1
+ 'use client';
2
+
3
+ import { useOptionalPlayer } from "../../player/context.js";
4
+ import { renderElement } from "../../utils/use-render.js";
5
+ import { createThumbnail, selectTextTrack } from "@videojs/core/dom";
6
+ import { forwardRef, useEffect, useMemo, useRef, useState } from "react";
7
+ import { jsx } from "react/jsx-runtime";
8
+ import { ThumbnailCore, ThumbnailDataAttrs, mapCuesToThumbnails } from "@videojs/core";
9
+
10
+ //#region src/ui/thumbnail/thumbnail.tsx
11
+ const Thumbnail = forwardRef(function Thumbnail(componentProps, forwardedRef) {
12
+ const { render, className, style, time = 0, thumbnails: externalThumbnails, crossOrigin, loading, fetchPriority, ...elementProps } = componentProps;
13
+ const [core] = useState(() => new ThumbnailCore());
14
+ const divRef = useRef(null);
15
+ const imgRef = useRef(null);
16
+ const textTrack = useOptionalPlayer(selectTextTrack);
17
+ const [, setRenderToken] = useState(0);
18
+ const [handle] = useState(() => createThumbnail({
19
+ getContainer: () => divRef.current,
20
+ getImg: () => imgRef.current,
21
+ onStateChange: () => setRenderToken((n) => n + 1)
22
+ }));
23
+ useEffect(() => {
24
+ handle.connect();
25
+ return () => handle.destroy();
26
+ }, [handle]);
27
+ const thumbnails = useMemo(() => {
28
+ if (externalThumbnails && externalThumbnails.length > 0) return externalThumbnails;
29
+ if (!textTrack?.thumbnailCues.length) return [];
30
+ return mapCuesToThumbnails(textTrack.thumbnailCues, textTrack.thumbnailTrackSrc ?? void 0);
31
+ }, [externalThumbnails, textTrack]);
32
+ const thumbnail = useMemo(() => core.findActiveThumbnail(thumbnails, time), [
33
+ core,
34
+ thumbnails,
35
+ time
36
+ ]);
37
+ handle.updateSrc(thumbnail?.url);
38
+ const state = core.getState(handle.loading, handle.error, thumbnail);
39
+ let containerStyle = { overflow: "hidden" };
40
+ let imgStyle;
41
+ if (thumbnail && handle.naturalWidth && handle.naturalHeight) {
42
+ const constraints = handle.readConstraints();
43
+ const result = core.resize(thumbnail, handle.naturalWidth, handle.naturalHeight, constraints);
44
+ if (result) {
45
+ containerStyle = {
46
+ overflow: "hidden",
47
+ width: result.containerWidth,
48
+ height: result.containerHeight
49
+ };
50
+ imgStyle = {
51
+ width: result.imageWidth,
52
+ height: result.imageHeight,
53
+ maxWidth: "none",
54
+ transform: result.offsetX || result.offsetY ? `translate(-${result.offsetX}px, -${result.offsetY}px)` : void 0
55
+ };
56
+ }
57
+ }
58
+ return renderElement("div", {
59
+ render,
60
+ className,
61
+ style
62
+ }, {
63
+ state,
64
+ stateAttrMap: ThumbnailDataAttrs,
65
+ ref: [forwardedRef, divRef],
66
+ props: [
67
+ core.getAttrs(state),
68
+ { style: containerStyle },
69
+ elementProps,
70
+ { children: /* @__PURE__ */ jsx("img", {
71
+ ref: imgRef,
72
+ alt: "",
73
+ "aria-hidden": "true",
74
+ decoding: "async",
75
+ src: thumbnail?.url,
76
+ crossOrigin: crossOrigin === "" || crossOrigin === null ? void 0 : crossOrigin,
77
+ loading,
78
+ style: imgStyle,
79
+ fetchPriority
80
+ }) }
81
+ ]
82
+ });
83
+ });
84
+
85
+ //#endregion
86
+ export { Thumbnail };
87
+ //# sourceMappingURL=thumbnail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thumbnail.js","names":[],"sources":["../../../../src/ui/thumbnail/thumbnail.tsx"],"sourcesContent":["'use client';\n\nimport {\n mapCuesToThumbnails,\n ThumbnailCore,\n ThumbnailDataAttrs,\n type ThumbnailFetchPriority,\n type ThumbnailImage,\n} from '@videojs/core';\nimport { createThumbnail, selectTextTrack } from '@videojs/core/dom';\nimport type { CSSProperties } from 'react';\nimport { forwardRef, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useOptionalPlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\n\nexport interface ThumbnailProps extends UIComponentProps<'div', ThumbnailCore.State>, ThumbnailCore.Props {\n /** Pre-parsed thumbnail images — bypasses the automatic `<track>` detection. */\n thumbnails?: ThumbnailImage[] | undefined;\n}\n\nexport const Thumbnail = forwardRef<HTMLDivElement, ThumbnailProps>(function Thumbnail(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n time = 0,\n thumbnails: externalThumbnails,\n crossOrigin,\n loading,\n fetchPriority,\n ...elementProps\n } = componentProps;\n\n const [core] = useState(() => new ThumbnailCore());\n const divRef = useRef<HTMLDivElement>(null);\n const imgRef = useRef<HTMLImageElement>(null);\n const textTrack = useOptionalPlayer(selectTextTrack);\n\n // Force re-render when the handle's state changes (img load/error, resize).\n const [, setRenderToken] = useState(0);\n\n const [handle] = useState(() =>\n createThumbnail({\n getContainer: () => divRef.current,\n getImg: () => imgRef.current,\n onStateChange: () => setRenderToken((n) => n + 1),\n })\n );\n\n useEffect(() => {\n handle.connect();\n return () => handle.destroy();\n }, [handle]);\n\n // Resolve thumbnails: external prop takes priority over auto <track> path.\n const thumbnails = useMemo(() => {\n if (externalThumbnails && externalThumbnails.length > 0) return externalThumbnails;\n if (!textTrack?.thumbnailCues.length) return [];\n return mapCuesToThumbnails(textTrack.thumbnailCues, textTrack.thumbnailTrackSrc ?? undefined);\n }, [externalThumbnails, textTrack]);\n\n const thumbnail = useMemo(() => core.findActiveThumbnail(thumbnails, time), [core, thumbnails, time]);\n\n // Track src changes via the handle.\n handle.updateSrc(thumbnail?.url);\n\n const state = core.getState(handle.loading, handle.error, thumbnail);\n\n // Compute styles declaratively from resize result.\n let containerStyle: CSSProperties = { overflow: 'hidden' };\n let imgStyle: CSSProperties | undefined;\n\n if (thumbnail && handle.naturalWidth && handle.naturalHeight) {\n const constraints = handle.readConstraints();\n const result = core.resize(thumbnail, handle.naturalWidth, handle.naturalHeight, constraints);\n\n if (result) {\n containerStyle = {\n overflow: 'hidden',\n width: result.containerWidth,\n height: result.containerHeight,\n };\n imgStyle = {\n width: result.imageWidth,\n height: result.imageHeight,\n maxWidth: 'none',\n transform:\n result.offsetX || result.offsetY ? `translate(-${result.offsetX}px, -${result.offsetY}px)` : undefined,\n };\n }\n }\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: ThumbnailDataAttrs,\n ref: [forwardedRef, divRef],\n props: [\n core.getAttrs(state),\n { style: containerStyle },\n elementProps,\n {\n children: (\n <img\n ref={imgRef}\n alt=\"\"\n aria-hidden=\"true\"\n decoding=\"async\"\n src={thumbnail?.url}\n crossOrigin={crossOrigin === '' || crossOrigin === null ? undefined : crossOrigin}\n loading={loading}\n style={imgStyle}\n // React's types omit `| undefined` from fetchPriority — cast to satisfy exactOptionalPropertyTypes.\n fetchPriority={fetchPriority as ThumbnailFetchPriority}\n />\n ),\n },\n ],\n }\n );\n});\n\nexport namespace Thumbnail {\n export type Props = ThumbnailProps;\n export type State = ThumbnailCore.State;\n}\n"],"mappings":";;;;;;;;;;AAsBA,MAAa,YAAY,WAA2C,SAAS,UAAU,gBAAgB,cAAc;CACnH,MAAM,EACJ,QACA,WACA,OACA,OAAO,GACP,YAAY,oBACZ,aACA,SACA,eACA,GAAG,iBACD;CAEJ,MAAM,CAAC,QAAQ,eAAe,IAAI,eAAe,CAAC;CAClD,MAAM,SAAS,OAAuB,KAAK;CAC3C,MAAM,SAAS,OAAyB,KAAK;CAC7C,MAAM,YAAY,kBAAkB,gBAAgB;CAGpD,MAAM,GAAG,kBAAkB,SAAS,EAAE;CAEtC,MAAM,CAAC,UAAU,eACf,gBAAgB;EACd,oBAAoB,OAAO;EAC3B,cAAc,OAAO;EACrB,qBAAqB,gBAAgB,MAAM,IAAI,EAAE;EAClD,CAAC,CACH;AAED,iBAAgB;AACd,SAAO,SAAS;AAChB,eAAa,OAAO,SAAS;IAC5B,CAAC,OAAO,CAAC;CAGZ,MAAM,aAAa,cAAc;AAC/B,MAAI,sBAAsB,mBAAmB,SAAS,EAAG,QAAO;AAChE,MAAI,CAAC,WAAW,cAAc,OAAQ,QAAO,EAAE;AAC/C,SAAO,oBAAoB,UAAU,eAAe,UAAU,qBAAqB,OAAU;IAC5F,CAAC,oBAAoB,UAAU,CAAC;CAEnC,MAAM,YAAY,cAAc,KAAK,oBAAoB,YAAY,KAAK,EAAE;EAAC;EAAM;EAAY;EAAK,CAAC;AAGrG,QAAO,UAAU,WAAW,IAAI;CAEhC,MAAM,QAAQ,KAAK,SAAS,OAAO,SAAS,OAAO,OAAO,UAAU;CAGpE,IAAI,iBAAgC,EAAE,UAAU,UAAU;CAC1D,IAAI;AAEJ,KAAI,aAAa,OAAO,gBAAgB,OAAO,eAAe;EAC5D,MAAM,cAAc,OAAO,iBAAiB;EAC5C,MAAM,SAAS,KAAK,OAAO,WAAW,OAAO,cAAc,OAAO,eAAe,YAAY;AAE7F,MAAI,QAAQ;AACV,oBAAiB;IACf,UAAU;IACV,OAAO,OAAO;IACd,QAAQ,OAAO;IAChB;AACD,cAAW;IACT,OAAO,OAAO;IACd,QAAQ,OAAO;IACf,UAAU;IACV,WACE,OAAO,WAAW,OAAO,UAAU,cAAc,OAAO,QAAQ,OAAO,OAAO,QAAQ,OAAO;IAChG;;;AAIL,QAAO,cACL,OACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc;EACd,KAAK,CAAC,cAAc,OAAO;EAC3B,OAAO;GACL,KAAK,SAAS,MAAM;GACpB,EAAE,OAAO,gBAAgB;GACzB;GACA,EACE,UACE,oBAAC;IACC,KAAK;IACL,KAAI;IACJ,eAAY;IACZ,UAAS;IACT,KAAK,WAAW;IAChB,aAAa,gBAAgB,MAAM,gBAAgB,OAAO,SAAY;IAC7D;IACT,OAAO;IAEQ;KACf,EAEL;GACF;EACF,CACF;EACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"time-value.d.ts","names":[],"sources":["../../../../src/ui/time/time-value.tsx"],"mappings":";;;;;UAWiB,UAAA,SAAmB,IAAA,CAAK,gBAAA,SAAyB,QAAA,CAAS,KAAA,gBAAqB,QAAA,CAAS,KAAA;;AAAzG;;;;;;;;;cAYa,KAAA,EAAK,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,UAAA,WAAA,KAAA,CAAA,aAAA,CAAA,eAAA;AAAA,kBA8CD,KAAA;EAAA,KACH,KAAA,GAAQ,UAAA;EAAA,KACR,KAAA,GAAQ,QAAA,CAAS,KAAA;AAAA"}
1
+ {"version":3,"file":"time-value.d.ts","names":[],"sources":["../../../../src/ui/time/time-value.tsx"],"mappings":";;;;;UAWiB,UAAA,SAAmB,IAAA,CAAK,gBAAA,SAAyB,QAAA,CAAS,KAAA,gBAAqB,QAAA,CAAS,KAAA;;AAAzG;;;;;;;;;cAYa,KAAA,EAAK,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,UAAA,WAAA,KAAA,CAAA,aAAA,CAAA,eAAA;AAAA,kBA+CD,KAAA;EAAA,KACH,KAAA,GAAQ,UAAA;EAAA,KACR,KAAA,GAAQ,QAAA,CAAS,KAAA;AAAA"}
@@ -31,7 +31,8 @@ const Value = forwardRef(function Value(componentProps, forwardedRef) {
31
31
  logMissingFeature("Time.Value", "time");
32
32
  return null;
33
33
  }
34
- const state = core.getState(time);
34
+ core.setMedia(time);
35
+ const state = core.getState();
35
36
  const content = state.negative ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
36
37
  "aria-hidden": "true",
37
38
  children: negativeSign ?? TimeCore.defaultProps.negativeSign
@@ -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 type { ForwardedRef } from 'react';\nimport { forwardRef, useState } from 'react';\n\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, ...elementProps } = componentProps;\n\n const time = usePlayer(selectTime);\n\n const [core] = useState(() => new TimeCore());\n core.setProps({ type, negativeSign, label });\n\n if (!time) {\n if (__DEV__) logMissingFeature('Time.Value', 'time');\n return null;\n }\n\n const state = core.getState(time);\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 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 ...core.getAttrs(state),\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":";;;;;;;;;;;;;;;;;;;;AAuBA,MAAa,QAAQ,WAAW,SAAS,MACvC,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,MAAM,cAAc,OAAO,GAAG,iBAAiB;CAEjF,MAAM,OAAO,UAAU,WAAW;CAElC,MAAM,CAAC,QAAQ,eAAe,IAAI,UAAU,CAAC;AAC7C,MAAK,SAAS;EAAE;EAAM;EAAc;EAAO,CAAC;AAE5C,KAAI,CAAC,MAAM;AACI,oBAAkB,cAAc,OAAO;AACpD,SAAO;;CAGT,MAAM,QAAQ,KAAK,SAAS,KAAK;CAEjC,MAAM,UAAU,MAAM,WACpB,4CACE,oBAAC;EAAK,eAAY;YAAQ,gBAAgB,SAAS,aAAa;GAAoB,EACnF,MAAM,QACN,GAEH,MAAM;AAGR,QAAO,cACL,QACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc;EACd,KAAK,CAAC,aAAa;EACnB,OAAO,CACL;GACE,UAAU,MAAM;GAChB,UAAU;GACV,GAAG,KAAK,SAAS,MAAM;GACxB,EACD,aACD;EACF,CACF;EACD"}
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 type { ForwardedRef } from 'react';\nimport { forwardRef, useState } from 'react';\n\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, ...elementProps } = componentProps;\n\n const time = usePlayer(selectTime);\n\n const [core] = useState(() => new TimeCore());\n core.setProps({ type, negativeSign, label });\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\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 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 ...core.getAttrs(state),\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":";;;;;;;;;;;;;;;;;;;;AAuBA,MAAa,QAAQ,WAAW,SAAS,MACvC,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,MAAM,cAAc,OAAO,GAAG,iBAAiB;CAEjF,MAAM,OAAO,UAAU,WAAW;CAElC,MAAM,CAAC,QAAQ,eAAe,IAAI,UAAU,CAAC;AAC7C,MAAK,SAAS;EAAE;EAAM;EAAc;EAAO,CAAC;AAE5C,KAAI,CAAC,MAAM;AACI,oBAAkB,cAAc,OAAO;AACpD,SAAO;;AAGT,MAAK,SAAS,KAAK;CACnB,MAAM,QAAQ,KAAK,UAAU;CAE7B,MAAM,UAAU,MAAM,WACpB,4CACE,oBAAC;EAAK,eAAY;YAAQ,gBAAgB,SAAS,aAAa;GAAoB,EACnF,MAAM,QACN,GAEH,MAAM;AAGR,QAAO,cACL,QACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc;EACd,KAAK,CAAC,aAAa;EACnB,OAAO,CACL;GACE,UAAU,MAAM;GAChB,UAAU;GACV,GAAG,KAAK,SAAS,MAAM;GACxB,EACD,aACD;EACF,CACF;EACD"}
@@ -0,0 +1,2 @@
1
+ import { index_parts_d_exports } from "./index.parts.js";
2
+ export { index_parts_d_exports as TimeSlider };
@@ -0,0 +1,3 @@
1
+ import { index_parts_exports } from "./index.parts.js";
2
+
3
+ export { index_parts_exports as TimeSlider };
@@ -0,0 +1,15 @@
1
+ import { SliderBuffer, SliderBufferProps } from "../slider/slider-buffer.js";
2
+ import { SliderFill, SliderFillProps } from "../slider/slider-fill.js";
3
+ import { SliderThumb, SliderThumbProps } from "../slider/slider-thumb.js";
4
+ import { SliderTrack, SliderTrackProps } from "../slider/slider-track.js";
5
+ import { SliderValue, SliderValueProps } from "../slider/slider-value.js";
6
+ import "../slider/index.parts.js";
7
+ import { TimeSliderRoot, TimeSliderRootProps } from "./time-slider-root.js";
8
+
9
+ //#region src/ui/time-slider/index.parts.d.ts
10
+ declare namespace index_parts_d_exports {
11
+ export { SliderBuffer as Buffer, SliderBufferProps as BufferProps, SliderFill as Fill, SliderFillProps as FillProps, 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
+ }
13
+ //#endregion
14
+ export { index_parts_d_exports };
15
+ //# sourceMappingURL=index.parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.parts.d.ts","names":[],"sources":["../../../../src/ui/time-slider/index.parts.ts"],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
2
+ import { SliderBuffer } from "../slider/slider-buffer.js";
3
+ import { SliderFill } from "../slider/slider-fill.js";
4
+ import { SliderThumb } from "../slider/slider-thumb.js";
5
+ import { SliderTrack } from "../slider/slider-track.js";
6
+ import { SliderValue } from "../slider/slider-value.js";
7
+ import { TimeSliderRoot } from "./time-slider-root.js";
8
+
9
+ //#region src/ui/time-slider/index.parts.ts
10
+ var index_parts_exports = /* @__PURE__ */ __exportAll({
11
+ Buffer: () => SliderBuffer,
12
+ Fill: () => SliderFill,
13
+ Root: () => TimeSliderRoot,
14
+ Thumb: () => SliderThumb,
15
+ Track: () => SliderTrack,
16
+ Value: () => SliderValue
17
+ });
18
+
19
+ //#endregion
20
+ export { index_parts_exports };
21
+ //# sourceMappingURL=index.parts.js.map
@@ -0,0 +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 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":""}
@@ -0,0 +1,17 @@
1
+ import { UIComponentProps } from "../../utils/types.js";
2
+ import * as react from "react";
3
+ import { TimeSliderCore } from "@videojs/core";
4
+
5
+ //#region src/ui/time-slider/time-slider-root.d.ts
6
+ interface TimeSliderRootProps extends UIComponentProps<'div', TimeSliderCore.State>, TimeSliderCore.Props {
7
+ onDragStart?: (() => void) | undefined;
8
+ onDragEnd?: (() => void) | undefined;
9
+ }
10
+ declare const TimeSliderRoot: react.ForwardRefExoticComponent<Omit<TimeSliderRootProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
11
+ declare namespace TimeSliderRoot {
12
+ type Props = TimeSliderRootProps;
13
+ type State = TimeSliderCore.State;
14
+ }
15
+ //#endregion
16
+ export { TimeSliderRoot, TimeSliderRootProps };
17
+ //# sourceMappingURL=time-slider-root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-slider-root.d.ts","names":[],"sources":["../../../../src/ui/time-slider/time-slider-root.tsx"],"mappings":";;;;;UAgBiB,mBAAA,SAA4B,gBAAA,QAAwB,cAAA,CAAe,KAAA,GAAQ,cAAA,CAAe,KAAA;EACzG,WAAA;EACA,SAAA;AAAA;AAAA,cAGW,cAAA,EAAc,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,mBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBAgGV,cAAA;EAAA,KACH,KAAA,GAAQ,mBAAA;EAAA,KACR,KAAA,GAAQ,cAAA,CAAe,KAAA;AAAA"}
@@ -0,0 +1,99 @@
1
+ 'use client';
2
+
3
+ import { usePlayer } from "../../player/context.js";
4
+ import { renderElement } from "../../utils/use-render.js";
5
+ import { useLatestRef } from "../../utils/use-latest-ref.js";
6
+ import { useSlider } from "../hooks/use-slider.js";
7
+ import { SliderProvider } from "../slider/context.js";
8
+ import { getTimeSliderCSSVars, logMissingFeature, selectBuffer, selectTime } from "@videojs/core/dom";
9
+ import { forwardRef, useState } from "react";
10
+ import { jsx } from "react/jsx-runtime";
11
+ import { TimeSliderCore, TimeSliderDataAttrs } from "@videojs/core";
12
+ import { formatTime } from "@videojs/utils/time";
13
+
14
+ //#region src/ui/time-slider/time-slider-root.tsx
15
+ const noopSeek = () => Promise.resolve(0);
16
+ const TimeSliderRoot = forwardRef(function TimeSliderRoot(componentProps, forwardedRef) {
17
+ const { render, className, style, label, commitThrottle = TimeSliderCore.defaultProps.commitThrottle, step = TimeSliderCore.defaultProps.step, largeStep = TimeSliderCore.defaultProps.largeStep, orientation, disabled, thumbAlignment, onDragStart, onDragEnd, ...elementProps } = componentProps;
18
+ const time = usePlayer(selectTime);
19
+ const buffer = usePlayer(selectBuffer);
20
+ const [core] = useState(() => new TimeSliderCore());
21
+ core.setProps({
22
+ label,
23
+ step,
24
+ largeStep,
25
+ orientation,
26
+ disabled,
27
+ thumbAlignment
28
+ });
29
+ const mediaRef = useLatestRef(time && buffer ? {
30
+ ...time,
31
+ ...buffer
32
+ } : null);
33
+ const duration = time?.duration ?? 0;
34
+ const { state, cssVars, rootRef, thumbRef, rootProps, thumbProps } = useSlider({
35
+ computeState: (input) => {
36
+ core.setInput(input);
37
+ if (!time || !buffer) core.setMedia({
38
+ currentTime: 0,
39
+ duration: 0,
40
+ seeking: false,
41
+ seek: noopSeek,
42
+ buffered: [],
43
+ seekable: []
44
+ });
45
+ else core.setMedia({
46
+ ...time,
47
+ ...buffer
48
+ });
49
+ return core.getState();
50
+ },
51
+ getPercent: () => duration > 0 ? (time?.currentTime ?? 0) / duration * 100 : 0,
52
+ getStepPercent: () => core.getStepPercent(),
53
+ getLargeStepPercent: () => core.getLargeStepPercent(),
54
+ orientation,
55
+ disabled,
56
+ commitThrottle,
57
+ adjustPercent: (rawPercent, thumbSize, trackSize) => core.adjustPercentForAlignment(rawPercent, thumbSize, trackSize),
58
+ getCSSVars: getTimeSliderCSSVars,
59
+ onValueCommit: (percent) => {
60
+ const media = mediaRef.current;
61
+ if (media) media.seek(core.valueFromPercent(percent));
62
+ },
63
+ onDragStart,
64
+ onDragEnd
65
+ });
66
+ if (!time) {
67
+ logMissingFeature("TimeSlider", "time");
68
+ return null;
69
+ }
70
+ return /* @__PURE__ */ jsx(SliderProvider, {
71
+ value: {
72
+ state,
73
+ pointerValue: core.valueFromPercent(state.pointerPercent),
74
+ thumbRef,
75
+ thumbProps,
76
+ stateAttrMap: TimeSliderDataAttrs,
77
+ getAttrs: (sliderState) => core.getAttrs(sliderState),
78
+ formatValue: (value) => formatTime(value, duration)
79
+ },
80
+ children: renderElement("div", {
81
+ render,
82
+ className,
83
+ style
84
+ }, {
85
+ state,
86
+ stateAttrMap: TimeSliderDataAttrs,
87
+ ref: [forwardedRef, rootRef],
88
+ props: [
89
+ { style: cssVars },
90
+ rootProps,
91
+ elementProps
92
+ ]
93
+ })
94
+ });
95
+ });
96
+
97
+ //#endregion
98
+ export { TimeSliderRoot };
99
+ //# sourceMappingURL=time-slider-root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-slider-root.js","names":[],"sources":["../../../../src/ui/time-slider/time-slider-root.tsx"],"sourcesContent":["'use client';\n\nimport { TimeSliderCore, TimeSliderDataAttrs } from '@videojs/core';\nimport { getTimeSliderCSSVars, logMissingFeature, selectBuffer, selectTime } from '@videojs/core/dom';\nimport { formatTime } from '@videojs/utils/time';\nimport { forwardRef, useState } from 'react';\n\nimport { usePlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { useLatestRef } from '../../utils/use-latest-ref';\nimport { renderElement } from '../../utils/use-render';\nimport { useSlider } from '../hooks/use-slider';\nimport { SliderProvider } from '../slider/context';\n\nconst noopSeek = (): Promise<number> => Promise.resolve(0);\n\nexport interface TimeSliderRootProps extends UIComponentProps<'div', TimeSliderCore.State>, TimeSliderCore.Props {\n onDragStart?: (() => void) | undefined;\n onDragEnd?: (() => void) | undefined;\n}\n\nexport const TimeSliderRoot = forwardRef<HTMLDivElement, TimeSliderRootProps>(\n function TimeSliderRoot(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n label,\n commitThrottle = TimeSliderCore.defaultProps.commitThrottle,\n step = TimeSliderCore.defaultProps.step,\n largeStep = TimeSliderCore.defaultProps.largeStep,\n orientation,\n disabled,\n thumbAlignment,\n onDragStart,\n onDragEnd,\n ...elementProps\n } = componentProps;\n\n const time = usePlayer(selectTime);\n const buffer = usePlayer(selectBuffer);\n\n const [core] = useState(() => new TimeSliderCore());\n core.setProps({ label, step, largeStep, orientation, disabled, thumbAlignment });\n\n // Keep a ref to the latest media state for callbacks that fire outside the render cycle.\n const mediaRef = useLatestRef(time && buffer ? { ...time, ...buffer } : null);\n\n const duration = time?.duration ?? 0;\n\n const { state, cssVars, rootRef, thumbRef, rootProps, thumbProps } = useSlider<TimeSliderCore.State>({\n computeState: (input) => {\n core.setInput(input);\n if (!time || !buffer) {\n core.setMedia({\n currentTime: 0,\n duration: 0,\n seeking: false,\n seek: noopSeek,\n buffered: [],\n seekable: [],\n });\n } else {\n core.setMedia({ ...time, ...buffer });\n }\n\n return core.getState();\n },\n getPercent: () => (duration > 0 ? ((time?.currentTime ?? 0) / duration) * 100 : 0),\n getStepPercent: () => core.getStepPercent(),\n getLargeStepPercent: () => core.getLargeStepPercent(),\n orientation,\n disabled,\n commitThrottle,\n adjustPercent: (rawPercent, thumbSize, trackSize) =>\n core.adjustPercentForAlignment(rawPercent, thumbSize, trackSize),\n getCSSVars: getTimeSliderCSSVars,\n onValueCommit: (percent) => {\n const media = mediaRef.current;\n if (media) media.seek(core.valueFromPercent(percent));\n },\n onDragStart,\n onDragEnd,\n });\n\n if (!time) {\n if (__DEV__) logMissingFeature('TimeSlider', 'time');\n return null;\n }\n\n return (\n <SliderProvider\n value={{\n state,\n pointerValue: core.valueFromPercent(state.pointerPercent),\n thumbRef,\n thumbProps,\n stateAttrMap: TimeSliderDataAttrs,\n getAttrs: (sliderState) => core.getAttrs(sliderState as TimeSliderCore.State),\n formatValue: (value) => formatTime(value, duration),\n }}\n >\n {renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: TimeSliderDataAttrs,\n ref: [forwardedRef, rootRef],\n props: [{ style: cssVars }, rootProps, elementProps],\n }\n )}\n </SliderProvider>\n );\n }\n);\n\nexport namespace TimeSliderRoot {\n export type Props = TimeSliderRootProps;\n export type State = TimeSliderCore.State;\n}\n"],"mappings":";;;;;;;;;;;;;;AAcA,MAAM,iBAAkC,QAAQ,QAAQ,EAAE;AAO1D,MAAa,iBAAiB,WAC5B,SAAS,eAAe,gBAAgB,cAAc;CACpD,MAAM,EACJ,QACA,WACA,OACA,OACA,iBAAiB,eAAe,aAAa,gBAC7C,OAAO,eAAe,aAAa,MACnC,YAAY,eAAe,aAAa,WACxC,aACA,UACA,gBACA,aACA,WACA,GAAG,iBACD;CAEJ,MAAM,OAAO,UAAU,WAAW;CAClC,MAAM,SAAS,UAAU,aAAa;CAEtC,MAAM,CAAC,QAAQ,eAAe,IAAI,gBAAgB,CAAC;AACnD,MAAK,SAAS;EAAE;EAAO;EAAM;EAAW;EAAa;EAAU;EAAgB,CAAC;CAGhF,MAAM,WAAW,aAAa,QAAQ,SAAS;EAAE,GAAG;EAAM,GAAG;EAAQ,GAAG,KAAK;CAE7E,MAAM,WAAW,MAAM,YAAY;CAEnC,MAAM,EAAE,OAAO,SAAS,SAAS,UAAU,WAAW,eAAe,UAAgC;EACnG,eAAe,UAAU;AACvB,QAAK,SAAS,MAAM;AACpB,OAAI,CAAC,QAAQ,CAAC,OACZ,MAAK,SAAS;IACZ,aAAa;IACb,UAAU;IACV,SAAS;IACT,MAAM;IACN,UAAU,EAAE;IACZ,UAAU,EAAE;IACb,CAAC;OAEF,MAAK,SAAS;IAAE,GAAG;IAAM,GAAG;IAAQ,CAAC;AAGvC,UAAO,KAAK,UAAU;;EAExB,kBAAmB,WAAW,KAAM,MAAM,eAAe,KAAK,WAAY,MAAM;EAChF,sBAAsB,KAAK,gBAAgB;EAC3C,2BAA2B,KAAK,qBAAqB;EACrD;EACA;EACA;EACA,gBAAgB,YAAY,WAAW,cACrC,KAAK,0BAA0B,YAAY,WAAW,UAAU;EAClE,YAAY;EACZ,gBAAgB,YAAY;GAC1B,MAAM,QAAQ,SAAS;AACvB,OAAI,MAAO,OAAM,KAAK,KAAK,iBAAiB,QAAQ,CAAC;;EAEvD;EACA;EACD,CAAC;AAEF,KAAI,CAAC,MAAM;AACI,oBAAkB,cAAc,OAAO;AACpD,SAAO;;AAGT,QACE,oBAAC;EACC,OAAO;GACL;GACA,cAAc,KAAK,iBAAiB,MAAM,eAAe;GACzD;GACA;GACA,cAAc;GACd,WAAW,gBAAgB,KAAK,SAAS,YAAoC;GAC7E,cAAc,UAAU,WAAW,OAAO,SAAS;GACpD;YAEA,cACC,OACA;GAAE;GAAQ;GAAW;GAAO,EAC5B;GACE;GACA,cAAc;GACd,KAAK,CAAC,cAAc,QAAQ;GAC5B,OAAO;IAAC,EAAE,OAAO,SAAS;IAAE;IAAW;IAAa;GACrD,CACF;GACc;EAGtB"}
@@ -0,0 +1,2 @@
1
+ import { index_parts_d_exports } from "./index.parts.js";
2
+ export { index_parts_d_exports as VolumeSlider };
@@ -0,0 +1,3 @@
1
+ import { index_parts_exports } from "./index.parts.js";
2
+
3
+ export { index_parts_exports as VolumeSlider };
@@ -0,0 +1,14 @@
1
+ import { SliderFill, SliderFillProps } from "../slider/slider-fill.js";
2
+ import { SliderThumb, SliderThumbProps } from "../slider/slider-thumb.js";
3
+ import { SliderTrack, SliderTrackProps } from "../slider/slider-track.js";
4
+ import { SliderValue, SliderValueProps } from "../slider/slider-value.js";
5
+ import "../slider/index.parts.js";
6
+ import { VolumeSliderRoot, VolumeSliderRootProps } from "./volume-slider-root.js";
7
+
8
+ //#region src/ui/volume-slider/index.parts.d.ts
9
+ declare namespace index_parts_d_exports {
10
+ export { SliderFill as Fill, SliderFillProps as FillProps, VolumeSliderRoot as Root, VolumeSliderRootProps as RootProps, SliderThumb as Thumb, SliderThumbProps as ThumbProps, SliderTrack as Track, SliderTrackProps as TrackProps, SliderValue as Value, SliderValueProps as ValueProps };
11
+ }
12
+ //#endregion
13
+ export { index_parts_d_exports };
14
+ //# sourceMappingURL=index.parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.parts.d.ts","names":[],"sources":["../../../../src/ui/volume-slider/index.parts.ts"],"mappings":""}