@hanifhan1f/vidstack 1.12.13

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 (746) hide show
  1. package/.templates/sandbox/favicon-32x32.png +0 -0
  2. package/.templates/sandbox/index.html +42 -0
  3. package/.templates/sandbox/main.ts +137 -0
  4. package/.templates/sandbox/styles.css +68 -0
  5. package/LICENSE +21 -0
  6. package/README.md +22 -0
  7. package/analyze.config.ts +133 -0
  8. package/build/build-styles.js +33 -0
  9. package/build/rollup-decorators.ts +102 -0
  10. package/build/rollup-minify.js +20 -0
  11. package/build/rollup-ts.js +57 -0
  12. package/npm/analyze.json.d.ts +8 -0
  13. package/npm/bundle.d.ts +1 -0
  14. package/npm/dom.d.ts +91 -0
  15. package/npm/empty.vtt +1 -0
  16. package/npm/google-cast.d.ts +1422 -0
  17. package/npm/player/index.d.ts +3 -0
  18. package/npm/player/layouts/default.d.ts +3 -0
  19. package/npm/player/layouts/index.d.ts +3 -0
  20. package/npm/player/layouts/plyr.d.ts +3 -0
  21. package/npm/player/ui.d.ts +3 -0
  22. package/npm/tailwind.cjs +101 -0
  23. package/npm/tailwind.d.cts +15 -0
  24. package/package.json +283 -0
  25. package/rollup.config.ts +442 -0
  26. package/src/components/aria/announcer.ts +181 -0
  27. package/src/components/layouts/default/audio-layout.ts +20 -0
  28. package/src/components/layouts/default/context.ts +15 -0
  29. package/src/components/layouts/default/default-layout.ts +67 -0
  30. package/src/components/layouts/default/props.ts +143 -0
  31. package/src/components/layouts/default/translations.ts +70 -0
  32. package/src/components/layouts/default/video-layout.ts +20 -0
  33. package/src/components/layouts/plyr/context.ts +13 -0
  34. package/src/components/layouts/plyr/plyr-layout.ts +90 -0
  35. package/src/components/layouts/plyr/props.ts +114 -0
  36. package/src/components/layouts/plyr/translations.ts +53 -0
  37. package/src/components/player.ts +758 -0
  38. package/src/components/provider/provider.ts +184 -0
  39. package/src/components/provider/source-select.ts +378 -0
  40. package/src/components/provider/tracks.ts +37 -0
  41. package/src/components/ui/buttons/airplay-button.ts +74 -0
  42. package/src/components/ui/buttons/caption-button.ts +68 -0
  43. package/src/components/ui/buttons/fullscreen-button.ts +90 -0
  44. package/src/components/ui/buttons/google-cast-button.ts +75 -0
  45. package/src/components/ui/buttons/live-button.ts +76 -0
  46. package/src/components/ui/buttons/mute-button.ts +69 -0
  47. package/src/components/ui/buttons/pip-button.ts +71 -0
  48. package/src/components/ui/buttons/play-button.ts +62 -0
  49. package/src/components/ui/buttons/seek-button.ts +92 -0
  50. package/src/components/ui/buttons/toggle-button-controller.ts +92 -0
  51. package/src/components/ui/buttons/toggle-button.ts +49 -0
  52. package/src/components/ui/captions/captions-renderer.ts +63 -0
  53. package/src/components/ui/captions/captions.ts +227 -0
  54. package/src/components/ui/controls-group.ts +13 -0
  55. package/src/components/ui/controls.ts +101 -0
  56. package/src/components/ui/gesture.ts +252 -0
  57. package/src/components/ui/menu/menu-button.ts +95 -0
  58. package/src/components/ui/menu/menu-context.ts +27 -0
  59. package/src/components/ui/menu/menu-focus-controller.ts +205 -0
  60. package/src/components/ui/menu/menu-item.ts +9 -0
  61. package/src/components/ui/menu/menu-items.ts +129 -0
  62. package/src/components/ui/menu/menu-portal.ts +105 -0
  63. package/src/components/ui/menu/menu.ts +612 -0
  64. package/src/components/ui/menu/radio/radio-controller.ts +18 -0
  65. package/src/components/ui/menu/radio/radio-group-controller.ts +81 -0
  66. package/src/components/ui/menu/radio/radio-group.ts +78 -0
  67. package/src/components/ui/menu/radio/radio.ts +151 -0
  68. package/src/components/ui/menu/radio-groups/audio-gain-radio-group.ts +116 -0
  69. package/src/components/ui/menu/radio-groups/audio-radio-group.ts +121 -0
  70. package/src/components/ui/menu/radio-groups/captions-radio-group.ts +153 -0
  71. package/src/components/ui/menu/radio-groups/chapters-radio-group.ts +211 -0
  72. package/src/components/ui/menu/radio-groups/quality-radio-group.ts +181 -0
  73. package/src/components/ui/menu/radio-groups/speed-radio-group.ts +112 -0
  74. package/src/components/ui/popper/popper.ts +103 -0
  75. package/src/components/ui/poster.ts +187 -0
  76. package/src/components/ui/sliders/audio-gain-slider.ts +150 -0
  77. package/src/components/ui/sliders/quality-slider.ts +148 -0
  78. package/src/components/ui/sliders/slider/api/cssvars.ts +10 -0
  79. package/src/components/ui/sliders/slider/api/events.ts +65 -0
  80. package/src/components/ui/sliders/slider/api/state.ts +101 -0
  81. package/src/components/ui/sliders/slider/events-controller.ts +383 -0
  82. package/src/components/ui/sliders/slider/format.ts +12 -0
  83. package/src/components/ui/sliders/slider/slider-context.ts +18 -0
  84. package/src/components/ui/sliders/slider/slider-controller.ts +211 -0
  85. package/src/components/ui/sliders/slider/slider.ts +94 -0
  86. package/src/components/ui/sliders/slider/types.ts +1 -0
  87. package/src/components/ui/sliders/slider/utils.ts +14 -0
  88. package/src/components/ui/sliders/slider-preview.ts +131 -0
  89. package/src/components/ui/sliders/slider-thumbnail.ts +28 -0
  90. package/src/components/ui/sliders/slider-value.ts +122 -0
  91. package/src/components/ui/sliders/slider-video.ts +198 -0
  92. package/src/components/ui/sliders/speed-slider.ts +147 -0
  93. package/src/components/ui/sliders/time-slider/slider-chapters.ts +444 -0
  94. package/src/components/ui/sliders/time-slider/time-slider.ts +319 -0
  95. package/src/components/ui/sliders/volume-slider.ts +145 -0
  96. package/src/components/ui/thumbnails/thumbnail-loader.ts +324 -0
  97. package/src/components/ui/thumbnails/thumbnail.ts +244 -0
  98. package/src/components/ui/time.ts +191 -0
  99. package/src/components/ui/tooltip/tooltip-content.ts +105 -0
  100. package/src/components/ui/tooltip/tooltip-context.ts +13 -0
  101. package/src/components/ui/tooltip/tooltip-trigger.ts +49 -0
  102. package/src/components/ui/tooltip/tooltip.ts +127 -0
  103. package/src/core/api/media-attrs.ts +35 -0
  104. package/src/core/api/media-context.ts +52 -0
  105. package/src/core/api/media-events.ts +601 -0
  106. package/src/core/api/media-request-events.ts +323 -0
  107. package/src/core/api/player-controller.ts +10 -0
  108. package/src/core/api/player-events.ts +49 -0
  109. package/src/core/api/player-props.ts +233 -0
  110. package/src/core/api/player-state.ts +940 -0
  111. package/src/core/api/src-types.ts +97 -0
  112. package/src/core/api/types.ts +69 -0
  113. package/src/core/controls.ts +251 -0
  114. package/src/core/font/font-options.ts +106 -0
  115. package/src/core/font/font-vars.ts +107 -0
  116. package/src/core/keyboard/aria-shortcuts.ts +42 -0
  117. package/src/core/keyboard/controller.ts +302 -0
  118. package/src/core/keyboard/types.ts +40 -0
  119. package/src/core/quality/events.ts +48 -0
  120. package/src/core/quality/symbols.ts +8 -0
  121. package/src/core/quality/utils.ts +13 -0
  122. package/src/core/quality/video-quality.ts +86 -0
  123. package/src/core/state/media-events-logger.ts +67 -0
  124. package/src/core/state/media-load-controller.ts +40 -0
  125. package/src/core/state/media-player-delegate.ts +170 -0
  126. package/src/core/state/media-request-manager.ts +952 -0
  127. package/src/core/state/media-state-manager.ts +1077 -0
  128. package/src/core/state/media-state-sync.ts +162 -0
  129. package/src/core/state/media-storage.ts +196 -0
  130. package/src/core/state/navigator-media-session.ts +62 -0
  131. package/src/core/state/remote-control.ts +584 -0
  132. package/src/core/state/tracked-media-events.ts +22 -0
  133. package/src/core/time-ranges.ts +130 -0
  134. package/src/core/tracks/audio/audio-tracks.ts +33 -0
  135. package/src/core/tracks/audio/events.ts +41 -0
  136. package/src/core/tracks/text/events.ts +52 -0
  137. package/src/core/tracks/text/render/libass-text-renderer.ts +246 -0
  138. package/src/core/tracks/text/render/native-text-renderer.ts +106 -0
  139. package/src/core/tracks/text/render/text-renderer.ts +134 -0
  140. package/src/core/tracks/text/symbols.ts +17 -0
  141. package/src/core/tracks/text/text-track.test.ts +407 -0
  142. package/src/core/tracks/text/text-track.ts +413 -0
  143. package/src/core/tracks/text/text-tracks.ts +210 -0
  144. package/src/core/tracks/text/utils.ts +85 -0
  145. package/src/elements/bundles/cdn/player.core.ts +6 -0
  146. package/src/elements/bundles/cdn/player.ts +8 -0
  147. package/src/elements/bundles/cdn/plyr.ts +6 -0
  148. package/src/elements/bundles/cdn-legacy/player-with-default.ts +4 -0
  149. package/src/elements/bundles/cdn-legacy/player-with-layouts.ts +4 -0
  150. package/src/elements/bundles/cdn-legacy/player-with-plyr.ts +3 -0
  151. package/src/elements/bundles/cdn-legacy/player.ts +3 -0
  152. package/src/elements/bundles/icons.ts +3 -0
  153. package/src/elements/bundles/player-layouts/default.ts +7 -0
  154. package/src/elements/bundles/player-layouts/index.ts +9 -0
  155. package/src/elements/bundles/player-layouts/plyr.ts +65 -0
  156. package/src/elements/bundles/player-ui.ts +108 -0
  157. package/src/elements/bundles/player.ts +7 -0
  158. package/src/elements/define/announcer-element.ts +20 -0
  159. package/src/elements/define/buttons/airplay-button-element.ts +21 -0
  160. package/src/elements/define/buttons/caption-button-element.ts +22 -0
  161. package/src/elements/define/buttons/fullscreen-button-element.ts +22 -0
  162. package/src/elements/define/buttons/google-cast-button-element.ts +21 -0
  163. package/src/elements/define/buttons/live-button-element.ts +22 -0
  164. package/src/elements/define/buttons/mute-button-element.ts +23 -0
  165. package/src/elements/define/buttons/pip-button-element.ts +22 -0
  166. package/src/elements/define/buttons/play-button-element.ts +23 -0
  167. package/src/elements/define/buttons/seek-button-element.ts +26 -0
  168. package/src/elements/define/buttons/toggle-button-element.ts +21 -0
  169. package/src/elements/define/captions-element.ts +20 -0
  170. package/src/elements/define/chapter-title-element.ts +54 -0
  171. package/src/elements/define/controls-element.ts +26 -0
  172. package/src/elements/define/controls-group-element.ts +26 -0
  173. package/src/elements/define/gesture-element.ts +24 -0
  174. package/src/elements/define/layouts/default/audio-layout-element.ts +137 -0
  175. package/src/elements/define/layouts/default/audio-layout.ts +113 -0
  176. package/src/elements/define/layouts/default/icons-loader.ts +17 -0
  177. package/src/elements/define/layouts/default/icons.ts +86 -0
  178. package/src/elements/define/layouts/default/slots.ts +12 -0
  179. package/src/elements/define/layouts/default/ui/announcer.ts +14 -0
  180. package/src/elements/define/layouts/default/ui/buttons.ts +291 -0
  181. package/src/elements/define/layouts/default/ui/captions.ts +14 -0
  182. package/src/elements/define/layouts/default/ui/controls.ts +5 -0
  183. package/src/elements/define/layouts/default/ui/keyboard-display.ts +114 -0
  184. package/src/elements/define/layouts/default/ui/menu/accessibility-menu.ts +79 -0
  185. package/src/elements/define/layouts/default/ui/menu/audio-menu.ts +135 -0
  186. package/src/elements/define/layouts/default/ui/menu/captions-menu.ts +114 -0
  187. package/src/elements/define/layouts/default/ui/menu/chapters-menu.ts +117 -0
  188. package/src/elements/define/layouts/default/ui/menu/episodes-menu.ts +133 -0
  189. package/src/elements/define/layouts/default/ui/menu/font-menu.ts +253 -0
  190. package/src/elements/define/layouts/default/ui/menu/items/menu-checkbox.ts +67 -0
  191. package/src/elements/define/layouts/default/ui/menu/items/menu-items.ts +108 -0
  192. package/src/elements/define/layouts/default/ui/menu/items/menu-slider.ts +59 -0
  193. package/src/elements/define/layouts/default/ui/menu/menu-portal.ts +56 -0
  194. package/src/elements/define/layouts/default/ui/menu/playback-menu.ts +183 -0
  195. package/src/elements/define/layouts/default/ui/menu/settings-menu.ts +98 -0
  196. package/src/elements/define/layouts/default/ui/slider.ts +112 -0
  197. package/src/elements/define/layouts/default/ui/time.ts +41 -0
  198. package/src/elements/define/layouts/default/ui/title.ts +25 -0
  199. package/src/elements/define/layouts/default/ui/utils.ts +10 -0
  200. package/src/elements/define/layouts/default/video-layout-element.ts +125 -0
  201. package/src/elements/define/layouts/default/video-layout.ts +353 -0
  202. package/src/elements/define/layouts/icons/icons-loader.ts +47 -0
  203. package/src/elements/define/layouts/icons/layout-icons-loader.ts +24 -0
  204. package/src/elements/define/layouts/layout-element.ts +78 -0
  205. package/src/elements/define/layouts/layout-name.ts +15 -0
  206. package/src/elements/define/layouts/plyr/icons/plyr-airplay.js +1 -0
  207. package/src/elements/define/layouts/plyr/icons/plyr-captions-off.js +1 -0
  208. package/src/elements/define/layouts/plyr/icons/plyr-captions-on.js +1 -0
  209. package/src/elements/define/layouts/plyr/icons/plyr-download.js +1 -0
  210. package/src/elements/define/layouts/plyr/icons/plyr-enter-fullscreen.js +1 -0
  211. package/src/elements/define/layouts/plyr/icons/plyr-exit-fullscreen.js +1 -0
  212. package/src/elements/define/layouts/plyr/icons/plyr-fast-forward.js +1 -0
  213. package/src/elements/define/layouts/plyr/icons/plyr-muted.js +1 -0
  214. package/src/elements/define/layouts/plyr/icons/plyr-pause.js +1 -0
  215. package/src/elements/define/layouts/plyr/icons/plyr-pip.js +1 -0
  216. package/src/elements/define/layouts/plyr/icons/plyr-play.js +1 -0
  217. package/src/elements/define/layouts/plyr/icons/plyr-restart.js +1 -0
  218. package/src/elements/define/layouts/plyr/icons/plyr-rewind.js +1 -0
  219. package/src/elements/define/layouts/plyr/icons/plyr-settings.js +1 -0
  220. package/src/elements/define/layouts/plyr/icons/plyr-volume.js +1 -0
  221. package/src/elements/define/layouts/plyr/icons-loader.ts +21 -0
  222. package/src/elements/define/layouts/plyr/icons.ts +34 -0
  223. package/src/elements/define/layouts/plyr/plyr-layout-element.ts +67 -0
  224. package/src/elements/define/layouts/plyr/ui.ts +657 -0
  225. package/src/elements/define/layouts/slot-manager.ts +61 -0
  226. package/src/elements/define/layouts/slot-observer.ts +70 -0
  227. package/src/elements/define/menus/_template.ts +47 -0
  228. package/src/elements/define/menus/audio-gain-group-element.ts +37 -0
  229. package/src/elements/define/menus/audio-radio-group-element.ts +37 -0
  230. package/src/elements/define/menus/captions-radio-group-element.ts +37 -0
  231. package/src/elements/define/menus/chapters-radio-group-element.ts +68 -0
  232. package/src/elements/define/menus/menu-button-element.ts +27 -0
  233. package/src/elements/define/menus/menu-element.ts +28 -0
  234. package/src/elements/define/menus/menu-item-element.ts +24 -0
  235. package/src/elements/define/menus/menu-items-element.ts +27 -0
  236. package/src/elements/define/menus/menu-portal-element.ts +35 -0
  237. package/src/elements/define/menus/quality-radio-group-element.ts +51 -0
  238. package/src/elements/define/menus/radio-element.ts +24 -0
  239. package/src/elements/define/menus/radio-group-element.ts +24 -0
  240. package/src/elements/define/menus/speed-radio-group-element.ts +37 -0
  241. package/src/elements/define/player-element.ts +33 -0
  242. package/src/elements/define/poster-element.ts +53 -0
  243. package/src/elements/define/provider-cast-display.ts +36 -0
  244. package/src/elements/define/provider-element.ts +158 -0
  245. package/src/elements/define/sliders/audio-gain-slider-element.ts +34 -0
  246. package/src/elements/define/sliders/quality-slider-element.ts +34 -0
  247. package/src/elements/define/sliders/slider-chapters-element.ts +53 -0
  248. package/src/elements/define/sliders/slider-element.ts +25 -0
  249. package/src/elements/define/sliders/slider-preview-element.ts +16 -0
  250. package/src/elements/define/sliders/slider-steps-element.ts +50 -0
  251. package/src/elements/define/sliders/slider-thumbnail-element.ts +48 -0
  252. package/src/elements/define/sliders/slider-value-element.ts +49 -0
  253. package/src/elements/define/sliders/slider-video-element.ts +59 -0
  254. package/src/elements/define/sliders/speed-slider-element.ts +34 -0
  255. package/src/elements/define/sliders/time-slider-element.ts +34 -0
  256. package/src/elements/define/sliders/volume-slider-element.ts +34 -0
  257. package/src/elements/define/spinner-element.ts +96 -0
  258. package/src/elements/define/thumbnail-element.ts +63 -0
  259. package/src/elements/define/time-element.ts +32 -0
  260. package/src/elements/define/title-element.ts +38 -0
  261. package/src/elements/define/tooltips/tooltip-content-element.ts +28 -0
  262. package/src/elements/define/tooltips/tooltip-element.ts +28 -0
  263. package/src/elements/define/tooltips/tooltip-trigger-element.ts +32 -0
  264. package/src/elements/icon.ts +30 -0
  265. package/src/elements/index.ts +71 -0
  266. package/src/elements/lit/directives/signal.ts +80 -0
  267. package/src/elements/lit/html.ts +11 -0
  268. package/src/elements/lit/lit-element.ts +23 -0
  269. package/src/elements/state-controller.ts +48 -0
  270. package/src/exports/components.ts +79 -0
  271. package/src/exports/core.ts +41 -0
  272. package/src/exports/events.ts +46 -0
  273. package/src/exports/font.ts +3 -0
  274. package/src/exports/foundation.ts +8 -0
  275. package/src/exports/maverick.ts +9 -0
  276. package/src/exports/providers.ts +42 -0
  277. package/src/exports/utils.ts +18 -0
  278. package/src/foundation/fullscreen/controller.ts +128 -0
  279. package/src/foundation/fullscreen/events.ts +26 -0
  280. package/src/foundation/list/list.ts +127 -0
  281. package/src/foundation/list/select-list.ts +86 -0
  282. package/src/foundation/list/symbols.ts +22 -0
  283. package/src/foundation/logger/colors.ts +33 -0
  284. package/src/foundation/logger/controller.ts +71 -0
  285. package/src/foundation/logger/events.ts +29 -0
  286. package/src/foundation/logger/grouped-log.ts +44 -0
  287. package/src/foundation/logger/log-level.ts +17 -0
  288. package/src/foundation/logger/log-printer.ts +119 -0
  289. package/src/foundation/logger/ms.ts +31 -0
  290. package/src/foundation/observers/focus-visible.ts +74 -0
  291. package/src/foundation/observers/intersection-observer.ts +60 -0
  292. package/src/foundation/observers/page-visibility.ts +105 -0
  293. package/src/foundation/observers/raf-loop.ts +29 -0
  294. package/src/foundation/orientation/controller.ts +139 -0
  295. package/src/foundation/orientation/events.ts +20 -0
  296. package/src/foundation/orientation/types.ts +96 -0
  297. package/src/foundation/queue/queue.ts +41 -0
  298. package/src/foundation/queue/request-queue.test.ts +139 -0
  299. package/src/foundation/queue/request-queue.ts +94 -0
  300. package/src/global/layouts/default.ts +28 -0
  301. package/src/global/layouts/loader.ts +5 -0
  302. package/src/global/layouts/plyr.ts +24 -0
  303. package/src/global/player.ts +144 -0
  304. package/src/global/plyr.ts +917 -0
  305. package/src/globals.d.ts +11 -0
  306. package/src/index.ts +10 -0
  307. package/src/plugins.ts +369 -0
  308. package/src/providers/audio/loader.ts +45 -0
  309. package/src/providers/audio/provider.ts +50 -0
  310. package/src/providers/dash/dash.ts +417 -0
  311. package/src/providers/dash/events.ts +585 -0
  312. package/src/providers/dash/lib-loader.ts +202 -0
  313. package/src/providers/dash/loader.ts +33 -0
  314. package/src/providers/dash/provider.ts +135 -0
  315. package/src/providers/dash/types.ts +21 -0
  316. package/src/providers/embed/EmbedProvider.ts +84 -0
  317. package/src/providers/google-cast/events.ts +53 -0
  318. package/src/providers/google-cast/loader.ts +174 -0
  319. package/src/providers/google-cast/media-info.ts +49 -0
  320. package/src/providers/google-cast/provider.ts +483 -0
  321. package/src/providers/google-cast/tracks.ts +170 -0
  322. package/src/providers/google-cast/types.ts +3 -0
  323. package/src/providers/google-cast/utils.ts +112 -0
  324. package/src/providers/hls/events.ts +472 -0
  325. package/src/providers/hls/hls.ts +290 -0
  326. package/src/providers/hls/lib-loader.ts +178 -0
  327. package/src/providers/hls/loader.ts +33 -0
  328. package/src/providers/hls/provider.ts +137 -0
  329. package/src/providers/hls/types.ts +10 -0
  330. package/src/providers/html/audio/audio-context.ts +60 -0
  331. package/src/providers/html/audio/audio-gain.ts +100 -0
  332. package/src/providers/html/html/342/200/223media-events.ts +338 -0
  333. package/src/providers/html/native-audio-tracks.ts +91 -0
  334. package/src/providers/html/provider.ts +141 -0
  335. package/src/providers/html/remote-playback.ts +94 -0
  336. package/src/providers/type-check.ts +61 -0
  337. package/src/providers/types.ts +95 -0
  338. package/src/providers/video/loader.ts +45 -0
  339. package/src/providers/video/native-hls-text-tracks.ts +69 -0
  340. package/src/providers/video/picture-in-picture.ts +54 -0
  341. package/src/providers/video/presentation/events.ts +12 -0
  342. package/src/providers/video/presentation/video-presentation.ts +110 -0
  343. package/src/providers/video/provider.ts +91 -0
  344. package/src/providers/vimeo/embed/command.ts +118 -0
  345. package/src/providers/vimeo/embed/event.ts +124 -0
  346. package/src/providers/vimeo/embed/message.ts +9 -0
  347. package/src/providers/vimeo/embed/misc.ts +57 -0
  348. package/src/providers/vimeo/embed/params.ts +168 -0
  349. package/src/providers/vimeo/loader.ts +61 -0
  350. package/src/providers/vimeo/provider.ts +730 -0
  351. package/src/providers/vimeo/utils.ts +53 -0
  352. package/src/providers/youtube/embed/command.ts +21 -0
  353. package/src/providers/youtube/embed/event.ts +1 -0
  354. package/src/providers/youtube/embed/message.ts +54 -0
  355. package/src/providers/youtube/embed/params.ts +238 -0
  356. package/src/providers/youtube/embed/quality.ts +35 -0
  357. package/src/providers/youtube/embed/state.ts +13 -0
  358. package/src/providers/youtube/loader.ts +61 -0
  359. package/src/providers/youtube/provider.ts +403 -0
  360. package/src/providers/youtube/utils.ts +45 -0
  361. package/src/tailwind.test.ts +413 -0
  362. package/src/test-utils/index.ts +22 -0
  363. package/src/test-utils/setup.ts +3 -0
  364. package/src/utils/aria.ts +14 -0
  365. package/src/utils/array.ts +3 -0
  366. package/src/utils/color.ts +5 -0
  367. package/src/utils/dom.ts +458 -0
  368. package/src/utils/error.ts +11 -0
  369. package/src/utils/language.ts +16 -0
  370. package/src/utils/manifest.ts +61 -0
  371. package/src/utils/mime.ts +101 -0
  372. package/src/utils/network.ts +118 -0
  373. package/src/utils/number.ts +25 -0
  374. package/src/utils/promise.ts +12 -0
  375. package/src/utils/scroll.ts +19 -0
  376. package/src/utils/support.ts +163 -0
  377. package/src/utils/time.test.ts +111 -0
  378. package/src/utils/time.ts +123 -0
  379. package/styles/player/base.css +153 -0
  380. package/styles/player/default/buffering.css +55 -0
  381. package/styles/player/default/buttons.css +175 -0
  382. package/styles/player/default/captions.css +181 -0
  383. package/styles/player/default/chapter-title.css +26 -0
  384. package/styles/player/default/controls.css +56 -0
  385. package/styles/player/default/gestures.css +19 -0
  386. package/styles/player/default/icons.css +6 -0
  387. package/styles/player/default/keyboard.css +148 -0
  388. package/styles/player/default/layouts/audio.css +417 -0
  389. package/styles/player/default/layouts/video.css +1082 -0
  390. package/styles/player/default/menus.css +959 -0
  391. package/styles/player/default/poster.css +52 -0
  392. package/styles/player/default/sliders.css +391 -0
  393. package/styles/player/default/theme.css +2461 -0
  394. package/styles/player/default/thumbnail.css +40 -0
  395. package/styles/player/default/time.css +45 -0
  396. package/styles/player/default/tooltips.css +141 -0
  397. package/styles/player/plyr/theme.css +1237 -0
  398. package/tsconfig.build.json +9 -0
  399. package/tsconfig.json +11 -0
  400. package/types/components/aria/announcer.d.ts +27 -0
  401. package/types/components/layouts/default/audio-layout.d.ts +15 -0
  402. package/types/components/layouts/default/context.d.ts +9 -0
  403. package/types/components/layouts/default/default-layout.d.ts +10 -0
  404. package/types/components/layouts/default/props.d.ts +125 -0
  405. package/types/components/layouts/default/translations.d.ts +6 -0
  406. package/types/components/layouts/default/video-layout.d.ts +15 -0
  407. package/types/components/layouts/plyr/context.d.ts +7 -0
  408. package/types/components/layouts/plyr/plyr-layout.d.ts +9 -0
  409. package/types/components/layouts/plyr/props.d.ts +68 -0
  410. package/types/components/layouts/plyr/translations.d.ts +6 -0
  411. package/types/components/player.d.ts +214 -0
  412. package/types/components/provider/provider.d.ts +24 -0
  413. package/types/components/provider/source-select.d.ts +10 -0
  414. package/types/components/provider/tracks.d.ts +7 -0
  415. package/types/components/ui/buttons/airplay-button.d.ts +23 -0
  416. package/types/components/ui/buttons/caption-button.d.ts +21 -0
  417. package/types/components/ui/buttons/fullscreen-button.d.ts +28 -0
  418. package/types/components/ui/buttons/google-cast-button.d.ts +23 -0
  419. package/types/components/ui/buttons/live-button.d.ts +30 -0
  420. package/types/components/ui/buttons/mute-button.d.ts +21 -0
  421. package/types/components/ui/buttons/pip-button.d.ts +22 -0
  422. package/types/components/ui/buttons/play-button.d.ts +21 -0
  423. package/types/components/ui/buttons/seek-button.d.ts +32 -0
  424. package/types/components/ui/buttons/toggle-button-controller.d.ts +20 -0
  425. package/types/components/ui/buttons/toggle-button.d.ts +29 -0
  426. package/types/components/ui/captions/captions-renderer.d.ts +12 -0
  427. package/types/components/ui/captions/captions.d.ts +22 -0
  428. package/types/components/ui/controls-group.d.ts +9 -0
  429. package/types/components/ui/controls.d.ts +38 -0
  430. package/types/components/ui/gesture.d.ts +64 -0
  431. package/types/components/ui/menu/menu-button.d.ts +37 -0
  432. package/types/components/ui/menu/menu-context.d.ts +23 -0
  433. package/types/components/ui/menu/menu-focus-controller.d.ts +14 -0
  434. package/types/components/ui/menu/menu-item.d.ts +9 -0
  435. package/types/components/ui/menu/menu-items.d.ts +44 -0
  436. package/types/components/ui/menu/menu-portal.d.ts +31 -0
  437. package/types/components/ui/menu/menu.d.ts +66 -0
  438. package/types/components/ui/menu/radio/radio-controller.d.ts +14 -0
  439. package/types/components/ui/menu/radio/radio-group-controller.d.ts +11 -0
  440. package/types/components/ui/menu/radio/radio-group.d.ts +40 -0
  441. package/types/components/ui/menu/radio/radio.d.ts +50 -0
  442. package/types/components/ui/menu/radio-groups/audio-gain-radio-group.d.ts +36 -0
  443. package/types/components/ui/menu/radio-groups/audio-radio-group.d.ts +37 -0
  444. package/types/components/ui/menu/radio-groups/captions-radio-group.d.ts +38 -0
  445. package/types/components/ui/menu/radio-groups/chapters-radio-group.d.ts +46 -0
  446. package/types/components/ui/menu/radio-groups/quality-radio-group.d.ts +48 -0
  447. package/types/components/ui/menu/radio-groups/speed-radio-group.d.ts +36 -0
  448. package/types/components/ui/popper/popper.d.ts +15 -0
  449. package/types/components/ui/poster.d.ts +47 -0
  450. package/types/components/ui/sliders/audio-gain-slider.d.ts +43 -0
  451. package/types/components/ui/sliders/quality-slider.d.ts +34 -0
  452. package/types/components/ui/sliders/slider/api/cssvars.d.ts +10 -0
  453. package/types/components/ui/sliders/slider/api/events.d.ts +57 -0
  454. package/types/components/ui/sliders/slider/api/state.d.ts +68 -0
  455. package/types/components/ui/sliders/slider/events-controller.d.ts +23 -0
  456. package/types/components/ui/sliders/slider/format.d.ts +8 -0
  457. package/types/components/ui/sliders/slider/slider-context.d.ts +13 -0
  458. package/types/components/ui/sliders/slider/slider-controller.d.ts +59 -0
  459. package/types/components/ui/sliders/slider/slider.d.ts +39 -0
  460. package/types/components/ui/sliders/slider/types.d.ts +1 -0
  461. package/types/components/ui/sliders/slider/utils.d.ts +2 -0
  462. package/types/components/ui/sliders/slider-preview.d.ts +34 -0
  463. package/types/components/ui/sliders/slider-thumbnail.d.ts +16 -0
  464. package/types/components/ui/sliders/slider-value.d.ts +59 -0
  465. package/types/components/ui/sliders/slider-video.d.ts +73 -0
  466. package/types/components/ui/sliders/speed-slider.d.ts +42 -0
  467. package/types/components/ui/sliders/time-slider/slider-chapters.d.ts +36 -0
  468. package/types/components/ui/sliders/time-slider/time-slider.d.ts +56 -0
  469. package/types/components/ui/sliders/volume-slider.d.ts +35 -0
  470. package/types/components/ui/thumbnails/thumbnail-loader.d.ts +47 -0
  471. package/types/components/ui/thumbnails/thumbnail.d.ts +50 -0
  472. package/types/components/ui/time.d.ts +62 -0
  473. package/types/components/ui/tooltip/tooltip-content.d.ts +39 -0
  474. package/types/components/ui/tooltip/tooltip-context.d.ts +11 -0
  475. package/types/components/ui/tooltip/tooltip-trigger.d.ts +14 -0
  476. package/types/components/ui/tooltip/tooltip.d.ts +23 -0
  477. package/types/core/api/media-attrs.d.ts +3 -0
  478. package/types/core/api/media-context.d.ts +37 -0
  479. package/types/core/api/media-events.d.ts +581 -0
  480. package/types/core/api/media-request-events.d.ts +319 -0
  481. package/types/core/api/player-controller.d.ts +6 -0
  482. package/types/core/api/player-events.d.ts +38 -0
  483. package/types/core/api/player-props.d.ts +163 -0
  484. package/types/core/api/player-state.d.ts +656 -0
  485. package/types/core/api/src-types.d.ts +50 -0
  486. package/types/core/api/types.d.ts +54 -0
  487. package/types/core/controls.d.ts +43 -0
  488. package/types/core/font/font-options.d.ts +42 -0
  489. package/types/core/font/font-vars.d.ts +1 -0
  490. package/types/core/keyboard/aria-shortcuts.d.ts +6 -0
  491. package/types/core/keyboard/controller.d.ts +9 -0
  492. package/types/core/keyboard/types.d.ts +33 -0
  493. package/types/core/quality/events.d.ts +43 -0
  494. package/types/core/quality/symbols.d.ts +6 -0
  495. package/types/core/quality/utils.d.ts +2 -0
  496. package/types/core/quality/video-quality.d.ts +52 -0
  497. package/types/core/state/media-events-logger.d.ts +7 -0
  498. package/types/core/state/media-load-controller.d.ts +6 -0
  499. package/types/core/state/media-player-delegate.d.ts +13 -0
  500. package/types/core/state/media-request-manager.d.ts +71 -0
  501. package/types/core/state/media-state-manager.d.ts +59 -0
  502. package/types/core/state/media-state-sync.d.ts +8 -0
  503. package/types/core/state/media-storage.d.ts +74 -0
  504. package/types/core/state/navigator-media-session.d.ts +5 -0
  505. package/types/core/state/remote-control.d.ts +288 -0
  506. package/types/core/state/tracked-media-events.d.ts +2 -0
  507. package/types/core/time-ranges.d.ts +12 -0
  508. package/types/core/tracks/audio/audio-tracks.d.ts +32 -0
  509. package/types/core/tracks/audio/events.d.ts +37 -0
  510. package/types/core/tracks/text/events.d.ts +49 -0
  511. package/types/core/tracks/text/render/libass-text-renderer.d.ts +181 -0
  512. package/types/core/tracks/text/render/native-text-renderer.d.ts +13 -0
  513. package/types/core/tracks/text/render/text-renderer.d.ts +17 -0
  514. package/types/core/tracks/text/symbols.d.ts +11 -0
  515. package/types/core/tracks/text/text-track.d.ts +137 -0
  516. package/types/core/tracks/text/text-tracks.d.ts +55 -0
  517. package/types/core/tracks/text/utils.d.ts +8 -0
  518. package/types/elements/bundles/cdn/player.core.d.ts +5 -0
  519. package/types/elements/bundles/cdn/player.d.ts +7 -0
  520. package/types/elements/bundles/cdn/plyr.d.ts +5 -0
  521. package/types/elements/bundles/cdn-legacy/player-with-default.d.ts +4 -0
  522. package/types/elements/bundles/cdn-legacy/player-with-layouts.d.ts +4 -0
  523. package/types/elements/bundles/cdn-legacy/player-with-plyr.d.ts +3 -0
  524. package/types/elements/bundles/cdn-legacy/player.d.ts +3 -0
  525. package/types/elements/bundles/icons.d.ts +2 -0
  526. package/types/elements/bundles/player-layouts/default.d.ts +1 -0
  527. package/types/elements/bundles/player-layouts/index.d.ts +1 -0
  528. package/types/elements/bundles/player-layouts/plyr.d.ts +1 -0
  529. package/types/elements/bundles/player-ui.d.ts +1 -0
  530. package/types/elements/bundles/player.d.ts +1 -0
  531. package/types/elements/define/announcer-element.d.ts +18 -0
  532. package/types/elements/define/buttons/airplay-button-element.d.ts +19 -0
  533. package/types/elements/define/buttons/caption-button-element.d.ts +20 -0
  534. package/types/elements/define/buttons/fullscreen-button-element.d.ts +20 -0
  535. package/types/elements/define/buttons/google-cast-button-element.d.ts +19 -0
  536. package/types/elements/define/buttons/live-button-element.d.ts +20 -0
  537. package/types/elements/define/buttons/mute-button-element.d.ts +21 -0
  538. package/types/elements/define/buttons/pip-button-element.d.ts +20 -0
  539. package/types/elements/define/buttons/play-button-element.d.ts +21 -0
  540. package/types/elements/define/buttons/seek-button-element.d.ts +24 -0
  541. package/types/elements/define/buttons/toggle-button-element.d.ts +19 -0
  542. package/types/elements/define/captions-element.d.ts +18 -0
  543. package/types/elements/define/chapter-title-element.d.ts +30 -0
  544. package/types/elements/define/controls-element.d.ts +24 -0
  545. package/types/elements/define/controls-group-element.d.ts +24 -0
  546. package/types/elements/define/gesture-element.d.ts +22 -0
  547. package/types/elements/define/layouts/default/audio-layout-element.d.ts +29 -0
  548. package/types/elements/define/layouts/default/audio-layout.d.ts +1 -0
  549. package/types/elements/define/layouts/default/icons-loader.d.ts +5 -0
  550. package/types/elements/define/layouts/default/icons.d.ts +52 -0
  551. package/types/elements/define/layouts/default/slots.d.ts +2 -0
  552. package/types/elements/define/layouts/default/ui/announcer.d.ts +1 -0
  553. package/types/elements/define/layouts/default/ui/buttons.d.ts +31 -0
  554. package/types/elements/define/layouts/default/ui/captions.d.ts +1 -0
  555. package/types/elements/define/layouts/default/ui/controls.d.ts +1 -0
  556. package/types/elements/define/layouts/default/ui/keyboard-display.d.ts +1 -0
  557. package/types/elements/define/layouts/default/ui/menu/accessibility-menu.d.ts +1 -0
  558. package/types/elements/define/layouts/default/ui/menu/audio-menu.d.ts +1 -0
  559. package/types/elements/define/layouts/default/ui/menu/captions-menu.d.ts +1 -0
  560. package/types/elements/define/layouts/default/ui/menu/chapters-menu.d.ts +8 -0
  561. package/types/elements/define/layouts/default/ui/menu/episodes-menu.d.ts +8 -0
  562. package/types/elements/define/layouts/default/ui/menu/font-menu.d.ts +1 -0
  563. package/types/elements/define/layouts/default/ui/menu/items/menu-checkbox.d.ts +8 -0
  564. package/types/elements/define/layouts/default/ui/menu/items/menu-items.d.ts +26 -0
  565. package/types/elements/define/layouts/default/ui/menu/items/menu-slider.d.ts +3 -0
  566. package/types/elements/define/layouts/default/ui/menu/menu-portal.d.ts +4 -0
  567. package/types/elements/define/layouts/default/ui/menu/playback-menu.d.ts +1 -0
  568. package/types/elements/define/layouts/default/ui/menu/settings-menu.d.ts +8 -0
  569. package/types/elements/define/layouts/default/ui/slider.d.ts +10 -0
  570. package/types/elements/define/layouts/default/ui/time.d.ts +3 -0
  571. package/types/elements/define/layouts/default/ui/title.d.ts +2 -0
  572. package/types/elements/define/layouts/default/ui/utils.d.ts +3 -0
  573. package/types/elements/define/layouts/default/video-layout-element.d.ts +29 -0
  574. package/types/elements/define/layouts/default/video-layout.d.ts +5 -0
  575. package/types/elements/define/layouts/icons/icons-loader.d.ts +11 -0
  576. package/types/elements/define/layouts/icons/layout-icons-loader.d.ts +4 -0
  577. package/types/elements/define/layouts/layout-element.d.ts +38 -0
  578. package/types/elements/define/layouts/layout-name.d.ts +2 -0
  579. package/types/elements/define/layouts/plyr/icons/plyr-airplay.d.ts +2 -0
  580. package/types/elements/define/layouts/plyr/icons/plyr-captions-off.d.ts +2 -0
  581. package/types/elements/define/layouts/plyr/icons/plyr-captions-on.d.ts +2 -0
  582. package/types/elements/define/layouts/plyr/icons/plyr-download.d.ts +2 -0
  583. package/types/elements/define/layouts/plyr/icons/plyr-enter-fullscreen.d.ts +2 -0
  584. package/types/elements/define/layouts/plyr/icons/plyr-exit-fullscreen.d.ts +2 -0
  585. package/types/elements/define/layouts/plyr/icons/plyr-fast-forward.d.ts +2 -0
  586. package/types/elements/define/layouts/plyr/icons/plyr-muted.d.ts +2 -0
  587. package/types/elements/define/layouts/plyr/icons/plyr-pause.d.ts +2 -0
  588. package/types/elements/define/layouts/plyr/icons/plyr-pip.d.ts +2 -0
  589. package/types/elements/define/layouts/plyr/icons/plyr-play.d.ts +2 -0
  590. package/types/elements/define/layouts/plyr/icons/plyr-restart.d.ts +2 -0
  591. package/types/elements/define/layouts/plyr/icons/plyr-rewind.d.ts +2 -0
  592. package/types/elements/define/layouts/plyr/icons/plyr-settings.d.ts +2 -0
  593. package/types/elements/define/layouts/plyr/icons/plyr-volume.d.ts +2 -0
  594. package/types/elements/define/layouts/plyr/icons-loader.d.ts +5 -0
  595. package/types/elements/define/layouts/plyr/icons.d.ts +18 -0
  596. package/types/elements/define/layouts/plyr/plyr-layout-element.d.ts +26 -0
  597. package/types/elements/define/layouts/plyr/ui.d.ts +3 -0
  598. package/types/elements/define/layouts/slot-manager.d.ts +7 -0
  599. package/types/elements/define/layouts/slot-observer.d.ts +12 -0
  600. package/types/elements/define/menus/_template.d.ts +7 -0
  601. package/types/elements/define/menus/audio-gain-group-element.d.ts +31 -0
  602. package/types/elements/define/menus/audio-radio-group-element.d.ts +31 -0
  603. package/types/elements/define/menus/captions-radio-group-element.d.ts +31 -0
  604. package/types/elements/define/menus/chapters-radio-group-element.d.ts +36 -0
  605. package/types/elements/define/menus/menu-button-element.d.ts +25 -0
  606. package/types/elements/define/menus/menu-element.d.ts +26 -0
  607. package/types/elements/define/menus/menu-item-element.d.ts +22 -0
  608. package/types/elements/define/menus/menu-items-element.d.ts +25 -0
  609. package/types/elements/define/menus/menu-portal-element.d.ts +25 -0
  610. package/types/elements/define/menus/quality-radio-group-element.d.ts +33 -0
  611. package/types/elements/define/menus/radio-element.d.ts +22 -0
  612. package/types/elements/define/menus/radio-group-element.d.ts +22 -0
  613. package/types/elements/define/menus/speed-radio-group-element.d.ts +31 -0
  614. package/types/elements/define/player-element.d.ts +24 -0
  615. package/types/elements/define/poster-element.d.ts +25 -0
  616. package/types/elements/define/provider-cast-display.d.ts +2 -0
  617. package/types/elements/define/provider-element.d.ts +25 -0
  618. package/types/elements/define/sliders/audio-gain-slider-element.d.ts +32 -0
  619. package/types/elements/define/sliders/quality-slider-element.d.ts +32 -0
  620. package/types/elements/define/sliders/slider-chapters-element.d.ts +31 -0
  621. package/types/elements/define/sliders/slider-element.d.ts +23 -0
  622. package/types/elements/define/sliders/slider-preview-element.d.ts +14 -0
  623. package/types/elements/define/sliders/slider-steps-element.d.ts +28 -0
  624. package/types/elements/define/sliders/slider-thumbnail-element.d.ts +26 -0
  625. package/types/elements/define/sliders/slider-value-element.d.ts +37 -0
  626. package/types/elements/define/sliders/slider-video-element.d.ts +25 -0
  627. package/types/elements/define/sliders/speed-slider-element.d.ts +32 -0
  628. package/types/elements/define/sliders/time-slider-element.d.ts +32 -0
  629. package/types/elements/define/sliders/volume-slider-element.d.ts +32 -0
  630. package/types/elements/define/spinner-element.d.ts +50 -0
  631. package/types/elements/define/thumbnail-element.d.ts +29 -0
  632. package/types/elements/define/time-element.d.ts +24 -0
  633. package/types/elements/define/title-element.d.ts +23 -0
  634. package/types/elements/define/tooltips/tooltip-content-element.d.ts +26 -0
  635. package/types/elements/define/tooltips/tooltip-element.d.ts +26 -0
  636. package/types/elements/define/tooltips/tooltip-trigger-element.d.ts +27 -0
  637. package/types/elements/icon.d.ts +10 -0
  638. package/types/elements/index.d.ts +56 -0
  639. package/types/elements/lit/directives/signal.d.ts +1 -0
  640. package/types/elements/lit/html.d.ts +4 -0
  641. package/types/elements/lit/lit-element.d.ts +8 -0
  642. package/types/elements/state-controller.d.ts +5 -0
  643. package/types/exports/components.d.ts +59 -0
  644. package/types/exports/core.d.ts +26 -0
  645. package/types/exports/events.d.ts +32 -0
  646. package/types/exports/font.d.ts +2 -0
  647. package/types/exports/foundation.d.ts +8 -0
  648. package/types/exports/maverick.d.ts +1 -0
  649. package/types/exports/providers.d.ts +22 -0
  650. package/types/exports/utils.d.ts +4 -0
  651. package/types/foundation/fullscreen/controller.d.ts +39 -0
  652. package/types/foundation/fullscreen/events.d.ts +25 -0
  653. package/types/foundation/list/list.d.ts +64 -0
  654. package/types/foundation/list/select-list.d.ts +30 -0
  655. package/types/foundation/list/symbols.d.ts +14 -0
  656. package/types/foundation/logger/colors.d.ts +5 -0
  657. package/types/foundation/logger/controller.d.ts +20 -0
  658. package/types/foundation/logger/events.d.ts +26 -0
  659. package/types/foundation/logger/grouped-log.d.ts +22 -0
  660. package/types/foundation/logger/log-level.d.ts +15 -0
  661. package/types/foundation/logger/log-printer.d.ts +11 -0
  662. package/types/foundation/logger/ms.d.ts +4 -0
  663. package/types/foundation/observers/focus-visible.d.ts +7 -0
  664. package/types/foundation/observers/intersection-observer.d.ts +36 -0
  665. package/types/foundation/observers/page-visibility.d.ts +37 -0
  666. package/types/foundation/observers/raf-loop.d.ts +6 -0
  667. package/types/foundation/orientation/controller.d.ts +62 -0
  668. package/types/foundation/orientation/events.d.ts +16 -0
  669. package/types/foundation/orientation/types.d.ts +85 -0
  670. package/types/foundation/queue/queue.d.ts +24 -0
  671. package/types/foundation/queue/request-queue.d.ts +42 -0
  672. package/types/global/layouts/default.d.ts +9 -0
  673. package/types/global/layouts/loader.d.ts +5 -0
  674. package/types/global/layouts/plyr.d.ts +9 -0
  675. package/types/global/player.d.ts +26 -0
  676. package/types/global/plyr.d.ts +344 -0
  677. package/types/index.d.ts +6 -0
  678. package/types/plugins.d.ts +11 -0
  679. package/types/providers/audio/loader.d.ts +12 -0
  680. package/types/providers/audio/provider.d.ts +29 -0
  681. package/types/providers/dash/dash.d.ts +15 -0
  682. package/types/providers/dash/events.d.ts +570 -0
  683. package/types/providers/dash/lib-loader.d.ts +6 -0
  684. package/types/providers/dash/loader.d.ts +10 -0
  685. package/types/providers/dash/provider.d.ts +62 -0
  686. package/types/providers/dash/types.d.ts +13 -0
  687. package/types/providers/embed/EmbedProvider.d.ts +18 -0
  688. package/types/providers/google-cast/events.d.ts +36 -0
  689. package/types/providers/google-cast/loader.d.ts +18 -0
  690. package/types/providers/google-cast/media-info.d.ts +11 -0
  691. package/types/providers/google-cast/provider.d.ts +48 -0
  692. package/types/providers/google-cast/tracks.d.ts +10 -0
  693. package/types/providers/google-cast/types.d.ts +3 -0
  694. package/types/providers/google-cast/utils.d.ts +34 -0
  695. package/types/providers/hls/events.d.ts +463 -0
  696. package/types/providers/hls/hls.d.ts +14 -0
  697. package/types/providers/hls/lib-loader.d.ts +6 -0
  698. package/types/providers/hls/loader.d.ts +10 -0
  699. package/types/providers/hls/provider.d.ts +64 -0
  700. package/types/providers/hls/types.d.ts +9 -0
  701. package/types/providers/html/audio/audio-context.d.ts +6 -0
  702. package/types/providers/html/audio/audio-gain.d.ts +10 -0
  703. package/types/providers/html/html/342/200/223media-events.d.ts +6 -0
  704. package/types/providers/html/native-audio-tracks.d.ts +6 -0
  705. package/types/providers/html/provider.d.ts +34 -0
  706. package/types/providers/html/remote-playback.d.ts +18 -0
  707. package/types/providers/type-check.d.ts +28 -0
  708. package/types/providers/types.d.ts +95 -0
  709. package/types/providers/video/loader.d.ts +12 -0
  710. package/types/providers/video/native-hls-text-tracks.d.ts +9 -0
  711. package/types/providers/video/picture-in-picture.d.ts +16 -0
  712. package/types/providers/video/presentation/events.d.ts +11 -0
  713. package/types/providers/video/presentation/video-presentation.d.ts +30 -0
  714. package/types/providers/video/provider.d.ts +34 -0
  715. package/types/providers/vimeo/embed/command.d.ts +81 -0
  716. package/types/providers/vimeo/embed/event.d.ts +58 -0
  717. package/types/providers/vimeo/embed/message.d.ts +8 -0
  718. package/types/providers/vimeo/embed/misc.d.ts +52 -0
  719. package/types/providers/vimeo/embed/params.d.ts +148 -0
  720. package/types/providers/vimeo/loader.d.ts +14 -0
  721. package/types/providers/vimeo/provider.d.ts +61 -0
  722. package/types/providers/vimeo/utils.d.ts +6 -0
  723. package/types/providers/youtube/embed/command.d.ts +13 -0
  724. package/types/providers/youtube/embed/event.d.ts +1 -0
  725. package/types/providers/youtube/embed/message.d.ts +50 -0
  726. package/types/providers/youtube/embed/params.d.ts +218 -0
  727. package/types/providers/youtube/embed/quality.d.ts +2 -0
  728. package/types/providers/youtube/embed/state.d.ts +12 -0
  729. package/types/providers/youtube/loader.d.ts +14 -0
  730. package/types/providers/youtube/provider.d.ts +61 -0
  731. package/types/providers/youtube/utils.d.ts +2 -0
  732. package/types/utils/aria.d.ts +4 -0
  733. package/types/utils/array.d.ts +1 -0
  734. package/types/utils/color.d.ts +1 -0
  735. package/types/utils/dom.d.ts +41 -0
  736. package/types/utils/error.d.ts +2 -0
  737. package/types/utils/language.d.ts +8 -0
  738. package/types/utils/manifest.d.ts +3 -0
  739. package/types/utils/mime.d.ts +15 -0
  740. package/types/utils/network.d.ts +17 -0
  741. package/types/utils/number.d.ts +17 -0
  742. package/types/utils/promise.d.ts +1 -0
  743. package/types/utils/scroll.d.ts +5 -0
  744. package/types/utils/support.d.ts +72 -0
  745. package/types/utils/time.d.ts +57 -0
  746. package/vite.config.ts +61 -0
