@videojs/html 10.1.0 → 10.3.0

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 (355) hide show
  1. package/dist/default/define/audio/compat-skin.css +116 -65
  2. package/dist/default/define/audio/compat-skin2.js +1 -1
  3. package/dist/default/define/audio/neutral-skin.css +25 -16
  4. package/dist/default/define/audio/neutral-skin2.js +1 -1
  5. package/dist/default/define/audio/scaffold-skin.css +93 -51
  6. package/dist/default/define/audio/scaffold-skin2.js +1 -1
  7. package/dist/default/define/audio/skin.css +21 -6
  8. package/dist/default/define/audio/skin2.js +1 -1
  9. package/dist/default/define/extensions/google-analytics.js +6 -0
  10. package/dist/default/define/live-audio/compat-skin.css +98 -65
  11. package/dist/default/define/live-audio/compat-skin2.js +1 -1
  12. package/dist/default/define/live-audio/neutral-skin.css +8 -5
  13. package/dist/default/define/live-audio/neutral-skin2.js +1 -1
  14. package/dist/default/define/live-audio/scaffold-skin.css +75 -51
  15. package/dist/default/define/live-audio/scaffold-skin2.js +1 -1
  16. package/dist/default/define/live-audio/skin.css +6 -5
  17. package/dist/default/define/live-audio/skin2.js +1 -1
  18. package/dist/default/define/live-video/compat-skin.css +123 -21
  19. package/dist/default/define/live-video/compat-skin2.js +1 -1
  20. package/dist/default/define/live-video/neutral-skin.css +82 -14
  21. package/dist/default/define/live-video/neutral-skin2.js +1 -1
  22. package/dist/default/define/live-video/scaffold-skin.css +107 -26
  23. package/dist/default/define/live-video/scaffold-skin2.js +1 -1
  24. package/dist/default/define/live-video/skin.css +96 -16
  25. package/dist/default/define/live-video/skin2.js +1 -1
  26. package/dist/default/define/media/dailymotion-video.js +11 -0
  27. package/dist/default/define/media/mixcloud-audio.js +11 -0
  28. package/dist/default/define/media/soundcloud-audio.js +11 -0
  29. package/dist/default/define/video/compat-skin.css +123 -21
  30. package/dist/default/define/video/compat-skin2.js +1 -1
  31. package/dist/default/define/video/neutral-skin.css +85 -24
  32. package/dist/default/define/video/neutral-skin2.js +1 -1
  33. package/dist/default/define/video/scaffold-skin.css +107 -26
  34. package/dist/default/define/video/scaffold-skin2.js +1 -1
  35. package/dist/default/define/video/skin.css +94 -16
  36. package/dist/default/define/video/skin2.js +1 -1
  37. package/dist/default/extensions/google-analytics/extension.js +75 -0
  38. package/dist/default/extensions/mux-data/extension.js +7 -2
  39. package/dist/default/internal/skins/compat-audio/register.js +0 -10
  40. package/dist/default/internal/skins/compat-audio/skin.css +116 -65
  41. package/dist/default/internal/skins/compat-audio/template.js +15 -39
  42. package/dist/default/internal/skins/compat-live-audio/register.js +0 -10
  43. package/dist/default/internal/skins/compat-live-audio/skin.css +98 -65
  44. package/dist/default/internal/skins/compat-live-audio/template.js +2 -26
  45. package/dist/default/internal/skins/compat-live-video/skin.css +123 -21
  46. package/dist/default/internal/skins/compat-video/skin.css +123 -21
  47. package/dist/default/internal/skins/default-audio/skin.css +21 -6
  48. package/dist/default/internal/skins/default-live-audio/skin.css +6 -5
  49. package/dist/default/internal/skins/default-live-video/skin.css +96 -16
  50. package/dist/default/internal/skins/default-video/skin.css +94 -16
  51. package/dist/default/internal/skins/neutral-audio/skin.css +25 -16
  52. package/dist/default/internal/skins/neutral-audio/template.js +1 -1
  53. package/dist/default/internal/skins/neutral-live-audio/skin.css +8 -5
  54. package/dist/default/internal/skins/neutral-live-video/skin.css +82 -14
  55. package/dist/default/internal/skins/neutral-video/skin.css +85 -24
  56. package/dist/default/internal/skins/neutral-video/template.js +1 -1
  57. package/dist/default/internal/skins/scaffold-audio/register.js +0 -10
  58. package/dist/default/internal/skins/scaffold-audio/skin.css +93 -51
  59. package/dist/default/internal/skins/scaffold-audio/template.js +15 -39
  60. package/dist/default/internal/skins/scaffold-live-audio/register.js +0 -10
  61. package/dist/default/internal/skins/scaffold-live-audio/skin.css +75 -51
  62. package/dist/default/internal/skins/scaffold-live-audio/template.js +2 -26
  63. package/dist/default/internal/skins/scaffold-live-video/skin.css +107 -26
  64. package/dist/default/internal/skins/scaffold-video/skin.css +107 -26
  65. package/dist/default/media/dailymotion-video/adapter.js +31 -0
  66. package/dist/default/media/hls-audio/adapter.js +1 -1
  67. package/dist/default/media/hls-background-video/adapter.js +8 -1
  68. package/dist/default/media/hls-video/adapter.js +1 -1
  69. package/dist/default/media/mixcloud-audio/adapter.js +16 -0
  70. package/dist/default/media/soundcloud-audio/adapter.js +16 -0
  71. package/dist/default/player/element.js +1 -5
  72. package/dist/default/presets/background/skin.js +2 -2
  73. package/dist/default/presets/skin.js +4 -3
  74. package/dist/default/ui/dialog/element.js +13 -1
  75. package/dist/default/ui/gesture/element.js +3 -0
  76. package/dist/default/ui/media-button-element.js +10 -1
  77. package/dist/default/ui/playback-rate-button/element.js +7 -2
  78. package/dist/default/ui/playback-rate-radio-group/element.js +10 -3
  79. package/dist/default/ui/radio-options/controller.js +18 -5
  80. package/dist/default/ui/slider/element.js +3 -1
  81. package/dist/default/ui/time-slider/element.js +19 -7
  82. package/dist/default/ui/volume-slider/element.js +3 -1
  83. package/dist/default/version.js +1 -1
  84. package/dist/dev/define/audio/compat-skin.css +116 -65
  85. package/dist/dev/define/audio/compat-skin2.js +1 -1
  86. package/dist/dev/define/audio/compat-skin2.js.map +1 -1
  87. package/dist/dev/define/audio/neutral-skin.css +25 -16
  88. package/dist/dev/define/audio/neutral-skin2.js +1 -1
  89. package/dist/dev/define/audio/neutral-skin2.js.map +1 -1
  90. package/dist/dev/define/audio/scaffold-skin.css +93 -51
  91. package/dist/dev/define/audio/scaffold-skin2.js +1 -1
  92. package/dist/dev/define/audio/scaffold-skin2.js.map +1 -1
  93. package/dist/dev/define/audio/skin.css +21 -6
  94. package/dist/dev/define/audio/skin2.js +1 -1
  95. package/dist/dev/define/audio/skin2.js.map +1 -1
  96. package/dist/dev/define/extensions/google-analytics.d.ts +11 -0
  97. package/dist/dev/define/extensions/google-analytics.js +8 -0
  98. package/dist/dev/define/extensions/google-analytics.js.map +1 -0
  99. package/dist/dev/define/live-audio/compat-skin.css +98 -65
  100. package/dist/dev/define/live-audio/compat-skin2.js +1 -1
  101. package/dist/dev/define/live-audio/compat-skin2.js.map +1 -1
  102. package/dist/dev/define/live-audio/neutral-skin.css +8 -5
  103. package/dist/dev/define/live-audio/neutral-skin2.js +1 -1
  104. package/dist/dev/define/live-audio/neutral-skin2.js.map +1 -1
  105. package/dist/dev/define/live-audio/scaffold-skin.css +75 -51
  106. package/dist/dev/define/live-audio/scaffold-skin2.js +1 -1
  107. package/dist/dev/define/live-audio/scaffold-skin2.js.map +1 -1
  108. package/dist/dev/define/live-audio/skin.css +6 -5
  109. package/dist/dev/define/live-audio/skin2.js +1 -1
  110. package/dist/dev/define/live-audio/skin2.js.map +1 -1
  111. package/dist/dev/define/live-video/compat-skin.css +123 -21
  112. package/dist/dev/define/live-video/compat-skin2.js +1 -1
  113. package/dist/dev/define/live-video/compat-skin2.js.map +1 -1
  114. package/dist/dev/define/live-video/neutral-skin.css +82 -14
  115. package/dist/dev/define/live-video/neutral-skin2.js +1 -1
  116. package/dist/dev/define/live-video/neutral-skin2.js.map +1 -1
  117. package/dist/dev/define/live-video/scaffold-skin.css +107 -26
  118. package/dist/dev/define/live-video/scaffold-skin2.js +1 -1
  119. package/dist/dev/define/live-video/scaffold-skin2.js.map +1 -1
  120. package/dist/dev/define/live-video/skin.css +96 -16
  121. package/dist/dev/define/live-video/skin2.js +1 -1
  122. package/dist/dev/define/live-video/skin2.js.map +1 -1
  123. package/dist/dev/define/media/dailymotion-video.d.ts +15 -0
  124. package/dist/dev/define/media/dailymotion-video.js +13 -0
  125. package/dist/dev/define/media/dailymotion-video.js.map +1 -0
  126. package/dist/dev/define/media/mixcloud-audio.d.ts +15 -0
  127. package/dist/dev/define/media/mixcloud-audio.js +13 -0
  128. package/dist/dev/define/media/mixcloud-audio.js.map +1 -0
  129. package/dist/dev/define/media/soundcloud-audio.d.ts +15 -0
  130. package/dist/dev/define/media/soundcloud-audio.js +13 -0
  131. package/dist/dev/define/media/soundcloud-audio.js.map +1 -0
  132. package/dist/dev/define/video/compat-skin.css +123 -21
  133. package/dist/dev/define/video/compat-skin2.js +1 -1
  134. package/dist/dev/define/video/compat-skin2.js.map +1 -1
  135. package/dist/dev/define/video/neutral-skin.css +85 -24
  136. package/dist/dev/define/video/neutral-skin2.js +1 -1
  137. package/dist/dev/define/video/neutral-skin2.js.map +1 -1
  138. package/dist/dev/define/video/scaffold-skin.css +107 -26
  139. package/dist/dev/define/video/scaffold-skin2.js +1 -1
  140. package/dist/dev/define/video/scaffold-skin2.js.map +1 -1
  141. package/dist/dev/define/video/skin.css +94 -16
  142. package/dist/dev/define/video/skin2.js +1 -1
  143. package/dist/dev/define/video/skin2.js.map +1 -1
  144. package/dist/dev/extensions/google-analytics/extension.d.ts +52 -0
  145. package/dist/dev/extensions/google-analytics/extension.js +77 -0
  146. package/dist/dev/extensions/google-analytics/extension.js.map +1 -0
  147. package/dist/dev/extensions/google-analytics/index.d.ts +2 -0
  148. package/dist/dev/extensions/mux-data/extension.d.ts +4 -1
  149. package/dist/dev/extensions/mux-data/extension.js +7 -2
  150. package/dist/dev/extensions/mux-data/extension.js.map +1 -1
  151. package/dist/dev/index.d.ts +3 -3
  152. package/dist/dev/internal/skins/compat-audio/register.d.ts +3 -5
  153. package/dist/dev/internal/skins/compat-audio/register.js +0 -10
  154. package/dist/dev/internal/skins/compat-audio/register.js.map +1 -1
  155. package/dist/dev/internal/skins/compat-audio/skin.css +116 -65
  156. package/dist/dev/internal/skins/compat-audio/template.js +15 -39
  157. package/dist/dev/internal/skins/compat-audio/template.js.map +1 -1
  158. package/dist/dev/internal/skins/compat-live-audio/register.d.ts +0 -2
  159. package/dist/dev/internal/skins/compat-live-audio/register.js +0 -10
  160. package/dist/dev/internal/skins/compat-live-audio/register.js.map +1 -1
  161. package/dist/dev/internal/skins/compat-live-audio/skin.css +98 -65
  162. package/dist/dev/internal/skins/compat-live-audio/template.js +2 -26
  163. package/dist/dev/internal/skins/compat-live-audio/template.js.map +1 -1
  164. package/dist/dev/internal/skins/compat-live-video/register.d.ts +2 -2
  165. package/dist/dev/internal/skins/compat-live-video/skin.css +123 -21
  166. package/dist/dev/internal/skins/compat-video/register.d.ts +5 -5
  167. package/dist/dev/internal/skins/compat-video/skin.css +123 -21
  168. package/dist/dev/internal/skins/default-audio/register.d.ts +1 -1
  169. package/dist/dev/internal/skins/default-audio/skin.css +21 -6
  170. package/dist/dev/internal/skins/default-live-audio/skin.css +6 -5
  171. package/dist/dev/internal/skins/default-live-video/register.d.ts +2 -2
  172. package/dist/dev/internal/skins/default-live-video/skin.css +96 -16
  173. package/dist/dev/internal/skins/default-video/register.d.ts +3 -3
  174. package/dist/dev/internal/skins/default-video/skin.css +94 -16
  175. package/dist/dev/internal/skins/neutral-audio/register.d.ts +3 -3
  176. package/dist/dev/internal/skins/neutral-audio/skin.css +25 -16
  177. package/dist/dev/internal/skins/neutral-audio/template.js +1 -1
  178. package/dist/dev/internal/skins/neutral-audio/template.js.map +1 -1
  179. package/dist/dev/internal/skins/neutral-live-audio/skin.css +8 -5
  180. package/dist/dev/internal/skins/neutral-live-video/register.d.ts +2 -2
  181. package/dist/dev/internal/skins/neutral-live-video/skin.css +82 -14
  182. package/dist/dev/internal/skins/neutral-video/register.d.ts +5 -5
  183. package/dist/dev/internal/skins/neutral-video/skin.css +85 -24
  184. package/dist/dev/internal/skins/neutral-video/template.js +1 -1
  185. package/dist/dev/internal/skins/neutral-video/template.js.map +1 -1
  186. package/dist/dev/internal/skins/scaffold-audio/register.d.ts +3 -5
  187. package/dist/dev/internal/skins/scaffold-audio/register.js +0 -10
  188. package/dist/dev/internal/skins/scaffold-audio/register.js.map +1 -1
  189. package/dist/dev/internal/skins/scaffold-audio/skin.css +93 -51
  190. package/dist/dev/internal/skins/scaffold-audio/template.js +15 -39
  191. package/dist/dev/internal/skins/scaffold-audio/template.js.map +1 -1
  192. package/dist/dev/internal/skins/scaffold-live-audio/register.d.ts +0 -2
  193. package/dist/dev/internal/skins/scaffold-live-audio/register.js +0 -10
  194. package/dist/dev/internal/skins/scaffold-live-audio/register.js.map +1 -1
  195. package/dist/dev/internal/skins/scaffold-live-audio/skin.css +75 -51
  196. package/dist/dev/internal/skins/scaffold-live-audio/template.js +2 -26
  197. package/dist/dev/internal/skins/scaffold-live-audio/template.js.map +1 -1
  198. package/dist/dev/internal/skins/scaffold-live-video/register.d.ts +2 -2
  199. package/dist/dev/internal/skins/scaffold-live-video/skin.css +107 -26
  200. package/dist/dev/internal/skins/scaffold-video/register.d.ts +5 -5
  201. package/dist/dev/internal/skins/scaffold-video/skin.css +107 -26
  202. package/dist/dev/media/dailymotion-video/adapter.d.ts +17 -0
  203. package/dist/dev/media/dailymotion-video/adapter.js +47 -0
  204. package/dist/dev/media/dailymotion-video/adapter.js.map +1 -0
  205. package/dist/dev/media/dailymotion-video/index.d.ts +2 -0
  206. package/dist/dev/media/hls-audio/adapter.d.ts +1 -1
  207. package/dist/dev/media/hls-audio/adapter.js +1 -1
  208. package/dist/dev/media/hls-audio/adapter.js.map +1 -1
  209. package/dist/dev/media/hls-background-video/adapter.d.ts +6 -1
  210. package/dist/dev/media/hls-background-video/adapter.js +8 -1
  211. package/dist/dev/media/hls-background-video/adapter.js.map +1 -1
  212. package/dist/dev/media/hls-video/adapter.d.ts +1 -1
  213. package/dist/dev/media/hls-video/adapter.js +1 -1
  214. package/dist/dev/media/hls-video/adapter.js.map +1 -1
  215. package/dist/dev/media/mixcloud-audio/adapter.d.ts +11 -0
  216. package/dist/dev/media/mixcloud-audio/adapter.js +52 -0
  217. package/dist/dev/media/mixcloud-audio/adapter.js.map +1 -0
  218. package/dist/dev/media/mixcloud-audio/index.d.ts +2 -0
  219. package/dist/dev/media/soundcloud-audio/adapter.d.ts +11 -0
  220. package/dist/dev/media/soundcloud-audio/adapter.js +53 -0
  221. package/dist/dev/media/soundcloud-audio/adapter.js.map +1 -0
  222. package/dist/dev/media/soundcloud-audio/index.d.ts +2 -0
  223. package/dist/dev/player/element.js +1 -5
  224. package/dist/dev/player/element.js.map +1 -1
  225. package/dist/dev/presets/background/skin.d.ts +2 -1
  226. package/dist/dev/presets/background/skin.js +2 -2
  227. package/dist/dev/presets/background/skin.js.map +1 -1
  228. package/dist/dev/presets/skin.d.ts +4 -3
  229. package/dist/dev/presets/skin.js +4 -3
  230. package/dist/dev/presets/skin.js.map +1 -1
  231. package/dist/dev/ui/dialog/element.js +13 -1
  232. package/dist/dev/ui/dialog/element.js.map +1 -1
  233. package/dist/dev/ui/gesture/element.js +3 -0
  234. package/dist/dev/ui/gesture/element.js.map +1 -1
  235. package/dist/dev/ui/media-button-element.d.ts +9 -0
  236. package/dist/dev/ui/media-button-element.js +10 -1
  237. package/dist/dev/ui/media-button-element.js.map +1 -1
  238. package/dist/dev/ui/play-button/element.d.ts +2 -0
  239. package/dist/dev/ui/playback-rate-button/element.d.ts +9 -1
  240. package/dist/dev/ui/playback-rate-button/element.js +7 -2
  241. package/dist/dev/ui/playback-rate-button/element.js.map +1 -1
  242. package/dist/dev/ui/playback-rate-radio-group/element.d.ts +4 -0
  243. package/dist/dev/ui/playback-rate-radio-group/element.js +10 -3
  244. package/dist/dev/ui/playback-rate-radio-group/element.js.map +1 -1
  245. package/dist/dev/ui/radio-options/controller.js +18 -5
  246. package/dist/dev/ui/radio-options/controller.js.map +1 -1
  247. package/dist/dev/ui/slider/element.js +3 -1
  248. package/dist/dev/ui/slider/element.js.map +1 -1
  249. package/dist/dev/ui/time-slider/element.js +19 -7
  250. package/dist/dev/ui/time-slider/element.js.map +1 -1
  251. package/dist/dev/ui/volume-slider/element.js +3 -1
  252. package/dist/dev/ui/volume-slider/element.js.map +1 -1
  253. package/dist/dev/version.js +1 -1
  254. package/docs/README.md +1 -1
  255. package/docs/guides/autoplay.md +1 -1
  256. package/docs/guides/browser-support.md +13 -11
  257. package/docs/guides/build-your-own-skin.md +383 -0
  258. package/docs/guides/cdn.md +10 -9
  259. package/docs/guides/content-security-policy.md +3 -0
  260. package/docs/guides/customize-skins.md +6 -3
  261. package/docs/guides/features.md +1 -1
  262. package/docs/guides/google-analytics.md +199 -0
  263. package/docs/guides/installation-cdn.md +4 -4
  264. package/docs/guides/installation-shadcn.md +3 -3
  265. package/docs/guides/installation-svelte.md +4 -4
  266. package/docs/guides/installation-vue.md +4 -4
  267. package/docs/guides/installation.md +4 -4
  268. package/docs/guides/internationalization.md +5 -5
  269. package/docs/guides/keyboard-shortcuts.md +1 -1
  270. package/docs/guides/llms.txt +3 -1
  271. package/docs/guides/media-sources.md +3 -0
  272. package/docs/guides/migrate-from-media-chrome.md +4 -4
  273. package/docs/guides/migrate-from-mux-player.md +9 -9
  274. package/docs/guides/migrate-from-plyr.md +8 -8
  275. package/docs/guides/migrate-from-video-js-8.md +9 -10
  276. package/docs/guides/migrate-from-vidstack.md +9 -9
  277. package/docs/guides/mux-data.md +22 -0
  278. package/docs/guides/presets.md +1 -1
  279. package/docs/guides/self-hosting.md +9 -6
  280. package/docs/guides/skins.md +17 -1
  281. package/docs/guides/ui-components.md +1 -1
  282. package/docs/llms.txt +12 -6
  283. package/docs/reference/api/feature-playback-rate.md +54 -3
  284. package/docs/reference/api/feature-playback.md +5 -1
  285. package/docs/reference/api/html-create-player.md +2 -2
  286. package/docs/reference/api/llms.txt +1 -1
  287. package/docs/reference/api/media-capabilities.md +1 -1
  288. package/docs/reference/api/player-store.md +6 -3
  289. package/docs/reference/api/preset-audio.md +13 -5
  290. package/docs/reference/api/preset-background.md +2 -2
  291. package/docs/reference/api/preset-live-audio.md +13 -5
  292. package/docs/reference/api/preset-live-video.md +13 -5
  293. package/docs/reference/api/preset-video.md +13 -5
  294. package/docs/reference/api/resolve-adapter-type.md +4 -1
  295. package/docs/reference/api/ui-element.md +2 -2
  296. package/docs/reference/components/alert-dialog.md +21 -16
  297. package/docs/reference/components/audio-compat-skin.md +8 -2
  298. package/docs/reference/components/audio-neutral-skin.md +2 -2
  299. package/docs/reference/components/audio-scaffold-skin.md +2 -2
  300. package/docs/reference/components/audio-skin.md +2 -2
  301. package/docs/reference/components/audio-track-radio-group.md +2 -2
  302. package/docs/reference/components/background-video-skin.md +1 -1
  303. package/docs/reference/components/background-video.md +1 -1
  304. package/docs/reference/components/buffering-indicator.md +2 -2
  305. package/docs/reference/components/captions-radio-group.md +2 -2
  306. package/docs/reference/components/cloudflare-video.md +1 -1
  307. package/docs/reference/components/dailymotion-video.md +192 -0
  308. package/docs/reference/components/dash-video.md +2 -1
  309. package/docs/reference/components/dialog.md +49 -22
  310. package/docs/reference/components/error-dialog.md +13 -10
  311. package/docs/reference/components/gesture.md +2 -2
  312. package/docs/reference/components/google-analytics.md +51 -0
  313. package/docs/reference/components/google-cast.md +1 -1
  314. package/docs/reference/components/hls-audio.md +2 -48
  315. package/docs/reference/components/hls-background-video.md +4 -1
  316. package/docs/reference/components/hls-video.md +2 -66
  317. package/docs/reference/components/hlsjs-video.md +3 -1
  318. package/docs/reference/components/hotkey.md +2 -2
  319. package/docs/reference/components/live-audio-compat-skin.md +8 -2
  320. package/docs/reference/components/live-audio-neutral-skin.md +2 -2
  321. package/docs/reference/components/live-audio-scaffold-skin.md +2 -2
  322. package/docs/reference/components/live-audio-skin.md +2 -2
  323. package/docs/reference/components/live-video-compat-skin.md +8 -2
  324. package/docs/reference/components/live-video-neutral-skin.md +2 -2
  325. package/docs/reference/components/live-video-scaffold-skin.md +2 -2
  326. package/docs/reference/components/live-video-skin.md +2 -2
  327. package/docs/reference/components/llms.txt +9 -5
  328. package/docs/reference/components/mixcloud-audio.md +203 -0
  329. package/docs/reference/components/mux-audio.md +3 -1
  330. package/docs/reference/components/mux-background-video.md +1 -1
  331. package/docs/reference/components/mux-data.md +22 -2
  332. package/docs/reference/components/mux-video.md +3 -1
  333. package/docs/reference/components/native-hls-video.md +2 -1
  334. package/docs/reference/components/play-button.md +7 -5
  335. package/docs/reference/components/playback-rate-button.md +26 -7
  336. package/docs/reference/components/playback-rate-radio-group.md +7 -4
  337. package/docs/reference/components/player.md +3 -3
  338. package/docs/reference/components/playerjs-video.md +1 -1
  339. package/docs/reference/components/quality-radio-group.md +2 -2
  340. package/docs/reference/components/shaka-video.md +2 -1
  341. package/docs/reference/components/slider.md +2 -0
  342. package/docs/reference/components/soundcloud-audio.md +227 -0
  343. package/docs/reference/components/spotify-audio.md +2 -2
  344. package/docs/reference/components/tiktok-video.md +2 -2
  345. package/docs/reference/components/time-slider.md +7 -5
  346. package/docs/reference/components/twitch-video.md +2 -3
  347. package/docs/reference/components/video-compat-skin.md +8 -2
  348. package/docs/reference/components/video-neutral-skin.md +2 -2
  349. package/docs/reference/components/video-scaffold-skin.md +2 -2
  350. package/docs/reference/components/video-skin.md +2 -2
  351. package/docs/reference/components/vimeo-video.md +2 -1
  352. package/docs/reference/components/volume-slider.md +8 -6
  353. package/docs/reference/components/wistia-video.md +1 -1
  354. package/docs/reference/components/youtube-video.md +2 -1
  355. package/package.json +62 -43
