@videojs/react 10.0.0-alpha.9 → 10.0.0-beta.10

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 (444) hide show
  1. package/README.md +2 -2
  2. package/dist/default/icons/dist/react/default/captions-off.js +1 -1
  3. package/dist/default/icons/dist/react/default/captions-off.js.map +1 -1
  4. package/dist/default/icons/dist/react/default/captions-on.js +1 -1
  5. package/dist/default/icons/dist/react/default/captions-on.js.map +1 -1
  6. package/dist/default/icons/dist/react/default/fullscreen-enter.js +1 -1
  7. package/dist/default/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  8. package/dist/default/icons/dist/react/default/fullscreen-exit.js +1 -1
  9. package/dist/default/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  10. package/dist/default/icons/dist/react/default/pause.js +1 -1
  11. package/dist/default/icons/dist/react/default/pause.js.map +1 -1
  12. package/dist/default/icons/dist/react/default/pip-enter.js +33 -0
  13. package/dist/default/icons/dist/react/default/pip-enter.js.map +1 -0
  14. package/dist/default/icons/dist/react/default/pip-exit.js +33 -0
  15. package/dist/default/icons/dist/react/default/pip-exit.js.map +1 -0
  16. package/dist/default/icons/dist/react/default/play.js +1 -1
  17. package/dist/default/icons/dist/react/default/play.js.map +1 -1
  18. package/dist/default/icons/dist/react/default/restart.js +1 -1
  19. package/dist/default/icons/dist/react/default/restart.js.map +1 -1
  20. package/dist/default/icons/dist/react/default/seek.js +1 -1
  21. package/dist/default/icons/dist/react/default/seek.js.map +1 -1
  22. package/dist/default/icons/dist/react/default/spinner.js +1 -1
  23. package/dist/default/icons/dist/react/default/spinner.js.map +1 -1
  24. package/dist/default/icons/dist/react/default/volume-high.js +1 -1
  25. package/dist/default/icons/dist/react/default/volume-high.js.map +1 -1
  26. package/dist/default/icons/dist/react/default/volume-low.js +1 -1
  27. package/dist/default/icons/dist/react/default/volume-low.js.map +1 -1
  28. package/dist/default/icons/dist/react/default/volume-off.js +1 -1
  29. package/dist/default/icons/dist/react/default/volume-off.js.map +1 -1
  30. package/dist/default/icons/dist/react/minimal/captions-off.js +1 -1
  31. package/dist/default/icons/dist/react/minimal/captions-off.js.map +1 -1
  32. package/dist/default/icons/dist/react/minimal/captions-on.js +1 -1
  33. package/dist/default/icons/dist/react/minimal/captions-on.js.map +1 -1
  34. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js +1 -1
  35. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  36. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js +1 -1
  37. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  38. package/dist/default/icons/dist/react/minimal/pause.js +1 -1
  39. package/dist/default/icons/dist/react/minimal/pause.js.map +1 -1
  40. package/dist/default/icons/dist/react/minimal/pip-enter.js +37 -0
  41. package/dist/default/icons/dist/react/minimal/pip-enter.js.map +1 -0
  42. package/dist/default/icons/dist/react/minimal/pip-exit.js +37 -0
  43. package/dist/default/icons/dist/react/minimal/pip-exit.js.map +1 -0
  44. package/dist/default/icons/dist/react/minimal/play.js +1 -1
  45. package/dist/default/icons/dist/react/minimal/play.js.map +1 -1
  46. package/dist/default/icons/dist/react/minimal/restart.js +1 -1
  47. package/dist/default/icons/dist/react/minimal/restart.js.map +1 -1
  48. package/dist/default/icons/dist/react/minimal/seek.js +1 -1
  49. package/dist/default/icons/dist/react/minimal/seek.js.map +1 -1
  50. package/dist/default/icons/dist/react/minimal/spinner.js +1 -1
  51. package/dist/default/icons/dist/react/minimal/spinner.js.map +1 -1
  52. package/dist/default/icons/dist/react/minimal/volume-high.js +1 -1
  53. package/dist/default/icons/dist/react/minimal/volume-high.js.map +1 -1
  54. package/dist/default/icons/dist/react/minimal/volume-low.js +1 -1
  55. package/dist/default/icons/dist/react/minimal/volume-low.js.map +1 -1
  56. package/dist/default/icons/dist/react/minimal/volume-off.js +1 -1
  57. package/dist/default/icons/dist/react/minimal/volume-off.js.map +1 -1
  58. package/dist/default/index.js +4 -3
  59. package/dist/default/media/audio.js +3 -6
  60. package/dist/default/media/audio.js.map +1 -1
  61. package/dist/default/media/background-video/index.js +2 -2
  62. package/dist/default/media/background-video/index.js.map +1 -1
  63. package/dist/default/media/dash-video/index.js +21 -0
  64. package/dist/default/media/dash-video/index.js.map +1 -0
  65. package/dist/default/media/hls-video/index.js +3 -8
  66. package/dist/default/media/hls-video/index.js.map +1 -1
  67. package/dist/default/media/simple-hls-video/index.js +21 -0
  68. package/dist/default/media/simple-hls-video/index.js.map +1 -0
  69. package/dist/default/media/video.js +3 -6
  70. package/dist/default/media/video.js.map +1 -1
  71. package/dist/default/player/context.js +16 -10
  72. package/dist/default/player/context.js.map +1 -1
  73. package/dist/default/player/create-player.js +16 -2
  74. package/dist/default/player/create-player.js.map +1 -1
  75. package/dist/default/presets/audio/index.js +3 -1
  76. package/dist/default/presets/audio/minimal-skin.css +714 -1
  77. package/dist/default/presets/audio/minimal-skin.js +200 -3
  78. package/dist/default/presets/audio/minimal-skin.js.map +1 -1
  79. package/dist/default/presets/audio/minimal-skin.tailwind.js +255 -0
  80. package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -0
  81. package/dist/default/presets/audio/skin.css +740 -2
  82. package/dist/default/presets/audio/skin.js +189 -3
  83. package/dist/default/presets/audio/skin.js.map +1 -1
  84. package/dist/default/presets/audio/skin.tailwind.js +242 -0
  85. package/dist/default/presets/audio/skin.tailwind.js.map +1 -0
  86. package/dist/default/presets/background/skin.css +13 -13
  87. package/dist/default/presets/{video/error-dialog.js → error-dialog.js} +18 -18
  88. package/dist/default/presets/error-dialog.js.map +1 -0
  89. package/dist/default/presets/video/minimal-skin.css +701 -397
  90. package/dist/default/presets/video/minimal-skin.js +189 -92
  91. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  92. package/dist/default/presets/video/minimal-skin.tailwind.js +212 -107
  93. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  94. package/dist/default/presets/video/skin.css +744 -427
  95. package/dist/default/presets/video/skin.js +183 -89
  96. package/dist/default/presets/video/skin.js.map +1 -1
  97. package/dist/default/presets/video/skin.tailwind.js +204 -104
  98. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  99. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +41 -0
  100. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -0
  101. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js +9 -0
  102. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js.map +1 -0
  103. package/dist/default/skins/dist/default/default/tailwind/components/button.js +13 -0
  104. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -0
  105. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +8 -0
  106. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -0
  107. package/dist/default/skins/dist/default/default/tailwind/components/error.js +15 -0
  108. package/dist/default/skins/dist/default/default/tailwind/components/error.js.map +1 -0
  109. package/dist/default/skins/dist/default/default/tailwind/components/icon.js +10 -0
  110. package/dist/default/skins/dist/default/default/tailwind/components/icon.js.map +1 -0
  111. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +8 -0
  112. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -0
  113. package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js +6 -0
  114. package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -0
  115. package/dist/default/skins/dist/default/default/tailwind/components/popup.js +13 -0
  116. package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -0
  117. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +16 -0
  118. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  119. package/dist/default/skins/dist/default/default/tailwind/components/preview.js +13 -0
  120. package/dist/default/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  121. package/dist/default/skins/dist/default/default/tailwind/components/root.js +8 -0
  122. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -0
  123. package/dist/default/skins/dist/default/default/tailwind/components/seek.js +11 -0
  124. package/dist/default/skins/dist/default/default/tailwind/components/seek.js.map +1 -0
  125. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +21 -0
  126. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -0
  127. package/dist/default/skins/dist/default/default/tailwind/components/surface.js +8 -0
  128. package/dist/default/skins/dist/default/default/tailwind/components/surface.js.map +1 -0
  129. package/dist/default/skins/dist/default/default/tailwind/components/time.js +10 -0
  130. package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -0
  131. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +65 -0
  132. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -0
  133. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +30 -0
  134. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -0
  135. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js +6 -0
  136. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -0
  137. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js +8 -0
  138. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -0
  139. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +13 -0
  140. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -0
  141. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +8 -0
  142. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -0
  143. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +15 -0
  144. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +1 -0
  145. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js +10 -0
  146. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -0
  147. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +8 -0
  148. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -0
  149. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +13 -0
  150. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -0
  151. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
  152. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  153. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js +14 -0
  154. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  155. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +8 -0
  156. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -0
  157. package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js +11 -0
  158. package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -0
  159. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +20 -0
  160. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -0
  161. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +14 -0
  162. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -0
  163. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +59 -0
  164. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -0
  165. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +34 -0
  166. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
  167. package/dist/default/ui/alert-dialog/alert-dialog-root.js +1 -1
  168. package/dist/default/ui/buffering-indicator/buffering-indicator.js +2 -0
  169. package/dist/default/ui/buffering-indicator/buffering-indicator.js.map +1 -1
  170. package/dist/default/ui/hooks/use-slider.js +2 -1
  171. package/dist/default/ui/hooks/use-slider.js.map +1 -1
  172. package/dist/default/ui/popover/popover-popup.js +11 -2
  173. package/dist/default/ui/popover/popover-popup.js.map +1 -1
  174. package/dist/default/ui/popover/popover-root.js +1 -1
  175. package/dist/default/ui/slider/slider-root.js +5 -2
  176. package/dist/default/ui/slider/slider-root.js.map +1 -1
  177. package/dist/default/ui/thumbnail/index.js +3 -0
  178. package/dist/default/ui/time-slider/time-slider-root.js +7 -4
  179. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
  180. package/dist/default/ui/tooltip/tooltip-popup.js +11 -2
  181. package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
  182. package/dist/default/ui/tooltip/tooltip-root.js +2 -1
  183. package/dist/default/ui/tooltip/tooltip-root.js.map +1 -1
  184. package/dist/default/ui/volume-slider/volume-slider-root.js +9 -6
  185. package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -1
  186. package/dist/default/utils/use-destroy.js +12 -4
  187. package/dist/default/utils/use-destroy.js.map +1 -1
  188. package/dist/default/utils/use-media-instance.js +24 -0
  189. package/dist/default/utils/use-media-instance.js.map +1 -0
  190. package/dist/default/utils/use-render.js +5 -1
  191. package/dist/default/utils/use-render.js.map +1 -1
  192. package/dist/dev/icons/dist/react/default/captions-off.js +1 -1
  193. package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -1
  194. package/dist/dev/icons/dist/react/default/captions-on.js +1 -1
  195. package/dist/dev/icons/dist/react/default/captions-on.js.map +1 -1
  196. package/dist/dev/icons/dist/react/default/fullscreen-enter.js +1 -1
  197. package/dist/dev/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  198. package/dist/dev/icons/dist/react/default/fullscreen-exit.js +1 -1
  199. package/dist/dev/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  200. package/dist/dev/icons/dist/react/default/pause.js +1 -1
  201. package/dist/dev/icons/dist/react/default/pause.js.map +1 -1
  202. package/dist/dev/icons/dist/react/default/pip-enter.js +33 -0
  203. package/dist/dev/icons/dist/react/default/pip-enter.js.map +1 -0
  204. package/dist/dev/icons/dist/react/default/pip-exit.js +33 -0
  205. package/dist/dev/icons/dist/react/default/pip-exit.js.map +1 -0
  206. package/dist/dev/icons/dist/react/default/play.js +1 -1
  207. package/dist/dev/icons/dist/react/default/play.js.map +1 -1
  208. package/dist/dev/icons/dist/react/default/restart.js +1 -1
  209. package/dist/dev/icons/dist/react/default/restart.js.map +1 -1
  210. package/dist/dev/icons/dist/react/default/seek.js +1 -1
  211. package/dist/dev/icons/dist/react/default/seek.js.map +1 -1
  212. package/dist/dev/icons/dist/react/default/spinner.js +1 -1
  213. package/dist/dev/icons/dist/react/default/spinner.js.map +1 -1
  214. package/dist/dev/icons/dist/react/default/volume-high.js +1 -1
  215. package/dist/dev/icons/dist/react/default/volume-high.js.map +1 -1
  216. package/dist/dev/icons/dist/react/default/volume-low.js +1 -1
  217. package/dist/dev/icons/dist/react/default/volume-low.js.map +1 -1
  218. package/dist/dev/icons/dist/react/default/volume-off.js +1 -1
  219. package/dist/dev/icons/dist/react/default/volume-off.js.map +1 -1
  220. package/dist/dev/icons/dist/react/minimal/captions-off.js +1 -1
  221. package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -1
  222. package/dist/dev/icons/dist/react/minimal/captions-on.js +1 -1
  223. package/dist/dev/icons/dist/react/minimal/captions-on.js.map +1 -1
  224. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js +1 -1
  225. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  226. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js +1 -1
  227. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  228. package/dist/dev/icons/dist/react/minimal/pause.js +1 -1
  229. package/dist/dev/icons/dist/react/minimal/pause.js.map +1 -1
  230. package/dist/dev/icons/dist/react/minimal/pip-enter.js +37 -0
  231. package/dist/dev/icons/dist/react/minimal/pip-enter.js.map +1 -0
  232. package/dist/dev/icons/dist/react/minimal/pip-exit.js +37 -0
  233. package/dist/dev/icons/dist/react/minimal/pip-exit.js.map +1 -0
  234. package/dist/dev/icons/dist/react/minimal/play.js +1 -1
  235. package/dist/dev/icons/dist/react/minimal/play.js.map +1 -1
  236. package/dist/dev/icons/dist/react/minimal/restart.js +1 -1
  237. package/dist/dev/icons/dist/react/minimal/restart.js.map +1 -1
  238. package/dist/dev/icons/dist/react/minimal/seek.js +1 -1
  239. package/dist/dev/icons/dist/react/minimal/seek.js.map +1 -1
  240. package/dist/dev/icons/dist/react/minimal/spinner.js +1 -1
  241. package/dist/dev/icons/dist/react/minimal/spinner.js.map +1 -1
  242. package/dist/dev/icons/dist/react/minimal/volume-high.js +1 -1
  243. package/dist/dev/icons/dist/react/minimal/volume-high.js.map +1 -1
  244. package/dist/dev/icons/dist/react/minimal/volume-low.js +1 -1
  245. package/dist/dev/icons/dist/react/minimal/volume-low.js.map +1 -1
  246. package/dist/dev/icons/dist/react/minimal/volume-off.js +1 -1
  247. package/dist/dev/icons/dist/react/minimal/volume-off.js.map +1 -1
  248. package/dist/dev/index.d.ts +3 -10
  249. package/dist/dev/index.js +4 -3
  250. package/dist/dev/media/audio.d.ts.map +1 -1
  251. package/dist/dev/media/audio.js +3 -6
  252. package/dist/dev/media/audio.js.map +1 -1
  253. package/dist/dev/media/background-video/index.js +2 -2
  254. package/dist/dev/media/background-video/index.js.map +1 -1
  255. package/dist/dev/media/dash-video/index.d.ts +11 -0
  256. package/dist/dev/media/dash-video/index.d.ts.map +1 -0
  257. package/dist/dev/media/dash-video/index.js +21 -0
  258. package/dist/dev/media/dash-video/index.js.map +1 -0
  259. package/dist/dev/media/hls-video/index.d.ts.map +1 -1
  260. package/dist/dev/media/hls-video/index.js +3 -8
  261. package/dist/dev/media/hls-video/index.js.map +1 -1
  262. package/dist/dev/media/simple-hls-video/index.d.ts +11 -0
  263. package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -0
  264. package/dist/dev/media/simple-hls-video/index.js +21 -0
  265. package/dist/dev/media/simple-hls-video/index.js.map +1 -0
  266. package/dist/dev/media/video.d.ts.map +1 -1
  267. package/dist/dev/media/video.js +3 -6
  268. package/dist/dev/media/video.js.map +1 -1
  269. package/dist/dev/player/context.d.ts +10 -4
  270. package/dist/dev/player/context.d.ts.map +1 -1
  271. package/dist/dev/player/context.js +16 -10
  272. package/dist/dev/player/context.js.map +1 -1
  273. package/dist/dev/player/create-player.js +16 -2
  274. package/dist/dev/player/create-player.js.map +1 -1
  275. package/dist/dev/presets/audio/index.d.ts +3 -1
  276. package/dist/dev/presets/audio/index.js +3 -1
  277. package/dist/dev/presets/audio/minimal-skin.css +714 -1
  278. package/dist/dev/presets/audio/minimal-skin.d.ts +2 -2
  279. package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
  280. package/dist/dev/presets/audio/minimal-skin.js +200 -3
  281. package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
  282. package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts +8 -0
  283. package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -0
  284. package/dist/dev/presets/audio/minimal-skin.tailwind.js +255 -0
  285. package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -0
  286. package/dist/dev/presets/audio/skin.css +740 -2
  287. package/dist/dev/presets/audio/skin.d.ts +2 -2
  288. package/dist/dev/presets/audio/skin.d.ts.map +1 -1
  289. package/dist/dev/presets/audio/skin.js +189 -3
  290. package/dist/dev/presets/audio/skin.js.map +1 -1
  291. package/dist/dev/presets/audio/skin.tailwind.d.ts +8 -0
  292. package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -0
  293. package/dist/dev/presets/audio/skin.tailwind.js +242 -0
  294. package/dist/dev/presets/audio/skin.tailwind.js.map +1 -0
  295. package/dist/dev/presets/background/skin.css +13 -13
  296. package/dist/dev/presets/{video/error-dialog.js → error-dialog.js} +18 -18
  297. package/dist/dev/presets/error-dialog.js.map +1 -0
  298. package/dist/dev/presets/types.d.ts +6 -1
  299. package/dist/dev/presets/types.d.ts.map +1 -1
  300. package/dist/dev/presets/video/minimal-skin.css +701 -397
  301. package/dist/dev/presets/video/minimal-skin.d.ts +2 -2
  302. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  303. package/dist/dev/presets/video/minimal-skin.js +189 -92
  304. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  305. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  306. package/dist/dev/presets/video/minimal-skin.tailwind.js +212 -107
  307. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  308. package/dist/dev/presets/video/skin.css +744 -427
  309. package/dist/dev/presets/video/skin.d.ts +2 -2
  310. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  311. package/dist/dev/presets/video/skin.js +183 -89
  312. package/dist/dev/presets/video/skin.js.map +1 -1
  313. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  314. package/dist/dev/presets/video/skin.tailwind.js +204 -104
  315. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  316. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +41 -0
  317. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -0
  318. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js +9 -0
  319. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js.map +1 -0
  320. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +13 -0
  321. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -0
  322. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +8 -0
  323. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -0
  324. package/dist/dev/skins/dist/default/default/tailwind/components/error.js +15 -0
  325. package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +1 -0
  326. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js +10 -0
  327. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js.map +1 -0
  328. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +8 -0
  329. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -0
  330. package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js +6 -0
  331. package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -0
  332. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +13 -0
  333. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -0
  334. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +16 -0
  335. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  336. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js +13 -0
  337. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  338. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +8 -0
  339. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -0
  340. package/dist/dev/skins/dist/default/default/tailwind/components/seek.js +11 -0
  341. package/dist/dev/skins/dist/default/default/tailwind/components/seek.js.map +1 -0
  342. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +21 -0
  343. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -0
  344. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js +8 -0
  345. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js.map +1 -0
  346. package/dist/dev/skins/dist/default/default/tailwind/components/time.js +10 -0
  347. package/dist/dev/skins/dist/default/default/tailwind/components/time.js.map +1 -0
  348. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +65 -0
  349. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -0
  350. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +30 -0
  351. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -0
  352. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js +6 -0
  353. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -0
  354. package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js +8 -0
  355. package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -0
  356. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +13 -0
  357. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -0
  358. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +8 -0
  359. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -0
  360. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +15 -0
  361. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +1 -0
  362. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js +10 -0
  363. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -0
  364. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +8 -0
  365. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -0
  366. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +13 -0
  367. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -0
  368. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
  369. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  370. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js +14 -0
  371. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  372. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +8 -0
  373. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +1 -0
  374. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js +11 -0
  375. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -0
  376. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +20 -0
  377. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -0
  378. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +14 -0
  379. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -0
  380. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +59 -0
  381. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -0
  382. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +34 -0
  383. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
  384. package/dist/dev/ui/alert-dialog/alert-dialog-root.js +1 -1
  385. package/dist/dev/ui/alert-dialog/context.d.ts +0 -1
  386. package/dist/dev/ui/alert-dialog/context.d.ts.map +1 -1
  387. package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts.map +1 -1
  388. package/dist/dev/ui/buffering-indicator/buffering-indicator.js +2 -0
  389. package/dist/dev/ui/buffering-indicator/buffering-indicator.js.map +1 -1
  390. package/dist/dev/ui/hooks/use-slider.d.ts +2 -1
  391. package/dist/dev/ui/hooks/use-slider.d.ts.map +1 -1
  392. package/dist/dev/ui/hooks/use-slider.js +2 -1
  393. package/dist/dev/ui/hooks/use-slider.js.map +1 -1
  394. package/dist/dev/ui/popover/context.d.ts +0 -1
  395. package/dist/dev/ui/popover/context.d.ts.map +1 -1
  396. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
  397. package/dist/dev/ui/popover/popover-popup.js +11 -2
  398. package/dist/dev/ui/popover/popover-popup.js.map +1 -1
  399. package/dist/dev/ui/popover/popover-root.js +1 -1
  400. package/dist/dev/ui/slider/slider-root.d.ts.map +1 -1
  401. package/dist/dev/ui/slider/slider-root.js +5 -2
  402. package/dist/dev/ui/slider/slider-root.js.map +1 -1
  403. package/dist/dev/ui/thumbnail/index.d.ts +2 -0
  404. package/dist/dev/ui/thumbnail/index.js +3 -0
  405. package/dist/dev/ui/time-slider/index.parts.d.ts +0 -1
  406. package/dist/dev/ui/time-slider/time-slider-root.js +7 -4
  407. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
  408. package/dist/dev/ui/tooltip/context.d.ts +0 -1
  409. package/dist/dev/ui/tooltip/context.d.ts.map +1 -1
  410. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  411. package/dist/dev/ui/tooltip/tooltip-popup.js +11 -2
  412. package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
  413. package/dist/dev/ui/tooltip/tooltip-root.d.ts.map +1 -1
  414. package/dist/dev/ui/tooltip/tooltip-root.js +2 -1
  415. package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -1
  416. package/dist/dev/ui/volume-slider/index.parts.d.ts +0 -1
  417. package/dist/dev/ui/volume-slider/volume-slider-root.js +9 -6
  418. package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -1
  419. package/dist/dev/utils/use-destroy.js +12 -4
  420. package/dist/dev/utils/use-destroy.js.map +1 -1
  421. package/dist/dev/utils/use-media-instance.js +24 -0
  422. package/dist/dev/utils/use-media-instance.js.map +1 -0
  423. package/dist/dev/utils/use-render.d.ts.map +1 -1
  424. package/dist/dev/utils/use-render.js +5 -1
  425. package/dist/dev/utils/use-render.js.map +1 -1
  426. package/package.json +7 -6
  427. package/dist/default/icons/dist/react/default/pip.js +0 -26
  428. package/dist/default/icons/dist/react/default/pip.js.map +0 -1
  429. package/dist/default/icons/dist/react/minimal/pip.js +0 -26
  430. package/dist/default/icons/dist/react/minimal/pip.js.map +0 -1
  431. package/dist/default/presets/video/error-dialog.js.map +0 -1
  432. package/dist/default/skins/dist/default/video/default.tailwind.js +0 -90
  433. package/dist/default/skins/dist/default/video/default.tailwind.js.map +0 -1
  434. package/dist/default/skins/dist/default/video/minimal.tailwind.js +0 -86
  435. package/dist/default/skins/dist/default/video/minimal.tailwind.js.map +0 -1
  436. package/dist/dev/icons/dist/react/default/pip.js +0 -26
  437. package/dist/dev/icons/dist/react/default/pip.js.map +0 -1
  438. package/dist/dev/icons/dist/react/minimal/pip.js +0 -26
  439. package/dist/dev/icons/dist/react/minimal/pip.js.map +0 -1
  440. package/dist/dev/presets/video/error-dialog.js.map +0 -1
  441. package/dist/dev/skins/dist/default/video/default.tailwind.js +0 -90
  442. package/dist/dev/skins/dist/default/video/default.tailwind.js.map +0 -1
  443. package/dist/dev/skins/dist/default/video/minimal.tailwind.js +0 -86
  444. package/dist/dev/skins/dist/default/video/minimal.tailwind.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seek.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/seek.js"],"sourcesContent":["//#region src/minimal/tailwind/components/seek.ts\nconst seek = {\n\tbutton: \"@max-md/media-controls:hidden\",\n\tlabel: \"text-[10px] font-[480] tabular-nums\",\n\tlabelForward: \"absolute -right-px -bottom-0.75\",\n\tlabelBackward: \"absolute -left-px -bottom-0.75\"\n};\n\n//#endregion\nexport { seek };\n//# sourceMappingURL=seek.js.map"],"mappings":";AACA,MAAM,OAAO;CACZ,QAAQ;CACR,OAAO;CACP,cAAc;CACd,eAAe;CACf"}
