@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,514 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { createScope, effect, peek, signal, tick } from 'maverick.js';
4
- import { useSignal } from 'maverick.js/react';
5
- import { deferredPromise, isFunction, listenEvent, type DeferredPromise } from 'maverick.js/std';
6
- import {
7
- Internals,
8
- type MediaVolumeContextValue,
9
- type PlayableMediaTag,
10
- type SetMediaVolumeContextValue,
11
- type SetTimelineContextValue,
12
- type TimelineContextValue,
13
- } from 'remotion';
14
- import { TimeRange, type MediaContext, type MediaProviderAdapter, type Src } from 'vidstack';
15
-
16
- import { RemotionLayoutEngine } from './layout-engine';
17
- import { RemotionPlaybackEngine } from './playback-engine';
18
- import { isRemotionSrc } from './type-check';
19
- import type { RemotionSrc } from './types';
20
- import { REMOTION_PROVIDER_ID, RemotionContextProvider } from './ui/context';
21
- import { ErrorBoundary } from './ui/error-boundary';
22
- import { validatePlaybackRate, validateRemotionResource } from './validate';
23
-
24
- export class RemotionProvider implements MediaProviderAdapter {
25
- protected readonly $$PROVIDER_TYPE = 'REMOTION';
26
-
27
- readonly scope = createScope();
28
-
29
- #src = signal<RemotionSrc | null>(null);
30
- #setup = false;
31
- #loadStart = false;
32
- #audio: any = null;
33
- #waiting = signal(false);
34
- #waitingPromise: DeferredPromise<void, string> | null = null;
35
- #mediaTags = signal<PlayableMediaTag[]>([]);
36
- #mediaElements = signal<HTMLMediaElement[]>([]);
37
- #bufferingElements = new Set<HTMLMediaElement>();
38
- #timeline: TimelineContextValue | null = null;
39
- #frame = signal<Record<string, number>>({ [REMOTION_PROVIDER_ID]: 0 });
40
-
41
- #layoutEngine = new RemotionLayoutEngine();
42
- #playbackEngine: RemotionPlaybackEngine | null = null;
43
-
44
- readonly #container: HTMLElement;
45
- readonly #ctx: MediaContext;
46
-
47
- #setTimeline: SetTimelineContextValue;
48
-
49
- #setMediaVolume: SetMediaVolumeContextValue = {
50
- setMediaMuted: this.setMuted.bind(this),
51
- setMediaVolume: this.setVolume.bind(this),
52
- };
53
-
54
- get type() {
55
- return 'remotion';
56
- }
57
-
58
- get currentSrc() {
59
- return peek(this.#src);
60
- }
61
-
62
- get frame() {
63
- return this.#frame();
64
- }
65
-
66
- constructor(container: HTMLElement, ctx: MediaContext) {
67
- this.#container = container;
68
- this.#ctx = ctx;
69
- this.#setTimeline = {
70
- setFrame: this.#setFrame.bind(this),
71
- setPlaying: this.#setPlaying.bind(this),
72
- };
73
- this.#layoutEngine.setContainer(container);
74
- }
75
-
76
- setup() {
77
- effect(this.#watchWaiting.bind(this));
78
- effect(this.#watchMediaTags.bind(this));
79
- effect(this.#watchMediaElements.bind(this));
80
- }
81
-
82
- #watchMediaTags() {
83
- this.#mediaTags();
84
- this.#discoverMediaElements();
85
- }
86
-
87
- #discoverMediaElements() {
88
- const elements = [...this.#container.querySelectorAll<HTMLMediaElement>('audio,video')];
89
- this.#mediaElements.set(elements);
90
- }
91
-
92
- #watchMediaElements() {
93
- const elements = this.#mediaElements();
94
-
95
- for (const tag of elements) {
96
- const onWait = this.#onWaitFor.bind(this, tag),
97
- onStopWaiting = this.#onStopWaitingFor.bind(this, tag);
98
-
99
- if (tag.currentSrc && tag.readyState < 4) {
100
- this.#onWaitFor(tag);
101
- listenEvent(tag, 'canplay', onStopWaiting);
102
- }
103
-
104
- listenEvent(tag, 'waiting', onWait);
105
- listenEvent(tag, 'playing', onStopWaiting);
106
- }
107
-
108
- // User might have seeked to a new position, old media elements are removed.
109
- for (const el of this.#bufferingElements) {
110
- if (!elements.includes(el)) this.#onStopWaitingFor(el);
111
- }
112
- }
113
-
114
- #onFrameChange(frame: number) {
115
- const { inFrame, fps } = this.#src()!,
116
- { seeking } = this.#ctx.$state,
117
- time = Math.max(0, frame - inFrame!) / fps!;
118
-
119
- this.#frame.set((record) => ({
120
- ...record,
121
- [REMOTION_PROVIDER_ID]: frame,
122
- }));
123
-
124
- this.#ctx.notify('time-change', time);
125
-
126
- if (seeking()) {
127
- tick();
128
- this.#ctx.notify('seeked', time);
129
- }
130
- }
131
-
132
- #onFrameEnd() {
133
- this.pause();
134
- this.#ctx.notify('end');
135
- }
136
-
137
- async play() {
138
- const { ended } = this.#ctx.$state;
139
-
140
- if (peek(ended)) {
141
- this.#setFrame({ [REMOTION_PROVIDER_ID]: 0 });
142
- }
143
-
144
- try {
145
- const mediaElements = peek(this.#mediaElements);
146
- if (mediaElements.length) {
147
- await Promise.all(mediaElements.map((media) => media.play()));
148
- }
149
-
150
- this.#ctx.notify('play');
151
- tick();
152
-
153
- if (this.#waitingPromise) {
154
- this.#ctx.notify('waiting');
155
- return this.#waitingPromise.promise;
156
- } else {
157
- this.#playbackEngine?.play();
158
- this.#ctx.notify('playing');
159
- }
160
- } catch (error) {
161
- throw error;
162
- }
163
- }
164
-
165
- async pause() {
166
- const { paused } = this.#ctx.$state;
167
- this.#playbackEngine?.stop();
168
- this.#ctx.notify('pause');
169
- }
170
-
171
- setMuted(value: React.SetStateAction<boolean>) {
172
- if (!this.#ctx) return;
173
-
174
- const { muted, volume } = this.#ctx.$state;
175
-
176
- if (isFunction(value)) {
177
- this.setMuted(value(muted()));
178
- return;
179
- }
180
-
181
- this.#ctx.notify('volume-change', {
182
- volume: peek(volume),
183
- muted: value,
184
- });
185
- }
186
-
187
- setCurrentTime(time: number) {
188
- const { fps } = this.#src()!,
189
- frame = time * fps!;
190
-
191
- this.#ctx.notify('seeking', time);
192
- this.#setFrame({ [REMOTION_PROVIDER_ID]: frame });
193
- }
194
-
195
- setVolume(value: React.SetStateAction<number>) {
196
- if (!this.#ctx) return;
197
-
198
- const { volume, muted } = this.#ctx.$state;
199
-
200
- if (isFunction(value)) {
201
- this.setVolume(value(volume()));
202
- return;
203
- }
204
-
205
- this.#ctx.notify('volume-change', {
206
- volume: value,
207
- muted: peek(muted),
208
- });
209
- }
210
-
211
- setPlaybackRate(rate: React.SetStateAction<number>) {
212
- if (isFunction(rate)) {
213
- const { playbackRate } = this.#ctx.$state;
214
- this.setPlaybackRate(rate(peek(playbackRate)));
215
- return;
216
- }
217
-
218
- if (__DEV__) validatePlaybackRate(rate);
219
- this.#playbackEngine?.setPlaybackRate(rate);
220
- this.#ctx.notify('rate-change', rate);
221
- }
222
-
223
- async loadSource(src: Src) {
224
- if (!isRemotionSrc(src)) return;
225
-
226
- const onUserError = src.onError,
227
- resolvedSrc: RemotionSrc = {
228
- compositionWidth: 1920,
229
- compositionHeight: 1080,
230
- fps: 30,
231
- initialFrame: 0,
232
- inFrame: 0,
233
- outFrame: src.durationInFrames,
234
- numberOfSharedAudioTags: 5,
235
- inputProps: {},
236
- ...src,
237
- onError: (error) => {
238
- if (__DEV__) {
239
- this.#ctx.logger
240
- ?.errorGroup(`[vidstack] ${error.message}`)
241
- .labelledLog('Source', peek(this.#src))
242
- .labelledLog('Error', error)
243
- .dispatch();
244
- }
245
-
246
- this.pause();
247
- this.#ctx.notify('error', {
248
- message: error.message,
249
- code: 1,
250
- });
251
-
252
- onUserError?.(error);
253
- },
254
- };
255
-
256
- this.#src.set(resolvedSrc);
257
-
258
- // Copy initialized props over to main src object.
259
- for (const prop of Object.keys(resolvedSrc)) {
260
- src[prop] = resolvedSrc[prop];
261
- }
262
-
263
- this.changeSrc(resolvedSrc);
264
- }
265
-
266
- destroy() {
267
- this.changeSrc(null);
268
- }
269
-
270
- changeSrc(src: RemotionSrc | null) {
271
- this.#playbackEngine?.destroy();
272
-
273
- this.#waiting.set(false);
274
- this.#waitingPromise?.reject('src changed');
275
- this.#waitingPromise = null;
276
- this.#audio = null;
277
- this.#timeline = null;
278
- this.#playbackEngine = null;
279
- this.#mediaTags.set([]);
280
- this.#bufferingElements.clear();
281
- this.#frame.set({ [REMOTION_PROVIDER_ID]: 0 });
282
-
283
- this.#layoutEngine.setSrc(src);
284
-
285
- if (src) {
286
- this.#timeline = this.#createTimelineContextValue();
287
- this.#playbackEngine = new RemotionPlaybackEngine(
288
- src,
289
- this.#onFrameChange.bind(this),
290
- this.#onFrameEnd.bind(this),
291
- );
292
- }
293
- }
294
-
295
- render = (): React.ReactNode => {
296
- const $src = useSignal(this.#src);
297
-
298
- if (!$src) {
299
- throw Error(
300
- __DEV__
301
- ? '[vidstack] attempting to render remotion provider without src'
302
- : '[vidstack] no src',
303
- );
304
- }
305
-
306
- React.useEffect(() => {
307
- if (!isRemotionSrc($src)) return;
308
- validateRemotionResource($src);
309
-
310
- const rafId = requestAnimationFrame(() => {
311
- if (!this.#setup) {
312
- this.#ctx.notify('provider-setup', this);
313
- this.#setup = true;
314
- }
315
-
316
- if (!this.#loadStart) {
317
- this.#ctx.notify('load-start');
318
- this.#loadStart = true;
319
- }
320
-
321
- this.#discoverMediaElements();
322
- tick();
323
- if (!this.#waiting()) this.#ready($src);
324
- });
325
-
326
- return () => {
327
- cancelAnimationFrame(rafId);
328
- this.#loadStart = false;
329
- };
330
- }, [$src]);
331
-
332
- const Component = Internals.useLazyComponent({
333
- component: $src.src,
334
- }) as React.LazyExoticComponent<React.ComponentType<unknown>>;
335
-
336
- const { $state } = this.#ctx,
337
- $volume = useSignal($state.volume),
338
- $isMuted = useSignal($state.muted);
339
-
340
- const mediaVolume = React.useMemo((): MediaVolumeContextValue => {
341
- const { muted, volume } = this.#ctx.$state;
342
- return { mediaMuted: muted(), mediaVolume: volume() };
343
- }, [$isMuted, $volume]);
344
-
345
- return (
346
- <RemotionContextProvider
347
- src={$src}
348
- component={Component}
349
- timeline={this.#timeline!}
350
- mediaVolume={mediaVolume}
351
- setMediaVolume={this.#setMediaVolume}
352
- >
353
- <Internals.Timeline.SetTimelineContext.Provider value={this.#setTimeline}>
354
- {React.createElement(this.renderVideo, { src: $src })}
355
- </Internals.Timeline.SetTimelineContext.Provider>
356
- </RemotionContextProvider>
357
- );
358
- };
359
-
360
- renderVideo = ({ src }: { src: RemotionSrc }): React.ReactNode => {
361
- const video = Internals.useVideo(),
362
- Video = video ? video.component : null,
363
- audioContext = React.useContext(Internals.SharedAudioContext);
364
-
365
- const { $state } = this.#ctx;
366
-
367
- useSignal(this.#frame);
368
- useSignal($state.playing);
369
- useSignal($state.playbackRate);
370
-
371
- React.useEffect(() => {
372
- this.#audio = audioContext;
373
- return () => {
374
- this.#audio = null;
375
- };
376
- }, [audioContext]);
377
-
378
- const LoadingContent = React.useMemo(() => src.renderLoading?.(), [src]);
379
-
380
- const Content = Video ? (
381
- <ErrorBoundary fallback={src.errorFallback} onError={src.onError!}>
382
- <Internals.ClipComposition>
383
- <Video {...video?.props} {...src.inputProps} />
384
- </Internals.ClipComposition>
385
- </ErrorBoundary>
386
- ) : null;
387
-
388
- return <React.Suspense fallback={LoadingContent}>{Content}</React.Suspense>;
389
- };
390
-
391
- #ready(src: RemotionSrc | null) {
392
- if (!src) return;
393
-
394
- const { outFrame, inFrame, fps } = src,
395
- duration = (outFrame! - inFrame!) / fps!;
396
-
397
- this.#ctx.notify('loaded-metadata');
398
- this.#ctx.notify('loaded-data');
399
-
400
- this.#ctx.delegate.ready({
401
- duration,
402
- seekable: new TimeRange(0, duration),
403
- buffered: new TimeRange(0, duration),
404
- });
405
-
406
- if (src.initialFrame) {
407
- this.#setFrame({
408
- [REMOTION_PROVIDER_ID]: src.initialFrame,
409
- });
410
- }
411
- }
412
-
413
- #onWaitFor(el: HTMLMediaElement) {
414
- this.#bufferingElements.add(el);
415
- this.#waiting.set(true);
416
- if (!this.#waitingPromise) {
417
- this.#waitingPromise = deferredPromise();
418
- }
419
- }
420
-
421
- #onStopWaitingFor(el: HTMLMediaElement) {
422
- this.#bufferingElements.delete(el);
423
-
424
- // There's still elements we're waiting on.
425
- if (this.#bufferingElements.size) return;
426
-
427
- this.#waiting.set(false);
428
- this.#waitingPromise?.resolve();
429
- this.#waitingPromise = null;
430
-
431
- const { canPlay } = this.#ctx.$state;
432
- if (!peek(canPlay)) {
433
- this.#ready(peek(this.#src));
434
- }
435
- }
436
-
437
- #watchWaiting() {
438
- this.#waiting(); // subscribe
439
-
440
- const { paused } = this.#ctx.$state;
441
- if (peek(paused)) return;
442
-
443
- if (this.#waiting()) {
444
- this.#playbackEngine?.stop();
445
- this.#ctx.notify('waiting');
446
- } else {
447
- this.#playbackEngine?.play();
448
- this.#ctx.notify('playing');
449
- }
450
- }
451
-
452
- #setFrame(value: React.SetStateAction<Record<string, number>>) {
453
- if (isFunction(value)) {
454
- this.#setFrame(value(this.#frame()));
455
- return;
456
- }
457
-
458
- this.#frame.set((record) => ({ ...record, ...value }));
459
-
460
- const nextFrame = value[REMOTION_PROVIDER_ID];
461
- if (this.#playbackEngine && this.#playbackEngine.frame !== nextFrame) {
462
- this.#playbackEngine.frame = nextFrame;
463
- }
464
- }
465
-
466
- #setPlaying(value: React.SetStateAction<boolean>) {
467
- const { playing } = this.#ctx.$state;
468
-
469
- if (isFunction(value)) {
470
- this.#setPlaying(value(playing()));
471
- return;
472
- }
473
-
474
- if (value) {
475
- this.play();
476
- } else if (!value) {
477
- this.pause();
478
- }
479
- }
480
-
481
- #createTimelineContextValue(): TimelineContextValue {
482
- const { playing, playbackRate } = this.#ctx.$state,
483
- frame = this.#frame,
484
- mediaTags = this.#mediaTags,
485
- setPlaybackRate = this.setPlaybackRate.bind(this);
486
-
487
- return {
488
- rootId: REMOTION_PROVIDER_ID,
489
- get frame() {
490
- return frame();
491
- },
492
- get playing() {
493
- return playing();
494
- },
495
- get playbackRate() {
496
- return playbackRate();
497
- },
498
- imperativePlaying: {
499
- get current() {
500
- return playing();
501
- },
502
- },
503
- setPlaybackRate,
504
- audioAndVideoTags: {
505
- get current() {
506
- return mediaTags();
507
- },
508
- set current(tags) {
509
- mediaTags.set(tags);
510
- },
511
- },
512
- };
513
- }
514
- }
@@ -1,13 +0,0 @@
1
- import type { Src } from 'vidstack';
2
-
3
- import type { RemotionProvider } from './provider';
4
- import type { RemotionSrc } from './types';
5
-
6
- /** @see {@link https://www.vidstack.io/docs/player/providers/remotion} */
7
- export function isRemotionProvider(provider: any): provider is RemotionProvider {
8
- return provider?.$$PROVIDER_TYPE === 'REMOTION';
9
- }
10
-
11
- export function isRemotionSrc(src?: Src | null): src is RemotionSrc {
12
- return src?.type === 'video/remotion';
13
- }
@@ -1,94 +0,0 @@
1
- import type * as React from 'react';
2
-
3
- export interface RemotionSrc<InputProps extends RemotionInputProps = RemotionInputProps> {
4
- /** React component which is generally a Remotion video. */
5
- src: React.ComponentType<unknown>;
6
- /** Remotion source type. */
7
- type: 'video/remotion';
8
- /**
9
- * Pass props to the component that you have specified using the component prop.
10
- */
11
- inputProps?: InputProps;
12
- /**
13
- * The width of the composition.
14
- *
15
- * @defaultValue 1920
16
- */
17
- compositionWidth?: number;
18
- /**
19
- * The height of the composition.
20
- *
21
- * @defaultValue 1080
22
- */
23
- compositionHeight?: number;
24
- /**
25
- * The frame rate of the video per second.
26
- *
27
- * @defaultValue 30
28
- */
29
- fps?: number;
30
- /**
31
- * The duration of the video in frames. Must be an integer and greater than 0.
32
- */
33
- durationInFrames: number;
34
- /**
35
- * Start the playback from a specific frame.
36
- *
37
- * @defaultValue 0
38
- */
39
- initialFrame?: number;
40
- /**
41
- * Limit playback to only play after a certain frame. The video will start from this frame and
42
- * move to this position once it has ended. Must be an integer, not smaller than 0, not bigger
43
- * than `outFrame` and not bigger than `durationInFrames - 1`.
44
- *
45
- * @defaultValue 0
46
- */
47
- inFrame?: number | null;
48
- /**
49
- * Limit playback to only play before a certain frame. The video will end at this frame
50
- * and move to the beginning once it has ended. Must be an integer, not smaller than 1, not
51
- * smaller than `inFrame` and not bigger than `durationInFrames`.
52
- *
53
- * @defaultValue `durationInFrames`
54
- */
55
- outFrame?: number;
56
- /**
57
- * If you use an `<Audio />` tag, it might not play in some browsers (specifically iOS Safari)
58
- * due to browser autoplay policies. This is why the player pre-mounts a set of audio tags with
59
- * silent audio that get played upon user interaction. These audio tags can then be used to play
60
- * real audio later and will not be subject to the autoplay policy of the browser.
61
- *
62
- * This option controls how many audio tags are being rendered, the default is 5. If you mount
63
- * more audio tags than shared audio tags are available, then an error will be thrown.
64
- *
65
- * If you'd like to opt out of this behavior, you can pass 0 to mount native audio tags
66
- * simultaneously as you mount Remotion's <Audio /> tags.
67
- *
68
- * @defaultValue 5
69
- */
70
- numberOfSharedAudioTags?: number;
71
- /**
72
- * A callback function that allows you to return a custom UI that gets displayed while the
73
- * provider is loading.
74
- */
75
- renderLoading?: RemotionLoadingRenderer;
76
- /**
77
- * A callback for rendering a custom error message.
78
- */
79
- errorFallback?: RemotionErrorRenderer;
80
- /**
81
- * Called when an error or uncaught exception has happened in the video.
82
- */
83
- onError?(error: Error): void;
84
- }
85
-
86
- export interface RemotionInputProps extends Record<string, unknown> {}
87
-
88
- export interface RemotionLoadingRenderer {
89
- (): React.ReactNode;
90
- }
91
-
92
- export interface RemotionErrorRenderer {
93
- (error: Error): React.ReactNode;
94
- }