@hanifhan1f/vidstack 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 (949) hide show
  1. package/cdn/chunks/vidstack-2f5gzOW6.js +1 -0
  2. package/cdn/chunks/vidstack-BYgY9wmd.js +1 -0
  3. package/cdn/chunks/vidstack-BfBBPhXV.js +1 -0
  4. package/cdn/chunks/vidstack-Bjo5esRp.js +1 -0
  5. package/cdn/chunks/vidstack-BuL67v3q.js +1 -0
  6. package/cdn/chunks/vidstack-C0msPRTd.js +3 -0
  7. package/cdn/chunks/vidstack-CIjxJCz3.js +1 -0
  8. package/cdn/chunks/vidstack-C_AxqLKV.js +1 -0
  9. package/cdn/chunks/vidstack-CioT3Yw2.js +1 -0
  10. package/cdn/chunks/vidstack-CmpbA3Yd.js +16 -0
  11. package/cdn/chunks/vidstack-CrqkytHl.js +1 -0
  12. package/cdn/chunks/vidstack-D0M8R0ZU.js +1 -0
  13. package/cdn/chunks/vidstack-D40FSa5B.js +3 -0
  14. package/cdn/chunks/vidstack-DD2JwFVU.js +1 -0
  15. package/cdn/chunks/vidstack-DRH_1tFW.js +1 -0
  16. package/cdn/chunks/vidstack-DfDZuHNP.js +1 -0
  17. package/cdn/chunks/vidstack-DiNS2Vx5.js +1 -0
  18. package/cdn/chunks/vidstack-xjJ-ui_l.js +1 -0
  19. package/cdn/providers/vidstack-audio-2Dt_Ivbp.js +1 -0
  20. package/cdn/providers/vidstack-dash-CUtD4e6q.js +1 -0
  21. package/cdn/providers/vidstack-google-cast-BdORATUX.js +1 -0
  22. package/cdn/providers/vidstack-hls-R25Kb6DP.js +1 -0
  23. package/cdn/providers/vidstack-html-DaAUJYsD.js +1 -0
  24. package/cdn/providers/vidstack-video-Csvox7SO.js +1 -0
  25. package/cdn/providers/vidstack-vimeo-D4Z96kg2.js +1 -0
  26. package/cdn/providers/vidstack-youtube-DiND6h3s.js +1 -0
  27. package/cdn/vidstack.js +1 -0
  28. package/cdn/with-layouts/chunks/vidstack-2f5gzOW6.js +1 -0
  29. package/cdn/with-layouts/chunks/vidstack-BL_lNyW_.js +1 -0
  30. package/cdn/with-layouts/chunks/vidstack-BfBBPhXV.js +1 -0
  31. package/cdn/with-layouts/chunks/vidstack-BjOOdDcQ.js +1 -0
  32. package/cdn/with-layouts/chunks/vidstack-Bxv1Qnxe.js +1 -0
  33. package/cdn/with-layouts/chunks/vidstack-C5AP9wid.js +1 -0
  34. package/cdn/with-layouts/chunks/vidstack-CS2aNc61.js +1 -0
  35. package/cdn/with-layouts/chunks/vidstack-C_AxqLKV.js +1 -0
  36. package/cdn/with-layouts/chunks/vidstack-D-3_fAsK.js +1 -0
  37. package/cdn/with-layouts/chunks/vidstack-DKqYI_HJ.js +1 -0
  38. package/cdn/with-layouts/chunks/vidstack-DLVdcWrK.js +3 -0
  39. package/cdn/with-layouts/chunks/vidstack-DPO7J4-v.js +3 -0
  40. package/cdn/with-layouts/chunks/vidstack-DRH_1tFW.js +1 -0
  41. package/cdn/with-layouts/chunks/vidstack-DWjB11vV.js +1 -0
  42. package/cdn/with-layouts/chunks/vidstack-Dge3KT8k.js +1 -0
  43. package/cdn/with-layouts/chunks/vidstack-Dh2GOjra.js +1 -0
  44. package/cdn/with-layouts/chunks/vidstack-DiNS2Vx5.js +1 -0
  45. package/cdn/with-layouts/chunks/vidstack-QW5tTAS4.js +897 -0
  46. package/cdn/with-layouts/chunks/vidstack-Xe_d7ovA.js +1 -0
  47. package/cdn/with-layouts/chunks/vidstack-wt2OT4N7.js +1 -0
  48. package/cdn/with-layouts/providers/vidstack-audio-Bw1csc6N.js +1 -0
  49. package/cdn/with-layouts/providers/vidstack-dash-DHRMFG4Y.js +1 -0
  50. package/cdn/with-layouts/providers/vidstack-google-cast-BSYJYn-o.js +1 -0
  51. package/cdn/with-layouts/providers/vidstack-hls-DG1rTEqu.js +1 -0
  52. package/cdn/with-layouts/providers/vidstack-html-CoKFAYW5.js +1 -0
  53. package/cdn/with-layouts/providers/vidstack-video-CIxFJ9Z1.js +1 -0
  54. package/cdn/with-layouts/providers/vidstack-vimeo-CNLKOGMa.js +1 -0
  55. package/cdn/with-layouts/providers/vidstack-youtube-D1e-LE-8.js +1 -0
  56. package/cdn/with-layouts/vidstack.js +1 -0
  57. package/dev/chunks/vidstack-03oQOdB7.js +58 -0
  58. package/dev/chunks/vidstack-0Of4tJ8D.js +224 -0
  59. package/dev/chunks/vidstack-BJsZjPkB.js +204 -0
  60. package/dev/chunks/vidstack-BQSA-Rux.js +56 -0
  61. package/{src/core/quality/utils.ts → dev/chunks/vidstack-BTM4ERc7.js} +5 -7
  62. package/dev/chunks/vidstack-BXSB7eI9.js +58 -0
  63. package/dev/chunks/vidstack-BaGbgcvz.js +107 -0
  64. package/{src/core/time-ranges.ts → dev/chunks/vidstack-Becy7l6h.js} +22 -61
  65. package/dev/chunks/vidstack-Bf6x4gWe.js +29 -0
  66. package/dev/chunks/vidstack-BjxlZzGu.js +11 -0
  67. package/dev/chunks/vidstack-Blfm1k-4.js +1520 -0
  68. package/dev/chunks/vidstack-Bpr4fI4n.js +7 -0
  69. package/dev/chunks/vidstack-Bs54kFSz.js +66 -0
  70. package/dev/chunks/vidstack-Bur7I7Vy.js +57 -0
  71. package/dev/chunks/vidstack-C0SWkbs7.js +254 -0
  72. package/dev/chunks/vidstack-C1PwJD_4.js +1635 -0
  73. package/dev/chunks/vidstack-C4aPQ7hZ.js +1482 -0
  74. package/dev/chunks/vidstack-C6OqdJO7.js +114 -0
  75. package/dev/chunks/vidstack-C_rvOKWp.js +33 -0
  76. package/dev/chunks/vidstack-CaudO1jl.js +109 -0
  77. package/dev/chunks/vidstack-Cax7aAP-.js +66 -0
  78. package/dev/chunks/vidstack-CcQdBWil.js +58 -0
  79. package/dev/chunks/vidstack-CwTj4H1w.js +18 -0
  80. package/dev/chunks/vidstack-DAOcbKGP.js +254 -0
  81. package/dev/chunks/vidstack-DKaohJzR.js +5181 -0
  82. package/dev/chunks/vidstack-DXxIKXmd.js +50 -0
  83. package/dev/chunks/vidstack-DXzRuMtJ.js +107 -0
  84. package/dev/chunks/vidstack-Db1-Hg_U.js +297 -0
  85. package/dev/chunks/vidstack-DbBJlz7I.js +10 -0
  86. package/dev/chunks/vidstack-Dihypf8P.js +11 -0
  87. package/dev/chunks/vidstack-Dm1xEU9Q.js +34 -0
  88. package/dev/chunks/vidstack-Dv_LIPFu.js +14 -0
  89. package/{src/foundation/observers/raf-loop.ts → dev/chunks/vidstack-DwyWIZjv.js} +8 -11
  90. package/dev/chunks/vidstack-EoLRQZbs.js +2986 -0
  91. package/dev/chunks/vidstack-FKkY62Dr.js +104 -0
  92. package/dev/chunks/vidstack-krOAtKMi.js +32 -0
  93. package/dev/define/plyr-layout.js +52 -0
  94. package/dev/define/templates/plyr-layout.js +571 -0
  95. package/dev/define/templates/vidstack-audio-layout.js +168 -0
  96. package/dev/define/templates/vidstack-video-layout.js +446 -0
  97. package/dev/define/vidstack-icons.js +1 -0
  98. package/dev/define/vidstack-player-default-layout.js +22 -0
  99. package/dev/define/vidstack-player-layouts.js +26 -0
  100. package/dev/define/vidstack-player-ui.js +71 -0
  101. package/dev/define/vidstack-player.js +19 -0
  102. package/dev/global/plyr.js +502 -0
  103. package/dev/global/vidstack-player.js +129 -0
  104. package/dev/providers/vidstack-audio.js +35 -0
  105. package/dev/providers/vidstack-dash.js +516 -0
  106. package/dev/providers/vidstack-google-cast.js +474 -0
  107. package/dev/providers/vidstack-hls.js +408 -0
  108. package/dev/providers/vidstack-html.js +567 -0
  109. package/dev/providers/vidstack-video.js +207 -0
  110. package/dev/providers/vidstack-vimeo.js +554 -0
  111. package/dev/providers/vidstack-youtube.js +286 -0
  112. package/dev/vidstack-elements.js +37 -0
  113. package/dev/vidstack.js +92 -0
  114. package/elements.d.ts +1433 -0
  115. package/global/player.d.ts +52 -0
  116. package/{types/global → global}/plyr.d.ts +32 -33
  117. package/icons.d.ts +1 -0
  118. package/index.d.ts +402 -0
  119. package/package.json +3 -87
  120. package/plugins.d.ts +19 -0
  121. package/plugins.js +13 -0
  122. package/prod/chunks/vidstack-9_r3lWNO.js +45 -0
  123. package/prod/chunks/vidstack-B01xzxC4.js +7 -0
  124. package/prod/chunks/vidstack-BDIzK77F.js +107 -0
  125. package/prod/chunks/vidstack-BHqGlnGz.js +1482 -0
  126. package/prod/chunks/vidstack-BNpgCJJ1.js +1588 -0
  127. package/prod/chunks/vidstack-BP49Gz0m.js +58 -0
  128. package/prod/chunks/vidstack-BRZe2BNi.js +107 -0
  129. package/prod/chunks/vidstack-BTM4ERc7.js +11 -0
  130. package/prod/chunks/vidstack-BaaRY-9x.js +201 -0
  131. package/prod/chunks/vidstack-BdFYWy6h.js +26 -0
  132. package/prod/chunks/vidstack-BpLd9ASW.js +246 -0
  133. package/prod/chunks/vidstack-C05ipjAK.js +1520 -0
  134. package/prod/chunks/vidstack-C9vIqaYT.js +10 -0
  135. package/prod/chunks/vidstack-CA4tDJdF.js +33 -0
  136. package/prod/chunks/vidstack-COLU-zPZ.js +57 -0
  137. package/prod/chunks/vidstack-CwTj4H1w.js +18 -0
  138. package/prod/chunks/vidstack-D5EzK014.js +14 -0
  139. package/prod/chunks/vidstack-D7hJcnN-.js +297 -0
  140. package/prod/chunks/vidstack-DB9WDRL5.js +248 -0
  141. package/prod/chunks/vidstack-DESBVLFp.js +104 -0
  142. package/prod/chunks/vidstack-DXxIKXmd.js +50 -0
  143. package/prod/chunks/vidstack-DcMkaIHJ.js +2976 -0
  144. package/prod/chunks/vidstack-Dihypf8P.js +11 -0
  145. package/prod/chunks/vidstack-Dm1xEU9Q.js +34 -0
  146. package/prod/chunks/vidstack-DwenML7x.js +4771 -0
  147. package/prod/chunks/vidstack-Fem0yF3c.js +77 -0
  148. package/prod/chunks/vidstack-IDWYvfna.js +58 -0
  149. package/prod/chunks/vidstack-MbEMbVfP.js +109 -0
  150. package/prod/chunks/vidstack-Oq65llxr.js +29 -0
  151. package/prod/chunks/vidstack-SnIdjCkV.js +58 -0
  152. package/prod/chunks/vidstack-V1jwkH0s.js +66 -0
  153. package/prod/chunks/vidstack-bdt7uOlN.js +114 -0
  154. package/prod/chunks/vidstack-krOAtKMi.js +32 -0
  155. package/prod/chunks/vidstack-mxJIo4Sg.js +56 -0
  156. package/prod/chunks/vidstack-tt3O1zL6.js +11 -0
  157. package/prod/chunks/vidstack-zfCm-GM5.js +205 -0
  158. package/prod/define/plyr-layout.js +52 -0
  159. package/prod/define/templates/plyr-layout.js +571 -0
  160. package/prod/define/templates/vidstack-audio-layout.js +168 -0
  161. package/prod/define/templates/vidstack-video-layout.js +446 -0
  162. package/prod/define/vidstack-icons.js +1 -0
  163. package/prod/define/vidstack-player-default-layout.js +22 -0
  164. package/prod/define/vidstack-player-layouts.js +26 -0
  165. package/prod/define/vidstack-player-ui.js +71 -0
  166. package/prod/define/vidstack-player.js +19 -0
  167. package/prod/global/plyr.js +494 -0
  168. package/prod/global/vidstack-player.js +129 -0
  169. package/prod/providers/vidstack-audio.js +35 -0
  170. package/prod/providers/vidstack-dash.js +501 -0
  171. package/prod/providers/vidstack-google-cast.js +468 -0
  172. package/prod/providers/vidstack-hls.js +393 -0
  173. package/prod/providers/vidstack-html.js +555 -0
  174. package/prod/providers/vidstack-video.js +204 -0
  175. package/prod/providers/vidstack-vimeo.js +548 -0
  176. package/prod/providers/vidstack-youtube.js +286 -0
  177. package/prod/vidstack-elements.js +37 -0
  178. package/prod/vidstack.js +159 -0
  179. package/server/chunks/vidstack-B4CWj0Hp.js +381 -0
  180. package/server/chunks/vidstack-B8LynzY5.js +1564 -0
  181. package/server/chunks/vidstack-BGgfNYAH.js +141 -0
  182. package/server/chunks/vidstack-BGmwlunt.js +3035 -0
  183. package/server/chunks/vidstack-BOTZD4tC.js +18 -0
  184. package/server/chunks/vidstack-C19bj3Wq.js +307 -0
  185. package/server/chunks/vidstack-CFTkUXGK.js +295 -0
  186. package/server/chunks/vidstack-CQMB7Msg.js +1502 -0
  187. package/server/chunks/vidstack-CdBfecZT.js +205 -0
  188. package/server/chunks/vidstack-Cv_Art04.js +4635 -0
  189. package/server/chunks/vidstack-CwTj4H1w.js +18 -0
  190. package/server/chunks/vidstack-DXxIKXmd.js +50 -0
  191. package/server/chunks/vidstack-DbvCOsqU.js +107 -0
  192. package/server/chunks/vidstack-DgHfFDiw.js +1962 -0
  193. package/server/chunks/vidstack-Dm1xEU9Q.js +34 -0
  194. package/server/chunks/vidstack-DnkB7eGO.js +207 -0
  195. package/server/chunks/vidstack-DsnTqzpL.js +29 -0
  196. package/{src/elements/define/layouts/plyr/ui.ts → server/chunks/vidstack-FHGkN5xj.js} +144 -235
  197. package/server/chunks/vidstack-P_QDjYIl.js +56 -0
  198. package/server/chunks/vidstack-f5-aflD2.js +104 -0
  199. package/server/chunks/vidstack-krOAtKMi.js +32 -0
  200. package/server/define/plyr-layout.js +16 -0
  201. package/server/define/vidstack-icons.js +1 -0
  202. package/server/define/vidstack-player-default-layout.js +13 -0
  203. package/server/define/vidstack-player-layouts.js +16 -0
  204. package/server/define/vidstack-player-ui.js +11 -0
  205. package/server/define/vidstack-player.js +6 -0
  206. package/server/global/plyr.js +322 -0
  207. package/server/global/vidstack-player.js +58 -0
  208. package/server/vidstack-elements.js +46 -0
  209. package/server/vidstack.js +148 -0
  210. package/types/vidstack-BOvzfZjK.d.ts +1269 -0
  211. package/types/vidstack-DYLKXUvI.d.ts +7479 -0
  212. package/.templates/sandbox/favicon-32x32.png +0 -0
  213. package/.templates/sandbox/index.html +0 -42
  214. package/.templates/sandbox/main.ts +0 -137
  215. package/.templates/sandbox/styles.css +0 -68
  216. package/analyze.config.ts +0 -133
  217. package/build/build-styles.js +0 -33
  218. package/build/rollup-decorators.ts +0 -102
  219. package/build/rollup-minify.js +0 -20
  220. package/build/rollup-ts.js +0 -57
  221. package/rollup.config.ts +0 -442
  222. package/src/components/aria/announcer.ts +0 -181
  223. package/src/components/layouts/default/audio-layout.ts +0 -20
  224. package/src/components/layouts/default/context.ts +0 -15
  225. package/src/components/layouts/default/default-layout.ts +0 -67
  226. package/src/components/layouts/default/props.ts +0 -143
  227. package/src/components/layouts/default/translations.ts +0 -70
  228. package/src/components/layouts/default/video-layout.ts +0 -20
  229. package/src/components/layouts/plyr/context.ts +0 -13
  230. package/src/components/layouts/plyr/plyr-layout.ts +0 -90
  231. package/src/components/layouts/plyr/props.ts +0 -114
  232. package/src/components/layouts/plyr/translations.ts +0 -53
  233. package/src/components/player.ts +0 -758
  234. package/src/components/provider/provider.ts +0 -184
  235. package/src/components/provider/source-select.ts +0 -378
  236. package/src/components/provider/tracks.ts +0 -37
  237. package/src/components/ui/buttons/airplay-button.ts +0 -74
  238. package/src/components/ui/buttons/caption-button.ts +0 -68
  239. package/src/components/ui/buttons/fullscreen-button.ts +0 -90
  240. package/src/components/ui/buttons/google-cast-button.ts +0 -75
  241. package/src/components/ui/buttons/live-button.ts +0 -76
  242. package/src/components/ui/buttons/mute-button.ts +0 -69
  243. package/src/components/ui/buttons/pip-button.ts +0 -71
  244. package/src/components/ui/buttons/play-button.ts +0 -62
  245. package/src/components/ui/buttons/seek-button.ts +0 -92
  246. package/src/components/ui/buttons/toggle-button-controller.ts +0 -92
  247. package/src/components/ui/buttons/toggle-button.ts +0 -49
  248. package/src/components/ui/captions/captions-renderer.ts +0 -63
  249. package/src/components/ui/captions/captions.ts +0 -227
  250. package/src/components/ui/controls-group.ts +0 -13
  251. package/src/components/ui/controls.ts +0 -101
  252. package/src/components/ui/gesture.ts +0 -252
  253. package/src/components/ui/menu/menu-button.ts +0 -95
  254. package/src/components/ui/menu/menu-context.ts +0 -27
  255. package/src/components/ui/menu/menu-focus-controller.ts +0 -205
  256. package/src/components/ui/menu/menu-item.ts +0 -9
  257. package/src/components/ui/menu/menu-items.ts +0 -129
  258. package/src/components/ui/menu/menu-portal.ts +0 -105
  259. package/src/components/ui/menu/menu.ts +0 -612
  260. package/src/components/ui/menu/radio/radio-controller.ts +0 -18
  261. package/src/components/ui/menu/radio/radio-group-controller.ts +0 -81
  262. package/src/components/ui/menu/radio/radio-group.ts +0 -78
  263. package/src/components/ui/menu/radio/radio.ts +0 -151
  264. package/src/components/ui/menu/radio-groups/audio-gain-radio-group.ts +0 -116
  265. package/src/components/ui/menu/radio-groups/audio-radio-group.ts +0 -121
  266. package/src/components/ui/menu/radio-groups/captions-radio-group.ts +0 -153
  267. package/src/components/ui/menu/radio-groups/chapters-radio-group.ts +0 -211
  268. package/src/components/ui/menu/radio-groups/quality-radio-group.ts +0 -181
  269. package/src/components/ui/menu/radio-groups/speed-radio-group.ts +0 -112
  270. package/src/components/ui/popper/popper.ts +0 -103
  271. package/src/components/ui/poster.ts +0 -187
  272. package/src/components/ui/sliders/audio-gain-slider.ts +0 -150
  273. package/src/components/ui/sliders/quality-slider.ts +0 -148
  274. package/src/components/ui/sliders/slider/api/cssvars.ts +0 -10
  275. package/src/components/ui/sliders/slider/api/events.ts +0 -65
  276. package/src/components/ui/sliders/slider/api/state.ts +0 -101
  277. package/src/components/ui/sliders/slider/events-controller.ts +0 -383
  278. package/src/components/ui/sliders/slider/format.ts +0 -12
  279. package/src/components/ui/sliders/slider/slider-context.ts +0 -18
  280. package/src/components/ui/sliders/slider/slider-controller.ts +0 -211
  281. package/src/components/ui/sliders/slider/slider.ts +0 -94
  282. package/src/components/ui/sliders/slider/types.ts +0 -1
  283. package/src/components/ui/sliders/slider/utils.ts +0 -14
  284. package/src/components/ui/sliders/slider-preview.ts +0 -131
  285. package/src/components/ui/sliders/slider-thumbnail.ts +0 -28
  286. package/src/components/ui/sliders/slider-value.ts +0 -122
  287. package/src/components/ui/sliders/slider-video.ts +0 -198
  288. package/src/components/ui/sliders/speed-slider.ts +0 -147
  289. package/src/components/ui/sliders/time-slider/slider-chapters.ts +0 -444
  290. package/src/components/ui/sliders/time-slider/time-slider.ts +0 -319
  291. package/src/components/ui/sliders/volume-slider.ts +0 -145
  292. package/src/components/ui/thumbnails/thumbnail-loader.ts +0 -324
  293. package/src/components/ui/thumbnails/thumbnail.ts +0 -244
  294. package/src/components/ui/time.ts +0 -191
  295. package/src/components/ui/tooltip/tooltip-content.ts +0 -105
  296. package/src/components/ui/tooltip/tooltip-context.ts +0 -13
  297. package/src/components/ui/tooltip/tooltip-trigger.ts +0 -49
  298. package/src/components/ui/tooltip/tooltip.ts +0 -127
  299. package/src/core/api/media-attrs.ts +0 -35
  300. package/src/core/api/media-context.ts +0 -52
  301. package/src/core/api/media-events.ts +0 -601
  302. package/src/core/api/media-request-events.ts +0 -323
  303. package/src/core/api/player-controller.ts +0 -10
  304. package/src/core/api/player-events.ts +0 -49
  305. package/src/core/api/player-props.ts +0 -233
  306. package/src/core/api/player-state.ts +0 -940
  307. package/src/core/api/src-types.ts +0 -97
  308. package/src/core/api/types.ts +0 -69
  309. package/src/core/controls.ts +0 -251
  310. package/src/core/font/font-options.ts +0 -106
  311. package/src/core/font/font-vars.ts +0 -107
  312. package/src/core/keyboard/aria-shortcuts.ts +0 -42
  313. package/src/core/keyboard/controller.ts +0 -302
  314. package/src/core/keyboard/types.ts +0 -40
  315. package/src/core/quality/events.ts +0 -48
  316. package/src/core/quality/symbols.ts +0 -8
  317. package/src/core/quality/video-quality.ts +0 -86
  318. package/src/core/state/media-events-logger.ts +0 -67
  319. package/src/core/state/media-load-controller.ts +0 -40
  320. package/src/core/state/media-player-delegate.ts +0 -170
  321. package/src/core/state/media-request-manager.ts +0 -952
  322. package/src/core/state/media-state-manager.ts +0 -1077
  323. package/src/core/state/media-state-sync.ts +0 -162
  324. package/src/core/state/media-storage.ts +0 -196
  325. package/src/core/state/navigator-media-session.ts +0 -62
  326. package/src/core/state/remote-control.ts +0 -584
  327. package/src/core/state/tracked-media-events.ts +0 -22
  328. package/src/core/tracks/audio/audio-tracks.ts +0 -33
  329. package/src/core/tracks/audio/events.ts +0 -41
  330. package/src/core/tracks/text/events.ts +0 -52
  331. package/src/core/tracks/text/render/libass-text-renderer.ts +0 -246
  332. package/src/core/tracks/text/render/native-text-renderer.ts +0 -106
  333. package/src/core/tracks/text/render/text-renderer.ts +0 -134
  334. package/src/core/tracks/text/symbols.ts +0 -17
  335. package/src/core/tracks/text/text-track.test.ts +0 -407
  336. package/src/core/tracks/text/text-track.ts +0 -413
  337. package/src/core/tracks/text/text-tracks.ts +0 -210
  338. package/src/core/tracks/text/utils.ts +0 -85
  339. package/src/elements/bundles/cdn/player.core.ts +0 -6
  340. package/src/elements/bundles/cdn/player.ts +0 -8
  341. package/src/elements/bundles/cdn/plyr.ts +0 -6
  342. package/src/elements/bundles/cdn-legacy/player-with-default.ts +0 -4
  343. package/src/elements/bundles/cdn-legacy/player-with-layouts.ts +0 -4
  344. package/src/elements/bundles/cdn-legacy/player-with-plyr.ts +0 -3
  345. package/src/elements/bundles/cdn-legacy/player.ts +0 -3
  346. package/src/elements/bundles/icons.ts +0 -3
  347. package/src/elements/bundles/player-layouts/default.ts +0 -7
  348. package/src/elements/bundles/player-layouts/index.ts +0 -9
  349. package/src/elements/bundles/player-layouts/plyr.ts +0 -65
  350. package/src/elements/bundles/player-ui.ts +0 -108
  351. package/src/elements/bundles/player.ts +0 -7
  352. package/src/elements/define/announcer-element.ts +0 -20
  353. package/src/elements/define/buttons/airplay-button-element.ts +0 -21
  354. package/src/elements/define/buttons/caption-button-element.ts +0 -22
  355. package/src/elements/define/buttons/fullscreen-button-element.ts +0 -22
  356. package/src/elements/define/buttons/google-cast-button-element.ts +0 -21
  357. package/src/elements/define/buttons/live-button-element.ts +0 -22
  358. package/src/elements/define/buttons/mute-button-element.ts +0 -23
  359. package/src/elements/define/buttons/pip-button-element.ts +0 -22
  360. package/src/elements/define/buttons/play-button-element.ts +0 -23
  361. package/src/elements/define/buttons/seek-button-element.ts +0 -26
  362. package/src/elements/define/buttons/toggle-button-element.ts +0 -21
  363. package/src/elements/define/captions-element.ts +0 -20
  364. package/src/elements/define/chapter-title-element.ts +0 -54
  365. package/src/elements/define/controls-element.ts +0 -26
  366. package/src/elements/define/controls-group-element.ts +0 -26
  367. package/src/elements/define/gesture-element.ts +0 -24
  368. package/src/elements/define/layouts/default/audio-layout-element.ts +0 -137
  369. package/src/elements/define/layouts/default/audio-layout.ts +0 -113
  370. package/src/elements/define/layouts/default/icons-loader.ts +0 -17
  371. package/src/elements/define/layouts/default/icons.ts +0 -86
  372. package/src/elements/define/layouts/default/slots.ts +0 -12
  373. package/src/elements/define/layouts/default/ui/announcer.ts +0 -14
  374. package/src/elements/define/layouts/default/ui/buttons.ts +0 -291
  375. package/src/elements/define/layouts/default/ui/captions.ts +0 -14
  376. package/src/elements/define/layouts/default/ui/controls.ts +0 -5
  377. package/src/elements/define/layouts/default/ui/keyboard-display.ts +0 -114
  378. package/src/elements/define/layouts/default/ui/menu/accessibility-menu.ts +0 -79
  379. package/src/elements/define/layouts/default/ui/menu/audio-menu.ts +0 -135
  380. package/src/elements/define/layouts/default/ui/menu/captions-menu.ts +0 -114
  381. package/src/elements/define/layouts/default/ui/menu/chapters-menu.ts +0 -117
  382. package/src/elements/define/layouts/default/ui/menu/episodes-menu.ts +0 -133
  383. package/src/elements/define/layouts/default/ui/menu/font-menu.ts +0 -253
  384. package/src/elements/define/layouts/default/ui/menu/items/menu-checkbox.ts +0 -67
  385. package/src/elements/define/layouts/default/ui/menu/items/menu-items.ts +0 -108
  386. package/src/elements/define/layouts/default/ui/menu/items/menu-slider.ts +0 -59
  387. package/src/elements/define/layouts/default/ui/menu/menu-portal.ts +0 -56
  388. package/src/elements/define/layouts/default/ui/menu/playback-menu.ts +0 -183
  389. package/src/elements/define/layouts/default/ui/menu/settings-menu.ts +0 -98
  390. package/src/elements/define/layouts/default/ui/slider.ts +0 -112
  391. package/src/elements/define/layouts/default/ui/time.ts +0 -41
  392. package/src/elements/define/layouts/default/ui/title.ts +0 -25
  393. package/src/elements/define/layouts/default/ui/utils.ts +0 -10
  394. package/src/elements/define/layouts/default/video-layout-element.ts +0 -125
  395. package/src/elements/define/layouts/default/video-layout.ts +0 -353
  396. package/src/elements/define/layouts/icons/icons-loader.ts +0 -47
  397. package/src/elements/define/layouts/icons/layout-icons-loader.ts +0 -24
  398. package/src/elements/define/layouts/layout-element.ts +0 -78
  399. package/src/elements/define/layouts/layout-name.ts +0 -15
  400. package/src/elements/define/layouts/plyr/icons/plyr-airplay.js +0 -1
  401. package/src/elements/define/layouts/plyr/icons/plyr-captions-off.js +0 -1
  402. package/src/elements/define/layouts/plyr/icons/plyr-captions-on.js +0 -1
  403. package/src/elements/define/layouts/plyr/icons/plyr-download.js +0 -1
  404. package/src/elements/define/layouts/plyr/icons/plyr-enter-fullscreen.js +0 -1
  405. package/src/elements/define/layouts/plyr/icons/plyr-exit-fullscreen.js +0 -1
  406. package/src/elements/define/layouts/plyr/icons/plyr-fast-forward.js +0 -1
  407. package/src/elements/define/layouts/plyr/icons/plyr-muted.js +0 -1
  408. package/src/elements/define/layouts/plyr/icons/plyr-pause.js +0 -1
  409. package/src/elements/define/layouts/plyr/icons/plyr-pip.js +0 -1
  410. package/src/elements/define/layouts/plyr/icons/plyr-play.js +0 -1
  411. package/src/elements/define/layouts/plyr/icons/plyr-restart.js +0 -1
  412. package/src/elements/define/layouts/plyr/icons/plyr-rewind.js +0 -1
  413. package/src/elements/define/layouts/plyr/icons/plyr-settings.js +0 -1
  414. package/src/elements/define/layouts/plyr/icons/plyr-volume.js +0 -1
  415. package/src/elements/define/layouts/plyr/icons-loader.ts +0 -21
  416. package/src/elements/define/layouts/plyr/icons.ts +0 -34
  417. package/src/elements/define/layouts/plyr/plyr-layout-element.ts +0 -67
  418. package/src/elements/define/layouts/slot-manager.ts +0 -61
  419. package/src/elements/define/layouts/slot-observer.ts +0 -70
  420. package/src/elements/define/menus/_template.ts +0 -47
  421. package/src/elements/define/menus/audio-gain-group-element.ts +0 -37
  422. package/src/elements/define/menus/audio-radio-group-element.ts +0 -37
  423. package/src/elements/define/menus/captions-radio-group-element.ts +0 -37
  424. package/src/elements/define/menus/chapters-radio-group-element.ts +0 -68
  425. package/src/elements/define/menus/menu-button-element.ts +0 -27
  426. package/src/elements/define/menus/menu-element.ts +0 -28
  427. package/src/elements/define/menus/menu-item-element.ts +0 -24
  428. package/src/elements/define/menus/menu-items-element.ts +0 -27
  429. package/src/elements/define/menus/menu-portal-element.ts +0 -35
  430. package/src/elements/define/menus/quality-radio-group-element.ts +0 -51
  431. package/src/elements/define/menus/radio-element.ts +0 -24
  432. package/src/elements/define/menus/radio-group-element.ts +0 -24
  433. package/src/elements/define/menus/speed-radio-group-element.ts +0 -37
  434. package/src/elements/define/player-element.ts +0 -33
  435. package/src/elements/define/poster-element.ts +0 -53
  436. package/src/elements/define/provider-cast-display.ts +0 -36
  437. package/src/elements/define/provider-element.ts +0 -158
  438. package/src/elements/define/sliders/audio-gain-slider-element.ts +0 -34
  439. package/src/elements/define/sliders/quality-slider-element.ts +0 -34
  440. package/src/elements/define/sliders/slider-chapters-element.ts +0 -53
  441. package/src/elements/define/sliders/slider-element.ts +0 -25
  442. package/src/elements/define/sliders/slider-preview-element.ts +0 -16
  443. package/src/elements/define/sliders/slider-steps-element.ts +0 -50
  444. package/src/elements/define/sliders/slider-thumbnail-element.ts +0 -48
  445. package/src/elements/define/sliders/slider-value-element.ts +0 -49
  446. package/src/elements/define/sliders/slider-video-element.ts +0 -59
  447. package/src/elements/define/sliders/speed-slider-element.ts +0 -34
  448. package/src/elements/define/sliders/time-slider-element.ts +0 -34
  449. package/src/elements/define/sliders/volume-slider-element.ts +0 -34
  450. package/src/elements/define/spinner-element.ts +0 -96
  451. package/src/elements/define/thumbnail-element.ts +0 -63
  452. package/src/elements/define/time-element.ts +0 -32
  453. package/src/elements/define/title-element.ts +0 -38
  454. package/src/elements/define/tooltips/tooltip-content-element.ts +0 -28
  455. package/src/elements/define/tooltips/tooltip-element.ts +0 -28
  456. package/src/elements/define/tooltips/tooltip-trigger-element.ts +0 -32
  457. package/src/elements/icon.ts +0 -30
  458. package/src/elements/index.ts +0 -71
  459. package/src/elements/lit/directives/signal.ts +0 -80
  460. package/src/elements/lit/html.ts +0 -11
  461. package/src/elements/lit/lit-element.ts +0 -23
  462. package/src/elements/state-controller.ts +0 -48
  463. package/src/exports/components.ts +0 -79
  464. package/src/exports/core.ts +0 -41
  465. package/src/exports/events.ts +0 -46
  466. package/src/exports/font.ts +0 -3
  467. package/src/exports/foundation.ts +0 -8
  468. package/src/exports/maverick.ts +0 -9
  469. package/src/exports/providers.ts +0 -42
  470. package/src/exports/utils.ts +0 -18
  471. package/src/foundation/fullscreen/controller.ts +0 -128
  472. package/src/foundation/fullscreen/events.ts +0 -26
  473. package/src/foundation/list/list.ts +0 -127
  474. package/src/foundation/list/select-list.ts +0 -86
  475. package/src/foundation/list/symbols.ts +0 -22
  476. package/src/foundation/logger/colors.ts +0 -33
  477. package/src/foundation/logger/controller.ts +0 -71
  478. package/src/foundation/logger/events.ts +0 -29
  479. package/src/foundation/logger/grouped-log.ts +0 -44
  480. package/src/foundation/logger/log-level.ts +0 -17
  481. package/src/foundation/logger/log-printer.ts +0 -119
  482. package/src/foundation/logger/ms.ts +0 -31
  483. package/src/foundation/observers/focus-visible.ts +0 -74
  484. package/src/foundation/observers/intersection-observer.ts +0 -60
  485. package/src/foundation/observers/page-visibility.ts +0 -105
  486. package/src/foundation/orientation/controller.ts +0 -139
  487. package/src/foundation/orientation/events.ts +0 -20
  488. package/src/foundation/orientation/types.ts +0 -96
  489. package/src/foundation/queue/queue.ts +0 -41
  490. package/src/foundation/queue/request-queue.test.ts +0 -139
  491. package/src/foundation/queue/request-queue.ts +0 -94
  492. package/src/global/layouts/default.ts +0 -28
  493. package/src/global/layouts/loader.ts +0 -5
  494. package/src/global/layouts/plyr.ts +0 -24
  495. package/src/global/player.ts +0 -144
  496. package/src/global/plyr.ts +0 -917
  497. package/src/globals.d.ts +0 -11
  498. package/src/index.ts +0 -10
  499. package/src/plugins.ts +0 -369
  500. package/src/providers/audio/loader.ts +0 -45
  501. package/src/providers/audio/provider.ts +0 -50
  502. package/src/providers/dash/dash.ts +0 -417
  503. package/src/providers/dash/events.ts +0 -585
  504. package/src/providers/dash/lib-loader.ts +0 -202
  505. package/src/providers/dash/loader.ts +0 -33
  506. package/src/providers/dash/provider.ts +0 -135
  507. package/src/providers/dash/types.ts +0 -21
  508. package/src/providers/embed/EmbedProvider.ts +0 -84
  509. package/src/providers/google-cast/events.ts +0 -53
  510. package/src/providers/google-cast/loader.ts +0 -174
  511. package/src/providers/google-cast/media-info.ts +0 -49
  512. package/src/providers/google-cast/provider.ts +0 -483
  513. package/src/providers/google-cast/tracks.ts +0 -170
  514. package/src/providers/google-cast/types.ts +0 -3
  515. package/src/providers/google-cast/utils.ts +0 -112
  516. package/src/providers/hls/events.ts +0 -472
  517. package/src/providers/hls/hls.ts +0 -290
  518. package/src/providers/hls/lib-loader.ts +0 -178
  519. package/src/providers/hls/loader.ts +0 -33
  520. package/src/providers/hls/provider.ts +0 -137
  521. package/src/providers/hls/types.ts +0 -10
  522. package/src/providers/html/audio/audio-context.ts +0 -60
  523. package/src/providers/html/audio/audio-gain.ts +0 -100
  524. package/src/providers/html/html/342/200/223media-events.ts +0 -338
  525. package/src/providers/html/native-audio-tracks.ts +0 -91
  526. package/src/providers/html/provider.ts +0 -141
  527. package/src/providers/html/remote-playback.ts +0 -94
  528. package/src/providers/type-check.ts +0 -61
  529. package/src/providers/types.ts +0 -95
  530. package/src/providers/video/loader.ts +0 -45
  531. package/src/providers/video/native-hls-text-tracks.ts +0 -69
  532. package/src/providers/video/picture-in-picture.ts +0 -54
  533. package/src/providers/video/presentation/events.ts +0 -12
  534. package/src/providers/video/presentation/video-presentation.ts +0 -110
  535. package/src/providers/video/provider.ts +0 -91
  536. package/src/providers/vimeo/embed/command.ts +0 -118
  537. package/src/providers/vimeo/embed/event.ts +0 -124
  538. package/src/providers/vimeo/embed/message.ts +0 -9
  539. package/src/providers/vimeo/embed/misc.ts +0 -57
  540. package/src/providers/vimeo/embed/params.ts +0 -168
  541. package/src/providers/vimeo/loader.ts +0 -61
  542. package/src/providers/vimeo/provider.ts +0 -730
  543. package/src/providers/vimeo/utils.ts +0 -53
  544. package/src/providers/youtube/embed/command.ts +0 -21
  545. package/src/providers/youtube/embed/event.ts +0 -1
  546. package/src/providers/youtube/embed/message.ts +0 -54
  547. package/src/providers/youtube/embed/params.ts +0 -238
  548. package/src/providers/youtube/embed/quality.ts +0 -35
  549. package/src/providers/youtube/embed/state.ts +0 -13
  550. package/src/providers/youtube/loader.ts +0 -61
  551. package/src/providers/youtube/provider.ts +0 -403
  552. package/src/providers/youtube/utils.ts +0 -45
  553. package/src/tailwind.test.ts +0 -413
  554. package/src/test-utils/index.ts +0 -22
  555. package/src/test-utils/setup.ts +0 -3
  556. package/src/utils/aria.ts +0 -14
  557. package/src/utils/array.ts +0 -3
  558. package/src/utils/color.ts +0 -5
  559. package/src/utils/dom.ts +0 -458
  560. package/src/utils/error.ts +0 -11
  561. package/src/utils/language.ts +0 -16
  562. package/src/utils/manifest.ts +0 -61
  563. package/src/utils/mime.ts +0 -101
  564. package/src/utils/network.ts +0 -118
  565. package/src/utils/number.ts +0 -25
  566. package/src/utils/promise.ts +0 -12
  567. package/src/utils/scroll.ts +0 -19
  568. package/src/utils/support.ts +0 -163
  569. package/src/utils/time.test.ts +0 -111
  570. package/src/utils/time.ts +0 -123
  571. package/tsconfig.build.json +0 -9
  572. package/tsconfig.json +0 -11
  573. package/types/components/aria/announcer.d.ts +0 -27
  574. package/types/components/layouts/default/audio-layout.d.ts +0 -15
  575. package/types/components/layouts/default/context.d.ts +0 -9
  576. package/types/components/layouts/default/default-layout.d.ts +0 -10
  577. package/types/components/layouts/default/props.d.ts +0 -125
  578. package/types/components/layouts/default/translations.d.ts +0 -6
  579. package/types/components/layouts/default/video-layout.d.ts +0 -15
  580. package/types/components/layouts/plyr/context.d.ts +0 -7
  581. package/types/components/layouts/plyr/plyr-layout.d.ts +0 -9
  582. package/types/components/layouts/plyr/props.d.ts +0 -68
  583. package/types/components/layouts/plyr/translations.d.ts +0 -6
  584. package/types/components/player.d.ts +0 -214
  585. package/types/components/provider/provider.d.ts +0 -24
  586. package/types/components/provider/source-select.d.ts +0 -10
  587. package/types/components/provider/tracks.d.ts +0 -7
  588. package/types/components/ui/buttons/airplay-button.d.ts +0 -23
  589. package/types/components/ui/buttons/caption-button.d.ts +0 -21
  590. package/types/components/ui/buttons/fullscreen-button.d.ts +0 -28
  591. package/types/components/ui/buttons/google-cast-button.d.ts +0 -23
  592. package/types/components/ui/buttons/live-button.d.ts +0 -30
  593. package/types/components/ui/buttons/mute-button.d.ts +0 -21
  594. package/types/components/ui/buttons/pip-button.d.ts +0 -22
  595. package/types/components/ui/buttons/play-button.d.ts +0 -21
  596. package/types/components/ui/buttons/seek-button.d.ts +0 -32
  597. package/types/components/ui/buttons/toggle-button-controller.d.ts +0 -20
  598. package/types/components/ui/buttons/toggle-button.d.ts +0 -29
  599. package/types/components/ui/captions/captions-renderer.d.ts +0 -12
  600. package/types/components/ui/captions/captions.d.ts +0 -22
  601. package/types/components/ui/controls-group.d.ts +0 -9
  602. package/types/components/ui/controls.d.ts +0 -38
  603. package/types/components/ui/gesture.d.ts +0 -64
  604. package/types/components/ui/menu/menu-button.d.ts +0 -37
  605. package/types/components/ui/menu/menu-context.d.ts +0 -23
  606. package/types/components/ui/menu/menu-focus-controller.d.ts +0 -14
  607. package/types/components/ui/menu/menu-item.d.ts +0 -9
  608. package/types/components/ui/menu/menu-items.d.ts +0 -44
  609. package/types/components/ui/menu/menu-portal.d.ts +0 -31
  610. package/types/components/ui/menu/menu.d.ts +0 -66
  611. package/types/components/ui/menu/radio/radio-controller.d.ts +0 -14
  612. package/types/components/ui/menu/radio/radio-group-controller.d.ts +0 -11
  613. package/types/components/ui/menu/radio/radio-group.d.ts +0 -40
  614. package/types/components/ui/menu/radio/radio.d.ts +0 -50
  615. package/types/components/ui/menu/radio-groups/audio-gain-radio-group.d.ts +0 -36
  616. package/types/components/ui/menu/radio-groups/audio-radio-group.d.ts +0 -37
  617. package/types/components/ui/menu/radio-groups/captions-radio-group.d.ts +0 -38
  618. package/types/components/ui/menu/radio-groups/chapters-radio-group.d.ts +0 -46
  619. package/types/components/ui/menu/radio-groups/quality-radio-group.d.ts +0 -48
  620. package/types/components/ui/menu/radio-groups/speed-radio-group.d.ts +0 -36
  621. package/types/components/ui/popper/popper.d.ts +0 -15
  622. package/types/components/ui/poster.d.ts +0 -47
  623. package/types/components/ui/sliders/audio-gain-slider.d.ts +0 -43
  624. package/types/components/ui/sliders/quality-slider.d.ts +0 -34
  625. package/types/components/ui/sliders/slider/api/cssvars.d.ts +0 -10
  626. package/types/components/ui/sliders/slider/api/events.d.ts +0 -57
  627. package/types/components/ui/sliders/slider/api/state.d.ts +0 -68
  628. package/types/components/ui/sliders/slider/events-controller.d.ts +0 -23
  629. package/types/components/ui/sliders/slider/format.d.ts +0 -8
  630. package/types/components/ui/sliders/slider/slider-context.d.ts +0 -13
  631. package/types/components/ui/sliders/slider/slider-controller.d.ts +0 -59
  632. package/types/components/ui/sliders/slider/slider.d.ts +0 -39
  633. package/types/components/ui/sliders/slider/types.d.ts +0 -1
  634. package/types/components/ui/sliders/slider/utils.d.ts +0 -2
  635. package/types/components/ui/sliders/slider-preview.d.ts +0 -34
  636. package/types/components/ui/sliders/slider-thumbnail.d.ts +0 -16
  637. package/types/components/ui/sliders/slider-value.d.ts +0 -59
  638. package/types/components/ui/sliders/slider-video.d.ts +0 -73
  639. package/types/components/ui/sliders/speed-slider.d.ts +0 -42
  640. package/types/components/ui/sliders/time-slider/slider-chapters.d.ts +0 -36
  641. package/types/components/ui/sliders/time-slider/time-slider.d.ts +0 -56
  642. package/types/components/ui/sliders/volume-slider.d.ts +0 -35
  643. package/types/components/ui/thumbnails/thumbnail-loader.d.ts +0 -47
  644. package/types/components/ui/thumbnails/thumbnail.d.ts +0 -50
  645. package/types/components/ui/time.d.ts +0 -62
  646. package/types/components/ui/tooltip/tooltip-content.d.ts +0 -39
  647. package/types/components/ui/tooltip/tooltip-context.d.ts +0 -11
  648. package/types/components/ui/tooltip/tooltip-trigger.d.ts +0 -14
  649. package/types/components/ui/tooltip/tooltip.d.ts +0 -23
  650. package/types/core/api/media-attrs.d.ts +0 -3
  651. package/types/core/api/media-context.d.ts +0 -37
  652. package/types/core/api/media-events.d.ts +0 -581
  653. package/types/core/api/media-request-events.d.ts +0 -319
  654. package/types/core/api/player-controller.d.ts +0 -6
  655. package/types/core/api/player-events.d.ts +0 -38
  656. package/types/core/api/player-props.d.ts +0 -163
  657. package/types/core/api/player-state.d.ts +0 -656
  658. package/types/core/api/src-types.d.ts +0 -50
  659. package/types/core/api/types.d.ts +0 -54
  660. package/types/core/controls.d.ts +0 -43
  661. package/types/core/font/font-options.d.ts +0 -42
  662. package/types/core/font/font-vars.d.ts +0 -1
  663. package/types/core/keyboard/aria-shortcuts.d.ts +0 -6
  664. package/types/core/keyboard/controller.d.ts +0 -9
  665. package/types/core/keyboard/types.d.ts +0 -33
  666. package/types/core/quality/events.d.ts +0 -43
  667. package/types/core/quality/symbols.d.ts +0 -6
  668. package/types/core/quality/utils.d.ts +0 -2
  669. package/types/core/quality/video-quality.d.ts +0 -52
  670. package/types/core/state/media-events-logger.d.ts +0 -7
  671. package/types/core/state/media-load-controller.d.ts +0 -6
  672. package/types/core/state/media-player-delegate.d.ts +0 -13
  673. package/types/core/state/media-request-manager.d.ts +0 -71
  674. package/types/core/state/media-state-manager.d.ts +0 -59
  675. package/types/core/state/media-state-sync.d.ts +0 -8
  676. package/types/core/state/media-storage.d.ts +0 -74
  677. package/types/core/state/navigator-media-session.d.ts +0 -5
  678. package/types/core/state/remote-control.d.ts +0 -288
  679. package/types/core/state/tracked-media-events.d.ts +0 -2
  680. package/types/core/time-ranges.d.ts +0 -12
  681. package/types/core/tracks/audio/audio-tracks.d.ts +0 -32
  682. package/types/core/tracks/audio/events.d.ts +0 -37
  683. package/types/core/tracks/text/events.d.ts +0 -49
  684. package/types/core/tracks/text/render/libass-text-renderer.d.ts +0 -181
  685. package/types/core/tracks/text/render/native-text-renderer.d.ts +0 -13
  686. package/types/core/tracks/text/render/text-renderer.d.ts +0 -17
  687. package/types/core/tracks/text/symbols.d.ts +0 -11
  688. package/types/core/tracks/text/text-track.d.ts +0 -137
  689. package/types/core/tracks/text/text-tracks.d.ts +0 -55
  690. package/types/core/tracks/text/utils.d.ts +0 -8
  691. package/types/elements/bundles/cdn/player.core.d.ts +0 -5
  692. package/types/elements/bundles/cdn/player.d.ts +0 -7
  693. package/types/elements/bundles/cdn/plyr.d.ts +0 -5
  694. package/types/elements/bundles/cdn-legacy/player-with-default.d.ts +0 -4
  695. package/types/elements/bundles/cdn-legacy/player-with-layouts.d.ts +0 -4
  696. package/types/elements/bundles/cdn-legacy/player-with-plyr.d.ts +0 -3
  697. package/types/elements/bundles/cdn-legacy/player.d.ts +0 -3
  698. package/types/elements/bundles/icons.d.ts +0 -2
  699. package/types/elements/bundles/player-layouts/default.d.ts +0 -1
  700. package/types/elements/bundles/player-layouts/index.d.ts +0 -1
  701. package/types/elements/bundles/player-layouts/plyr.d.ts +0 -1
  702. package/types/elements/bundles/player-ui.d.ts +0 -1
  703. package/types/elements/bundles/player.d.ts +0 -1
  704. package/types/elements/define/announcer-element.d.ts +0 -18
  705. package/types/elements/define/buttons/airplay-button-element.d.ts +0 -19
  706. package/types/elements/define/buttons/caption-button-element.d.ts +0 -20
  707. package/types/elements/define/buttons/fullscreen-button-element.d.ts +0 -20
  708. package/types/elements/define/buttons/google-cast-button-element.d.ts +0 -19
  709. package/types/elements/define/buttons/live-button-element.d.ts +0 -20
  710. package/types/elements/define/buttons/mute-button-element.d.ts +0 -21
  711. package/types/elements/define/buttons/pip-button-element.d.ts +0 -20
  712. package/types/elements/define/buttons/play-button-element.d.ts +0 -21
  713. package/types/elements/define/buttons/seek-button-element.d.ts +0 -24
  714. package/types/elements/define/buttons/toggle-button-element.d.ts +0 -19
  715. package/types/elements/define/captions-element.d.ts +0 -18
  716. package/types/elements/define/chapter-title-element.d.ts +0 -30
  717. package/types/elements/define/controls-element.d.ts +0 -24
  718. package/types/elements/define/controls-group-element.d.ts +0 -24
  719. package/types/elements/define/gesture-element.d.ts +0 -22
  720. package/types/elements/define/layouts/default/audio-layout-element.d.ts +0 -29
  721. package/types/elements/define/layouts/default/audio-layout.d.ts +0 -1
  722. package/types/elements/define/layouts/default/icons-loader.d.ts +0 -5
  723. package/types/elements/define/layouts/default/icons.d.ts +0 -52
  724. package/types/elements/define/layouts/default/slots.d.ts +0 -2
  725. package/types/elements/define/layouts/default/ui/announcer.d.ts +0 -1
  726. package/types/elements/define/layouts/default/ui/buttons.d.ts +0 -31
  727. package/types/elements/define/layouts/default/ui/captions.d.ts +0 -1
  728. package/types/elements/define/layouts/default/ui/controls.d.ts +0 -1
  729. package/types/elements/define/layouts/default/ui/keyboard-display.d.ts +0 -1
  730. package/types/elements/define/layouts/default/ui/menu/accessibility-menu.d.ts +0 -1
  731. package/types/elements/define/layouts/default/ui/menu/audio-menu.d.ts +0 -1
  732. package/types/elements/define/layouts/default/ui/menu/captions-menu.d.ts +0 -1
  733. package/types/elements/define/layouts/default/ui/menu/chapters-menu.d.ts +0 -8
  734. package/types/elements/define/layouts/default/ui/menu/episodes-menu.d.ts +0 -8
  735. package/types/elements/define/layouts/default/ui/menu/font-menu.d.ts +0 -1
  736. package/types/elements/define/layouts/default/ui/menu/items/menu-checkbox.d.ts +0 -8
  737. package/types/elements/define/layouts/default/ui/menu/items/menu-items.d.ts +0 -26
  738. package/types/elements/define/layouts/default/ui/menu/items/menu-slider.d.ts +0 -3
  739. package/types/elements/define/layouts/default/ui/menu/menu-portal.d.ts +0 -4
  740. package/types/elements/define/layouts/default/ui/menu/playback-menu.d.ts +0 -1
  741. package/types/elements/define/layouts/default/ui/menu/settings-menu.d.ts +0 -8
  742. package/types/elements/define/layouts/default/ui/slider.d.ts +0 -10
  743. package/types/elements/define/layouts/default/ui/time.d.ts +0 -3
  744. package/types/elements/define/layouts/default/ui/title.d.ts +0 -2
  745. package/types/elements/define/layouts/default/ui/utils.d.ts +0 -3
  746. package/types/elements/define/layouts/default/video-layout-element.d.ts +0 -29
  747. package/types/elements/define/layouts/default/video-layout.d.ts +0 -5
  748. package/types/elements/define/layouts/icons/icons-loader.d.ts +0 -11
  749. package/types/elements/define/layouts/icons/layout-icons-loader.d.ts +0 -4
  750. package/types/elements/define/layouts/layout-element.d.ts +0 -38
  751. package/types/elements/define/layouts/layout-name.d.ts +0 -2
  752. package/types/elements/define/layouts/plyr/icons/plyr-airplay.d.ts +0 -2
  753. package/types/elements/define/layouts/plyr/icons/plyr-captions-off.d.ts +0 -2
  754. package/types/elements/define/layouts/plyr/icons/plyr-captions-on.d.ts +0 -2
  755. package/types/elements/define/layouts/plyr/icons/plyr-download.d.ts +0 -2
  756. package/types/elements/define/layouts/plyr/icons/plyr-enter-fullscreen.d.ts +0 -2
  757. package/types/elements/define/layouts/plyr/icons/plyr-exit-fullscreen.d.ts +0 -2
  758. package/types/elements/define/layouts/plyr/icons/plyr-fast-forward.d.ts +0 -2
  759. package/types/elements/define/layouts/plyr/icons/plyr-muted.d.ts +0 -2
  760. package/types/elements/define/layouts/plyr/icons/plyr-pause.d.ts +0 -2
  761. package/types/elements/define/layouts/plyr/icons/plyr-pip.d.ts +0 -2
  762. package/types/elements/define/layouts/plyr/icons/plyr-play.d.ts +0 -2
  763. package/types/elements/define/layouts/plyr/icons/plyr-restart.d.ts +0 -2
  764. package/types/elements/define/layouts/plyr/icons/plyr-rewind.d.ts +0 -2
  765. package/types/elements/define/layouts/plyr/icons/plyr-settings.d.ts +0 -2
  766. package/types/elements/define/layouts/plyr/icons/plyr-volume.d.ts +0 -2
  767. package/types/elements/define/layouts/plyr/icons-loader.d.ts +0 -5
  768. package/types/elements/define/layouts/plyr/icons.d.ts +0 -18
  769. package/types/elements/define/layouts/plyr/plyr-layout-element.d.ts +0 -26
  770. package/types/elements/define/layouts/plyr/ui.d.ts +0 -3
  771. package/types/elements/define/layouts/slot-manager.d.ts +0 -7
  772. package/types/elements/define/layouts/slot-observer.d.ts +0 -12
  773. package/types/elements/define/menus/_template.d.ts +0 -7
  774. package/types/elements/define/menus/audio-gain-group-element.d.ts +0 -31
  775. package/types/elements/define/menus/audio-radio-group-element.d.ts +0 -31
  776. package/types/elements/define/menus/captions-radio-group-element.d.ts +0 -31
  777. package/types/elements/define/menus/chapters-radio-group-element.d.ts +0 -36
  778. package/types/elements/define/menus/menu-button-element.d.ts +0 -25
  779. package/types/elements/define/menus/menu-element.d.ts +0 -26
  780. package/types/elements/define/menus/menu-item-element.d.ts +0 -22
  781. package/types/elements/define/menus/menu-items-element.d.ts +0 -25
  782. package/types/elements/define/menus/menu-portal-element.d.ts +0 -25
  783. package/types/elements/define/menus/quality-radio-group-element.d.ts +0 -33
  784. package/types/elements/define/menus/radio-element.d.ts +0 -22
  785. package/types/elements/define/menus/radio-group-element.d.ts +0 -22
  786. package/types/elements/define/menus/speed-radio-group-element.d.ts +0 -31
  787. package/types/elements/define/player-element.d.ts +0 -24
  788. package/types/elements/define/poster-element.d.ts +0 -25
  789. package/types/elements/define/provider-cast-display.d.ts +0 -2
  790. package/types/elements/define/provider-element.d.ts +0 -25
  791. package/types/elements/define/sliders/audio-gain-slider-element.d.ts +0 -32
  792. package/types/elements/define/sliders/quality-slider-element.d.ts +0 -32
  793. package/types/elements/define/sliders/slider-chapters-element.d.ts +0 -31
  794. package/types/elements/define/sliders/slider-element.d.ts +0 -23
  795. package/types/elements/define/sliders/slider-preview-element.d.ts +0 -14
  796. package/types/elements/define/sliders/slider-steps-element.d.ts +0 -28
  797. package/types/elements/define/sliders/slider-thumbnail-element.d.ts +0 -26
  798. package/types/elements/define/sliders/slider-value-element.d.ts +0 -37
  799. package/types/elements/define/sliders/slider-video-element.d.ts +0 -25
  800. package/types/elements/define/sliders/speed-slider-element.d.ts +0 -32
  801. package/types/elements/define/sliders/time-slider-element.d.ts +0 -32
  802. package/types/elements/define/sliders/volume-slider-element.d.ts +0 -32
  803. package/types/elements/define/spinner-element.d.ts +0 -50
  804. package/types/elements/define/thumbnail-element.d.ts +0 -29
  805. package/types/elements/define/time-element.d.ts +0 -24
  806. package/types/elements/define/title-element.d.ts +0 -23
  807. package/types/elements/define/tooltips/tooltip-content-element.d.ts +0 -26
  808. package/types/elements/define/tooltips/tooltip-element.d.ts +0 -26
  809. package/types/elements/define/tooltips/tooltip-trigger-element.d.ts +0 -27
  810. package/types/elements/icon.d.ts +0 -10
  811. package/types/elements/index.d.ts +0 -56
  812. package/types/elements/lit/directives/signal.d.ts +0 -1
  813. package/types/elements/lit/html.d.ts +0 -4
  814. package/types/elements/lit/lit-element.d.ts +0 -8
  815. package/types/elements/state-controller.d.ts +0 -5
  816. package/types/exports/components.d.ts +0 -59
  817. package/types/exports/core.d.ts +0 -26
  818. package/types/exports/events.d.ts +0 -32
  819. package/types/exports/font.d.ts +0 -2
  820. package/types/exports/foundation.d.ts +0 -8
  821. package/types/exports/maverick.d.ts +0 -1
  822. package/types/exports/providers.d.ts +0 -22
  823. package/types/exports/utils.d.ts +0 -4
  824. package/types/foundation/fullscreen/controller.d.ts +0 -39
  825. package/types/foundation/fullscreen/events.d.ts +0 -25
  826. package/types/foundation/list/list.d.ts +0 -64
  827. package/types/foundation/list/select-list.d.ts +0 -30
  828. package/types/foundation/list/symbols.d.ts +0 -14
  829. package/types/foundation/logger/colors.d.ts +0 -5
  830. package/types/foundation/logger/controller.d.ts +0 -20
  831. package/types/foundation/logger/events.d.ts +0 -26
  832. package/types/foundation/logger/grouped-log.d.ts +0 -22
  833. package/types/foundation/logger/log-level.d.ts +0 -15
  834. package/types/foundation/logger/log-printer.d.ts +0 -11
  835. package/types/foundation/logger/ms.d.ts +0 -4
  836. package/types/foundation/observers/focus-visible.d.ts +0 -7
  837. package/types/foundation/observers/intersection-observer.d.ts +0 -36
  838. package/types/foundation/observers/page-visibility.d.ts +0 -37
  839. package/types/foundation/observers/raf-loop.d.ts +0 -6
  840. package/types/foundation/orientation/controller.d.ts +0 -62
  841. package/types/foundation/orientation/events.d.ts +0 -16
  842. package/types/foundation/orientation/types.d.ts +0 -85
  843. package/types/foundation/queue/queue.d.ts +0 -24
  844. package/types/foundation/queue/request-queue.d.ts +0 -42
  845. package/types/global/layouts/default.d.ts +0 -9
  846. package/types/global/layouts/loader.d.ts +0 -5
  847. package/types/global/layouts/plyr.d.ts +0 -9
  848. package/types/global/player.d.ts +0 -26
  849. package/types/index.d.ts +0 -6
  850. package/types/plugins.d.ts +0 -11
  851. package/types/providers/audio/loader.d.ts +0 -12
  852. package/types/providers/audio/provider.d.ts +0 -29
  853. package/types/providers/dash/dash.d.ts +0 -15
  854. package/types/providers/dash/events.d.ts +0 -570
  855. package/types/providers/dash/lib-loader.d.ts +0 -6
  856. package/types/providers/dash/loader.d.ts +0 -10
  857. package/types/providers/dash/provider.d.ts +0 -62
  858. package/types/providers/dash/types.d.ts +0 -13
  859. package/types/providers/embed/EmbedProvider.d.ts +0 -18
  860. package/types/providers/google-cast/events.d.ts +0 -36
  861. package/types/providers/google-cast/loader.d.ts +0 -18
  862. package/types/providers/google-cast/media-info.d.ts +0 -11
  863. package/types/providers/google-cast/provider.d.ts +0 -48
  864. package/types/providers/google-cast/tracks.d.ts +0 -10
  865. package/types/providers/google-cast/types.d.ts +0 -3
  866. package/types/providers/google-cast/utils.d.ts +0 -34
  867. package/types/providers/hls/events.d.ts +0 -463
  868. package/types/providers/hls/hls.d.ts +0 -14
  869. package/types/providers/hls/lib-loader.d.ts +0 -6
  870. package/types/providers/hls/loader.d.ts +0 -10
  871. package/types/providers/hls/provider.d.ts +0 -64
  872. package/types/providers/hls/types.d.ts +0 -9
  873. package/types/providers/html/audio/audio-context.d.ts +0 -6
  874. package/types/providers/html/audio/audio-gain.d.ts +0 -10
  875. package/types/providers/html/html/342/200/223media-events.d.ts +0 -6
  876. package/types/providers/html/native-audio-tracks.d.ts +0 -6
  877. package/types/providers/html/provider.d.ts +0 -34
  878. package/types/providers/html/remote-playback.d.ts +0 -18
  879. package/types/providers/type-check.d.ts +0 -28
  880. package/types/providers/types.d.ts +0 -95
  881. package/types/providers/video/loader.d.ts +0 -12
  882. package/types/providers/video/native-hls-text-tracks.d.ts +0 -9
  883. package/types/providers/video/picture-in-picture.d.ts +0 -16
  884. package/types/providers/video/presentation/events.d.ts +0 -11
  885. package/types/providers/video/presentation/video-presentation.d.ts +0 -30
  886. package/types/providers/video/provider.d.ts +0 -34
  887. package/types/providers/vimeo/embed/command.d.ts +0 -81
  888. package/types/providers/vimeo/embed/event.d.ts +0 -58
  889. package/types/providers/vimeo/embed/message.d.ts +0 -8
  890. package/types/providers/vimeo/embed/misc.d.ts +0 -52
  891. package/types/providers/vimeo/embed/params.d.ts +0 -148
  892. package/types/providers/vimeo/loader.d.ts +0 -14
  893. package/types/providers/vimeo/provider.d.ts +0 -61
  894. package/types/providers/vimeo/utils.d.ts +0 -6
  895. package/types/providers/youtube/embed/command.d.ts +0 -13
  896. package/types/providers/youtube/embed/event.d.ts +0 -1
  897. package/types/providers/youtube/embed/message.d.ts +0 -50
  898. package/types/providers/youtube/embed/params.d.ts +0 -218
  899. package/types/providers/youtube/embed/quality.d.ts +0 -2
  900. package/types/providers/youtube/embed/state.d.ts +0 -12
  901. package/types/providers/youtube/loader.d.ts +0 -14
  902. package/types/providers/youtube/provider.d.ts +0 -61
  903. package/types/providers/youtube/utils.d.ts +0 -2
  904. package/types/utils/aria.d.ts +0 -4
  905. package/types/utils/array.d.ts +0 -1
  906. package/types/utils/color.d.ts +0 -1
  907. package/types/utils/dom.d.ts +0 -41
  908. package/types/utils/error.d.ts +0 -2
  909. package/types/utils/language.d.ts +0 -8
  910. package/types/utils/manifest.d.ts +0 -3
  911. package/types/utils/mime.d.ts +0 -15
  912. package/types/utils/network.d.ts +0 -17
  913. package/types/utils/number.d.ts +0 -17
  914. package/types/utils/promise.d.ts +0 -1
  915. package/types/utils/scroll.d.ts +0 -5
  916. package/types/utils/support.d.ts +0 -72
  917. package/types/utils/time.d.ts +0 -57
  918. package/vite.config.ts +0 -61
  919. /package/{npm/analyze.json.d.ts → analyze.json.d.ts} +0 -0
  920. /package/{npm/bundle.d.ts → bundle.d.ts} +0 -0
  921. /package/{npm/dom.d.ts → dom.d.ts} +0 -0
  922. /package/{npm/empty.vtt → empty.vtt} +0 -0
  923. /package/{npm/google-cast.d.ts → google-cast.d.ts} +0 -0
  924. /package/{npm/player → player}/index.d.ts +0 -0
  925. /package/{npm/player → player}/layouts/default.d.ts +0 -0
  926. /package/{npm/player → player}/layouts/index.d.ts +0 -0
  927. /package/{npm/player → player}/layouts/plyr.d.ts +0 -0
  928. /package/{styles/player → player/styles}/base.css +0 -0
  929. /package/{styles/player → player/styles}/default/buffering.css +0 -0
  930. /package/{styles/player → player/styles}/default/buttons.css +0 -0
  931. /package/{styles/player → player/styles}/default/captions.css +0 -0
  932. /package/{styles/player → player/styles}/default/chapter-title.css +0 -0
  933. /package/{styles/player → player/styles}/default/controls.css +0 -0
  934. /package/{styles/player → player/styles}/default/gestures.css +0 -0
  935. /package/{styles/player → player/styles}/default/icons.css +0 -0
  936. /package/{styles/player → player/styles}/default/keyboard.css +0 -0
  937. /package/{styles/player → player/styles}/default/layouts/audio.css +0 -0
  938. /package/{styles/player → player/styles}/default/layouts/video.css +0 -0
  939. /package/{styles/player → player/styles}/default/menus.css +0 -0
  940. /package/{styles/player → player/styles}/default/poster.css +0 -0
  941. /package/{styles/player → player/styles}/default/sliders.css +0 -0
  942. /package/{styles/player → player/styles}/default/theme.css +0 -0
  943. /package/{styles/player → player/styles}/default/thumbnail.css +0 -0
  944. /package/{styles/player → player/styles}/default/time.css +0 -0
  945. /package/{styles/player → player/styles}/default/tooltips.css +0 -0
  946. /package/{styles/player → player/styles}/plyr/theme.css +0 -0
  947. /package/{npm/player → player}/ui.d.ts +0 -0
  948. /package/{npm/tailwind.cjs → tailwind.cjs} +0 -0
  949. /package/{npm/tailwind.d.cts → tailwind.d.cts} +0 -0