@@ -223,6 +223,10 @@
223
223
  display: none;
224
224
  }
225
225
 
226
+ :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-dialog-backdrop[data-scope="document"] {
227
+ position: fixed;
228
+ }
229
+
226
230
  :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-dialog-close {
227
231
  height: calc(var(--media-spacing) * 8);
228
232
  width: auto;
@@ -240,8 +244,8 @@
240
244
 
241
245
  :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-dialog-popup {
242
246
  z-index: 50;
243
- width: calc(100% - 2rem);
244
- max-height: calc(100% - 2rem);
247
+ max-height: calc(100% - var(--media-spacing) * 8);
248
+ width: calc(100% - var(--media-spacing) * 8);
245
249
  max-width: calc(var(--media-spacing) * 80);
246
250
  gap: calc(var(--media-spacing) * 3);
247
251
  background-color: var(--media-popover);
@@ -268,6 +272,11 @@
268
272
  outline-color: var(--media-ring);
269
273
  }
270
274
 
275
+ :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-dialog-popup[data-scope="document"] {
276
+ max-height: calc(100dvh - var(--media-spacing) * 8);
277
+ position: fixed;
278
+ }
279
+
271
280
  @media (forced-colors: active) {
272
281
  :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-dialog-popup {
273
282
  border: 1px solid canvastext;
@@ -281,8 +290,8 @@
281
290
  }
282
291
 
283
292
  :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-dialog-title {
284
- font-size: 1.125rem;
285
- line-height: 1.55556;
293
+ font-size: calc(var(--media-spacing) * 4.5);
294
+ line-height: calc(var(--media-spacing) * 7);
286
295
  }
287
296
 
288
297
  :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-indicator {
@@ -394,6 +403,18 @@
394
403
  overflow: hidden;
395
404
  }
396
405
 
406
+ .media-poster > slot::slotted(img) {
407
+ object-fit: var(--media-object-fit, contain);
408
+ object-position: var(--media-object-position, center);
409
+ width: 100%;
410
+ display: block;
411
+ height: 100% !important;
412
+ }
413
+
414
+ .media-poster > slot::slotted(img:not([src]):not([srcset])) {
415
+ visibility: hidden;
416
+ }
417
+
397
418
  :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-poster {
398
419
  width: 100%;
399
420
  height: 100%;
@@ -565,8 +586,13 @@
565
586
  }
566
587
 
567
588
  :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-tooltip-shortcut {
589
+ text-align: center;
590
+ min-width: 1.5em;
568
591
  font-family: inherit;
569
592
  font-size: calc(var(--media-spacing) * 2.75);
593
+ background-color: oklab(100% 0 5.96046e-8 / .1);
594
+ padding: .1em;
595
+ line-height: 1.25;
570
596
  }
571
597
 
572
598
  :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-button-icon {
@@ -623,6 +649,10 @@
623
649
  outline: 2px solid;
624
650
  }
625
651
 
652
+ :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-menu-radio-item[data-custom] {
653
+ font-style: italic;
654
+ }
655
+
626
656
  :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-menu-radio-item[data-highlighted] {
627
657
  background-color: var(--media-button-highlight);
628
658
  }
@@ -722,14 +752,6 @@
722
752
  display: flex;
723
753
  }
724
754
 
725
- :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) :where(.media-airplay-button)[data-airplay-state="connected"] .media-airplay-button-enter-icon, :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-airplay-button-exit-icon {
726
- display: none;
727
- }
728
-
729
- :where(:where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-airplay-button)[data-airplay-state="connected"] .media-airplay-button-exit-icon {
730
- display: block;
731
- }
732
-
733
755
  :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-live-button {
734
756
  align-items: center;
735
757
  gap: calc(var(--media-spacing) * 1.5);
@@ -1476,6 +1498,14 @@
1476
1498
  inset: auto !important;
1477
1499
  }
