@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,259 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { composeRefs, useSignal } from 'maverick.js/react';
4
- import { isBoolean } from 'maverick.js/std';
5
- import {
6
- type DefaultLayoutTranslations,
7
- type FileDownloadInfo,
8
- type MediaPlayerQuery,
9
- type MediaStreamType,
10
- type ThumbnailSrc,
11
- } from 'vidstack';
12
-
13
- import { useMediaContext } from '../../../hooks/use-media-context';
14
- import { useMediaState } from '../../../hooks/use-media-state';
15
- import { createComputed, createSignal } from '../../../hooks/use-signals';
16
- import type { PrimitivePropsWithRef } from '../../primitives/nodes';
17
- import { DefaultLayoutContext } from './context';
18
- import { useColorSchemeClass } from './hooks';
19
- import type { DefaultLayoutIcons } from './icons';
20
-
21
- /* -------------------------------------------------------------------------------------------------
22
- * DefaultMediaLayout
23
- * -----------------------------------------------------------------------------------------------*/
24
-
25
- export interface DefaultLayoutProps<Slots = unknown> extends PrimitivePropsWithRef<'div'> {
26
- children?: React.ReactNode;
27
- /**
28
- * The icons to be rendered and displayed inside the layout.
29
- */
30
- icons: DefaultLayoutIcons;
31
- /**
32
- * Whether light or dark color theme should be active. Defaults to user operating system
33
- * preference.
34
- *
35
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme}
36
- */
37
- colorScheme?: 'light' | 'dark' | 'system' | 'default';
38
- /**
39
- * Sets the download URL and filename for the download button.
40
- */
41
- download?: FileDownloadInfo;
42
- /**
43
- * Specifies the number of milliseconds to wait before tooltips are visible after interacting
44
- * with a control.
45
- *
46
- * @defaultValue 700
47
- */
48
- showTooltipDelay?: number;
49
- /**
50
- * Specifies the number of milliseconds to wait before menus are visible after opening them.
51
- *
52
- * @defaultValue 0
53
- */
54
- showMenuDelay?: number;
55
- /**
56
- * Whether the bitrate should be hidden in the settings quality menu next to each option.
57
- *
58
- * @defaultValue false
59
- */
60
- hideQualityBitrate?: boolean;
61
- /**
62
- * Determines when the small (e.g., mobile) UI should be displayed.
63
- *
64
- * @defaultValue `({ width, height }) => width < 576 || height < 380`
65
- */
66
- smallLayoutWhen?: boolean | MediaPlayerQuery;
67
- /**
68
- * The thumbnails resource.
69
- *
70
- * @see {@link https://www.vidstack.io/docs/wc/player/core-concepts/loading#thumbnails}
71
- */
72
- thumbnails?: ThumbnailSrc;
73
- /**
74
- * Translation map from english to your desired language for words used throughout the layout.
75
- */
76
- translations?: Partial<DefaultLayoutTranslations> | null;
77
- /**
78
- * A document query selector string or `HTMLElement` to mount menus inside.
79
- *
80
- * @defaultValue `document.body`
81
- */
82
- menuContainer?: string | HTMLElement | null;
83
- /**
84
- * Specifies whether menu buttons should be placed in the top or bottom controls group. This
85
- * only applies to the large video layout.
86
- */
87
- menuGroup?: 'top' | 'bottom';
88
- /**
89
- * Disable audio boost slider in the settings menu.
90
- */
91
- noAudioGain?: boolean;
92
- /**
93
- * The audio gain options to be displayed in the settings menu.
94
- */
95
- audioGains?: number[] | { min: number; max: number; step: number };
96
- /**
97
- * Whether modal menus should be disabled when the small layout is active. A modal menu is
98
- * a floating panel that floats up from the bottom of the screen (outside of the player). It's
99
- * enabled by default as it provides a better user experience for touch devices.
100
- */
101
- noModal?: boolean;
102
- /**
103
- * Whether to disable scrubbing by touch swiping left or right on the player canvas.
104
- */
105
- noScrubGesture?: boolean;
106
- /**
107
- * The minimum width of the slider to start displaying slider chapters when available.
108
- */
109
- sliderChaptersMinWidth?: number;
110
- /**
111
- * Whether the time slider should be disabled.
112
- */
113
- disableTimeSlider?: boolean;
114
- /**
115
- * Whether all gestures such as press to play or seek should not be active.
116
- */
117
- noGestures?: boolean;
118
- /**
119
- * Whether keyboard actions should not be displayed.
120
- */
121
- noKeyboardAnimations?: boolean;
122
- /**
123
- * The playback rate options to be displayed in the settings menu.
124
- */
125
- playbackRates?: number[] | { min: number; max: number; step: number };
126
- /**
127
- * The number of seconds to seek forward or backward when pressing the seek button or using
128
- * keyboard shortcuts.
129
- */
130
- seekStep?: number;
131
- /**
132
- * Provide additional content to be inserted in specific positions.
133
- */
134
- slots?: Slots;
135
- }
136
-
137
- export interface CreateDefaultMediaLayout {
138
- type: 'audio' | 'video';
139
- smLayoutWhen: MediaPlayerQuery;
140
- renderLayout: (props: {
141
- streamType: MediaStreamType;
142
- isLoadLayout: boolean;
143
- isSmallLayout: boolean;
144
- }) => React.ReactNode;
145
- }
146
-
147
- export function createDefaultMediaLayout({
148
- type,
149
- smLayoutWhen,
150
- renderLayout,
151
- }: CreateDefaultMediaLayout) {
152
- const Layout = React.forwardRef<HTMLDivElement, DefaultLayoutProps>(
153
- (
154
- {
155
- children,
156
- className,
157
- disableTimeSlider = false,
158
- hideQualityBitrate = false,
159
- icons,
160
- colorScheme = 'system',
161
- download = null,
162
- menuContainer = null,
163
- menuGroup = 'bottom',
164
- noAudioGain = false,
165
- audioGains = { min: 0, max: 300, step: 25 },
166
- noGestures = false,
167
- noKeyboardAnimations = false,
168
- noModal = false,
169
- noScrubGesture,
170
- playbackRates = { min: 0, max: 2, step: 0.25 },
171
- seekStep = 10,
172
- showMenuDelay,
173
- showTooltipDelay = 700,
174
- sliderChaptersMinWidth = 325,
175
- slots,
176
- smallLayoutWhen = smLayoutWhen,
177
- thumbnails = null,
178
- translations,
179
- ...props
180
- },
181
- forwardRef,
182
- ) => {
183
- const media = useMediaContext(),
184
- $load = useSignal(media.$props.load),
185
- $canLoad = useMediaState('canLoad'),
186
- $viewType = useMediaState('viewType'),
187
- $streamType = useMediaState('streamType'),
188
- $smallWhen = createComputed(() => {
189
- return isBoolean(smallLayoutWhen) ? smallLayoutWhen : smallLayoutWhen(media.player.state);
190
- }, [smallLayoutWhen]),
191
- userPrefersAnnouncements = createSignal(true),
192
- userPrefersKeyboardAnimations = createSignal(true),
193
- isMatch = $viewType === type,
194
- isSmallLayout = $smallWhen(),
195
- isForcedLayout = isBoolean(smallLayoutWhen),
196
- isLoadLayout = $load === 'play' && !$canLoad,
197
- canRender = $canLoad || isForcedLayout || isLoadLayout,
198
- colorSchemeClass = useColorSchemeClass(colorScheme),
199
- layoutEl = createSignal<HTMLElement | null>(null);
200
-
201
- useSignal($smallWhen);
202
-
203
- return (
204
- <div
205
- {...props}
206
- className={
207
- `vds-${type}-layout` +
208
- (colorSchemeClass ? ` ${colorSchemeClass}` : '') +
209
- (className ? ` ${className}` : '')
210
- }
211
- data-match={isMatch ? '' : null}
212
- data-sm={isSmallLayout ? '' : null}
213
- data-lg={!isSmallLayout ? '' : null}
214
- data-size={isSmallLayout ? 'sm' : 'lg'}
215
- data-no-scrub-gesture={noScrubGesture ? '' : null}
216
- ref={composeRefs(layoutEl.set as any, forwardRef)}
217
- >
218
- {canRender && isMatch ? (
219
- <DefaultLayoutContext.Provider
220
- value={{
221
- disableTimeSlider,
222
- hideQualityBitrate,
223
- icons: icons,
224
- colorScheme,
225
- download,
226
- isSmallLayout,
227
- menuContainer,
228
- menuGroup,
229
- noAudioGain,
230
- audioGains,
231
- layoutEl,
232
- noGestures,
233
- noKeyboardAnimations,
234
- noModal,
235
- noScrubGesture,
236
- showMenuDelay,
237
- showTooltipDelay,
238
- sliderChaptersMinWidth,
239
- slots,
240
- seekStep,
241
- playbackRates,
242
- thumbnails,
243
- translations,
244
- userPrefersAnnouncements,
245
- userPrefersKeyboardAnimations,
246
- }}
247
- >
248
- {renderLayout({ streamType: $streamType, isSmallLayout, isLoadLayout })}
249
- {children}
250
- </DefaultLayoutContext.Provider>
251
- ) : null}
252
- </div>
253
- );
254
- },
255
- );
256
-
257
- Layout.displayName = 'DefaultMediaLayout';
258
- return Layout;
259
- }
@@ -1,98 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { isUndefined, uppercaseFirstChar } from 'maverick.js/std';
4
-
5
- import { DefaultLayoutContext } 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 DefaultLayoutSlotName =
17
- | 'bufferingIndicator'
18
- | 'captionButton'
19
- | 'captions'
20
- | 'title'
21
- | 'chapterTitle'
22
- | 'currentTime'
23
- | 'timeDivider'
24
- | 'endTime'
25
- | 'fullscreenButton'
26
- | 'liveButton'
27
- | 'livePlayButton'
28
- | 'muteButton'
29
- | 'pipButton'
30
- | 'airPlayButton'
31
- | 'googleCastButton'
32
- | 'downloadButton'
33
- | 'playButton'
34
- | 'loadButton'
35
- | 'seekBackwardButton'
36
- | 'seekForwardButton'
37
- | 'startDuration'
38
- | 'timeSlider'
39
- | 'volumeSlider'
40
- | 'topControlsGroupStart'
41
- | 'topControlsGroupCenter'
42
- | 'topControlsGroupEnd'
43
- | 'centerControlsGroupStart'
44
- | 'centerControlsGroupCenter'
45
- | 'centerControlsGroupEnd'
46
- | DefaultLayoutMenuSlotName;
47
-
48
- export type DefaultLayoutMenuSlotName =
49
- | 'chaptersMenu'
50
- | 'settingsMenu'
51
- /** @deprecated - use `settingsMenuItemsStart` */
52
- | 'settingsMenuStartItems'
53
- /** @deprecated - use `settingsMenuItemsEnd` */
54
- | 'settingsMenuEndItems'
55
- | 'settingsMenuItemsStart'
56
- | 'settingsMenuItemsEnd'
57
- | 'playbackMenuItemsStart'
58
- | 'playbackMenuItemsEnd'
59
- | 'playbackMenuLoop'
60
- | 'accessibilityMenuItemsStart'
61
- | 'accessibilityMenuItemsEnd'
62
- | 'audioMenuItemsStart'
63
- | 'audioMenuItemsEnd'
64
- | 'captionsMenuItemsStart'
65
- | 'captionsMenuItemsEnd';
66
-
67
- export interface DefaultLayoutSlots extends Slots<DefaultLayoutSlotName> {}
68
-
69
- export interface DefaultAudioLayoutSlots extends DefaultLayoutSlots {}
70
-
71
- export interface DefaultVideoLayoutSlots extends DefaultLayoutSlots {
72
- smallLayout?: DefaultLayoutSlots;
73
- largeLayout?: DefaultLayoutSlots;
74
- }
75
-
76
- export function useDefaultAudioLayoutSlots() {
77
- return React.useContext(DefaultLayoutContext).slots as DefaultAudioLayoutSlots | undefined;
78
- }
79
-
80
- export function useDefaultVideoLayoutSlots() {
81
- return React.useContext(DefaultLayoutContext).slots as DefaultVideoLayoutSlots | undefined;
82
- }
83
-
84
- export function slot<T>(
85
- slots: T | undefined,
86
- name: keyof T,
87
- defaultValue: React.ReactNode,
88
- ): React.ReactNode {
89
- const slot = slots?.[name],
90
- capitalizedName = uppercaseFirstChar(name as string);
91
- return (
92
- <>
93
- {slots?.[`before${capitalizedName}`]}
94
- {isUndefined(slot) ? defaultValue : slot}
95
- {slots?.[`after${capitalizedName}`]}
96
- </>
97
- );
98
- }
@@ -1,22 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { useSignal } from 'maverick.js/react';
4
-
5
- import { MediaAnnouncer } from '../../../announcer';
6
- import { useDefaultLayoutContext } from '../context';
7
-
8
- /* -------------------------------------------------------------------------------------------------
9
- * DefaultAnnouncer
10
- * -----------------------------------------------------------------------------------------------*/
11
-
12
- function DefaultAnnouncer() {
13
- const { userPrefersAnnouncements, translations } = useDefaultLayoutContext(),
14
- $userPrefersAnnouncements = useSignal(userPrefersAnnouncements);
15
-
16
- if (!$userPrefersAnnouncements) return null;
17
-
18
- return <MediaAnnouncer translations={translations} />;
19
- }
20
-
21
- DefaultAnnouncer.displayName = 'DefaultAnnouncer';
22
- export { DefaultAnnouncer };
@@ -1,301 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { isString, uppercaseFirstChar } from 'maverick.js/std';
4
- import { getDownloadFile, isTrackCaptionKind } from 'vidstack';
5
-
6
- import { useMediaState } from '../../../../hooks/use-media-state';
7
- import { appendParamsToURL } from '../../../../utils';
8
- import { AirPlayButton } from '../../../ui/buttons/airplay-button';
9
- import { CaptionButton } from '../../../ui/buttons/caption-button';
10
- import { FullscreenButton } from '../../../ui/buttons/fullscreen-button';
11
- import { GoogleCastButton } from '../../../ui/buttons/google-cast-button';
12
- import { LiveButton } from '../../../ui/buttons/live-button';
13
- import { MuteButton } from '../../../ui/buttons/mute-button';
14
- import { PIPButton } from '../../../ui/buttons/pip-button';
15
- import { PlayButton } from '../../../ui/buttons/play-button';
16
- import { SeekButton } from '../../../ui/buttons/seek-button';
17
- import * as Tooltip from '../../../ui/tooltip';
18
- import { useDefaultLayoutContext, useDefaultLayoutWord } from '../context';
19
- import { DefaultTooltip } from './tooltip';
20
-
21
- /* -------------------------------------------------------------------------------------------------
22
- * Types
23
- * -----------------------------------------------------------------------------------------------*/
24
-
25
- interface DefaultMediaButtonProps {
26
- tooltip: Tooltip.ContentProps['placement'];
27
- }
28
-
29
- /* -------------------------------------------------------------------------------------------------
30
- * DefaultPlayButton
31
- * -----------------------------------------------------------------------------------------------*/
32
-
33
- function DefaultPlayButton({ tooltip }: DefaultMediaButtonProps) {
34
- const { icons: Icons } = useDefaultLayoutContext(),
35
- playText = useDefaultLayoutWord('Play'),
36
- pauseText = useDefaultLayoutWord('Pause'),
37
- $paused = useMediaState('paused'),
38
- $ended = useMediaState('ended');
39
- return (
40
- <DefaultTooltip content={$paused ? playText : pauseText} placement={tooltip}>
41
- <PlayButton className="vds-play-button vds-button" aria-label={playText}>
42
- {$ended ? (
43
- <Icons.PlayButton.Replay className="vds-icon" />
44
- ) : $paused ? (
45
- <Icons.PlayButton.Play className="vds-icon" />
46
- ) : (
47
- <Icons.PlayButton.Pause className="vds-icon" />
48
- )}
49
- </PlayButton>
50
- </DefaultTooltip>
51
- );
52
- }
53
-
54
- DefaultPlayButton.displayName = 'DefaultPlayButton';
55
- export { DefaultPlayButton };
56
-
57
- /* -------------------------------------------------------------------------------------------------
58
- * DefaultMuteButton
59
- * -----------------------------------------------------------------------------------------------*/
60
-
61
- const DefaultMuteButton = React.forwardRef<HTMLButtonElement, DefaultMediaButtonProps>(
62
- ({ tooltip }, forwardRef) => {
63
- const { icons: Icons } = useDefaultLayoutContext(),
64
- muteText = useDefaultLayoutWord('Mute'),
65
- unmuteText = useDefaultLayoutWord('Unmute'),
66
- $muted = useMediaState('muted'),
67
- $volume = useMediaState('volume');
68
- return (
69
- <DefaultTooltip content={$muted ? unmuteText : muteText} placement={tooltip}>
70
- <MuteButton className="vds-mute-button vds-button" aria-label={muteText} ref={forwardRef}>
71
- {$muted || $volume == 0 ? (
72
- <Icons.MuteButton.Mute className="vds-icon" />
73
- ) : $volume < 0.5 ? (
74
- <Icons.MuteButton.VolumeLow className="vds-icon" />
75
- ) : (
76
- <Icons.MuteButton.VolumeHigh className="vds-icon" />
77
- )}
78
- </MuteButton>
79
- </DefaultTooltip>
80
- );
81
- },
82
- );
83
-
84
- DefaultMuteButton.displayName = 'DefaultMuteButton';
85
- export { DefaultMuteButton };
86
-
87
- /* -------------------------------------------------------------------------------------------------
88
- * DefaultCaptionButton
89
- * -----------------------------------------------------------------------------------------------*/
90
-
91
- function DefaultCaptionButton({ tooltip }: DefaultMediaButtonProps) {
92
- const { icons: Icons } = useDefaultLayoutContext(),
93
- captionsText = useDefaultLayoutWord('Captions'),
94
- onText = useDefaultLayoutWord('Closed-Captions On'),
95
- offText = useDefaultLayoutWord('Closed-Captions Off'),
96
- $track = useMediaState('textTrack'),
97
- isOn = $track && isTrackCaptionKind($track);
98
- return (
99
- <DefaultTooltip content={isOn ? onText : offText} placement={tooltip}>
100
- <CaptionButton className="vds-caption-button vds-button" aria-label={captionsText}>
101
- {isOn ? (
102
- <Icons.CaptionButton.On className="vds-icon" />
103
- ) : (
104
- <Icons.CaptionButton.Off className="vds-icon" />
105
- )}
106
- </CaptionButton>
107
- </DefaultTooltip>
108
- );
109
- }
110
-
111
- DefaultCaptionButton.displayName = 'DefaultCaptionButton';
112
- export { DefaultCaptionButton };
113
-
114
- /* -------------------------------------------------------------------------------------------------
115
- * DefaultPIPButton
116
- * -----------------------------------------------------------------------------------------------*/
117
-
118
- function DefaultPIPButton({ tooltip }: DefaultMediaButtonProps) {
119
- const { icons: Icons } = useDefaultLayoutContext(),
120
- pipText = useDefaultLayoutWord('PiP'),
121
- enterText = useDefaultLayoutWord('Enter PiP'),
122
- exitText = useDefaultLayoutWord('Exit PiP'),
123
- $pip = useMediaState('pictureInPicture');
124
- return (
125
- <DefaultTooltip content={$pip ? exitText : enterText} placement={tooltip}>
126
- <PIPButton className="vds-pip-button vds-button" aria-label={pipText}>
127
- {$pip ? (
128
- <Icons.PIPButton.Exit className="vds-icon" />
129
- ) : (
130
- <Icons.PIPButton.Enter className="vds-icon" />
131
- )}
132
- </PIPButton>
133
- </DefaultTooltip>
134
- );
135
- }
136
-
137
- DefaultPIPButton.displayName = 'DefaultPIPButton';
138
- export { DefaultPIPButton };
139
-
140
- /* -------------------------------------------------------------------------------------------------
141
- * DefaultFullscreenButton
142
- * -----------------------------------------------------------------------------------------------*/
143
-
144
- function DefaultFullscreenButton({ tooltip }: DefaultMediaButtonProps) {
145
- const { icons: Icons } = useDefaultLayoutContext(),
146
- fullscreenText = useDefaultLayoutWord('Fullscreen'),
147
- enterText = useDefaultLayoutWord('Enter Fullscreen'),
148
- exitText = useDefaultLayoutWord('Exit Fullscreen'),
149
- $fullscreen = useMediaState('fullscreen');
150
- return (
151
- <DefaultTooltip content={$fullscreen ? exitText : enterText} placement={tooltip}>
152
- <FullscreenButton className="vds-fullscreen-button vds-button" aria-label={fullscreenText}>
153
- {$fullscreen ? (
154
- <Icons.FullscreenButton.Exit className="vds-icon" />
155
- ) : (
156
- <Icons.FullscreenButton.Enter className="vds-icon" />
157
- )}
158
- </FullscreenButton>
159
- </DefaultTooltip>
160
- );
161
- }
162
-
163
- DefaultFullscreenButton.displayName = 'DefaultFullscreenButton';
164
- export { DefaultFullscreenButton };
165
-
166
- /* -------------------------------------------------------------------------------------------------
167
- * DefaultSeekButton
168
- * -----------------------------------------------------------------------------------------------*/
169
-
170
- function DefaultSeekButton({
171
- backward,
172
- tooltip,
173
- }: DefaultMediaButtonProps & { backward?: boolean }) {
174
- const { icons: Icons, seekStep } = useDefaultLayoutContext(),
175
- seekForwardText = useDefaultLayoutWord('Seek Forward'),
176
- seekBackwardText = useDefaultLayoutWord('Seek Backward'),
177
- seconds = (backward ? -1 : 1) * seekStep!,
178
- label = seconds >= 0 ? seekForwardText : seekBackwardText;
179
- return (
180
- <DefaultTooltip content={label} placement={tooltip}>
181
- <SeekButton className="vds-seek-button vds-button" seconds={seconds} aria-label={label}>
182
- {seconds >= 0 ? (
183
- <Icons.SeekButton.Forward className="vds-icon" />
184
- ) : (
185
- <Icons.SeekButton.Backward className="vds-icon" />
186
- )}
187
- </SeekButton>
188
- </DefaultTooltip>
189
- );
190
- }
191
-
192
- DefaultSeekButton.displayName = 'DefaultSeekButton';
193
- export { DefaultSeekButton };
194
-
195
- /* -------------------------------------------------------------------------------------------------
196
- * DefaultAirPlayButton
197
- * -----------------------------------------------------------------------------------------------*/
198
-
199
- function DefaultAirPlayButton({ tooltip }: DefaultMediaButtonProps) {
200
- const { icons: Icons } = useDefaultLayoutContext(),
201
- airPlayText = useDefaultLayoutWord('AirPlay'),
202
- $state = useMediaState('remotePlaybackState'),
203
- stateText = useDefaultLayoutWord(uppercaseFirstChar($state) as Capitalize<RemotePlaybackState>),
204
- label = `${airPlayText} ${stateText}`,
205
- Icon =
206
- ($state === 'connecting'
207
- ? Icons.AirPlayButton.Connecting
208
- : $state === 'connected'
209
- ? Icons.AirPlayButton.Connected
210
- : null) ?? Icons.AirPlayButton.Default;
211
- return (
212
- <DefaultTooltip content={airPlayText} placement={tooltip}>
213
- <AirPlayButton className="vds-airplay-button vds-button" aria-label={label}>
214
- <Icon className="vds-icon" />
215
- </AirPlayButton>
216
- </DefaultTooltip>
217
- );
218
- }
219
-
220
- DefaultAirPlayButton.displayName = 'DefaultAirPlayButton';
221
- export { DefaultAirPlayButton };
222
-
223
- /* -------------------------------------------------------------------------------------------------
224
- * DefaultGoogleCastButton
225
- * -----------------------------------------------------------------------------------------------*/
226
-
227
- function DefaultGoogleCastButton({ tooltip }: DefaultMediaButtonProps) {
228
- const { icons: Icons } = useDefaultLayoutContext(),
229
- googleCastText = useDefaultLayoutWord('Google Cast'),
230
- $state = useMediaState('remotePlaybackState'),
231
- stateText = useDefaultLayoutWord(uppercaseFirstChar($state) as Capitalize<RemotePlaybackState>),
232
- label = `${googleCastText} ${stateText}`,
233
- Icon =
234
- ($state === 'connecting'
235
- ? Icons.GoogleCastButton.Connecting
236
- : $state === 'connected'
237
- ? Icons.GoogleCastButton.Connected
238
- : null) ?? Icons.GoogleCastButton.Default;
239
- return (
240
- <DefaultTooltip content={googleCastText} placement={tooltip}>
241
- <GoogleCastButton className="vds-google-cast-button vds-button" aria-label={label}>
242
- <Icon className="vds-icon" />
243
- </GoogleCastButton>
244
- </DefaultTooltip>
245
- );
246
- }
247
-
248
- DefaultGoogleCastButton.displayName = 'DefaultGoogleCastButton';
249
- export { DefaultGoogleCastButton };
250
-
251
- /* -------------------------------------------------------------------------------------------------
252
- * DefaultLiveButton
253
- * -----------------------------------------------------------------------------------------------*/
254
-
255
- function DefaultLiveButton() {
256
- const $live = useMediaState('live'),
257
- label = useDefaultLayoutWord('Skip To Live'),
258
- liveText = useDefaultLayoutWord('LIVE');
259
- return $live ? (
260
- <LiveButton className="vds-live-button" aria-label={label}>
261
- <span className="vds-live-button-text">{liveText}</span>
262
- </LiveButton>
263
- ) : null;
264
- }
265
-
266
- DefaultLiveButton.displayName = 'DefaultLiveButton';
267
- export { DefaultLiveButton };
268
-
269
- /* -------------------------------------------------------------------------------------------------
270
- * DefaultDownloadButton
271
- * -----------------------------------------------------------------------------------------------*/
272
-
273
- function DefaultDownloadButton() {
274
- const { download, icons: Icons } = useDefaultLayoutContext(),
275
- $src = useMediaState('source'),
276
- $title = useMediaState('title'),
277
- file = getDownloadFile({
278
- title: $title,
279
- src: $src,
280
- download,
281
- }),
282
- downloadText = useDefaultLayoutWord('Download');
283
-
284
- return isString(file?.url) ? (
285
- <DefaultTooltip content={downloadText} placement="top">
286
- <a
287
- role="button"
288
- className="vds-download-button vds-button"
289
- aria-label={downloadText}
290
- href={appendParamsToURL(file.url, { download: file.name })}
291
- download={file.name}
292
- target="_blank"
293
- >
294
- {Icons.DownloadButton ? <Icons.DownloadButton.Default className="vds-icon" /> : null}
295
- </a>
296
- </DefaultTooltip>
297
- ) : null;
298
- }
299
-
300
- DefaultDownloadButton.displayName = 'DefaultDownloadButton';
301
- export { DefaultDownloadButton };
@@ -1,16 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { Captions } from '../../../ui/captions';
4
- import { useDefaultLayoutWord } from '../context';
5
-
6
- /* -------------------------------------------------------------------------------------------------
7
- * DefaultCaptions
8
- * -----------------------------------------------------------------------------------------------*/
9
-
10
- function DefaultCaptions() {
11
- const exampleText = useDefaultLayoutWord('Captions look like this');
12
- return <Captions className="vds-captions" exampleText={exampleText} />;
13
- }
14
-
15
- DefaultCaptions.displayName = 'DefaultCaptions';
16
- export { DefaultCaptions };