@@ -1,1077 +0,0 @@
1
- import debounce from 'just-debounce-it';
2
- import throttle from 'just-throttle';
3
- import { effect, onDispose, peek, untrack, type StopEffect } from 'maverick.js';
4
- import { DOMEvent, EventsController, listenEvent } from 'maverick.js/std';
5
-
6
- import { ListSymbol } from '../../foundation/list/symbols';
7
- import { canChangeVolume } from '../../utils/support';
8
- import type { MediaContext } from '../api/media-context';
9
- import * as ME from '../api/media-events';
10
- import { MediaPlayerController } from '../api/player-controller';
11
- import { softResetMediaState } from '../api/player-state';
12
- import { isVideoQualitySrc, type Src } from '../api/src-types';
13
- import type {
14
- VideoQualityAddEvent,
15
- VideoQualityChangeEvent,
16
- VideoQualityRemoveEvent,
17
- } from '../quality/events';
18
- import { QualitySymbol } from '../quality/symbols';
19
- import type { VideoQuality } from '../quality/video-quality';
20
- import {
21
- getTimeRangesEnd,
22
- getTimeRangesStart,
23
- TimeRange,
24
- updateTimeIntervals,
25
- type TimeInterval,
26
- } from '../time-ranges';
27
- import type {
28
- AudioTrackAddEvent,
29
- AudioTrackChangeEvent,
30
- AudioTrackRemoveEvent,
31
- } from '../tracks/audio/events';
32
- import { TextTrackSymbol } from '../tracks/text/symbols';
33
- import type {
34
- TextTrackAddEvent,
35
- TextTrackListModeChangeEvent,
36
- TextTrackRemoveEvent,
37
- } from '../tracks/text/text-tracks';
38
- import type { MediaRequestContext, MediaRequestQueueItems } from './media-request-manager';
39
- import { TRACKED_EVENT } from './tracked-media-events';
40
-
41
- /**
42
- * This class is responsible for listening to and normalizing media events, updating the media
43
- * state context, and satisfying media requests.
44
- */
45
- export class MediaStateManager extends MediaPlayerController {
46
- readonly #request: MediaRequestContext;
47
- readonly #media: MediaContext;
48
- readonly #trackedEvents = new Map<string, ME.MediaEvent>();
49
-
50
- #clipEnded = false;
51
-
52
- #playedIntervals: TimeInterval[] = [];
53
- #playedInterval: TimeInterval = [-1, -1];
54
-
55
- #firingWaiting = false;
56
- #waitingTrigger: Event | undefined;
57
-
58
- constructor(request: MediaRequestContext, media: MediaContext) {
59
- super();
60
- this.#request = request;
61
- this.#media = media;
62
- }
63
-
64
- protected override onAttach(el: HTMLElement): void {
65
- el.setAttribute('aria-busy', 'true');
66
-
67
- new EventsController(this as MediaPlayerController)
68
- .add('fullscreen-change', this['fullscreen-change'].bind(this))
69
- .add('fullscreen-error', this['fullscreen-error'].bind(this))
70
- .add('orientation-change', this['orientation-change'].bind(this));
71
- }
72
-
73
- protected override onConnect(el: HTMLElement) {
74
- effect(this.#watchCanSetVolume.bind(this));
75
-
76
- this.#addTextTrackListeners();
77
- this.#addQualityListeners();
78
- this.#addAudioTrackListeners();
79
- this.#resumePlaybackOnConnect();
80
-
81
- onDispose(this.#pausePlaybackOnDisconnect.bind(this));
82
- }
83
-
84
- protected override onDestroy(): void {
85
- const { audioTracks, qualities, textTracks } = this.#media;
86
-
87
- audioTracks[ListSymbol.reset]();
88
- qualities[ListSymbol.reset]();
89
- textTracks[ListSymbol.reset]();
90
-
91
- this.#stopWatchingQualityResize();
92
- }
93
-
94
- handle(event: Event) {
95
- if (!this.scope) return;
96
-
97
- const type = event.type as keyof ME.MediaEvents;
98
-
99
- untrack(() => this[event.type]?.(event));
100
-
101
- if (!__SERVER__) {
102
- if (TRACKED_EVENT.has(type)) this.#trackedEvents.set(type, event as ME.MediaEvent);
103
- this.dispatch(event);
104
- }
105
- }
106
-
107
- #isPlayingOnDisconnect = false;
108
- #resumePlaybackOnConnect() {
109
- if (!this.#isPlayingOnDisconnect) return;
110
-
111
- requestAnimationFrame(() => {
112
- if (!this.scope) return;
113
- this.#media.remote.play(new DOMEvent<void>('dom-connect'));
114
- });
115
-
116
- this.#isPlayingOnDisconnect = false;
117
- }
118
-
119
- #pausePlaybackOnDisconnect() {
120
- // It might already be set in `pause` handler.
121
- if (this.#isPlayingOnDisconnect) return;
122
- this.#isPlayingOnDisconnect = !this.$state.paused();
123
- this.#media.$provider()?.pause();
124
- }
125
-
126
- #resetTracking() {
127
- this.#stopWaiting();
128
- this.#clipEnded = false;
129
- this.#request.replaying = false;
130
- this.#request.looping = false;
131
- this.#firingWaiting = false;
132
- this.#waitingTrigger = undefined;
133
- this.#trackedEvents.clear();
134
- }
135
-
136
- #satisfyRequest<T extends keyof MediaRequestQueueItems>(request: T, event: DOMEvent) {
137
- const requestEvent = this.#request.queue.serve(request);
138
- if (!requestEvent) return;
139
- (event as ME.MediaEvent).request = requestEvent;
140
- event.triggers.add(requestEvent);
141
- }
142
-
143
- #addTextTrackListeners() {
144
- this.#onTextTracksChange();
145
- this.#onTextTrackModeChange();
146
-
147
- const textTracks = this.#media.textTracks;
148
-
149
- new EventsController(textTracks)
150
- .add('add', this.#onTextTracksChange.bind(this))
151
- .add('remove', this.#onTextTracksChange.bind(this))
152
- .add('mode-change', this.#onTextTrackModeChange.bind(this));
153
- }
154
-
155
- #addQualityListeners() {
156
- const qualities = this.#media.qualities;
157
-
158
- new EventsController(qualities)
159
- .add('add', this.#onQualitiesChange.bind(this))
160
- .add('remove', this.#onQualitiesChange.bind(this))
161
- .add('change', this.#onQualityChange.bind(this))
162
- .add('auto-change', this.#onAutoQualityChange.bind(this))
163
- .add('readonly-change', this.#onCanSetQualityChange.bind(this));
164
- }
165
-
166
- #addAudioTrackListeners() {
167
- const audioTracks = this.#media.audioTracks;
168
-
169
- new EventsController(audioTracks)
170
- .add('add', this.#onAudioTracksChange.bind(this))
171
- .add('remove', this.#onAudioTracksChange.bind(this))
172
- .add('change', this.#onAudioTrackChange.bind(this));
173
- }
174
-
175
- #onTextTracksChange(event?: TextTrackAddEvent | TextTrackRemoveEvent) {
176
- const { textTracks } = this.$state;
177
- textTracks.set(this.#media.textTracks.toArray());
178
- this.dispatch('text-tracks-change', {
179
- detail: textTracks(),
180
- trigger: event,
181
- });
182
- }
183
-
184
- #onTextTrackModeChange(event?: TextTrackListModeChangeEvent) {
185
- if (event) this.#satisfyRequest('media-text-track-change-request', event);
186
-
187
- const current = this.#media.textTracks.selected,
188
- { textTrack } = this.$state;
189
-
190
- if (textTrack() !== current) {
191
- textTrack.set(current);
192
- this.dispatch('text-track-change', {
193
- detail: current,
194
- trigger: event,
195
- });
196
- }
197
- }
198
-
199
- #onAudioTracksChange(event?: AudioTrackAddEvent | AudioTrackRemoveEvent) {
200
- const { audioTracks } = this.$state;
201
- audioTracks.set(this.#media.audioTracks.toArray());
202
- this.dispatch('audio-tracks-change', {
203
- detail: audioTracks(),
204
- trigger: event,
205
- });
206
- }
207
-
208
- #onAudioTrackChange(event?: AudioTrackChangeEvent) {
209
- const { audioTrack } = this.$state;
210
-
211
- audioTrack.set(this.#media.audioTracks.selected);
212
- if (event) this.#satisfyRequest('media-audio-track-change-request', event);
213
-
214
- this.dispatch('audio-track-change', {
215
- detail: audioTrack(),
216
- trigger: event,
217
- });
218
- }
219
-
220
- #onQualitiesChange(event?: VideoQualityAddEvent | VideoQualityRemoveEvent) {
221
- const { qualities } = this.$state;
222
- qualities.set(this.#media.qualities.toArray());
223
- this.dispatch('qualities-change', {
224
- detail: qualities(),
225
- trigger: event,
226
- });
227
- }
228
-
229
- #onQualityChange(event?: VideoQualityChangeEvent) {
230
- const { quality } = this.$state;
231
-
232
- quality.set(this.#media.qualities.selected);
233
- if (event) this.#satisfyRequest('media-quality-change-request', event);
234
-
235
- this.dispatch('quality-change', {
236
- detail: quality(),
237
- trigger: event,
238
- });
239
- }
240
-
241
- #onAutoQualityChange() {
242
- const { qualities } = this.#media,
243
- isAuto = qualities.auto;
244
-
245
- this.$state.autoQuality.set(isAuto);
246
-
247
- if (!isAuto) this.#stopWatchingQualityResize();
248
- }
249
-
250
- #stopQualityResizeEffect: StopEffect | null = null;
251
- #watchQualityResize() {
252
- this.#stopWatchingQualityResize();
253
- this.#stopQualityResizeEffect = effect(() => {
254
- const { qualities } = this.#media,
255
- { mediaWidth, mediaHeight } = this.$state,
256
- w = mediaWidth(),
257
- h = mediaHeight();
258
-
259
- if (w === 0 || h === 0) return;
260
-
261
- let selectedQuality: VideoQuality | null = null,
262
- minScore = Infinity;
263
-
264
- for (const quality of qualities) {
265
- const score = Math.abs(quality.width - w) + Math.abs(quality.height - h);
266
- if (score < minScore) {
267
- minScore = score;
268
- selectedQuality = quality;
269
- }
270
- }
271
-
272
- if (selectedQuality) {
273
- qualities[ListSymbol.select](
274
- selectedQuality,
275
- true,
276
- new DOMEvent('resize', { detail: { width: w, height: h } }),
277
- );
278
- }
279
- });
280
- }
281
-
282
- #stopWatchingQualityResize() {
283
- this.#stopQualityResizeEffect?.();
284
- this.#stopQualityResizeEffect = null;
285
- }
286
-
287
- #onCanSetQualityChange() {
288
- this.$state.canSetQuality.set(!this.#media.qualities.readonly);
289
- }
290
-
291
- #watchCanSetVolume() {
292
- const { canSetVolume, isGoogleCastConnected } = this.$state;
293
-
294
- if (isGoogleCastConnected()) {
295
- // The provider will set this value accordingly.
296
- canSetVolume.set(false);
297
- return;
298
- }
299
-
300
- canChangeVolume().then(canSetVolume.set);
301
- }
302
-
303
- ['provider-change'](event: ME.MediaProviderChangeEvent) {
304
- const prevProvider = this.#media.$provider(),
305
- newProvider = event.detail;
306
-
307
- if (prevProvider?.type === newProvider?.type) return;
308
-
309
- prevProvider?.destroy?.();
310
- prevProvider?.scope?.dispose();
311
- this.#media.$provider.set(event.detail);
312
-
313
- if (prevProvider && event.detail === null) {
314
- this.#resetMediaState(event);
315
- }
316
- }
317
-
318
- ['provider-loader-change'](event: ME.MediaProviderLoaderChangeEvent) {
319
- if (__DEV__) {
320
- this.#media.logger
321
- ?.infoGroup(`Loader change \`${event.detail?.constructor.name}\``)
322
- .labelledLog('Event', event)
323
- .dispatch();
324
- }
325
- }
326
-
327
- ['auto-play'](event: ME.MediaAutoPlayEvent) {
328
- this.$state.autoPlayError.set(null);
329
- }
330
-
331
- ['auto-play-fail'](event: ME.MediaAutoPlayFailEvent) {
332
- this.$state.autoPlayError.set(event.detail);
333
- this.#resetTracking();
334
- }
335
-
336
- ['can-load'](event: ME.MediaCanLoadEvent) {
337
- this.$state.canLoad.set(true);
338
- this.#trackedEvents.set('can-load', event);
339
- this.#media.textTracks[TextTrackSymbol.canLoad]();
340
- this.#satisfyRequest('media-start-loading', event);
341
- }
342
-
343
- ['can-load-poster'](event: ME.MediaCanLoadEvent) {
344
- this.$state.canLoadPoster.set(true);
345
- this.#trackedEvents.set('can-load-poster', event);
346
- this.#satisfyRequest('media-poster-start-loading', event);
347
- }
348
-
349
- ['media-type-change'](event: ME.MediaTypeChangeEvent) {
350
- const sourceChangeEvent = this.#trackedEvents.get('source-change');
351
- if (sourceChangeEvent) event.triggers.add(sourceChangeEvent);
352
-
353
- const viewType = this.$state.viewType();
354
- this.$state.mediaType.set(event.detail);
355
-
356
- const providedViewType = this.$state.providedViewType(),
357
- currentViewType = providedViewType === 'unknown' ? event.detail : providedViewType;
358
-
359
- if (viewType !== currentViewType) {
360
- if (__SERVER__) {
361
- this.$state.inferredViewType.set(currentViewType);
362
- } else {
363
- // Wait for player to resize.
364
- setTimeout(() => {
365
- requestAnimationFrame(() => {
366
- if (!this.scope) return;
367
- this.$state.inferredViewType.set(event.detail);
368
- this.dispatch('view-type-change', {
369
- detail: currentViewType,
370
- trigger: event,
371
- });
372
- });
373
- }, 0);
374
- }
375
- }
376
- }
377
-
378
- ['stream-type-change'](event: ME.MediaStreamTypeChangeEvent) {
379
- const sourceChangeEvent = this.#trackedEvents.get('source-change');
380
- if (sourceChangeEvent) event.triggers.add(sourceChangeEvent);
381
-
382
- const { streamType, inferredStreamType } = this.$state;
383
- inferredStreamType.set(event.detail);
384
- (event as any).detail = streamType();
385
- }
386
-
387
- ['rate-change'](event: ME.MediaRateChangeEvent) {
388
- const { storage } = this.#media,
389
- { canPlay } = this.$state;
390
-
391
- this.$state.playbackRate.set(event.detail);
392
- this.#satisfyRequest('media-rate-change-request', event);
393
-
394
- if (canPlay()) {
395
- storage?.setPlaybackRate?.(event.detail);
396
- }
397
- }
398
-
399
- ['remote-playback-change'](event: ME.MediaRemotePlaybackChangeEvent) {
400
- const { remotePlaybackState, remotePlaybackType } = this.$state,
401
- { type, state } = event.detail,
402
- isConnected = state === 'connected';
403
-
404
- remotePlaybackType.set(type);
405
- remotePlaybackState.set(state);
406
-
407
- const key: keyof MediaRequestQueueItems =
408
- type === 'airplay' ? 'media-airplay-request' : 'media-google-cast-request';
409
-
410
- if (isConnected) {
411
- this.#satisfyRequest(key, event);
412
- } else {
413
- const requestEvent = this.#request.queue.peek(key);
414
- if (requestEvent) {
415
- event.request = requestEvent;
416
- event.triggers.add(requestEvent);
417
- }
418
- }
419
- }
420
-
421
- ['sources-change'](event: ME.MediaSourcesChangeEvent) {
422
- const prevSources = this.$state.sources(),
423
- newSources = event.detail;
424
-
425
- this.$state.sources.set(newSources);
426
-
427
- this.#onSourceQualitiesChange(prevSources, newSources, event);
428
- }
429
-
430
- #onSourceQualitiesChange(prevSources: Src[], newSources: Src[], trigger?: Event) {
431
- let { qualities } = this.#media,
432
- added = false,
433
- removed = false;
434
-
435
- // Remove old qualities.
436
- for (const prevSrc of prevSources) {
437
- if (!isVideoQualitySrc(prevSrc)) continue;
438
- const exists = newSources.some((s) => s.src === prevSrc.src);
439
- if (!exists) {
440
- const quality = qualities.getBySrc(prevSrc.src);
441
- if (quality) {
442
- qualities[ListSymbol.remove](quality, trigger);
443
- removed = true;
444
- }
445
- }
446
- }
447
-
448
- // Do a complete reset if source qualities has changed.
449
- if (removed && !qualities.length) {
450
- this.$state.savedState.set(null);
451
- qualities[ListSymbol.reset](trigger);
452
- }
453
-
454
- // Add new qualities.
455
- for (const src of newSources) {
456
- if (!isVideoQualitySrc(src) || qualities.getBySrc(src.src)) continue;
457
-
458
- const quality = {
459
- id: src.id ?? src.height + 'p',
460
- bitrate: null,
461
- codec: null,
462
- ...src,
463
- selected: false,
464
- };
465
-
466
- qualities[ListSymbol.add](quality, trigger);
467
- added = true;
468
- }
469
-
470
- if (added && !qualities[QualitySymbol.enableAuto]) {
471
- // Logic for this is inside `onAutoQualityChange` method.
472
- this.#watchQualityResize();
473
- qualities[QualitySymbol.enableAuto] = this.#watchQualityResize.bind(this);
474
- qualities[QualitySymbol.setAuto](true, trigger);
475
- }
476
- }
477
-
478
- ['source-change'](event: ME.MediaSourceChangeEvent) {
479
- event.isQualityChange = event.originEvent?.type === 'quality-change';
480
-
481
- const source = event.detail;
482
-
483
- this.#resetMediaState(event, event.isQualityChange);
484
- this.#trackedEvents.set(event.type, event);
485
-
486
- this.$state.source.set(source);
487
- this.el?.setAttribute('aria-busy', 'true');
488
-
489
- if (__DEV__) {
490
- this.#media.logger
491
- ?.infoGroup('📼 Media source change')
492
- .labelledLog('Source', source)
493
- .dispatch();
494
- }
495
- }
496
-
497
- #resetMediaState(event: Event, isSourceQualityChange = false) {
498
- const { audioTracks, qualities } = this.#media;
499
-
500
- if (!isSourceQualityChange) {
501
- this.#playedIntervals = [];
502
- this.#playedInterval = [-1, -1];
503
-
504
- audioTracks[ListSymbol.reset](event);
505
- qualities[ListSymbol.reset](event);
506
-
507
- softResetMediaState(this.$state, isSourceQualityChange);
508
-
509
- this.#resetTracking();
510
-
511
- return;
512
- }
513
-
514
- softResetMediaState(this.$state, isSourceQualityChange);
515
- this.#resetTracking();
516
- }
517
-
518
- ['abort'](event: ME.MediaAbortEvent) {
519
- const sourceChangeEvent = this.#trackedEvents.get('source-change');
520
- if (sourceChangeEvent) event.triggers.add(sourceChangeEvent);
521
-
522
- const canLoadEvent = this.#trackedEvents.get('can-load');
523
- if (canLoadEvent && !event.triggers.hasType('can-load')) {
524
- event.triggers.add(canLoadEvent);
525
- }
526
- }
527
-
528
- ['load-start'](event: ME.MediaLoadStartEvent) {
529
- const sourceChangeEvent = this.#trackedEvents.get('source-change');
530
- if (sourceChangeEvent) event.triggers.add(sourceChangeEvent);
531
- }
532
-
533
- ['error'](event: ME.MediaErrorEvent) {
534
- this.$state.error.set(event.detail);
535
-
536
- const abortEvent = this.#trackedEvents.get('abort');
537
- if (abortEvent) event.triggers.add(abortEvent);
538
-
539
- if (__DEV__) {
540
- this.#media.logger
541
- ?.errorGroup('Media Error')
542
- .labelledLog('Error', event.detail)
543
- .labelledLog('Event', event)
544
- .labelledLog('Context', this.#media)
545
- .dispatch();
546
- }
547
- }
548
-
549
- ['loaded-metadata'](event: ME.MediaLoadedMetadataEvent) {
550
- const loadStartEvent = this.#trackedEvents.get('load-start');
551
- if (loadStartEvent) event.triggers.add(loadStartEvent);
552
- }
553
-
554
- ['loaded-data'](event: ME.MediaLoadedDataEvent) {
555
- const loadStartEvent = this.#trackedEvents.get('load-start');
556
- if (loadStartEvent) event.triggers.add(loadStartEvent);
557
- }
558
-
559
- ['can-play'](event: ME.MediaCanPlayEvent) {
560
- const loadedMetadata = this.#trackedEvents.get('loaded-metadata');
561
- if (loadedMetadata) event.triggers.add(loadedMetadata);
562
-
563
- this.#onCanPlayDetail(event.detail);
564
- this.el?.setAttribute('aria-busy', 'false');
565
- }
566
-
567
- ['can-play-through'](event: ME.MediaCanPlayThroughEvent) {
568
- this.#onCanPlayDetail(event.detail);
569
-
570
- const canPlay = this.#trackedEvents.get('can-play');
571
- if (canPlay) event.triggers.add(canPlay);
572
- }
573
-
574
- #onCanPlayDetail(detail: ME.MediaCanPlayDetail) {
575
- const { seekable, buffered, intrinsicDuration, canPlay } = this.$state;
576
-
577
- canPlay.set(true);
578
- buffered.set(detail.buffered);
579
- seekable.set(detail.seekable);
580
-
581
- // Do not fetch `seekableEnd` from `$state` as it might be clipped.
582
- const seekableEnd = getTimeRangesEnd(detail.seekable) ?? Infinity;
583
- intrinsicDuration.set(seekableEnd);
584
- }
585
-
586
- ['duration-change'](event: ME.MediaDurationChangeEvent) {
587
- const { live, intrinsicDuration, providedDuration, clipEndTime, ended } = this.$state,
588
- time = event.detail;
589
-
590
- if (!live()) {
591
- const duration = !Number.isNaN(time) ? time : 0;
592
- intrinsicDuration.set(duration);
593
- if (ended()) this.#onEndPrecisionChange(event);
594
- }
595
-
596
- if (providedDuration() > 0 || clipEndTime() > 0) {
597
- event.stopImmediatePropagation();
598
- }
599
- }
600
-
601
- ['progress'](event: ME.MediaProgressEvent) {
602
- const { buffered, seekable } = this.$state,
603
- { buffered: newBuffered, seekable: newSeekable } = event.detail,
604
- newBufferedEnd = getTimeRangesEnd(newBuffered),
605
- hasBufferedLengthChanged = newBuffered.length !== buffered().length,
606
- hasBufferedEndChanged = newBufferedEnd !== getTimeRangesEnd(buffered()),
607
- newSeekableEnd = getTimeRangesEnd(newSeekable),
608
- hasSeekableLengthChanged = newSeekable.length !== seekable().length,
609
- hasSeekableEndChanged = newSeekableEnd !== getTimeRangesEnd(seekable());
610
-
611
- if (hasBufferedLengthChanged || hasBufferedEndChanged) {
612
- buffered.set(newBuffered);
613
- }
614
-
615
- if (hasSeekableLengthChanged || hasSeekableEndChanged) {
616
- seekable.set(newSeekable);
617
- }
618
- }
619
-
620
- ['play'](event: ME.MediaPlayEvent) {
621
- const {
622
- paused,
623
- autoPlayError,
624
- ended,
625
- autoPlaying,
626
- playsInline,
627
- pointer,
628
- muted,
629
- viewType,
630
- live,
631
- userBehindLiveEdge,
632
- } = this.$state;
633
-
634
- this.#resetPlaybackIfNeeded();
635
-
636
- if (!paused()) {
637
- event.stopImmediatePropagation();
638
- return;
639
- }
640
-
641
- event.autoPlay = autoPlaying();
642
-
643
- const waitingEvent = this.#trackedEvents.get('waiting');
644
- if (waitingEvent) event.triggers.add(waitingEvent);
645
-
646
- this.#satisfyRequest('media-play-request', event);
647
- this.#trackedEvents.set('play', event);
648
-
649
- paused.set(false);
650
- autoPlayError.set(null);
651
-
652
- if (event.autoPlay) {
653
- this.handle(
654
- this.createEvent('auto-play', {
655
- detail: { muted: muted() },
656
- trigger: event,
657
- }),
658
- );
659
-
660
- autoPlaying.set(false);
661
- }
662
-
663
- if (ended() || this.#request.replaying) {
664
- this.#request.replaying = false;
665
- ended.set(false);
666
- this.handle(this.createEvent('replay', { trigger: event }));
667
- }
668
-
669
- if (!playsInline() && viewType() === 'video' && pointer() === 'coarse') {
670
- this.#media.remote.enterFullscreen('prefer-media', event);
671
- }
672
-
673
- if (live() && !userBehindLiveEdge()) {
674
- this.#media.remote.seekToLiveEdge(event);
675
- }
676
- }
677
-
678
- #resetPlaybackIfNeeded(trigger?: Event) {
679
- const provider = peek(this.#media.$provider);
680
- if (!provider) return;
681
-
682
- const { ended, seekableStart, clipEndTime, currentTime, realCurrentTime, duration } =
683
- this.$state;
684
-
685
- const shouldReset =
686
- ended() ||
687
- realCurrentTime() < seekableStart() ||
688
- (clipEndTime() > 0 && realCurrentTime() >= clipEndTime()) ||
689
- Math.abs(currentTime() - duration()) < 0.1;
690
-
691
- if (shouldReset) {
692
- this.dispatch('media-seek-request', {
693
- detail: seekableStart(),
694
- trigger,
695
- });
696
- }
697
-
698
- return shouldReset;
699
- }
700
-
701
- ['play-fail'](event: ME.MediaPlayFailEvent) {
702
- const { muted, autoPlaying } = this.$state;
703
-
704
- const playEvent = this.#trackedEvents.get('play');
705
- if (playEvent) event.triggers.add(playEvent);
706
-
707
- this.#satisfyRequest('media-play-request', event);
708
-
709
- const { paused, playing } = this.$state;
710
- paused.set(true);
711
- playing.set(false);
712
-
713
- this.#resetTracking();
714
- this.#trackedEvents.set('play-fail', event);
715
-
716
- if (event.autoPlay) {
717
- this.handle(
718
- this.createEvent('auto-play-fail', {
719
- detail: {
720
- muted: muted(),
721
- error: event.detail,
722
- },
723
- trigger: event,
724
- }),
725
- );
726
-
727
- autoPlaying.set(false);
728
- }
729
- }
730
-
731
- ['playing'](event: ME.MediaPlayingEvent) {
732
- const playEvent = this.#trackedEvents.get('play'),
733
- seekedEvent = this.#trackedEvents.get('seeked');
734
-
735
- if (playEvent) event.triggers.add(playEvent);
736
- else if (seekedEvent) event.triggers.add(seekedEvent);
737
-
738
- setTimeout(() => this.#resetTracking(), 0);
739
-
740
- const {
741
- paused,
742
- playing,
743
- live,
744
- liveSyncPosition,
745
- seekableEnd,
746
- started,
747
- currentTime,
748
- seeking,
749
- ended,
750
- } = this.$state;
751
-
752
- paused.set(false);
753
- playing.set(true);
754
- seeking.set(false);
755
- ended.set(false);
756
-
757
- if (this.#request.looping) {
758
- this.#request.looping = false;
759
- return;
760
- }
761
-
762
- if (live() && !started() && currentTime() === 0) {
763
- const end = liveSyncPosition() ?? seekableEnd() - 2;
764
- if (Number.isFinite(end)) this.#media.$provider()!.setCurrentTime(end);
765
- }
766
-
767
- this['started'](event);
768
- }
769
-
770
- ['started'](event: Event) {
771
- const { started } = this.$state;
772
- if (!started()) {
773
- started.set(true);
774
- this.handle(this.createEvent('started', { trigger: event }));
775
- }
776
- }
777
-
778
- ['pause'](event: ME.MediaPauseEvent) {
779
- if (!this.el?.isConnected) {
780
- this.#isPlayingOnDisconnect = true;
781
- }
782
-
783
- this.#satisfyRequest('media-pause-request', event);
784
-
785
- const seekedEvent = this.#trackedEvents.get('seeked');
786
- if (seekedEvent) event.triggers.add(seekedEvent);
787
-
788
- const { paused, playing } = this.$state;
789
- paused.set(true);
790
- playing.set(false);
791
-
792
- if (this.#clipEnded) {
793
- // Should fire after pause event.
794
- setTimeout(() => {
795
- this.handle(this.createEvent('end', { trigger: event }));
796
- this.#clipEnded = false;
797
- }, 0);
798
- }
799
-
800
- this.#resetTracking();
801
- }
802
-
803
- ['time-change'](event: ME.MediaTimeChangeEvent) {
804
- if (this.#request.looping) {
805
- event.stopImmediatePropagation();
806
- return;
807
- }
808
-
809
- let { waiting, played, clipEndTime, realCurrentTime, currentTime } = this.$state,
810
- newTime = event.detail,
811
- endTime = clipEndTime();
812
-
813
- realCurrentTime.set(newTime);
814
- this.#updatePlayed();
815
- waiting.set(false);
816
-
817
- for (const track of this.#media.textTracks) {
818
- track[TextTrackSymbol.updateActiveCues](newTime, event);
819
- }
820
-
821
- if (endTime > 0 && newTime >= endTime) {
822
- this.#clipEnded = true;
823
- this.dispatch('media-pause-request', { trigger: event });
824
- }
825
-
826
- this.#saveTime();
827
-
828
- this.dispatch('time-update', {
829
- detail: { currentTime: currentTime(), played: played() },
830
- trigger: event,
831
- });
832
- }
833
-
834
- #updatePlayed() {
835
- const { currentTime, played, paused } = this.$state;
836
-
837
- if (paused()) return;
838
-
839
- this.#playedInterval = updateTimeIntervals(
840
- this.#playedIntervals,
841
- this.#playedInterval,
842
- currentTime(),
843
- );
844
-
845
- played.set(new TimeRange(this.#playedIntervals));
846
- }
847
-
848
- // Called to update time again incase duration precision has changed.
849
- #onEndPrecisionChange(trigger?: Event) {
850
- const { clipStartTime, clipEndTime, duration } = this.$state,
851
- isClipped = clipStartTime() > 0 || clipEndTime() > 0;
852
-
853
- if (isClipped) return;
854
-
855
- this.handle(
856
- this.createEvent('time-change', {
857
- detail: duration(),
858
- trigger,
859
- }),
860
- );
861
- }
862
-
863
- #saveTime() {
864
- const { storage } = this.#media,
865
- { canPlay, realCurrentTime } = this.$state;
866
- if (canPlay()) {
867
- storage?.setTime?.(realCurrentTime());
868
- }
869
- }
870
-
871
- ['audio-gain-change'](event: ME.MediaAudioGainChangeEvent) {
872
- const { storage } = this.#media,
873
- { canPlay, audioGain } = this.$state;
874
-
875
- audioGain.set(event.detail);
876
- this.#satisfyRequest('media-audio-gain-change-request', event);
877
-
878
- if (canPlay()) storage?.setAudioGain?.(audioGain());
879
- }
880
-
881
- ['volume-change'](event: ME.MediaVolumeChangeEvent) {
882
- const { storage } = this.#media,
883
- { volume, muted, canPlay } = this.$state,
884
- detail = event.detail;
885
-
886
- volume.set(detail.volume);
887
- muted.set(detail.muted || detail.volume === 0);
888
-
889
- this.#satisfyRequest('media-volume-change-request', event);
890
- this.#satisfyRequest(detail.muted ? 'media-mute-request' : 'media-unmute-request', event);
891
-
892
- if (canPlay()) {
893
- storage?.setVolume?.(volume());
894
- storage?.setMuted?.(muted());
895
- }
896
- }
897
-
898
- ['seeking'] = throttle(
899
- (event: ME.MediaSeekingEvent) => {
900
- const { seeking, realCurrentTime, paused } = this.$state;
901
-
902
- seeking.set(true);
903
- realCurrentTime.set(event.detail);
904
-
905
- this.#satisfyRequest('media-seeking-request', event);
906
-
907
- if (paused()) {
908
- this.#waitingTrigger = event;
909
- this.#fireWaiting();
910
- }
911
-
912
- this.#playedInterval = [-1, -1];
913
- },
914
- 150,
915
- { leading: true },
916
- );
917
-
918
- ['seeked'](event: ME.MediaSeekedEvent) {
919
- const { seeking, currentTime, realCurrentTime, paused, seekableEnd, ended, live } = this.$state;
920
-
921
- if (this.#request.seeking) {
922
- seeking.set(true);
923
- event.stopImmediatePropagation();
924
- } else if (seeking()) {
925
- const waitingEvent = this.#trackedEvents.get('waiting');
926
- if (waitingEvent) event.triggers.add(waitingEvent);
927
-
928
- const seekingEvent = this.#trackedEvents.get('seeking');
929
- if (seekingEvent && !event.triggers.has(seekingEvent)) {
930
- event.triggers.add(seekingEvent);
931
- }
932
-
933
- if (paused()) this.#stopWaiting();
934
-
935
- seeking.set(false);
936
-
937
- realCurrentTime.set(event.detail);
938
- this.#satisfyRequest('media-seek-request', event);
939
-
940
- // Only start if user initiated.
941
- const origin = event?.originEvent;
942
- if (origin?.isTrusted && !(origin instanceof MessageEvent) && !/seek/.test(origin.type)) {
943
- this['started'](event);
944
- }
945
- }
946
-
947
- if (!live()) {
948
- if (Math.floor(currentTime()) !== Math.floor(seekableEnd())) {
949
- ended.set(false);
950
- } else {
951
- this.end(event);
952
- }
953
- }
954
- }
955
-
956
- ['waiting'](event: ME.MediaWaitingEvent) {
957
- if (this.#firingWaiting || this.#request.seeking) return;
958
- event.stopImmediatePropagation();
959
- this.#waitingTrigger = event;
960
- this.#fireWaiting();
961
- }
962
-
963
- #fireWaiting = debounce(() => {
964
- if (!this.#waitingTrigger) return;
965
-
966
- this.#firingWaiting = true;
967
-
968
- const { waiting, playing } = this.$state;
969
- waiting.set(true);
970
- playing.set(false);
971
-
972
- const event = this.createEvent('waiting', { trigger: this.#waitingTrigger });
973
- this.#trackedEvents.set('waiting', event);
974
- this.dispatch(event);
975
-
976
- this.#waitingTrigger = undefined;
977
- this.#firingWaiting = false;
978
- }, 300);
979
-
980
- ['end'](event: Event) {
981
- const { loop, ended } = this.$state;
982
-
983
- if (!loop() && ended()) return;
984
-
985
- if (loop()) {
986
- setTimeout(() => {
987
- requestAnimationFrame(() => {
988
- this.#resetPlaybackIfNeeded(event);
989
- this.dispatch('media-loop-request', { trigger: event });
990
- });
991
- }, 10);
992
-
993
- return;
994
- }
995
-
996
- // Fire after `end`
997
- setTimeout(() => this.#onEnded(event), 0);
998
- }
999
-
1000
- #onEnded(event: Event) {
1001
- const { storage } = this.#media,
1002
- { paused, seeking, ended, duration } = this.$state;
1003
-
1004
- this.#onEndPrecisionChange(event);
1005
-
1006
- if (!paused()) {
1007
- this.dispatch('pause', { trigger: event });
1008
- }
1009
-
1010
- if (seeking()) {
1011
- this.dispatch('seeked', {
1012
- detail: duration(),
1013
- trigger: event,
1014
- });
1015
- }
1016
-
1017
- ended.set(true);
1018
- this.#resetTracking();
1019
- storage?.setTime?.(duration(), true);
1020
-
1021
- this.dispatch('ended', {
1022
- trigger: event,
1023
- });
1024
- }
1025
-
1026
- #stopWaiting() {
1027
- this.#fireWaiting.cancel();
1028
- this.$state.waiting.set(false);
1029
- }
1030
-
1031
- ['fullscreen-change'](event: ME.MediaFullscreenChangeEvent) {
1032
- const isFullscreen = event.detail;
1033
- this.$state.fullscreen.set(isFullscreen);
1034
- this.#satisfyRequest(
1035
- isFullscreen ? 'media-enter-fullscreen-request' : 'media-exit-fullscreen-request',
1036
- event,
1037
- );
1038
- }
1039
-
1040
- ['fullscreen-error'](event: ME.MediaFullscreenErrorEvent) {
1041
- this.#satisfyRequest('media-enter-fullscreen-request', event);
1042
- this.#satisfyRequest('media-exit-fullscreen-request', event);
1043
- }
1044
-
1045
- ['orientation-change'](event: ME.MediaOrientationChangeEvent) {
1046
- const isLocked = event.detail.lock;
1047
- this.#satisfyRequest(
1048
- isLocked ? 'media-orientation-lock-request' : 'media-orientation-unlock-request',
1049
- event,
1050
- );
1051
- }
1052
-
1053
- ['picture-in-picture-change'](event: ME.MediaPIPChangeEvent) {
1054
- const isPiP = event.detail;
1055
- this.$state.pictureInPicture.set(isPiP);
1056
- this.#satisfyRequest(isPiP ? 'media-enter-pip-request' : 'media-exit-pip-request', event);
1057
- }
1058
-
1059
- ['picture-in-picture-error'](event: ME.MediaPIPErrorEvent) {
1060
- this.#satisfyRequest('media-enter-pip-request', event);
1061
- this.#satisfyRequest('media-exit-pip-request', event);
1062
- }
1063
-
1064
- ['title-change'](event: ME.MediaPosterChangeEvent) {
1065
- if (!event.trigger) return;
1066
- // Fired in media-state-sync by effect.
1067
- event.stopImmediatePropagation();
1068
- this.$state.inferredTitle.set(event.detail);
1069
- }
1070
-
1071
- ['poster-change'](event: ME.MediaPosterChangeEvent) {
1072
- if (!event.trigger) return;
1073
- // Fired in media-state-sync by effect.
1074
- event.stopImmediatePropagation();
1075
- this.$state.inferredPoster.set(event.detail);
1076
- }
1077
- }