1478
1500
 
1501
+ :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) :where(.media-airplay-button)[data-airplay-state="connected"] .media-airplay-button-enter-icon, :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-airplay-button-exit-icon {
1502
+ display: none;
1503
+ }
1504
+
1505
+ :where(:where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-airplay-button)[data-airplay-state="connected"] .media-airplay-button-exit-icon {
1506
+ display: block;
1507
+ }
1508
+
1479
1509
  :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-tooltip-screen-popup {
1480
1510
  --media-tooltip-side-offset: calc(var(--media-spacing) * 3) !important;
1481
1511
  }
@@ -1545,7 +1575,7 @@
1545
1575
 
1546
1576
  :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .video-controls-backdrop {
1547
1577
  pointer-events: none;
1548
- background-color: #0006;
1578
+ background-image: linear-gradient(to top, #00000080, #0000 40% 60%, #0006);
1549
1579
  position: absolute;
1550
1580
  inset: 0;
1551
1581
  }
@@ -1563,6 +1593,9 @@
1563
1593
  :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-container, :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]).media-container {
1564
1594
  border-radius: var(--media-video-border-radius);
1565
1595
  width: 100%;
1596
+ min-width: 0;
1597
+ height: 100%;
1598
+ min-height: 0;
1566
1599
  font-family: var(--media-font-family, inherit);
1567
1600
  font-size: calc(var(--media-spacing) * 3.25);
1568
1601
  color: var(--media-foreground);
@@ -1582,9 +1615,19 @@
1582
1615
  }
