@hanifhan1f/vidstack-react 1.12.13 → 1.12.15

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 (392) hide show
  1. package/dev/chunks/vidstack-B-FM4-oZ.js +668 -0
  2. package/dev/chunks/vidstack-B92UncBI.js +61 -0
  3. package/dev/chunks/vidstack-BDiAEW1N.js +11691 -0
  4. package/dev/chunks/vidstack-BZIhWvGa.js +1371 -0
  5. package/dev/chunks/vidstack-Bfi_jCvb.js +476 -0
  6. package/dev/chunks/vidstack-CBF7iUqu.js +22 -0
  7. package/dev/chunks/vidstack-CFZ0rYJz.js +34 -0
  8. package/dev/chunks/vidstack-CM82l-7o.js +551 -0
  9. package/dev/chunks/vidstack-CvWDiSTs.js +84 -0
  10. package/dev/chunks/vidstack-CzU-uC5f.js +189 -0
  11. package/dev/chunks/vidstack-D-hQD1eE.js +9 -0
  12. package/dev/chunks/vidstack-D6_9yy0x.js +643 -0
  13. package/dev/chunks/vidstack-DJQOTrl6.js +180 -0
  14. package/dev/chunks/vidstack-DNbKNc4R.js +288 -0
  15. package/dev/chunks/vidstack-D_bWd66h.js +2023 -0
  16. package/dev/chunks/vidstack-Dm1xEU9Q.js +36 -0
  17. package/dev/chunks/vidstack-f6WXkmfP.js +375 -0
  18. package/dev/chunks/vidstack-krOAtKMi.js +34 -0
  19. package/dev/chunks/vidstack-lYFZKRUc.js +401 -0
  20. package/dev/chunks/vidstack-vz-aZSfo.js +1497 -0
  21. package/dev/player/vidstack-default-components.js +14 -0
  22. package/dev/player/vidstack-default-icons.js +88 -0
  23. package/dev/player/vidstack-default-layout.js +14 -0
  24. package/dev/player/vidstack-plyr-icons.js +62 -0
  25. package/dev/player/vidstack-plyr-layout.js +636 -0
  26. package/dev/player/vidstack-remotion.js +345 -0
  27. package/dev/vidstack.js +587 -0
  28. package/dom.d.ts +91 -0
  29. package/google-cast.d.ts +1422 -0
  30. package/icons.d.ts +5 -0
  31. package/index.d.ts +8 -0
  32. package/package.json +9 -60
  33. package/player/layouts/default.d.ts +11392 -0
  34. package/player/layouts/plyr.d.ts +5 -0
  35. package/player/remotion.d.ts +5 -0
  36. package/player/styles/base.css +153 -0
  37. package/player/styles/default/buffering.css +55 -0
  38. package/player/styles/default/buttons.css +175 -0
  39. package/player/styles/default/captions.css +181 -0
  40. package/player/styles/default/chapter-title.css +26 -0
  41. package/player/styles/default/controls.css +56 -0
  42. package/player/styles/default/gestures.css +19 -0
  43. package/player/styles/default/icons.css +6 -0
  44. package/player/styles/default/keyboard.css +148 -0
  45. package/player/styles/default/layouts/audio.css +417 -0
  46. package/player/styles/default/layouts/video.css +1082 -0
  47. package/player/styles/default/menus.css +959 -0
  48. package/player/styles/default/poster.css +52 -0
  49. package/player/styles/default/sliders.css +391 -0
  50. package/player/styles/default/theme.css +2461 -0
  51. package/player/styles/default/thumbnail.css +40 -0
  52. package/player/styles/default/time.css +45 -0
  53. package/player/styles/default/tooltips.css +141 -0
  54. package/player/styles/plyr/theme.css +1237 -0
  55. package/prod/chunks/vidstack-0Foyib2F.js +34 -0
  56. package/prod/chunks/vidstack-BbPEqH3g.js +11196 -0
  57. package/prod/chunks/vidstack-Bh7M8kL6.js +663 -0
  58. package/prod/chunks/vidstack-BlPINAXN.js +189 -0
  59. package/prod/chunks/vidstack-C5Rzkyfp.js +375 -0
  60. package/prod/chunks/vidstack-CBF7iUqu.js +22 -0
  61. package/prod/chunks/vidstack-CZNlvfmV.js +288 -0
  62. package/prod/chunks/vidstack-CZgUA94N.js +1979 -0
  63. package/prod/chunks/vidstack-Ce0Qn3e1.js +1497 -0
  64. package/prod/chunks/vidstack-D0XCUWbp.js +159 -0
  65. package/prod/chunks/vidstack-DTyDOhwS.js +504 -0
  66. package/prod/chunks/vidstack-DhC5F6c8.js +470 -0
  67. package/prod/chunks/vidstack-Dm1xEU9Q.js +36 -0
  68. package/prod/chunks/vidstack-Ma9rwtR0.js +386 -0
  69. package/prod/chunks/vidstack-WsodkLQg.js +1371 -0
  70. package/prod/chunks/vidstack-jIPoNqhj.js +545 -0
  71. package/prod/chunks/vidstack-krOAtKMi.js +34 -0
  72. package/prod/chunks/vidstack-vqp2QaHR.js +9 -0
  73. package/prod/chunks/vidstack-xo_SmgiV.js +84 -0
  74. package/prod/chunks/vidstack-xvxeRtaN.js +61 -0
  75. package/prod/player/vidstack-default-components.js +14 -0
  76. package/prod/player/vidstack-default-icons.js +88 -0
  77. package/prod/player/vidstack-default-layout.js +14 -0
  78. package/prod/player/vidstack-plyr-icons.js +62 -0
  79. package/prod/player/vidstack-plyr-layout.js +636 -0
  80. package/prod/player/vidstack-remotion.js +335 -0
  81. package/prod/vidstack-icons.js +435 -0
  82. package/prod/vidstack.js +648 -0
  83. package/server/chunks/vidstack-2zMSe4ym.js +1371 -0
  84. package/server/chunks/vidstack-BtqWstSj.js +375 -0
  85. package/server/chunks/vidstack-C-HdFsZi.js +84 -0
  86. package/server/chunks/vidstack-C4iWXMC-.js +545 -0
  87. package/server/chunks/vidstack-C5zFBMwg.js +386 -0
  88. package/server/chunks/vidstack-CBF7iUqu.js +22 -0
  89. package/server/chunks/vidstack-CEh38XpD.js +288 -0
  90. package/server/chunks/vidstack-CWR0J8Qz.js +1497 -0
  91. package/server/chunks/vidstack-CkMAeO-e.js +34 -0
  92. package/server/chunks/vidstack-Cm0qnRvu.js +11196 -0
  93. package/server/chunks/vidstack-CoGzBr_V.js +663 -0
  94. package/server/chunks/vidstack-CyFwkPiu.js +470 -0
  95. package/server/chunks/vidstack-D-hQD1eE.js +9 -0
  96. package/server/chunks/vidstack-D_bWd66h.js +2023 -0
  97. package/server/chunks/vidstack-Dm1xEU9Q.js +36 -0
  98. package/server/chunks/vidstack-DtQSvsQr.js +189 -0
  99. package/server/chunks/vidstack-jlaBqZq5.js +61 -0
  100. package/server/chunks/vidstack-krOAtKMi.js +34 -0
  101. package/server/chunks/vidstack-rWs25cS9.js +159 -0
  102. package/server/chunks/vidstack-uyCXITen.js +504 -0
  103. package/server/player/vidstack-default-components.js +14 -0
  104. package/server/player/vidstack-default-icons.js +88 -0
  105. package/server/player/vidstack-default-layout.js +14 -0
  106. package/server/player/vidstack-plyr-icons.js +62 -0
  107. package/server/player/vidstack-plyr-layout.js +636 -0
  108. package/server/player/vidstack-remotion.js +335 -0
  109. package/server/vidstack.js +648 -0
  110. package/tailwind.cjs +101 -0
  111. package/tailwind.d.cts +15 -0
  112. package/.templates/sandbox/document.css +0 -27
  113. package/.templates/sandbox/favicon-32x32.png +0 -0
  114. package/.templates/sandbox/index.html +0 -21
  115. package/.templates/sandbox/main.tsx +0 -12
  116. package/.templates/sandbox/player.css +0 -39
  117. package/.templates/sandbox/player.tsx +0 -121
  118. package/.templates/sandbox/tracks.ts +0 -23
  119. package/analyze.config.ts +0 -7
  120. package/build/build-icons.js +0 -62
  121. package/rollup.config.ts +0 -256
  122. package/src/components/announcer.tsx +0 -47
  123. package/src/components/layouts/default/audio-layout.tsx +0 -231
  124. package/src/components/layouts/default/context.ts +0 -28
  125. package/src/components/layouts/default/hooks.ts +0 -13
  126. package/src/components/layouts/default/icons.tsx +0 -225
  127. package/src/components/layouts/default/index.ts +0 -11
  128. package/src/components/layouts/default/media-layout.tsx +0 -259
  129. package/src/components/layouts/default/slots.tsx +0 -98
  130. package/src/components/layouts/default/ui/announcer.tsx +0 -22
  131. package/src/components/layouts/default/ui/buttons.tsx +0 -301
  132. package/src/components/layouts/default/ui/captions.tsx +0 -16
  133. package/src/components/layouts/default/ui/controls.tsx +0 -12
  134. package/src/components/layouts/default/ui/keyboard-display.tsx +0 -132
  135. package/src/components/layouts/default/ui/menus/accessibility-menu.tsx +0 -100
  136. package/src/components/layouts/default/ui/menus/audio-menu.tsx +0 -167
  137. package/src/components/layouts/default/ui/menus/captions-menu.tsx +0 -61
  138. package/src/components/layouts/default/ui/menus/chapters-menu.tsx +0 -132
  139. package/src/components/layouts/default/ui/menus/font-menu.tsx +0 -331
  140. package/src/components/layouts/default/ui/menus/items/menu-checkbox.tsx +0 -72
  141. package/src/components/layouts/default/ui/menus/items/menu-items.tsx +0 -135
  142. package/src/components/layouts/default/ui/menus/items/menu-slider.tsx +0 -92
  143. package/src/components/layouts/default/ui/menus/playback-menu.tsx +0 -232
  144. package/src/components/layouts/default/ui/menus/settings-menu.tsx +0 -114
  145. package/src/components/layouts/default/ui/menus/utils.ts +0 -12
  146. package/src/components/layouts/default/ui/sliders.tsx +0 -136
  147. package/src/components/layouts/default/ui/time.tsx +0 -73
  148. package/src/components/layouts/default/ui/title.tsx +0 -24
  149. package/src/components/layouts/default/ui/tooltip.tsx +0 -27
  150. package/src/components/layouts/default/ui.ts +0 -8
  151. package/src/components/layouts/default/video-layout.tsx +0 -344
  152. package/src/components/layouts/plyr/context.ts +0 -26
  153. package/src/components/layouts/plyr/icons/plyr-airplay.js +0 -1
  154. package/src/components/layouts/plyr/icons/plyr-captions-off.js +0 -1
  155. package/src/components/layouts/plyr/icons/plyr-captions-on.js +0 -1
  156. package/src/components/layouts/plyr/icons/plyr-download.js +0 -1
  157. package/src/components/layouts/plyr/icons/plyr-enter-fullscreen.js +0 -1
  158. package/src/components/layouts/plyr/icons/plyr-exit-fullscreen.js +0 -1
  159. package/src/components/layouts/plyr/icons/plyr-fast-forward.js +0 -1
  160. package/src/components/layouts/plyr/icons/plyr-muted.js +0 -1
  161. package/src/components/layouts/plyr/icons/plyr-pause.js +0 -1
  162. package/src/components/layouts/plyr/icons/plyr-pip.js +0 -1
  163. package/src/components/layouts/plyr/icons/plyr-play.js +0 -1
  164. package/src/components/layouts/plyr/icons/plyr-restart.js +0 -1
  165. package/src/components/layouts/plyr/icons/plyr-rewind.js +0 -1
  166. package/src/components/layouts/plyr/icons/plyr-settings.js +0 -1
  167. package/src/components/layouts/plyr/icons/plyr-volume.js +0 -1
  168. package/src/components/layouts/plyr/icons.tsx +0 -71
  169. package/src/components/layouts/plyr/index.ts +0 -11
  170. package/src/components/layouts/plyr/layout.tsx +0 -1024
  171. package/src/components/layouts/plyr/props.ts +0 -104
  172. package/src/components/layouts/plyr/slots.tsx +0 -52
  173. package/src/components/layouts/remotion-ui.ts +0 -13
  174. package/src/components/layouts/utils.ts +0 -17
  175. package/src/components/player-callbacks.ts +0 -67
  176. package/src/components/player.tsx +0 -67
  177. package/src/components/primitives/instances.ts +0 -92
  178. package/src/components/primitives/nodes.tsx +0 -58
  179. package/src/components/primitives/slot.tsx +0 -132
  180. package/src/components/provider.tsx +0 -187
  181. package/src/components/text-track.tsx +0 -106
  182. package/src/components/ui/buttons/airplay-button.tsx +0 -53
  183. package/src/components/ui/buttons/caption-button.tsx +0 -55
  184. package/src/components/ui/buttons/fullscreen-button.tsx +0 -55
  185. package/src/components/ui/buttons/google-cast-button.tsx +0 -53
  186. package/src/components/ui/buttons/live-button.tsx +0 -56
  187. package/src/components/ui/buttons/mute-button.tsx +0 -60
  188. package/src/components/ui/buttons/pip-button.tsx +0 -54
  189. package/src/components/ui/buttons/play-button.tsx +0 -53
  190. package/src/components/ui/buttons/seek-button.tsx +0 -55
  191. package/src/components/ui/buttons/toggle-button.tsx +0 -51
  192. package/src/components/ui/caption.tsx +0 -70
  193. package/src/components/ui/captions.tsx +0 -41
  194. package/src/components/ui/chapter-title.tsx +0 -40
  195. package/src/components/ui/controls.tsx +0 -90
  196. package/src/components/ui/gesture.tsx +0 -43
  197. package/src/components/ui/menu.tsx +0 -251
  198. package/src/components/ui/poster.tsx +0 -101
  199. package/src/components/ui/radio-group.tsx +0 -88
  200. package/src/components/ui/sliders/audio-gain-slider.tsx +0 -55
  201. package/src/components/ui/sliders/quality-slider.tsx +0 -54
  202. package/src/components/ui/sliders/slider-callbacks.ts +0 -14
  203. package/src/components/ui/sliders/slider-value.tsx +0 -13
  204. package/src/components/ui/sliders/slider.tsx +0 -254
  205. package/src/components/ui/sliders/speed-slider.tsx +0 -54
  206. package/src/components/ui/sliders/time-slider.tsx +0 -379
  207. package/src/components/ui/sliders/volume-slider.tsx +0 -55
  208. package/src/components/ui/spinner.tsx +0 -105
  209. package/src/components/ui/thumbnail.tsx +0 -82
  210. package/src/components/ui/time.tsx +0 -77
  211. package/src/components/ui/title.tsx +0 -32
  212. package/src/components/ui/tooltip.tsx +0 -135
  213. package/src/globals.d.ts +0 -3
  214. package/src/hooks/create-text-track.ts +0 -22
  215. package/src/hooks/options/use-audio-gain-options.ts +0 -75
  216. package/src/hooks/options/use-audio-options.ts +0 -71
  217. package/src/hooks/options/use-caption-options.ts +0 -95
  218. package/src/hooks/options/use-chapter-options.ts +0 -97
  219. package/src/hooks/options/use-playback-rate-options.ts +0 -75
  220. package/src/hooks/options/use-video-quality-options.ts +0 -123
  221. package/src/hooks/use-active-text-cues.ts +0 -28
  222. package/src/hooks/use-active-text-track.ts +0 -19
  223. package/src/hooks/use-chapter-title.ts +0 -12
  224. package/src/hooks/use-dom.ts +0 -121
  225. package/src/hooks/use-media-context.ts +0 -6
  226. package/src/hooks/use-media-player.ts +0 -19
  227. package/src/hooks/use-media-provider.ts +0 -31
  228. package/src/hooks/use-media-remote.ts +0 -37
  229. package/src/hooks/use-media-state.ts +0 -58
  230. package/src/hooks/use-signals.ts +0 -24
  231. package/src/hooks/use-slider-preview.ts +0 -126
  232. package/src/hooks/use-slider-state.ts +0 -63
  233. package/src/hooks/use-state.ts +0 -47
  234. package/src/hooks/use-text-cues.ts +0 -33
  235. package/src/hooks/use-thumbnails.ts +0 -69
  236. package/src/icon.ts +0 -37
  237. package/src/icons.ts +0 -754
  238. package/src/index.ts +0 -181
  239. package/src/providers/remotion/index.ts +0 -10
  240. package/src/providers/remotion/layout-engine.ts +0 -123
  241. package/src/providers/remotion/loader.ts +0 -35
  242. package/src/providers/remotion/playback-engine.ts +0 -142
  243. package/src/providers/remotion/provider.tsx +0 -514
  244. package/src/providers/remotion/type-check.ts +0 -13
  245. package/src/providers/remotion/types.ts +0 -94
  246. package/src/providers/remotion/ui/context.tsx +0 -120
  247. package/src/providers/remotion/ui/error-boundary.tsx +0 -57
  248. package/src/providers/remotion/ui/poster.tsx +0 -33
  249. package/src/providers/remotion/ui/slider-thumbnail.tsx +0 -41
  250. package/src/providers/remotion/ui/thumbnail.tsx +0 -166
  251. package/src/providers/remotion/validate.ts +0 -220
  252. package/src/source.ts +0 -5
  253. package/src/utils.ts +0 -27
  254. package/tsconfig.build.json +0 -10
  255. package/tsconfig.json +0 -11
  256. package/types/react/src/components/announcer.d.ts +0 -16
  257. package/types/react/src/components/layouts/default/audio-layout.d.ts +0 -27
  258. package/types/react/src/components/layouts/default/context.d.ts +0 -14
  259. package/types/react/src/components/layouts/default/hooks.d.ts +0 -2
  260. package/types/react/src/components/layouts/default/icons.d.ts +0 -95
  261. package/types/react/src/components/layouts/default/index.d.ts +0 -5
  262. package/types/react/src/components/layouts/default/media-layout.d.ts +0 -133
  263. package/types/react/src/components/layouts/default/slots.d.ts +0 -22
  264. package/types/react/src/components/layouts/default/ui/announcer.d.ts +0 -6
  265. package/types/react/src/components/layouts/default/ui/buttons.d.ts +0 -54
  266. package/types/react/src/components/layouts/default/ui/captions.d.ts +0 -6
  267. package/types/react/src/components/layouts/default/ui/controls.d.ts +0 -6
  268. package/types/react/src/components/layouts/default/ui/keyboard-display.d.ts +0 -8
  269. package/types/react/src/components/layouts/default/ui/menus/accessibility-menu.d.ts +0 -10
  270. package/types/react/src/components/layouts/default/ui/menus/audio-menu.d.ts +0 -10
  271. package/types/react/src/components/layouts/default/ui/menus/captions-menu.d.ts +0 -10
  272. package/types/react/src/components/layouts/default/ui/menus/chapters-menu.d.ts +0 -7
  273. package/types/react/src/components/layouts/default/ui/menus/font-menu.d.ts +0 -6
  274. package/types/react/src/components/layouts/default/ui/menus/items/menu-checkbox.d.ts +0 -13
  275. package/types/react/src/components/layouts/default/ui/menus/items/menu-items.d.ts +0 -49
  276. package/types/react/src/components/layouts/default/ui/menus/items/menu-slider.d.ts +0 -26
  277. package/types/react/src/components/layouts/default/ui/menus/playback-menu.d.ts +0 -10
  278. package/types/react/src/components/layouts/default/ui/menus/settings-menu.d.ts +0 -15
  279. package/types/react/src/components/layouts/default/ui/menus/utils.d.ts +0 -1
  280. package/types/react/src/components/layouts/default/ui/sliders.d.ts +0 -24
  281. package/types/react/src/components/layouts/default/ui/time.d.ts +0 -30
  282. package/types/react/src/components/layouts/default/ui/title.d.ts +0 -6
  283. package/types/react/src/components/layouts/default/ui/tooltip.d.ts +0 -12
  284. package/types/react/src/components/layouts/default/ui.d.ts +0 -8
  285. package/types/react/src/components/layouts/default/video-layout.d.ts +0 -47
  286. package/types/react/src/components/layouts/plyr/context.d.ts +0 -12
  287. package/types/react/src/components/layouts/plyr/icons/plyr-airplay.d.ts +0 -2
  288. package/types/react/src/components/layouts/plyr/icons/plyr-captions-off.d.ts +0 -2
  289. package/types/react/src/components/layouts/plyr/icons/plyr-captions-on.d.ts +0 -2
  290. package/types/react/src/components/layouts/plyr/icons/plyr-download.d.ts +0 -2
  291. package/types/react/src/components/layouts/plyr/icons/plyr-enter-fullscreen.d.ts +0 -2
  292. package/types/react/src/components/layouts/plyr/icons/plyr-exit-fullscreen.d.ts +0 -2
  293. package/types/react/src/components/layouts/plyr/icons/plyr-fast-forward.d.ts +0 -2
  294. package/types/react/src/components/layouts/plyr/icons/plyr-muted.d.ts +0 -2
  295. package/types/react/src/components/layouts/plyr/icons/plyr-pause.d.ts +0 -2
  296. package/types/react/src/components/layouts/plyr/icons/plyr-pip.d.ts +0 -2
  297. package/types/react/src/components/layouts/plyr/icons/plyr-play.d.ts +0 -2
  298. package/types/react/src/components/layouts/plyr/icons/plyr-restart.d.ts +0 -2
  299. package/types/react/src/components/layouts/plyr/icons/plyr-rewind.d.ts +0 -2
  300. package/types/react/src/components/layouts/plyr/icons/plyr-settings.d.ts +0 -2
  301. package/types/react/src/components/layouts/plyr/icons/plyr-volume.d.ts +0 -2
  302. package/types/react/src/components/layouts/plyr/icons.d.ts +0 -25
  303. package/types/react/src/components/layouts/plyr/index.d.ts +0 -6
  304. package/types/react/src/components/layouts/plyr/layout.d.ts +0 -17
  305. package/types/react/src/components/layouts/plyr/props.d.ts +0 -71
  306. package/types/react/src/components/layouts/plyr/slots.d.ts +0 -9
  307. package/types/react/src/components/layouts/remotion-ui.d.ts +0 -3
  308. package/types/react/src/components/layouts/utils.d.ts +0 -1
  309. package/types/react/src/components/player-callbacks.d.ts +0 -6
  310. package/types/react/src/components/player.d.ts +0 -32
  311. package/types/react/src/components/primitives/instances.d.ts +0 -83
  312. package/types/react/src/components/primitives/nodes.d.ts +0 -15
  313. package/types/react/src/components/primitives/slot.d.ts +0 -11
  314. package/types/react/src/components/provider.d.ts +0 -26
  315. package/types/react/src/components/text-track.d.ts +0 -100
  316. package/types/react/src/components/ui/buttons/airplay-button.d.ts +0 -22
  317. package/types/react/src/components/ui/buttons/caption-button.d.ts +0 -24
  318. package/types/react/src/components/ui/buttons/fullscreen-button.d.ts +0 -24
  319. package/types/react/src/components/ui/buttons/google-cast-button.d.ts +0 -22
  320. package/types/react/src/components/ui/buttons/live-button.d.ts +0 -26
  321. package/types/react/src/components/ui/buttons/mute-button.d.ts +0 -30
  322. package/types/react/src/components/ui/buttons/pip-button.d.ts +0 -24
  323. package/types/react/src/components/ui/buttons/play-button.d.ts +0 -23
  324. package/types/react/src/components/ui/buttons/seek-button.d.ts +0 -25
  325. package/types/react/src/components/ui/buttons/toggle-button.d.ts +0 -22
  326. package/types/react/src/components/ui/caption.d.ts +0 -11
  327. package/types/react/src/components/ui/captions.d.ts +0 -20
  328. package/types/react/src/components/ui/chapter-title.d.ts +0 -20
  329. package/types/react/src/components/ui/controls.d.ts +0 -40
  330. package/types/react/src/components/ui/gesture.d.ts +0 -20
  331. package/types/react/src/components/ui/menu.d.ts +0 -102
  332. package/types/react/src/components/ui/poster.d.ts +0 -25
  333. package/types/react/src/components/ui/radio-group.d.ts +0 -39
  334. package/types/react/src/components/ui/sliders/audio-gain-slider.d.ts +0 -29
  335. package/types/react/src/components/ui/sliders/quality-slider.d.ts +0 -28
  336. package/types/react/src/components/ui/sliders/slider-callbacks.d.ts +0 -6
  337. package/types/react/src/components/ui/sliders/slider-value.d.ts +0 -9
  338. package/types/react/src/components/ui/sliders/slider.d.ts +0 -134
  339. package/types/react/src/components/ui/sliders/speed-slider.d.ts +0 -28
  340. package/types/react/src/components/ui/sliders/time-slider.d.ts +0 -124
  341. package/types/react/src/components/ui/sliders/volume-slider.d.ts +0 -29
  342. package/types/react/src/components/ui/spinner.d.ts +0 -31
  343. package/types/react/src/components/ui/thumbnail.d.ts +0 -26
  344. package/types/react/src/components/ui/time.d.ts +0 -20
  345. package/types/react/src/components/ui/title.d.ts +0 -15
  346. package/types/react/src/components/ui/tooltip.d.ts +0 -63
  347. package/types/react/src/hooks/create-text-track.d.ts +0 -7
  348. package/types/react/src/hooks/options/use-audio-gain-options.d.ts +0 -22
  349. package/types/react/src/hooks/options/use-audio-options.d.ts +0 -17
  350. package/types/react/src/hooks/options/use-caption-options.d.ts +0 -24
  351. package/types/react/src/hooks/options/use-chapter-options.d.ts +0 -18
  352. package/types/react/src/hooks/options/use-playback-rate-options.d.ts +0 -22
  353. package/types/react/src/hooks/options/use-video-quality-options.d.ts +0 -35
  354. package/types/react/src/hooks/use-active-text-cues.d.ts +0 -6
  355. package/types/react/src/hooks/use-active-text-track.d.ts +0 -5
  356. package/types/react/src/hooks/use-chapter-title.d.ts +0 -4
  357. package/types/react/src/hooks/use-dom.d.ts +0 -9
  358. package/types/react/src/hooks/use-media-context.d.ts +0 -1
  359. package/types/react/src/hooks/use-media-player.d.ts +0 -7
  360. package/types/react/src/hooks/use-media-provider.d.ts +0 -7
  361. package/types/react/src/hooks/use-media-remote.d.ts +0 -12
  362. package/types/react/src/hooks/use-media-state.d.ts +0 -15
  363. package/types/react/src/hooks/use-signals.d.ts +0 -5
  364. package/types/react/src/hooks/use-slider-preview.d.ts +0 -27
  365. package/types/react/src/hooks/use-slider-state.d.ts +0 -16
  366. package/types/react/src/hooks/use-state.d.ts +0 -18
  367. package/types/react/src/hooks/use-text-cues.d.ts +0 -6
  368. package/types/react/src/hooks/use-thumbnails.d.ts +0 -16
  369. package/types/react/src/icon.d.ts +0 -17
  370. package/types/react/src/icons.d.ts +0 -215
  371. package/types/react/src/index.d.ts +0 -78
  372. package/types/react/src/providers/remotion/index.d.ts +0 -7
  373. package/types/react/src/providers/remotion/layout-engine.d.ts +0 -8
  374. package/types/react/src/providers/remotion/loader.d.ts +0 -9
  375. package/types/react/src/providers/remotion/playback-engine.d.ts +0 -11
  376. package/types/react/src/providers/remotion/provider.d.ts +0 -26
  377. package/types/react/src/providers/remotion/type-check.d.ts +0 -6
  378. package/types/react/src/providers/remotion/types.d.ts +0 -91
  379. package/types/react/src/providers/remotion/ui/context.d.ts +0 -17
  380. package/types/react/src/providers/remotion/ui/error-boundary.d.ts +0 -21
  381. package/types/react/src/providers/remotion/ui/poster.d.ts +0 -18
  382. package/types/react/src/providers/remotion/ui/slider-thumbnail.d.ts +0 -17
  383. package/types/react/src/providers/remotion/ui/thumbnail.d.ts +0 -32
  384. package/types/react/src/providers/remotion/validate.d.ts +0 -12
  385. package/types/react/src/source.d.ts +0 -3
  386. package/types/react/src/utils.d.ts +0 -3
  387. package/types/vidstack/src/core/api/src-types.d.ts +0 -50
  388. package/types/vidstack/src/utils/mime.d.ts +0 -15
  389. package/types/vidstack/src/utils/network.d.ts +0 -17
  390. package/types/vidstack/src/utils/support.d.ts +0 -72
  391. package/vite.config.ts +0 -23
  392. /package/{npm/analyze.json.d.ts → analyze.json.d.ts} +0 -0
