@hanifhan1f/vidstack-react 1.12.13 → 1.12.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/dev/chunks/vidstack-B-FM4-oZ.js +668 -0
  2. package/dev/chunks/vidstack-B92UncBI.js +61 -0
  3. package/dev/chunks/vidstack-BDiAEW1N.js +11691 -0
  4. package/dev/chunks/vidstack-BZIhWvGa.js +1371 -0
  5. package/dev/chunks/vidstack-Bfi_jCvb.js +476 -0
  6. package/dev/chunks/vidstack-CBF7iUqu.js +22 -0
  7. package/dev/chunks/vidstack-CFZ0rYJz.js +34 -0
  8. package/dev/chunks/vidstack-CM82l-7o.js +551 -0
  9. package/dev/chunks/vidstack-CvWDiSTs.js +84 -0
  10. package/dev/chunks/vidstack-CzU-uC5f.js +189 -0
  11. package/dev/chunks/vidstack-D-hQD1eE.js +9 -0
  12. package/dev/chunks/vidstack-D6_9yy0x.js +643 -0
  13. package/dev/chunks/vidstack-DJQOTrl6.js +180 -0
  14. package/dev/chunks/vidstack-DNbKNc4R.js +288 -0
  15. package/dev/chunks/vidstack-D_bWd66h.js +2023 -0
  16. package/dev/chunks/vidstack-Dm1xEU9Q.js +36 -0
  17. package/dev/chunks/vidstack-f6WXkmfP.js +375 -0
  18. package/dev/chunks/vidstack-krOAtKMi.js +34 -0
  19. package/dev/chunks/vidstack-lYFZKRUc.js +401 -0
  20. package/dev/player/vidstack-default-components.js +14 -0
  21. package/dev/player/vidstack-default-icons.js +88 -0
  22. package/dev/player/vidstack-default-layout.js +14 -0
  23. package/dev/player/vidstack-plyr-icons.js +62 -0
  24. package/dev/player/vidstack-plyr-layout.js +636 -0
  25. package/dev/player/vidstack-remotion.js +345 -0
  26. package/dev/vidstack.js +587 -0
  27. package/dom.d.ts +91 -0
  28. package/google-cast.d.ts +1422 -0
  29. package/icons.d.ts +5 -0
  30. package/index.d.ts +8 -0
  31. package/package.json +9 -60
  32. package/player/layouts/default.d.ts +11392 -0
  33. package/player/layouts/plyr.d.ts +5 -0
  34. package/player/remotion.d.ts +5 -0
  35. package/player/styles/base.css +153 -0
  36. package/player/styles/default/buffering.css +55 -0
  37. package/player/styles/default/buttons.css +175 -0
  38. package/player/styles/default/captions.css +181 -0
  39. package/player/styles/default/chapter-title.css +26 -0
  40. package/player/styles/default/controls.css +56 -0
  41. package/player/styles/default/gestures.css +19 -0
  42. package/player/styles/default/icons.css +6 -0
  43. package/player/styles/default/keyboard.css +148 -0
  44. package/player/styles/default/layouts/audio.css +417 -0
  45. package/player/styles/default/layouts/video.css +1082 -0
  46. package/player/styles/default/menus.css +959 -0
  47. package/player/styles/default/poster.css +52 -0
  48. package/player/styles/default/sliders.css +391 -0
  49. package/player/styles/default/theme.css +2461 -0
  50. package/player/styles/default/thumbnail.css +40 -0
  51. package/player/styles/default/time.css +45 -0
  52. package/player/styles/default/tooltips.css +141 -0
  53. package/player/styles/plyr/theme.css +1237 -0
  54. package/prod/chunks/vidstack-0Foyib2F.js +34 -0
  55. package/prod/chunks/vidstack-BbPEqH3g.js +11196 -0
  56. package/prod/chunks/vidstack-Bh7M8kL6.js +663 -0
  57. package/prod/chunks/vidstack-BlPINAXN.js +189 -0
  58. package/prod/chunks/vidstack-C5Rzkyfp.js +375 -0
  59. package/prod/chunks/vidstack-CBF7iUqu.js +22 -0
  60. package/prod/chunks/vidstack-CZNlvfmV.js +288 -0
  61. package/prod/chunks/vidstack-CZgUA94N.js +1979 -0
  62. package/prod/chunks/vidstack-D0XCUWbp.js +159 -0
  63. package/prod/chunks/vidstack-DTyDOhwS.js +504 -0
  64. package/prod/chunks/vidstack-DhC5F6c8.js +470 -0
  65. package/prod/chunks/vidstack-Dm1xEU9Q.js +36 -0
  66. package/prod/chunks/vidstack-Ma9rwtR0.js +386 -0
  67. package/prod/chunks/vidstack-WsodkLQg.js +1371 -0
  68. package/prod/chunks/vidstack-jIPoNqhj.js +545 -0
  69. package/prod/chunks/vidstack-krOAtKMi.js +34 -0
  70. package/prod/chunks/vidstack-vqp2QaHR.js +9 -0
  71. package/prod/chunks/vidstack-xo_SmgiV.js +84 -0
  72. package/prod/chunks/vidstack-xvxeRtaN.js +61 -0
  73. package/prod/player/vidstack-default-components.js +14 -0
  74. package/prod/player/vidstack-default-icons.js +88 -0
  75. package/prod/player/vidstack-default-layout.js +14 -0
  76. package/prod/player/vidstack-plyr-icons.js +62 -0
  77. package/prod/player/vidstack-plyr-layout.js +636 -0
  78. package/prod/player/vidstack-remotion.js +335 -0
  79. package/prod/vidstack-icons.js +435 -0
  80. package/prod/vidstack.js +648 -0
  81. package/server/chunks/vidstack-2zMSe4ym.js +1371 -0
  82. package/server/chunks/vidstack-BtqWstSj.js +375 -0
  83. package/server/chunks/vidstack-C-HdFsZi.js +84 -0
  84. package/server/chunks/vidstack-C4iWXMC-.js +545 -0
  85. package/server/chunks/vidstack-C5zFBMwg.js +386 -0
  86. package/server/chunks/vidstack-CBF7iUqu.js +22 -0
  87. package/server/chunks/vidstack-CEh38XpD.js +288 -0
  88. package/server/chunks/vidstack-CkMAeO-e.js +34 -0
  89. package/server/chunks/vidstack-Cm0qnRvu.js +11196 -0
  90. package/server/chunks/vidstack-CoGzBr_V.js +663 -0
  91. package/server/chunks/vidstack-CyFwkPiu.js +470 -0
  92. package/server/chunks/vidstack-D-hQD1eE.js +9 -0
  93. package/server/chunks/vidstack-D_bWd66h.js +2023 -0
  94. package/server/chunks/vidstack-Dm1xEU9Q.js +36 -0
  95. package/server/chunks/vidstack-DtQSvsQr.js +189 -0
  96. package/server/chunks/vidstack-jlaBqZq5.js +61 -0
  97. package/server/chunks/vidstack-krOAtKMi.js +34 -0
  98. package/server/chunks/vidstack-rWs25cS9.js +159 -0
  99. package/server/chunks/vidstack-uyCXITen.js +504 -0
  100. package/server/player/vidstack-default-components.js +14 -0
  101. package/server/player/vidstack-default-icons.js +88 -0
  102. package/server/player/vidstack-default-layout.js +14 -0
  103. package/server/player/vidstack-plyr-icons.js +62 -0
  104. package/server/player/vidstack-plyr-layout.js +636 -0
  105. package/server/player/vidstack-remotion.js +335 -0
  106. package/server/vidstack.js +648 -0
  107. package/tailwind.cjs +101 -0
  108. package/tailwind.d.cts +15 -0
  109. package/.templates/sandbox/document.css +0 -27
  110. package/.templates/sandbox/favicon-32x32.png +0 -0
  111. package/.templates/sandbox/index.html +0 -21
  112. package/.templates/sandbox/main.tsx +0 -12
  113. package/.templates/sandbox/player.css +0 -39
  114. package/.templates/sandbox/player.tsx +0 -121
  115. package/.templates/sandbox/tracks.ts +0 -23
  116. package/analyze.config.ts +0 -7
  117. package/build/build-icons.js +0 -62
  118. package/rollup.config.ts +0 -256
  119. package/src/components/announcer.tsx +0 -47
  120. package/src/components/layouts/default/audio-layout.tsx +0 -231
  121. package/src/components/layouts/default/context.ts +0 -28
  122. package/src/components/layouts/default/hooks.ts +0 -13
  123. package/src/components/layouts/default/icons.tsx +0 -225
  124. package/src/components/layouts/default/index.ts +0 -11
  125. package/src/components/layouts/default/media-layout.tsx +0 -259
  126. package/src/components/layouts/default/slots.tsx +0 -98
  127. package/src/components/layouts/default/ui/announcer.tsx +0 -22
  128. package/src/components/layouts/default/ui/buttons.tsx +0 -301
  129. package/src/components/layouts/default/ui/captions.tsx +0 -16
  130. package/src/components/layouts/default/ui/controls.tsx +0 -12
  131. package/src/components/layouts/default/ui/keyboard-display.tsx +0 -132
  132. package/src/components/layouts/default/ui/menus/accessibility-menu.tsx +0 -100
  133. package/src/components/layouts/default/ui/menus/audio-menu.tsx +0 -167
  134. package/src/components/layouts/default/ui/menus/captions-menu.tsx +0 -61
  135. package/src/components/layouts/default/ui/menus/chapters-menu.tsx +0 -132
  136. package/src/components/layouts/default/ui/menus/font-menu.tsx +0 -331
  137. package/src/components/layouts/default/ui/menus/items/menu-checkbox.tsx +0 -72
  138. package/src/components/layouts/default/ui/menus/items/menu-items.tsx +0 -135
  139. package/src/components/layouts/default/ui/menus/items/menu-slider.tsx +0 -92
  140. package/src/components/layouts/default/ui/menus/playback-menu.tsx +0 -232
  141. package/src/components/layouts/default/ui/menus/settings-menu.tsx +0 -114
  142. package/src/components/layouts/default/ui/menus/utils.ts +0 -12
  143. package/src/components/layouts/default/ui/sliders.tsx +0 -136
  144. package/src/components/layouts/default/ui/time.tsx +0 -73
  145. package/src/components/layouts/default/ui/title.tsx +0 -24
  146. package/src/components/layouts/default/ui/tooltip.tsx +0 -27
  147. package/src/components/layouts/default/ui.ts +0 -8
  148. package/src/components/layouts/default/video-layout.tsx +0 -344
  149. package/src/components/layouts/plyr/context.ts +0 -26
  150. package/src/components/layouts/plyr/icons/plyr-airplay.js +0 -1
  151. package/src/components/layouts/plyr/icons/plyr-captions-off.js +0 -1
  152. package/src/components/layouts/plyr/icons/plyr-captions-on.js +0 -1
  153. package/src/components/layouts/plyr/icons/plyr-download.js +0 -1
  154. package/src/components/layouts/plyr/icons/plyr-enter-fullscreen.js +0 -1
  155. package/src/components/layouts/plyr/icons/plyr-exit-fullscreen.js +0 -1
  156. package/src/components/layouts/plyr/icons/plyr-fast-forward.js +0 -1
  157. package/src/components/layouts/plyr/icons/plyr-muted.js +0 -1
  158. package/src/components/layouts/plyr/icons/plyr-pause.js +0 -1
  159. package/src/components/layouts/plyr/icons/plyr-pip.js +0 -1
  160. package/src/components/layouts/plyr/icons/plyr-play.js +0 -1
  161. package/src/components/layouts/plyr/icons/plyr-restart.js +0 -1
  162. package/src/components/layouts/plyr/icons/plyr-rewind.js +0 -1
  163. package/src/components/layouts/plyr/icons/plyr-settings.js +0 -1
  164. package/src/components/layouts/plyr/icons/plyr-volume.js +0 -1
  165. package/src/components/layouts/plyr/icons.tsx +0 -71
  166. package/src/components/layouts/plyr/index.ts +0 -11
  167. package/src/components/layouts/plyr/layout.tsx +0 -1024
  168. package/src/components/layouts/plyr/props.ts +0 -104
  169. package/src/components/layouts/plyr/slots.tsx +0 -52
  170. package/src/components/layouts/remotion-ui.ts +0 -13
  171. package/src/components/layouts/utils.ts +0 -17
  172. package/src/components/player-callbacks.ts +0 -67
  173. package/src/components/player.tsx +0 -67
  174. package/src/components/primitives/instances.ts +0 -92
  175. package/src/components/primitives/nodes.tsx +0 -58
  176. package/src/components/primitives/slot.tsx +0 -132
  177. package/src/components/provider.tsx +0 -187
  178. package/src/components/text-track.tsx +0 -106
  179. package/src/components/ui/buttons/airplay-button.tsx +0 -53
  180. package/src/components/ui/buttons/caption-button.tsx +0 -55
  181. package/src/components/ui/buttons/fullscreen-button.tsx +0 -55
  182. package/src/components/ui/buttons/google-cast-button.tsx +0 -53
  183. package/src/components/ui/buttons/live-button.tsx +0 -56
  184. package/src/components/ui/buttons/mute-button.tsx +0 -60
  185. package/src/components/ui/buttons/pip-button.tsx +0 -54
  186. package/src/components/ui/buttons/play-button.tsx +0 -53
  187. package/src/components/ui/buttons/seek-button.tsx +0 -55
  188. package/src/components/ui/buttons/toggle-button.tsx +0 -51
  189. package/src/components/ui/caption.tsx +0 -70
  190. package/src/components/ui/captions.tsx +0 -41
  191. package/src/components/ui/chapter-title.tsx +0 -40
  192. package/src/components/ui/controls.tsx +0 -90
  193. package/src/components/ui/gesture.tsx +0 -43
  194. package/src/components/ui/menu.tsx +0 -251
  195. package/src/components/ui/poster.tsx +0 -101
  196. package/src/components/ui/radio-group.tsx +0 -88
  197. package/src/components/ui/sliders/audio-gain-slider.tsx +0 -55
  198. package/src/components/ui/sliders/quality-slider.tsx +0 -54
  199. package/src/components/ui/sliders/slider-callbacks.ts +0 -14
  200. package/src/components/ui/sliders/slider-value.tsx +0 -13
  201. package/src/components/ui/sliders/slider.tsx +0 -254
  202. package/src/components/ui/sliders/speed-slider.tsx +0 -54
  203. package/src/components/ui/sliders/time-slider.tsx +0 -379
  204. package/src/components/ui/sliders/volume-slider.tsx +0 -55
  205. package/src/components/ui/spinner.tsx +0 -105
  206. package/src/components/ui/thumbnail.tsx +0 -82
  207. package/src/components/ui/time.tsx +0 -77
  208. package/src/components/ui/title.tsx +0 -32
  209. package/src/components/ui/tooltip.tsx +0 -135
  210. package/src/globals.d.ts +0 -3
  211. package/src/hooks/create-text-track.ts +0 -22
  212. package/src/hooks/options/use-audio-gain-options.ts +0 -75
  213. package/src/hooks/options/use-audio-options.ts +0 -71
  214. package/src/hooks/options/use-caption-options.ts +0 -95
  215. package/src/hooks/options/use-chapter-options.ts +0 -97
  216. package/src/hooks/options/use-playback-rate-options.ts +0 -75
  217. package/src/hooks/options/use-video-quality-options.ts +0 -123
  218. package/src/hooks/use-active-text-cues.ts +0 -28
  219. package/src/hooks/use-active-text-track.ts +0 -19
  220. package/src/hooks/use-chapter-title.ts +0 -12
  221. package/src/hooks/use-dom.ts +0 -121
  222. package/src/hooks/use-media-context.ts +0 -6
  223. package/src/hooks/use-media-player.ts +0 -19
  224. package/src/hooks/use-media-provider.ts +0 -31
  225. package/src/hooks/use-media-remote.ts +0 -37
  226. package/src/hooks/use-media-state.ts +0 -58
  227. package/src/hooks/use-signals.ts +0 -24
  228. package/src/hooks/use-slider-preview.ts +0 -126
  229. package/src/hooks/use-slider-state.ts +0 -63
  230. package/src/hooks/use-state.ts +0 -47
  231. package/src/hooks/use-text-cues.ts +0 -33
  232. package/src/hooks/use-thumbnails.ts +0 -69
  233. package/src/icon.ts +0 -37
  234. package/src/icons.ts +0 -754
  235. package/src/index.ts +0 -181
  236. package/src/providers/remotion/index.ts +0 -10
  237. package/src/providers/remotion/layout-engine.ts +0 -123
  238. package/src/providers/remotion/loader.ts +0 -35
  239. package/src/providers/remotion/playback-engine.ts +0 -142
  240. package/src/providers/remotion/provider.tsx +0 -514
  241. package/src/providers/remotion/type-check.ts +0 -13
  242. package/src/providers/remotion/types.ts +0 -94
  243. package/src/providers/remotion/ui/context.tsx +0 -120
  244. package/src/providers/remotion/ui/error-boundary.tsx +0 -57
  245. package/src/providers/remotion/ui/poster.tsx +0 -33
  246. package/src/providers/remotion/ui/slider-thumbnail.tsx +0 -41
  247. package/src/providers/remotion/ui/thumbnail.tsx +0 -166
  248. package/src/providers/remotion/validate.ts +0 -220
  249. package/src/source.ts +0 -5
  250. package/src/utils.ts +0 -27
  251. package/tsconfig.build.json +0 -10
  252. package/tsconfig.json +0 -11
  253. package/types/react/src/components/announcer.d.ts +0 -16
  254. package/types/react/src/components/layouts/default/audio-layout.d.ts +0 -27
  255. package/types/react/src/components/layouts/default/context.d.ts +0 -14
  256. package/types/react/src/components/layouts/default/hooks.d.ts +0 -2
  257. package/types/react/src/components/layouts/default/icons.d.ts +0 -95
  258. package/types/react/src/components/layouts/default/index.d.ts +0 -5
  259. package/types/react/src/components/layouts/default/media-layout.d.ts +0 -133
  260. package/types/react/src/components/layouts/default/slots.d.ts +0 -22
  261. package/types/react/src/components/layouts/default/ui/announcer.d.ts +0 -6
  262. package/types/react/src/components/layouts/default/ui/buttons.d.ts +0 -54
  263. package/types/react/src/components/layouts/default/ui/captions.d.ts +0 -6
  264. package/types/react/src/components/layouts/default/ui/controls.d.ts +0 -6
  265. package/types/react/src/components/layouts/default/ui/keyboard-display.d.ts +0 -8
  266. package/types/react/src/components/layouts/default/ui/menus/accessibility-menu.d.ts +0 -10
  267. package/types/react/src/components/layouts/default/ui/menus/audio-menu.d.ts +0 -10
  268. package/types/react/src/components/layouts/default/ui/menus/captions-menu.d.ts +0 -10
  269. package/types/react/src/components/layouts/default/ui/menus/chapters-menu.d.ts +0 -7
  270. package/types/react/src/components/layouts/default/ui/menus/font-menu.d.ts +0 -6
  271. package/types/react/src/components/layouts/default/ui/menus/items/menu-checkbox.d.ts +0 -13
  272. package/types/react/src/components/layouts/default/ui/menus/items/menu-items.d.ts +0 -49
  273. package/types/react/src/components/layouts/default/ui/menus/items/menu-slider.d.ts +0 -26
  274. package/types/react/src/components/layouts/default/ui/menus/playback-menu.d.ts +0 -10
  275. package/types/react/src/components/layouts/default/ui/menus/settings-menu.d.ts +0 -15
  276. package/types/react/src/components/layouts/default/ui/menus/utils.d.ts +0 -1
  277. package/types/react/src/components/layouts/default/ui/sliders.d.ts +0 -24
  278. package/types/react/src/components/layouts/default/ui/time.d.ts +0 -30
  279. package/types/react/src/components/layouts/default/ui/title.d.ts +0 -6
  280. package/types/react/src/components/layouts/default/ui/tooltip.d.ts +0 -12
  281. package/types/react/src/components/layouts/default/ui.d.ts +0 -8
  282. package/types/react/src/components/layouts/default/video-layout.d.ts +0 -47
  283. package/types/react/src/components/layouts/plyr/context.d.ts +0 -12
  284. package/types/react/src/components/layouts/plyr/icons/plyr-airplay.d.ts +0 -2
  285. package/types/react/src/components/layouts/plyr/icons/plyr-captions-off.d.ts +0 -2
  286. package/types/react/src/components/layouts/plyr/icons/plyr-captions-on.d.ts +0 -2
  287. package/types/react/src/components/layouts/plyr/icons/plyr-download.d.ts +0 -2
  288. package/types/react/src/components/layouts/plyr/icons/plyr-enter-fullscreen.d.ts +0 -2
  289. package/types/react/src/components/layouts/plyr/icons/plyr-exit-fullscreen.d.ts +0 -2
  290. package/types/react/src/components/layouts/plyr/icons/plyr-fast-forward.d.ts +0 -2
  291. package/types/react/src/components/layouts/plyr/icons/plyr-muted.d.ts +0 -2
  292. package/types/react/src/components/layouts/plyr/icons/plyr-pause.d.ts +0 -2
  293. package/types/react/src/components/layouts/plyr/icons/plyr-pip.d.ts +0 -2
  294. package/types/react/src/components/layouts/plyr/icons/plyr-play.d.ts +0 -2
  295. package/types/react/src/components/layouts/plyr/icons/plyr-restart.d.ts +0 -2
  296. package/types/react/src/components/layouts/plyr/icons/plyr-rewind.d.ts +0 -2
  297. package/types/react/src/components/layouts/plyr/icons/plyr-settings.d.ts +0 -2
  298. package/types/react/src/components/layouts/plyr/icons/plyr-volume.d.ts +0 -2
  299. package/types/react/src/components/layouts/plyr/icons.d.ts +0 -25
  300. package/types/react/src/components/layouts/plyr/index.d.ts +0 -6
  301. package/types/react/src/components/layouts/plyr/layout.d.ts +0 -17
  302. package/types/react/src/components/layouts/plyr/props.d.ts +0 -71
  303. package/types/react/src/components/layouts/plyr/slots.d.ts +0 -9
  304. package/types/react/src/components/layouts/remotion-ui.d.ts +0 -3
  305. package/types/react/src/components/layouts/utils.d.ts +0 -1
  306. package/types/react/src/components/player-callbacks.d.ts +0 -6
  307. package/types/react/src/components/player.d.ts +0 -32
  308. package/types/react/src/components/primitives/instances.d.ts +0 -83
  309. package/types/react/src/components/primitives/nodes.d.ts +0 -15
  310. package/types/react/src/components/primitives/slot.d.ts +0 -11
  311. package/types/react/src/components/provider.d.ts +0 -26
  312. package/types/react/src/components/text-track.d.ts +0 -100
  313. package/types/react/src/components/ui/buttons/airplay-button.d.ts +0 -22
  314. package/types/react/src/components/ui/buttons/caption-button.d.ts +0 -24
  315. package/types/react/src/components/ui/buttons/fullscreen-button.d.ts +0 -24
  316. package/types/react/src/components/ui/buttons/google-cast-button.d.ts +0 -22
  317. package/types/react/src/components/ui/buttons/live-button.d.ts +0 -26
  318. package/types/react/src/components/ui/buttons/mute-button.d.ts +0 -30
  319. package/types/react/src/components/ui/buttons/pip-button.d.ts +0 -24
  320. package/types/react/src/components/ui/buttons/play-button.d.ts +0 -23
  321. package/types/react/src/components/ui/buttons/seek-button.d.ts +0 -25
  322. package/types/react/src/components/ui/buttons/toggle-button.d.ts +0 -22
  323. package/types/react/src/components/ui/caption.d.ts +0 -11
  324. package/types/react/src/components/ui/captions.d.ts +0 -20
  325. package/types/react/src/components/ui/chapter-title.d.ts +0 -20
  326. package/types/react/src/components/ui/controls.d.ts +0 -40
  327. package/types/react/src/components/ui/gesture.d.ts +0 -20
  328. package/types/react/src/components/ui/menu.d.ts +0 -102
  329. package/types/react/src/components/ui/poster.d.ts +0 -25
  330. package/types/react/src/components/ui/radio-group.d.ts +0 -39
  331. package/types/react/src/components/ui/sliders/audio-gain-slider.d.ts +0 -29
  332. package/types/react/src/components/ui/sliders/quality-slider.d.ts +0 -28
  333. package/types/react/src/components/ui/sliders/slider-callbacks.d.ts +0 -6
  334. package/types/react/src/components/ui/sliders/slider-value.d.ts +0 -9
  335. package/types/react/src/components/ui/sliders/slider.d.ts +0 -134
  336. package/types/react/src/components/ui/sliders/speed-slider.d.ts +0 -28
  337. package/types/react/src/components/ui/sliders/time-slider.d.ts +0 -124
  338. package/types/react/src/components/ui/sliders/volume-slider.d.ts +0 -29
  339. package/types/react/src/components/ui/spinner.d.ts +0 -31
  340. package/types/react/src/components/ui/thumbnail.d.ts +0 -26
  341. package/types/react/src/components/ui/time.d.ts +0 -20
  342. package/types/react/src/components/ui/title.d.ts +0 -15
  343. package/types/react/src/components/ui/tooltip.d.ts +0 -63
  344. package/types/react/src/hooks/create-text-track.d.ts +0 -7
  345. package/types/react/src/hooks/options/use-audio-gain-options.d.ts +0 -22
  346. package/types/react/src/hooks/options/use-audio-options.d.ts +0 -17
  347. package/types/react/src/hooks/options/use-caption-options.d.ts +0 -24
  348. package/types/react/src/hooks/options/use-chapter-options.d.ts +0 -18
  349. package/types/react/src/hooks/options/use-playback-rate-options.d.ts +0 -22
  350. package/types/react/src/hooks/options/use-video-quality-options.d.ts +0 -35
  351. package/types/react/src/hooks/use-active-text-cues.d.ts +0 -6
  352. package/types/react/src/hooks/use-active-text-track.d.ts +0 -5
  353. package/types/react/src/hooks/use-chapter-title.d.ts +0 -4
  354. package/types/react/src/hooks/use-dom.d.ts +0 -9
  355. package/types/react/src/hooks/use-media-context.d.ts +0 -1
  356. package/types/react/src/hooks/use-media-player.d.ts +0 -7
  357. package/types/react/src/hooks/use-media-provider.d.ts +0 -7
  358. package/types/react/src/hooks/use-media-remote.d.ts +0 -12
  359. package/types/react/src/hooks/use-media-state.d.ts +0 -15
  360. package/types/react/src/hooks/use-signals.d.ts +0 -5
  361. package/types/react/src/hooks/use-slider-preview.d.ts +0 -27
  362. package/types/react/src/hooks/use-slider-state.d.ts +0 -16
  363. package/types/react/src/hooks/use-state.d.ts +0 -18
  364. package/types/react/src/hooks/use-text-cues.d.ts +0 -6
  365. package/types/react/src/hooks/use-thumbnails.d.ts +0 -16
  366. package/types/react/src/icon.d.ts +0 -17
  367. package/types/react/src/icons.d.ts +0 -215
  368. package/types/react/src/index.d.ts +0 -78
  369. package/types/react/src/providers/remotion/index.d.ts +0 -7
  370. package/types/react/src/providers/remotion/layout-engine.d.ts +0 -8
  371. package/types/react/src/providers/remotion/loader.d.ts +0 -9
  372. package/types/react/src/providers/remotion/playback-engine.d.ts +0 -11
  373. package/types/react/src/providers/remotion/provider.d.ts +0 -26
  374. package/types/react/src/providers/remotion/type-check.d.ts +0 -6
  375. package/types/react/src/providers/remotion/types.d.ts +0 -91
  376. package/types/react/src/providers/remotion/ui/context.d.ts +0 -17
  377. package/types/react/src/providers/remotion/ui/error-boundary.d.ts +0 -21
  378. package/types/react/src/providers/remotion/ui/poster.d.ts +0 -18
  379. package/types/react/src/providers/remotion/ui/slider-thumbnail.d.ts +0 -17
  380. package/types/react/src/providers/remotion/ui/thumbnail.d.ts +0 -32
  381. package/types/react/src/providers/remotion/validate.d.ts +0 -12
  382. package/types/react/src/source.d.ts +0 -3
  383. package/types/react/src/utils.d.ts +0 -3
  384. package/types/vidstack/src/core/api/src-types.d.ts +0 -50
  385. package/types/vidstack/src/utils/mime.d.ts +0 -15
  386. package/types/vidstack/src/utils/network.d.ts +0 -17
  387. package/types/vidstack/src/utils/support.d.ts +0 -72
  388. package/vite.config.ts +0 -23
  389. /package/{npm/analyze.json.d.ts → analyze.json.d.ts} +0 -0
@@ -1,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 };