1583
1616
 
1584
1617
  :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]) .media-video, :where(.media-skin[data-theme="scaffold"][data-preset="live-video"]).media-video {
1585
- aspect-ratio: 16 / 9;
1586
1618
  background-color: #000;
1587
1619
  }
1620
+
1621
+ .media-container > slot::slotted(video), :scope.media-container > slot::slotted(video) {
1622
+ border-radius: inherit;
1623
+ object-fit: var(--media-object-fit, contain);
1624
+ object-position: var(--media-object-position, center);
1625
+ width: 100%;
1626
+ max-width: 100%;
1627
+ margin: 0;
1628
+ display: block;
1629
+ height: 100% !important;
1630
+ }
1588
1631
  }
1589
1632
 
1590
1633
  @layer utilities;
@@ -1602,7 +1645,7 @@
1602
1645
  --media-accent: var(--media-accent-color, color-mix(in oklab, var(--media-default-accent-color) 10%, transparent));
1603
1646
  --media-accent-foreground: var(--media-accent-text-color, currentColor);
1604
1647
  --media-muted: oklch(100% 0 0 / .15);
1605
- --media-muted-foreground: oklch(100% 0 0 / .65);
1648
+ --media-muted-foreground: color-mix(in oklab, var(--media-foreground) 65%, transparent);
1606
1649
  --media-border: oklch(0% 0 0 / .1);
