@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,104 +0,0 @@
1
- import type {
2
- FileDownloadInfo,
3
- PlyrControl,
4
- PlyrLayoutTranslations,
5
- PlyrMarker,
6
- ThumbnailSrc,
7
- } from 'vidstack';
8
-
9
- import type { PlyrLayoutIcons } from './icons';
10
- import type { PlyrLayoutSlots } from './slots';
11
-
12
- export const defaultPlyrLayoutProps: Omit<PlyrLayoutProps, 'icons' | 'slots' | 'posterFrame'> = {
13
- clickToPlay: true,
14
- clickToFullscreen: true,
15
- controls: [
16
- 'play-large',
17
- 'play',
18
- 'progress',
19
- 'current-time',
20
- 'mute+volume',
21
- 'captions',
22
- 'settings',
23
- 'pip',
24
- 'airplay',
25
- 'fullscreen',
26
- ],
27
- displayDuration: false,
28
- download: null,
29
- markers: null,
30
- invertTime: true,
31
- thumbnails: null,
32
- toggleTime: true,
33
- translations: null,
34
- seekTime: 10,
35
- speed: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 4],
36
- };
37
-
38
- export interface PlyrLayoutProps {
39
- /**
40
- * The icons to be rendered and displayed inside the layout.
41
- */
42
- icons: PlyrLayoutIcons;
43
- /**
44
- * The frame of the video to use as the poster. This only works with Remotion sources at the
45
- * moment.
46
- */
47
- posterFrame?: number;
48
- /**
49
- * Press the video container to toggle play/pause.
50
- */
51
- clickToPlay?: boolean;
52
- /**
53
- * Double-press the video container to toggle fullscreen.
54
- */
55
- clickToFullscreen?: boolean;
56
- /**
57
- * The controls to be included in the layout and their order specified by the position in the
58
- * array.
59
- */
60
- controls?: PlyrControl[];
61
- /**
62
- * Whether the duration should be displayed. This is ignored if `toggleTime` is `true`.
63
- */
64
- displayDuration?: boolean;
65
- /**
66
- * Sets the download URL and filename for the download button. The download button must be
67
- * included in the `controls` prop for this to take effect.
68
- */
69
- download?: FileDownloadInfo;
70
- /**
71
- * Points on the time slider which should be visually marked for the user.
72
- */
73
- markers?: PlyrMarker[] | null;
74
- /**
75
- * Display the current time as a countdown rather than an incremental counter.
76
- */
77
- invertTime?: boolean;
78
- /**
79
- * The thumbnails resource.
80
- *
81
- * @see {@link https://www.vidstack.io/docs/wc/player/core-concepts/loading#thumbnails}
82
- */
83
- thumbnails?: ThumbnailSrc;
84
- /**
85
- * Allow users to press to toggle the inverted time.
86
- */
87
- toggleTime?: boolean;
88
- /**
89
- * Translation map from english to your desired language for words used throughout the layout.
90
- */
91
- translations?: Partial<PlyrLayoutTranslations> | null;
92
- /**
93
- * The time, in seconds, to seek when a user hits fast forward or rewind.
94
- */
95
- seekTime?: number;
96
- /**
97
- * The speed options to display in the UI.
98
- */
99
- speed?: (string | number)[];
100
- /**
101
- * Provide additional content to be inserted in specific positions.
102
- */
103
- slots?: PlyrLayoutSlots;
104
- }
@@ -1,52 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { isUndefined, uppercaseFirstChar } from 'maverick.js/std';
4
-
5
- import { usePlyrLayoutContext } from './context';
6
-
7
- export type SlotPositions<Name extends string> =
8
- | `before${Capitalize<Name>}`
9
- | Name
10
- | `after${Capitalize<Name>}`;
11
-
12
- export type Slots<Names extends string> = {
13
- [slotName in SlotPositions<Names>]?: React.ReactNode;
14
- };
15
-
16
- export type PlyrLayoutSlotName =
17
- | 'airPlayButton'
18
- | 'captionsButton'
19
- | 'currentTime'
20
- | 'download'
21
- | 'duration'
22
- | 'fastForwardButton'
23
- | 'fullscreenButton'
24
- | 'liveButton'
25
- | 'muteButton'
26
- | 'pipButton'
27
- | 'playButton'
28
- | 'playLargeButton'
29
- | 'poster'
30
- | 'restartButton'
31
- | 'rewindButton'
32
- | 'rewindButton'
33
- | 'settings'
34
- | 'settingsButton'
35
- | 'timeSlider'
36
- | 'volumeSlider'
37
- | 'settingsMenu';
38
-
39
- export interface PlyrLayoutSlots extends Slots<PlyrLayoutSlotName> {}
40
-
41
- export function slot(name: PlyrLayoutSlotName, defaultValue: React.ReactNode): React.ReactNode {
42
- const { slots } = usePlyrLayoutContext(),
43
- slot = slots?.[name],
44
- capitalizedName = uppercaseFirstChar(name as string);
45
- return (
46
- <>
47
- {slots?.[`before${capitalizedName}`]}
48
- {isUndefined(slot) ? defaultValue : slot}
49
- {slots?.[`after${capitalizedName}`]}
50
- </>
51
- );
52
- }
@@ -1,13 +0,0 @@
1
- import { signal } from 'maverick.js';
2
-
3
- export const RemotionThumbnail = /* @__PURE__ */ signal<React.LazyExoticComponent<
4
- React.ComponentType<any>
5
- > | null>(null);
6
-
7
- export const RemotionSliderThumbnail = /* @__PURE__ */ signal<React.LazyExoticComponent<
8
- React.ComponentType<any>
9
- > | null>(null);
10
-
11
- export const RemotionPoster = /* @__PURE__ */ signal<React.LazyExoticComponent<
12
- React.ComponentType<any>
13
- > | null>(null);
@@ -1,17 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { effect } from 'maverick.js';
4
-
5
- import { useMediaPlayer } from '../../hooks/use-media-player';
6
-
7
- export function useLayoutName(name: string) {
8
- const player = useMediaPlayer();
9
- React.useEffect(() => {
10
- if (!player) return;
11
- return effect(() => {
12
- const el = player.$el;
13
- el?.setAttribute('data-layout', name);
14
- return () => el?.removeAttribute('data-layout');
15
- });
16
- }, [player]);
17
- }
@@ -1,67 +0,0 @@
1
- import type { InferComponentEvents } from 'maverick.js';
2
- import type { ReactEventCallbacks } from 'maverick.js/react';
3
-
4
- import type { MediaPlayerInstance } from './primitives/instances';
5
-
6
- type PlayerCallbacks = keyof ReactEventCallbacks<InferComponentEvents<MediaPlayerInstance>>;
7
-
8
- export const playerCallbacks: PlayerCallbacks[] = [
9
- 'onAbort',
10
- 'onAudioTrackChange',
11
- 'onAudioTracksChange',
12
- 'onAutoPlay',
13
- 'onAutoPlayChange',
14
- 'onAutoPlayFail',
15
- 'onCanLoad',
16
- 'onCanPlay',
17
- 'onCanPlayThrough',
18
- 'onControlsChange',
19
- 'onDestroy',
20
- 'onDurationChange',
21
- 'onEmptied',
22
- 'onEnd',
23
- 'onEnded',
24
- 'onError',
25
- 'onFindMediaPlayer',
26
- 'onFullscreenChange',
27
- 'onFullscreenError',
28
- 'onLiveChange',
29
- 'onLiveEdgeChange',
30
- 'onLoadedData',
31
- 'onLoadedMetadata',
32
- 'onLoadStart',
33
- 'onLoopChange',
34
- 'onOrientationChange',
35
- 'onPause',
36
- 'onPictureInPictureChange',
37
- 'onPictureInPictureError',
38
- 'onPlay',
39
- 'onPlayFail',
40
- 'onPlaying',
41
- 'onPlaysInlineChange',
42
- 'onPosterChange',
43
- 'onProgress',
44
- 'onProviderChange',
45
- 'onProviderLoaderChange',
46
- 'onProviderSetup',
47
- 'onQualitiesChange',
48
- 'onQualityChange',
49
- 'onRateChange',
50
- 'onReplay',
51
- 'onSeeked',
52
- 'onSeeking',
53
- 'onSourceChange',
54
- 'onSourceChange',
55
- 'onStalled',
56
- 'onStarted',
57
- 'onStreamTypeChange',
58
- 'onSuspend',
59
- 'onTextTrackChange',
60
- 'onTextTracksChange',
61
- 'onTimeUpdate',
62
- 'onTitleChange',
63
- 'onVdsLog',
64
- 'onVideoPresentationChange',
65
- 'onVolumeChange',
66
- 'onWaiting',
67
- ];
@@ -1,67 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { createReactComponent, type ReactElementProps } from 'maverick.js/react';
4
- import type { MediaSrc } from 'vidstack';
5
-
6
- import type { PlayerSrc } from '../source';
7
- import { playerCallbacks } from './player-callbacks';
8
- import { MediaPlayerInstance } from './primitives/instances';
9
- import { Primitive } from './primitives/nodes';
10
-
11
- /* -------------------------------------------------------------------------------------------------
12
- * MediaPlayer
13
- * -----------------------------------------------------------------------------------------------*/
14
-
15
- const MediaPlayerBridge = createReactComponent(MediaPlayerInstance, {
16
- events: playerCallbacks,
17
- eventsRegex: /^onHls/,
18
- domEventsRegex: /^onMedia/,
19
- });
20
-
21
- export interface MediaPlayerProps extends Omit<ReactElementProps<MediaPlayerInstance>, 'src'> {
22
- /**
23
- * The URL or object of the current media resource/s to be considered for playback.
24
- *
25
- * @see {@link https://vidstack.io/docs/player/core-concepts/loading#sources}
26
- */
27
- src?: PlayerSrc;
28
- aspectRatio?: string;
29
- asChild?: boolean;
30
- children: React.ReactNode;
31
- ref?: React.Ref<MediaPlayerInstance>;
32
- }
33
-
34
- /**
35
- * All media components exist inside the `<MediaPlayer>` component. This component's main
36
- * responsibilities are to manage media state updates, dispatch media events, handle media
37
- * requests, and expose media state through HTML attributes and CSS properties for styling
38
- * purposes.
39
- *
40
- * @docs {@link https://www.vidstack.io/docs/player/components/media/player}
41
- * @example
42
- * ```tsx
43
- * <MediaPlayer src="...">
44
- * <MediaProvider />
45
- * </MediaPlayer>
46
- * ```
47
- */
48
- const MediaPlayer = React.forwardRef<MediaPlayerInstance, MediaPlayerProps>(
49
- ({ aspectRatio, children, ...props }, forwardRef) => {
50
- return (
51
- <MediaPlayerBridge
52
- {...props}
53
- src={props.src as MediaSrc}
54
- ref={forwardRef}
55
- style={{
56
- aspectRatio,
57
- ...props.style,
58
- }}
59
- >
60
- {(props) => <Primitive.div {...props}>{children}</Primitive.div>}
61
- </MediaPlayerBridge>
62
- );
63
- },
64
- );
65
-
66
- MediaPlayer.displayName = 'MediaPlayer';
67
- export { MediaPlayer };
@@ -1,92 +0,0 @@
1
- import {
2
- AirPlayButton,
3
- AudioGainSlider,
4
- CaptionButton,
5
- Captions,
6
- Controls,
7
- ControlsGroup,
8
- FullscreenButton,
9
- Gesture,
10
- GoogleCastButton,
11
- LiveButton,
12
- MediaAnnouncer,
13
- MediaPlayer,
14
- MediaProvider,
15
- Menu,
16
- MenuButton,
17
- MenuItem,
18
- MenuItems,
19
- MenuPortal,
20
- MuteButton,
21
- PIPButton,
22
- PlayButton,
23
- Poster,
24
- QualitySlider,
25
- Radio,
26
- RadioGroup,
27
- SeekButton,
28
- Slider,
29
- SliderChapters,
30
- SliderPreview,
31
- SliderThumbnail,
32
- SliderValue,
33
- SliderVideo,
34
- SpeedSlider,
35
- Thumbnail,
36
- Time,
37
- TimeSlider,
38
- ToggleButton,
39
- Tooltip,
40
- TooltipContent,
41
- TooltipTrigger,
42
- VolumeSlider,
43
- } from 'vidstack';
44
-
45
- // Core
46
- export class MediaPlayerInstance extends MediaPlayer {}
47
- export class MediaProviderInstance extends MediaProvider {}
48
- export class MediaAnnouncerInstance extends MediaAnnouncer {}
49
- // Controls
50
- export class ControlsInstance extends Controls {}
51
- export class ControlsGroupInstance extends ControlsGroup {}
52
- // Buttons
53
- export class ToggleButtonInstance extends ToggleButton {}
54
- export class CaptionButtonInstance extends CaptionButton {}
55
- export class FullscreenButtonInstance extends FullscreenButton {}
56
- export class LiveButtonInstance extends LiveButton {}
57
- export class MuteButtonInstance extends MuteButton {}
58
- export class PIPButtonInstance extends PIPButton {}
59
- export class PlayButtonInstance extends PlayButton {}
60
- export class AirPlayButtonInstance extends AirPlayButton {}
61
- export class GoogleCastButtonInstance extends GoogleCastButton {}
62
- export class SeekButtonInstance extends SeekButton {}
63
- // Tooltip
64
- export class TooltipInstance extends Tooltip {}
65
- export class TooltipTriggerInstance extends TooltipTrigger {}
66
- export class TooltipContentInstance extends TooltipContent {}
67
- // Sliders
68
- export class SliderInstance extends Slider {}
69
- export class TimeSliderInstance extends TimeSlider {}
70
- export class VolumeSliderInstance extends VolumeSlider {}
71
- export class AudioGainSliderInstance extends AudioGainSlider {}
72
- export class SpeedSliderInstance extends SpeedSlider {}
73
- export class QualitySliderInstance extends QualitySlider {}
74
- export class SliderThumbnailInstance extends SliderThumbnail {}
75
- export class SliderValueInstance extends SliderValue {}
76
- export class SliderVideoInstance extends SliderVideo {}
77
- export class SliderPreviewInstance extends SliderPreview {}
78
- export class SliderChaptersInstance extends SliderChapters {}
79
- // Menus
80
- export class MenuInstance extends Menu {}
81
- export class MenuButtonInstance extends MenuButton {}
82
- export class MenuItemsInstance extends MenuItems {}
83
- export class MenuItemInstance extends MenuItem {}
84
- export class MenuPortalInstance extends MenuPortal {}
85
- export class RadioGroupInstance extends RadioGroup {}
86
- export class RadioInstance extends Radio {}
87
- // Display
88
- export class CaptionsInstance extends Captions {}
89
- export class GestureInstance extends Gesture {}
90
- export class PosterInstance extends Poster {}
91
- export class ThumbnailInstance extends Thumbnail {}
92
- export class TimeInstance extends Time {}
@@ -1,58 +0,0 @@
1
- /* -------------------------------------------------------------------------------------------------
2
- * Credit: https://github.com/radix-ui/primitives/blob/main/packages/react/primitive/src/Primitive.tsx
3
- * -----------------------------------------------------------------------------------------------*/
4
-
5
- import * as React from 'react';
6
-
7
- import { Slot } from './slot';
8
-
9
- /* -------------------------------------------------------------------------------------------------
10
- * Primitive
11
- * -----------------------------------------------------------------------------------------------*/
12
-
13
- const NODES = ['button', 'div', 'span', 'img', 'video', 'audio'] as const;
14
-
15
- export const Primitive = NODES.reduce((primitives, node) => {
16
- const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {
17
- const { asChild, ...primitiveProps } = props;
18
- const Comp: any = asChild ? Slot : node;
19
- return <Comp {...primitiveProps} ref={forwardedRef} />;
20
- });
21
-
22
- Node.displayName = `Primitive.${node}`;
23
-
24
- return { ...primitives, [node]: Node };
25
- }, {} as Primitives);
26
-
27
- /* -------------------------------------------------------------------------------------------------
28
- * Types
29
- * -----------------------------------------------------------------------------------------------*/
30
-
31
- // Temporary while we await merge of this fix:
32
- // https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396
33
- type PropsWithoutRef<P> = P extends any
34
- ? 'ref' extends keyof P
35
- ? Pick<P, Exclude<keyof P, 'ref'>>
36
- : P
37
- : P;
38
-
39
- export type ComponentPropsWithoutRef<T extends React.ElementType> = PropsWithoutRef<
40
- React.ComponentProps<T>
41
- >;
42
-
43
- type Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };
44
-
45
- export type PrimitivePropsWithRef<E extends React.ElementType> = Omit<
46
- React.ComponentProps<E>,
47
- 'style'
48
- > &
49
- React.Attributes & {
50
- asChild?: boolean;
51
- style?:
52
- | React.CSSProperties
53
- | (React.CSSProperties & Record<`--${string}`, string | null | undefined>)
54
- | undefined;
55
- };
56
-
57
- interface PrimitiveForwardRefComponent<E extends React.ElementType>
58
- extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}
@@ -1,132 +0,0 @@
1
- /* -------------------------------------------------------------------------------------------------
2
- * Credit: https://github.com/radix-ui/primitives/blob/main/packages/react/slot/src/Slot.tsx
3
- * -----------------------------------------------------------------------------------------------*/
4
-
5
- import * as React from 'react';
6
-
7
- import { composeRefs } from 'maverick.js/react';
8
-
9
- /* -------------------------------------------------------------------------------------------------
10
- * Slot
11
- * -----------------------------------------------------------------------------------------------*/
12
-
13
- interface SlotProps extends React.HTMLAttributes<HTMLElement> {
14
- children?: React.ReactNode;
15
- }
16
-
17
- const Slot = React.forwardRef<HTMLElement, SlotProps>((props, forwardedRef) => {
18
- const { children, ...slotProps } = props;
19
- const childrenArray = React.Children.toArray(children);
20
- const slottable = childrenArray.find(isSlottable);
21
-
22
- if (slottable) {
23
- // the new element to render is the one passed as a child of `Slottable`
24
- const newElement = (slottable.props as { children: React.ReactNode }).children;
25
-
26
- const newChildren = childrenArray.map((child) => {
27
- if (child === slottable) {
28
- // because the new element will be the one rendered, we are only interested
29
- // in grabbing its children (`newElement.props.children`)
30
- if (React.Children.count(newElement) > 1) return React.Children.only(null);
31
- return React.isValidElement(newElement)
32
- ? (newElement.props as { children: React.ReactNode }).children
33
- : null;
34
- } else {
35
- return child;
36
- }
37
- });
38
-
39
- return (
40
- <SlotClone {...slotProps} ref={forwardedRef}>
41
- {React.isValidElement(newElement)
42
- ? React.cloneElement(newElement, undefined, newChildren)
43
- : null}
44
- </SlotClone>
45
- );
46
- }
47
-
48
- return (
49
- <SlotClone {...slotProps} ref={forwardedRef}>
50
- {children}
51
- </SlotClone>
52
- );
53
- });
54
-
55
- Slot.displayName = 'Slot';
56
-
57
- /* -------------------------------------------------------------------------------------------------
58
- * SlotClone
59
- * -----------------------------------------------------------------------------------------------*/
60
-
61
- interface SlotCloneProps {
62
- children: React.ReactNode;
63
- }
64
-
65
- const SlotClone = React.forwardRef<any, SlotCloneProps>((props, forwardedRef) => {
66
- const { children, ...slotProps } = props;
67
-
68
- if (React.isValidElement(children)) {
69
- return React.cloneElement<any>(children, {
70
- ...mergeProps(slotProps, children.props as any),
71
- ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref,
72
- });
73
- }
74
-
75
- return React.Children.count(children) > 1 ? React.Children.only(null) : null;
76
- });
77
-
78
- SlotClone.displayName = 'SlotClone';
79
-
80
- /* -------------------------------------------------------------------------------------------------
81
- * Slottable
82
- * -----------------------------------------------------------------------------------------------*/
83
-
84
- const Slottable = ({ children }: { children: React.ReactNode }) => {
85
- return <>{children}</>;
86
- };
87
-
88
- /* ---------------------------------------------------------------------------------------------- */
89
-
90
- type AnyProps = Record<string, any>;
91
-
92
- function isSlottable(child: React.ReactNode): child is React.ReactElement {
93
- return React.isValidElement(child) && child.type === Slottable;
94
- }
95
-
96
- function mergeProps(slotProps: AnyProps, childProps: AnyProps) {
97
- // all child props should override
98
- const overrideProps = { ...childProps };
99
-
100
- for (const propName in childProps) {
101
- const slotPropValue = slotProps[propName];
102
- const childPropValue = childProps[propName];
103
-
104
- const isHandler = /^on[A-Z]/.test(propName);
105
- if (isHandler) {
106
- // if the handler exists on both, we compose them
107
- if (slotPropValue && childPropValue) {
108
- overrideProps[propName] = (...args: unknown[]) => {
109
- childPropValue(...args);
110
- slotPropValue(...args);
111
- };
112
- }
113
- // but if it exists only on the slot, we use only this one
114
- else if (slotPropValue) {
115
- overrideProps[propName] = slotPropValue;
116
- }
117
- }
118
- // if it's `style`, we merge them
119
- else if (propName === 'style') {
120
- overrideProps[propName] = { ...slotPropValue, ...childPropValue };
121
- } else if (propName === 'className') {
122
- overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ');
123
- }
124
- }
125
-
126
- return { ...slotProps, ...overrideProps };
127
- }
128
-
129
- const Root = Slot;
130
-
131
- export { Slot, Slottable, Root };
132
- export type { SlotProps };