@@ -1,123 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { useSignal } from 'maverick.js/react';
4
- import { isString } from 'maverick.js/std';
5
- import { sortVideoQualities, type VideoQuality } from 'vidstack';
6
-
7
- import { useMediaContext } from '../use-media-context';
8
-
9
- /**
10
- * @docs {@link https://www.vidstack.io/docs/player/api/hooks/use-video-quality-options}
11
- */
12
- export function useVideoQualityOptions({
13
- auto = true,
14
- sort = 'descending',
15
- }: UseVideoQualityOptions = {}): VideoQualityOptions {
16
- const media = useMediaContext(),
17
- { qualities, quality, autoQuality, canSetQuality } = media.$state,
18
- $qualities = useSignal(qualities);
19
-
20
- // Trigger updates.
21
- useSignal(quality);
22
- useSignal(autoQuality);
23
- useSignal(canSetQuality);
24
-
25
- return React.useMemo(() => {
26
- const sortedQualities = sortVideoQualities($qualities, sort === 'descending'),
27
- options = sortedQualities.map<VideoQualityOption>((q) => {
28
- return {
29
- quality: q,
30
- label: q.height + 'p',
31
- value: getQualityValue(q),
32
- bitrateText:
33
- q.bitrate && q.bitrate > 0 ? `${(q.bitrate / 1000000).toFixed(2)} Mbps` : null,
34
- get selected() {
35
- return q === quality();
36
- },
37
- get autoSelected() {
38
- return autoQuality();
39
- },
40
- select(trigger) {
41
- const index = qualities().indexOf(q);
42
- if (index >= 0) media.remote.changeQuality(index, trigger);
43
- },
44
- };
45
- });
46
-
47
- if (auto) {
48
- options.unshift({
49
- quality: null,
50
- label: isString(auto) ? auto : 'Auto',
51
- value: 'auto',
52
- bitrateText: null,
53
- get selected() {
54
- return autoQuality();
55
- },
56
- get autoSelected() {
57
- return autoQuality();
58
- },
59
- select(trigger) {
60
- media.remote.requestAutoQuality(trigger);
61
- },
62
- });
63
- }
64
-
65
- Object.defineProperty(options, 'disabled', {
66
- get() {
67
- return !canSetQuality() || $qualities.length <= 1;
68
- },
69
- });
70
-
71
- Object.defineProperty(options, 'selectedQuality', {
72
- get() {
73
- return quality();
74
- },
75
- });
76
-
77
- Object.defineProperty(options, 'selectedValue', {
78
- get() {
79
- const $quality = quality();
80
- return !autoQuality() && $quality ? getQualityValue($quality) : 'auto';
81
- },
82
- });
83
-
84
- return options as VideoQualityOptions;
85
- }, [$qualities, sort]);
86
- }
87
-
88
- export interface UseVideoQualityOptions {
89
- /**
90
- * Whether an auto option should be included. A string can be provided to specify the label.
91
- */
92
- auto?: boolean | string;
93
- /**
94
- * Specifies how the options should be sorted. The sorting algorithm looks at both the quality
95
- * resolution and bitrate.
96
- *
97
- * - Ascending: 480p, 720p, 720p (higher bitrate), 1080p
98
- * - Descending: 1080p, 720p (higher bitrate), 720p, 480p
99
- *
100
- * @default 'descending'
101
- */
102
- sort?: 'ascending' | 'descending';
103
- }
104
-
105
- export type VideoQualityOptions = VideoQualityOption[] & {
106
- readonly disabled: boolean;
107
- readonly selectedQuality: VideoQuality | null;
108
- readonly selectedValue: string;
109
- };
110
-
111
- export interface VideoQualityOption {
112
- readonly quality: VideoQuality | null;
113
- readonly label: string;
114
- readonly value: string;
115
- readonly selected: boolean;
116
- readonly autoSelected: boolean;
117
- readonly bitrateText: string | null;
118
- select(trigger?: Event): void;
119
- }
120
-
121
- function getQualityValue(quality: VideoQuality) {
122
- return quality.height + '_' + quality.bitrate;
123
- }
@@ -1,28 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { listenEvent } from 'maverick.js/std';
4
- import type { VTTCue } from 'media-captions';
5
- import type { TextTrack } from 'vidstack';
6
-
7
- /**
8
- * @docs {@link https://www.vidstack.io/docs/player/api/hooks/use-active-text-cues}
9
- */
10
- export function useActiveTextCues(track: TextTrack | null): VTTCue[] {
11
- const [activeCues, setActiveCues] = React.useState<VTTCue[]>([]);
12
-
13
- React.useEffect(() => {
14
- if (!track) {
15
- setActiveCues([]);
16
- return;
17
- }
18
-
19
- function onCuesChange() {
20
- if (track) setActiveCues(track.activeCues as VTTCue[]);
21
- }
22
-
23
- onCuesChange();
24
- return listenEvent(track, 'cue-change', onCuesChange);
25
- }, [track]);
26
-
27
- return activeCues;
28
- }
@@ -1,19 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { watchActiveTextTrack, type TextTrack } from 'vidstack';
4
-
5
- import { useMediaContext } from './use-media-context';
6
-
7
- /**
8
- * @docs {@link https://www.vidstack.io/docs/player/api/hooks/use-active-text-track}
9
- */
10
- export function useActiveTextTrack(kind: TextTrackKind | TextTrackKind[]): TextTrack | null {
11
- const media = useMediaContext(),
12
- [track, setTrack] = React.useState<TextTrack | null>(null);
13
-
14
- React.useEffect(() => {
15
- return watchActiveTextTrack(media.textTracks, kind, setTrack);
16
- }, [kind]);
17
-
18
- return track;
19
- }
@@ -1,12 +0,0 @@
1
- import { useActiveTextCues } from './use-active-text-cues';
2
- import { useActiveTextTrack } from './use-active-text-track';
3
-
4
- /**
5
- * @docs {@link https://www.vidstack.io/docs/player/api/hooks/use-chapter-title}
6
- */
7
- export function useChapterTitle(): string {
8
- const $track = useActiveTextTrack('chapters'),
9
- $cues = useActiveTextCues($track);
10
-
11
- return $cues[0]?.text || '';
12
- }
@@ -1,121 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { animationFrameThrottle, EventsController, listenEvent, setStyle } from 'maverick.js/std';
4
-
5
- export function useClassName(el: HTMLElement | null, className?: string) {
6
- React.useEffect(() => {
7
- if (!el || !className) return;
8
-
9
- const tokens = className.split(' ');
10
- for (const token of tokens) el.classList.add(token);
11
-
12
- return () => {
13
- for (const token of tokens) el.classList.remove(token);
14
- };
15
- }, [el, className]);
16
- }
17
-
18
- export function useResizeObserver(el: Element | null | undefined, callback: () => void) {
19
- React.useEffect(() => {
20
- if (!el) return;
21
-
22
- callback();
23
-
24
- const observer = new ResizeObserver(animationFrameThrottle(callback));
25
- observer.observe(el);
26
-
27
- return () => observer.disconnect();
28
- }, [el, callback]);
29
- }
30
-
31
- export function useTransitionActive(el: Element | null) {
32
- const [isActive, setIsActive] = React.useState(false);
33
-
34
- React.useEffect(() => {
35
- if (!el) return;
36
-
37
- const events = new EventsController(el)
38
- .add('transitionstart', () => setIsActive(true))
39
- .add('transitionend', () => setIsActive(false));
40
-
41
- return () => events.abort();
42
- }, [el]);
43
-
44
- return isActive;
45
- }
46
-
47
- export function useMouseEnter(el: Element | null) {
48
- const [isMouseEnter, setIsMouseEnter] = React.useState(false);
49
-
50
- React.useEffect(() => {
51
- if (!el) return;
52
-
53
- const events = new EventsController(el)
54
- .add('mouseenter', () => setIsMouseEnter(true))
55
- .add('mouseleave', () => setIsMouseEnter(false));
56
-
57
- return () => events.abort();
58
- }, [el]);
59
-
60
- return isMouseEnter;
61
- }
62
-
63
- export function useFocusIn(el: Element | null) {
64
- const [isFocusIn, setIsFocusIn] = React.useState(false);
65
-
66
- React.useEffect(() => {
67
- if (!el) return;
68
-
69
- const events = new EventsController(el)
70
- .add('focusin', () => setIsFocusIn(true))
71
- .add('focusout', () => setIsFocusIn(false));
72
-
73
- return () => events.abort();
74
- }, [el]);
75
-
76
- return isFocusIn;
77
- }
78
-
79
- export function useActive(el: Element | null) {
80
- const isMouseEnter = useMouseEnter(el),
81
- isFocusIn = useFocusIn(el),
82
- prevMouseEnter = React.useRef(false);
83
-
84
- if (prevMouseEnter.current && !isMouseEnter) return false;
85
-
86
- prevMouseEnter.current = isMouseEnter;
87
- return isMouseEnter || isFocusIn;
88
- }
89
-
90
- export function useRectCSSVars(root: Element | null, el: Element | null, prefix: string) {
91
- const onResize = React.useCallback(() => {
92
- if (root && el) setRectCSSVars(root, el, prefix);
93
- }, [root, el, prefix]);
94
-
95
- useResizeObserver(el, onResize);
96
- }
97
-
98
- export function setRectCSSVars(root: Element, el: Element, prefix: string) {
99
- const rect = el.getBoundingClientRect();
100
- for (const side of ['top', 'left', 'bottom', 'right']) {
101
- setStyle(root as HTMLElement, `--${prefix}-${side}`, `${rect[side]}px`);
102
- }
103
- }
104
-
105
- export function useColorSchemePreference() {
106
- const [colorScheme, setColorScheme] = React.useState<'light' | 'dark'>('dark');
107
-
108
- React.useEffect(() => {
109
- const media = window.matchMedia('(prefers-color-scheme: light)');
110
-
111
- function onChange() {
112
- setColorScheme(media.matches ? 'light' : 'dark');
113
- }
114
-
115
- onChange();
116
-
117
- return listenEvent(media, 'change', onChange);
118
- }, []);
119
-
120
- return colorScheme;
121
- }
@@ -1,6 +0,0 @@
1
- import { useReactContext } from 'maverick.js/react';
2
- import { mediaContext } from 'vidstack';
3
-
4
- export function useMediaContext() {
5
- return useReactContext(mediaContext)!;
6
- }
@@ -1,19 +0,0 @@
1
- import type { MediaPlayerInstance } from '../components/primitives/instances';
2
- import { useMediaContext } from './use-media-context';
3
-
4
- /**
5
- * Returns the nearest parent player component.
6
- *
7
- * @docs {@link https://www.vidstack.io/docs/player/api/hooks/use-media-player}
8
- */
9
- export function useMediaPlayer(): MediaPlayerInstance | null {
10
- const context = useMediaContext();
11
-
12
- if (__DEV__ && !context) {
13
- throw Error(
14
- '[vidstack] no media context was found - was this called outside of `<MediaPlayer>`?',
15
- );
16
- }
17
-
18
- return context?.player || null;
19
- }
@@ -1,31 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { effect } from 'maverick.js';
4
- import { type MediaProviderAdapter } from 'vidstack';
5
-
6
- import { useMediaContext } from './use-media-context';
7
-
8
- /**
9
- * Returns the current parent media provider.
10
- *
11
- * @docs {@link https://www.vidstack.io/docs/player/api/hooks/use-media-provider}
12
- */
13
- export function useMediaProvider(): MediaProviderAdapter | null {
14
- const [provider, setProvider] = React.useState<MediaProviderAdapter | null>(null),
15
- context = useMediaContext();
16
-
17
- if (__DEV__ && !context) {
18
- throw Error(
19
- '[vidstack] no media context was found - was this called outside of `<MediaPlayer>`?',
20
- );
21
- }
22
-
23
- React.useEffect(() => {
24
- if (!context) return;
25
- return effect(() => {
26
- setProvider(context.$provider());
27
- });
28
- }, []);
29
-
30
- return provider;
31
- }
@@ -1,37 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { MediaRemoteControl } from 'vidstack';
4
-
5
- import { MediaPlayerInstance } from '../components/primitives/instances';
6
- import { useMediaContext } from './use-media-context';
7
-
8
- /**
9
- * A media remote provides a simple facade for dispatching media requests to the nearest media
10
- * player.
11
- *
12
- * @param target - The DOM event target to dispatch request events from. Defaults to player
13
- * if no target is provided.
14
- *
15
- * @docs {@link https://www.vidstack.io/docs/player/api/hooks/use-media-remote}
16
- */
17
- export function useMediaRemote(
18
- target?: EventTarget | null | React.RefObject<EventTarget | null>,
19
- ): MediaRemoteControl {
20
- const media = useMediaContext(),
21
- remote = React.useRef<MediaRemoteControl>(null!);
22
-
23
- if (!remote.current) {
24
- remote.current = new MediaRemoteControl();
25
- }
26
-
27
- React.useEffect(() => {
28
- const ref = target && 'current' in target ? target.current : target,
29
- isPlayerRef = ref instanceof MediaPlayerInstance,
30
- player = isPlayerRef ? ref : media?.player;
31
-
32
- remote.current!.setPlayer(player ?? null);
33
- remote.current!.setTarget(ref ?? null);
34
- }, [media, target && 'current' in target ? target.current : target]);
35
-
36
- return remote.current;
37
- }
@@ -1,58 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { useSignal, useSignalRecord, useStateContext } from 'maverick.js/react';
4
- import { mediaState, type MediaState } from 'vidstack';
5
-
6
- import { MediaPlayerInstance } from '../components/primitives/instances';
7
-
8
- const mediaStateRecord = MediaPlayerInstance.state.record,
9
- initialMediaStore = Object.keys(mediaStateRecord).reduce(
10
- (store, prop) => ({
11
- ...store,
12
- [prop]() {
13
- return mediaStateRecord[prop];
14
- },
15
- }),
16
- {},
17
- );
18
-
19
- /**
20
- * This hook is used to subscribe to a specific media state.
21
- *
22
- * @docs {@link https://www.vidstack.io/docs/player/api/hooks/use-media-state}
23
- */
24
- export function useMediaState<T extends keyof MediaState>(
25
- prop: T,
26
- ref?: React.RefObject<MediaPlayerInstance | null>,
27
- ): MediaState[T] {
28
- const $state = useStateContext(mediaState);
29
-
30
- if (__DEV__ && !$state && !ref) {
31
- console.warn(
32
- `[vidstack] \`useMediaState\` requires \`RefObject<MediaPlayerInstance>\` argument if called` +
33
- ' outside the `<MediaPlayer>` component',
34
- );
35
- }
36
-
37
- return useSignal((ref?.current?.$state || $state || initialMediaStore)[prop]);
38
- }
39
-
40
- /**
41
- * This hook is used to subscribe to the current media state on the nearest parent player.
42
- *
43
- * @docs {@link https://vidstack.io/docs/player/core-concepts/state-management#reading}
44
- */
45
- export function useMediaStore(
46
- ref?: React.RefObject<MediaPlayerInstance | null>,
47
- ): Readonly<MediaState> {
48
- const $state = useStateContext(mediaState);
49
-
50
- if (__DEV__ && !$state && !ref) {
51
- console.warn(
52
- `[vidstack] \`useMediaStore\` requires \`RefObject<MediaPlayerInstance>\` argument if called` +
53
- ' outside the `<MediaPlayer>` component',
54
- );
55
- }
56
-
57
- return useSignalRecord(ref?.current ? ref.current.$state : $state || initialMediaStore);
58
- }
@@ -1,24 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { computed, effect, scoped, signal, type MaybeStopEffect } from 'maverick.js';
4
- import { useReactScope } from 'maverick.js/react';
5
-
6
- export function createSignal<T>(initialValue: T, deps: any[] = []) {
7
- const scope = useReactScope();
8
- return React.useMemo(() => scoped(() => signal(initialValue), scope)!, [scope, ...deps]);
9
- }
10
-
11
- export function createComputed<T>(compute: () => T, deps: any[] = []) {
12
- const scope = useReactScope();
13
- return React.useMemo(() => scoped(() => computed(compute), scope)!, [scope, ...deps]);
14
- }
15
-
16
- export function createEffect(compute: () => MaybeStopEffect, deps: any[] = []) {
17
- const scope = useReactScope();
18
- React.useEffect(() => scoped(() => effect(compute), scope)!, [scope, ...deps]);
19
- }
20
-
21
- export function useScoped<T>(compute: () => T) {
22
- const scope = useReactScope();
23
- return React.useMemo(() => scoped(compute, scope)!, [scope]);
24
- }
@@ -1,126 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { effect, signal } from 'maverick.js';
4
- import { EventsController, listenEvent } from 'maverick.js/std';
5
- import { updateSliderPreviewPlacement, type SliderOrientation } from 'vidstack';
6
-
7
- /**
8
- * @docs {@link https://www.vidstack.io/docs/player/api/hooks/use-slider-preview}
9
- */
10
- export function useSliderPreview({
11
- clamp = false,
12
- offset = 0,
13
- orientation = 'horizontal',
14
- }: UseSliderPreview = {}) {
15
- const [rootRef, setRootRef] = React.useState<HTMLElement | null>(null),
16
- [previewRef, setPreviewRef] = React.useState<HTMLElement | null>(null),
17
- [pointerValue, setPointerValue] = React.useState(0),
18
- [isVisible, setIsVisible] = React.useState(false);
19
-
20
- React.useEffect(() => {
21
- if (!rootRef) return;
22
-
23
- const dragging = signal(false);
24
-
25
- function updatePointerValue(event: PointerEvent) {
26
- if (!rootRef) return;
27
- setPointerValue(getPointerValue(rootRef, event, orientation));
28
- }
29
-
30
- return effect(() => {
31
- if (!dragging()) {
32
- new EventsController(rootRef)
33
- .add('pointerenter', () => {
34
- setIsVisible(true);
35
- previewRef?.setAttribute('data-visible', '');
36
- })
37
- .add('pointerdown', (event) => {
38
- dragging.set(true);
39
- updatePointerValue(event);
40
- })
41
- .add('pointerleave', () => {
42
- setIsVisible(false);
43
- previewRef?.removeAttribute('data-visible');
44
- })
45
- .add('pointermove', updatePointerValue);
46
- }
47
-
48
- previewRef?.setAttribute('data-dragging', '');
49
-
50
- new EventsController(document)
51
- .add('pointerup', (event) => {
52
- dragging.set(false);
53
- previewRef?.removeAttribute('data-dragging');
54
- updatePointerValue(event);
55
- })
56
- .add('pointermove', updatePointerValue)
57
- .add('touchmove', (e) => e.preventDefault(), { passive: false });
58
- });
59
- }, [rootRef]);
60
-
61
- React.useEffect(() => {
62
- if (previewRef) {
63
- previewRef.style.setProperty('--slider-pointer', pointerValue + '%');
64
- }
65
- }, [previewRef, pointerValue]);
66
-
67
- React.useEffect(() => {
68
- if (!previewRef) return;
69
-
70
- const update = () => {
71
- updateSliderPreviewPlacement(previewRef, {
72
- offset,
73
- clamp,
74
- orientation,
75
- });
76
- };
77
-
78
- update();
79
- const resize = new ResizeObserver(update);
80
- resize.observe(previewRef);
81
- return () => resize.disconnect();
82
- }, [previewRef, clamp, offset, orientation]);
83
-
84
- return {
85
- previewRootRef: setRootRef,
86
- previewRef: setPreviewRef,
87
- previewValue: pointerValue,
88
- isPreviewVisible: isVisible,
89
- };
90
- }
91
-
92
- export interface UseSliderPreview {
93
- /**
94
- * Whether the preview should be clamped to the start and end of the slider root. If `true` the
95
- * preview won't be placed outside the root bounds.
96
- */
97
- clamp?: boolean;
98
- /**
99
- * The distance in pixels between the preview and the slider root. You can also set
100
- * the CSS variable `--media-slider-preview-offset` to adjust this offset.
101
- */
102
- offset?: number;
103
- /**
104
- * The orientation of the slider.
105
- */
106
- orientation?: SliderOrientation;
107
- }
108
-
109
- function getPointerValue(root: HTMLElement, event: PointerEvent, orientation: SliderOrientation) {
110
- let thumbPositionRate: number,
111
- rect = root.getBoundingClientRect();
112
-
113
- if (orientation === 'vertical') {
114
- const { bottom: trackBottom, height: trackHeight } = rect;
115
- thumbPositionRate = (trackBottom - event.clientY) / trackHeight;
116
- } else {
117
- const { left: trackLeft, width: trackWidth } = rect;
118
- thumbPositionRate = (event.clientX - trackLeft) / trackWidth;
119
- }
120
-
121
- return round(Math.max(0, Math.min(100, 100 * thumbPositionRate)));
122
- }
123
-
124
- function round(num: number) {
125
- return Number(num.toFixed(3));
126
- }
@@ -1,63 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { useSignal, useSignalRecord, useStateContext } from 'maverick.js/react';
4
- import { sliderState, type SliderState } from 'vidstack';
5
-
6
- import {
7
- SliderInstance,
8
- type TimeSliderInstance,
9
- type VolumeSliderInstance,
10
- } from '../components/primitives/instances';
11
-
12
- const sliderStateRecord = SliderInstance.state.record,
13
- initialSliderStore = Object.keys(sliderStateRecord).reduce(
14
- (store, prop) => ({
15
- ...store,
16
- [prop]() {
17
- return sliderStateRecord[prop];
18
- },
19
- }),
20
- {},
21
- );
22
-
23
- /**
24
- * This hook is used to subscribe to a specific slider state.
25
- *
26
- * @docs {@link https://www.vidstack.io/docs/player/api/hooks/use-slider-state}
27
- */
28
- export function useSliderState<T extends keyof SliderState>(
29
- prop: T,
30
- ref?: React.RefObject<SliderInstance | VolumeSliderInstance | TimeSliderInstance | null>,
31
- ): SliderState[T] {
32
- const $state = useStateContext(sliderState);
33
-
34
- if (__DEV__ && !$state && !ref) {
35
- console.warn(
36
- `[vidstack] \`useSliderState\` requires \`RefObject<SliderInstance>\` argument if called` +
37
- ' outside of a slider component',
38
- );
39
- }
40
-
41
- return useSignal((ref?.current?.$state || $state || initialSliderStore)[prop]);
42
- }
43
-
44
- /**
45
- * This hook is used to subscribe to the current slider state on the given or nearest slider
46
- * component.
47
- *
48
- * @docs {@link https://www.vidstack.io/docs/player/api/hooks/use-slider-state#store}
49
- */
50
- export function useSliderStore(
51
- ref?: React.RefObject<SliderInstance | VolumeSliderInstance | TimeSliderInstance | null>,
52
- ): Readonly<SliderState> {
53
- const $state = useStateContext(sliderState);
54
-
55
- if (__DEV__ && !$state && !ref) {
56
- console.warn(
57
- `[vidstack] \`useSliderStore\` requires \`RefObject<SliderInstance>\` argument if called` +
58
- ' outside of a slider component',
59
- );
60
- }
61
-
62
- return useSignalRecord(ref?.current ? ref.current.$state : $state || initialSliderStore);
63
- }