1607
1650
  --media-ring: oklch(100% 0 0);
1608
1651
  --media-backdrop: oklch(0% 0 0);
@@ -1615,9 +1658,9 @@
1615
1658
  --media-shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .15));
1616
1659
  --media-shadow-subtle-current-color: color-mix(in oklab, var(--media-shadow-current-color) 40%, transparent);
1617
1660
  --media-text-shadow-dialog: 0 1px 0 #00000040;
1618
- --media-backdrop-filter-surface: blur(16px) saturate(110%);
1661
+ --media-backdrop-filter-surface: blur(16px) saturate(125%);
1619
1662
  --media-backdrop-filter-indicator: blur(8px);
1620
- --media-backdrop-filter-dialog: blur(16px) saturate(110%);
1663
+ --media-backdrop-filter-dialog: blur(16px) saturate(125%);
1621
1664
  --media-control-corner-shape: round;
1622
1665
  --media-control-radius: 99px;
1623
1666
  --media-control-size: calc(var(--media-spacing) * 9);
@@ -1717,10 +1760,20 @@
1717
1760
  @layer base.preset {
1718
1761
  .media-skin:is([data-preset="video"], [data-preset="live-video"]) {
1719
1762
  --media-frame-border: var(--media-border-color, #0000001a);
1763
+ --media-controls-gradient-height: max(40%, calc(var(--media-spacing) * 40));
1764
+ --media-controls-bottom-gradient-height: max(50%, calc(var(--media-spacing) * 60));
1720
1765
  --media-controls-gradient: linear-gradient(to top,
1721
- color-mix(in oklab, var(--media-backdrop) 40%, transparent),
1722
- color-mix(in oklab, var(--media-backdrop) 20%, transparent),
1723
- color-mix(in oklab, var(--media-backdrop) 50%, transparent));
1766
+ color-mix(in oklab, var(--media-backdrop) 60%, transparent),
1767
+ color-mix(in oklab, var(--media-backdrop) 50.7%, transparent) 25%,
1768
+ color-mix(in oklab, var(--media-backdrop) 30%, transparent) 50%,
1769
+ color-mix(in oklab, var(--media-backdrop) 9.3%, transparent) 75%,
1770
+ transparent);
1771
+ --media-controls-top-gradient: linear-gradient(to bottom,
1772
+ color-mix(in oklab, var(--media-backdrop) 55%, transparent),
1773
+ color-mix(in oklab, var(--media-backdrop) 46.48%, transparent) 25%,
1774
+ color-mix(in oklab, var(--media-backdrop) 27.5%, transparent) 50%,
1775
+ color-mix(in oklab, var(--media-backdrop) 8.53%, transparent) 75%,
1776
+ transparent);
1724
1777
  --media-caption-controls-y: calc(var(--media-spacing) * -16);
1725
1778
  --media-slider-preview-offset: calc(var(--media-spacing) * 9);
1726
1779
  --media-thumbnail-gradient: linear-gradient(to top,
@@ -1732,9 +1785,17 @@
1732
1785
  @supports (color: oklch(from red l c h)) and (background-image: linear-gradient(in oklab, red, red)) {
1733
1786
  .media-skin:is([data-preset="video"], [data-preset="live-video"]) {
1734
1787
  --media-controls-gradient: linear-gradient(to top in oklab,
1735
- oklch(from var(--media-backdrop) l c h / .4),
1736
- oklch(from var(--media-backdrop) l c h / .2),
1737
- oklch(from var(--media-backdrop) l c h / .5));
1788
+ oklch(from var(--media-backdrop) l c h / .6),
1789
+ oklch(from var(--media-backdrop) l c h / .507) 25%,
1790
+ oklch(from var(--media-backdrop) l c h / .3) 50%,
1791
+ oklch(from var(--media-backdrop) l c h / .093) 75%,
1792
+ transparent);
1793
+ --media-controls-top-gradient: linear-gradient(to bottom in oklab,
1794
+ oklch(from var(--media-backdrop) l c h / .55),
1795
+ oklch(from var(--media-backdrop) l c h / .4647) 25%,
1796
+ oklch(from var(--media-backdrop) l c h / .275) 50%,
1797
+ oklch(from var(--media-backdrop) l c h / .0853) 75%,
1798
+ transparent);
1738
1799
  }
1739
1800
  }
1740
1801
 
@@ -1749,9 +1810,20 @@
1749
1810
 
1750
1811
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="neutral"] {
1751
1812
  --media-frame-border: var(--media-border-color, #00000026);
1813
+ --media-controls-gradient-height: 40%;
1814
+ --media-controls-bottom-gradient-height: 40%;
1752
1815
  --media-controls-gradient: linear-gradient(to top,
1753
1816
  color-mix(in oklab, var(--media-backdrop) 50%, transparent),
1754
- color-mix(in oklab, var(--media-backdrop) 20%, transparent));
1817
+ color-mix(in oklab, var(--media-backdrop) 42.2%, transparent) 25%,
1818
+ color-mix(in oklab, var(--media-backdrop) 25%, transparent) 50%,
1819
+ color-mix(in oklab, var(--media-backdrop) 7.8%, transparent) 75%,
1820
+ transparent);
1821
+ --media-controls-top-gradient: linear-gradient(to bottom,
1822
+ color-mix(in oklab, var(--media-backdrop) 50%, transparent),
1823
+ color-mix(in oklab, var(--media-backdrop) 42.2%, transparent) 25%,
1824
+ color-mix(in oklab, var(--media-backdrop) 25%, transparent) 50%,
1825
+ color-mix(in oklab, var(--media-backdrop) 7.8%, transparent) 75%,
1826
+ transparent);
1755
1827
  --media-indicator-gradient: linear-gradient(to bottom,
1756
1828
  color-mix(in oklab, var(--media-backdrop) 35%, transparent),
1757
1829
  color-mix(in oklab, var(--media-backdrop) 20%, transparent) calc(var(--media-spacing) * 12),
@@ -1761,6 +1833,7 @@
1761
1833
  }
1762
1834
 
1763
1835
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="compat"] {
1836
+ --media-controls-gradient: linear-gradient(to top, #00000080, transparent 40% 60%, #0006);
1764
1837
  --media-caption-controls-y: calc(var(--media-spacing) * -18);
1765
1838
  }
1766
1839
 
@@ -1772,7 +1845,16 @@
1772
1845
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="neutral"] {
1773
1846
  --media-controls-gradient: linear-gradient(to top in oklab,
1774
1847
  oklch(from var(--media-backdrop) l c h / .5),
1775
- oklch(from var(--media-backdrop) l c h / .2));
1848
+ oklch(from var(--media-backdrop) l c h / .422) 25%,
1849
+ oklch(from var(--media-backdrop) l c h / .25) 50%,
1850
+ oklch(from var(--media-backdrop) l c h / .078) 75%,
1851
+ transparent);
1852
+ --media-controls-top-gradient: linear-gradient(to bottom in oklab,
1853
+ oklch(from var(--media-backdrop) l c h / .5),
1854
+ oklch(from var(--media-backdrop) l c h / .422) 25%,
1855
+ oklch(from var(--media-backdrop) l c h / .25) 50%,
1856
+ oklch(from var(--media-backdrop) l c h / .078) 75%,
1857
+ transparent);
1776
1858
  }
1777
1859
  }
1778
1860
 