@@ -0,0 +1,20 @@
1
+ import { cn } from "@videojs/utils/style";
2
+
3
+ //#region ../skins/dist/default/minimal/tailwind/components/slider.js
4
+ const slider = {
5
+ root: cn("group/slider relative flex flex-1 items-center justify-center rounded-full outline-none cursor-pointer", "data-[orientation=horizontal]:min-w-20 data-[orientation=horizontal]:w-full data-[orientation=horizontal]:h-5", "data-[orientation=vertical]:w-5 data-[orientation=vertical]:h-[4.5rem]"),
6
+ track: cn("relative isolate overflow-hidden bg-current/20 rounded-[inherit] select-none", "data-[orientation=horizontal]:w-full data-[orientation=horizontal]:h-0.75", "data-[orientation=vertical]:w-0.75 data-[orientation=vertical]:h-full"),
7
+ fill: {
8
+ base: "absolute rounded-[inherit] pointer-events-none",
9
+ fill: cn("bg-current", "data-[orientation=horizontal]:inset-y-0 data-[orientation=horizontal]:left-0", "data-[orientation=horizontal]:w-(--media-slider-fill,0)", "data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0", "data-[orientation=vertical]:h-(--media-slider-fill,0)"),
10
+ buffer: cn("bg-current/20 duration-250 ease-out", "data-[orientation=horizontal]:inset-y-0 data-[orientation=horizontal]:left-0", "data-[orientation=horizontal]:transition-[width] data-[orientation=horizontal]:w-(--media-slider-buffer,0)", "data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0", "data-[orientation=vertical]:transition-[height] data-[orientation=vertical]:h-(--media-slider-buffer)")
11
+ },
12
+ thumb: {
13
+ base: cn("z-10 absolute size-3 -translate-x-1/2 -translate-y-1/2", "bg-current rounded-full", "shadow-[0_0_0_1px_var(--media-controls-current-shadow-color-subtle,oklch(0_0_0/0.1)),0_1px_3px_0_oklch(0_0_0/0.15),0_1px_2px_-1px_oklch(0_0_0/0.15)]", "transition-[opacity,scale,outline-offset] duration-150 ease-out select-none", "outline-2 outline-transparent -outline-offset-2", "focus-visible:outline-current focus-visible:outline-offset-2", "data-[orientation=horizontal]:top-1/2 data-[orientation=horizontal]:left-(--media-slider-fill,0)", "data-[orientation=vertical]:left-1/2 data-[orientation=vertical]:top-[calc(100%-var(--media-slider-fill,0))]"),
14
+ interactive: cn("opacity-0 scale-70 origin-center", "group-hover/slider:opacity-100 group-hover/slider:scale-100", "group-focus-within/slider:opacity-100 group-focus-within/slider:scale-100")
15
+ }
16
+ };
17
+
18
+ //#endregion
19
+ export { slider };
20
+ //# sourceMappingURL=slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/slider.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n\n//#region src/minimal/tailwind/components/slider.ts\nconst slider = {\n\troot: cn(\"group/slider relative flex flex-1 items-center justify-center rounded-full outline-none cursor-pointer\", \"data-[orientation=horizontal]:min-w-20 data-[orientation=horizontal]:w-full data-[orientation=horizontal]:h-5\", \"data-[orientation=vertical]:w-5 data-[orientation=vertical]:h-[4.5rem]\"),\n\ttrack: cn(\"relative isolate overflow-hidden bg-current/20 rounded-[inherit] select-none\", \"data-[orientation=horizontal]:w-full data-[orientation=horizontal]:h-0.75\", \"data-[orientation=vertical]:w-0.75 data-[orientation=vertical]:h-full\"),\n\tfill: {\n\t\tbase: \"absolute rounded-[inherit] pointer-events-none\",\n\t\tfill: cn(\"bg-current\", \"data-[orientation=horizontal]:inset-y-0 data-[orientation=horizontal]:left-0\", \"data-[orientation=horizontal]:w-(--media-slider-fill,0)\", \"data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0\", \"data-[orientation=vertical]:h-(--media-slider-fill,0)\"),\n\t\tbuffer: cn(\"bg-current/20 duration-250 ease-out\", \"data-[orientation=horizontal]:inset-y-0 data-[orientation=horizontal]:left-0\", \"data-[orientation=horizontal]:transition-[width] data-[orientation=horizontal]:w-(--media-slider-buffer,0)\", \"data-[orientation=vertical]:inset-x-0 data-[orientation=vertical]:bottom-0\", \"data-[orientation=vertical]:transition-[height] data-[orientation=vertical]:h-(--media-slider-buffer)\")\n\t},\n\tthumb: {\n\t\tbase: cn(\"z-10 absolute size-3 -translate-x-1/2 -translate-y-1/2\", \"bg-current rounded-full\", \"shadow-[0_0_0_1px_var(--media-controls-current-shadow-color-subtle,oklch(0_0_0/0.1)),0_1px_3px_0_oklch(0_0_0/0.15),0_1px_2px_-1px_oklch(0_0_0/0.15)]\", \"transition-[opacity,scale,outline-offset] duration-150 ease-out select-none\", \"outline-2 outline-transparent -outline-offset-2\", \"focus-visible:outline-current focus-visible:outline-offset-2\", \"data-[orientation=horizontal]:top-1/2 data-[orientation=horizontal]:left-(--media-slider-fill,0)\", \"data-[orientation=vertical]:left-1/2 data-[orientation=vertical]:top-[calc(100%-var(--media-slider-fill,0))]\"),\n\t\tinteractive: cn(\"opacity-0 scale-70 origin-center\", \"group-hover/slider:opacity-100 group-hover/slider:scale-100\", \"group-focus-within/slider:opacity-100 group-focus-within/slider:scale-100\")\n\t}\n};\n\n//#endregion\nexport { slider };\n//# sourceMappingURL=slider.js.map"],"mappings":";;;AAGA,MAAM,SAAS;CACd,MAAM,GAAG,0GAA0G,iHAAiH,yEAAyE;CAC7S,OAAO,GAAG,gFAAgF,6EAA6E,wEAAwE;CAC/O,MAAM;EACL,MAAM;EACN,MAAM,GAAG,cAAc,gFAAgF,2DAA2D,8EAA8E,wDAAwD;EACxS,QAAQ,GAAG,uCAAuC,gFAAgF,8GAA8G,8EAA8E,wGAAwG;EACta;CACD,OAAO;EACN,MAAM,GAAG,0DAA0D,2BAA2B,wJAAwJ,+EAA+E,mDAAmD,gEAAgE,oGAAoG,+GAA+G;EAC3oB,aAAa,GAAG,oCAAoC,+DAA+D,4EAA4E;EAC/L;CACD"}
@@ -0,0 +1,14 @@
1
+ import { cn } from "@videojs/utils/style";
2
+
3
+ //#region ../skins/dist/default/minimal/tailwind/components/time.js
4
+ const time = {
5
+ group: "flex items-center gap-1",
6
+ current: cn("hidden tabular-nums", "@md/media-controls:inline"),
7
+ separator: cn("hidden", "@md/media-controls:inline @md/media-controls:text-current/60"),
8
+ duration: cn("tabular-nums", "@md/media-controls:text-current/60"),
9
+ controls: cn("flex flex-row-reverse items-center flex-1 gap-3", "@md/media-controls:flex-row")
10
+ };
11
+
12
+ //#endregion
13
+ export { time };
14
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/time.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n\n//#region src/minimal/tailwind/components/time.ts\nconst time = {\n\tgroup: \"flex items-center gap-1\",\n\tcurrent: cn(\"hidden tabular-nums\", \"@md/media-controls:inline\"),\n\tseparator: cn(\"hidden\", \"@md/media-controls:inline @md/media-controls:text-current/60\"),\n\tduration: cn(\"tabular-nums\", \"@md/media-controls:text-current/60\"),\n\tcontrols: cn(\"flex flex-row-reverse items-center flex-1 gap-3\", \"@md/media-controls:flex-row\")\n};\n\n//#endregion\nexport { time };\n//# sourceMappingURL=time.js.map"],"mappings":";;;AAGA,MAAM,OAAO;CACZ,OAAO;CACP,SAAS,GAAG,uBAAuB,4BAA4B;CAC/D,WAAW,GAAG,UAAU,+DAA+D;CACvF,UAAU,GAAG,gBAAgB,qCAAqC;CAClE,UAAU,GAAG,mDAAmD,8BAA8B;CAC9F"}
@@ -0,0 +1,59 @@
1
+ import { iconState } from "../../shared/tailwind/icon-state.js";
2
+ import { controls as controls$1 } from "./components/controls.js";
3
+ import { error as error$1 } from "./components/error.js";
4
+ import { popup as popup$1 } from "./components/popup.js";
5
+ import { root as root$1 } from "./components/root.js";
6
+ import { bufferingIndicator } from "./components/buffering.js";
7
+ import { button } from "./components/button.js";
8
+ import { buttonGroup } from "./components/button-group.js";
9
+ import { icon, iconContainer, iconFlipped } from "./components/icon.js";
10
+ import { seek } from "./components/seek.js";
11
+ import { slider as slider$1 } from "./components/slider.js";
12
+ import { time } from "./components/time.js";
13
+ import { preview as preview$1 } from "./components/preview.js";
14
+ import { overlay } from "./components/overlay.js";
15
+ import { poster } from "./components/poster.js";
16
+ import { cn } from "@videojs/utils/style";
17
+
18
+ //#region ../skins/dist/default/minimal/tailwind/video.tailwind.js
19
+ const root = (isShadowDOM) => cn(root$1, "bg-black overflow-clip", "after:absolute after:pointer-events-none after:rounded-[inherit] after:z-10", "after:inset-0 after:ring-1 after:ring-inset after:ring-black/15 dark:after:ring-white/15", {
20
+ "[&_::slotted(video)]:block [&_::slotted(video)]:w-full [&_::slotted(video)]:h-full [&_::slotted(video)]:rounded-(--media-video-border-radius) [&_::slotted(video)]:[object-fit:var(--media-object-fit,cover)] [&_::slotted(video)]:[object-position:var(--media-object-position,center)]": isShadowDOM,
21
+ "[&_video]:block [&_video]:w-full [&_video]:h-full [&_video]:rounded-[inherit] [&_video]:[object-fit:var(--media-object-fit,contain)] [&_video]:[object-position:var(--media-object-position,center)]": !isShadowDOM
22
+ }, "[--media-video-border-radius:var(--media-border-radius,0.75rem)]", "[--media-controls-padding:0.375rem]", "[--media-controls-transition-duration:100ms]", "[--media-controls-transition-delay:0ms]", "[--media-controls-transition-timing-function:ease-out]", "[--media-error-dialog-transition-duration:250ms]", "[--media-error-dialog-transition-delay:100ms]", "[--media-error-dialog-transition-timing-function:ease-out]", "[--media-popup-transition-duration:100ms]", "[--media-popup-transition-timing-function:ease-out]", "motion-reduce:[--media-error-dialog-transition-duration:50ms]", "motion-reduce:[--media-error-dialog-transition-delay:0ms]", "motion-reduce:[--media-popup-transition-duration:0ms]", "[@media(pointer:fine)]:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-delay:500ms]", "[@media(pointer:fine)]:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:300ms]", "[@media(pointer:coarse)]:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:150ms]", "motion-reduce:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:50ms]", "[--media-caption-track-y:-0.5rem]", "[--media-caption-track-delay:calc(var(--media-controls-transition-delay)_+_25ms)]", "[--media-caption-track-duration:var(--media-controls-transition-duration)]", "has-[[data-controls][data-visible]]:[--media-caption-track-y:-3rem]", !isShadowDOM ? [
23
+ "[&_video::-webkit-media-text-track-container]:transition-[translate]",
24
+ "[&_video::-webkit-media-text-track-container]:duration-(--media-caption-track-duration)",
25
+ "[&_video::-webkit-media-text-track-container]:ease-out",
26
+ "[&_video::-webkit-media-text-track-container]:delay-(--media-caption-track-delay)",
27
+ "[&_video::-webkit-media-text-track-container]:translate-y-(--media-caption-track-y)",
28
+ "[&_video::-webkit-media-text-track-container]:scale-98",
29
+ "[&_video::-webkit-media-text-track-container]:z-1",
30
+ "[&_video::-webkit-media-text-track-container]:font-[inherit]"
31
+ ] : [], "[&:fullscreen]:[--media-border-radius:0]", {
32
+ "[&:fullscreen_video]:object-contain": !isShadowDOM,
33
+ "[&:fullscreen_::slotted(video)]:object-contain": isShadowDOM
34
+ });
35
+ const controls = cn(controls$1, "absolute bottom-0 inset-x-0", "pt-8 px-(--media-controls-padding) pb-(--media-controls-padding) gap-2", "[color:var(--media-color-primary,oklch(1_0_0))] z-10", "peer-data-open/error:hidden", "ease-(--media-controls-transition-timing-function)", "duration-(--media-controls-transition-duration)", "delay-(--media-controls-transition-delay)", "[@media(pointer:fine)]:will-change-[translate,filter,opacity]", "[@media(pointer:fine)]:transition-[translate,filter,opacity]", "[@media(pointer:coarse)]:will-change-[translate,opacity]", "[@media(pointer:coarse)]:transition-[translate,opacity]", "not-data-visible:opacity-0 not-data-visible:pointer-events-none", "motion-safe:not-data-visible:translate-y-full", "[@media(pointer:fine)]:motion-safe:not-data-visible:blur-sm", "@sm/media-root:pt-10 @sm/media-root:px-3 @sm/media-root:pb-3", "@sm/media-root:gap-3.5");
36
+ const error = {
37
+ ...error$1,
38
+ root: cn(error$1.root, "pointer-events-none outline-none"),
39
+ dialog: cn(error$1.dialog, "pointer-events-auto"),
40
+ title: cn(error$1.title, "text-lg")
41
+ };
42
+ const preview = {
43
+ ...preview$1,
44
+ root: cn("absolute left-(--media-slider-pointer) bottom-[calc(100%+0.5rem)] -translate-x-1/2", "opacity-0 scale-80 blur-sm origin-bottom", "transition-[scale,opacity,filter] duration-150", "group-data-pointing/slider:opacity-100 group-data-pointing/slider:scale-100 group-data-pointing/slider:blur-none", "[&:has([role=img][data-hidden])]:opacity-0 [&:has([role=img][data-hidden])]:scale-80 [&:has([role=img][data-hidden])]:blur-sm", "[&:has([role=img][data-loading])]:max-h-24", preview$1.root),
45
+ thumbnailWrapper: cn(preview$1.thumbnailWrapper, "after:absolute after:inset-0 after:rounded-[inherit]", "after:ring-1 after:ring-black/5 after:shadow-sm after:shadow-black/20"),
46
+ thumbnail: cn(preview$1.thumbnail, "max-w-44")
47
+ };
48
+ const slider = {
49
+ ...slider$1,
50
+ track: cn(slider$1.track, "ring-1 ring-black/5")
51
+ };
52
+ const popup = {
53
+ ...popup$1,
54
+ volume: cn(popup$1.popover, "[--media-popover-side-offset:0.5rem] p-1 bg-transparent")
55
+ };
56
+
57
+ //#endregion
58
+ export { controls, error, popup, preview, root, slider };
59
+ //# sourceMappingURL=video.tailwind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.tailwind.js","names":[],"sources":["../../../../../../../../skins/dist/default/minimal/tailwind/video.tailwind.js"],"sourcesContent":["import { controls as controls$1 } from \"./components/controls.js\";\nimport { error as error$1 } from \"./components/error.js\";\nimport { popup as popup$1 } from \"./components/popup.js\";\nimport { root as root$1 } from \"./components/root.js\";\nimport { iconState } from \"../../shared/tailwind/icon-state.js\";\nimport { tooltipState } from \"../../shared/tailwind/tooltip-state.js\";\nimport { bufferingIndicator } from \"./components/buffering.js\";\nimport { button } from \"./components/button.js\";\nimport { buttonGroup } from \"./components/button-group.js\";\nimport { icon, iconContainer, iconFlipped, iconHidden } from \"./components/icon.js\";\nimport { seek } from \"./components/seek.js\";\nimport { slider as slider$1 } from \"./components/slider.js\";\nimport { time } from \"./components/time.js\";\nimport { preview as preview$1 } from \"./components/preview.js\";\nimport { overlay } from \"./components/overlay.js\";\nimport { playbackRate } from \"./components/playback-rate.js\";\nimport { poster } from \"./components/poster.js\";\nimport { cn } from \"@videojs/utils/style\";\n\n//#region src/minimal/tailwind/video.tailwind.ts\nconst root = (isShadowDOM) => cn(root$1, \"bg-black overflow-clip\", \"after:absolute after:pointer-events-none after:rounded-[inherit] after:z-10\", \"after:inset-0 after:ring-1 after:ring-inset after:ring-black/15 dark:after:ring-white/15\", {\n\t\"[&_::slotted(video)]:block [&_::slotted(video)]:w-full [&_::slotted(video)]:h-full [&_::slotted(video)]:rounded-(--media-video-border-radius) [&_::slotted(video)]:[object-fit:var(--media-object-fit,cover)] [&_::slotted(video)]:[object-position:var(--media-object-position,center)]\": isShadowDOM,\n\t\"[&_video]:block [&_video]:w-full [&_video]:h-full [&_video]:rounded-[inherit] [&_video]:[object-fit:var(--media-object-fit,contain)] [&_video]:[object-position:var(--media-object-position,center)]\": !isShadowDOM\n}, \"[--media-video-border-radius:var(--media-border-radius,0.75rem)]\", \"[--media-controls-padding:0.375rem]\", \"[--media-controls-transition-duration:100ms]\", \"[--media-controls-transition-delay:0ms]\", \"[--media-controls-transition-timing-function:ease-out]\", \"[--media-error-dialog-transition-duration:250ms]\", \"[--media-error-dialog-transition-delay:100ms]\", \"[--media-error-dialog-transition-timing-function:ease-out]\", \"[--media-popup-transition-duration:100ms]\", \"[--media-popup-transition-timing-function:ease-out]\", \"motion-reduce:[--media-error-dialog-transition-duration:50ms]\", \"motion-reduce:[--media-error-dialog-transition-delay:0ms]\", \"motion-reduce:[--media-popup-transition-duration:0ms]\", \"[@media(pointer:fine)]:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-delay:500ms]\", \"[@media(pointer:fine)]:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:300ms]\", \"[@media(pointer:coarse)]:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:150ms]\", \"motion-reduce:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:50ms]\", \"[--media-caption-track-y:-0.5rem]\", \"[--media-caption-track-delay:calc(var(--media-controls-transition-delay)_+_25ms)]\", \"[--media-caption-track-duration:var(--media-controls-transition-duration)]\", \"has-[[data-controls][data-visible]]:[--media-caption-track-y:-3rem]\", !isShadowDOM ? [\n\t\"[&_video::-webkit-media-text-track-container]:transition-[translate]\",\n\t\"[&_video::-webkit-media-text-track-container]:duration-(--media-caption-track-duration)\",\n\t\"[&_video::-webkit-media-text-track-container]:ease-out\",\n\t\"[&_video::-webkit-media-text-track-container]:delay-(--media-caption-track-delay)\",\n\t\"[&_video::-webkit-media-text-track-container]:translate-y-(--media-caption-track-y)\",\n\t\"[&_video::-webkit-media-text-track-container]:scale-98\",\n\t\"[&_video::-webkit-media-text-track-container]:z-1\",\n\t\"[&_video::-webkit-media-text-track-container]:font-[inherit]\"\n] : [], \"[&:fullscreen]:[--media-border-radius:0]\", {\n\t\"[&:fullscreen_video]:object-contain\": !isShadowDOM,\n\t\"[&:fullscreen_::slotted(video)]:object-contain\": isShadowDOM\n});\nconst controls = cn(controls$1, \"absolute bottom-0 inset-x-0\", \"pt-8 px-(--media-controls-padding) pb-(--media-controls-padding) gap-2\", \"[color:var(--media-color-primary,oklch(1_0_0))] z-10\", \"peer-data-open/error:hidden\", \"ease-(--media-controls-transition-timing-function)\", \"duration-(--media-controls-transition-duration)\", \"delay-(--media-controls-transition-delay)\", \"[@media(pointer:fine)]:will-change-[translate,filter,opacity]\", \"[@media(pointer:fine)]:transition-[translate,filter,opacity]\", \"[@media(pointer:coarse)]:will-change-[translate,opacity]\", \"[@media(pointer:coarse)]:transition-[translate,opacity]\", \"not-data-visible:opacity-0 not-data-visible:pointer-events-none\", \"motion-safe:not-data-visible:translate-y-full\", \"[@media(pointer:fine)]:motion-safe:not-data-visible:blur-sm\", \"@sm/media-root:pt-10 @sm/media-root:px-3 @sm/media-root:pb-3\", \"@sm/media-root:gap-3.5\");\nconst error = {\n\t...error$1,\n\troot: cn(error$1.root, \"pointer-events-none outline-none\"),\n\tdialog: cn(error$1.dialog, \"pointer-events-auto\"),\n\ttitle: cn(error$1.title, \"text-lg\")\n};\nconst preview = {\n\t...preview$1,\n\troot: cn(\"absolute left-(--media-slider-pointer) bottom-[calc(100%+0.5rem)] -translate-x-1/2\", \"opacity-0 scale-80 blur-sm origin-bottom\", \"transition-[scale,opacity,filter] duration-150\", \"group-data-pointing/slider:opacity-100 group-data-pointing/slider:scale-100 group-data-pointing/slider:blur-none\", \"[&:has([role=img][data-hidden])]:opacity-0 [&:has([role=img][data-hidden])]:scale-80 [&:has([role=img][data-hidden])]:blur-sm\", \"[&:has([role=img][data-loading])]:max-h-24\", preview$1.root),\n\tthumbnailWrapper: cn(preview$1.thumbnailWrapper, \"after:absolute after:inset-0 after:rounded-[inherit]\", \"after:ring-1 after:ring-black/5 after:shadow-sm after:shadow-black/20\"),\n\tthumbnail: cn(preview$1.thumbnail, \"max-w-44\")\n};\nconst slider = {\n\t...slider$1,\n\ttrack: cn(slider$1.track, \"ring-1 ring-black/5\")\n};\nconst popup = {\n\t...popup$1,\n\tvolume: cn(popup$1.popover, \"[--media-popover-side-offset:0.5rem] p-1 bg-transparent\")\n};\n\n//#endregion\nexport { bufferingIndicator, button, buttonGroup, controls, error, icon, iconContainer, iconFlipped, iconHidden, iconState, overlay, playbackRate, popup, poster, preview, root, seek, slider, time, tooltipState };\n//# sourceMappingURL=video.tailwind.js.map"],"mappings":";;;;;;;;;;;;;;;;;;AAoBA,MAAM,QAAQ,gBAAgB,GAAG,QAAQ,0BAA0B,+EAA+E,4FAA4F;CAC7O,4RAA4R;CAC5R,wMAAwM,CAAC;CACzM,EAAE,oEAAoE,uCAAuC,gDAAgD,2CAA2C,0DAA0D,oDAAoD,iDAAiD,8DAA8D,6CAA6C,uDAAuD,iEAAiE,6DAA6D,yDAAyD,8GAA8G,iHAAiH,mHAAmH,uGAAuG,qCAAqC,qFAAqF,8EAA8E,uEAAuE,CAAC,cAAc;CACv5C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAAG,EAAE,EAAE,4CAA4C;CACnD,uCAAuC,CAAC;CACxC,kDAAkD;CAClD,CAAC;AACF,MAAM,WAAW,GAAG,YAAY,+BAA+B,0EAA0E,wDAAwD,+BAA+B,sDAAsD,mDAAmD,6CAA6C,iEAAiE,gEAAgE,4DAA4D,2DAA2D,mEAAmE,iDAAiD,+DAA+D,gEAAgE,yBAAyB;AAC13B,MAAM,QAAQ;CACb,GAAG;CACH,MAAM,GAAG,QAAQ,MAAM,mCAAmC;CAC1D,QAAQ,GAAG,QAAQ,QAAQ,sBAAsB;CACjD,OAAO,GAAG,QAAQ,OAAO,UAAU;CACnC;AACD,MAAM,UAAU;CACf,GAAG;CACH,MAAM,GAAG,sFAAsF,4CAA4C,kDAAkD,oHAAoH,iIAAiI,8CAA8C,UAAU,KAAK;CAC/e,kBAAkB,GAAG,UAAU,kBAAkB,wDAAwD,wEAAwE;CACjL,WAAW,GAAG,UAAU,WAAW,WAAW;CAC9C;AACD,MAAM,SAAS;CACd,GAAG;CACH,OAAO,GAAG,SAAS,OAAO,sBAAsB;CAChD;AACD,MAAM,QAAQ;CACb,GAAG;CACH,QAAQ,GAAG,QAAQ,SAAS,0DAA0D;CACtF"}
@@ -0,0 +1,34 @@
1
+ //#region ../skins/dist/default/shared/tailwind/icon-state.js
2
+ const iconState = {
3
+ play: {
4
+ button: "group",
5
+ restart: "hidden opacity-0 group-data-ended:block group-data-ended:opacity-100",
6
+ play: "hidden opacity-0 group-not-data-ended:group-data-paused:block group-not-data-ended:group-data-paused:opacity-100",
7
+ pause: "hidden opacity-0 group-not-data-paused:group-not-data-ended:block group-not-data-paused:group-not-data-ended:opacity-100"
8
+ },
9
+ mute: {
10
+ button: "group",
11
+ volumeOff: "hidden opacity-0 group-data-muted:block group-data-muted:opacity-100",
12
+ volumeLow: "hidden opacity-0 group-not-data-muted:group-data-[volume-level=low]:block group-not-data-muted:group-data-[volume-level=low]:opacity-100",
13
+ volumeHigh: "hidden opacity-0 group-not-data-muted:group-not-data-[volume-level=low]:block group-not-data-muted:group-not-data-[volume-level=low]:opacity-100"
14
+ },
15
+ fullscreen: {
16
+ button: "group",
17
+ enter: "hidden opacity-0 group-not-data-fullscreen:block group-not-data-fullscreen:opacity-100",
18
+ exit: "hidden opacity-0 group-data-fullscreen:block group-data-fullscreen:opacity-100"
19
+ },
20
+ captions: {
21
+ button: "group",
22
+ off: "hidden opacity-0 group-not-data-active:block group-not-data-active:opacity-100",
23
+ on: "hidden opacity-0 group-data-active:block group-data-active:opacity-100"
24
+ },
25
+ pip: {
26
+ button: "group",
27
+ off: "hidden opacity-0 group-not-data-pip:block group-not-data-pip:opacity-100",
28
+ on: "hidden opacity-0 group-data-pip:block group-data-pip:opacity-100"
29
+ }
30
+ };
31
+
32
+ //#endregion
33
+ export { iconState };
34
+ //# sourceMappingURL=icon-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-state.js","names":[],"sources":["../../../../../../../../skins/dist/default/shared/tailwind/icon-state.js"],"sourcesContent":["//#region src/shared/tailwind/icon-state.ts\nconst iconState = {\n\tplay: {\n\t\tbutton: \"group\",\n\t\trestart: \"hidden opacity-0 group-data-ended:block group-data-ended:opacity-100\",\n\t\tplay: \"hidden opacity-0 group-not-data-ended:group-data-paused:block group-not-data-ended:group-data-paused:opacity-100\",\n\t\tpause: \"hidden opacity-0 group-not-data-paused:group-not-data-ended:block group-not-data-paused:group-not-data-ended:opacity-100\"\n\t},\n\tmute: {\n\t\tbutton: \"group\",\n\t\tvolumeOff: \"hidden opacity-0 group-data-muted:block group-data-muted:opacity-100\",\n\t\tvolumeLow: \"hidden opacity-0 group-not-data-muted:group-data-[volume-level=low]:block group-not-data-muted:group-data-[volume-level=low]:opacity-100\",\n\t\tvolumeHigh: \"hidden opacity-0 group-not-data-muted:group-not-data-[volume-level=low]:block group-not-data-muted:group-not-data-[volume-level=low]:opacity-100\"\n\t},\n\tfullscreen: {\n\t\tbutton: \"group\",\n\t\tenter: \"hidden opacity-0 group-not-data-fullscreen:block group-not-data-fullscreen:opacity-100\",\n\t\texit: \"hidden opacity-0 group-data-fullscreen:block group-data-fullscreen:opacity-100\"\n\t},\n\tcaptions: {\n\t\tbutton: \"group\",\n\t\toff: \"hidden opacity-0 group-not-data-active:block group-not-data-active:opacity-100\",\n\t\ton: \"hidden opacity-0 group-data-active:block group-data-active:opacity-100\"\n\t},\n\tpip: {\n\t\tbutton: \"group\",\n\t\toff: \"hidden opacity-0 group-not-data-pip:block group-not-data-pip:opacity-100\",\n\t\ton: \"hidden opacity-0 group-data-pip:block group-data-pip:opacity-100\"\n\t}\n};\n\n//#endregion\nexport { iconState };\n//# sourceMappingURL=icon-state.js.map"],"mappings":";AACA,MAAM,YAAY;CACjB,MAAM;EACL,QAAQ;EACR,SAAS;EACT,MAAM;EACN,OAAO;EACP;CACD,MAAM;EACL,QAAQ;EACR,WAAW;EACX,WAAW;EACX,YAAY;EACZ;CACD,YAAY;EACX,QAAQ;EACR,OAAO;EACP,MAAM;EACN;CACD,UAAU;EACT,QAAQ;EACR,KAAK;EACL,IAAI;EACJ;CACD,KAAK;EACJ,QAAQ;EACR,KAAK;EACL,IAAI;EACJ;CACD"}
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
 
