@hanifhan1f/vidstack 1.12.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (746) hide show
  1. package/.templates/sandbox/favicon-32x32.png +0 -0
  2. package/.templates/sandbox/index.html +42 -0
  3. package/.templates/sandbox/main.ts +137 -0
  4. package/.templates/sandbox/styles.css +68 -0
  5. package/LICENSE +21 -0
  6. package/README.md +22 -0
  7. package/analyze.config.ts +133 -0
  8. package/build/build-styles.js +33 -0
  9. package/build/rollup-decorators.ts +102 -0
  10. package/build/rollup-minify.js +20 -0
  11. package/build/rollup-ts.js +57 -0
  12. package/npm/analyze.json.d.ts +8 -0
  13. package/npm/bundle.d.ts +1 -0
  14. package/npm/dom.d.ts +91 -0
  15. package/npm/empty.vtt +1 -0
  16. package/npm/google-cast.d.ts +1422 -0
  17. package/npm/player/index.d.ts +3 -0
  18. package/npm/player/layouts/default.d.ts +3 -0
  19. package/npm/player/layouts/index.d.ts +3 -0
  20. package/npm/player/layouts/plyr.d.ts +3 -0
  21. package/npm/player/ui.d.ts +3 -0
  22. package/npm/tailwind.cjs +101 -0
  23. package/npm/tailwind.d.cts +15 -0
  24. package/package.json +283 -0
  25. package/rollup.config.ts +442 -0
  26. package/src/components/aria/announcer.ts +181 -0
  27. package/src/components/layouts/default/audio-layout.ts +20 -0
  28. package/src/components/layouts/default/context.ts +15 -0
  29. package/src/components/layouts/default/default-layout.ts +67 -0
  30. package/src/components/layouts/default/props.ts +143 -0
  31. package/src/components/layouts/default/translations.ts +70 -0
  32. package/src/components/layouts/default/video-layout.ts +20 -0
  33. package/src/components/layouts/plyr/context.ts +13 -0
  34. package/src/components/layouts/plyr/plyr-layout.ts +90 -0
  35. package/src/components/layouts/plyr/props.ts +114 -0
  36. package/src/components/layouts/plyr/translations.ts +53 -0
  37. package/src/components/player.ts +758 -0
  38. package/src/components/provider/provider.ts +184 -0
  39. package/src/components/provider/source-select.ts +378 -0
  40. package/src/components/provider/tracks.ts +37 -0
  41. package/src/components/ui/buttons/airplay-button.ts +74 -0
  42. package/src/components/ui/buttons/caption-button.ts +68 -0
  43. package/src/components/ui/buttons/fullscreen-button.ts +90 -0
  44. package/src/components/ui/buttons/google-cast-button.ts +75 -0
  45. package/src/components/ui/buttons/live-button.ts +76 -0
  46. package/src/components/ui/buttons/mute-button.ts +69 -0
  47. package/src/components/ui/buttons/pip-button.ts +71 -0
  48. package/src/components/ui/buttons/play-button.ts +62 -0
  49. package/src/components/ui/buttons/seek-button.ts +92 -0
  50. package/src/components/ui/buttons/toggle-button-controller.ts +92 -0
  51. package/src/components/ui/buttons/toggle-button.ts +49 -0
  52. package/src/components/ui/captions/captions-renderer.ts +63 -0
  53. package/src/components/ui/captions/captions.ts +227 -0
  54. package/src/components/ui/controls-group.ts +13 -0
  55. package/src/components/ui/controls.ts +101 -0
  56. package/src/components/ui/gesture.ts +252 -0
  57. package/src/components/ui/menu/menu-button.ts +95 -0
  58. package/src/components/ui/menu/menu-context.ts +27 -0
  59. package/src/components/ui/menu/menu-focus-controller.ts +205 -0
  60. package/src/components/ui/menu/menu-item.ts +9 -0
  61. package/src/components/ui/menu/menu-items.ts +129 -0
  62. package/src/components/ui/menu/menu-portal.ts +105 -0
  63. package/src/components/ui/menu/menu.ts +612 -0
  64. package/src/components/ui/menu/radio/radio-controller.ts +18 -0
  65. package/src/components/ui/menu/radio/radio-group-controller.ts +81 -0
  66. package/src/components/ui/menu/radio/radio-group.ts +78 -0
  67. package/src/components/ui/menu/radio/radio.ts +151 -0
  68. package/src/components/ui/menu/radio-groups/audio-gain-radio-group.ts +116 -0
  69. package/src/components/ui/menu/radio-groups/audio-radio-group.ts +121 -0
  70. package/src/components/ui/menu/radio-groups/captions-radio-group.ts +153 -0
  71. package/src/components/ui/menu/radio-groups/chapters-radio-group.ts +211 -0
  72. package/src/components/ui/menu/radio-groups/quality-radio-group.ts +181 -0
  73. package/src/components/ui/menu/radio-groups/speed-radio-group.ts +112 -0
  74. package/src/components/ui/popper/popper.ts +103 -0
  75. package/src/components/ui/poster.ts +187 -0
  76. package/src/components/ui/sliders/audio-gain-slider.ts +150 -0
  77. package/src/components/ui/sliders/quality-slider.ts +148 -0
  78. package/src/components/ui/sliders/slider/api/cssvars.ts +10 -0
  79. package/src/components/ui/sliders/slider/api/events.ts +65 -0
  80. package/src/components/ui/sliders/slider/api/state.ts +101 -0
  81. package/src/components/ui/sliders/slider/events-controller.ts +383 -0
  82. package/src/components/ui/sliders/slider/format.ts +12 -0
  83. package/src/components/ui/sliders/slider/slider-context.ts +18 -0
  84. package/src/components/ui/sliders/slider/slider-controller.ts +211 -0
  85. package/src/components/ui/sliders/slider/slider.ts +94 -0
  86. package/src/components/ui/sliders/slider/types.ts +1 -0
  87. package/src/components/ui/sliders/slider/utils.ts +14 -0
  88. package/src/components/ui/sliders/slider-preview.ts +131 -0
  89. package/src/components/ui/sliders/slider-thumbnail.ts +28 -0
  90. package/src/components/ui/sliders/slider-value.ts +122 -0
  91. package/src/components/ui/sliders/slider-video.ts +198 -0
  92. package/src/components/ui/sliders/speed-slider.ts +147 -0
  93. package/src/components/ui/sliders/time-slider/slider-chapters.ts +444 -0
  94. package/src/components/ui/sliders/time-slider/time-slider.ts +319 -0
  95. package/src/components/ui/sliders/volume-slider.ts +145 -0
  96. package/src/components/ui/thumbnails/thumbnail-loader.ts +324 -0
  97. package/src/components/ui/thumbnails/thumbnail.ts +244 -0
  98. package/src/components/ui/time.ts +191 -0
  99. package/src/components/ui/tooltip/tooltip-content.ts +105 -0
  100. package/src/components/ui/tooltip/tooltip-context.ts +13 -0
  101. package/src/components/ui/tooltip/tooltip-trigger.ts +49 -0
  102. package/src/components/ui/tooltip/tooltip.ts +127 -0
  103. package/src/core/api/media-attrs.ts +35 -0
  104. package/src/core/api/media-context.ts +52 -0
  105. package/src/core/api/media-events.ts +601 -0
  106. package/src/core/api/media-request-events.ts +323 -0
  107. package/src/core/api/player-controller.ts +10 -0
  108. package/src/core/api/player-events.ts +49 -0
  109. package/src/core/api/player-props.ts +233 -0
  110. package/src/core/api/player-state.ts +940 -0
  111. package/src/core/api/src-types.ts +97 -0
  112. package/src/core/api/types.ts +69 -0
  113. package/src/core/controls.ts +251 -0
  114. package/src/core/font/font-options.ts +106 -0
  115. package/src/core/font/font-vars.ts +107 -0
  116. package/src/core/keyboard/aria-shortcuts.ts +42 -0
  117. package/src/core/keyboard/controller.ts +302 -0
  118. package/src/core/keyboard/types.ts +40 -0
  119. package/src/core/quality/events.ts +48 -0
  120. package/src/core/quality/symbols.ts +8 -0
  121. package/src/core/quality/utils.ts +13 -0
  122. package/src/core/quality/video-quality.ts +86 -0
  123. package/src/core/state/media-events-logger.ts +67 -0
  124. package/src/core/state/media-load-controller.ts +40 -0
  125. package/src/core/state/media-player-delegate.ts +170 -0
  126. package/src/core/state/media-request-manager.ts +952 -0
  127. package/src/core/state/media-state-manager.ts +1077 -0
  128. package/src/core/state/media-state-sync.ts +162 -0
  129. package/src/core/state/media-storage.ts +196 -0
  130. package/src/core/state/navigator-media-session.ts +62 -0
  131. package/src/core/state/remote-control.ts +584 -0
  132. package/src/core/state/tracked-media-events.ts +22 -0
  133. package/src/core/time-ranges.ts +130 -0
  134. package/src/core/tracks/audio/audio-tracks.ts +33 -0
  135. package/src/core/tracks/audio/events.ts +41 -0
  136. package/src/core/tracks/text/events.ts +52 -0
  137. package/src/core/tracks/text/render/libass-text-renderer.ts +246 -0
  138. package/src/core/tracks/text/render/native-text-renderer.ts +106 -0
  139. package/src/core/tracks/text/render/text-renderer.ts +134 -0
  140. package/src/core/tracks/text/symbols.ts +17 -0
  141. package/src/core/tracks/text/text-track.test.ts +407 -0
  142. package/src/core/tracks/text/text-track.ts +413 -0
  143. package/src/core/tracks/text/text-tracks.ts +210 -0
  144. package/src/core/tracks/text/utils.ts +85 -0
  145. package/src/elements/bundles/cdn/player.core.ts +6 -0
  146. package/src/elements/bundles/cdn/player.ts +8 -0
  147. package/src/elements/bundles/cdn/plyr.ts +6 -0
  148. package/src/elements/bundles/cdn-legacy/player-with-default.ts +4 -0
  149. package/src/elements/bundles/cdn-legacy/player-with-layouts.ts +4 -0
  150. package/src/elements/bundles/cdn-legacy/player-with-plyr.ts +3 -0
  151. package/src/elements/bundles/cdn-legacy/player.ts +3 -0
  152. package/src/elements/bundles/icons.ts +3 -0
  153. package/src/elements/bundles/player-layouts/default.ts +7 -0
  154. package/src/elements/bundles/player-layouts/index.ts +9 -0
  155. package/src/elements/bundles/player-layouts/plyr.ts +65 -0
  156. package/src/elements/bundles/player-ui.ts +108 -0
  157. package/src/elements/bundles/player.ts +7 -0
  158. package/src/elements/define/announcer-element.ts +20 -0
  159. package/src/elements/define/buttons/airplay-button-element.ts +21 -0
  160. package/src/elements/define/buttons/caption-button-element.ts +22 -0
  161. package/src/elements/define/buttons/fullscreen-button-element.ts +22 -0
  162. package/src/elements/define/buttons/google-cast-button-element.ts +21 -0
  163. package/src/elements/define/buttons/live-button-element.ts +22 -0
  164. package/src/elements/define/buttons/mute-button-element.ts +23 -0
  165. package/src/elements/define/buttons/pip-button-element.ts +22 -0
  166. package/src/elements/define/buttons/play-button-element.ts +23 -0
  167. package/src/elements/define/buttons/seek-button-element.ts +26 -0
  168. package/src/elements/define/buttons/toggle-button-element.ts +21 -0
  169. package/src/elements/define/captions-element.ts +20 -0
  170. package/src/elements/define/chapter-title-element.ts +54 -0
  171. package/src/elements/define/controls-element.ts +26 -0
  172. package/src/elements/define/controls-group-element.ts +26 -0
  173. package/src/elements/define/gesture-element.ts +24 -0
  174. package/src/elements/define/layouts/default/audio-layout-element.ts +137 -0
  175. package/src/elements/define/layouts/default/audio-layout.ts +113 -0
  176. package/src/elements/define/layouts/default/icons-loader.ts +17 -0
  177. package/src/elements/define/layouts/default/icons.ts +86 -0
  178. package/src/elements/define/layouts/default/slots.ts +12 -0
  179. package/src/elements/define/layouts/default/ui/announcer.ts +14 -0
  180. package/src/elements/define/layouts/default/ui/buttons.ts +291 -0
  181. package/src/elements/define/layouts/default/ui/captions.ts +14 -0
  182. package/src/elements/define/layouts/default/ui/controls.ts +5 -0
  183. package/src/elements/define/layouts/default/ui/keyboard-display.ts +114 -0
  184. package/src/elements/define/layouts/default/ui/menu/accessibility-menu.ts +79 -0
  185. package/src/elements/define/layouts/default/ui/menu/audio-menu.ts +135 -0
  186. package/src/elements/define/layouts/default/ui/menu/captions-menu.ts +114 -0
  187. package/src/elements/define/layouts/default/ui/menu/chapters-menu.ts +117 -0
  188. package/src/elements/define/layouts/default/ui/menu/episodes-menu.ts +133 -0
  189. package/src/elements/define/layouts/default/ui/menu/font-menu.ts +253 -0
  190. package/src/elements/define/layouts/default/ui/menu/items/menu-checkbox.ts +67 -0
  191. package/src/elements/define/layouts/default/ui/menu/items/menu-items.ts +108 -0
  192. package/src/elements/define/layouts/default/ui/menu/items/menu-slider.ts +59 -0
  193. package/src/elements/define/layouts/default/ui/menu/menu-portal.ts +56 -0
  194. package/src/elements/define/layouts/default/ui/menu/playback-menu.ts +183 -0
  195. package/src/elements/define/layouts/default/ui/menu/settings-menu.ts +98 -0
  196. package/src/elements/define/layouts/default/ui/slider.ts +112 -0
  197. package/src/elements/define/layouts/default/ui/time.ts +41 -0
  198. package/src/elements/define/layouts/default/ui/title.ts +25 -0
  199. package/src/elements/define/layouts/default/ui/utils.ts +10 -0
  200. package/src/elements/define/layouts/default/video-layout-element.ts +125 -0
  201. package/src/elements/define/layouts/default/video-layout.ts +353 -0
  202. package/src/elements/define/layouts/icons/icons-loader.ts +47 -0
  203. package/src/elements/define/layouts/icons/layout-icons-loader.ts +24 -0
  204. package/src/elements/define/layouts/layout-element.ts +78 -0
  205. package/src/elements/define/layouts/layout-name.ts +15 -0
  206. package/src/elements/define/layouts/plyr/icons/plyr-airplay.js +1 -0
  207. package/src/elements/define/layouts/plyr/icons/plyr-captions-off.js +1 -0
  208. package/src/elements/define/layouts/plyr/icons/plyr-captions-on.js +1 -0
  209. package/src/elements/define/layouts/plyr/icons/plyr-download.js +1 -0
  210. package/src/elements/define/layouts/plyr/icons/plyr-enter-fullscreen.js +1 -0
  211. package/src/elements/define/layouts/plyr/icons/plyr-exit-fullscreen.js +1 -0
  212. package/src/elements/define/layouts/plyr/icons/plyr-fast-forward.js +1 -0
  213. package/src/elements/define/layouts/plyr/icons/plyr-muted.js +1 -0
  214. package/src/elements/define/layouts/plyr/icons/plyr-pause.js +1 -0
  215. package/src/elements/define/layouts/plyr/icons/plyr-pip.js +1 -0
  216. package/src/elements/define/layouts/plyr/icons/plyr-play.js +1 -0
  217. package/src/elements/define/layouts/plyr/icons/plyr-restart.js +1 -0
  218. package/src/elements/define/layouts/plyr/icons/plyr-rewind.js +1 -0
  219. package/src/elements/define/layouts/plyr/icons/plyr-settings.js +1 -0
  220. package/src/elements/define/layouts/plyr/icons/plyr-volume.js +1 -0
  221. package/src/elements/define/layouts/plyr/icons-loader.ts +21 -0
  222. package/src/elements/define/layouts/plyr/icons.ts +34 -0
  223. package/src/elements/define/layouts/plyr/plyr-layout-element.ts +67 -0
  224. package/src/elements/define/layouts/plyr/ui.ts +657 -0
  225. package/src/elements/define/layouts/slot-manager.ts +61 -0
  226. package/src/elements/define/layouts/slot-observer.ts +70 -0
  227. package/src/elements/define/menus/_template.ts +47 -0
  228. package/src/elements/define/menus/audio-gain-group-element.ts +37 -0
  229. package/src/elements/define/menus/audio-radio-group-element.ts +37 -0
  230. package/src/elements/define/menus/captions-radio-group-element.ts +37 -0
  231. package/src/elements/define/menus/chapters-radio-group-element.ts +68 -0
  232. package/src/elements/define/menus/menu-button-element.ts +27 -0
  233. package/src/elements/define/menus/menu-element.ts +28 -0
  234. package/src/elements/define/menus/menu-item-element.ts +24 -0
  235. package/src/elements/define/menus/menu-items-element.ts +27 -0
  236. package/src/elements/define/menus/menu-portal-element.ts +35 -0
  237. package/src/elements/define/menus/quality-radio-group-element.ts +51 -0
  238. package/src/elements/define/menus/radio-element.ts +24 -0
  239. package/src/elements/define/menus/radio-group-element.ts +24 -0
  240. package/src/elements/define/menus/speed-radio-group-element.ts +37 -0
  241. package/src/elements/define/player-element.ts +33 -0
  242. package/src/elements/define/poster-element.ts +53 -0
  243. package/src/elements/define/provider-cast-display.ts +36 -0
  244. package/src/elements/define/provider-element.ts +158 -0
  245. package/src/elements/define/sliders/audio-gain-slider-element.ts +34 -0
  246. package/src/elements/define/sliders/quality-slider-element.ts +34 -0
  247. package/src/elements/define/sliders/slider-chapters-element.ts +53 -0
  248. package/src/elements/define/sliders/slider-element.ts +25 -0
  249. package/src/elements/define/sliders/slider-preview-element.ts +16 -0
  250. package/src/elements/define/sliders/slider-steps-element.ts +50 -0
  251. package/src/elements/define/sliders/slider-thumbnail-element.ts +48 -0
  252. package/src/elements/define/sliders/slider-value-element.ts +49 -0
  253. package/src/elements/define/sliders/slider-video-element.ts +59 -0
  254. package/src/elements/define/sliders/speed-slider-element.ts +34 -0
  255. package/src/elements/define/sliders/time-slider-element.ts +34 -0
  256. package/src/elements/define/sliders/volume-slider-element.ts +34 -0
  257. package/src/elements/define/spinner-element.ts +96 -0
  258. package/src/elements/define/thumbnail-element.ts +63 -0
  259. package/src/elements/define/time-element.ts +32 -0
  260. package/src/elements/define/title-element.ts +38 -0
  261. package/src/elements/define/tooltips/tooltip-content-element.ts +28 -0
  262. package/src/elements/define/tooltips/tooltip-element.ts +28 -0
  263. package/src/elements/define/tooltips/tooltip-trigger-element.ts +32 -0
  264. package/src/elements/icon.ts +30 -0
  265. package/src/elements/index.ts +71 -0
  266. package/src/elements/lit/directives/signal.ts +80 -0
  267. package/src/elements/lit/html.ts +11 -0
  268. package/src/elements/lit/lit-element.ts +23 -0
  269. package/src/elements/state-controller.ts +48 -0
  270. package/src/exports/components.ts +79 -0
  271. package/src/exports/core.ts +41 -0
  272. package/src/exports/events.ts +46 -0
  273. package/src/exports/font.ts +3 -0
  274. package/src/exports/foundation.ts +8 -0
  275. package/src/exports/maverick.ts +9 -0
  276. package/src/exports/providers.ts +42 -0
  277. package/src/exports/utils.ts +18 -0
  278. package/src/foundation/fullscreen/controller.ts +128 -0
  279. package/src/foundation/fullscreen/events.ts +26 -0
  280. package/src/foundation/list/list.ts +127 -0
  281. package/src/foundation/list/select-list.ts +86 -0
  282. package/src/foundation/list/symbols.ts +22 -0
  283. package/src/foundation/logger/colors.ts +33 -0
  284. package/src/foundation/logger/controller.ts +71 -0
  285. package/src/foundation/logger/events.ts +29 -0
  286. package/src/foundation/logger/grouped-log.ts +44 -0
  287. package/src/foundation/logger/log-level.ts +17 -0
  288. package/src/foundation/logger/log-printer.ts +119 -0
  289. package/src/foundation/logger/ms.ts +31 -0
  290. package/src/foundation/observers/focus-visible.ts +74 -0
  291. package/src/foundation/observers/intersection-observer.ts +60 -0
  292. package/src/foundation/observers/page-visibility.ts +105 -0
  293. package/src/foundation/observers/raf-loop.ts +29 -0
  294. package/src/foundation/orientation/controller.ts +139 -0
  295. package/src/foundation/orientation/events.ts +20 -0
  296. package/src/foundation/orientation/types.ts +96 -0
  297. package/src/foundation/queue/queue.ts +41 -0
  298. package/src/foundation/queue/request-queue.test.ts +139 -0
  299. package/src/foundation/queue/request-queue.ts +94 -0
  300. package/src/global/layouts/default.ts +28 -0
  301. package/src/global/layouts/loader.ts +5 -0
  302. package/src/global/layouts/plyr.ts +24 -0
  303. package/src/global/player.ts +144 -0
  304. package/src/global/plyr.ts +917 -0
  305. package/src/globals.d.ts +11 -0
  306. package/src/index.ts +10 -0
  307. package/src/plugins.ts +369 -0
  308. package/src/providers/audio/loader.ts +45 -0
  309. package/src/providers/audio/provider.ts +50 -0
  310. package/src/providers/dash/dash.ts +417 -0
  311. package/src/providers/dash/events.ts +585 -0
  312. package/src/providers/dash/lib-loader.ts +202 -0
  313. package/src/providers/dash/loader.ts +33 -0
  314. package/src/providers/dash/provider.ts +135 -0
  315. package/src/providers/dash/types.ts +21 -0
  316. package/src/providers/embed/EmbedProvider.ts +84 -0
  317. package/src/providers/google-cast/events.ts +53 -0
  318. package/src/providers/google-cast/loader.ts +174 -0
  319. package/src/providers/google-cast/media-info.ts +49 -0
  320. package/src/providers/google-cast/provider.ts +483 -0
  321. package/src/providers/google-cast/tracks.ts +170 -0
  322. package/src/providers/google-cast/types.ts +3 -0
  323. package/src/providers/google-cast/utils.ts +112 -0
  324. package/src/providers/hls/events.ts +472 -0
  325. package/src/providers/hls/hls.ts +290 -0
  326. package/src/providers/hls/lib-loader.ts +178 -0
  327. package/src/providers/hls/loader.ts +33 -0
  328. package/src/providers/hls/provider.ts +137 -0
  329. package/src/providers/hls/types.ts +10 -0
  330. package/src/providers/html/audio/audio-context.ts +60 -0
  331. package/src/providers/html/audio/audio-gain.ts +100 -0
  332. package/src/providers/html/html/342/200/223media-events.ts +338 -0
  333. package/src/providers/html/native-audio-tracks.ts +91 -0
  334. package/src/providers/html/provider.ts +141 -0
  335. package/src/providers/html/remote-playback.ts +94 -0
  336. package/src/providers/type-check.ts +61 -0
  337. package/src/providers/types.ts +95 -0
  338. package/src/providers/video/loader.ts +45 -0
  339. package/src/providers/video/native-hls-text-tracks.ts +69 -0
  340. package/src/providers/video/picture-in-picture.ts +54 -0
  341. package/src/providers/video/presentation/events.ts +12 -0
  342. package/src/providers/video/presentation/video-presentation.ts +110 -0
  343. package/src/providers/video/provider.ts +91 -0
  344. package/src/providers/vimeo/embed/command.ts +118 -0
  345. package/src/providers/vimeo/embed/event.ts +124 -0
  346. package/src/providers/vimeo/embed/message.ts +9 -0
  347. package/src/providers/vimeo/embed/misc.ts +57 -0
  348. package/src/providers/vimeo/embed/params.ts +168 -0
  349. package/src/providers/vimeo/loader.ts +61 -0
  350. package/src/providers/vimeo/provider.ts +730 -0
  351. package/src/providers/vimeo/utils.ts +53 -0
  352. package/src/providers/youtube/embed/command.ts +21 -0
  353. package/src/providers/youtube/embed/event.ts +1 -0
  354. package/src/providers/youtube/embed/message.ts +54 -0
  355. package/src/providers/youtube/embed/params.ts +238 -0
  356. package/src/providers/youtube/embed/quality.ts +35 -0
  357. package/src/providers/youtube/embed/state.ts +13 -0
  358. package/src/providers/youtube/loader.ts +61 -0
  359. package/src/providers/youtube/provider.ts +403 -0
  360. package/src/providers/youtube/utils.ts +45 -0
  361. package/src/tailwind.test.ts +413 -0
  362. package/src/test-utils/index.ts +22 -0
  363. package/src/test-utils/setup.ts +3 -0
  364. package/src/utils/aria.ts +14 -0
  365. package/src/utils/array.ts +3 -0
  366. package/src/utils/color.ts +5 -0
  367. package/src/utils/dom.ts +458 -0
  368. package/src/utils/error.ts +11 -0
  369. package/src/utils/language.ts +16 -0
  370. package/src/utils/manifest.ts +61 -0
  371. package/src/utils/mime.ts +101 -0
  372. package/src/utils/network.ts +118 -0
  373. package/src/utils/number.ts +25 -0
  374. package/src/utils/promise.ts +12 -0
  375. package/src/utils/scroll.ts +19 -0
  376. package/src/utils/support.ts +163 -0
  377. package/src/utils/time.test.ts +111 -0
  378. package/src/utils/time.ts +123 -0
  379. package/styles/player/base.css +153 -0
  380. package/styles/player/default/buffering.css +55 -0
  381. package/styles/player/default/buttons.css +175 -0
  382. package/styles/player/default/captions.css +181 -0
  383. package/styles/player/default/chapter-title.css +26 -0
  384. package/styles/player/default/controls.css +56 -0
  385. package/styles/player/default/gestures.css +19 -0
  386. package/styles/player/default/icons.css +6 -0
  387. package/styles/player/default/keyboard.css +148 -0
  388. package/styles/player/default/layouts/audio.css +417 -0
  389. package/styles/player/default/layouts/video.css +1082 -0
  390. package/styles/player/default/menus.css +959 -0
  391. package/styles/player/default/poster.css +52 -0
  392. package/styles/player/default/sliders.css +391 -0
  393. package/styles/player/default/theme.css +2461 -0
  394. package/styles/player/default/thumbnail.css +40 -0
  395. package/styles/player/default/time.css +45 -0
  396. package/styles/player/default/tooltips.css +141 -0
  397. package/styles/player/plyr/theme.css +1237 -0
  398. package/tsconfig.build.json +9 -0
  399. package/tsconfig.json +11 -0
  400. package/types/components/aria/announcer.d.ts +27 -0
  401. package/types/components/layouts/default/audio-layout.d.ts +15 -0
  402. package/types/components/layouts/default/context.d.ts +9 -0
  403. package/types/components/layouts/default/default-layout.d.ts +10 -0
  404. package/types/components/layouts/default/props.d.ts +125 -0
  405. package/types/components/layouts/default/translations.d.ts +6 -0
  406. package/types/components/layouts/default/video-layout.d.ts +15 -0
  407. package/types/components/layouts/plyr/context.d.ts +7 -0
  408. package/types/components/layouts/plyr/plyr-layout.d.ts +9 -0
  409. package/types/components/layouts/plyr/props.d.ts +68 -0
  410. package/types/components/layouts/plyr/translations.d.ts +6 -0
  411. package/types/components/player.d.ts +214 -0
  412. package/types/components/provider/provider.d.ts +24 -0
  413. package/types/components/provider/source-select.d.ts +10 -0
  414. package/types/components/provider/tracks.d.ts +7 -0
  415. package/types/components/ui/buttons/airplay-button.d.ts +23 -0
  416. package/types/components/ui/buttons/caption-button.d.ts +21 -0
  417. package/types/components/ui/buttons/fullscreen-button.d.ts +28 -0
  418. package/types/components/ui/buttons/google-cast-button.d.ts +23 -0
  419. package/types/components/ui/buttons/live-button.d.ts +30 -0
  420. package/types/components/ui/buttons/mute-button.d.ts +21 -0
  421. package/types/components/ui/buttons/pip-button.d.ts +22 -0
  422. package/types/components/ui/buttons/play-button.d.ts +21 -0
  423. package/types/components/ui/buttons/seek-button.d.ts +32 -0
  424. package/types/components/ui/buttons/toggle-button-controller.d.ts +20 -0
  425. package/types/components/ui/buttons/toggle-button.d.ts +29 -0
  426. package/types/components/ui/captions/captions-renderer.d.ts +12 -0
  427. package/types/components/ui/captions/captions.d.ts +22 -0
  428. package/types/components/ui/controls-group.d.ts +9 -0
  429. package/types/components/ui/controls.d.ts +38 -0
  430. package/types/components/ui/gesture.d.ts +64 -0
  431. package/types/components/ui/menu/menu-button.d.ts +37 -0
  432. package/types/components/ui/menu/menu-context.d.ts +23 -0
  433. package/types/components/ui/menu/menu-focus-controller.d.ts +14 -0
  434. package/types/components/ui/menu/menu-item.d.ts +9 -0
  435. package/types/components/ui/menu/menu-items.d.ts +44 -0
  436. package/types/components/ui/menu/menu-portal.d.ts +31 -0
  437. package/types/components/ui/menu/menu.d.ts +66 -0
  438. package/types/components/ui/menu/radio/radio-controller.d.ts +14 -0
  439. package/types/components/ui/menu/radio/radio-group-controller.d.ts +11 -0
  440. package/types/components/ui/menu/radio/radio-group.d.ts +40 -0
  441. package/types/components/ui/menu/radio/radio.d.ts +50 -0
  442. package/types/components/ui/menu/radio-groups/audio-gain-radio-group.d.ts +36 -0
  443. package/types/components/ui/menu/radio-groups/audio-radio-group.d.ts +37 -0
  444. package/types/components/ui/menu/radio-groups/captions-radio-group.d.ts +38 -0
  445. package/types/components/ui/menu/radio-groups/chapters-radio-group.d.ts +46 -0
  446. package/types/components/ui/menu/radio-groups/quality-radio-group.d.ts +48 -0
  447. package/types/components/ui/menu/radio-groups/speed-radio-group.d.ts +36 -0
  448. package/types/components/ui/popper/popper.d.ts +15 -0
  449. package/types/components/ui/poster.d.ts +47 -0
  450. package/types/components/ui/sliders/audio-gain-slider.d.ts +43 -0
  451. package/types/components/ui/sliders/quality-slider.d.ts +34 -0
  452. package/types/components/ui/sliders/slider/api/cssvars.d.ts +10 -0
  453. package/types/components/ui/sliders/slider/api/events.d.ts +57 -0
  454. package/types/components/ui/sliders/slider/api/state.d.ts +68 -0
  455. package/types/components/ui/sliders/slider/events-controller.d.ts +23 -0
  456. package/types/components/ui/sliders/slider/format.d.ts +8 -0
  457. package/types/components/ui/sliders/slider/slider-context.d.ts +13 -0
  458. package/types/components/ui/sliders/slider/slider-controller.d.ts +59 -0
  459. package/types/components/ui/sliders/slider/slider.d.ts +39 -0
  460. package/types/components/ui/sliders/slider/types.d.ts +1 -0
  461. package/types/components/ui/sliders/slider/utils.d.ts +2 -0
  462. package/types/components/ui/sliders/slider-preview.d.ts +34 -0
  463. package/types/components/ui/sliders/slider-thumbnail.d.ts +16 -0
  464. package/types/components/ui/sliders/slider-value.d.ts +59 -0
  465. package/types/components/ui/sliders/slider-video.d.ts +73 -0
  466. package/types/components/ui/sliders/speed-slider.d.ts +42 -0
  467. package/types/components/ui/sliders/time-slider/slider-chapters.d.ts +36 -0
  468. package/types/components/ui/sliders/time-slider/time-slider.d.ts +56 -0
  469. package/types/components/ui/sliders/volume-slider.d.ts +35 -0
  470. package/types/components/ui/thumbnails/thumbnail-loader.d.ts +47 -0
  471. package/types/components/ui/thumbnails/thumbnail.d.ts +50 -0
  472. package/types/components/ui/time.d.ts +62 -0
  473. package/types/components/ui/tooltip/tooltip-content.d.ts +39 -0
  474. package/types/components/ui/tooltip/tooltip-context.d.ts +11 -0
  475. package/types/components/ui/tooltip/tooltip-trigger.d.ts +14 -0
  476. package/types/components/ui/tooltip/tooltip.d.ts +23 -0
  477. package/types/core/api/media-attrs.d.ts +3 -0
  478. package/types/core/api/media-context.d.ts +37 -0
  479. package/types/core/api/media-events.d.ts +581 -0
  480. package/types/core/api/media-request-events.d.ts +319 -0
  481. package/types/core/api/player-controller.d.ts +6 -0
  482. package/types/core/api/player-events.d.ts +38 -0
  483. package/types/core/api/player-props.d.ts +163 -0
  484. package/types/core/api/player-state.d.ts +656 -0
  485. package/types/core/api/src-types.d.ts +50 -0
  486. package/types/core/api/types.d.ts +54 -0
  487. package/types/core/controls.d.ts +43 -0
  488. package/types/core/font/font-options.d.ts +42 -0
  489. package/types/core/font/font-vars.d.ts +1 -0
  490. package/types/core/keyboard/aria-shortcuts.d.ts +6 -0
  491. package/types/core/keyboard/controller.d.ts +9 -0
  492. package/types/core/keyboard/types.d.ts +33 -0
  493. package/types/core/quality/events.d.ts +43 -0
  494. package/types/core/quality/symbols.d.ts +6 -0
  495. package/types/core/quality/utils.d.ts +2 -0
  496. package/types/core/quality/video-quality.d.ts +52 -0
  497. package/types/core/state/media-events-logger.d.ts +7 -0
  498. package/types/core/state/media-load-controller.d.ts +6 -0
  499. package/types/core/state/media-player-delegate.d.ts +13 -0
  500. package/types/core/state/media-request-manager.d.ts +71 -0
  501. package/types/core/state/media-state-manager.d.ts +59 -0
  502. package/types/core/state/media-state-sync.d.ts +8 -0
  503. package/types/core/state/media-storage.d.ts +74 -0
  504. package/types/core/state/navigator-media-session.d.ts +5 -0
  505. package/types/core/state/remote-control.d.ts +288 -0
  506. package/types/core/state/tracked-media-events.d.ts +2 -0
  507. package/types/core/time-ranges.d.ts +12 -0
  508. package/types/core/tracks/audio/audio-tracks.d.ts +32 -0
  509. package/types/core/tracks/audio/events.d.ts +37 -0
  510. package/types/core/tracks/text/events.d.ts +49 -0
  511. package/types/core/tracks/text/render/libass-text-renderer.d.ts +181 -0
  512. package/types/core/tracks/text/render/native-text-renderer.d.ts +13 -0
  513. package/types/core/tracks/text/render/text-renderer.d.ts +17 -0
  514. package/types/core/tracks/text/symbols.d.ts +11 -0
  515. package/types/core/tracks/text/text-track.d.ts +137 -0
  516. package/types/core/tracks/text/text-tracks.d.ts +55 -0
  517. package/types/core/tracks/text/utils.d.ts +8 -0
  518. package/types/elements/bundles/cdn/player.core.d.ts +5 -0
  519. package/types/elements/bundles/cdn/player.d.ts +7 -0
  520. package/types/elements/bundles/cdn/plyr.d.ts +5 -0
  521. package/types/elements/bundles/cdn-legacy/player-with-default.d.ts +4 -0
  522. package/types/elements/bundles/cdn-legacy/player-with-layouts.d.ts +4 -0
  523. package/types/elements/bundles/cdn-legacy/player-with-plyr.d.ts +3 -0
  524. package/types/elements/bundles/cdn-legacy/player.d.ts +3 -0
  525. package/types/elements/bundles/icons.d.ts +2 -0
  526. package/types/elements/bundles/player-layouts/default.d.ts +1 -0
  527. package/types/elements/bundles/player-layouts/index.d.ts +1 -0
  528. package/types/elements/bundles/player-layouts/plyr.d.ts +1 -0
  529. package/types/elements/bundles/player-ui.d.ts +1 -0
  530. package/types/elements/bundles/player.d.ts +1 -0
  531. package/types/elements/define/announcer-element.d.ts +18 -0
  532. package/types/elements/define/buttons/airplay-button-element.d.ts +19 -0
  533. package/types/elements/define/buttons/caption-button-element.d.ts +20 -0
  534. package/types/elements/define/buttons/fullscreen-button-element.d.ts +20 -0
  535. package/types/elements/define/buttons/google-cast-button-element.d.ts +19 -0
  536. package/types/elements/define/buttons/live-button-element.d.ts +20 -0
  537. package/types/elements/define/buttons/mute-button-element.d.ts +21 -0
  538. package/types/elements/define/buttons/pip-button-element.d.ts +20 -0
  539. package/types/elements/define/buttons/play-button-element.d.ts +21 -0
  540. package/types/elements/define/buttons/seek-button-element.d.ts +24 -0
  541. package/types/elements/define/buttons/toggle-button-element.d.ts +19 -0
  542. package/types/elements/define/captions-element.d.ts +18 -0
  543. package/types/elements/define/chapter-title-element.d.ts +30 -0
  544. package/types/elements/define/controls-element.d.ts +24 -0
  545. package/types/elements/define/controls-group-element.d.ts +24 -0
  546. package/types/elements/define/gesture-element.d.ts +22 -0
  547. package/types/elements/define/layouts/default/audio-layout-element.d.ts +29 -0
  548. package/types/elements/define/layouts/default/audio-layout.d.ts +1 -0
  549. package/types/elements/define/layouts/default/icons-loader.d.ts +5 -0
  550. package/types/elements/define/layouts/default/icons.d.ts +52 -0
  551. package/types/elements/define/layouts/default/slots.d.ts +2 -0
  552. package/types/elements/define/layouts/default/ui/announcer.d.ts +1 -0
  553. package/types/elements/define/layouts/default/ui/buttons.d.ts +31 -0
  554. package/types/elements/define/layouts/default/ui/captions.d.ts +1 -0
  555. package/types/elements/define/layouts/default/ui/controls.d.ts +1 -0
  556. package/types/elements/define/layouts/default/ui/keyboard-display.d.ts +1 -0
  557. package/types/elements/define/layouts/default/ui/menu/accessibility-menu.d.ts +1 -0
  558. package/types/elements/define/layouts/default/ui/menu/audio-menu.d.ts +1 -0
  559. package/types/elements/define/layouts/default/ui/menu/captions-menu.d.ts +1 -0
  560. package/types/elements/define/layouts/default/ui/menu/chapters-menu.d.ts +8 -0
  561. package/types/elements/define/layouts/default/ui/menu/episodes-menu.d.ts +8 -0
  562. package/types/elements/define/layouts/default/ui/menu/font-menu.d.ts +1 -0
  563. package/types/elements/define/layouts/default/ui/menu/items/menu-checkbox.d.ts +8 -0
  564. package/types/elements/define/layouts/default/ui/menu/items/menu-items.d.ts +26 -0
  565. package/types/elements/define/layouts/default/ui/menu/items/menu-slider.d.ts +3 -0
  566. package/types/elements/define/layouts/default/ui/menu/menu-portal.d.ts +4 -0
  567. package/types/elements/define/layouts/default/ui/menu/playback-menu.d.ts +1 -0
  568. package/types/elements/define/layouts/default/ui/menu/settings-menu.d.ts +8 -0
  569. package/types/elements/define/layouts/default/ui/slider.d.ts +10 -0
  570. package/types/elements/define/layouts/default/ui/time.d.ts +3 -0
  571. package/types/elements/define/layouts/default/ui/title.d.ts +2 -0
  572. package/types/elements/define/layouts/default/ui/utils.d.ts +3 -0
  573. package/types/elements/define/layouts/default/video-layout-element.d.ts +29 -0
  574. package/types/elements/define/layouts/default/video-layout.d.ts +5 -0
  575. package/types/elements/define/layouts/icons/icons-loader.d.ts +11 -0
  576. package/types/elements/define/layouts/icons/layout-icons-loader.d.ts +4 -0
  577. package/types/elements/define/layouts/layout-element.d.ts +38 -0
  578. package/types/elements/define/layouts/layout-name.d.ts +2 -0
  579. package/types/elements/define/layouts/plyr/icons/plyr-airplay.d.ts +2 -0
  580. package/types/elements/define/layouts/plyr/icons/plyr-captions-off.d.ts +2 -0
  581. package/types/elements/define/layouts/plyr/icons/plyr-captions-on.d.ts +2 -0
  582. package/types/elements/define/layouts/plyr/icons/plyr-download.d.ts +2 -0
  583. package/types/elements/define/layouts/plyr/icons/plyr-enter-fullscreen.d.ts +2 -0
  584. package/types/elements/define/layouts/plyr/icons/plyr-exit-fullscreen.d.ts +2 -0
  585. package/types/elements/define/layouts/plyr/icons/plyr-fast-forward.d.ts +2 -0
  586. package/types/elements/define/layouts/plyr/icons/plyr-muted.d.ts +2 -0
  587. package/types/elements/define/layouts/plyr/icons/plyr-pause.d.ts +2 -0
  588. package/types/elements/define/layouts/plyr/icons/plyr-pip.d.ts +2 -0
  589. package/types/elements/define/layouts/plyr/icons/plyr-play.d.ts +2 -0
  590. package/types/elements/define/layouts/plyr/icons/plyr-restart.d.ts +2 -0
  591. package/types/elements/define/layouts/plyr/icons/plyr-rewind.d.ts +2 -0
  592. package/types/elements/define/layouts/plyr/icons/plyr-settings.d.ts +2 -0
  593. package/types/elements/define/layouts/plyr/icons/plyr-volume.d.ts +2 -0
  594. package/types/elements/define/layouts/plyr/icons-loader.d.ts +5 -0
  595. package/types/elements/define/layouts/plyr/icons.d.ts +18 -0
  596. package/types/elements/define/layouts/plyr/plyr-layout-element.d.ts +26 -0
  597. package/types/elements/define/layouts/plyr/ui.d.ts +3 -0
  598. package/types/elements/define/layouts/slot-manager.d.ts +7 -0
  599. package/types/elements/define/layouts/slot-observer.d.ts +12 -0
  600. package/types/elements/define/menus/_template.d.ts +7 -0
  601. package/types/elements/define/menus/audio-gain-group-element.d.ts +31 -0
  602. package/types/elements/define/menus/audio-radio-group-element.d.ts +31 -0
  603. package/types/elements/define/menus/captions-radio-group-element.d.ts +31 -0
  604. package/types/elements/define/menus/chapters-radio-group-element.d.ts +36 -0
  605. package/types/elements/define/menus/menu-button-element.d.ts +25 -0
  606. package/types/elements/define/menus/menu-element.d.ts +26 -0
  607. package/types/elements/define/menus/menu-item-element.d.ts +22 -0
  608. package/types/elements/define/menus/menu-items-element.d.ts +25 -0
  609. package/types/elements/define/menus/menu-portal-element.d.ts +25 -0
  610. package/types/elements/define/menus/quality-radio-group-element.d.ts +33 -0
  611. package/types/elements/define/menus/radio-element.d.ts +22 -0
  612. package/types/elements/define/menus/radio-group-element.d.ts +22 -0
  613. package/types/elements/define/menus/speed-radio-group-element.d.ts +31 -0
  614. package/types/elements/define/player-element.d.ts +24 -0
  615. package/types/elements/define/poster-element.d.ts +25 -0
  616. package/types/elements/define/provider-cast-display.d.ts +2 -0
  617. package/types/elements/define/provider-element.d.ts +25 -0
  618. package/types/elements/define/sliders/audio-gain-slider-element.d.ts +32 -0
  619. package/types/elements/define/sliders/quality-slider-element.d.ts +32 -0
  620. package/types/elements/define/sliders/slider-chapters-element.d.ts +31 -0
  621. package/types/elements/define/sliders/slider-element.d.ts +23 -0
  622. package/types/elements/define/sliders/slider-preview-element.d.ts +14 -0
  623. package/types/elements/define/sliders/slider-steps-element.d.ts +28 -0
  624. package/types/elements/define/sliders/slider-thumbnail-element.d.ts +26 -0
  625. package/types/elements/define/sliders/slider-value-element.d.ts +37 -0
  626. package/types/elements/define/sliders/slider-video-element.d.ts +25 -0
  627. package/types/elements/define/sliders/speed-slider-element.d.ts +32 -0
  628. package/types/elements/define/sliders/time-slider-element.d.ts +32 -0
  629. package/types/elements/define/sliders/volume-slider-element.d.ts +32 -0
  630. package/types/elements/define/spinner-element.d.ts +50 -0
  631. package/types/elements/define/thumbnail-element.d.ts +29 -0
  632. package/types/elements/define/time-element.d.ts +24 -0
  633. package/types/elements/define/title-element.d.ts +23 -0
  634. package/types/elements/define/tooltips/tooltip-content-element.d.ts +26 -0
  635. package/types/elements/define/tooltips/tooltip-element.d.ts +26 -0
  636. package/types/elements/define/tooltips/tooltip-trigger-element.d.ts +27 -0
  637. package/types/elements/icon.d.ts +10 -0
  638. package/types/elements/index.d.ts +56 -0
  639. package/types/elements/lit/directives/signal.d.ts +1 -0
  640. package/types/elements/lit/html.d.ts +4 -0
  641. package/types/elements/lit/lit-element.d.ts +8 -0
  642. package/types/elements/state-controller.d.ts +5 -0
  643. package/types/exports/components.d.ts +59 -0
  644. package/types/exports/core.d.ts +26 -0
  645. package/types/exports/events.d.ts +32 -0
  646. package/types/exports/font.d.ts +2 -0
  647. package/types/exports/foundation.d.ts +8 -0
  648. package/types/exports/maverick.d.ts +1 -0
  649. package/types/exports/providers.d.ts +22 -0
  650. package/types/exports/utils.d.ts +4 -0
  651. package/types/foundation/fullscreen/controller.d.ts +39 -0
  652. package/types/foundation/fullscreen/events.d.ts +25 -0
  653. package/types/foundation/list/list.d.ts +64 -0
  654. package/types/foundation/list/select-list.d.ts +30 -0
  655. package/types/foundation/list/symbols.d.ts +14 -0
  656. package/types/foundation/logger/colors.d.ts +5 -0
  657. package/types/foundation/logger/controller.d.ts +20 -0
  658. package/types/foundation/logger/events.d.ts +26 -0
  659. package/types/foundation/logger/grouped-log.d.ts +22 -0
  660. package/types/foundation/logger/log-level.d.ts +15 -0
  661. package/types/foundation/logger/log-printer.d.ts +11 -0
  662. package/types/foundation/logger/ms.d.ts +4 -0
  663. package/types/foundation/observers/focus-visible.d.ts +7 -0
  664. package/types/foundation/observers/intersection-observer.d.ts +36 -0
  665. package/types/foundation/observers/page-visibility.d.ts +37 -0
  666. package/types/foundation/observers/raf-loop.d.ts +6 -0
  667. package/types/foundation/orientation/controller.d.ts +62 -0
  668. package/types/foundation/orientation/events.d.ts +16 -0
  669. package/types/foundation/orientation/types.d.ts +85 -0
  670. package/types/foundation/queue/queue.d.ts +24 -0
  671. package/types/foundation/queue/request-queue.d.ts +42 -0
  672. package/types/global/layouts/default.d.ts +9 -0
  673. package/types/global/layouts/loader.d.ts +5 -0
  674. package/types/global/layouts/plyr.d.ts +9 -0
  675. package/types/global/player.d.ts +26 -0
  676. package/types/global/plyr.d.ts +344 -0
  677. package/types/index.d.ts +6 -0
  678. package/types/plugins.d.ts +11 -0
  679. package/types/providers/audio/loader.d.ts +12 -0
  680. package/types/providers/audio/provider.d.ts +29 -0
  681. package/types/providers/dash/dash.d.ts +15 -0
  682. package/types/providers/dash/events.d.ts +570 -0
  683. package/types/providers/dash/lib-loader.d.ts +6 -0
  684. package/types/providers/dash/loader.d.ts +10 -0
  685. package/types/providers/dash/provider.d.ts +62 -0
  686. package/types/providers/dash/types.d.ts +13 -0
  687. package/types/providers/embed/EmbedProvider.d.ts +18 -0
  688. package/types/providers/google-cast/events.d.ts +36 -0
  689. package/types/providers/google-cast/loader.d.ts +18 -0
  690. package/types/providers/google-cast/media-info.d.ts +11 -0
  691. package/types/providers/google-cast/provider.d.ts +48 -0
  692. package/types/providers/google-cast/tracks.d.ts +10 -0
  693. package/types/providers/google-cast/types.d.ts +3 -0
  694. package/types/providers/google-cast/utils.d.ts +34 -0
  695. package/types/providers/hls/events.d.ts +463 -0
  696. package/types/providers/hls/hls.d.ts +14 -0
  697. package/types/providers/hls/lib-loader.d.ts +6 -0
  698. package/types/providers/hls/loader.d.ts +10 -0
  699. package/types/providers/hls/provider.d.ts +64 -0
  700. package/types/providers/hls/types.d.ts +9 -0
  701. package/types/providers/html/audio/audio-context.d.ts +6 -0
  702. package/types/providers/html/audio/audio-gain.d.ts +10 -0
  703. package/types/providers/html/html/342/200/223media-events.d.ts +6 -0
  704. package/types/providers/html/native-audio-tracks.d.ts +6 -0
  705. package/types/providers/html/provider.d.ts +34 -0
  706. package/types/providers/html/remote-playback.d.ts +18 -0
  707. package/types/providers/type-check.d.ts +28 -0
  708. package/types/providers/types.d.ts +95 -0
  709. package/types/providers/video/loader.d.ts +12 -0
  710. package/types/providers/video/native-hls-text-tracks.d.ts +9 -0
  711. package/types/providers/video/picture-in-picture.d.ts +16 -0
  712. package/types/providers/video/presentation/events.d.ts +11 -0
  713. package/types/providers/video/presentation/video-presentation.d.ts +30 -0
  714. package/types/providers/video/provider.d.ts +34 -0
  715. package/types/providers/vimeo/embed/command.d.ts +81 -0
  716. package/types/providers/vimeo/embed/event.d.ts +58 -0
  717. package/types/providers/vimeo/embed/message.d.ts +8 -0
  718. package/types/providers/vimeo/embed/misc.d.ts +52 -0
  719. package/types/providers/vimeo/embed/params.d.ts +148 -0
  720. package/types/providers/vimeo/loader.d.ts +14 -0
  721. package/types/providers/vimeo/provider.d.ts +61 -0
  722. package/types/providers/vimeo/utils.d.ts +6 -0
  723. package/types/providers/youtube/embed/command.d.ts +13 -0
  724. package/types/providers/youtube/embed/event.d.ts +1 -0
  725. package/types/providers/youtube/embed/message.d.ts +50 -0
  726. package/types/providers/youtube/embed/params.d.ts +218 -0
  727. package/types/providers/youtube/embed/quality.d.ts +2 -0
  728. package/types/providers/youtube/embed/state.d.ts +12 -0
  729. package/types/providers/youtube/loader.d.ts +14 -0
  730. package/types/providers/youtube/provider.d.ts +61 -0
  731. package/types/providers/youtube/utils.d.ts +2 -0
  732. package/types/utils/aria.d.ts +4 -0
  733. package/types/utils/array.d.ts +1 -0
  734. package/types/utils/color.d.ts +1 -0
  735. package/types/utils/dom.d.ts +41 -0
  736. package/types/utils/error.d.ts +2 -0
  737. package/types/utils/language.d.ts +8 -0
  738. package/types/utils/manifest.d.ts +3 -0
  739. package/types/utils/mime.d.ts +15 -0
  740. package/types/utils/network.d.ts +17 -0
  741. package/types/utils/number.d.ts +17 -0
  742. package/types/utils/promise.d.ts +1 -0
  743. package/types/utils/scroll.d.ts +5 -0
  744. package/types/utils/support.d.ts +72 -0
  745. package/types/utils/time.d.ts +57 -0
  746. package/vite.config.ts +61 -0