@@ -1796,7 +1878,6 @@
1796
1878
  }
1797
1879
 
1798
1880
  .media-skin[data-theme="scaffold"] {
1799
- --media-spacing: calc(var(--media-scale-unit, 16px) / 4);
1800
1881
  --media-background: transparent;
1801
1882
  --media-foreground: white;
1802
1883
  --media-accent: var(--media-accent-color, var(--media-default-accent-color));
@@ -26,27 +26,27 @@ import "../../../define/ui/tooltip.js";
26
26
  import "../../../define/ui/tooltip-label.js";
27
27
  import "../../../define/ui/tooltip-shortcut.js";
28
28
  import "../../../define/ui/seek-button.js";
29
+ import "../../../define/ui/time-group.js";
30
+ import "../../../define/ui/time.js";
31
+ import "../../../define/ui/time-separator.js";
29
32
  import "../../../define/ui/menu.js";
30
33
  import "../../../define/ui/menu-content.js";
31
34
  import "../../../define/ui/playback-rate-radio-group.js";
32
35
  import "../../../define/ui/menu-radio-item.js";
33
36
  import "../../../define/ui/menu-item-indicator.js";
34
- import "../../../define/ui/time-group.js";
35
- import "../../../define/ui/time.js";
36
- import "../../../define/ui/time-separator.js";
37
- import "../../../define/ui/captions-button.js";
38
37
  import "../../../define/ui/mute-button.js";
39
38
  import "../../../define/ui/volume-popover.js";
40
39
  import "../../../define/ui/volume-slider.js";
41
- import "../../../define/ui/airplay-button.js";
42
40
  import "../../../define/ui/hotkey.js";
43
41
  import "../../../define/ui/status-announcer.js";
44
42
  import "../../../define/ui/poster.js";
45
43
  import "../../../define/ui/title.js";
46
44
  import "../../../define/ui/controls-backdrop.js";
45
+ import "../../../define/ui/airplay-button.js";
47
46
  import "../../../define/ui/cast-button.js";
48
47
  import "../../../define/ui/pip-button.js";
49
48
  import "../../../define/ui/fullscreen-button.js";
49
+ import "../../../define/ui/captions-button.js";
50
50
  import "../../../define/ui/captions-radio-group.js";
51
51
  import "../../../define/ui/gesture.js";
52
52
  import "../../../define/ui/volume-indicator.js";
@@ -223,6 +223,10 @@
223
223
  display: none;
224
224
  }
225
225
 
226
+ :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-dialog-backdrop[data-scope="document"] {
227
+ position: fixed;
228
+ }
229
+
226
230
  :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-dialog-close {
227
231
  height: calc(var(--media-spacing) * 8);
228
232
  width: auto;
@@ -240,8 +244,8 @@
240
244
 
241
245
  :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-dialog-popup {
242
246
  z-index: 50;
243
- width: calc(100% - 2rem);
244
- max-height: calc(100% - 2rem);
247
+ max-height: calc(100% - var(--media-spacing) * 8);
248
+ width: calc(100% - var(--media-spacing) * 8);
245
249
  max-width: calc(var(--media-spacing) * 80);
246
250
  gap: calc(var(--media-spacing) * 3);
247
251
  background-color: var(--media-popover);
@@ -268,6 +272,11 @@
268
272
  outline-color: var(--media-ring);
269
273
  }
270
274
 
275
+ :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-dialog-popup[data-scope="document"] {
276
+ max-height: calc(100dvh - var(--media-spacing) * 8);
277
+ position: fixed;
278
+ }
279
+
271
280
  @media (forced-colors: active) {
272
281
  :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-dialog-popup {
273
282
  border: 1px solid canvastext;
@@ -281,8 +290,8 @@
281
290
  }
282
291
 
283
292
  :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-dialog-title {
284
- font-size: 1.125rem;
285
- line-height: 1.55556;
293
+ font-size: calc(var(--media-spacing) * 4.5);
294
+ line-height: calc(var(--media-spacing) * 7);
286
295
  }
287
296
 
288
297
  :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-indicator {
@@ -431,6 +440,18 @@
431
440
  overflow: hidden;
432
441
  }
433
442
 
443
+ .media-poster > slot::slotted(img) {
444
+ object-fit: var(--media-object-fit, contain);
445
+ object-position: var(--media-object-position, center);
446
+ width: 100%;
447
+ display: block;
448
+ height: 100% !important;
449
+ }
450
+
451
+ .media-poster > slot::slotted(img:not([src]):not([srcset])) {
452
+ visibility: hidden;
453
+ }
454
+
434
455
  :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-poster {
435
456
  width: 100%;
436
457
  height: 100%;
@@ -602,8 +623,13 @@
602
623
  }
603
624
 
604
625
  :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-tooltip-shortcut {
626
+ text-align: center;
627
+ min-width: 1.5em;
605
628
  font-family: inherit;
606
629
  font-size: calc(var(--media-spacing) * 2.75);
630
+ background-color: oklab(100% 0 5.96046e-8 / .1);
631
+ padding: .1em;
632
+ line-height: 1.25;
607
633
  }
608
634
 
609
635
  :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-button-icon {
@@ -676,6 +702,10 @@
676
702
  outline: 2px solid;
677
703
  }
678
704
 
705
+ :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-menu-radio-item[data-custom] {
706
+ font-style: italic;
707
+ }
708
+
679
709
  :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-menu-radio-item[data-highlighted] {
680
710
  background-color: var(--media-button-highlight);
681
711
  }
@@ -1201,14 +1231,6 @@
1201
1231
  display: block;
1202
1232
  }
1203
1233
 
1204
- :where(.media-skin[data-theme="scaffold"][data-preset="video"]) :where(.media-airplay-button)[data-airplay-state="connected"] .media-airplay-button-enter-icon, :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-airplay-button-exit-icon {
1205
- display: none;
1206
- }
1207
-
1208
- :where(:where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-airplay-button)[data-airplay-state="connected"] .media-airplay-button-exit-icon {
1209
- display: block;
1210
- }
1211
-
1212
1234
  :where(.media-skin[data-theme="scaffold"][data-preset="video"]) :where(.media-captions-button)[data-active] .media-captions-button-off-icon, :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-captions-button-on-icon {
1213
1235
  display: none;
1214
1236
  }
@@ -1699,6 +1721,14 @@
1699
1721
  inset: auto !important;
1700
1722
  }
1701
1723
 
1724
+ :where(.media-skin[data-theme="scaffold"][data-preset="video"]) :where(.media-airplay-button)[data-airplay-state="connected"] .media-airplay-button-enter-icon, :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-airplay-button-exit-icon {
1725
+ display: none;
1726
+ }
1727
+
1728
+ :where(:where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-airplay-button)[data-airplay-state="connected"] .media-airplay-button-exit-icon {
1729
+ display: block;
1730
+ }
1731
+
1702
1732
  :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-tooltip-screen-popup {
1703
1733
  --media-tooltip-side-offset: calc(var(--media-spacing) * 3) !important;
1704
1734
  }
@@ -1768,7 +1798,7 @@
1768
1798
 
1769
1799
  :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .video-controls-backdrop {
1770
1800
  pointer-events: none;
1771
- background-color: #0006;
1801
+ background-image: linear-gradient(to top, #00000080, #0000 40% 60%, #0006);
1772
1802
  position: absolute;
1773
1803
  inset: 0;
1774
1804
  }
@@ -1803,6 +1833,9 @@
1803
1833
  :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-container, :where(.media-skin[data-theme="scaffold"][data-preset="video"]).media-container {
1804
1834
  border-radius: var(--media-video-border-radius);
1805
1835
  width: 100%;
1836
+ min-width: 0;
1837
+ height: 100%;
1838
+ min-height: 0;
1806
1839
  font-family: var(--media-font-family, inherit);
1807
1840
  font-size: calc(var(--media-spacing) * 3.25);
1808
1841
  color: var(--media-foreground);
@@ -1822,9 +1855,19 @@
1822
1855
  }
1823
1856
 
1824
1857
  :where(.media-skin[data-theme="scaffold"][data-preset="video"]) .media-video, :where(.media-skin[data-theme="scaffold"][data-preset="video"]).media-video {
1825
- aspect-ratio: 16 / 9;
1826
1858
  background-color: #000;
1827
1859
  }
1860
+
1861
+ .media-container > slot::slotted(video), :scope.media-container > slot::slotted(video) {
1862
+ border-radius: inherit;
1863
+ object-fit: var(--media-object-fit, contain);
1864
+ object-position: var(--media-object-position, center);
1865
+ width: 100%;
1866
+ max-width: 100%;
1867
+ margin: 0;
1868
+ display: block;
1869
+ height: 100% !important;
1870
+ }
1828
1871
  }
