@hanifhan1f/vidstack-react 1.12.13 → 1.12.14

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 (389) 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/player/vidstack-default-components.js +14 -0
  21. package/dev/player/vidstack-default-icons.js +88 -0
  22. package/dev/player/vidstack-default-layout.js +14 -0
  23. package/dev/player/vidstack-plyr-icons.js +62 -0
  24. package/dev/player/vidstack-plyr-layout.js +636 -0
  25. package/dev/player/vidstack-remotion.js +345 -0
  26. package/dev/vidstack.js +587 -0
  27. package/dom.d.ts +91 -0
  28. package/google-cast.d.ts +1422 -0
  29. package/icons.d.ts +5 -0
  30. package/index.d.ts +8 -0
  31. package/package.json +9 -60
  32. package/player/layouts/default.d.ts +11392 -0
  33. package/player/layouts/plyr.d.ts +5 -0
  34. package/player/remotion.d.ts +5 -0
  35. package/player/styles/base.css +153 -0
  36. package/player/styles/default/buffering.css +55 -0
  37. package/player/styles/default/buttons.css +175 -0
  38. package/player/styles/default/captions.css +181 -0
  39. package/player/styles/default/chapter-title.css +26 -0
  40. package/player/styles/default/controls.css +56 -0
  41. package/player/styles/default/gestures.css +19 -0
  42. package/player/styles/default/icons.css +6 -0
  43. package/player/styles/default/keyboard.css +148 -0
  44. package/player/styles/default/layouts/audio.css +417 -0
  45. package/player/styles/default/layouts/video.css +1082 -0
  46. package/player/styles/default/menus.css +959 -0
  47. package/player/styles/default/poster.css +52 -0
  48. package/player/styles/default/sliders.css +391 -0
  49. package/player/styles/default/theme.css +2461 -0
  50. package/player/styles/default/thumbnail.css +40 -0
  51. package/player/styles/default/time.css +45 -0
  52. package/player/styles/default/tooltips.css +141 -0
  53. package/player/styles/plyr/theme.css +1237 -0
  54. package/prod/chunks/vidstack-0Foyib2F.js +34 -0
  55. package/prod/chunks/vidstack-BbPEqH3g.js +11196 -0
  56. package/prod/chunks/vidstack-Bh7M8kL6.js +663 -0
  57. package/prod/chunks/vidstack-BlPINAXN.js +189 -0
  58. package/prod/chunks/vidstack-C5Rzkyfp.js +375 -0
  59. package/prod/chunks/vidstack-CBF7iUqu.js +22 -0
  60. package/prod/chunks/vidstack-CZNlvfmV.js +288 -0
  61. package/prod/chunks/vidstack-CZgUA94N.js +1979 -0
  62. package/prod/chunks/vidstack-D0XCUWbp.js +159 -0
  63. package/prod/chunks/vidstack-DTyDOhwS.js +504 -0
  64. package/prod/chunks/vidstack-DhC5F6c8.js +470 -0
  65. package/prod/chunks/vidstack-Dm1xEU9Q.js +36 -0
  66. package/prod/chunks/vidstack-Ma9rwtR0.js +386 -0
  67. package/prod/chunks/vidstack-WsodkLQg.js +1371 -0
  68. package/prod/chunks/vidstack-jIPoNqhj.js +545 -0
  69. package/prod/chunks/vidstack-krOAtKMi.js +34 -0
  70. package/prod/chunks/vidstack-vqp2QaHR.js +9 -0
  71. package/prod/chunks/vidstack-xo_SmgiV.js +84 -0
  72. package/prod/chunks/vidstack-xvxeRtaN.js +61 -0
  73. package/prod/player/vidstack-default-components.js +14 -0
  74. package/prod/player/vidstack-default-icons.js +88 -0
  75. package/prod/player/vidstack-default-layout.js +14 -0
  76. package/prod/player/vidstack-plyr-icons.js +62 -0
  77. package/prod/player/vidstack-plyr-layout.js +636 -0
  78. package/prod/player/vidstack-remotion.js +335 -0
  79. package/prod/vidstack-icons.js +435 -0
  80. package/prod/vidstack.js +648 -0
  81. package/server/chunks/vidstack-2zMSe4ym.js +1371 -0
  82. package/server/chunks/vidstack-BtqWstSj.js +375 -0
  83. package/server/chunks/vidstack-C-HdFsZi.js +84 -0
  84. package/server/chunks/vidstack-C4iWXMC-.js +545 -0
  85. package/server/chunks/vidstack-C5zFBMwg.js +386 -0
  86. package/server/chunks/vidstack-CBF7iUqu.js +22 -0
  87. package/server/chunks/vidstack-CEh38XpD.js +288 -0
  88. package/server/chunks/vidstack-CkMAeO-e.js +34 -0
  89. package/server/chunks/vidstack-Cm0qnRvu.js +11196 -0
  90. package/server/chunks/vidstack-CoGzBr_V.js +663 -0
  91. package/server/chunks/vidstack-CyFwkPiu.js +470 -0
  92. package/server/chunks/vidstack-D-hQD1eE.js +9 -0
  93. package/server/chunks/vidstack-D_bWd66h.js +2023 -0
  94. package/server/chunks/vidstack-Dm1xEU9Q.js +36 -0
  95. package/server/chunks/vidstack-DtQSvsQr.js +189 -0
  96. package/server/chunks/vidstack-jlaBqZq5.js +61 -0
  97. package/server/chunks/vidstack-krOAtKMi.js +34 -0
  98. package/server/chunks/vidstack-rWs25cS9.js +159 -0
  99. package/server/chunks/vidstack-uyCXITen.js +504 -0
  100. package/server/player/vidstack-default-components.js +14 -0
  101. package/server/player/vidstack-default-icons.js +88 -0
  102. package/server/player/vidstack-default-layout.js +14 -0
  103. package/server/player/vidstack-plyr-icons.js +62 -0
  104. package/server/player/vidstack-plyr-layout.js +636 -0
  105. package/server/player/vidstack-remotion.js +335 -0
  106. package/server/vidstack.js +648 -0
  107. package/tailwind.cjs +101 -0
  108. package/tailwind.d.cts +15 -0
  109. package/.templates/sandbox/document.css +0 -27
  110. package/.templates/sandbox/favicon-32x32.png +0 -0
  111. package/.templates/sandbox/index.html +0 -21
  112. package/.templates/sandbox/main.tsx +0 -12
  113. package/.templates/sandbox/player.css +0 -39
  114. package/.templates/sandbox/player.tsx +0 -121
  115. package/.templates/sandbox/tracks.ts +0 -23
  116. package/analyze.config.ts +0 -7
  117. package/build/build-icons.js +0 -62
  118. package/rollup.config.ts +0 -256
  119. package/src/components/announcer.tsx +0 -47
  120. package/src/components/layouts/default/audio-layout.tsx +0 -231
  121. package/src/components/layouts/default/context.ts +0 -28
  122. package/src/components/layouts/default/hooks.ts +0 -13
  123. package/src/components/layouts/default/icons.tsx +0 -225
  124. package/src/components/layouts/default/index.ts +0 -11
  125. package/src/components/layouts/default/media-layout.tsx +0 -259
  126. package/src/components/layouts/default/slots.tsx +0 -98
  127. package/src/components/layouts/default/ui/announcer.tsx +0 -22
  128. package/src/components/layouts/default/ui/buttons.tsx +0 -301
  129. package/src/components/layouts/default/ui/captions.tsx +0 -16
  130. package/src/components/layouts/default/ui/controls.tsx +0 -12
  131. package/src/components/layouts/default/ui/keyboard-display.tsx +0 -132
  132. package/src/components/layouts/default/ui/menus/accessibility-menu.tsx +0 -100
  133. package/src/components/layouts/default/ui/menus/audio-menu.tsx +0 -167
  134. package/src/components/layouts/default/ui/menus/captions-menu.tsx +0 -61
  135. package/src/components/layouts/default/ui/menus/chapters-menu.tsx +0 -132
  136. package/src/components/layouts/default/ui/menus/font-menu.tsx +0 -331
  137. package/src/components/layouts/default/ui/menus/items/menu-checkbox.tsx +0 -72
  138. package/src/components/layouts/default/ui/menus/items/menu-items.tsx +0 -135
  139. package/src/components/layouts/default/ui/menus/items/menu-slider.tsx +0 -92
  140. package/src/components/layouts/default/ui/menus/playback-menu.tsx +0 -232
  141. package/src/components/layouts/default/ui/menus/settings-menu.tsx +0 -114
  142. package/src/components/layouts/default/ui/menus/utils.ts +0 -12
  143. package/src/components/layouts/default/ui/sliders.tsx +0 -136
  144. package/src/components/layouts/default/ui/time.tsx +0 -73
  145. package/src/components/layouts/default/ui/title.tsx +0 -24
  146. package/src/components/layouts/default/ui/tooltip.tsx +0 -27
  147. package/src/components/layouts/default/ui.ts +0 -8
  148. package/src/components/layouts/default/video-layout.tsx +0 -344
  149. package/src/components/layouts/plyr/context.ts +0 -26
  150. package/src/components/layouts/plyr/icons/plyr-airplay.js +0 -1
  151. package/src/components/layouts/plyr/icons/plyr-captions-off.js +0 -1
  152. package/src/components/layouts/plyr/icons/plyr-captions-on.js +0 -1
  153. package/src/components/layouts/plyr/icons/plyr-download.js +0 -1
  154. package/src/components/layouts/plyr/icons/plyr-enter-fullscreen.js +0 -1
  155. package/src/components/layouts/plyr/icons/plyr-exit-fullscreen.js +0 -1
  156. package/src/components/layouts/plyr/icons/plyr-fast-forward.js +0 -1
  157. package/src/components/layouts/plyr/icons/plyr-muted.js +0 -1
  158. package/src/components/layouts/plyr/icons/plyr-pause.js +0 -1
  159. package/src/components/layouts/plyr/icons/plyr-pip.js +0 -1
  160. package/src/components/layouts/plyr/icons/plyr-play.js +0 -1
  161. package/src/components/layouts/plyr/icons/plyr-restart.js +0 -1
  162. package/src/components/layouts/plyr/icons/plyr-rewind.js +0 -1
  163. package/src/components/layouts/plyr/icons/plyr-settings.js +0 -1
  164. package/src/components/layouts/plyr/icons/plyr-volume.js +0 -1
  165. package/src/components/layouts/plyr/icons.tsx +0 -71
  166. package/src/components/layouts/plyr/index.ts +0 -11
  167. package/src/components/layouts/plyr/layout.tsx +0 -1024
  168. package/src/components/layouts/plyr/props.ts +0 -104
  169. package/src/components/layouts/plyr/slots.tsx +0 -52
  170. package/src/components/layouts/remotion-ui.ts +0 -13
  171. package/src/components/layouts/utils.ts +0 -17
  172. package/src/components/player-callbacks.ts +0 -67
  173. package/src/components/player.tsx +0 -67
  174. package/src/components/primitives/instances.ts +0 -92
  175. package/src/components/primitives/nodes.tsx +0 -58
  176. package/src/components/primitives/slot.tsx +0 -132
  177. package/src/components/provider.tsx +0 -187
  178. package/src/components/text-track.tsx +0 -106
  179. package/src/components/ui/buttons/airplay-button.tsx +0 -53
  180. package/src/components/ui/buttons/caption-button.tsx +0 -55
  181. package/src/components/ui/buttons/fullscreen-button.tsx +0 -55
  182. package/src/components/ui/buttons/google-cast-button.tsx +0 -53
  183. package/src/components/ui/buttons/live-button.tsx +0 -56
  184. package/src/components/ui/buttons/mute-button.tsx +0 -60
  185. package/src/components/ui/buttons/pip-button.tsx +0 -54
  186. package/src/components/ui/buttons/play-button.tsx +0 -53
  187. package/src/components/ui/buttons/seek-button.tsx +0 -55
  188. package/src/components/ui/buttons/toggle-button.tsx +0 -51
  189. package/src/components/ui/caption.tsx +0 -70
  190. package/src/components/ui/captions.tsx +0 -41
  191. package/src/components/ui/chapter-title.tsx +0 -40
  192. package/src/components/ui/controls.tsx +0 -90
  193. package/src/components/ui/gesture.tsx +0 -43
  194. package/src/components/ui/menu.tsx +0 -251
  195. package/src/components/ui/poster.tsx +0 -101
  196. package/src/components/ui/radio-group.tsx +0 -88
  197. package/src/components/ui/sliders/audio-gain-slider.tsx +0 -55
  198. package/src/components/ui/sliders/quality-slider.tsx +0 -54
  199. package/src/components/ui/sliders/slider-callbacks.ts +0 -14
  200. package/src/components/ui/sliders/slider-value.tsx +0 -13
  201. package/src/components/ui/sliders/slider.tsx +0 -254
  202. package/src/components/ui/sliders/speed-slider.tsx +0 -54
  203. package/src/components/ui/sliders/time-slider.tsx +0 -379
  204. package/src/components/ui/sliders/volume-slider.tsx +0 -55
  205. package/src/components/ui/spinner.tsx +0 -105
  206. package/src/components/ui/thumbnail.tsx +0 -82
  207. package/src/components/ui/time.tsx +0 -77
  208. package/src/components/ui/title.tsx +0 -32
  209. package/src/components/ui/tooltip.tsx +0 -135
  210. package/src/globals.d.ts +0 -3
  211. package/src/hooks/create-text-track.ts +0 -22
  212. package/src/hooks/options/use-audio-gain-options.ts +0 -75
  213. package/src/hooks/options/use-audio-options.ts +0 -71
  214. package/src/hooks/options/use-caption-options.ts +0 -95
  215. package/src/hooks/options/use-chapter-options.ts +0 -97
  216. package/src/hooks/options/use-playback-rate-options.ts +0 -75
  217. package/src/hooks/options/use-video-quality-options.ts +0 -123
  218. package/src/hooks/use-active-text-cues.ts +0 -28
  219. package/src/hooks/use-active-text-track.ts +0 -19
  220. package/src/hooks/use-chapter-title.ts +0 -12
  221. package/src/hooks/use-dom.ts +0 -121
  222. package/src/hooks/use-media-context.ts +0 -6
  223. package/src/hooks/use-media-player.ts +0 -19
  224. package/src/hooks/use-media-provider.ts +0 -31
  225. package/src/hooks/use-media-remote.ts +0 -37
  226. package/src/hooks/use-media-state.ts +0 -58
  227. package/src/hooks/use-signals.ts +0 -24
  228. package/src/hooks/use-slider-preview.ts +0 -126
  229. package/src/hooks/use-slider-state.ts +0 -63
  230. package/src/hooks/use-state.ts +0 -47
  231. package/src/hooks/use-text-cues.ts +0 -33
  232. package/src/hooks/use-thumbnails.ts +0 -69
  233. package/src/icon.ts +0 -37
  234. package/src/icons.ts +0 -754
  235. package/src/index.ts +0 -181
  236. package/src/providers/remotion/index.ts +0 -10
  237. package/src/providers/remotion/layout-engine.ts +0 -123
  238. package/src/providers/remotion/loader.ts +0 -35
  239. package/src/providers/remotion/playback-engine.ts +0 -142
  240. package/src/providers/remotion/provider.tsx +0 -514
  241. package/src/providers/remotion/type-check.ts +0 -13
  242. package/src/providers/remotion/types.ts +0 -94
  243. package/src/providers/remotion/ui/context.tsx +0 -120
  244. package/src/providers/remotion/ui/error-boundary.tsx +0 -57
  245. package/src/providers/remotion/ui/poster.tsx +0 -33
  246. package/src/providers/remotion/ui/slider-thumbnail.tsx +0 -41
  247. package/src/providers/remotion/ui/thumbnail.tsx +0 -166
  248. package/src/providers/remotion/validate.ts +0 -220
  249. package/src/source.ts +0 -5
  250. package/src/utils.ts +0 -27
  251. package/tsconfig.build.json +0 -10
  252. package/tsconfig.json +0 -11
  253. package/types/react/src/components/announcer.d.ts +0 -16
  254. package/types/react/src/components/layouts/default/audio-layout.d.ts +0 -27
  255. package/types/react/src/components/layouts/default/context.d.ts +0 -14
  256. package/types/react/src/components/layouts/default/hooks.d.ts +0 -2
  257. package/types/react/src/components/layouts/default/icons.d.ts +0 -95
  258. package/types/react/src/components/layouts/default/index.d.ts +0 -5
  259. package/types/react/src/components/layouts/default/media-layout.d.ts +0 -133
  260. package/types/react/src/components/layouts/default/slots.d.ts +0 -22
  261. package/types/react/src/components/layouts/default/ui/announcer.d.ts +0 -6
  262. package/types/react/src/components/layouts/default/ui/buttons.d.ts +0 -54
  263. package/types/react/src/components/layouts/default/ui/captions.d.ts +0 -6
  264. package/types/react/src/components/layouts/default/ui/controls.d.ts +0 -6
  265. package/types/react/src/components/layouts/default/ui/keyboard-display.d.ts +0 -8
  266. package/types/react/src/components/layouts/default/ui/menus/accessibility-menu.d.ts +0 -10
  267. package/types/react/src/components/layouts/default/ui/menus/audio-menu.d.ts +0 -10
  268. package/types/react/src/components/layouts/default/ui/menus/captions-menu.d.ts +0 -10
  269. package/types/react/src/components/layouts/default/ui/menus/chapters-menu.d.ts +0 -7
  270. package/types/react/src/components/layouts/default/ui/menus/font-menu.d.ts +0 -6
  271. package/types/react/src/components/layouts/default/ui/menus/items/menu-checkbox.d.ts +0 -13
  272. package/types/react/src/components/layouts/default/ui/menus/items/menu-items.d.ts +0 -49
  273. package/types/react/src/components/layouts/default/ui/menus/items/menu-slider.d.ts +0 -26
  274. package/types/react/src/components/layouts/default/ui/menus/playback-menu.d.ts +0 -10
  275. package/types/react/src/components/layouts/default/ui/menus/settings-menu.d.ts +0 -15
  276. package/types/react/src/components/layouts/default/ui/menus/utils.d.ts +0 -1
  277. package/types/react/src/components/layouts/default/ui/sliders.d.ts +0 -24
  278. package/types/react/src/components/layouts/default/ui/time.d.ts +0 -30
  279. package/types/react/src/components/layouts/default/ui/title.d.ts +0 -6
  280. package/types/react/src/components/layouts/default/ui/tooltip.d.ts +0 -12
  281. package/types/react/src/components/layouts/default/ui.d.ts +0 -8
  282. package/types/react/src/components/layouts/default/video-layout.d.ts +0 -47
  283. package/types/react/src/components/layouts/plyr/context.d.ts +0 -12
  284. package/types/react/src/components/layouts/plyr/icons/plyr-airplay.d.ts +0 -2
  285. package/types/react/src/components/layouts/plyr/icons/plyr-captions-off.d.ts +0 -2
  286. package/types/react/src/components/layouts/plyr/icons/plyr-captions-on.d.ts +0 -2
  287. package/types/react/src/components/layouts/plyr/icons/plyr-download.d.ts +0 -2
  288. package/types/react/src/components/layouts/plyr/icons/plyr-enter-fullscreen.d.ts +0 -2
  289. package/types/react/src/components/layouts/plyr/icons/plyr-exit-fullscreen.d.ts +0 -2
  290. package/types/react/src/components/layouts/plyr/icons/plyr-fast-forward.d.ts +0 -2
  291. package/types/react/src/components/layouts/plyr/icons/plyr-muted.d.ts +0 -2
  292. package/types/react/src/components/layouts/plyr/icons/plyr-pause.d.ts +0 -2
  293. package/types/react/src/components/layouts/plyr/icons/plyr-pip.d.ts +0 -2
  294. package/types/react/src/components/layouts/plyr/icons/plyr-play.d.ts +0 -2
  295. package/types/react/src/components/layouts/plyr/icons/plyr-restart.d.ts +0 -2
  296. package/types/react/src/components/layouts/plyr/icons/plyr-rewind.d.ts +0 -2
  297. package/types/react/src/components/layouts/plyr/icons/plyr-settings.d.ts +0 -2
  298. package/types/react/src/components/layouts/plyr/icons/plyr-volume.d.ts +0 -2
  299. package/types/react/src/components/layouts/plyr/icons.d.ts +0 -25
  300. package/types/react/src/components/layouts/plyr/index.d.ts +0 -6
  301. package/types/react/src/components/layouts/plyr/layout.d.ts +0 -17
  302. package/types/react/src/components/layouts/plyr/props.d.ts +0 -71
  303. package/types/react/src/components/layouts/plyr/slots.d.ts +0 -9
  304. package/types/react/src/components/layouts/remotion-ui.d.ts +0 -3
  305. package/types/react/src/components/layouts/utils.d.ts +0 -1
  306. package/types/react/src/components/player-callbacks.d.ts +0 -6
  307. package/types/react/src/components/player.d.ts +0 -32
  308. package/types/react/src/components/primitives/instances.d.ts +0 -83
  309. package/types/react/src/components/primitives/nodes.d.ts +0 -15
  310. package/types/react/src/components/primitives/slot.d.ts +0 -11
  311. package/types/react/src/components/provider.d.ts +0 -26
  312. package/types/react/src/components/text-track.d.ts +0 -100
  313. package/types/react/src/components/ui/buttons/airplay-button.d.ts +0 -22
  314. package/types/react/src/components/ui/buttons/caption-button.d.ts +0 -24
  315. package/types/react/src/components/ui/buttons/fullscreen-button.d.ts +0 -24
  316. package/types/react/src/components/ui/buttons/google-cast-button.d.ts +0 -22
  317. package/types/react/src/components/ui/buttons/live-button.d.ts +0 -26
  318. package/types/react/src/components/ui/buttons/mute-button.d.ts +0 -30
  319. package/types/react/src/components/ui/buttons/pip-button.d.ts +0 -24
  320. package/types/react/src/components/ui/buttons/play-button.d.ts +0 -23
  321. package/types/react/src/components/ui/buttons/seek-button.d.ts +0 -25
  322. package/types/react/src/components/ui/buttons/toggle-button.d.ts +0 -22
  323. package/types/react/src/components/ui/caption.d.ts +0 -11
  324. package/types/react/src/components/ui/captions.d.ts +0 -20
  325. package/types/react/src/components/ui/chapter-title.d.ts +0 -20
  326. package/types/react/src/components/ui/controls.d.ts +0 -40
  327. package/types/react/src/components/ui/gesture.d.ts +0 -20
  328. package/types/react/src/components/ui/menu.d.ts +0 -102
  329. package/types/react/src/components/ui/poster.d.ts +0 -25
  330. package/types/react/src/components/ui/radio-group.d.ts +0 -39
  331. package/types/react/src/components/ui/sliders/audio-gain-slider.d.ts +0 -29
  332. package/types/react/src/components/ui/sliders/quality-slider.d.ts +0 -28
  333. package/types/react/src/components/ui/sliders/slider-callbacks.d.ts +0 -6
  334. package/types/react/src/components/ui/sliders/slider-value.d.ts +0 -9
  335. package/types/react/src/components/ui/sliders/slider.d.ts +0 -134
  336. package/types/react/src/components/ui/sliders/speed-slider.d.ts +0 -28
  337. package/types/react/src/components/ui/sliders/time-slider.d.ts +0 -124
  338. package/types/react/src/components/ui/sliders/volume-slider.d.ts +0 -29
  339. package/types/react/src/components/ui/spinner.d.ts +0 -31
  340. package/types/react/src/components/ui/thumbnail.d.ts +0 -26
  341. package/types/react/src/components/ui/time.d.ts +0 -20
  342. package/types/react/src/components/ui/title.d.ts +0 -15
  343. package/types/react/src/components/ui/tooltip.d.ts +0 -63
  344. package/types/react/src/hooks/create-text-track.d.ts +0 -7
  345. package/types/react/src/hooks/options/use-audio-gain-options.d.ts +0 -22
  346. package/types/react/src/hooks/options/use-audio-options.d.ts +0 -17
  347. package/types/react/src/hooks/options/use-caption-options.d.ts +0 -24
  348. package/types/react/src/hooks/options/use-chapter-options.d.ts +0 -18
  349. package/types/react/src/hooks/options/use-playback-rate-options.d.ts +0 -22
  350. package/types/react/src/hooks/options/use-video-quality-options.d.ts +0 -35
  351. package/types/react/src/hooks/use-active-text-cues.d.ts +0 -6
  352. package/types/react/src/hooks/use-active-text-track.d.ts +0 -5
  353. package/types/react/src/hooks/use-chapter-title.d.ts +0 -4
  354. package/types/react/src/hooks/use-dom.d.ts +0 -9
  355. package/types/react/src/hooks/use-media-context.d.ts +0 -1
  356. package/types/react/src/hooks/use-media-player.d.ts +0 -7
  357. package/types/react/src/hooks/use-media-provider.d.ts +0 -7
  358. package/types/react/src/hooks/use-media-remote.d.ts +0 -12
  359. package/types/react/src/hooks/use-media-state.d.ts +0 -15
  360. package/types/react/src/hooks/use-signals.d.ts +0 -5
  361. package/types/react/src/hooks/use-slider-preview.d.ts +0 -27
  362. package/types/react/src/hooks/use-slider-state.d.ts +0 -16
  363. package/types/react/src/hooks/use-state.d.ts +0 -18
  364. package/types/react/src/hooks/use-text-cues.d.ts +0 -6
  365. package/types/react/src/hooks/use-thumbnails.d.ts +0 -16
  366. package/types/react/src/icon.d.ts +0 -17
  367. package/types/react/src/icons.d.ts +0 -215
  368. package/types/react/src/index.d.ts +0 -78
  369. package/types/react/src/providers/remotion/index.d.ts +0 -7
  370. package/types/react/src/providers/remotion/layout-engine.d.ts +0 -8
  371. package/types/react/src/providers/remotion/loader.d.ts +0 -9
  372. package/types/react/src/providers/remotion/playback-engine.d.ts +0 -11
  373. package/types/react/src/providers/remotion/provider.d.ts +0 -26
  374. package/types/react/src/providers/remotion/type-check.d.ts +0 -6
  375. package/types/react/src/providers/remotion/types.d.ts +0 -91
  376. package/types/react/src/providers/remotion/ui/context.d.ts +0 -17
  377. package/types/react/src/providers/remotion/ui/error-boundary.d.ts +0 -21
  378. package/types/react/src/providers/remotion/ui/poster.d.ts +0 -18
  379. package/types/react/src/providers/remotion/ui/slider-thumbnail.d.ts +0 -17
  380. package/types/react/src/providers/remotion/ui/thumbnail.d.ts +0 -32
  381. package/types/react/src/providers/remotion/validate.d.ts +0 -12
  382. package/types/react/src/source.d.ts +0 -3
  383. package/types/react/src/utils.d.ts +0 -3
  384. package/types/vidstack/src/core/api/src-types.d.ts +0 -50
  385. package/types/vidstack/src/utils/mime.d.ts +0 -15
  386. package/types/vidstack/src/utils/network.d.ts +0 -17
  387. package/types/vidstack/src/utils/support.d.ts +0 -72
  388. package/vite.config.ts +0 -23
  389. /package/{npm/analyze.json.d.ts → analyze.json.d.ts} +0 -0