@@ -0,0 +1,1082 @@
1
+ /*
2
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3
+ * Video Layout
4
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
+ */
6
+
7
+ [data-media-player] .vds-video-layout:not([data-match]) {
8
+ display: none !important;
9
+ }
10
+
11
+ [data-media-player][data-layout='video'] {
12
+ background-color: var(--video-bg, black);
13
+ }
14
+
15
+ [data-media-player][data-layout='video']:not([data-fullscreen]) {
16
+ border-radius: var(--video-border-radius, 6px);
17
+ border: var(--video-border, 1px solid rgb(255 255 255 / 0.1));
18
+ }
19
+
20
+ :where(.vds-video-layout) {
21
+ --media-brand: var(--video-brand, #f5f5f5);
22
+ --media-font-family: var(--video-font-family, sans-serif);
23
+ --media-controls-color: var(--video-controls-color, #f5f5f5);
24
+ --media-tooltip-y-offset: 6px;
25
+ --media-menu-y-offset: 6px;
26
+ --media-focus-ring-color: var(--video-focus-ring-color, rgb(78 156 246));
27
+ --media-focus-ring: var(--video-focus-ring, 0 0 0 3px var(--media-focus-ring-color));
28
+ color: var(--video-controls-color, #f5f5f5);
29
+ display: contents;
30
+ }
31
+
32
+ :where([data-media-player][data-focus]:not([data-playing]) .vds-video-layout .vds-controls) {
33
+ border-radius: var(--video-border-radius, 6px);
34
+ box-shadow: var(--media-focus-ring);
35
+ }
36
+
37
+ /*
38
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
39
+ * Controls
40
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41
+ */
42
+
43
+ :where(.vds-video-layout .vds-controls[data-visible]) {
44
+ border-radius: var(--video-border-radius, 6px);
45
+ background-image: linear-gradient(
46
+ to top,
47
+ rgb(0 0 0 / 0.6),
48
+ 10%,
49
+ transparent,
50
+ 95%,
51
+ rgb(0 0 0 / 0.3)
52
+ );
53
+ }
54
+
55
+ .vds-video-layout .vds-controls-group {
56
+ align-items: center;
57
+ display: flex;
58
+ pointer-events: auto;
59
+ z-index: 0;
60
+ padding: 4px 6px;
61
+ }
62
+
63
+ .vds-video-layout .vds-controls-group:first-child {
64
+ z-index: 50;
65
+ }
66
+
67
+ /* second last group */
68
+ .vds-video-layout .vds-controls-group:nth-last-child(2) {
69
+ padding: 0 12px;
70
+ z-index: 11;
71
+ margin-bottom: -16px;
72
+ }
73
+
74
+ .vds-video-layout:not([data-sm]) .vds-controls-group:last-child {
75
+ --media-menu-y-offset: 26px;
76
+ --media-tooltip-y-offset: 26px;
77
+ --media-slider-preview-offset: 26px;
78
+ z-index: 10;
79
+ }
80
+
81
+ :where(.vds-video-layout .vds-button) {
82
+ margin-right: 2.5px;
83
+ }
84
+
85
+ /*
86
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
87
+ * Title
88
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
89
+ */
90
+
91
+ :where(.vds-video-layout[data-sm] .vds-chapter-title) {
92
+ font-size: var(--video-sm-chapter-title-font-size, 15px);
93
+ }
94
+
95
+ :where([data-fullscreen] .vds-video-layout .vds-chapter-title) {
96
+ font-size: var(--video-fullscreen-chapter-title-font-size, 16px);
97
+ }
98
+
99
+ /*
100
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
101
+ * Buttons
102
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
103
+ */
104
+
105
+ :where(.vds-video-layout:not([data-sm]) .vds-mute-button) {
106
+ margin-left: -2.5px;
107
+ margin-right: -5px;
108
+ }
109
+
110
+ :where(.vds-video-layout[data-sm]) {
111
+ --media-button-size: var(--video-sm-button-size, 36px);
112
+ }
113
+
114
+ /*
115
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
116
+ * Sliders
117
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
118
+ */
119
+
120
+ :where(.vds-video-layout .vds-time-slider) {
121
+ --media-slider-height: 45px;
122
+ flex-grow: 0;
123
+ }
124
+
125
+ :where(.vds-video-layout .vds-slider-thumbnail) {
126
+ --media-thumbnail-border: var(--video-slider-thumbnail-border, 1px solid #f5f5f5);
127
+ border-radius: var(--video-slider-thumbnail-border-radius, 2px);
128
+ }
129
+
130
+ .vds-video-layout .vds-time-slider .vds-slider-value {
131
+ background-color: var(--video-time-bg, unset);
132
+ text-shadow:
133
+ -1px -1px 0 #333333,
134
+ 1px -1px 0 #333333,
135
+ -1px 1px 0 #333333,
136
+ 1px 1px 0 #333333;
137
+ }
138
+
139
+ :where(.vds-video-layout[data-sm] .vds-time) {
140
+ text-shadow: unset;
141
+ }
142
+
143
+ /*
144
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
145
+ * Large Layout Volume Slider
146
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
147
+ */
148
+
149
+ :where(.vds-video-layout[data-lg] .vds-volume) {
150
+ --gap: var(--video-volume-gap, 10px);
151
+ display: contents;
152
+ }
153
+
154
+ :where(.vds-video-layout[data-lg] .vds-volume-popup) {
155
+ display: contents;
156
+ }
157
+
158
+ :where(.vds-video-layout[data-lg] .vds-volume-slider) {
159
+ margin: 0;
160
+ max-width: 0;
161
+ transition: all 0.15s ease;
162
+ }
163
+
164
+ :where(.vds-video-layout[data-lg] .vds-volume[data-active] .vds-volume-slider),
165
+ :where(.vds-video-layout[data-lg] .vds-volume:has([data-active]) .vds-volume-slider) {
166
+ margin-left: var(--gap);
167
+ opacity: 1;
168
+ visibility: visible;
169
+ max-width: var(--video-volume-slider-max-width, 72px);
170
+ }
171
+
172
+ /* safe area. */
173
+ .vds-video-layout[data-lg] .vds-volume-slider::after {
174
+ content: '';
175
+ position: fixed;
176
+ top: 0;
177
+ left: calc(-1 * var(--gap));
178
+ width: var(--gap);
179
+ height: 100%;
180
+ z-index: 1;
181
+ pointer-events: auto;
182
+ }
183
+
184
+ /*
185
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
186
+ * Small Layout Volume Slider
187
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
188
+ */
189
+
190
+ :where(.vds-video-layout[data-sm] .vds-volume) {
191
+ --media-slider-height: var(--video-volume-height, 96px);
192
+ --media-slider-preview-offset: calc(-200% - 6px);
193
+ --gap: var(--video-volume-gap, 10px);
194
+ position: relative;
195
+ display: flex;
196
+ align-items: center;
197
+ justify-content: center;
198
+ }
199
+
200
+ :where(.vds-video-layout[data-sm] .vds-volume-popup) {
201
+ display: block;
202
+ position: absolute;
203
+ top: calc(100% + var(--gap));
204
+ left: 50%;
205
+ opacity: 0;
206
+ transform: translateX(-50%);
207
+ transition:
208
+ opacity 150ms ease-out,
209
+ visibility 150ms ease-out;
210
+ border-radius: var(--video-volume-border-radius, 8px);
211
+ filter: var(--media-volume-filter, drop-shadow(0 1px 1px rgb(0 0 0 / 0.05)));
212
+ visibility: hidden;
213
+ }
214
+
215
+ /* safe area. */
216
+ .vds-video-layout[data-sm] .vds-mute-button::after {
217
+ content: '';
218
+ position: fixed;
219
+ bottom: calc(-1 * var(--gap));
220
+ right: 0;
221
+ width: 100%;
222
+ height: var(--gap);
223
+ z-index: 1;
224
+ pointer-events: auto;
225
+ }
226
+
227
+ .vds-video-layout .vds-volume-popup {
228
+ background-color: var(--video-volume-bg, var(--media-menu-bg, var(--default-bg)));
229
+ border: var(--video-volume-border, var(--default-border));
230
+ }
231
+
232
+ .light .vds-video-layout .vds-volume-popup,
233
+ .vds-video-layout.light .vds-volume-popup {
234
+ --default-bg: rgb(250 250 250);
235
+ --default-border: 1px solid rgb(10 10 10 / 0.1);
236
+ }
237
+
238
+ .dark .vds-video-layout .vds-volume-popup,
239
+ .vds-video-layout.dark .vds-volume-popup {
240
+ --default-bg: rgb(10 10 10);
241
+ --default-border: 1px solid rgb(255 255 255 / 0.1);
242
+ }
243
+
244
+ :where(.vds-video-layout[data-sm] .vds-volume[data-active] .vds-volume-popup),
245
+ :where(.vds-video-layout[data-sm] .vds-volume:has([data-active]) .vds-volume-popup) {
246
+ transition:
247
+ opacity 150ms ease-in,
248
+ visibility 150ms ease-in;
249
+ opacity: 1;
250
+ visibility: visible;
251
+ }
252
+
253
+ :where(.vds-video-layout[data-sm] .vds-volume[data-active] .vds-tooltip-content) {
254
+ display: none !important;
255
+ }
256
+
257
+ /*
258
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
259
+ * Time
260
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
261
+ */
262
+
263
+ :where(.vds-video-layout .vds-time[data-type='current']) {
264
+ margin-right: 2px;
265
+ }
266
+
267
+ :where(.vds-video-layout .vds-time[data-type='current'][remainder]) {
268
+ margin-left: 2px;
269
+ }
270
+
271
+ .vds-video-layout .vds-time {
272
+ --default-color: #f5f5f5 !important;
273
+ }
274
+
275
+ /*
276
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
277
+ * Captions
278
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
279
+ */
280
+
281
+ :where([data-preview] .vds-video-layout .vds-captions) {
282
+ opacity: 0;
283
+ }
284
+
285
+ :where(.vds-video-layout .vds-captions) {
286
+ z-index: 10;
287
+ transition: var(--video-captions-transition, bottom 0.3s ease-in-out);
288
+ }
289
+
290
+ @media (min-width: 980px) {
291
+ :where([data-fullscreen] .vds-video-layout .vds-captions) {
292
+ bottom: var(--video-lg-fullscreen-captions-offset, 54px);
293
+ }
294
+ }
295
+
296
+ :where([data-media-player][data-controls] .vds-video-layout .vds-captions) {
297
+ bottom: var(--video-captions-offset, 78px);
298
+ }
299
+
300
+ :where([data-media-player][data-controls] .vds-video-layout[data-sm] .vds-captions) {
301
+ bottom: var(--video-sm-captions-offset, 48px);
302
+ }
303
+
304
+ /*
305
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
306
+ * Chapters
307
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
308
+ */
309
+
310
+ :where(.vds-video-layout .vds-time-slider .vds-slider-chapter-title) {
311
+ width: 100%;
312
+ text-align: center;
313
+ text-shadow:
314
+ -1px -1px 0 #212121,
315
+ 1px -1px 0 #212121,
316
+ -1px 1px 0 #212121,
317
+ 1px 1px 0 #212121;
318
+ }
319
+
320
+ /*
321
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
322
+ * Gestures
323
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
324
+ */
325
+
326
+ :where(.vds-video-layout .vds-gesture) {
327
+ top: 0;
328
+ left: 0;
329
+ width: 100%;
330
+ height: 100%;
331
+ z-index: 0;
332
+ }
333
+
334
+ :where(.vds-video-layout .vds-gesture[action='seek:-10']) {
335
+ width: var(--video-gesture-seek-width, 20%);
336
+ z-index: 1;
337
+ }
338
+
339
+ :where(.vds-video-layout .vds-gesture[action='seek:10']) {
340
+ left: unset;
341
+ right: 0;
342
+ width: var(--video-gesture-seek-width, 20%);
343
+ z-index: 1;
344
+ }
345
+
346
+ @media (pointer: coarse) {
347
+ :where(.vds-video-layout .vds-gesture[action='toggle:paused']) {
348
+ display: none;
349
+ }
350
+ }
351
+
352
+ @media not (pointer: coarse) {
353
+ :where([data-media-player] .vds-video-layout .vds-gesture[action='toggle:controls']) {
354
+ display: none;
355
+ }
356
+ }
357
+
358
+ /*
359
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
360
+ * Live Button
361
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
362
+ */
363
+
364
+ :where(.vds-video-layout .vds-live-button) {
365
+ margin-left: 12px;
366
+ }
367
+
368
+ /*
369
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
370
+ * Time Group
371
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
372
+ */
373
+
374
+ :where(.vds-video-layout:not([data-sm]) .vds-time-group) {
375
+ margin-left: 10px;
376
+ }
377
+
378
+ :where(.vds-video-layout[data-sm] .vds-time) {
379
+ font-size: var(--video-sm-time-font-size, 14px);
380
+ }
381
+
382
+ :where([data-fullscreen] .vds-video-layout .vds-time) {
383
+ font-size: var(--video-fullscreen-time-font-size, 16px);
384
+ }
385
+
386
+ /*
387
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
388
+ * Load Container
389
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
390
+ */
391
+
392
+ :where(.vds-video-layout .vds-load-container) {
393
+ position: absolute;
394
+ inset: 0;
395
+ width: 100%;
396
+ height: 100%;
397
+ display: none;
398
+ align-items: center;
399
+ justify-content: center;
400
+ pointer-events: none;
401
+ z-index: 99;
402
+ }
403
+
404
+ :where(
405
+ [data-media-player][data-load='play']:not([data-started])
406
+ .vds-video-layout[data-match]
407
+ .vds-load-container
408
+ ) {
409
+ display: flex;
410
+ }
411
+
412
+ :where(.vds-video-layout .vds-load-container .vds-play-button) {
413
+ --size: var(--video-load-button-size, 56px);
414
+ --color: var(--video-load-button-color, rgb(0 0 0 / 0.8));
415
+ --bg-color: var(--video-load-button-bg, var(--media-brand));
416
+
417
+ --media-button-hover-transform: 0;
418
+ --media-button-border: var(--video-load-button-border, var(--color));
419
+ --media-button-hover-bg: var(--video-load-button-bg, var(--media-brand));
420
+
421
+ width: var(--size);
422
+ height: var(--size);
423
+ pointer-events: auto;
424
+ margin-bottom: 2px;
425
+ overflow: hidden;
426
+ }
427
+
428
+ .vds-video-layout .vds-load-container .vds-play-button {
429
+ border-radius: var(--video-load-button-border-radius, 100%);
430
+ color: var(--color);
431
+ }
432
+
433
+ .vds-video-layout .vds-load-container .vds-play-button {
434
+ background-color: var(--bg-color);
435
+ }
436
+
437
+ :where(.vds-video-layout[data-sm] .vds-load-container .vds-play-button) {
438
+ --size: var(--video-sm-load-button-size, 48px);
439
+ --media-button-hover-transform: translateY(0%);
440
+ width: var(--size);
441
+ height: var(--size);
442
+ transform: translateY(0%);
443
+ }
444
+
445
+ /*
446
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
447
+ * Small Layout
448
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
449
+ */
450
+
451
+ :where(.vds-video-layout[data-sm] .vds-controls-group:nth-last-child(2)) {
452
+ pointer-events: none;
453
+ }
454
+
455
+ :where(.vds-video-layout[data-sm] .vds-controls-group:last-child) {
456
+ z-index: 2;
457
+ margin-top: -2.5px;
458
+ margin-bottom: -6px;
459
+ }
460
+
461
+ :where([data-fullscreen] .vds-video-layout[data-sm] .vds-controls-group:last-child) {
462
+ margin-bottom: 0;
463
+ }
464
+
465
+ .vds-video-layout[data-sm] .vds-controls-group {
466
+ padding: 2px;
467
+ }
468
+
469
+ :where(.vds-video-layout[data-sm])
470
+ :where(
471
+ .vds-button,
472
+ .vds-slider:not(.vds-time-slider),
473
+ .vds-time,
474
+ .vds-time-divider,
475
+ .vds-chapter-title
476
+ ) {
477
+ transition: opacity 0.15s ease;
478
+ }
479
+
480
+ :where([data-media-player]:not([data-started]) .vds-video-layout[data-sm])
481
+ :where(.vds-button .vds-slider, .vds-time-group) {
482
+ opacity: 0;
483
+ visibility: hidden;
484
+ }
485
+
486
+ :where(.vds-video-layout[data-sm] .vds-time-slider) {
487
+ transition: transform 0.1s linear;
488
+ }
489
+
490
+ @media (pointer: coarse) {
491
+ :where([data-preview] .vds-video-layout:not([data-no-scrub-gesture]))
492
+ :where(
493
+ .vds-button,
494
+ .vds-slider:not(.vds-time-slider),
495
+ .vds-time,
496
+ .vds-chapter-title,
497
+ .vds-time-divider,
498
+ .vds-captions,
499
+ .vds-live-button
500
+ ) {
501
+ opacity: 0;
502
+ }
503
+
504
+ :where([data-preview] .vds-video-layout:not([data-no-scrub-gesture]) .vds-time-slider) {
505
+ --track-height: var(--video-sm-slider-focus-track-height, 12px);
506
+ transform: translateY(-6px);
507
+ transition: transform 0.1s linear;
508
+ }
509
+ }
510
+
511
+ :where(.vds-video-layout[data-sm] .vds-controls .vds-play-button) {
512
+ --size: var(--video-sm-play-button-size, 45px);
513
+ --media-button-hover-transform: translateY(25%);
514
+ width: var(--size);
515
+ height: var(--size);
516
+ transform: translateY(25%);
517
+ border-radius: 100%;
518
+ pointer-events: auto;
519
+ margin-bottom: 2px;
520
+ overflow: hidden;
521
+ }
522
+
523
+ .vds-video-layout[data-sm] .vds-controls .vds-play-button {
524
+ background-color: var(--video-sm-play-button-bg, rgba(0 0 0 / 0.6));
525
+ }
526
+
527
+ :where(
528
+ [data-media-player]:not([data-started])
529
+ .vds-video-layout[data-sm]
530
+ .vds-controls-group:not(:nth-child(3))
531
+ ) {
532
+ opacity: 0;
533
+ visibility: hidden;
534
+ }
535
+
536
+ /* center big play button inside buffering indicator. */
537
+ :where(.vds-video-layout[data-sm] .vds-buffering-indicator) {
538
+ --media-buffering-size: 64px;
539
+ transform: translate(-2px, -4px);
540
+ }
541
+
542
+ :where(.vds-video-layout .vds-start-duration .vds-time) {
543
+ position: absolute;
544
+ right: 8px;
545
+ bottom: 8px;
546
+ margin-right: 8px;
547
+ margin-bottom: 8px;
548
+ z-index: 10;
549
+ }
550
+
551
+ .vds-video-layout .vds-start-duration .vds-time {
552
+ padding: var(--video-sm-start-duration-padding, 3px 6px);
553
+ color: var(--video-sm-start-duration-color, var(--video-controls-color));
554
+ background-color: var(--video-sm-start-duration-bg, rgba(0 0 0 / 0.64));
555
+ }
556
+
557
+ :where([data-started] .vds-video-layout .vds-start-duration .vds-time) {
558
+ display: none;
559
+ }
560
+
561
+ :where([data-media-player]:not([data-can-play]) .vds-video-layout .vds-start-duration .vds-time) {
562
+ opacity: 0;
563
+ }
564
+
565
+ :where(.vds-video-layout[data-sm] .vds-time[data-type='current']) {
566
+ margin-left: 8px;
567
+ }
568
+
569
+ /*
570
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
571
+ * Fullscreen
572
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
573
+ */
574
+
575
+ :where([data-fullscreen] .vds-video-layout .vds-controls-group:nth-last-child(2)) {
576
+ margin-bottom: -16px;
577
+ }
578
+
579
+ @media (orientation: portrait) {
580
+ :where([data-fullscreen] .vds-video-layout .vds-captions) {
581
+ bottom: 30lvh;
582
+ bottom: 10dvh;
583
+ }
584
+ }
585
+
586
+ @media (orientation: landscape) {
587
+ :where([data-fullscreen] .vds-video-layout .vds-controls-group:nth-last-child(2)) {
588
+ margin-bottom: -12px;
589
+ }
590
+ }
591
+
592
+ /*
593
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
594
+ * Notflix Modern Rework — Balanced, Clean, Proportional
595
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
596
+ */
597
+
598
+ /* --- Bottom controls group wrapper --- */
599
+ .vds-video-layout .vds-controls-group-bottom {
600
+ display: flex;
601
+ align-items: center;
602
+ gap: 4px;
603
+ padding: 4px 12px 8px;
604
+ }
605
+
606
+ /* --- All buttons: circular, no boxy look --- */
607
+ :where(.vds-video-layout .vds-button) {
608
+ border-radius: 50%;
609
+ transition:
610
+ background-color 0.15s ease,
611
+ transform 0.15s ease;
612
+ }
613
+
614
+ /* --- Buttons in bottom bar: balanced 40px --- */
615
+ :where(.vds-video-layout .vds-controls-group-bottom .vds-button) {
616
+ --media-button-size: 40px;
617
+ --media-button-icon-size: 22px;
618
+ background: transparent;
619
+ border-radius: 50%;
620
+ margin: 0;
621
+ }
622
+
623
+ @media (hover: hover) and (pointer: fine) {
624
+ .vds-video-layout .vds-controls-group-bottom .vds-button:hover {
625
+ background-color: rgba(255, 255, 255, 0.1);
626
+ transform: scale(1.1);
627
+ }
628
+ }
629
+
630
+ /* --- Play button: slightly bigger than the rest --- */
631
+ :where(.vds-video-layout .vds-controls-group-bottom .vds-play-button) {
632
+ --media-button-size: 44px;
633
+ --media-button-icon-size: 26px;
634
+ }
635
+
636
+ /* --- Seek buttons --- */
637
+ :where(.vds-video-layout .vds-controls-group-bottom .vds-seek-button) {
638
+ --media-button-size: 38px;
639
+ --media-button-icon-size: 20px;
640
+ }
641
+
642
+ /* --- Episode button: same row, same size --- */
643
+ .vds-video-layout .vds-episode-button {
644
+ --media-button-size: 40px;
645
+ --media-button-icon-size: 22px;
646
+ border-radius: 50%;
647
+ transition:
648
+ background-color 0.15s ease,
649
+ transform 0.15s ease;
650
+ }
651
+
652
+ @media (hover: hover) and (pointer: fine) {
653
+ .vds-video-layout .vds-episode-button:hover {
654
+ background-color: rgba(255, 255, 255, 0.1);
655
+ transform: scale(1.1);
656
+ }
657
+ }
658
+
659
+ /* --- Scrim: cinematic gradient --- */
660
+ :where(.vds-video-layout .vds-scrim) {
661
+ position: absolute;
662
+ inset: 0;
663
+ pointer-events: none;
664
+ background: linear-gradient(
665
+ to top,
666
+ rgba(0, 0, 0, 0.65) 0%,
667
+ rgba(0, 0, 0, 0.2) 20%,
668
+ transparent 45%,
669
+ transparent 80%,
670
+ rgba(0, 0, 0, 0.15) 100%
671
+ );
672
+ opacity: 0;
673
+ transition: opacity 0.25s ease;
674
+ z-index: 1;
675
+ }
676
+
677
+ :where([data-media-player][data-controls] .vds-video-layout .vds-scrim) {
678
+ opacity: 1;
679
+ }
680
+
681
+ /* --- Menu: glassmorphism, rounded --- */
682
+ :where(.vds-video-layout .vds-menu-items[data-root]) {
683
+ --root-border-radius: 12px;
684
+ --item-border-radius: 8px;
685
+ border-radius: 12px;
686
+ backdrop-filter: blur(16px) saturate(180%);
687
+ background-color: rgba(15, 15, 15, 0.88);
688
+ border: 1px solid rgba(255, 255, 255, 0.08);
689
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
690
+ }
691
+
692
+ :where(.vds-video-layout .vds-menu-item, .vds-video-layout .vds-radio) {
693
+ border-radius: 8px;
694
+ transition: background-color 0.12s ease;
695
+ }
696
+
697
+ /* --- Slider: slightly thicker than default — more grippable --- */
698
+ :where(.vds-video-layout .vds-time-slider) {
699
+ --media-slider-height: 44px;
700
+ --media-slider-track-height: 4px;
701
+ --media-slider-track-focus-height: 6px;
702
+ }
703
+
704
+ :where(.vds-video-layout .vds-slider-track) {
705
+ border-radius: 9999px;
706
+ }
707
+
708
+ :where(.vds-video-layout .vds-slider-track-fill) {
709
+ border-radius: 9999px;
710
+ }
711
+
712
+ /* --- Tooltip: compact pill --- */
713
+ :where(.vds-video-layout .vds-tooltip-content) {
714
+ border-radius: 8px;
715
+ backdrop-filter: blur(10px);
716
+ background-color: rgba(20, 20, 20, 0.92);
717
+ font-size: 12px;
718
+ padding: 5px 10px;
719
+ border: 1px solid rgba(255, 255, 255, 0.07);
720
+ letter-spacing: 0.01em;
721
+ }
722
+
723
+ /* --- Time text --- */
724
+ :where(.vds-video-layout .vds-time) {
725
+ font-variant-numeric: tabular-nums;
726
+ font-size: 13px;
727
+ letter-spacing: 0.01em;
728
+ }
729
+
730
+ /* --- Caption flag slot --- */
731
+ :where(.vds-video-layout .vds-caption-radio) {
732
+ display: flex;
733
+ align-items: center;
734
+ gap: 8px;
735
+ }
736
+
737
+ :where(.vds-video-layout .vds-caption-radio .vds-caption-flag) {
738
+ font-size: 16px;
739
+ line-height: 1;
740
+ flex-shrink: 0;
741
+ }
742
+
743
+ /* --- Small (mobile) layout --- */
744
+ .vds-video-layout[data-sm] .vds-controls-group-bottom .vds-button {
745
+ --media-button-size: 36px;
746
+ --media-button-icon-size: 20px;
747
+ }
748
+
749
+ .vds-video-layout[data-sm] .vds-controls-group-bottom .vds-play-button {
750
+ --media-button-size: 40px;
751
+ --media-button-icon-size: 24px;
752
+ }
753
+
754
+ .vds-video-layout[data-sm] .vds-controls-group-bottom .vds-seek-button {
755
+ --media-button-size: 34px;
756
+ --media-button-icon-size: 18px;
757
+ }
758
+
759
+ /* --- Episodes fullscreen sidebar --- */
760
+ .vds-video-layout .vds-episodes-backdrop {
761
+ position: absolute;
762
+ inset: 0;
763
+ z-index: 19;
764
+ opacity: 0;
765
+ pointer-events: none;
766
+ transition: opacity 0.24s ease;
767
+ background: linear-gradient(90deg, rgb(0 0 0 / 0%) 56%, rgb(0 0 0 / 42%) 100%);
768
+ }
769
+
770
+ .vds-video-layout .vds-episodes-backdrop[data-open='true'] {
771
+ opacity: 1;
772
+ pointer-events: auto;
773
+ }
774
+
775
+ .vds-video-layout .vds-episodes-panel {
776
+ position: absolute;
777
+ top: 50%;
778
+ right: 20px;
779
+ width: min(36vw, 430px);
780
+ max-height: min(74vh, 620px);
781
+ overflow: auto;
782
+ padding: 0;
783
+ background: linear-gradient(180deg, rgb(10 10 10 / 94%) 0%, rgb(4 4 4 / 92%) 100%);
784
+ border: 1px solid rgb(255 255 255 / 20%);
785
+ border-radius: 18px;
786
+ backdrop-filter: blur(14px);
787
+ box-shadow:
788
+ 0 26px 56px rgb(0 0 0 / 58%),
789
+ inset 0 1px 0 rgb(255 255 255 / 8%);
790
+ z-index: 20;
791
+ opacity: 0;
792
+ transform: translate3d(16px, -50%, 0);
793
+ pointer-events: none;
794
+ transition:
795
+ opacity 0.26s ease,
796
+ transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),
797
+ filter 0.26s ease;
798
+ filter: blur(2px);
799
+ scrollbar-width: thin;
800
+ scrollbar-color: rgb(255 255 255 / 28%) transparent;
801
+ }
802
+
803
+ .vds-video-layout .vds-episodes-panel[data-open='true'] {
804
+ opacity: 1;
805
+ transform: translate3d(0, -50%, 0);
806
+ pointer-events: auto;
807
+ filter: blur(0);
808
+ }
809
+
810
+ .vds-video-layout .vds-episodes-panel-header {
811
+ display: flex;
812
+ align-items: center;
813
+ justify-content: space-between;
814
+ padding: 14px 16px 12px;
815
+ border-bottom: 1px solid rgb(255 255 255 / 12%);
816
+ position: sticky;
817
+ top: 0;
818
+ z-index: 1;
819
+ background: linear-gradient(180deg, rgb(10 10 10 / 95%), rgb(10 10 10 / 74%));
820
+ backdrop-filter: blur(8px);
821
+ }
822
+
823
+ .vds-video-layout .vds-episodes-close-btn {
824
+ width: 30px;
825
+ height: 30px;
826
+ border: 0;
827
+ border-radius: 999px;
828
+ background: transparent;
829
+ color: rgb(255 255 255 / 78%);
830
+ display: inline-flex;
831
+ align-items: center;
832
+ justify-content: center;
833
+ cursor: pointer;
834
+ }
835
+
836
+ .vds-video-layout .vds-episodes-close-btn:hover {
837
+ background: rgb(255 255 255 / 10%);
838
+ color: #fff;
839
+ }
840
+
841
+ .vds-video-layout .vds-episodes-panel-title {
842
+ font-size: 15px;
843
+ font-weight: 600;
844
+ letter-spacing: 0.01em;
845
+ white-space: nowrap;
846
+ overflow: hidden;
847
+ text-overflow: ellipsis;
848
+ }
849
+
850
+ .vds-video-layout .vds-episodes-list {
851
+ margin: 0;
852
+ padding: 10px;
853
+ display: grid;
854
+ gap: 0;
855
+ scrollbar-width: thin;
856
+ scrollbar-color: rgb(255 255 255 / 28%) transparent;
857
+ }
858
+
859
+ .vds-video-layout .vds-episodes-empty {
860
+ padding: 12px;
861
+ font-size: 12px;
862
+ color: rgb(255 255 255 / 72%);
863
+ }
864
+
865
+ .vds-video-layout .vds-episodes-panel::-webkit-scrollbar {
866
+ width: 6px;
867
+ height: 6px;
868
+ -webkit-appearance: none;
869
+ }
870
+
871
+ .vds-video-layout .vds-episodes-panel::-webkit-scrollbar-track {
872
+ background: transparent;
873
+ border-radius: 999px;
874
+ }
875
+
876
+ .vds-video-layout .vds-episodes-panel::-webkit-scrollbar-button {
877
+ display: none;
878
+ width: 0;
879
+ height: 0;
880
+ -webkit-appearance: none;
881
+ }
882
+
883
+ .vds-video-layout .vds-episodes-panel::-webkit-scrollbar-button:single-button {
884
+ display: none;
885
+ width: 0;
886
+ height: 0;
887
+ }
888
+
889
+ .vds-video-layout .vds-episodes-panel::-webkit-scrollbar-thumb {
890
+ border-radius: 999px;
891
+ border: 1px solid rgb(255 255 255 / 12%);
892
+ background: linear-gradient(180deg, rgb(255 255 255 / 30%) 0%, rgb(255 255 255 / 16%) 100%);
893
+ transition:
894
+ background 0.18s ease,
895
+ border-color 0.18s ease;
896
+ }
897
+
898
+ .vds-video-layout .vds-episodes-panel::-webkit-scrollbar-thumb:hover {
899
+ border-color: rgb(255 255 255 / 20%);
900
+ background: linear-gradient(180deg, rgb(255 255 255 / 42%) 0%, rgb(255 255 255 / 24%) 100%);
901
+ }
902
+
903
+ .vds-video-layout .vds-episodes-panel::-webkit-scrollbar-corner {
904
+ background: transparent;
905
+ }
906
+
907
+ .vds-video-layout .vds-episodes-list::-webkit-scrollbar {
908
+ width: 6px;
909
+ height: 6px;
910
+ -webkit-appearance: none;
911
+ }
912
+
913
+ .vds-video-layout .vds-episodes-list::-webkit-scrollbar-track {
914
+ background: transparent;
915
+ border-radius: 999px;
916
+ }
917
+
918
+ .vds-video-layout .vds-episodes-list::-webkit-scrollbar-button,
919
+ .vds-video-layout .vds-episodes-list::-webkit-scrollbar-button:single-button {
920
+ display: none;
921
+ width: 0;
922
+ height: 0;
923
+ -webkit-appearance: none;
924
+ }
925
+
926
+ .vds-video-layout .vds-episodes-list::-webkit-scrollbar-thumb {
927
+ border-radius: 999px;
928
+ border: 1px solid rgb(255 255 255 / 12%);
929
+ background: linear-gradient(180deg, rgb(255 255 255 / 30%) 0%, rgb(255 255 255 / 16%) 100%);
930
+ }
931
+
932
+ .vds-video-layout .vds-episodes-list::-webkit-scrollbar-thumb:hover {
933
+ border-color: rgb(255 255 255 / 20%);
934
+ background: linear-gradient(180deg, rgb(255 255 255 / 42%) 0%, rgb(255 255 255 / 24%) 100%);
935
+ }
936
+
937
+ .vds-video-layout .vds-episode-item {
938
+ display: grid !important;
939
+ grid-template-columns: 152px minmax(0, 1fr) !important;
940
+ align-items: start;
941
+ width: 100%;
942
+ min-height: 108px;
943
+ gap: 12px;
944
+ padding: 11px 2px;
945
+ border-radius: 0;
946
+ border: 0;
947
+ border-bottom: 1px solid rgb(255 255 255 / 10%);
948
+ background: transparent;
949
+ transition:
950
+ transform 0.18s ease,
951
+ opacity 0.18s ease;
952
+ }
953
+
954
+ .vds-video-layout .vds-episode-item:hover {
955
+ transform: translateX(2px);
956
+ opacity: 0.98;
957
+ }
958
+
959
+ .vds-video-layout .vds-episode-thumb {
960
+ display: block;
961
+ width: 152px;
962
+ height: 86px;
963
+ object-fit: cover;
964
+ border-radius: 10px;
965
+ background: #151515;
966
+ border: 1px solid rgb(255 255 255 / 12%);
967
+ }
968
+
969
+ .vds-video-layout .vds-episode-thumb-wrap {
970
+ width: 152px;
971
+ height: 86px;
972
+ border-radius: 10px;
973
+ overflow: hidden;
974
+ }
975
+
976
+ .vds-video-layout .vds-episode-thumb-placeholder {
977
+ background: linear-gradient(125deg, rgb(255 255 255 / 6%), rgb(255 255 255 / 2%));
978
+ }
979
+
980
+ .vds-video-layout .vds-episode-body {
981
+ min-width: 0;
982
+ display: grid;
983
+ align-content: start;
984
+ gap: 3px;
985
+ }
986
+
987
+ .vds-video-layout .vds-episode-title,
988
+ .vds-video-layout .vds-episode-subtitle {
989
+ margin: 0;
990
+ white-space: nowrap;
991
+ overflow: hidden;
992
+ text-overflow: ellipsis;
993
+ }
994
+
995
+ .vds-video-layout .vds-episode-meta-row {
996
+ display: flex;
997
+ align-items: center;
998
+ justify-content: space-between;
999
+ gap: 8px;
1000
+ }
1001
+
1002
+ .vds-video-layout .vds-episode-label {
1003
+ font-size: 10px;
1004
+ font-weight: 700;
1005
+ letter-spacing: 0.08em;
1006
+ text-transform: uppercase;
1007
+ color: #e50914;
1008
+ }
1009
+
1010
+ .vds-video-layout .vds-episode-runtime {
1011
+ font-size: 11px;
1012
+ color: rgb(255 255 255 / 65%);
1013
+ }
1014
+
1015
+ .vds-video-layout .vds-episode-title {
1016
+ font-size: 14px;
1017
+ font-weight: 600;
1018
+ line-height: 1.2;
1019
+ }
1020
+
1021
+ .vds-video-layout .vds-episode-subtitle {
1022
+ margin-top: 1px;
1023
+ font-size: 12px;
1024
+ color: rgb(255 255 255 / 82%);
1025
+ }
1026
+
1027
+ .vds-video-layout .vds-episode-desc {
1028
+ margin: 0;
1029
+ font-size: 12px;
1030
+ line-height: 1.35;
1031
+ color: rgb(255 255 255 / 78%);
1032
+ line-clamp: 2;
1033
+ display: -webkit-box;
1034
+ -webkit-line-clamp: 2;
1035
+ -webkit-box-orient: vertical;
1036
+ overflow: hidden;
1037
+ }
1038
+
1039
+ @media (max-width: 640px) {
1040
+ .vds-video-layout[data-sm] .vds-controls .vds-play-button {
1041
+ --media-button-size: 38px;
1042
+ --media-button-icon-size: 22px;
1043
+ transform: translateY(0);
1044
+ margin-bottom: 0;
1045
+ }
1046
+
1047
+ .vds-video-layout .vds-episodes-backdrop {
1048
+ background: linear-gradient(180deg, rgb(0 0 0 / 18%) 0%, rgb(0 0 0 / 52%) 100%);
1049
+ }
1050
+
1051
+ .vds-video-layout .vds-episodes-panel {
1052
+ left: 10px;
1053
+ right: 10px;
1054
+ width: auto;
1055
+ top: auto;
1056
+ bottom: 64px;
1057
+ max-height: min(62vh, 480px);
1058
+ border-radius: 14px;
1059
+ transform: translate3d(0, 10px, 0);
1060
+ }
1061
+
1062
+ .vds-video-layout .vds-episodes-panel[data-open='true'] {
1063
+ transform: translate3d(0, 0, 0);
1064
+ }
1065
+
1066
+ .vds-video-layout .vds-episode-item {
1067
+ grid-template-columns: 116px minmax(0, 1fr) !important;
1068
+ min-height: 84px;
1069
+ gap: 10px;
1070
+ padding: 8px 0;
1071
+ }
1072
+
1073
+ .vds-video-layout .vds-episode-thumb {
1074
+ width: 116px;
1075
+ height: 66px;
1076
+ }
1077
+
1078
+ .vds-video-layout .vds-episode-thumb-wrap {
1079
+ width: 116px;
1080
+ height: 66px;
1081
+ }
1082
+ }