1829
1872
 
1830
1873
  @layer utilities;
@@ -1842,7 +1885,7 @@
1842
1885
  --media-accent: var(--media-accent-color, color-mix(in oklab, var(--media-default-accent-color) 10%, transparent));
1843
1886
  --media-accent-foreground: var(--media-accent-text-color, currentColor);
1844
1887
  --media-muted: oklch(100% 0 0 / .15);
1845
- --media-muted-foreground: oklch(100% 0 0 / .65);
1888
+ --media-muted-foreground: color-mix(in oklab, var(--media-foreground) 65%, transparent);
1846
1889
  --media-border: oklch(0% 0 0 / .1);
1847
1890
  --media-ring: oklch(100% 0 0);
1848
1891
  --media-backdrop: oklch(0% 0 0);
@@ -1855,9 +1898,9 @@
1855
1898
  --media-shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .15));
1856
1899
  --media-shadow-subtle-current-color: color-mix(in oklab, var(--media-shadow-current-color) 40%, transparent);
1857
1900
  --media-text-shadow-dialog: 0 1px 0 #00000040;
1858
- --media-backdrop-filter-surface: blur(16px) saturate(110%);
1901
+ --media-backdrop-filter-surface: blur(16px) saturate(125%);
1859
1902
  --media-backdrop-filter-indicator: blur(8px);
1860
- --media-backdrop-filter-dialog: blur(16px) saturate(110%);
1903
+ --media-backdrop-filter-dialog: blur(16px) saturate(125%);
1861
1904
  --media-control-corner-shape: round;
1862
1905
  --media-control-radius: 99px;
1863
1906
  --media-control-size: calc(var(--media-spacing) * 9);
@@ -1957,10 +2000,20 @@
1957
2000
  @layer base.preset {
1958
2001
  .media-skin:is([data-preset="video"], [data-preset="live-video"]) {
1959
2002
  --media-frame-border: var(--media-border-color, #0000001a);
2003
+ --media-controls-gradient-height: max(40%, calc(var(--media-spacing) * 40));
2004
+ --media-controls-bottom-gradient-height: max(50%, calc(var(--media-spacing) * 60));
1960
2005
  --media-controls-gradient: linear-gradient(to top,
1961
- color-mix(in oklab, var(--media-backdrop) 40%, transparent),
1962
- color-mix(in oklab, var(--media-backdrop) 20%, transparent),
1963
- color-mix(in oklab, var(--media-backdrop) 50%, transparent));
2006
+ color-mix(in oklab, var(--media-backdrop) 60%, transparent),
2007
+ color-mix(in oklab, var(--media-backdrop) 50.7%, transparent) 25%,
2008
+ color-mix(in oklab, var(--media-backdrop) 30%, transparent) 50%,
2009
+ color-mix(in oklab, var(--media-backdrop) 9.3%, transparent) 75%,
2010
+ transparent);
2011
+ --media-controls-top-gradient: linear-gradient(to bottom,
2012
+ color-mix(in oklab, var(--media-backdrop) 55%, transparent),
2013
+ color-mix(in oklab, var(--media-backdrop) 46.48%, transparent) 25%,
2014
+ color-mix(in oklab, var(--media-backdrop) 27.5%, transparent) 50%,
2015
+ color-mix(in oklab, var(--media-backdrop) 8.53%, transparent) 75%,
2016
+ transparent);
1964
2017
  --media-caption-controls-y: calc(var(--media-spacing) * -16);
1965
2018
  --media-slider-preview-offset: calc(var(--media-spacing) * 9);
1966
2019
  --media-thumbnail-gradient: linear-gradient(to top,
@@ -1972,9 +2025,17 @@
1972
2025
  @supports (color: oklch(from red l c h)) and (background-image: linear-gradient(in oklab, red, red)) {
1973
2026
  .media-skin:is([data-preset="video"], [data-preset="live-video"]) {
1974
2027
  --media-controls-gradient: linear-gradient(to top in oklab,
1975
- oklch(from var(--media-backdrop) l c h / .4),
1976
- oklch(from var(--media-backdrop) l c h / .2),
1977
- oklch(from var(--media-backdrop) l c h / .5));
2028
+ oklch(from var(--media-backdrop) l c h / .6),
2029
+ oklch(from var(--media-backdrop) l c h / .507) 25%,
2030
+ oklch(from var(--media-backdrop) l c h / .3) 50%,
2031
+ oklch(from var(--media-backdrop) l c h / .093) 75%,
2032
+ transparent);
2033
+ --media-controls-top-gradient: linear-gradient(to bottom in oklab,
2034
+ oklch(from var(--media-backdrop) l c h / .55),
2035
+ oklch(from var(--media-backdrop) l c h / .4647) 25%,
2036
+ oklch(from var(--media-backdrop) l c h / .275) 50%,
2037
+ oklch(from var(--media-backdrop) l c h / .0853) 75%,
2038
+ transparent);
1978
2039
  }
1979
2040
  }
1980
2041
 
@@ -1989,9 +2050,20 @@
1989
2050
 
1990
2051
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="neutral"] {
1991
2052
  --media-frame-border: var(--media-border-color, #00000026);
2053
+ --media-controls-gradient-height: 40%;
2054
+ --media-controls-bottom-gradient-height: 40%;
1992
2055
  --media-controls-gradient: linear-gradient(to top,
1993
2056
  color-mix(in oklab, var(--media-backdrop) 50%, transparent),
1994
- color-mix(in oklab, var(--media-backdrop) 20%, transparent));
2057
+ color-mix(in oklab, var(--media-backdrop) 42.2%, transparent) 25%,
2058
+ color-mix(in oklab, var(--media-backdrop) 25%, transparent) 50%,
2059
+ color-mix(in oklab, var(--media-backdrop) 7.8%, transparent) 75%,
2060
+ transparent);
2061
+ --media-controls-top-gradient: linear-gradient(to bottom,
2062
+ color-mix(in oklab, var(--media-backdrop) 50%, transparent),
2063
+ color-mix(in oklab, var(--media-backdrop) 42.2%, transparent) 25%,
2064
+ color-mix(in oklab, var(--media-backdrop) 25%, transparent) 50%,
2065
+ color-mix(in oklab, var(--media-backdrop) 7.8%, transparent) 75%,
2066
+ transparent);
1995
2067
  --media-indicator-gradient: linear-gradient(to bottom,
1996
2068
  color-mix(in oklab, var(--media-backdrop) 35%, transparent),
1997
2069
  color-mix(in oklab, var(--media-backdrop) 20%, transparent) calc(var(--media-spacing) * 12),
@@ -2001,6 +2073,7 @@
2001
2073
  }
2002
2074
 
2003
2075
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="compat"] {
2076
+ --media-controls-gradient: linear-gradient(to top, #00000080, transparent 40% 60%, #0006);
2004
2077
  --media-caption-controls-y: calc(var(--media-spacing) * -18);
2005
2078
  }
2006
2079
 
@@ -2012,7 +2085,16 @@
2012
2085
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="neutral"] {
2013
2086
  --media-controls-gradient: linear-gradient(to top in oklab,
2014
2087
  oklch(from var(--media-backdrop) l c h / .5),
2015
- oklch(from var(--media-backdrop) l c h / .2));
2088
+ oklch(from var(--media-backdrop) l c h / .422) 25%,
2089
+ oklch(from var(--media-backdrop) l c h / .25) 50%,
2090
+ oklch(from var(--media-backdrop) l c h / .078) 75%,
2091
+ transparent);
2092
+ --media-controls-top-gradient: linear-gradient(to bottom in oklab,
2093
+ oklch(from var(--media-backdrop) l c h / .5),
2094
+ oklch(from var(--media-backdrop) l c h / .422) 25%,
2095
+ oklch(from var(--media-backdrop) l c h / .25) 50%,
2096
+ oklch(from var(--media-backdrop) l c h / .078) 75%,
2097
+ transparent);
2016
2098
  }