@@ -0,0 +1,50 @@
1
+ import type { SetRequired } from 'type-fest';
2
+ export type MediaSrc = string | AudioSrc | VideoSrc | HLSSrc | DASHSrc | YouTubeSrc | VimeoSrc;
3
+ export type MediaSrcObject = MediaStream | MediaSource | Blob;
4
+ export type HTMLMediaSrc = string | MediaSrcObject;
5
+ export interface Src<T = unknown> {
6
+ src: T;
7
+ type: string;
8
+ }
9
+ export interface AudioSrc extends AudioSrcMeta {
10
+ src: HTMLMediaSrc;
11
+ type: AudioMimeType;
12
+ }
13
+ export type AudioMimeType = 'audio/mpeg' | 'audio/ogg' | 'audio/3gp' | 'audio/mp3' | 'audio/webm' | 'audio/flac' | 'audio/object';
14
+ export interface AudioSrcMeta {
15
+ id?: string;
16
+ bitrate?: number;
17
+ channels?: number;
18
+ }
19
+ export interface VideoSrc extends VideoSrcMeta {
20
+ src: HTMLMediaSrc;
21
+ type: VideoMimeType;
22
+ }
23
+ export type VideoMimeType = 'video/mp4' | 'video/webm' | 'video/3gp' | 'video/ogg' | 'video/avi' | 'video/mpeg' | 'video/object';
24
+ export interface VideoSrcMeta {
25
+ id?: string;
26
+ width?: number;
27
+ height?: number;
28
+ bitrate?: number;
29
+ framerate?: number;
30
+ codec?: string;
31
+ }
32
+ export interface HLSSrc {
33
+ src: string;
34
+ type: HLSMimeType;
35
+ }
36
+ export type HLSMimeType = 'application/vnd.apple.mpegurl' | 'audio/mpegurl' | 'audio/x-mpegurl' | 'application/x-mpegurl' | 'video/x-mpegurl' | 'video/mpegurl' | 'application/mpegurl';
37
+ export interface DASHSrc {
38
+ src: string;
39
+ type: DASHMimeType;
40
+ }
41
+ export type DASHMimeType = 'application/dash+xml';
42
+ export interface YouTubeSrc {
43
+ src: string;
44
+ type: 'video/youtube';
45
+ }
46
+ export interface VimeoSrc {
47
+ src: string;
48
+ type: 'video/vimeo';
49
+ }
50
+ export declare function isVideoQualitySrc(src: Src): src is SetRequired<VideoSrc, 'width' | 'height'>;
@@ -0,0 +1,54 @@
1
+ /**
2
+ * The current media type.
3
+ */
4
+ export type MediaType = 'unknown' | 'audio' | 'video';
5
+ /**
6
+ * The current media stream type.
7
+ */
8
+ export type MediaStreamType = 'unknown' | 'on-demand' | 'live' | 'live:dvr' | 'll-live' | 'll-live:dvr';
9
+ export type MediaCrossOrigin = '' | 'anonymous' | 'use-credentials';
10
+ export type RemotePlaybackType = 'airplay' | 'google-cast' | 'none';
11
+ export interface RemotePlaybackInfo {
12
+ deviceName?: string;
13
+ }
14
+ /**
15
+ * Indicates the current view type which determines how the media will be presented.
16
+ */
17
+ export type MediaViewType = 'unknown' | 'audio' | 'video';
18
+ /**
19
+ * Indicates the type of strategy that should be used to initiate the loading process.
20
+ *
21
+ * @docs {@see https://www.vidstack.io/docs/player/core-concepts/loading#load-strategies}
22
+ */
23
+ export type MediaLoadingStrategy = 'eager' | 'idle' | 'visible' | 'custom' | 'play';
24
+ /**
25
+ * Indicates the type of strategy that should be used to initiate the poster loading process.
26
+ *
27
+ * @docs {@see https://www.vidstack.io/docs/player/core-concepts/loading#load-strategies}
28
+ */
29
+ export type MediaPosterLoadingStrategy = 'eager' | 'idle' | 'visible' | 'custom';
30
+ /**
31
+ * A number which represents the general type of error that occurred.
32
+ *
33
+ * - *Abort Error Code (1):* The fetching of the associated resource was aborted by the user's
34
+ * request.
35
+ *
36
+ * - *Network Error Code (2):* Some kind of network error occurred which prevented the media from
37
+ * being successfully fetched, despite having previously been available.
38
+ *
39
+ * - *Decode Error Code (3):* Despite having previously been determined to be usable, an error
40
+ * occurred while trying to decode the media resource, resulting in an error.
41
+ *
42
+ * - *Invalid Resource Error Code (4):* The associated resource or media provider object (such as
43
+ * a `MediaStream`) has been found to be unsuitable.
44
+ *
45
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaError
46
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaError/code
47
+ */
48
+ export type MediaErrorCode = 1 | 2 | 3 | 4;
49
+ export interface MediaErrorDetail {
50
+ message: string;
51
+ code?: MediaErrorCode;
52
+ error?: Error;
53
+ mediaError?: MediaError;
54
+ }
@@ -0,0 +1,43 @@
1
+ import { MediaPlayerController } from './api/player-controller';
2
+ export declare class MediaControls extends MediaPlayerController {
3
+ #private;
4
+ /**
5
+ * The default amount of delay in milliseconds while media playback is progressing without user
6
+ * activity to indicate an idle state (i.e., hide controls).
7
+ *
8
+ * @defaultValue 2000
9
+ */
10
+ defaultDelay: number;
11
+ /**
12
+ * Whether controls can hide after a delay in user interaction. If this is false, controls will
13
+ * not hide and be user controlled.
14
+ */
15
+ get canIdle(): boolean;
16
+ set canIdle(canIdle: boolean);
17
+ /**
18
+ * Whether controls visibility should be toggled when the mouse enters and leaves the player
19
+ * container.
20
+ *
21
+ * @defaultValue false
22
+ */
23
+ get hideOnMouseLeave(): boolean;
24
+ set hideOnMouseLeave(hide: boolean);
25
+ /**
26
+ * Whether media controls are currently visible.
27
+ */
28
+ get showing(): boolean;
29
+ /**
30
+ * Show controls.
31
+ */
32
+ show(delay?: number, trigger?: Event): void;
33
+ /**
34
+ * Hide controls.
35
+ */
36
+ hide(delay?: number, trigger?: Event): void;
37
+ /**
38
+ * Whether all idle tracking on controls should be paused until resumed again.
39
+ */
40
+ pause(trigger?: Event): void;
41
+ resume(trigger?: Event): void;
42
+ protected onConnect(): void;
43
+ }
@@ -0,0 +1,42 @@
1
+ import { type WriteSignal } from 'maverick.js';
2
+ import type { DefaultLayoutTranslations } from '../../components/layouts/default/translations';
3
+ export declare const FONT_COLOR_OPTION: FontOption;
4
+ export declare const FONT_FAMILY_OPTION: FontOption;
5
+ export declare const FONT_SIZE_OPTION: FontSliderOption;
6
+ export declare const FONT_OPACITY_OPTION: FontSliderOption;
7
+ export declare const FONT_TEXT_SHADOW_OPTION: FontOption;
8
+ export declare const FONT_DEFAULTS: {
9
+ readonly fontFamily: "pro-sans";
10
+ readonly fontSize: "100%";
11
+ readonly textColor: "#ffffff";
12
+ readonly textOpacity: "100%";
13
+ readonly textShadow: "none";
14
+ readonly textBg: "#000000";
15
+ readonly textBgOpacity: "100%";
16
+ readonly displayBg: "#000000";
17
+ readonly displayBgOpacity: "0%";
18
+ };
19
+ export declare const FONT_SIGNALS: Record<"fontFamily" | "fontSize" | "textColor" | "textOpacity" | "textShadow" | "textBg" | "textBgOpacity" | "displayBg" | "displayBgOpacity", WriteSignal<string>>;
20
+ export type FontSignal = keyof typeof FONT_DEFAULTS;
21
+ export declare function onFontReset(): void;
22
+ export interface FontRadioOption {
23
+ type: 'radio';
24
+ values: string[] | Record<string, string>;
25
+ }
26
+ export interface FontSliderOption {
27
+ type: 'slider';
28
+ min: number;
29
+ max: number;
30
+ step: number;
31
+ upIcon: unknown;
32
+ downIcon: unknown;
33
+ }
34
+ export interface FontColorOption {
35
+ type: 'color';
36
+ }
37
+ export type FontOption = FontRadioOption | FontSliderOption | FontColorOption;
38
+ export interface DefaultFontSettingProps {
39
+ label: keyof DefaultLayoutTranslations;
40
+ type: FontSignal;
41
+ option: FontOption;
42
+ }
@@ -0,0 +1 @@
1
+ export declare function updateFontCssVars(): void;
@@ -0,0 +1,6 @@
1
+ import { ViewController } from 'maverick.js';
2
+ export declare class ARIAKeyShortcuts extends ViewController {
3
+ #private;
4
+ constructor(shortcut: string);
5
+ protected onAttach(el: HTMLElement): void;
6
+ }
@@ -0,0 +1,9 @@
1
+ import type { MediaContext } from '../api/media-context';
2
+ import { MediaPlayerController } from '../api/player-controller';
3
+ import type { MediaKeyShortcuts } from './types';
4
+ export declare const MEDIA_KEY_SHORTCUTS: MediaKeyShortcuts;
5
+ export declare class MediaKeyboardController extends MediaPlayerController {
6
+ #private;
7
+ constructor(media: MediaContext);
8
+ protected onConnect(): void;
9
+ }
@@ -0,0 +1,33 @@
1
+ import type { MediaPlayer } from '../../components/player';
2
+ import type { MediaRemoteControl } from '../state/remote-control';
3
+ export type MediaKeyTarget = 'document' | 'player';
4
+ export interface MediaKeyShortcuts {
5
+ [keys: string]: MediaKeyShortcut | undefined;
6
+ togglePaused?: MediaKeyShortcut;
7
+ toggleMuted?: MediaKeyShortcut;
8
+ toggleFullscreen?: MediaKeyShortcut;
9
+ togglePictureInPicture?: MediaKeyShortcut;
10
+ toggleCaptions?: MediaKeyShortcut;
11
+ seekBackward?: MediaKeyShortcut;
12
+ seekForward?: MediaKeyShortcut;
13
+ speedUp?: MediaKeyShortcut;
14
+ slowDown?: MediaKeyShortcut;
15
+ volumeUp?: MediaKeyShortcut;
16
+ volumeDown?: MediaKeyShortcut;
17
+ }
18
+ export type MediaKeyShortcut = MediaKeysCallback | string | string[] | null;
19
+ export interface MediaKeysCallback {
20
+ keys: string | string[];
21
+ /** @deprecated - use `onKeyUp` or `onKeyDown` */
22
+ callback?(event: KeyboardEvent, remote: MediaRemoteControl): void;
23
+ onKeyUp?(context: {
24
+ event: KeyboardEvent;
25
+ player: MediaPlayer;
26
+ remote: MediaRemoteControl;
27
+ }): void;
28
+ onKeyDown?(context: {
29
+ event: KeyboardEvent;
30
+ player: MediaPlayer;
31
+ remote: MediaRemoteControl;
32
+ }): void;
33
+ }
@@ -0,0 +1,43 @@
1
+ import type { DOMEvent } from 'maverick.js/std';
2
+ import type { ListReadonlyChangeEvent } from '../../foundation/list/list';
3
+ import type { VideoQuality, VideoQualityList } from './video-quality';
4
+ export interface VideoQualityListEvents {
5
+ add: VideoQualityAddEvent;
6
+ remove: VideoQualityRemoveEvent;
7
+ change: VideoQualityChangeEvent;
8
+ 'auto-change': VideoQualityAutoChangeEvent;
9
+ 'readonly-change': ListReadonlyChangeEvent;
10
+ }
11
+ export interface VideoQualityListEvent<T> extends DOMEvent<T> {
12
+ target: VideoQualityList;
13
+ }
14
+ /**
15
+ * Fired when a video quality has been added to the list.
16
+ *
17
+ * @detail newQuality
18
+ */
19
+ export interface VideoQualityAddEvent extends VideoQualityListEvent<VideoQuality> {
20
+ }
21
+ /**
22
+ * Fired when a video quality has been removed from the list.
23
+ *
24
+ * @detail removedQuality
25
+ */
26
+ export interface VideoQualityRemoveEvent extends VideoQualityListEvent<VideoQuality> {
27
+ }
28
+ /**
29
+ * Fired when the selected video quality has changed.
30
+ *
31
+ * @detail change
32
+ */
33
+ export interface VideoQualityChangeEvent extends VideoQualityListEvent<VideoQualityChangeEventDetail> {
34
+ }
35
+ export interface VideoQualityChangeEventDetail {
36
+ prev: VideoQuality | null;
37
+ current: VideoQuality;
38
+ }
39
+ /**
40
+ * Fired when auto quality selection is enabled or disabled.
41
+ */
42
+ export interface VideoQualityAutoChangeEvent extends VideoQualityListEvent<boolean> {
43
+ }
@@ -0,0 +1,6 @@
1
+ export declare const SET_AUTO: unique symbol, ENABLE_AUTO: unique symbol;
2
+ /** @internal */
3
+ export declare const QualitySymbol: {
4
+ readonly setAuto: typeof SET_AUTO;
5
+ readonly enableAuto: typeof ENABLE_AUTO;
6
+ };
@@ -0,0 +1,2 @@
1
+ import type { VideoQuality } from './video-quality';
2
+ export declare function sortVideoQualities(qualities: VideoQuality[], desc?: boolean): VideoQuality[];
@@ -0,0 +1,52 @@
1
+ import { SelectList, type SelectListItem } from '../../foundation/list/select-list';
2
+ import { ListSymbol } from '../../foundation/list/symbols';
3
+ import type { VideoQualityListEvents } from './events';
4
+ import { QualitySymbol } from './symbols';
5
+ /**
6
+ * @see {@link https://vidstack.io/docs/player/core-concepts/video-quality#quality-list}
7
+ */
8
+ export declare class VideoQualityList extends SelectList<VideoQuality, VideoQualityListEvents> {
9
+ #private;
10
+ /**
11
+ * Configures quality switching:
12
+ *
13
+ * - `current`: Trigger an immediate quality level switch. This will abort the current fragment
14
+ * request if any, flush the whole buffer, and fetch fragment matching with current position
15
+ * and requested quality level.
16
+ *
17
+ * - `next`: Trigger a quality level switch for next fragment. This could eventually flush
18
+ * already buffered next fragment.
19
+ *
20
+ * - `load`: Set quality level for next loaded fragment.
21
+ *
22
+ * @see {@link https://www.vidstack.io/docs/player/api/video-quality#switch}
23
+ * @see {@link https://github.com/video-dev/hls.js/blob/master/docs/API.md#quality-switch-control-api}
24
+ */
25
+ switch: 'current' | 'next' | 'load';
26
+ /**
27
+ * Whether automatic quality selection is enabled.
28
+ */
29
+ get auto(): boolean;
30
+ /** @internal */
31
+ [QualitySymbol.enableAuto]?: (trigger?: Event) => void;
32
+ /** @internal */
33
+ protected [ListSymbol.onUserSelect](): void;
34
+ /** @internal */
35
+ protected [ListSymbol.onReset](trigger?: Event): void;
36
+ /**
37
+ * Request automatic quality selection (if supported). This will be a no-op if the list is
38
+ * `readonly` as that already implies auto-selection.
39
+ */
40
+ autoSelect(trigger?: Event): void;
41
+ getBySrc(src: unknown): VideoQuality | undefined;
42
+ /** @internal */
43
+ [QualitySymbol.setAuto](auto: boolean, trigger?: Event): void;
44
+ }
45
+ export interface VideoQuality extends SelectListItem {
46
+ readonly id: string;
47
+ readonly src?: unknown;
48
+ readonly width: number;
49
+ readonly height: number;
50
+ readonly bitrate: number | null;
51
+ readonly codec: string | null;
52
+ }
@@ -0,0 +1,7 @@
1
+ import { type MediaContext } from '../api/media-context';
2
+ import { MediaPlayerController } from '../api/player-controller';
3
+ export declare class MediaEventsLogger extends MediaPlayerController {
4
+ #private;
5
+ constructor(media: MediaContext);
6
+ protected onConnect(el: HTMLElement): void;
7
+ }
@@ -0,0 +1,6 @@
1
+ import { MediaPlayerController } from '../api/player-controller';
2
+ export declare class MediaLoadController extends MediaPlayerController {
3
+ #private;
4
+ constructor(type: 'load' | 'posterLoad', callback: () => void);
5
+ onAttach(el: HTMLElement): Promise<void>;
6
+ }
@@ -0,0 +1,13 @@
1
+ import { type InferEventDetail } from 'maverick.js/std';
2
+ import type { MediaContext } from '../api/media-context';
3
+ import type { MediaEvents } from '../api/media-events';
4
+ export declare class MediaPlayerDelegate {
5
+ #private;
6
+ constructor(handle: (event: Event) => void, media: MediaContext);
7
+ notify<Type extends keyof MediaEvents>(type: Type, ...init: InferEventDetail<MediaEvents[Type]> extends void | undefined | never ? [detail?: never, trigger?: Event] : [detail: InferEventDetail<MediaEvents[Type]>, trigger?: Event]): void;
8
+ ready(info?: {
9
+ duration: number;
10
+ seekable: TimeRanges;
11
+ buffered: TimeRanges;
12
+ }, trigger?: Event): Promise<void>;
13
+ }
@@ -0,0 +1,71 @@
1
+ import { Queue } from '../../foundation/queue/queue';
2
+ import type { MediaContext } from '../api/media-context';
3
+ import * as RE from '../api/media-request-events';
4
+ import { MediaPlayerController } from '../api/player-controller';
5
+ import { MediaControls } from '../controls';
6
+ import type { MediaStateManager } from './media-state-manager';
7
+ /**
8
+ * This class is responsible for listening to media request events and calling the appropriate
9
+ * actions on the current media provider. Do note, actions are queued until a media provider
10
+ * has connected.
11
+ */
12
+ export declare class MediaRequestManager extends MediaPlayerController implements MediaRequestHandler {
13
+ #private;
14
+ readonly controls: MediaControls;
15
+ constructor(stateMgr: MediaStateManager, request: MediaRequestContext, media: MediaContext);
16
+ protected onAttach(): void;
17
+ protected onConnect(el: HTMLElement): void;
18
+ protected onDestroy(): void;
19
+ play(trigger?: Event): Promise<void>;
20
+ pause(trigger?: Event): Promise<void>;
21
+ setAudioGain(gain: number, trigger?: Event): void;
22
+ seekToLiveEdge(trigger?: Event): void;
23
+ enterFullscreen(target?: RE.MediaFullscreenRequestTarget, trigger?: Event): Promise<void>;
24
+ exitFullscreen(target?: RE.MediaFullscreenRequestTarget, trigger?: Event): Promise<void>;
25
+ enterPictureInPicture(trigger?: Event): Promise<void | PictureInPictureWindow>;
26
+ exitPictureInPicture(trigger?: Event): Promise<void>;
27
+ ['media-airplay-request'](event: RE.MediaAirPlayRequestEvent): Promise<void>;
28
+ requestAirPlay(trigger?: Event): Promise<void>;
29
+ ['media-google-cast-request'](event: RE.MediaGoogleCastRequestEvent): Promise<void>;
30
+ requestGoogleCast(trigger?: Event): Promise<void>;
31
+ ['media-clip-start-change-request'](event: RE.MediaClipStartChangeRequestEvent): void;
32
+ ['media-clip-end-change-request'](event: RE.MediaClipEndChangeRequestEvent): void;
33
+ ['media-duration-change-request'](event: RE.MediaDurationChangeRequestEvent): void;
34
+ ['media-audio-track-change-request'](event: RE.MediaAudioTrackChangeRequestEvent): void;
35
+ ['media-enter-fullscreen-request'](event: RE.MediaEnterFullscreenRequestEvent): Promise<void>;
36
+ ['media-exit-fullscreen-request'](event: RE.MediaExitFullscreenRequestEvent): Promise<void>;
37
+ ['media-orientation-lock-request'](event: RE.MediaOrientationLockRequestEvent): Promise<void>;
38
+ ['media-orientation-unlock-request'](event: RE.MediaOrientationUnlockRequestEvent): Promise<void>;
39
+ ['media-enter-pip-request'](event: RE.MediaEnterPIPRequestEvent): Promise<void>;
40
+ ['media-exit-pip-request'](event: RE.MediaExitPIPRequestEvent): Promise<void>;
41
+ ['media-live-edge-request'](event: RE.MediaLiveEdgeRequestEvent): void;
42
+ ['media-loop-request'](event: RE.MediaLoopRequestEvent): Promise<void>;
43
+ ['media-user-loop-change-request'](event: RE.MediaUserLoopChangeRequestEvent): void;
44
+ ['media-pause-request'](event: RE.MediaPauseRequestEvent): Promise<void>;
45
+ ['media-play-request'](event: RE.MediaPlayRequestEvent): Promise<void>;
46
+ ['media-rate-change-request'](event: RE.MediaRateChangeRequestEvent): void;
47
+ ['media-audio-gain-change-request'](event: RE.MediaAudioGainChangeRequestEvent): void;
48
+ ['media-quality-change-request'](event: RE.MediaQualityChangeRequestEvent): void;
49
+ ['media-pause-controls-request'](event: RE.MediaPauseControlsRequestEvent): void;
50
+ ['media-resume-controls-request'](event: RE.MediaResumeControlsRequestEvent): void;
51
+ ['media-seek-request'](event: RE.MediaSeekRequestEvent): void;
52
+ ['media-seeking-request'](event: RE.MediaSeekingRequestEvent): void;
53
+ ['media-start-loading'](event: RE.MediaStartLoadingRequestEvent): void;
54
+ ['media-poster-start-loading'](event: RE.MediaPosterStartLoadingRequestEvent): void;
55
+ ['media-text-track-change-request'](event: RE.MediaTextTrackChangeRequestEvent): void;
56
+ ['media-mute-request'](event: RE.MediaMuteRequestEvent): void;
57
+ ['media-unmute-request'](event: RE.MediaUnmuteRequestEvent): void;
58
+ ['media-volume-change-request'](event: RE.MediaVolumeChangeRequestEvent): void;
59
+ }
60
+ export declare class MediaRequestContext {
61
+ seeking: boolean;
62
+ looping: boolean;
63
+ replaying: boolean;
64
+ queue: Queue<MediaRequestQueueItems>;
65
+ }
66
+ export type MediaRequestQueueItems = {
67
+ [P in keyof RE.MediaRequestEvents]: Event;
68
+ };
69
+ export type MediaRequestHandler = {
70
+ [Type in keyof RE.MediaRequestEvents]: (event: RE.MediaRequestEvents[Type]) => unknown;
71
+ };
@@ -0,0 +1,59 @@
1
+ import type { MediaContext } from '../api/media-context';
2
+ import * as ME from '../api/media-events';
3
+ import { MediaPlayerController } from '../api/player-controller';
4
+ import type { MediaRequestContext } from './media-request-manager';
5
+ /**
6
+ * This class is responsible for listening to and normalizing media events, updating the media
7
+ * state context, and satisfying media requests.
8
+ */
9
+ export declare class MediaStateManager extends MediaPlayerController {
10
+ #private;
11
+ constructor(request: MediaRequestContext, media: MediaContext);
12
+ protected onAttach(el: HTMLElement): void;
13
+ protected onConnect(el: HTMLElement): void;
14
+ protected onDestroy(): void;
15
+ handle(event: Event): void;
16
+ ['provider-change'](event: ME.MediaProviderChangeEvent): void;
17
+ ['provider-loader-change'](event: ME.MediaProviderLoaderChangeEvent): void;
18
+ ['auto-play'](event: ME.MediaAutoPlayEvent): void;
19
+ ['auto-play-fail'](event: ME.MediaAutoPlayFailEvent): void;
20
+ ['can-load'](event: ME.MediaCanLoadEvent): void;
21
+ ['can-load-poster'](event: ME.MediaCanLoadEvent): void;
22
+ ['media-type-change'](event: ME.MediaTypeChangeEvent): void;
23
+ ['stream-type-change'](event: ME.MediaStreamTypeChangeEvent): void;
24
+ ['rate-change'](event: ME.MediaRateChangeEvent): void;
25
+ ['remote-playback-change'](event: ME.MediaRemotePlaybackChangeEvent): void;
26
+ ['sources-change'](event: ME.MediaSourcesChangeEvent): void;
27
+ ['source-change'](event: ME.MediaSourceChangeEvent): void;
28
+ ['abort'](event: ME.MediaAbortEvent): void;
29
+ ['load-start'](event: ME.MediaLoadStartEvent): void;
30
+ ['error'](event: ME.MediaErrorEvent): void;
31
+ ['loaded-metadata'](event: ME.MediaLoadedMetadataEvent): void;
32
+ ['loaded-data'](event: ME.MediaLoadedDataEvent): void;
33
+ ['can-play'](event: ME.MediaCanPlayEvent): void;
34
+ ['can-play-through'](event: ME.MediaCanPlayThroughEvent): void;
35
+ ['duration-change'](event: ME.MediaDurationChangeEvent): void;
36
+ ['progress'](event: ME.MediaProgressEvent): void;
37
+ ['play'](event: ME.MediaPlayEvent): void;
38
+ ['play-fail'](event: ME.MediaPlayFailEvent): void;
39
+ ['playing'](event: ME.MediaPlayingEvent): void;
40
+ ['started'](event: Event): void;
41
+ ['pause'](event: ME.MediaPauseEvent): void;
42
+ ['time-change'](event: ME.MediaTimeChangeEvent): void;
43
+ ['audio-gain-change'](event: ME.MediaAudioGainChangeEvent): void;
44
+ ['volume-change'](event: ME.MediaVolumeChangeEvent): void;
45
+ ['seeking']: ((event: ME.MediaSeekingEvent) => void) & {
46
+ cancel: () => void;
47
+ flush: () => void;
48
+ };
49
+ ['seeked'](event: ME.MediaSeekedEvent): void;
50
+ ['waiting'](event: ME.MediaWaitingEvent): void;
51
+ ['end'](event: Event): void;
52
+ ['fullscreen-change'](event: ME.MediaFullscreenChangeEvent): void;
53
+ ['fullscreen-error'](event: ME.MediaFullscreenErrorEvent): void;
54
+ ['orientation-change'](event: ME.MediaOrientationChangeEvent): void;
55
+ ['picture-in-picture-change'](event: ME.MediaPIPChangeEvent): void;
56
+ ['picture-in-picture-error'](event: ME.MediaPIPErrorEvent): void;
57
+ ['title-change'](event: ME.MediaPosterChangeEvent): void;
58
+ ['poster-change'](event: ME.MediaPosterChangeEvent): void;
59
+ }
@@ -0,0 +1,8 @@
1
+ import { MediaPlayerController } from '../api/player-controller';
2
+ /**
3
+ * Sync player props with internal store and dispatch change events.
4
+ */
5
+ export declare class MediaStateSync extends MediaPlayerController {
6
+ #private;
7
+ protected onSetup(): void;
8
+ }
@@ -0,0 +1,74 @@
1
+ import type { MaybeStopEffect } from 'maverick.js';
2
+ import type { Src } from '../api/src-types';
3
+ export interface MediaStorage {
4
+ getVolume(): Promise<number | null>;
5
+ setVolume?(volume: number): Promise<void>;
6
+ getMuted(): Promise<boolean | null>;
7
+ setMuted?(muted: boolean): Promise<void>;
8
+ getTime(): Promise<number | null>;
9
+ setTime?(time: number, ended?: boolean): Promise<void>;
10
+ getLang(): Promise<string | null>;
11
+ setLang?(lang: string | null): Promise<void>;
12
+ getCaptions(): Promise<boolean | null>;
13
+ setCaptions?(captions: boolean): Promise<void>;
14
+ getPlaybackRate(): Promise<number | null>;
15
+ setPlaybackRate?(rate: number): Promise<void>;
16
+ getVideoQuality(): Promise<SerializedVideoQuality | null>;
17
+ setVideoQuality?(quality: SerializedVideoQuality | null): Promise<void>;
18
+ getAudioGain(): Promise<number | null>;
19
+ setAudioGain?(gain: number | null): Promise<void>;
20
+ /**
21
+ * Called when media is ready for playback and new data can be loaded.
22
+ */
23
+ onLoad?(src: Src): void | Promise<void>;
24
+ /**
25
+ * Called when the `mediaId` has changed. This method can return a function to be called
26
+ * before the next change.
27
+ *
28
+ * - The `mediaId` is computed from the current source and clip times. It will be `null` if
29
+ * there is no source.
30
+ *
31
+ * - The `playerId` is the string provided to the player `storage` prop (if set), or the `id`
32
+ * set on the player element, otherwise `undefined`.
33
+ */
34
+ onChange?(src: Src, mediaId: string | null, playerId?: string): MaybeStopEffect;
35
+ /**
36
+ * Called when storage is being destroyed either because the `storage` property on the player
37
+ * has changed, or the player is being destroyed.
38
+ */
39
+ onDestroy?(): void;
40
+ }
41
+ export interface SerializedVideoQuality {
42
+ id: string;
43
+ width: number;
44
+ height: number;
45
+ bitrate?: number | null;
46
+ }
47
+ export declare class LocalMediaStorage implements MediaStorage {
48
+ #private;
49
+ protected playerId: string;
50
+ protected mediaId: string | null;
51
+ getVolume(): Promise<number | null>;
52
+ setVolume(volume: number): Promise<void>;
53
+ getMuted(): Promise<boolean | null>;
54
+ setMuted(muted: boolean): Promise<void>;
55
+ getTime(): Promise<number | null>;
56
+ setTime(time: number, ended: boolean): Promise<void>;
57
+ getLang(): Promise<string | null>;
58
+ setLang(lang: string | null): Promise<void>;
59
+ getCaptions(): Promise<boolean | null>;
60
+ setCaptions(enabled: boolean): Promise<void>;
61
+ getPlaybackRate(): Promise<number | null>;
62
+ setPlaybackRate(rate: any): Promise<void>;
63
+ getAudioGain(): Promise<number | null>;
64
+ setAudioGain(gain: number | null): Promise<void>;
65
+ getVideoQuality(): Promise<SerializedVideoQuality | null>;
66
+ setVideoQuality(quality: SerializedVideoQuality | null): Promise<void>;
67
+ onChange(src: Src, mediaId: string | null, playerId?: string): void;
68
+ protected save(): void;
69
+ protected saveTimeThrottled: (() => void) & {
70
+ cancel: () => void;
71
+ flush: () => void;
72
+ };
73
+ private saveTime;
74
+ }
@@ -0,0 +1,5 @@
1
+ import { MediaPlayerController } from '../api/player-controller';
2
+ export declare class NavigatorMediaSession extends MediaPlayerController {
3
+ #private;
4
+ protected onConnect(): void;
5
+ }