@@ -1,379 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { effect, signal, type WriteSignal } from 'maverick.js';
4
- import {
5
- composeRefs,
6
- createReactComponent,
7
- useSignal,
8
- useStateContext,
9
- type ReactElementProps,
10
- } from 'maverick.js/react';
11
- import type { VTTCue } from 'media-captions';
12
- import { mediaState } from 'vidstack';
13
-
14
- import { createVTTCue } from '../../../utils';
15
- import {
16
- SliderChaptersInstance,
17
- SliderThumbnailInstance,
18
- SliderVideoInstance,
19
- TimeSliderInstance,
20
- } from '../../primitives/instances';
21
- import { Primitive, type PrimitivePropsWithRef } from '../../primitives/nodes';
22
- import * as ThumbnailBase from '../thumbnail';
23
- import { sliderCallbacks } from './slider-callbacks';
24
-
25
- /* -------------------------------------------------------------------------------------------------
26
- * TimeSliderContext
27
- * -----------------------------------------------------------------------------------------------*/
28
-
29
- const TimeSliderContext = React.createContext<TimeSliderContext>({
30
- $chapters: signal<SliderChaptersInstance | null>(null),
31
- });
32
-
33
- interface TimeSliderContext {
34
- $chapters: WriteSignal<SliderChaptersInstance | null>;
35
- }
36
-
37
- TimeSliderContext.displayName = 'TimeSliderContext';
38
-
39
- /* -------------------------------------------------------------------------------------------------
40
- * TimeSlider
41
- * -----------------------------------------------------------------------------------------------*/
42
-
43
- const TimeSliderBridge = createReactComponent(TimeSliderInstance, {
44
- events: sliderCallbacks,
45
- domEventsRegex: /^onMedia/,
46
- });
47
-
48
- export interface RootProps extends ReactElementProps<TimeSliderInstance> {
49
- asChild?: boolean;
50
- children?: React.ReactNode;
51
- ref?: React.Ref<TimeSliderInstance>;
52
- }
53
-
54
- /**
55
- * Versatile and user-friendly input time control designed for seamless cross-browser and provider
56
- * compatibility and accessibility with ARIA support. It offers a smooth user experience for both
57
- * mouse and touch interactions and is highly customizable in terms of styling. Users can
58
- * effortlessly change the current playback time within the range 0 to seekable end.
59
- *
60
- * @docs {@link https://www.vidstack.io/docs/player/components/sliders/time-slider}
61
- * @example
62
- * ```tsx
63
- * <TimeSlider.Root>
64
- * <TimeSlider.Track>
65
- * <TimeSlider.TrackFill />
66
- * <TimeSlider.Progress />
67
- * </TimeSlider.Track>
68
- * <TimeSlider.Thumb />
69
- * </TimeSlider.Root>
70
- * ```
71
- */
72
- const Root = React.forwardRef<TimeSliderInstance, RootProps>(
73
- ({ children, ...props }, forwardRef) => {
74
- const $chapters = React.useMemo(() => signal<SliderChaptersInstance | null>(null), []);
75
- return (
76
- <TimeSliderContext.Provider value={{ $chapters }}>
77
- <TimeSliderBridge {...props} ref={forwardRef}>
78
- {(props) => <Primitive.div {...props}>{children}</Primitive.div>}
79
- </TimeSliderBridge>
80
- </TimeSliderContext.Provider>
81
- );
82
- },
83
- );
84
-
85
- Root.displayName = 'TimeSlider';
86
-
87
- /* -------------------------------------------------------------------------------------------------
88
- * SliderChapters
89
- * -----------------------------------------------------------------------------------------------*/
90
-
91
- const SliderChaptersBridge = createReactComponent(SliderChaptersInstance);
92
-
93
- export interface ChaptersProps extends Omit<ReactElementProps<SliderChaptersInstance>, 'children'> {
94
- children: (cues: VTTCue[], forwardRef: React.RefCallback<HTMLElement>) => React.ReactNode;
95
- }
96
-
97
- /**
98
- * Used to create predefined sections within a time slider interface based on the currently
99
- * active chapters text track.
100
- *
101
- * @docs {@link https://www.vidstack.io/docs/player/components/slider-chapters}
102
- * @example
103
- * ```tsx
104
- * <TimeSlider.Root>
105
- * <TimeSlider.Chapters>
106
- * {(cues, forwardRef) =>
107
- * cues.map((cue) => (
108
- * <div key={cue.startTime} ref={forwardRef}>
109
- * <TimeSlider.Track>
110
- * <TimeSlider.TrackFill />
111
- * <TimeSlider.Progress />
112
- * </TimeSlider.Track>
113
- * </div>
114
- * ))}
115
- * </TimeSlider.Chapters>
116
- * </TimeSlider.Root>
117
- * ```
118
- */
119
- const Chapters = React.forwardRef<HTMLDivElement, ChaptersProps>(
120
- ({ children, ...props }, forwardRef) => {
121
- return (
122
- <SliderChaptersBridge {...props}>
123
- {(props, instance) => (
124
- <Primitive.div
125
- {...props}
126
- ref={composeRefs(props.ref as React.Ref<any>, forwardRef as React.Ref<any>)}
127
- >
128
- <ChapterTracks instance={instance}>{children}</ChapterTracks>
129
- </Primitive.div>
130
- )}
131
- </SliderChaptersBridge>
132
- );
133
- },
134
- );
135
-
136
- Chapters.displayName = 'SliderChapters';
137
-
138
- interface ChapterTracksProps {
139
- instance: SliderChaptersInstance;
140
- children: ChaptersProps['children'];
141
- }
142
-
143
- function ChapterTracks({ instance, children }: ChapterTracksProps) {
144
- const $cues = useSignal(() => instance.cues, instance),
145
- refs = React.useRef<HTMLElement[]>([]),
146
- emptyCue = React.useRef<VTTCue>(null!),
147
- { $chapters } = React.useContext(TimeSliderContext);
148
-
149
- if (!emptyCue.current) {
150
- emptyCue.current = createVTTCue();
151
- }
152
-
153
- React.useEffect(() => {
154
- $chapters.set(instance);
155
- return () => void $chapters.set(null);
156
- }, [instance]);
157
-
158
- React.useEffect(() => {
159
- instance.setRefs(refs.current);
160
- }, [$cues]);
161
-
162
- return children($cues.length ? $cues : [emptyCue.current], (el) => {
163
- if (!el) {
164
- refs.current.length = 0;
165
- return;
166
- }
167
-
168
- refs.current.push(el);
169
- });
170
- }
171
-
172
- ChapterTracks.displayName = 'SliderChapterTracks';
173
-
174
- /* -------------------------------------------------------------------------------------------------
175
- * SliderChapterTitle
176
- * -----------------------------------------------------------------------------------------------*/
177
-
178
- export interface ChapterTitleProps extends PrimitivePropsWithRef<'div'> {}
179
-
180
- /**
181
- * Used to display the active cue text based on the slider value and preview value.
182
- *
183
- * @example
184
- * ```tsx
185
- * <TimeSlider.Root>
186
- * <TimeSlider.Preview>
187
- * <TimeSlider.Chapter />
188
- * </TimeSlider.Preview>
189
- * </TimeSlider.Root>
190
- * ```
191
- */
192
- const ChapterTitle = React.forwardRef<HTMLElement, ChapterTitleProps>(
193
- ({ children, ...props }, forwardRef) => {
194
- const { $chapters } = React.useContext(TimeSliderContext)!,
195
- [title, setTitle] = React.useState<string>();
196
-
197
- React.useEffect(() => {
198
- return effect(() => {
199
- const chapters = $chapters(),
200
- cue = chapters?.activePointerCue || chapters?.activeCue;
201
- setTitle(cue?.text || '');
202
- });
203
- }, []);
204
-
205
- return (
206
- <Primitive.div {...props} ref={forwardRef as React.Ref<any>}>
207
- {title}
208
- {children}
209
- </Primitive.div>
210
- );
211
- },
212
- );
213
-
214
- ChapterTitle.displayName = 'SliderChapterTitle';
215
-
216
- /* -------------------------------------------------------------------------------------------------
217
- * SliderProgress
218
- * -----------------------------------------------------------------------------------------------*/
219
-
220
- export interface ProgressProps extends PrimitivePropsWithRef<'div'> {}
221
-
222
- /**
223
- * Visual element inside the slider that serves as a horizontal or vertical bar, providing a
224
- * visual reference for the range of playback that has buffered/loaded.
225
- *
226
- * @example
227
- * ```tsx
228
- * <TimeSlider.Root>
229
- * <TimeSlider.Track>
230
- * <TimeSlider.Progress />
231
- * </TimeSlider.Track>
232
- * </TimeSlider.Root>
233
- * ```
234
- */
235
- const Progress = React.forwardRef<HTMLElement, ProgressProps>((props, forwardRef) => (
236
- <Primitive.div {...props} ref={forwardRef as React.Ref<any>} />
237
- ));
238
-
239
- Progress.displayName = 'SliderProgress';
240
-
241
- /* -------------------------------------------------------------------------------------------------
242
- * SliderThumbnail
243
- * -----------------------------------------------------------------------------------------------*/
244
-
245
- const SliderThumbnailBridge = createReactComponent(SliderThumbnailInstance);
246
-
247
- export interface ThumbnailProps extends ReactElementProps<SliderThumbnailInstance, HTMLElement> {
248
- asChild?: boolean;
249
- children?: React.ReactNode;
250
- ref?: React.Ref<HTMLElement>;
251
- }
252
-
253
- export type ThumbnailImgProps = ThumbnailBase.ImgProps;
254
-
255
- /**
256
- * Used to display preview thumbnails when the user is hovering or dragging the time slider.
257
- * The time ranges in the WebVTT file will automatically be matched based on the current slider
258
- * pointer position.
259
- *
260
- * @docs {@link https://www.vidstack.io/docs/player/components/sliders/slider-thumbnail}
261
- *
262
- * @example
263
- * ```tsx
264
- * <TimeSlider.Root>
265
- * <TimeSlider.Preview>
266
- * <TimeSlider.Thumbnail.Root src="thumbnails.vtt">
267
- * <TimeSlider.Thumbnail.Img />
268
- * </TimeSlider.Thumbnail.Root>
269
- * </TimeSlider.Preview>
270
- * </TimeSlider.Root>
271
- * ```
272
- */
273
- const ThumbnailRoot = React.forwardRef<HTMLElement, ThumbnailProps>(
274
- ({ children, ...props }, forwardRef) => {
275
- return (
276
- <SliderThumbnailBridge {...(props as Omit<ThumbnailProps, 'ref'>)}>
277
- {(props) => (
278
- <Primitive.div {...props} ref={composeRefs(props.ref as React.Ref<any>, forwardRef)}>
279
- {children}
280
- </Primitive.div>
281
- )}
282
- </SliderThumbnailBridge>
283
- );
284
- },
285
- );
286
-
287
- ThumbnailRoot.displayName = 'SliderThumbnail';
288
-
289
- const Thumbnail = {
290
- Root: ThumbnailRoot,
291
- Img: ThumbnailBase.Img,
292
- } as const;
293
-
294
- /* -------------------------------------------------------------------------------------------------
295
- * SliderVideo
296
- * -----------------------------------------------------------------------------------------------*/
297
-
298
- const VideoBridge = createReactComponent(SliderVideoInstance, {
299
- events: ['onCanPlay', 'onError'],
300
- });
301
-
302
- export interface VideoProps extends ReactElementProps<SliderVideoInstance, HTMLVideoElement> {
303
- asChild?: boolean;
304
- children?: React.ReactNode;
305
- ref?: React.Ref<HTMLVideoElement>;
306
- }
307
-
308
- /**
309
- * Used to load a low-resolution video to be displayed when the user is hovering over or dragging
310
- * the time slider. The preview video will automatically be updated to be in-sync with the current
311
- * preview position, so ensure it has the same length as the original media (i.e., same duration).
312
- *
313
- * @docs {@link https://www.vidstack.io/docs/player/components/sliders/slider-video}
314
- * @example
315
- * ```tsx
316
- * <TimeSlider.Root>
317
- * <TimeSlider.Preview>
318
- * <TimeSlider.Video src="preview.mp4" />
319
- * </TimeSlider.Preview>
320
- * </TimeSlider.Root>
321
- * ```
322
- */
323
- const Video = React.forwardRef<HTMLVideoElement, VideoProps>(
324
- ({ children, ...props }, forwardRef) => {
325
- return (
326
- <VideoBridge {...(props as Omit<VideoProps, 'ref'>)}>
327
- {(props, instance) => (
328
- <VideoProvider
329
- {...props}
330
- instance={instance}
331
- ref={composeRefs(props.ref as React.Ref<any>, forwardRef)}
332
- >
333
- {children}
334
- </VideoProvider>
335
- )}
336
- </VideoBridge>
337
- );
338
- },
339
- );
340
-
341
- Video.displayName = 'SliderVideo';
342
-
343
- /* -------------------------------------------------------------------------------------------------
344
- * SliderVideoProvider
345
- * -----------------------------------------------------------------------------------------------*/
346
-
347
- export interface VideoProviderProps {
348
- instance: SliderVideoInstance;
349
- children?: React.ReactNode;
350
- }
351
-
352
- const VideoProvider = React.forwardRef<HTMLVideoElement, VideoProviderProps>(
353
- ({ instance, children, ...props }, forwardRef) => {
354
- const { canLoad } = useStateContext(mediaState),
355
- { src, video, crossOrigin } = instance.$state,
356
- $src = useSignal(src),
357
- $canLoad = useSignal(canLoad),
358
- $crossOrigin = useSignal(crossOrigin);
359
- return (
360
- <Primitive.video
361
- style={{ maxWidth: 'unset' }}
362
- {...props}
363
- src={$src || undefined}
364
- muted
365
- playsInline
366
- preload={$canLoad ? 'auto' : 'none'}
367
- crossOrigin={$crossOrigin || undefined}
368
- ref={composeRefs(video.set as any, forwardRef)}
369
- >
370
- {children}
371
- </Primitive.video>
372
- );
373
- },
374
- );
375
-
376
- VideoProvider.displayName = 'SliderVideoProvider';
377
-
378
- export * from './slider';
379
- export { Root, Progress, Thumbnail, Video, Chapters, ChapterTitle };
@@ -1,55 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { createReactComponent, type ReactElementProps } from 'maverick.js/react';
4
-
5
- import { VolumeSliderInstance } from '../../primitives/instances';
6
- import { Primitive } from '../../primitives/nodes';
7
- import { Value } from './slider';
8
- import { sliderCallbacks } from './slider-callbacks';
9
-
10
- /* -------------------------------------------------------------------------------------------------
11
- * VolumeSlider
12
- * -----------------------------------------------------------------------------------------------*/
13
-
14
- const VolumeSliderBridge = createReactComponent(VolumeSliderInstance, {
15
- events: sliderCallbacks,
16
- domEventsRegex: /^onMedia/,
17
- });
18
-
19
- export interface RootProps extends ReactElementProps<VolumeSliderInstance> {
20
- asChild?: boolean;
21
- children?: React.ReactNode;
22
- ref?: React.Ref<VolumeSliderInstance>;
23
- }
24
-
25
- /**
26
- * Versatile and user-friendly input volume control designed for seamless cross-browser and provider
27
- * compatibility and accessibility with ARIA support. It offers a smooth user experience for both
28
- * mouse and touch interactions and is highly customizable in terms of styling. Users can
29
- * effortlessly change the volume level within the range 0 (muted) to 100.
30
- *
31
- * @docs {@link https://www.vidstack.io/docs/player/components/sliders/volume-slider}
32
- * @example
33
- * ```tsx
34
- * <VolumeSlider.Root>
35
- * <VolumeSlider.Track>
36
- * <VolumeSlider.TrackFill />
37
- * </VolumeSlider.Track>
38
- * <VolumeSlider.Thumb />
39
- * </VolumeSlider.Root>
40
- * ```
41
- */
42
- const Root = React.forwardRef<VolumeSliderInstance, RootProps>(
43
- ({ children, ...props }, forwardRef) => {
44
- return (
45
- <VolumeSliderBridge {...props} ref={forwardRef}>
46
- {(props) => <Primitive.div {...props}>{children}</Primitive.div>}
47
- </VolumeSliderBridge>
48
- );
49
- },
50
- );
51
-
52
- Root.displayName = 'VolumeSlider';
53
-
54
- export * from './slider';
55
- export { Root, Value };
@@ -1,105 +0,0 @@
1
- import * as React from 'react';
2
-
3
- /* -------------------------------------------------------------------------------------------------
4
- * Spinner
5
- * -----------------------------------------------------------------------------------------------*/
6
-
7
- export interface RootProps
8
- extends React.PropsWithoutRef<React.SVGProps<SVGSVGElement>>,
9
- React.RefAttributes<SVGElement | SVGSVGElement> {
10
- /**
11
- * The horizontal (width) and vertical (height) length of the spinner.
12
- *
13
- * @defaultValue 96
14
- */
15
- size?: number;
16
- }
17
-
18
- /**
19
- * @docs {@link https://www.vidstack.io/docs/player/components/display/buffering-indicator}
20
- * @example
21
- * ```html
22
- * <Spinner.Root>
23
- * <Spinner.Track />
24
- * <Spinner.TrackFill />
25
- * </Spinner>
26
- * ```
27
- */
28
- const Root = React.forwardRef<SVGElement | SVGSVGElement, RootProps>(
29
- ({ size = 96, children, ...props }: RootProps, forwardRef) => {
30
- return (
31
- <svg
32
- width={size}
33
- height={size}
34
- fill="none"
35
- viewBox="0 0 120 120"
36
- aria-hidden="true"
37
- data-part="root"
38
- {...props}
39
- ref={forwardRef as React.Ref<any>}
40
- >
41
- {children}
42
- </svg>
43
- );
44
- },
45
- );
46
-
47
- /* -------------------------------------------------------------------------------------------------
48
- * Track
49
- * -----------------------------------------------------------------------------------------------*/
50
-
51
- export interface TrackProps
52
- extends React.PropsWithoutRef<React.SVGProps<SVGCircleElement>>,
53
- React.RefAttributes<SVGCircleElement> {}
54
-
55
- const Track = React.forwardRef<SVGCircleElement, TrackProps>(
56
- ({ width = 8, children, ...props }, ref) => (
57
- <circle
58
- cx="60"
59
- cy="60"
60
- r="54"
61
- stroke="currentColor"
62
- strokeWidth={width}
63
- data-part="track"
64
- {...props}
65
- ref={ref}
66
- >
67
- {children}
68
- </circle>
69
- ),
70
- );
71
-
72
- /* -------------------------------------------------------------------------------------------------
73
- * TrackFill
74
- * -----------------------------------------------------------------------------------------------*/
75
-
76
- export interface TrackFillProps
77
- extends React.PropsWithoutRef<React.SVGProps<SVGCircleElement>>,
78
- React.RefAttributes<SVGCircleElement> {
79
- /**
80
- * The percentage of the track that should be filled.
81
- */
82
- fillPercent?: number;
83
- }
84
-
85
- const TrackFill = React.forwardRef<SVGCircleElement, TrackFillProps>(
86
- ({ width = 8, fillPercent = 50, children, ...props }, ref) => (
87
- <circle
88
- cx="60"
89
- cy="60"
90
- r="54"
91
- stroke="currentColor"
92
- pathLength="100"
93
- strokeWidth={width}
94
- strokeDasharray={100}
95
- strokeDashoffset={100 - fillPercent}
96
- data-part="track-fill"
97
- {...props}
98
- ref={ref}
99
- >
100
- {children}
101
- </circle>
102
- ),
103
- );
104
-
105
- export { Root, Track, TrackFill };
@@ -1,82 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import type { WriteSignal } from 'maverick.js';
4
- import {
5
- composeRefs,
6
- createReactComponent,
7
- useSignal,
8
- useStateContext,
9
- type ReactElementProps,
10
- } from 'maverick.js/react';
11
- import { mediaState } from 'vidstack';
12
-
13
- import { ThumbnailInstance } from '../primitives/instances';
14
- import { Primitive, type PrimitivePropsWithRef } from '../primitives/nodes';
15
-
16
- /* -------------------------------------------------------------------------------------------------
17
- * Thumbnail
18
- * -----------------------------------------------------------------------------------------------*/
19
-
20
- const ThumbnailBridge = createReactComponent(ThumbnailInstance);
21
-
22
- export interface RootProps extends ReactElementProps<ThumbnailInstance, HTMLElement> {
23
- asChild?: boolean;
24
- children?: React.ReactNode;
25
- ref?: React.Ref<HTMLElement>;
26
- }
27
-
28
- /**
29
- * Used to load and display a preview thumbnail at the given `time`.
30
- *
31
- * @docs {@link https://www.vidstack.io/docs/player/components/display/thumbnail}
32
- * @example
33
- * ```tsx
34
- * <Thumbnail.Root src="thumbnails.vtt" time={10} >
35
- * <Thumbnail.Img />
36
- * </Thumbnail.Root>
37
- * ```
38
- */
39
- const Root = React.forwardRef<HTMLElement, RootProps>(({ children, ...props }, forwardRef) => {
40
- return (
41
- <ThumbnailBridge {...(props as Omit<RootProps, 'ref'>)}>
42
- {(props) => (
43
- <Primitive.div
44
- {...props}
45
- ref={composeRefs(props.ref as React.Ref<any>, forwardRef as React.Ref<any>)}
46
- >
47
- {children}
48
- </Primitive.div>
49
- )}
50
- </ThumbnailBridge>
51
- );
52
- });
53
-
54
- Root.displayName = 'Thumbnail';
55
-
56
- /* -------------------------------------------------------------------------------------------------
57
- * ThumbnailImg
58
- * -----------------------------------------------------------------------------------------------*/
59
-
60
- export interface ImgProps extends PrimitivePropsWithRef<'img'> {
61
- children?: React.ReactNode;
62
- }
63
-
64
- const Img = React.forwardRef<HTMLImageElement, ImgProps>(({ children, ...props }, forwardRef) => {
65
- const { src, img, crossOrigin } = useStateContext(ThumbnailInstance.state),
66
- $src = useSignal(src),
67
- $crossOrigin = useSignal(crossOrigin);
68
- return (
69
- <Primitive.img
70
- crossOrigin={$crossOrigin as '' | undefined}
71
- {...props}
72
- src={$src || undefined}
73
- ref={composeRefs((img as any).set, forwardRef)}
74
- >
75
- {children}
76
- </Primitive.img>
77
- );
78
- });
79
-
80
- Img.displayName = 'ThumbnailImg';
81
-
82
- export { Root, Img };
@@ -1,77 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import {
4
- composeRefs,
5
- createReactComponent,
6
- useSignal,
7
- type ReactElementProps,
8
- } from 'maverick.js/react';
9
-
10
- import { TimeInstance } from '../primitives/instances';
11
- import { Primitive } from '../primitives/nodes';
12
-
13
- /* -------------------------------------------------------------------------------------------------
14
- * Time
15
- * -----------------------------------------------------------------------------------------------*/
16
-
17
- const TimeBridge = createReactComponent(TimeInstance);
18
-
19
- export interface TimeProps extends ReactElementProps<TimeInstance> {
20
- asChild?: boolean;
21
- children?: React.ReactNode;
22
- ref?: React.Ref<HTMLElement>;
23
- }
24
-
25
- /**
26
- * Outputs a media duration (eg: `currentTime`, `duration`, `bufferedAmount`, etc.) value as time
27
- * formatted text.
28
- *
29
- * @docs {@link https://www.vidstack.io/docs/player/components/display/time}
30
- * @example
31
- * ```tsx
32
- * <Time type="current" />
33
- * ```
34
- */
35
- const Time = React.forwardRef<HTMLElement, TimeProps>(({ children, ...props }, forwardRef) => {
36
- return (
37
- <TimeBridge {...(props as Omit<TimeProps, 'ref'>)}>
38
- {(props, instance) => (
39
- <TimeText
40
- {...props}
41
- instance={instance}
42
- ref={composeRefs(props.ref as React.Ref<any>, forwardRef as React.Ref<any>)}
43
- >
44
- {children}
45
- </TimeText>
46
- )}
47
- </TimeBridge>
48
- );
49
- });
50
-
51
- Time.displayName = 'Time';
52
- export { Time };
53
-
54
- /* -------------------------------------------------------------------------------------------------
55
- * TimeText
56
- * -----------------------------------------------------------------------------------------------*/
57
-
58
- interface TimeTextProps extends Record<string, any> {
59
- instance: TimeInstance;
60
- children?: React.ReactNode;
61
- ref?: React.Ref<HTMLElement>;
62
- }
63
-
64
- const TimeText = React.forwardRef<HTMLElement, TimeTextProps>(
65
- ({ instance, children, ...props }, forwardRef) => {
66
- const { timeText } = instance.$state,
67
- $timeText = useSignal(timeText);
68
- return (
69
- <Primitive.div {...props} ref={forwardRef as React.Ref<any>}>
70
- {$timeText}
71
- {children}
72
- </Primitive.div>
73
- );
74
- },
75
- );
76
-
77
- TimeText.displayName = 'TimeText';