3
+ import { useLatestRef } from "../../utils/use-latest-ref.js";
3
4
  import { useDestroy } from "../../utils/use-destroy.js";
4
5
  import { AlertDialogContextProvider } from "./context.js";
5
- import { useLatestRef } from "../../utils/use-latest-ref.js";
6
6
  import { useSafeId } from "../../utils/use-safe-id.js";
7
7
  import { createAlertDialog, createTransition } from "@videojs/core/dom";
8
8
  import { useSnapshot } from "@videojs/store/react";
@@ -1,5 +1,4 @@
1
1
  import { AlertDialogApi } from "@videojs/core/dom";
2
- import "react";
3
2
  import { AlertDialogCore, StateAttrMap as StateAttrMap$1 } from "@videojs/core";
4
3
 
5
4
  //#region src/ui/alert-dialog/context.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","names":[],"sources":["../../../../src/ui/alert-dialog/context.tsx"],"mappings":";;;;;UAMiB,uBAAA;EACf,IAAA,EAAM,eAAA;EACN,MAAA,EAAQ,cAAA;EACR,KAAA,EAAO,eAAA,CAAgB,KAAA;EACvB,YAAA,EAAc,cAAA,CAAa,eAAA,CAAgB,KAAA;AAAA;AAAA,iBAO7B,qBAAA,CAAA,GAAyB,uBAAA"}