2017
2099
  }
2018
2100
 
@@ -2036,7 +2118,6 @@
2036
2118
  }
2037
2119
 
2038
2120
  .media-skin[data-theme="scaffold"] {
2039
- --media-spacing: calc(var(--media-scale-unit, 16px) / 4);
2040
2121
  --media-background: transparent;
2041
2122
  --media-foreground: white;
2042
2123
  --media-accent: var(--media-accent-color, var(--media-default-accent-color));
@@ -0,0 +1,17 @@
1
+ import { CustomMediaConstructor } from "../../index.js";
2
+ import { DailymotionAdapter } from "@videojs/dailymotion-video";
3
+ //#region src/media/dailymotion-video/adapter.d.ts
4
+ interface DailymotionCustomMediaElement {
5
+ connectedCallback?(): void;
6
+ }
7
+ declare const DailymotionCustomMediaElement_base: CustomMediaConstructor<typeof DailymotionAdapter>;
8
+ declare class DailymotionCustomMediaElement extends DailymotionCustomMediaElement_base {
9
+ static getTemplateHTML: () => string;
10
+ }
11
+ declare const DailymotionVideo_base: typeof DailymotionCustomMediaElement;
12
+ export declare class DailymotionVideo extends DailymotionVideo_base {
13
+ constructor();
14
+ connectedCallback(): void;
15
+ }
16
+ //#endregion
17
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1,47 @@
1
+ import { MediaAttachMixin } from "../../store/media-attach-mixin.js";
2
+ import { CustomMediaElement } from "@videojs/media/dom";
3
+ import { DailymotionAdapter } from "@videojs/dailymotion-video";
4
+ //#region src/media/dailymotion-video/adapter.ts
5
+ var DailymotionCustomMediaElement = class extends CustomMediaElement("iframe", DailymotionAdapter) {
6
+ static {
7
+ this.getTemplateHTML = () => `
8
+ <style>
9
+ :host {
10
+ display: inline-block;
11
+ min-width: 300px;
12
+ min-height: 150px;
13
+ position: relative;
14
+ }
15
+ ::slotted([slot=media]) {
16
+ position: absolute;
17
+ inset: 0;
18
+ }
19
+ </style>
20
+ <slot name="media"></slot>
21
+ `;
22
+ }
23
+ };
24
+ var DailymotionVideo = class extends MediaAttachMixin(DailymotionCustomMediaElement) {
25
+ constructor() {
26
+ super();
27
+ this.adapter.addEventListener("volumechange", () => {
28
+ const { muted } = this.adapter;
29
+ if (this.hasAttribute("muted") !== muted) this.toggleAttribute("muted", muted);
30
+ });
31
+ }
32
+ connectedCallback() {
33
+ super.connectedCallback?.();
34
+ const existing = this.querySelector(":scope > [slot=media]");
35
+ if (existing) {
36
+ if (this.adapter.src && !existing.hasChildNodes() && !this.adapter.error) this.adapter.load();
37
+ return;
38
+ }
39
+ const container = document.createElement("div");
40
+ container.slot = "media";
41
+ this.append(container);
42
+ }
43
+ };
44
+ //#endregion
45
+ export { DailymotionVideo };
46
+
47
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/dailymotion-video/adapter.ts"],"sourcesContent":["import { DailymotionAdapter } from '@videojs/dailymotion-video';\nimport { CustomMediaElement } from '@videojs/media/dom';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\n// `CustomMediaElement` implements `connectedCallback` but doesn't type it; declared so `super` can reach it.\ninterface DailymotionCustomMediaElement {\n connectedCallback?(): void;\n}\n\n// The target is a container the SDK builds its iframe in. `'iframe'` still tells `CustomMediaElement` it hosts an\n// embed: no attributes are mirrored onto the target, and the host is marked as a cross-origin frame. Unlike the other\n// embed hosts, it never keeps the player out of hit-testing: Dailymotion's terms forbid blocking any part of its player.\nclass DailymotionCustomMediaElement extends CustomMediaElement('iframe', DailymotionAdapter) {\n static override getTemplateHTML = (): string => /*html*/ `\n <style>\n :host {\n display: inline-block;\n min-width: 300px;\n min-height: 150px;\n position: relative;\n }\n ::slotted([slot=media]) {\n position: absolute;\n inset: 0;\n }\n </style>\n <slot name=\"media\"></slot>\n `;\n}\n\nexport class DailymotionVideo extends MediaAttachMixin(DailymotionCustomMediaElement) {\n constructor() {\n super();\n\n // Dailymotion can mute the player on its own (a browser's muted autoplay, a click on its own mute button). Writes\n // to `muted` go through the `muted` attribute, so it follows the player, or a later unmute would find nothing to\n // change. The attribute change sets the same value back, which the adapter ignores.\n this.adapter.addEventListener('volumechange', () => {\n const { muted } = this.adapter;\n\n if (this.hasAttribute('muted') !== muted) this.toggleAttribute('muted', muted);\n });\n }\n\n override connectedCallback(): void {\n super.connectedCallback?.();\n\n // The SDK finds the container by id from the document, so it lives in the light DOM, slotted as `media` to become\n // the adapter's target. Added here because a constructor may not add children.\n const existing = this.querySelector(':scope > [slot=media]');\n\n if (existing) {\n // Attached before the host was in the page, the container stayed empty; load the source now.\n if (this.adapter.src && !existing.hasChildNodes() && !this.adapter.error) this.adapter.load();\n\n return;\n }\n\n const container = document.createElement('div');\n\n container.slot = 'media';\n this.append(container);\n }\n}\n"],"mappings":";;;;AAaA,IAAM,gCAAN,cAA4C,mBAAmB,UAAU,kBAAkB,CAAC,CAAC;;EAClC,KAAA,wBAAA;;;;;;;;;;;;;;;;AAe3D;AAEA,IAAa,mBAAb,cAAsC,iBAAiB,6BAA6B,CAAC,CAAC;CACpF,cAAc;EACZ,MAAM;EAKN,KAAK,QAAQ,iBAAiB,sBAAsB;GAClD,MAAM,EAAE,UAAU,KAAK;GAEvB,IAAI,KAAK,aAAa,OAAO,MAAM,OAAO,KAAK,gBAAgB,SAAS,KAAK;EAC/E,CAAC;CACH;CAEA,oBAAmC;EACjC,MAAM,oBAAoB;EAI1B,MAAM,WAAW,KAAK,cAAc,uBAAuB;EAE3D,IAAI,UAAU;GAEZ,IAAI,KAAK,QAAQ,OAAO,CAAC,SAAS,cAAc,KAAK,CAAC,KAAK,QAAQ,OAAO,KAAK,QAAQ,KAAK;GAE5F;EACF;EAEA,MAAM,YAAY,SAAS,cAAc,KAAK;EAE9C,UAAU,OAAO;EACjB,KAAK,OAAO,SAAS;CACvB;AACF"}
@@ -0,0 +1,2 @@
1
+ import { DailymotionVideo } from "./adapter.js";
2
+ export { DailymotionVideo };
@@ -1,5 +1,5 @@
1
1
  import { CustomMediaConstructor } from "../../index.js";
2
- import { HlsAudioAdapter } from "@videojs/spf/hls-audio";
2
+ import { HlsAudioAdapter } from "@videojs/spf/adapters/hls-audio";
3
3
  //#region src/media/hls-audio/adapter.d.ts
4
4
  declare const HlsAudio_base: CustomMediaConstructor<typeof HlsAudioAdapter>;
5
5
  export declare class HlsAudio extends HlsAudio_base {}