1
+ {"version":3,"file":"context.d.ts","names":[],"sources":["../../../../src/ui/alert-dialog/context.tsx"],"mappings":";;;;UAMiB,uBAAA;EACf,IAAA,EAAM,eAAA;EACN,MAAA,EAAQ,cAAA;EACR,KAAA,EAAO,eAAA,CAAgB,KAAA;EACvB,YAAA,EAAc,cAAA,CAAa,eAAA,CAAgB,KAAA;AAAA;AAAA,iBAO7B,qBAAA,CAAA,GAAyB,uBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"buffering-indicator.d.ts","names":[],"sources":["../../../../src/ui/buffering-indicator/buffering-indicator.tsx"],"mappings":";;;;;UAWiB,uBAAA,SACP,gBAAA,QAAwB,sBAAA,CAAuB,KAAA,GACrD,sBAAA,CAAuB,KAAA;;AAF3B;;;;;;;;;;;;;;;AAsBA;;cAAa,kBAAA,EAAkB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,uBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBAoCd,kBAAA;EAAA,KACH,KAAA,GAAQ,uBAAA;EAAA,KACR,KAAA,GAAQ,sBAAA,CAAuB,KAAA;AAAA"}
1
+ {"version":3,"file":"buffering-indicator.d.ts","names":[],"sources":["../../../../src/ui/buffering-indicator/buffering-indicator.tsx"],"mappings":";;;;;UAYiB,uBAAA,SACP,gBAAA,QAAwB,sBAAA,CAAuB,KAAA,GACrD,sBAAA,CAAuB,KAAA;;AAF3B;;;;;;;;;;;;;;;AAsBA;;cAAa,kBAAA,EAAkB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,uBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBAqCd,kBAAA;EAAA,KACH,KAAA,GAAQ,uBAAA;EAAA,KACR,KAAA,GAAQ,sBAAA,CAAuB,KAAA;AAAA"}
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { usePlayer } from "../../player/context.js";
4
+ import { useDestroy } from "../../utils/use-destroy.js";
4
5
  import { renderElement } from "../../utils/use-render.js";
5
6
  import { logMissingFeature, selectPlayback } from "@videojs/core/dom";
6
7
  import { forwardRef, useState, useSyncExternalStore } from "react";
@@ -29,6 +30,7 @@ const BufferingIndicator = forwardRef(function BufferingIndicator(componentProps
29
30
  const { render, className, style, delay, ...elementProps } = componentProps;
30
31
  const playback = usePlayer(selectPlayback);
31
32
  const [core] = useState(() => new BufferingIndicatorCore());
33
+ useDestroy(core);
32
34
  core.setProps({ delay });
33
35
  if (playback) core.update(playback);
34
36
  const state = useSyncExternalStore((cb) => core.state.subscribe(cb), () => core.state.current, () => core.state.current);
@@ -1 +1 @@
1
- {"version":3,"file":"buffering-indicator.js","names":[],"sources":["../../../../src/ui/buffering-indicator/buffering-indicator.tsx"],"sourcesContent":["'use client';\n\nimport { BufferingIndicatorCore, BufferingIndicatorDataAttrs } from '@videojs/core';\nimport { logMissingFeature, selectPlayback } from '@videojs/core/dom';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef, useState, useSyncExternalStore } from 'react';\n\nimport { usePlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\n\nexport interface BufferingIndicatorProps\n extends UIComponentProps<'div', BufferingIndicatorCore.State>,\n BufferingIndicatorCore.Props {}\n\n/**\n * Displays a buffering indicator when media is waiting for data.\n *\n * Visibility is delayed (default 500ms) to avoid flashing on quick buffers.\n *\n * @example\n * ```tsx\n * <BufferingIndicator />\n *\n * <BufferingIndicator delay={1000} />\n *\n * <BufferingIndicator\n * render={(props, state) => (\n * <div {...props}>{state.visible && <Spinner />}</div>\n * )}\n * />\n * ```\n */\nexport const BufferingIndicator = forwardRef(function BufferingIndicator(\n componentProps: BufferingIndicatorProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const { render, className, style, delay, ...elementProps } = componentProps;\n\n const playback = usePlayer(selectPlayback);\n\n const [core] = useState(() => new BufferingIndicatorCore());\n core.setProps({ delay });\n\n if (playback) core.update(playback);\n\n const state = useSyncExternalStore(\n (cb) => core.state.subscribe(cb),\n () => core.state.current,\n () => core.state.current\n );\n\n if (!playback) {\n if (__DEV__) logMissingFeature('BufferingIndicator', 'playback');\n return null;\n }\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: BufferingIndicatorDataAttrs,\n ref: [forwardedRef],\n props: [elementProps],\n }\n );\n});\n\nexport namespace BufferingIndicator {\n export type Props = BufferingIndicatorProps;\n export type State = BufferingIndicatorCore.State;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,MAAa,qBAAqB,WAAW,SAAS,mBACpD,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,OAAO,GAAG,iBAAiB;CAE7D,MAAM,WAAW,UAAU,eAAe;CAE1C,MAAM,CAAC,QAAQ,eAAe,IAAI,wBAAwB,CAAC;AAC3D,MAAK,SAAS,EAAE,OAAO,CAAC;AAExB,KAAI,SAAU,MAAK,OAAO,SAAS;CAEnC,MAAM,QAAQ,sBACX,OAAO,KAAK,MAAM,UAAU,GAAG,QAC1B,KAAK,MAAM,eACX,KAAK,MAAM,QAClB;AAED,KAAI,CAAC,UAAU;AACA,oBAAkB,sBAAsB,WAAW;AAChE,SAAO;;AAGT,QAAO,cACL,OACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc;EACd,KAAK,CAAC,aAAa;EACnB,OAAO,CAAC,aAAa;EACtB,CACF;EACD"}
1
+ {"version":3,"file":"buffering-indicator.js","names":[],"sources":["../../../../src/ui/buffering-indicator/buffering-indicator.tsx"],"sourcesContent":["'use client';\n\nimport { BufferingIndicatorCore, BufferingIndicatorDataAttrs } from '@videojs/core';\nimport { logMissingFeature, selectPlayback } from '@videojs/core/dom';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef, useState, useSyncExternalStore } from 'react';\n\nimport { 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 BufferingIndicatorProps\n extends UIComponentProps<'div', BufferingIndicatorCore.State>,\n BufferingIndicatorCore.Props {}\n\n/**\n * Displays a buffering indicator when media is waiting for data.\n *\n * Visibility is delayed (default 500ms) to avoid flashing on quick buffers.\n *\n * @example\n * ```tsx\n * <BufferingIndicator />\n *\n * <BufferingIndicator delay={1000} />\n *\n * <BufferingIndicator\n * render={(props, state) => (\n * <div {...props}>{state.visible && <Spinner />}</div>\n * )}\n * />\n * ```\n */\nexport const BufferingIndicator = forwardRef(function BufferingIndicator(\n componentProps: BufferingIndicatorProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const { render, className, style, delay, ...elementProps } = componentProps;\n\n const playback = usePlayer(selectPlayback);\n\n const [core] = useState(() => new BufferingIndicatorCore());\n useDestroy(core);\n core.setProps({ delay });\n\n if (playback) core.update(playback);\n\n const state = useSyncExternalStore(\n (cb) => core.state.subscribe(cb),\n () => core.state.current,\n () => core.state.current\n );\n\n if (!playback) {\n if (__DEV__) logMissingFeature('BufferingIndicator', 'playback');\n return null;\n }\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: BufferingIndicatorDataAttrs,\n ref: [forwardedRef],\n props: [elementProps],\n }\n );\n});\n\nexport namespace BufferingIndicator {\n export type Props = BufferingIndicatorProps;\n export type State = BufferingIndicatorCore.State;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAa,qBAAqB,WAAW,SAAS,mBACpD,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,OAAO,GAAG,iBAAiB;CAE7D,MAAM,WAAW,UAAU,eAAe;CAE1C,MAAM,CAAC,QAAQ,eAAe,IAAI,wBAAwB,CAAC;AAC3D,YAAW,KAAK;AAChB,MAAK,SAAS,EAAE,OAAO,CAAC;AAExB,KAAI,SAAU,MAAK,OAAO,SAAS;CAEnC,MAAM,QAAQ,sBACX,OAAO,KAAK,MAAM,UAAU,GAAG,QAC1B,KAAK,MAAM,eACX,KAAK,MAAM,QAClB;AAED,KAAI,CAAC,UAAU;AACA,oBAAkB,sBAAsB,WAAW;AAChE,SAAO;;AAGT,QAAO,cACL,OACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc;EACd,KAAK,CAAC,aAAa;EACnB,OAAO,CAAC,aAAa;EACtB,CACF;EACD"}
@@ -1,4 +1,4 @@
1
- import { SliderOptions, SliderRootProps, SliderThumbProps } from "@videojs/core/dom";
1
+ import { SliderOptions, SliderRootProps, SliderRootStyle, SliderThumbProps } from "@videojs/core/dom";
2
2
  import { SliderInput, SliderState } from "@videojs/core";
3
3
 
4
4
  //#region src/ui/hooks/use-slider.d.ts
@@ -17,6 +17,7 @@ interface UseSliderReturnValue<State extends SliderState = SliderState> {
17
17
  rootRef: React.RefCallback<HTMLElement>;
18
18
  thumbRef: React.RefCallback<HTMLElement>;
19
19
  rootProps: SliderRootProps;
20
+ rootStyle: SliderRootStyle;
20
21
  thumbProps: SliderThumbProps;
21
22
  }
22
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"use-slider.d.ts","names":[],"sources":["../../../../src/ui/hooks/use-slider.ts"],"mappings":";;;;UAiBiB,gBAAA,eAA+B,WAAA,GAAc,WAAA,UACpD,IAAA,CACN,aAAA;EAUF,YAAA,GAAe,KAAA,EAAO,WAAA,KAAgB,KAAA;EACtC,WAAA;EACA,QAAA;EAd+B;EAgB/B,aAAA,KAAkB,UAAA,UAAoB,SAAA,UAAmB,SAAA;EAhBG;EAkB5D,UAAA,GAAa,KAAA,EAAO,KAAA,KAAU,MAAA;AAAA;AAAA,UAGf,oBAAA,eAAmC,WAAA,GAAc,WAAA;EAChE,KAAA,EAAO,KAAA;EACP,OAAA,EAAS,MAAA;EACT,OAAA,EAAS,KAAA,CAAM,WAAA,CAAY,WAAA;EAC3B,QAAA,EAAU,KAAA,CAAM,WAAA,CAAY,WAAA;EAC5B,SAAA,EAAW,eAAA;EACX,UAAA,EAAY,gBAAA;AAAA;;;;;;;;iBAUE,SAAA,eAAwB,WAAA,GAAc,WAAA,CAAA,CACpD,OAAA,EAAS,gBAAA,CAAiB,KAAA,IACzB,oBAAA,CAAqB,KAAA;AAAA,kBAmEP,SAAA;EAAA,KACH,OAAA,GAAU,gBAAA;EAAA,KACV,WAAA,GAAc,oBAAA;AAAA"}
1
+ {"version":3,"file":"use-slider.d.ts","names":[],"sources":["../../../../src/ui/hooks/use-slider.ts"],"mappings":";;;;UAkBiB,gBAAA,eAA+B,WAAA,GAAc,WAAA,UACpD,IAAA,CACN,aAAA;EAUF,YAAA,GAAe,KAAA,EAAO,WAAA,KAAgB,KAAA;EACtC,WAAA;EACA,QAAA;EAd+B;EAgB/B,aAAA,KAAkB,UAAA,UAAoB,SAAA,UAAmB,SAAA;EAhBG;EAkB5D,UAAA,GAAa,KAAA,EAAO,KAAA,KAAU,MAAA;AAAA;AAAA,UAGf,oBAAA,eAAmC,WAAA,GAAc,WAAA;EAChE,KAAA,EAAO,KAAA;EACP,OAAA,EAAS,MAAA;EACT,OAAA,EAAS,KAAA,CAAM,WAAA,CAAY,WAAA;EAC3B,QAAA,EAAU,KAAA,CAAM,WAAA,CAAY,WAAA;EAC5B,SAAA,EAAW,eAAA;EACX,SAAA,EAAW,eAAA;EACX,UAAA,EAAY,gBAAA;AAAA;;;;;;;;iBAUE,SAAA,eAAwB,WAAA,GAAc,WAAA,CAAA,CACpD,OAAA,EAAS,gBAAA,CAAiB,KAAA,IACzB,oBAAA,CAAqB,KAAA;AAAA,kBAoEP,SAAA;EAAA,KACH,OAAA,GAAU,gBAAA;EAAA,KACV,WAAA,GAAc,oBAAA;AAAA"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { useDestroy } from "../../utils/use-destroy.js";
4
3
  import { useLatestRef } from "../../utils/use-latest-ref.js";
4
+ import { useDestroy } from "../../utils/use-destroy.js";
5
5
  import { useForceRender } from "../../utils/use-force-render.js";
6
6
  import { createSlider } from "@videojs/core/dom";
7
7
  import { useSnapshot } from "@videojs/store/react";
@@ -55,6 +55,7 @@ function useSlider(options) {
55
55
  thumbElementRef.current = element;
56
56
  }, []),
57
57
  rootProps: slider.rootProps,
58
+ rootStyle: slider.rootStyle,
58
59
  thumbProps: slider.thumbProps
59
60
  };
60
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-slider.js","names":[],"sources":["../../../../src/ui/hooks/use-slider.ts"],"sourcesContent":["'use client';\n\nimport type { SliderInput, SliderState } from '@videojs/core';\nimport {\n createSlider,\n type SliderApi,\n type SliderOptions,\n type SliderRootProps,\n type SliderThumbProps,\n} from '@videojs/core/dom';\nimport { useSnapshot } from '@videojs/store/react';\nimport { isRTL } from '@videojs/utils/dom';\nimport { useCallback, useLayoutEffect, useRef, useState } from 'react';\nimport { useDestroy } from '../../utils/use-destroy';\nimport { useForceRender } from '../../utils/use-force-render';\nimport { useLatestRef } from '../../utils/use-latest-ref';\n\nexport interface UseSliderOptions<State extends SliderState = SliderState>\n extends Pick<\n SliderOptions,\n | 'getPercent'\n | 'getStepPercent'\n | 'getLargeStepPercent'\n | 'commitThrottle'\n | 'onValueChange'\n | 'onValueCommit'\n | 'onDragStart'\n | 'onDragEnd'\n > {\n computeState: (input: SliderInput) => State;\n orientation?: 'horizontal' | 'vertical' | undefined;\n disabled?: boolean | undefined;\n /** Adjust a raw 0–100 percent for thumb alignment. Called for fill and pointer percents. */\n adjustPercent?: ((rawPercent: number, thumbSize: number, trackSize: number) => number) | undefined;\n /** Compute CSS variable map from the (possibly alignment-adjusted) state. */\n getCSSVars: (state: State) => Record<string, string>;\n}\n\nexport interface UseSliderReturnValue<State extends SliderState = SliderState> {\n state: State;\n cssVars: Record<string, string>;\n rootRef: React.RefCallback<HTMLElement>;\n thumbRef: React.RefCallback<HTMLElement>;\n rootProps: SliderRootProps;\n thumbProps: SliderThumbProps;\n}\n\n/**\n * Manages slider input lifecycle for React.\n *\n * Wraps `createSlider()` from `@videojs/core/dom` and subscribes to its\n * input state via `useSnapshot`. Returns split props for the root\n * (pointer events) and thumb (keyboard/focus) elements.\n */\nexport function useSlider<State extends SliderState = SliderState>(\n options: UseSliderOptions<State>\n): UseSliderReturnValue<State> {\n const optionsRef = useLatestRef(options);\n\n const rootElementRef = useRef<HTMLElement | null>(null);\n const thumbElementRef = useRef<HTMLElement | null>(null);\n const forceRender = useForceRender();\n\n // Lazy-init the slider handle. Stable across re-renders.\n const [slider] = useState<SliderApi>(() => {\n const stableOptions: SliderOptions = {\n getElement: () => rootElementRef.current!,\n getThumbElement: () => thumbElementRef.current,\n getOrientation: () => optionsRef.current.orientation ?? 'horizontal',\n isRTL: () => (rootElementRef.current ? isRTL(rootElementRef.current) : false),\n isDisabled: () => optionsRef.current.disabled ?? false,\n getPercent: () => optionsRef.current.getPercent(),\n getStepPercent: () => optionsRef.current.getStepPercent(),\n getLargeStepPercent: () => optionsRef.current.getLargeStepPercent(),\n commitThrottle: optionsRef.current.commitThrottle,\n adjustPercent: optionsRef.current.adjustPercent,\n onValueChange: (percent) => optionsRef.current.onValueChange?.(percent),\n onValueCommit: (percent) => optionsRef.current.onValueCommit?.(percent),\n onDragStart: () => optionsRef.current.onDragStart?.(),\n onDragEnd: () => optionsRef.current.onDragEnd?.(),\n };\n\n return createSlider(stableOptions);\n });\n\n useDestroy(slider);\n\n // Subscribe to slider input state.\n const input = useSnapshot(slider.input);\n\n // Compute derived state from input + caller-provided projection.\n const state = options.computeState(input);\n\n // Force a synchronous re-render after mount so edge thumb alignment\n // can read DOM measurements from the now-populated element refs.\n useLayoutEffect(() => {\n if (state.thumbAlignment === 'edge' && rootElementRef.current && thumbElementRef.current) {\n forceRender();\n }\n }, [state.thumbAlignment]);\n\n // Adjust CSS var percents for edge thumb alignment using live DOM measurements.\n const cssVars = options.getCSSVars(slider.adjustForAlignment(state));\n\n // Ref callbacks for root and thumb elements.\n const rootRef = useCallback((element: HTMLElement | null) => {\n rootElementRef.current = element;\n }, []);\n\n const thumbRef = useCallback((element: HTMLElement | null) => {\n thumbElementRef.current = element;\n }, []);\n\n return {\n state,\n cssVars,\n rootRef,\n thumbRef,\n rootProps: slider.rootProps,\n thumbProps: slider.thumbProps,\n };\n}\n\nexport namespace useSlider {\n export type Options = UseSliderOptions;\n export type ReturnValue = UseSliderReturnValue;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAsDA,SAAgB,UACd,SAC6B;CAC7B,MAAM,aAAa,aAAa,QAAQ;CAExC,MAAM,iBAAiB,OAA2B,KAAK;CACvD,MAAM,kBAAkB,OAA2B,KAAK;CACxD,MAAM,cAAc,gBAAgB;CAGpC,MAAM,CAAC,UAAU,eAA0B;AAkBzC,SAAO,aAjB8B;GACnC,kBAAkB,eAAe;GACjC,uBAAuB,gBAAgB;GACvC,sBAAsB,WAAW,QAAQ,eAAe;GACxD,aAAc,eAAe,UAAU,MAAM,eAAe,QAAQ,GAAG;GACvE,kBAAkB,WAAW,QAAQ,YAAY;GACjD,kBAAkB,WAAW,QAAQ,YAAY;GACjD,sBAAsB,WAAW,QAAQ,gBAAgB;GACzD,2BAA2B,WAAW,QAAQ,qBAAqB;GACnE,gBAAgB,WAAW,QAAQ;GACnC,eAAe,WAAW,QAAQ;GAClC,gBAAgB,YAAY,WAAW,QAAQ,gBAAgB,QAAQ;GACvE,gBAAgB,YAAY,WAAW,QAAQ,gBAAgB,QAAQ;GACvE,mBAAmB,WAAW,QAAQ,eAAe;GACrD,iBAAiB,WAAW,QAAQ,aAAa;GAClD,CAEiC;GAClC;AAEF,YAAW,OAAO;CAGlB,MAAM,QAAQ,YAAY,OAAO,MAAM;CAGvC,MAAM,QAAQ,QAAQ,aAAa,MAAM;AAIzC,uBAAsB;AACpB,MAAI,MAAM,mBAAmB,UAAU,eAAe,WAAW,gBAAgB,QAC/E,cAAa;IAEd,CAAC,MAAM,eAAe,CAAC;AAc1B,QAAO;EACL;EACA,SAbc,QAAQ,WAAW,OAAO,mBAAmB,MAAM,CAAC;EAclE,SAXc,aAAa,YAAgC;AAC3D,kBAAe,UAAU;KACxB,EAAE,CAAC;EAUJ,UARe,aAAa,YAAgC;AAC5D,mBAAgB,UAAU;KACzB,EAAE,CAAC;EAOJ,WAAW,OAAO;EAClB,YAAY,OAAO;EACpB"}
1
+ {"version":3,"file":"use-slider.js","names":[],"sources":["../../../../src/ui/hooks/use-slider.ts"],"sourcesContent":["'use client';\n\nimport type { SliderInput, SliderState } from '@videojs/core';\nimport {\n createSlider,\n type SliderApi,\n type SliderOptions,\n type SliderRootProps,\n type SliderRootStyle,\n type SliderThumbProps,\n} from '@videojs/core/dom';\nimport { useSnapshot } from '@videojs/store/react';\nimport { isRTL } from '@videojs/utils/dom';\nimport { useCallback, useLayoutEffect, useRef, useState } from 'react';\nimport { useDestroy } from '../../utils/use-destroy';\nimport { useForceRender } from '../../utils/use-force-render';\nimport { useLatestRef } from '../../utils/use-latest-ref';\n\nexport interface UseSliderOptions<State extends SliderState = SliderState>\n extends Pick<\n SliderOptions,\n | 'getPercent'\n | 'getStepPercent'\n | 'getLargeStepPercent'\n | 'commitThrottle'\n | 'onValueChange'\n | 'onValueCommit'\n | 'onDragStart'\n | 'onDragEnd'\n > {\n computeState: (input: SliderInput) => State;\n orientation?: 'horizontal' | 'vertical' | undefined;\n disabled?: boolean | undefined;\n /** Adjust a raw 0–100 percent for thumb alignment. Called for fill and pointer percents. */\n adjustPercent?: ((rawPercent: number, thumbSize: number, trackSize: number) => number) | undefined;\n /** Compute CSS variable map from the (possibly alignment-adjusted) state. */\n getCSSVars: (state: State) => Record<string, string>;\n}\n\nexport interface UseSliderReturnValue<State extends SliderState = SliderState> {\n state: State;\n cssVars: Record<string, string>;\n rootRef: React.RefCallback<HTMLElement>;\n thumbRef: React.RefCallback<HTMLElement>;\n rootProps: SliderRootProps;\n rootStyle: SliderRootStyle;\n thumbProps: SliderThumbProps;\n}\n\n/**\n * Manages slider input lifecycle for React.\n *\n * Wraps `createSlider()` from `@videojs/core/dom` and subscribes to its\n * input state via `useSnapshot`. Returns split props for the root\n * (pointer events) and thumb (keyboard/focus) elements.\n */\nexport function useSlider<State extends SliderState = SliderState>(\n options: UseSliderOptions<State>\n): UseSliderReturnValue<State> {\n const optionsRef = useLatestRef(options);\n\n const rootElementRef = useRef<HTMLElement | null>(null);\n const thumbElementRef = useRef<HTMLElement | null>(null);\n const forceRender = useForceRender();\n\n // Lazy-init the slider handle. Stable across re-renders.\n const [slider] = useState<SliderApi>(() => {\n const stableOptions: SliderOptions = {\n getElement: () => rootElementRef.current!,\n getThumbElement: () => thumbElementRef.current,\n getOrientation: () => optionsRef.current.orientation ?? 'horizontal',\n isRTL: () => (rootElementRef.current ? isRTL(rootElementRef.current) : false),\n isDisabled: () => optionsRef.current.disabled ?? false,\n getPercent: () => optionsRef.current.getPercent(),\n getStepPercent: () => optionsRef.current.getStepPercent(),\n getLargeStepPercent: () => optionsRef.current.getLargeStepPercent(),\n commitThrottle: optionsRef.current.commitThrottle,\n adjustPercent: optionsRef.current.adjustPercent,\n onValueChange: (percent) => optionsRef.current.onValueChange?.(percent),\n onValueCommit: (percent) => optionsRef.current.onValueCommit?.(percent),\n onDragStart: () => optionsRef.current.onDragStart?.(),\n onDragEnd: () => optionsRef.current.onDragEnd?.(),\n };\n\n return createSlider(stableOptions);\n });\n\n useDestroy(slider);\n\n // Subscribe to slider input state.\n const input = useSnapshot(slider.input);\n\n // Compute derived state from input + caller-provided projection.\n const state = options.computeState(input);\n\n // Force a synchronous re-render after mount so edge thumb alignment\n // can read DOM measurements from the now-populated element refs.\n useLayoutEffect(() => {\n if (state.thumbAlignment === 'edge' && rootElementRef.current && thumbElementRef.current) {\n forceRender();\n }\n }, [state.thumbAlignment]);\n\n // Adjust CSS var percents for edge thumb alignment using live DOM measurements.\n const cssVars = options.getCSSVars(slider.adjustForAlignment(state));\n\n // Ref callbacks for root and thumb elements.\n const rootRef = useCallback((element: HTMLElement | null) => {\n rootElementRef.current = element;\n }, []);\n\n const thumbRef = useCallback((element: HTMLElement | null) => {\n thumbElementRef.current = element;\n }, []);\n\n return {\n state,\n cssVars,\n rootRef,\n thumbRef,\n rootProps: slider.rootProps,\n rootStyle: slider.rootStyle,\n thumbProps: slider.thumbProps,\n };\n}\n\nexport namespace useSlider {\n export type Options = UseSliderOptions;\n export type ReturnValue = UseSliderReturnValue;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAwDA,SAAgB,UACd,SAC6B;CAC7B,MAAM,aAAa,aAAa,QAAQ;CAExC,MAAM,iBAAiB,OAA2B,KAAK;CACvD,MAAM,kBAAkB,OAA2B,KAAK;CACxD,MAAM,cAAc,gBAAgB;CAGpC,MAAM,CAAC,UAAU,eAA0B;AAkBzC,SAAO,aAjB8B;GACnC,kBAAkB,eAAe;GACjC,uBAAuB,gBAAgB;GACvC,sBAAsB,WAAW,QAAQ,eAAe;GACxD,aAAc,eAAe,UAAU,MAAM,eAAe,QAAQ,GAAG;GACvE,kBAAkB,WAAW,QAAQ,YAAY;GACjD,kBAAkB,WAAW,QAAQ,YAAY;GACjD,sBAAsB,WAAW,QAAQ,gBAAgB;GACzD,2BAA2B,WAAW,QAAQ,qBAAqB;GACnE,gBAAgB,WAAW,QAAQ;GACnC,eAAe,WAAW,QAAQ;GAClC,gBAAgB,YAAY,WAAW,QAAQ,gBAAgB,QAAQ;GACvE,gBAAgB,YAAY,WAAW,QAAQ,gBAAgB,QAAQ;GACvE,mBAAmB,WAAW,QAAQ,eAAe;GACrD,iBAAiB,WAAW,QAAQ,aAAa;GAClD,CAEiC;GAClC;AAEF,YAAW,OAAO;CAGlB,MAAM,QAAQ,YAAY,OAAO,MAAM;CAGvC,MAAM,QAAQ,QAAQ,aAAa,MAAM;AAIzC,uBAAsB;AACpB,MAAI,MAAM,mBAAmB,UAAU,eAAe,WAAW,gBAAgB,QAC/E,cAAa;IAEd,CAAC,MAAM,eAAe,CAAC;AAc1B,QAAO;EACL;EACA,SAbc,QAAQ,WAAW,OAAO,mBAAmB,MAAM,CAAC;EAclE,SAXc,aAAa,YAAgC;AAC3D,kBAAe,UAAU;KACxB,EAAE,CAAC;EAUJ,UARe,aAAa,YAAgC;AAC5D,mBAAgB,UAAU;KACzB,EAAE,CAAC;EAOJ,WAAW,OAAO;EAClB,WAAW,OAAO;EAClB,YAAY,OAAO;EACpB"}
@@ -1,5 +1,4 @@
1
1
  import { PopoverApi } from "@videojs/core/dom";
2
- import "react";
3
2
  import { PopoverCore, StateAttrMap as StateAttrMap$1 } from "@videojs/core";
4
3
 
5
4
  //#region src/ui/popover/context.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","names":[],"sources":["../../../../src/ui/popover/context.tsx"],"mappings":";;;;;UAMiB,mBAAA;EACf,IAAA,EAAM,WAAA;EACN,OAAA,EAAS,UAAA;EACT,KAAA,EAAO,WAAA,CAAY,KAAA;EACnB,YAAA,EAAc,cAAA,CAAa,WAAA,CAAY,KAAA;EACvC,UAAA;EACA,OAAA;AAAA;AAAA,iBAOc,iBAAA,CAAA,GAAqB,mBAAA"}
1
+ {"version":3,"file":"context.d.ts","names":[],"sources":["../../../../src/ui/popover/context.tsx"],"mappings":";;;;UAMiB,mBAAA;EACf,IAAA,EAAM,WAAA;EACN,OAAA,EAAS,UAAA;EACT,KAAA,EAAO,WAAA,CAAY,KAAA;EACnB,YAAA,EAAc,cAAA,CAAa,WAAA,CAAY,KAAA;EACvC,UAAA;EACA,OAAA;AAAA;AAAA,iBAOc,iBAAA,CAAA,GAAqB,mBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"popover-popup.d.ts","names":[],"sources":["../../../../src/ui/popover/popover-popup.tsx"],"mappings":";;;;;UAaiB,iBAAA,SAA0B,gBAAA,QAAwB,YAAA;;cAKtD,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,iBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBA6GR,YAAA;EAAA,KACH,KAAA,GAAQ,iBAAA;EAAA,KACR,KAAA,GAAQ,YAAA;AAAA"}
1
+ {"version":3,"file":"popover-popup.d.ts","names":[],"sources":["../../../../src/ui/popover/popover-popup.tsx"],"mappings":";;;;;UAaiB,iBAAA,SAA0B,gBAAA,QAAwB,YAAA;;cAKtD,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,iBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBAkIR,YAAA;EAAA,KACH,KAAA,GAAQ,iBAAA;EAAA,KACR,KAAA,GAAQ,YAAA;AAAA"}
@@ -3,7 +3,7 @@
3
3
  import { useComposedRefs } from "../../utils/use-composed-refs.js";
4
4
  import { renderElement } from "../../utils/use-render.js";
5
5
  import { usePopoverContext } from "./context.js";
6
- import { getAnchorPositionStyle, resolveOffsets } from "@videojs/core/dom";
6
+ import { getAnchorPositionStyle, getPopupPositionRect, resolveOffsets } from "@videojs/core/dom";
7
7
  import { forwardRef, useCallback, useLayoutEffect, useMemo, useRef, useState } from "react";
8
8
  import { supportsAnchorPositioning } from "@videojs/utils/dom";
9
9
 
@@ -41,14 +41,22 @@ const PopoverPopup = forwardRef(function PopoverPopup({ render, className, style
41
41
  const triggerEl = popover.triggerElement;
42
42
  const popupEl = internalRef.current;
43
43
  if (!triggerEl || !popupEl) return;
44
- setManualStyle(getAnchorPositionStyle(anchorName, posOpts, triggerEl.getBoundingClientRect(), popupEl.getBoundingClientRect(), document.documentElement.getBoundingClientRect(), resolveOffsets(popupEl)));
44
+ setManualStyle(getAnchorPositionStyle(anchorName, posOpts, triggerEl.getBoundingClientRect(), getPopupPositionRect(popupEl), document.documentElement.getBoundingClientRect(), resolveOffsets(popupEl)));
45
45
  }
46
46
  measure();
47
+ const triggerEl = popover.triggerElement;
48
+ const popupEl = internalRef.current;
47
49
  let rafId = 0;
48
50
  function reposition() {
49
51
  cancelAnimationFrame(rafId);
50
52
  rafId = requestAnimationFrame(measure);
51
53
  }
54
+ reposition();
55
+ const resizeObserver = typeof ResizeObserver === "function" ? new ResizeObserver(() => {
56
+ reposition();
57
+ }) : null;
58
+ if (triggerEl && resizeObserver) resizeObserver.observe(triggerEl);
59
+ if (popupEl && resizeObserver) resizeObserver.observe(popupEl);
52
60
  window.addEventListener("scroll", reposition, {
53
61
  capture: true,
54
62
  passive: true
@@ -56,6 +64,7 @@ const PopoverPopup = forwardRef(function PopoverPopup({ render, className, style
56
64
  window.addEventListener("resize", reposition);
57
65
  return () => {
58
66
  cancelAnimationFrame(rafId);
67
+ resizeObserver?.disconnect();
59
68
  window.removeEventListener("scroll", reposition, true);
60
69
  window.removeEventListener("resize", reposition);
61
70
  };
@@ -1 +1 @@
1
- {"version":3,"file":"popover-popup.js","names":[],"sources":["../../../../src/ui/popover/popover-popup.tsx"],"sourcesContent":["'use client';\n\nimport type { PopoverState } from '@videojs/core';\nimport { getAnchorPositionStyle, resolveOffsets } from '@videojs/core/dom';\nimport { supportsAnchorPositioning } from '@videojs/utils/dom';\nimport type { CSSProperties } from 'react';\nimport { forwardRef, useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { useComposedRefs } from '../../utils/use-composed-refs';\nimport { renderElement } from '../../utils/use-render';\nimport { usePopoverContext } from './context';\n\nexport interface PopoverPopupProps extends UIComponentProps<'div', PopoverState> {}\n\nconst POPOVER_RESET: CSSProperties = { position: 'fixed', inset: 'auto', margin: 0 };\n\n/** Container for the popover content. Positioned relative to the trigger using CSS anchor positioning with a JavaScript fallback. */\nexport const PopoverPopup = forwardRef<HTMLDivElement, PopoverPopupProps>(function PopoverPopup(\n { render, className, style, ...elementProps },\n forwardedRef\n) {\n const { core, popover, state, stateAttrMap, anchorName, popupId } = usePopoverContext();\n const internalRef = useRef<HTMLDivElement>(null);\n\n const popupRef = useCallback(\n (el: HTMLDivElement | null) => {\n popover.setPopupElement(el);\n if (el && supportsAnchorPositioning()) {\n el.style.setProperty('position-anchor', `--${anchorName}`);\n }\n },\n [popover, anchorName]\n );\n\n const composedRef = useComposedRefs(forwardedRef, popupRef, internalRef);\n\n // --- Positioning ---\n\n const posOpts = useMemo(() => ({ side: state.side, align: state.align }), [state.side, state.align]);\n\n // CSS Anchor Positioning — computed from state, no measurement needed.\n // `position-anchor` is set imperatively in the ref callback above\n // because React's style prop silently drops unrecognised CSS properties.\n const anchorStyle = useMemo(() => {\n if (!supportsAnchorPositioning()) return null;\n const { positionAnchor: _, ...rest } = getAnchorPositionStyle(anchorName, posOpts);\n return rest as CSSProperties;\n }, [anchorName, posOpts]);\n\n // Manual fallback — measure rects after layout, before paint.\n const [manualStyle, setManualStyle] = useState<CSSProperties | null>(null);\n\n useLayoutEffect(() => {\n if (supportsAnchorPositioning()) return;\n if (!state.open) {\n setManualStyle(null);\n return;\n }\n\n function measure(): void {\n const triggerEl = popover.triggerElement;\n const popupEl = internalRef.current;\n if (!triggerEl || !popupEl) return;\n\n const triggerRect = triggerEl.getBoundingClientRect();\n const popupRect = popupEl.getBoundingClientRect();\n const boundaryRect = document.documentElement.getBoundingClientRect();\n const offsets = resolveOffsets(popupEl);\n\n setManualStyle(\n getAnchorPositionStyle(anchorName, posOpts, triggerRect, popupRect, boundaryRect, offsets) as CSSProperties\n );\n }\n\n measure();\n\n // Recompute on scroll/resize so the popover tracks its trigger.\n let rafId = 0;\n function reposition(): void {\n cancelAnimationFrame(rafId);\n rafId = requestAnimationFrame(measure);\n }\n\n window.addEventListener('scroll', reposition, { capture: true, passive: true });\n window.addEventListener('resize', reposition);\n\n return () => {\n cancelAnimationFrame(rafId);\n window.removeEventListener('scroll', reposition, true);\n window.removeEventListener('resize', reposition);\n };\n }, [state.open, anchorName, posOpts, popover]);\n\n // Anchor path uses computed styles; manual path uses measured styles;\n // fallback resets UA [popover] defaults until positioning is computed.\n const positioningStyle = anchorStyle ?? manualStyle ?? POPOVER_RESET;\n\n // --- Visibility ---\n\n if (!state.open) {\n return null;\n }\n\n // Remap DOM focus events to React synthetic event names.\n const { onFocusOut, ...restPopupProps } = popover.popupProps;\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: composedRef,\n props: [\n {\n id: popupId,\n style: positioningStyle,\n ...core.getPopupAttrs(state),\n },\n { ...restPopupProps, onBlur: onFocusOut },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace PopoverPopup {\n export type Props = PopoverPopupProps;\n export type State = PopoverState;\n}\n"],"mappings":";;;;;;;;;;AAeA,MAAM,gBAA+B;CAAE,UAAU;CAAS,OAAO;CAAQ,QAAQ;CAAG;;AAGpF,MAAa,eAAe,WAA8C,SAAS,aACjF,EAAE,QAAQ,WAAW,OAAO,GAAG,gBAC/B,cACA;CACA,MAAM,EAAE,MAAM,SAAS,OAAO,cAAc,YAAY,YAAY,mBAAmB;CACvF,MAAM,cAAc,OAAuB,KAAK;CAYhD,MAAM,cAAc,gBAAgB,cAVnB,aACd,OAA8B;AAC7B,UAAQ,gBAAgB,GAAG;AAC3B,MAAI,MAAM,2BAA2B,CACnC,IAAG,MAAM,YAAY,mBAAmB,KAAK,aAAa;IAG9D,CAAC,SAAS,WAAW,CACtB,EAE2D,YAAY;CAIxE,MAAM,UAAU,eAAe;EAAE,MAAM,MAAM;EAAM,OAAO,MAAM;EAAO,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC;CAKpG,MAAM,cAAc,cAAc;AAChC,MAAI,CAAC,2BAA2B,CAAE,QAAO;EACzC,MAAM,EAAE,gBAAgB,GAAG,GAAG,SAAS,uBAAuB,YAAY,QAAQ;AAClF,SAAO;IACN,CAAC,YAAY,QAAQ,CAAC;CAGzB,MAAM,CAAC,aAAa,kBAAkB,SAA+B,KAAK;AAE1E,uBAAsB;AACpB,MAAI,2BAA2B,CAAE;AACjC,MAAI,CAAC,MAAM,MAAM;AACf,kBAAe,KAAK;AACpB;;EAGF,SAAS,UAAgB;GACvB,MAAM,YAAY,QAAQ;GAC1B,MAAM,UAAU,YAAY;AAC5B,OAAI,CAAC,aAAa,CAAC,QAAS;AAO5B,kBACE,uBAAuB,YAAY,SANjB,UAAU,uBAAuB,EACnC,QAAQ,uBAAuB,EAC5B,SAAS,gBAAgB,uBAAuB,EACrD,eAAe,QAAQ,CAGqD,CAC3F;;AAGH,WAAS;EAGT,IAAI,QAAQ;EACZ,SAAS,aAAmB;AAC1B,wBAAqB,MAAM;AAC3B,WAAQ,sBAAsB,QAAQ;;AAGxC,SAAO,iBAAiB,UAAU,YAAY;GAAE,SAAS;GAAM,SAAS;GAAM,CAAC;AAC/E,SAAO,iBAAiB,UAAU,WAAW;AAE7C,eAAa;AACX,wBAAqB,MAAM;AAC3B,UAAO,oBAAoB,UAAU,YAAY,KAAK;AACtD,UAAO,oBAAoB,UAAU,WAAW;;IAEjD;EAAC,MAAM;EAAM;EAAY;EAAS;EAAQ,CAAC;CAI9C,MAAM,mBAAmB,eAAe,eAAe;AAIvD,KAAI,CAAC,MAAM,KACT,QAAO;CAIT,MAAM,EAAE,YAAY,GAAG,mBAAmB,QAAQ;AAElD,QAAO,cACL,OACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA;EACA,KAAK;EACL,OAAO;GACL;IACE,IAAI;IACJ,OAAO;IACP,GAAG,KAAK,cAAc,MAAM;IAC7B;GACD;IAAE,GAAG;IAAgB,QAAQ;IAAY;GACzC;GACD;EACF,CACF;EACD"}
1
+ {"version":3,"file":"popover-popup.js","names":[],"sources":["../../../../src/ui/popover/popover-popup.tsx"],"sourcesContent":["'use client';\n\nimport type { PopoverState } from '@videojs/core';\nimport { getAnchorPositionStyle, getPopupPositionRect, resolveOffsets } from '@videojs/core/dom';\nimport { supportsAnchorPositioning } from '@videojs/utils/dom';\nimport type { CSSProperties } from 'react';\nimport { forwardRef, useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { useComposedRefs } from '../../utils/use-composed-refs';\nimport { renderElement } from '../../utils/use-render';\nimport { usePopoverContext } from './context';\n\nexport interface PopoverPopupProps extends UIComponentProps<'div', PopoverState> {}\n\nconst POPOVER_RESET: CSSProperties = { position: 'fixed', inset: 'auto', margin: 0 };\n\n/** Container for the popover content. Positioned relative to the trigger using CSS anchor positioning with a JavaScript fallback. */\nexport const PopoverPopup = forwardRef<HTMLDivElement, PopoverPopupProps>(function PopoverPopup(\n { render, className, style, ...elementProps },\n forwardedRef\n) {\n const { core, popover, state, stateAttrMap, anchorName, popupId } = usePopoverContext();\n const internalRef = useRef<HTMLDivElement>(null);\n\n const popupRef = useCallback(\n (el: HTMLDivElement | null) => {\n popover.setPopupElement(el);\n if (el && supportsAnchorPositioning()) {\n el.style.setProperty('position-anchor', `--${anchorName}`);\n }\n },\n [popover, anchorName]\n );\n\n const composedRef = useComposedRefs(forwardedRef, popupRef, internalRef);\n\n // --- Positioning ---\n\n const posOpts = useMemo(() => ({ side: state.side, align: state.align }), [state.side, state.align]);\n\n // CSS Anchor Positioning — computed from state, no measurement needed.\n // `position-anchor` is set imperatively in the ref callback above\n // because React's style prop silently drops unrecognised CSS properties.\n const anchorStyle = useMemo(() => {\n if (!supportsAnchorPositioning()) return null;\n const { positionAnchor: _, ...rest } = getAnchorPositionStyle(anchorName, posOpts);\n return rest as CSSProperties;\n }, [anchorName, posOpts]);\n\n // Manual fallback — measure rects after layout, before paint.\n const [manualStyle, setManualStyle] = useState<CSSProperties | null>(null);\n\n useLayoutEffect(() => {\n if (supportsAnchorPositioning()) return;\n if (!state.open) {\n setManualStyle(null);\n return;\n }\n\n function measure(): void {\n const triggerEl = popover.triggerElement;\n const popupEl = internalRef.current;\n if (!triggerEl || !popupEl) return;\n\n const triggerRect = triggerEl.getBoundingClientRect();\n const popupRect = getPopupPositionRect(popupEl);\n const boundaryRect = document.documentElement.getBoundingClientRect();\n const offsets = resolveOffsets(popupEl);\n\n setManualStyle(\n getAnchorPositionStyle(anchorName, posOpts, triggerRect, popupRect, boundaryRect, offsets) as CSSProperties\n );\n }\n\n measure();\n const triggerEl = popover.triggerElement;\n const popupEl = internalRef.current;\n\n let rafId = 0;\n function reposition(): void {\n cancelAnimationFrame(rafId);\n rafId = requestAnimationFrame(measure);\n }\n\n // Re-measure after the popover has entered the top layer and whenever\n // its own size or the trigger size changes.\n reposition();\n\n const resizeObserver =\n typeof ResizeObserver === 'function'\n ? new ResizeObserver(() => {\n reposition();\n })\n : null;\n\n if (triggerEl && resizeObserver) {\n resizeObserver.observe(triggerEl);\n }\n\n if (popupEl && resizeObserver) {\n resizeObserver.observe(popupEl);\n }\n\n window.addEventListener('scroll', reposition, { capture: true, passive: true });\n window.addEventListener('resize', reposition);\n\n return () => {\n cancelAnimationFrame(rafId);\n resizeObserver?.disconnect();\n window.removeEventListener('scroll', reposition, true);\n window.removeEventListener('resize', reposition);\n };\n }, [state.open, anchorName, posOpts, popover]);\n\n // Anchor path uses computed styles; manual path uses measured styles;\n // fallback resets UA [popover] defaults until positioning is computed.\n const positioningStyle = anchorStyle ?? manualStyle ?? POPOVER_RESET;\n\n // --- Visibility ---\n\n if (!state.open) {\n return null;\n }\n\n // Remap DOM focus events to React synthetic event names.\n const { onFocusOut, ...restPopupProps } = popover.popupProps;\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: composedRef,\n props: [\n {\n id: popupId,\n style: positioningStyle,\n ...core.getPopupAttrs(state),\n },\n { ...restPopupProps, onBlur: onFocusOut },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace PopoverPopup {\n export type Props = PopoverPopupProps;\n export type State = PopoverState;\n}\n"],"mappings":";;;;;;;;;;AAeA,MAAM,gBAA+B;CAAE,UAAU;CAAS,OAAO;CAAQ,QAAQ;CAAG;;AAGpF,MAAa,eAAe,WAA8C,SAAS,aACjF,EAAE,QAAQ,WAAW,OAAO,GAAG,gBAC/B,cACA;CACA,MAAM,EAAE,MAAM,SAAS,OAAO,cAAc,YAAY,YAAY,mBAAmB;CACvF,MAAM,cAAc,OAAuB,KAAK;CAYhD,MAAM,cAAc,gBAAgB,cAVnB,aACd,OAA8B;AAC7B,UAAQ,gBAAgB,GAAG;AAC3B,MAAI,MAAM,2BAA2B,CACnC,IAAG,MAAM,YAAY,mBAAmB,KAAK,aAAa;IAG9D,CAAC,SAAS,WAAW,CACtB,EAE2D,YAAY;CAIxE,MAAM,UAAU,eAAe;EAAE,MAAM,MAAM;EAAM,OAAO,MAAM;EAAO,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC;CAKpG,MAAM,cAAc,cAAc;AAChC,MAAI,CAAC,2BAA2B,CAAE,QAAO;EACzC,MAAM,EAAE,gBAAgB,GAAG,GAAG,SAAS,uBAAuB,YAAY,QAAQ;AAClF,SAAO;IACN,CAAC,YAAY,QAAQ,CAAC;CAGzB,MAAM,CAAC,aAAa,kBAAkB,SAA+B,KAAK;AAE1E,uBAAsB;AACpB,MAAI,2BAA2B,CAAE;AACjC,MAAI,CAAC,MAAM,MAAM;AACf,kBAAe,KAAK;AACpB;;EAGF,SAAS,UAAgB;GACvB,MAAM,YAAY,QAAQ;GAC1B,MAAM,UAAU,YAAY;AAC5B,OAAI,CAAC,aAAa,CAAC,QAAS;AAO5B,kBACE,uBAAuB,YAAY,SANjB,UAAU,uBAAuB,EACnC,qBAAqB,QAAQ,EAC1B,SAAS,gBAAgB,uBAAuB,EACrD,eAAe,QAAQ,CAGqD,CAC3F;;AAGH,WAAS;EACT,MAAM,YAAY,QAAQ;EAC1B,MAAM,UAAU,YAAY;EAE5B,IAAI,QAAQ;EACZ,SAAS,aAAmB;AAC1B,wBAAqB,MAAM;AAC3B,WAAQ,sBAAsB,QAAQ;;AAKxC,cAAY;EAEZ,MAAM,iBACJ,OAAO,mBAAmB,aACtB,IAAI,qBAAqB;AACvB,eAAY;IACZ,GACF;AAEN,MAAI,aAAa,eACf,gBAAe,QAAQ,UAAU;AAGnC,MAAI,WAAW,eACb,gBAAe,QAAQ,QAAQ;AAGjC,SAAO,iBAAiB,UAAU,YAAY;GAAE,SAAS;GAAM,SAAS;GAAM,CAAC;AAC/E,SAAO,iBAAiB,UAAU,WAAW;AAE7C,eAAa;AACX,wBAAqB,MAAM;AAC3B,mBAAgB,YAAY;AAC5B,UAAO,oBAAoB,UAAU,YAAY,KAAK;AACtD,UAAO,oBAAoB,UAAU,WAAW;;IAEjD;EAAC,MAAM;EAAM;EAAY;EAAS;EAAQ,CAAC;CAI9C,MAAM,mBAAmB,eAAe,eAAe;AAIvD,KAAI,CAAC,MAAM,KACT,QAAO;CAIT,MAAM,EAAE,YAAY,GAAG,mBAAmB,QAAQ;AAElD,QAAO,cACL,OACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA;EACA,KAAK;EACL,OAAO;GACL;IACE,IAAI;IACJ,OAAO;IACP,GAAG,KAAK,cAAc,MAAM;IAC7B;GACD;IAAE,GAAG;IAAgB,QAAQ;IAAY;GACzC;GACD;EACF,CACF;EACD"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { useDestroy } from "../../utils/use-destroy.js";
4
3
  import { useLatestRef } from "../../utils/use-latest-ref.js";
4
+ import { useDestroy } from "../../utils/use-destroy.js";
5
5
  import { useSafeId } from "../../utils/use-safe-id.js";
6
6
  import { PopoverContextProvider } from "./context.js";
7
7
  import { createPopover, createTransition } from "@videojs/core/dom";
@@ -1 +1 @@
1
- {"version":3,"file":"slider-root.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-root.tsx"],"mappings":";;;;;UAYiB,eAAA,SAAwB,gBAAA,QAAwB,UAAA,CAAW,KAAA,GAAQ,UAAA,CAAW,KAAA;EAC7F,aAAA,KAAkB,KAAA;EAClB,aAAA,KAAkB,KAAA;EAClB,WAAA;EACA,SAAA;AAAA;AAAA,cAGW,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,eAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBA+EN,UAAA;EAAA,KACH,KAAA,GAAQ,eAAA;EAAA,KACR,KAAA,GAAQ,UAAA,CAAW,KAAA;AAAA"}
1
+ {"version":3,"file":"slider-root.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-root.tsx"],"mappings":";;;;;UAYiB,eAAA,SAAwB,gBAAA,QAAwB,UAAA,CAAW,KAAA,GAAQ,UAAA,CAAW,KAAA;EAC7F,aAAA,KAAkB,KAAA;EAClB,aAAA,KAAkB,KAAA;EAClB,WAAA;EACA,SAAA;AAAA;AAAA,cAGW,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,eAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBAgFN,UAAA;EAAA,KACH,KAAA,GAAQ,eAAA;EAAA,KACR,KAAA,GAAQ,UAAA,CAAW,KAAA;AAAA"}
@@ -22,7 +22,7 @@ const SliderRoot = forwardRef(function SliderRoot(componentProps, forwardedRef)
22
22
  disabled,
23
23
  thumbAlignment
24
24
  });
25
- const { state, cssVars, rootRef, thumbRef: sliderThumbRef, rootProps, thumbProps } = useSlider({
25
+ const { state, cssVars, rootRef, thumbRef: sliderThumbRef, rootProps, rootStyle, thumbProps } = useSlider({
26
26
  computeState: (input) => {
27
27
  core.setInput(input);
28
28
  return core.getSliderState(value);
@@ -58,7 +58,10 @@ const SliderRoot = forwardRef(function SliderRoot(componentProps, forwardedRef)
58
58
  stateAttrMap: SliderDataAttrs,
59
59
  ref: [forwardedRef, rootRef],
60
60
  props: [
61
- { style: cssVars },
61
+ { style: {
62
+ ...cssVars,
63
+ ...rootStyle
64
+ } },
62
65
  rootProps,
63
66
  elementProps
64
67
  ]
@@ -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 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"}
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 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) => 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, ...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":";;;;;;;;;;;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,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;KAAE,GAAG;KAAS,GAAG;KAAW,EAAE;IAAE;IAAW;IAAa;GAC1E,CACF;GACc;EAEnB"}
@@ -0,0 +1,2 @@
1
+ import { Thumbnail, ThumbnailProps } from "./thumbnail.js";
2
+ export { Thumbnail, ThumbnailProps };
@@ -0,0 +1,3 @@
1
+ import { Thumbnail } from "./thumbnail.js";
2
+
3
+ export { Thumbnail };
@@ -4,7 +4,6 @@ import { SliderPreview, SliderPreviewProps } from "../slider/slider-preview.js";
4
4
  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
- import "../slider/index.parts.js";
8
7
  import { TimeSliderRoot, TimeSliderRootProps } from "./time-slider-root.js";
9
8
 
10
9
  //#region src/ui/time-slider/index.parts.d.ts
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
 
3
3
  import { usePlayer } from "../../player/context.js";
4
- import { renderElement } from "../../utils/use-render.js";
5
4
  import { useLatestRef } from "../../utils/use-latest-ref.js";
5
+ import { renderElement } from "../../utils/use-render.js";
6
6
  import { useSlider } from "../hooks/use-slider.js";
7
7
  import { SliderProvider } from "../slider/context.js";
8
8
  import { getTimeSliderCSSVars, logMissingFeature, selectBuffer, selectTime } from "@videojs/core/dom";
@@ -31,7 +31,7 @@ const TimeSliderRoot = forwardRef(function TimeSliderRoot(componentProps, forwar
31
31
  ...buffer
32
32
  } : null);
33
33
  const duration = time?.duration ?? 0;
34
- const { state, cssVars, rootRef, thumbRef, rootProps, thumbProps } = useSlider({
34
+ const { state, cssVars, rootRef, thumbRef, rootProps, rootStyle, thumbProps } = useSlider({
35
35
  computeState: (input) => {
36
36
  core.setInput(input);
37
37
  if (!time || !buffer) core.setMedia({
@@ -58,7 +58,7 @@ const TimeSliderRoot = forwardRef(function TimeSliderRoot(componentProps, forwar
58
58
  getCSSVars: getTimeSliderCSSVars,
59
59
  onValueCommit: (percent) => {
60
60
  const media = mediaRef.current;
61
- if (media) media.seek(core.valueFromPercent(percent));
61
+ if (media) media.seek(core.rawValueFromPercent(percent));
62
62
  },
63
63
  onDragStart,
64
64
  onDragEnd
@@ -86,7 +86,10 @@ const TimeSliderRoot = forwardRef(function TimeSliderRoot(componentProps, forwar
86
86
  stateAttrMap: TimeSliderDataAttrs,
87
87
  ref: [forwardedRef, rootRef],
88
88
  props: [
89
- { style: cssVars },
89
+ { style: {
90
+ ...cssVars,
91
+ ...rootStyle
92
+ } },
90
93
  rootProps,
91
94
  elementProps
92
95
  ]
@@ -1 +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"}
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, rootStyle, 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.rawValueFromPercent(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, ...rootStyle } }, 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,WAAW,eAAe,UAAgC;EAC9G,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,oBAAoB,QAAQ,CAAC;;EAE1D;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;KAAE,GAAG;KAAS,GAAG;KAAW,EAAE;IAAE;IAAW;IAAa;GAC1E,CACF;GACc;EAGtB"}
@@ -1,5 +1,4 @@
1
1
  import { TooltipApi } from "@videojs/core/dom";
2
- import "react";
3
2
  import { StateAttrMap as StateAttrMap$1, TooltipCore } from "@videojs/core";
4
3
 
5
4
  //#region src/ui/tooltip/context.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","names":[],"sources":["../../../../src/ui/tooltip/context.tsx"],"mappings":";;;;;UAMiB,mBAAA;EACf,IAAA,EAAM,WAAA;EACN,OAAA,EAAS,UAAA;EACT,KAAA,EAAO,WAAA,CAAY,KAAA;EACnB,YAAA,EAAc,cAAA,CAAa,WAAA,CAAY,KAAA;EACvC,UAAA;EACA,OAAA;AAAA;AAAA,iBAOc,iBAAA,CAAA,GAAqB,mBAAA"}
1
+ {"version":3,"file":"context.d.ts","names":[],"sources":["../../../../src/ui/tooltip/context.tsx"],"mappings":";;;;UAMiB,mBAAA;EACf,IAAA,EAAM,WAAA;EACN,OAAA,EAAS,UAAA;EACT,KAAA,EAAO,WAAA,CAAY,KAAA;EACnB,YAAA,EAAc,cAAA,CAAa,WAAA,CAAY,KAAA;EACvC,UAAA;EACA,OAAA;AAAA;AAAA,iBAOc,iBAAA,CAAA,GAAqB,mBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-popup.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-popup.tsx"],"mappings":";;;;;UAciB,iBAAA,SAA0B,gBAAA,QAAwB,YAAA;;cAKtD,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,iBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBA6HR,YAAA;EAAA,KACH,KAAA,GAAQ,iBAAA;EAAA,KACR,KAAA,GAAQ,YAAA;AAAA"}
1
+ {"version":3,"file":"tooltip-popup.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-popup.tsx"],"mappings":";;;;;UAciB,iBAAA,SAA0B,gBAAA,QAAwB,YAAA;;cAKtD,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,iBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBAkJR,YAAA;EAAA,KACH,KAAA,GAAQ,iBAAA;EAAA,KACR,KAAA,GAAQ,YAAA;AAAA"}