@videojs/html 10.0.0-rc.4 → 10.0.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 (1021) hide show
  1. package/README.md +0 -2
  2. package/dist/default/define/audio/compat-skin.css +1923 -0
  3. package/dist/default/define/audio/compat-skin.js +6 -0
  4. package/dist/default/define/audio/compat-skin2.js +4 -0
  5. package/dist/default/define/audio/neutral-skin.css +1855 -0
  6. package/dist/default/define/audio/neutral-skin.js +6 -0
  7. package/dist/default/define/audio/neutral-skin2.js +4 -0
  8. package/dist/default/define/audio/{minimal-ui.js → neutral-ui.js} +1 -1
  9. package/dist/default/define/audio/skin.css +1220 -1411
  10. package/dist/default/define/audio/skin2.js +1 -1
  11. package/dist/default/define/background/skin.css +8 -19
  12. package/dist/default/define/global.css +5 -21
  13. package/dist/default/define/live-audio/compat-skin.css +1708 -0
  14. package/dist/default/define/live-audio/compat-skin.js +6 -0
  15. package/dist/default/define/live-audio/compat-skin2.js +4 -0
  16. package/dist/default/define/live-audio/neutral-skin.css +1270 -0
  17. package/dist/default/define/live-audio/neutral-skin.js +6 -0
  18. package/dist/default/define/live-audio/neutral-skin2.js +4 -0
  19. package/dist/default/define/live-audio/{minimal-ui.js → neutral-ui.js} +1 -1
  20. package/dist/default/define/live-audio/skin.css +849 -959
  21. package/dist/default/define/live-audio/skin2.js +1 -1
  22. package/dist/default/define/live-video/compat-skin.css +2251 -0
  23. package/dist/default/define/live-video/compat-skin.js +6 -0
  24. package/dist/default/define/live-video/compat-skin2.js +4 -0
  25. package/dist/default/define/live-video/neutral-skin.css +2101 -0
  26. package/dist/default/define/live-video/neutral-skin.js +6 -0
  27. package/dist/default/define/live-video/neutral-skin2.js +4 -0
  28. package/dist/default/define/live-video/{minimal-ui.js → neutral-ui.js} +1 -1
  29. package/dist/default/define/live-video/skin.css +1565 -1784
  30. package/dist/default/define/live-video/skin2.js +1 -1
  31. package/dist/default/define/media/dash-video.js +5 -1
  32. package/dist/default/define/media/shaka-video.js +1 -0
  33. package/dist/default/define/shadow.css +2 -12
  34. package/dist/default/define/video/compat-skin.css +2529 -0
  35. package/dist/default/define/video/compat-skin.js +6 -0
  36. package/dist/default/define/video/compat-skin2.js +4 -0
  37. package/dist/default/define/video/neutral-skin.css +2849 -0
  38. package/dist/default/define/video/neutral-skin.js +6 -0
  39. package/dist/default/define/video/neutral-skin2.js +4 -0
  40. package/dist/default/define/video/{minimal-ui.js → neutral-ui.js} +1 -1
  41. package/dist/default/define/video/skin.css +2046 -2454
  42. package/dist/default/define/video/skin2.js +1 -1
  43. package/dist/default/extensions/google-cast/extension.js +18 -17
  44. package/dist/default/extensions/mux-data/extension.js +24 -24
  45. package/dist/default/extensions/player-extension-element.js +49 -0
  46. package/dist/default/i18n/index.js +2 -2
  47. package/dist/default/i18n/locale.js +10 -2
  48. package/dist/default/i18n/provider-element.js +1 -0
  49. package/dist/default/i18n/provider-mixin.js +11 -9
  50. package/dist/default/i18n/render-text.js +5 -1
  51. package/dist/default/i18n/text/airplay.js +1 -0
  52. package/dist/default/i18n/text/buttons.js +1 -0
  53. package/dist/default/i18n/text/captions.js +1 -0
  54. package/dist/default/i18n/text/cast.js +1 -0
  55. package/dist/default/i18n/text/common.js +1 -0
  56. package/dist/default/i18n/text/container.js +1 -0
  57. package/dist/default/i18n/text/errors.js +1 -0
  58. package/dist/default/i18n/text/fullscreen.js +1 -0
  59. package/dist/default/i18n/text/live.js +1 -0
  60. package/dist/default/i18n/text/menu.js +1 -0
  61. package/dist/default/i18n/text/pip.js +1 -0
  62. package/dist/default/i18n/text/playback.js +1 -0
  63. package/dist/default/i18n/text/seek.js +1 -0
  64. package/dist/default/i18n/text/slider.js +1 -0
  65. package/dist/default/i18n/text/status.js +1 -0
  66. package/dist/default/i18n/text/time.js +1 -0
  67. package/dist/default/i18n/text/volume.js +1 -0
  68. package/dist/default/icons/compat/index.js +26 -0
  69. package/dist/default/icons/dist/element/compat/icons.js +30 -0
  70. package/dist/default/icons/dist/element/{minimal → compat}/index.js +2 -2
  71. package/dist/default/icons/dist/element/index.js +2 -1
  72. package/dist/default/icons/dist/element/{minimal → neutral}/icons.js +1 -1
  73. package/dist/default/icons/dist/element/neutral/index.js +8 -0
  74. package/dist/default/icons/dist/html/compat/airplay-enter.js +4 -0
  75. package/dist/default/icons/dist/html/compat/airplay-exit.js +4 -0
  76. package/dist/default/icons/dist/html/compat/captions-off.js +4 -0
  77. package/dist/default/icons/dist/html/compat/captions-on.js +4 -0
  78. package/dist/default/icons/dist/html/compat/cast-enter.js +4 -0
  79. package/dist/default/icons/dist/html/compat/cast-exit.js +4 -0
  80. package/dist/default/icons/dist/html/compat/check.js +4 -0
  81. package/dist/default/icons/dist/html/compat/chevron.js +4 -0
  82. package/dist/default/icons/dist/html/compat/fullscreen-enter.js +4 -0
  83. package/dist/default/icons/dist/html/compat/fullscreen-exit.js +4 -0
  84. package/dist/default/icons/dist/html/compat/gear.js +4 -0
  85. package/dist/default/icons/dist/html/compat/pause.js +4 -0
  86. package/dist/default/icons/dist/html/compat/pip-enter.js +4 -0
  87. package/dist/default/icons/dist/html/compat/pip-exit.js +4 -0
  88. package/dist/default/icons/dist/html/compat/play.js +4 -0
  89. package/dist/default/icons/dist/html/compat/quality.js +4 -0
  90. package/dist/default/icons/dist/html/compat/restart.js +4 -0
  91. package/dist/default/icons/dist/html/compat/seek.js +4 -0
  92. package/dist/default/icons/dist/html/compat/speech.js +4 -0
  93. package/dist/default/icons/dist/html/compat/speed.js +4 -0
  94. package/dist/default/icons/dist/html/{minimal → compat}/spinner.js +1 -1
  95. package/dist/default/icons/dist/html/compat/switches.js +4 -0
  96. package/dist/default/icons/dist/html/compat/volume-high.js +4 -0
  97. package/dist/default/icons/dist/html/compat/volume-low.js +4 -0
  98. package/dist/default/icons/dist/html/compat/volume-off.js +4 -0
  99. package/dist/default/icons/dist/html/{minimal → neutral}/airplay-enter.js +1 -1
  100. package/dist/default/icons/dist/html/{minimal → neutral}/airplay-exit.js +1 -1
  101. package/dist/default/icons/dist/html/{minimal → neutral}/captions-off.js +1 -1
  102. package/dist/default/icons/dist/html/{minimal → neutral}/captions-on.js +1 -1
  103. package/dist/default/icons/dist/html/{minimal → neutral}/cast-enter.js +1 -1
  104. package/dist/default/icons/dist/html/{minimal → neutral}/cast-exit.js +1 -1
  105. package/dist/default/icons/dist/html/{minimal → neutral}/check.js +1 -1
  106. package/dist/default/icons/dist/html/{minimal → neutral}/chevron.js +1 -1
  107. package/dist/default/icons/dist/html/{minimal → neutral}/fullscreen-enter.js +1 -1
  108. package/dist/default/icons/dist/html/{minimal → neutral}/fullscreen-exit.js +1 -1
  109. package/dist/default/icons/dist/html/{minimal → neutral}/gear.js +1 -1
  110. package/dist/default/icons/dist/html/{minimal → neutral}/pause.js +1 -1
  111. package/dist/default/icons/dist/html/{minimal → neutral}/pip-enter.js +1 -1
  112. package/dist/default/icons/dist/html/{minimal → neutral}/pip-exit.js +1 -1
  113. package/dist/default/icons/dist/html/{minimal → neutral}/play.js +1 -1
  114. package/dist/default/icons/dist/html/{minimal → neutral}/quality.js +1 -1
  115. package/dist/default/icons/dist/html/{minimal → neutral}/restart.js +1 -1
  116. package/dist/default/icons/dist/html/{minimal → neutral}/seek.js +1 -1
  117. package/dist/default/icons/dist/html/{minimal → neutral}/speech.js +1 -1
  118. package/dist/default/icons/dist/html/{minimal → neutral}/speed.js +1 -1
  119. package/dist/default/icons/dist/html/neutral/spinner.js +4 -0
  120. package/dist/default/icons/dist/html/{minimal → neutral}/switches.js +1 -1
  121. package/dist/default/icons/dist/html/{minimal → neutral}/volume-high.js +1 -1
  122. package/dist/default/icons/dist/html/{minimal → neutral}/volume-low.js +1 -1
  123. package/dist/default/icons/dist/html/{minimal → neutral}/volume-off.js +1 -1
  124. package/dist/default/icons/element/compat/index.js +1 -0
  125. package/dist/default/icons/element/neutral/index.js +1 -0
  126. package/dist/default/icons/neutral/index.js +26 -0
  127. package/dist/default/index.js +4 -3
  128. package/dist/default/internal/skins/compat-audio/register.js +70 -0
  129. package/dist/default/internal/skins/compat-audio/skin.css +1891 -0
  130. package/dist/default/internal/skins/compat-audio/template.js +215 -0
  131. package/dist/default/internal/skins/compat-live-audio/register.js +50 -0
  132. package/dist/default/internal/skins/compat-live-audio/skin.css +1676 -0
  133. package/dist/default/internal/skins/compat-live-audio/template.js +112 -0
  134. package/dist/default/internal/skins/compat-live-video/register.js +86 -0
  135. package/dist/default/internal/skins/compat-live-video/skin.css +2219 -0
  136. package/dist/default/internal/skins/compat-live-video/template.js +237 -0
  137. package/dist/default/internal/skins/compat-video/register.js +115 -0
  138. package/dist/default/internal/skins/compat-video/skin.css +2497 -0
  139. package/dist/default/internal/skins/compat-video/template.js +457 -0
  140. package/dist/default/internal/skins/default-audio/register.js +8 -8
  141. package/dist/default/internal/skins/default-audio/skin.css +1213 -1365
  142. package/dist/default/internal/skins/default-live-audio/register.js +4 -4
  143. package/dist/default/internal/skins/default-live-audio/skin.css +842 -913
  144. package/dist/default/internal/skins/default-live-video/register.js +8 -8
  145. package/dist/default/internal/skins/default-live-video/skin.css +1548 -1728
  146. package/dist/default/internal/skins/default-video/register.js +13 -13
  147. package/dist/default/internal/skins/default-video/skin.css +2034 -2403
  148. package/dist/default/internal/skins/{minimal-audio → neutral-audio}/register.js +20 -20
  149. package/dist/default/internal/skins/neutral-audio/skin.css +1823 -0
  150. package/dist/default/internal/skins/{minimal-audio → neutral-audio}/template.js +24 -24
  151. package/dist/default/internal/skins/{minimal-live-audio → neutral-live-audio}/register.js +13 -13
  152. package/dist/default/internal/skins/neutral-live-audio/skin.css +1238 -0
  153. package/dist/default/internal/skins/{minimal-live-audio → neutral-live-audio}/template.js +14 -14
  154. package/dist/default/internal/skins/{minimal-live-video → neutral-live-video}/register.js +28 -28
  155. package/dist/default/internal/skins/neutral-live-video/skin.css +2069 -0
  156. package/dist/default/internal/skins/{minimal-live-video → neutral-live-video}/template.js +47 -47
  157. package/dist/default/internal/skins/{minimal-video → neutral-video}/register.js +40 -40
  158. package/dist/default/internal/skins/neutral-video/skin.css +2817 -0
  159. package/dist/default/internal/skins/{minimal-video → neutral-video}/template.js +75 -75
  160. package/dist/default/player/context.js +9 -1
  161. package/dist/default/player/create-player.js +2 -1
  162. package/dist/default/player/element.js +47 -10
  163. package/dist/default/presets/audio/compat-skin.js +19 -0
  164. package/dist/default/presets/audio/index.js +3 -2
  165. package/dist/default/presets/audio/neutral-skin.js +19 -0
  166. package/dist/default/presets/live-audio/compat-skin.js +19 -0
  167. package/dist/default/presets/live-audio/index.js +3 -2
  168. package/dist/default/presets/live-audio/neutral-skin.js +19 -0
  169. package/dist/default/presets/live-video/compat-skin.js +19 -0
  170. package/dist/default/presets/live-video/index.js +3 -2
  171. package/dist/default/presets/live-video/neutral-skin.js +19 -0
  172. package/dist/default/presets/video/compat-skin.js +19 -0
  173. package/dist/default/presets/video/index.js +3 -2
  174. package/dist/default/presets/video/neutral-skin.js +19 -0
  175. package/dist/default/store/media-attach-mixin.js +2 -0
  176. package/dist/default/ui/airplay-button/element.js +1 -1
  177. package/dist/default/ui/buffering-indicator/element.js +4 -0
  178. package/dist/default/ui/dialog/context.js +1 -0
  179. package/dist/default/ui/dialog/element.js +4 -2
  180. package/dist/default/ui/media-button-element.js +7 -6
  181. package/dist/default/ui/media-ui-element.js +6 -1
  182. package/dist/default/ui/menu/context.js +2 -0
  183. package/dist/default/ui/play-button/element.js +1 -1
  184. package/dist/default/ui/playback-rate-button/element.js +4 -2
  185. package/dist/default/ui/popover/element.js +4 -2
  186. package/dist/default/ui/radio-group/context.js +1 -0
  187. package/dist/default/ui/seek-indicator/element.js +7 -1
  188. package/dist/default/ui/slider/context.js +1 -0
  189. package/dist/default/ui/status-indicator/element.js +14 -1
  190. package/dist/default/ui/text/element.js +1 -0
  191. package/dist/default/ui/thumbnail/element.js +3 -2
  192. package/dist/default/ui/tooltip/context.js +1 -0
  193. package/dist/default/ui/tooltip/element.js +4 -2
  194. package/dist/default/ui/volume-popover/element.js +1 -1
  195. package/dist/default/ui/volume-slider/element.js +1 -1
  196. package/dist/default/version.js +27 -0
  197. package/dist/dev/define/audio/compat-skin.css +1923 -0
  198. package/dist/dev/define/audio/compat-skin.d.ts +1 -0
  199. package/dist/dev/define/audio/compat-skin.js +8 -0
  200. package/dist/dev/define/audio/compat-skin.js.map +1 -0
  201. package/dist/dev/define/audio/compat-skin2.js +6 -0
  202. package/dist/dev/define/audio/compat-skin2.js.map +1 -0
  203. package/dist/dev/define/audio/neutral-skin.css +1855 -0
  204. package/dist/dev/define/audio/neutral-skin.d.ts +1 -0
  205. package/dist/dev/define/audio/neutral-skin.js +8 -0
  206. package/dist/dev/define/audio/neutral-skin.js.map +1 -0
  207. package/dist/dev/define/audio/neutral-skin2.js +6 -0
  208. package/dist/dev/define/audio/neutral-skin2.js.map +1 -0
  209. package/dist/dev/define/audio/{minimal-ui.js → neutral-ui.js} +2 -2
  210. package/dist/dev/define/audio/{minimal-ui.js.map → neutral-ui.js.map} +1 -1
  211. package/dist/dev/define/audio/skin.css +1220 -1411
  212. package/dist/dev/define/audio/skin2.js +1 -1
  213. package/dist/dev/define/audio/skin2.js.map +1 -1
  214. package/dist/dev/define/background/skin.css +8 -19
  215. package/dist/dev/define/global.css +5 -21
  216. package/dist/dev/define/live-audio/compat-skin.css +1708 -0
  217. package/dist/dev/define/live-audio/compat-skin.d.ts +1 -0
  218. package/dist/dev/define/live-audio/compat-skin.js +8 -0
  219. package/dist/dev/define/live-audio/compat-skin.js.map +1 -0
  220. package/dist/dev/define/live-audio/compat-skin2.js +6 -0
  221. package/dist/dev/define/live-audio/compat-skin2.js.map +1 -0
  222. package/dist/dev/define/live-audio/neutral-skin.css +1270 -0
  223. package/dist/dev/define/live-audio/neutral-skin.d.ts +1 -0
  224. package/dist/dev/define/live-audio/neutral-skin.js +8 -0
  225. package/dist/dev/define/live-audio/neutral-skin.js.map +1 -0
  226. package/dist/dev/define/live-audio/neutral-skin2.js +6 -0
  227. package/dist/dev/define/live-audio/neutral-skin2.js.map +1 -0
  228. package/dist/dev/define/live-audio/{minimal-ui.js → neutral-ui.js} +2 -2
  229. package/dist/dev/define/live-audio/{minimal-ui.js.map → neutral-ui.js.map} +1 -1
  230. package/dist/dev/define/live-audio/skin.css +849 -959
  231. package/dist/dev/define/live-audio/skin2.js +1 -1
  232. package/dist/dev/define/live-audio/skin2.js.map +1 -1
  233. package/dist/dev/define/live-video/compat-skin.css +2251 -0
  234. package/dist/dev/define/live-video/compat-skin.d.ts +1 -0
  235. package/dist/dev/define/live-video/compat-skin.js +8 -0
  236. package/dist/dev/define/live-video/compat-skin.js.map +1 -0
  237. package/dist/dev/define/live-video/compat-skin2.js +6 -0
  238. package/dist/dev/define/live-video/compat-skin2.js.map +1 -0
  239. package/dist/dev/define/live-video/neutral-skin.css +2101 -0
  240. package/dist/dev/define/live-video/neutral-skin.d.ts +1 -0
  241. package/dist/dev/define/live-video/neutral-skin.js +8 -0
  242. package/dist/dev/define/live-video/neutral-skin.js.map +1 -0
  243. package/dist/dev/define/live-video/neutral-skin2.js +6 -0
  244. package/dist/dev/define/live-video/neutral-skin2.js.map +1 -0
  245. package/dist/dev/define/live-video/{minimal-ui.js → neutral-ui.js} +2 -2
  246. package/dist/dev/define/live-video/{minimal-ui.js.map → neutral-ui.js.map} +1 -1
  247. package/dist/dev/define/live-video/skin.css +1565 -1784
  248. package/dist/dev/define/live-video/skin2.js +1 -1
  249. package/dist/dev/define/live-video/skin2.js.map +1 -1
  250. package/dist/dev/define/media/background-video.d.ts +1 -2
  251. package/dist/dev/define/media/cloudflare-video.d.ts +3 -2
  252. package/dist/dev/define/media/cloudflare-video.js.map +1 -1
  253. package/dist/dev/define/media/dash-video.d.ts +8 -3
  254. package/dist/dev/define/media/dash-video.js +5 -1
  255. package/dist/dev/define/media/dash-video.js.map +1 -1
  256. package/dist/dev/define/media/hls-audio.d.ts +1 -2
  257. package/dist/dev/define/media/hls-background-video.d.ts +1 -2
  258. package/dist/dev/define/media/hls-video.d.ts +1 -2
  259. package/dist/dev/define/media/hlsjs-video.d.ts +3 -2
  260. package/dist/dev/define/media/hlsjs-video.js.map +1 -1
  261. package/dist/dev/define/media/mux-audio/hls-js.d.ts +3 -2
  262. package/dist/dev/define/media/mux-audio/hls-js.js.map +1 -1
  263. package/dist/dev/define/media/mux-audio/index.d.ts +2 -2
  264. package/dist/dev/define/media/mux-audio/spf.d.ts +3 -2
  265. package/dist/dev/define/media/mux-audio/spf.js.map +1 -1
  266. package/dist/dev/define/media/mux-background-video.d.ts +1 -2
  267. package/dist/dev/define/media/mux-video/hls-js.d.ts +3 -2
  268. package/dist/dev/define/media/mux-video/hls-js.js.map +1 -1
  269. package/dist/dev/define/media/mux-video/index.d.ts +2 -2
  270. package/dist/dev/define/media/mux-video/spf.d.ts +3 -2
  271. package/dist/dev/define/media/mux-video/spf.js.map +1 -1
  272. package/dist/dev/define/media/native-hls-video.d.ts +3 -2
  273. package/dist/dev/define/media/native-hls-video.js.map +1 -1
  274. package/dist/dev/define/media/shaka-video.d.ts +4 -2
  275. package/dist/dev/define/media/shaka-video.js +1 -0
  276. package/dist/dev/define/media/shaka-video.js.map +1 -1
  277. package/dist/dev/define/media/spotify-audio.d.ts +3 -2
  278. package/dist/dev/define/media/spotify-audio.js.map +1 -1
  279. package/dist/dev/define/media/tiktok-video.d.ts +3 -2
  280. package/dist/dev/define/media/tiktok-video.js.map +1 -1
  281. package/dist/dev/define/media/twitch-video.d.ts +3 -2
  282. package/dist/dev/define/media/twitch-video.js.map +1 -1
  283. package/dist/dev/define/media/vimeo-video.d.ts +3 -2
  284. package/dist/dev/define/media/vimeo-video.js.map +1 -1
  285. package/dist/dev/define/media/wistia-video.d.ts +3 -2
  286. package/dist/dev/define/media/wistia-video.js.map +1 -1
  287. package/dist/dev/define/media/youtube-video.d.ts +3 -2
  288. package/dist/dev/define/media/youtube-video.js.map +1 -1
  289. package/dist/dev/define/shadow.css +2 -12
  290. package/dist/dev/define/ui/menu-radio-group.d.ts +1 -0
  291. package/dist/dev/define/ui/menu.d.ts +1 -0
  292. package/dist/dev/define/ui/popover.d.ts +1 -0
  293. package/dist/dev/define/video/compat-skin.css +2529 -0
  294. package/dist/dev/define/video/compat-skin.d.ts +1 -0
  295. package/dist/dev/define/video/compat-skin.js +8 -0
  296. package/dist/dev/define/video/compat-skin.js.map +1 -0
  297. package/dist/dev/define/video/compat-skin2.js +6 -0
  298. package/dist/dev/define/video/compat-skin2.js.map +1 -0
  299. package/dist/dev/define/video/neutral-skin.css +2849 -0
  300. package/dist/dev/define/video/neutral-skin.d.ts +1 -0
  301. package/dist/dev/define/video/neutral-skin.js +8 -0
  302. package/dist/dev/define/video/neutral-skin.js.map +1 -0
  303. package/dist/dev/define/video/neutral-skin2.js +6 -0
  304. package/dist/dev/define/video/neutral-skin2.js.map +1 -0
  305. package/dist/dev/define/video/{minimal-ui.js → neutral-ui.js} +2 -2
  306. package/dist/dev/define/video/{minimal-ui.js.map → neutral-ui.js.map} +1 -1
  307. package/dist/dev/define/video/skin.css +2046 -2454
  308. package/dist/dev/define/video/skin2.js +1 -1
  309. package/dist/dev/define/video/skin2.js.map +1 -1
  310. package/dist/dev/extensions/google-cast/extension.d.ts +8 -7
  311. package/dist/dev/extensions/google-cast/extension.js +18 -17
  312. package/dist/dev/extensions/google-cast/extension.js.map +1 -1
  313. package/dist/dev/extensions/mux-data/extension.d.ts +6 -6
  314. package/dist/dev/extensions/mux-data/extension.js +24 -24
  315. package/dist/dev/extensions/mux-data/extension.js.map +1 -1
  316. package/dist/dev/extensions/player-extension-element.d.ts +30 -0
  317. package/dist/dev/extensions/player-extension-element.js +51 -0
  318. package/dist/dev/extensions/player-extension-element.js.map +1 -0
  319. package/dist/dev/i18n/context.d.ts +4 -5
  320. package/dist/dev/i18n/controller.d.ts +3 -4
  321. package/dist/dev/i18n/controller.js.map +1 -1
  322. package/dist/dev/i18n/create-i18n.d.ts +3 -4
  323. package/dist/dev/i18n/index.d.ts +2 -2
  324. package/dist/dev/i18n/index.js +2 -2
  325. package/dist/dev/i18n/locale.d.ts +12 -5
  326. package/dist/dev/i18n/locale.js +10 -2
  327. package/dist/dev/i18n/locale.js.map +1 -1
  328. package/dist/dev/i18n/provider-element.d.ts +4 -3
  329. package/dist/dev/i18n/provider-element.js +1 -0
  330. package/dist/dev/i18n/provider-element.js.map +1 -1
  331. package/dist/dev/i18n/provider-mixin.d.ts +1 -2
  332. package/dist/dev/i18n/provider-mixin.js +11 -9
  333. package/dist/dev/i18n/provider-mixin.js.map +1 -1
  334. package/dist/dev/i18n/render-text.d.ts +6 -3
  335. package/dist/dev/i18n/render-text.js +5 -1
  336. package/dist/dev/i18n/render-text.js.map +1 -1
  337. package/dist/dev/i18n/text/airplay.d.ts +1 -0
  338. package/dist/dev/i18n/text/airplay.js +1 -0
  339. package/dist/dev/i18n/text/buttons.d.ts +1 -0
  340. package/dist/dev/i18n/text/buttons.js +1 -0
  341. package/dist/dev/i18n/text/captions.d.ts +1 -0
  342. package/dist/dev/i18n/text/captions.js +1 -0
  343. package/dist/dev/i18n/text/cast.d.ts +1 -0
  344. package/dist/dev/i18n/text/cast.js +1 -0
  345. package/dist/dev/i18n/text/common.d.ts +1 -0
  346. package/dist/dev/i18n/text/common.js +1 -0
  347. package/dist/dev/i18n/text/container.d.ts +1 -0
  348. package/dist/dev/i18n/text/container.js +1 -0
  349. package/dist/dev/i18n/text/errors.d.ts +1 -0
  350. package/dist/dev/i18n/text/errors.js +1 -0
  351. package/dist/dev/i18n/text/fullscreen.d.ts +1 -0
  352. package/dist/dev/i18n/text/fullscreen.js +1 -0
  353. package/dist/dev/i18n/text/live.d.ts +1 -0
  354. package/dist/dev/i18n/text/live.js +1 -0
  355. package/dist/dev/i18n/text/menu.d.ts +1 -0
  356. package/dist/dev/i18n/text/menu.js +1 -0
  357. package/dist/dev/i18n/text/pip.d.ts +1 -0
  358. package/dist/dev/i18n/text/pip.js +1 -0
  359. package/dist/dev/i18n/text/playback.d.ts +1 -0
  360. package/dist/dev/i18n/text/playback.js +1 -0
  361. package/dist/dev/i18n/text/seek.d.ts +1 -0
  362. package/dist/dev/i18n/text/seek.js +1 -0
  363. package/dist/dev/i18n/text/slider.d.ts +1 -0
  364. package/dist/dev/i18n/text/slider.js +1 -0
  365. package/dist/dev/i18n/text/status.d.ts +1 -0
  366. package/dist/dev/i18n/text/status.js +1 -0
  367. package/dist/dev/i18n/text/time.d.ts +1 -0
  368. package/dist/dev/i18n/text/time.js +1 -0
  369. package/dist/dev/i18n/text/volume.d.ts +1 -0
  370. package/dist/dev/i18n/text/volume.js +1 -0
  371. package/dist/dev/i18n/text-mixin.d.ts +1 -2
  372. package/dist/dev/i18n/text-mixin.js.map +1 -1
  373. package/dist/dev/i18n/types.d.ts +2 -3
  374. package/dist/dev/icons/{minimal → compat}/index.d.ts +1 -1
  375. package/dist/dev/icons/compat/index.js +26 -0
  376. package/dist/dev/icons/dist/element/base.d.ts +1 -2
  377. package/dist/dev/icons/dist/element/base.js.map +1 -1
  378. package/dist/dev/icons/dist/element/compat/icons.js +32 -0
  379. package/dist/dev/icons/dist/element/compat/icons.js.map +1 -0
  380. package/dist/dev/icons/dist/element/{minimal → compat}/index.js +2 -2
  381. package/dist/dev/icons/dist/element/compat/index.js.map +1 -0
  382. package/dist/dev/icons/dist/element/index.js +2 -1
  383. package/dist/dev/icons/dist/element/index.js.map +1 -1
  384. package/dist/dev/icons/dist/element/{minimal → neutral}/icons.js +1 -1
  385. package/dist/dev/icons/dist/element/{minimal → neutral}/icons.js.map +1 -1
  386. package/dist/dev/icons/dist/element/neutral/index.d.ts +1 -0
  387. package/dist/dev/icons/dist/element/neutral/index.js +10 -0
  388. package/dist/dev/icons/dist/element/{minimal → neutral}/index.js.map +1 -1
  389. package/dist/dev/icons/dist/html/compat/airplay-enter.js +6 -0
  390. package/dist/dev/icons/dist/html/compat/airplay-enter.js.map +1 -0
  391. package/dist/dev/icons/dist/html/compat/airplay-exit.js +6 -0
  392. package/dist/dev/icons/dist/html/compat/airplay-exit.js.map +1 -0
  393. package/dist/dev/icons/dist/html/compat/captions-off.js +6 -0
  394. package/dist/dev/icons/dist/html/compat/captions-off.js.map +1 -0
  395. package/dist/dev/icons/dist/html/compat/captions-on.js +6 -0
  396. package/dist/dev/icons/dist/html/compat/captions-on.js.map +1 -0
  397. package/dist/dev/icons/dist/html/compat/cast-enter.js +6 -0
  398. package/dist/dev/icons/dist/html/compat/cast-enter.js.map +1 -0
  399. package/dist/dev/icons/dist/html/compat/cast-exit.js +6 -0
  400. package/dist/dev/icons/dist/html/compat/cast-exit.js.map +1 -0
  401. package/dist/dev/icons/dist/html/compat/check.js +6 -0
  402. package/dist/dev/icons/dist/html/compat/check.js.map +1 -0
  403. package/dist/dev/icons/dist/html/compat/chevron.js +6 -0
  404. package/dist/dev/icons/dist/html/compat/chevron.js.map +1 -0
  405. package/dist/dev/icons/dist/html/compat/fullscreen-enter.js +6 -0
  406. package/dist/dev/icons/dist/html/compat/fullscreen-enter.js.map +1 -0
  407. package/dist/dev/icons/dist/html/compat/fullscreen-exit.js +6 -0
  408. package/dist/dev/icons/dist/html/compat/fullscreen-exit.js.map +1 -0
  409. package/dist/dev/icons/dist/html/compat/gear.js +6 -0
  410. package/dist/dev/icons/dist/html/compat/gear.js.map +1 -0
  411. package/dist/dev/icons/dist/html/compat/index.d.ts +28 -0
  412. package/dist/dev/icons/dist/html/compat/pause.js +6 -0
  413. package/dist/dev/icons/dist/html/compat/pause.js.map +1 -0
  414. package/dist/dev/icons/dist/html/compat/pip-enter.js +6 -0
  415. package/dist/dev/icons/dist/html/compat/pip-enter.js.map +1 -0
  416. package/dist/dev/icons/dist/html/compat/pip-exit.js +6 -0
  417. package/dist/dev/icons/dist/html/compat/pip-exit.js.map +1 -0
  418. package/dist/dev/icons/dist/html/compat/play.js +6 -0
  419. package/dist/dev/icons/dist/html/compat/play.js.map +1 -0
  420. package/dist/dev/icons/dist/html/compat/quality.js +6 -0
  421. package/dist/dev/icons/dist/html/compat/quality.js.map +1 -0
  422. package/dist/dev/icons/dist/html/compat/restart.js +6 -0
  423. package/dist/dev/icons/dist/html/compat/restart.js.map +1 -0
  424. package/dist/dev/icons/dist/html/compat/seek.js +6 -0
  425. package/dist/dev/icons/dist/html/compat/seek.js.map +1 -0
  426. package/dist/dev/icons/dist/html/compat/speech.js +6 -0
  427. package/dist/dev/icons/dist/html/compat/speech.js.map +1 -0
  428. package/dist/dev/icons/dist/html/compat/speed.js +6 -0
  429. package/dist/dev/icons/dist/html/compat/speed.js.map +1 -0
  430. package/dist/dev/icons/dist/html/{minimal → compat}/spinner.js +1 -1
  431. package/dist/dev/icons/dist/html/compat/spinner.js.map +1 -0
  432. package/dist/dev/icons/dist/html/compat/switches.js +6 -0
  433. package/dist/dev/icons/dist/html/compat/switches.js.map +1 -0
  434. package/dist/dev/icons/dist/html/compat/volume-high.js +6 -0
  435. package/dist/dev/icons/dist/html/compat/volume-high.js.map +1 -0
  436. package/dist/dev/icons/dist/html/compat/volume-low.js +6 -0
  437. package/dist/dev/icons/dist/html/compat/volume-low.js.map +1 -0
  438. package/dist/dev/icons/dist/html/compat/volume-off.js +6 -0
  439. package/dist/dev/icons/dist/html/compat/volume-off.js.map +1 -0
  440. package/dist/dev/icons/dist/html/default/index.d.ts +25 -26
  441. package/dist/dev/icons/dist/html/{minimal → neutral}/airplay-enter.js +1 -1
  442. package/dist/dev/icons/dist/html/{minimal → neutral}/airplay-enter.js.map +1 -1
  443. package/dist/dev/icons/dist/html/{minimal → neutral}/airplay-exit.js +1 -1
  444. package/dist/dev/icons/dist/html/{minimal → neutral}/airplay-exit.js.map +1 -1
  445. package/dist/dev/icons/dist/html/{minimal → neutral}/captions-off.js +1 -1
  446. package/dist/dev/icons/dist/html/{minimal → neutral}/captions-off.js.map +1 -1
  447. package/dist/dev/icons/dist/html/{minimal → neutral}/captions-on.js +1 -1
  448. package/dist/dev/icons/dist/html/{minimal → neutral}/captions-on.js.map +1 -1
  449. package/dist/dev/icons/dist/html/{minimal → neutral}/cast-enter.js +1 -1
  450. package/dist/dev/icons/dist/html/{minimal → neutral}/cast-enter.js.map +1 -1
  451. package/dist/dev/icons/dist/html/{minimal → neutral}/cast-exit.js +1 -1
  452. package/dist/dev/icons/dist/html/{minimal → neutral}/cast-exit.js.map +1 -1
  453. package/dist/dev/icons/dist/html/{minimal → neutral}/check.js +1 -1
  454. package/dist/dev/icons/dist/html/{minimal → neutral}/check.js.map +1 -1
  455. package/dist/dev/icons/dist/html/{minimal → neutral}/chevron.js +1 -1
  456. package/dist/dev/icons/dist/html/{minimal → neutral}/chevron.js.map +1 -1
  457. package/dist/dev/icons/dist/html/{minimal → neutral}/fullscreen-enter.js +1 -1
  458. package/dist/dev/icons/dist/html/{minimal → neutral}/fullscreen-enter.js.map +1 -1
  459. package/dist/dev/icons/dist/html/{minimal → neutral}/fullscreen-exit.js +1 -1
  460. package/dist/dev/icons/dist/html/{minimal → neutral}/fullscreen-exit.js.map +1 -1
  461. package/dist/dev/icons/dist/html/{minimal → neutral}/gear.js +1 -1
  462. package/dist/dev/icons/dist/html/{minimal → neutral}/gear.js.map +1 -1
  463. package/dist/dev/icons/dist/html/neutral/index.d.ts +28 -0
  464. package/dist/dev/icons/dist/html/{minimal → neutral}/pause.js +1 -1
  465. package/dist/dev/icons/dist/html/{minimal → neutral}/pause.js.map +1 -1
  466. package/dist/dev/icons/dist/html/{minimal → neutral}/pip-enter.js +1 -1
  467. package/dist/dev/icons/dist/html/{minimal → neutral}/pip-enter.js.map +1 -1
  468. package/dist/dev/icons/dist/html/{minimal → neutral}/pip-exit.js +1 -1
  469. package/dist/dev/icons/dist/html/{minimal → neutral}/pip-exit.js.map +1 -1
  470. package/dist/dev/icons/dist/html/{minimal → neutral}/play.js +1 -1
  471. package/dist/dev/icons/dist/html/{minimal → neutral}/play.js.map +1 -1
  472. package/dist/dev/icons/dist/html/{minimal → neutral}/quality.js +1 -1
  473. package/dist/dev/icons/dist/html/{minimal → neutral}/quality.js.map +1 -1
  474. package/dist/dev/icons/dist/html/{minimal → neutral}/restart.js +1 -1
  475. package/dist/dev/icons/dist/html/{minimal → neutral}/restart.js.map +1 -1
  476. package/dist/dev/icons/dist/html/{minimal → neutral}/seek.js +1 -1
  477. package/dist/dev/icons/dist/html/{minimal → neutral}/seek.js.map +1 -1
  478. package/dist/dev/icons/dist/html/{minimal → neutral}/speech.js +1 -1
  479. package/dist/dev/icons/dist/html/{minimal → neutral}/speech.js.map +1 -1
  480. package/dist/dev/icons/dist/html/{minimal → neutral}/speed.js +1 -1
  481. package/dist/dev/icons/dist/html/{minimal → neutral}/speed.js.map +1 -1
  482. package/dist/dev/icons/dist/html/neutral/spinner.js +6 -0
  483. package/dist/dev/icons/dist/html/{minimal → neutral}/spinner.js.map +1 -1
  484. package/dist/dev/icons/dist/html/{minimal → neutral}/switches.js +1 -1
  485. package/dist/dev/icons/dist/html/{minimal → neutral}/switches.js.map +1 -1
  486. package/dist/dev/icons/dist/html/{minimal → neutral}/volume-high.js +1 -1
  487. package/dist/dev/icons/dist/html/{minimal → neutral}/volume-high.js.map +1 -1
  488. package/dist/dev/icons/dist/html/{minimal → neutral}/volume-low.js +1 -1
  489. package/dist/dev/icons/dist/html/{minimal → neutral}/volume-low.js.map +1 -1
  490. package/dist/dev/icons/dist/html/{minimal → neutral}/volume-off.js +1 -1
  491. package/dist/dev/icons/dist/html/{minimal → neutral}/volume-off.js.map +1 -1
  492. package/dist/dev/icons/element/compat/index.d.ts +1 -0
  493. package/dist/dev/icons/element/compat/index.js +1 -0
  494. package/dist/dev/icons/element/neutral/index.d.ts +1 -0
  495. package/dist/dev/icons/element/neutral/index.js +1 -0
  496. package/dist/dev/icons/element/register/index.d.ts +1 -2
  497. package/dist/dev/icons/neutral/index.d.ts +2 -0
  498. package/dist/dev/icons/neutral/index.js +26 -0
  499. package/dist/dev/index.d.ts +12 -7
  500. package/dist/dev/index.js +4 -3
  501. package/dist/dev/internal/skins/compat-audio/register.d.ts +43 -0
  502. package/dist/dev/internal/skins/compat-audio/register.js +72 -0
  503. package/dist/dev/internal/skins/compat-audio/register.js.map +1 -0
  504. package/dist/dev/internal/skins/compat-audio/skin.css +1891 -0
  505. package/dist/dev/internal/skins/compat-audio/template.js +217 -0
  506. package/dist/dev/internal/skins/compat-audio/template.js.map +1 -0
  507. package/dist/dev/internal/skins/compat-live-audio/register.d.ts +27 -0
  508. package/dist/dev/internal/skins/compat-live-audio/register.js +52 -0
  509. package/dist/dev/internal/skins/compat-live-audio/register.js.map +1 -0
  510. package/dist/dev/internal/skins/compat-live-audio/skin.css +1676 -0
  511. package/dist/dev/internal/skins/compat-live-audio/template.js +114 -0
  512. package/dist/dev/internal/skins/compat-live-audio/template.js.map +1 -0
  513. package/dist/dev/internal/skins/compat-live-video/register.d.ts +45 -0
  514. package/dist/dev/internal/skins/compat-live-video/register.js +88 -0
  515. package/dist/dev/internal/skins/compat-live-video/register.js.map +1 -0
  516. package/dist/dev/internal/skins/compat-live-video/skin.css +2219 -0
  517. package/dist/dev/internal/skins/compat-live-video/template.js +239 -0
  518. package/dist/dev/internal/skins/compat-live-video/template.js.map +1 -0
  519. package/dist/dev/internal/skins/compat-video/register.d.ts +62 -0
  520. package/dist/dev/internal/skins/compat-video/register.js +117 -0
  521. package/dist/dev/internal/skins/compat-video/register.js.map +1 -0
  522. package/dist/dev/internal/skins/compat-video/skin.css +2497 -0
  523. package/dist/dev/internal/skins/compat-video/template.js +459 -0
  524. package/dist/dev/internal/skins/compat-video/template.js.map +1 -0
  525. package/dist/dev/internal/skins/default-audio/register.d.ts +12 -12
  526. package/dist/dev/internal/skins/default-audio/register.js +8 -8
  527. package/dist/dev/internal/skins/default-audio/skin.css +1213 -1365
  528. package/dist/dev/internal/skins/default-live-audio/register.d.ts +4 -4
  529. package/dist/dev/internal/skins/default-live-audio/register.js +4 -4
  530. package/dist/dev/internal/skins/default-live-audio/skin.css +842 -913
  531. package/dist/dev/internal/skins/default-live-video/register.d.ts +10 -10
  532. package/dist/dev/internal/skins/default-live-video/register.js +8 -8
  533. package/dist/dev/internal/skins/default-live-video/skin.css +1548 -1728
  534. package/dist/dev/internal/skins/default-video/register.d.ts +18 -18
  535. package/dist/dev/internal/skins/default-video/register.js +13 -13
  536. package/dist/dev/internal/skins/default-video/skin.css +2034 -2403
  537. package/dist/dev/internal/skins/{minimal-audio → neutral-audio}/register.d.ts +14 -14
  538. package/dist/dev/internal/skins/{minimal-audio → neutral-audio}/register.js +20 -20
  539. package/dist/dev/internal/skins/{minimal-audio → neutral-audio}/register.js.map +1 -1
  540. package/dist/dev/internal/skins/neutral-audio/skin.css +1823 -0
  541. package/dist/dev/internal/skins/{minimal-audio → neutral-audio}/template.js +24 -24
  542. package/dist/dev/internal/skins/{minimal-audio → neutral-audio}/template.js.map +1 -1
  543. package/dist/dev/internal/skins/{minimal-live-audio → neutral-live-audio}/register.d.ts +4 -4
  544. package/dist/dev/internal/skins/{minimal-live-audio → neutral-live-audio}/register.js +13 -13
  545. package/dist/dev/internal/skins/{minimal-live-audio → neutral-live-audio}/register.js.map +1 -1
  546. package/dist/dev/internal/skins/neutral-live-audio/skin.css +1238 -0
  547. package/dist/dev/internal/skins/{minimal-live-audio → neutral-live-audio}/template.js +14 -14
  548. package/dist/dev/internal/skins/{minimal-live-audio → neutral-live-audio}/template.js.map +1 -1
  549. package/dist/dev/internal/skins/{minimal-live-video → neutral-live-video}/register.d.ts +10 -10
  550. package/dist/dev/internal/skins/{minimal-live-video → neutral-live-video}/register.js +28 -28
  551. package/dist/dev/internal/skins/{minimal-live-video → neutral-live-video}/register.js.map +1 -1
  552. package/dist/dev/internal/skins/neutral-live-video/skin.css +2069 -0
  553. package/dist/dev/internal/skins/{minimal-live-video → neutral-live-video}/template.js +47 -47
  554. package/dist/dev/internal/skins/{minimal-live-video → neutral-live-video}/template.js.map +1 -1
  555. package/dist/dev/internal/skins/{minimal-video → neutral-video}/register.d.ts +20 -20
  556. package/dist/dev/internal/skins/{minimal-video → neutral-video}/register.js +40 -40
  557. package/dist/dev/internal/skins/{minimal-video → neutral-video}/register.js.map +1 -1
  558. package/dist/dev/internal/skins/neutral-video/skin.css +2817 -0
  559. package/dist/dev/internal/skins/{minimal-video → neutral-video}/template.js +75 -75
  560. package/dist/dev/internal/skins/{minimal-video → neutral-video}/template.js.map +1 -1
  561. package/dist/dev/media/background-video/adapter.d.ts +1 -2
  562. package/dist/dev/media/background-video/template.d.ts +1 -2
  563. package/dist/dev/media/cloudflare-video/adapter.d.ts +3 -15
  564. package/dist/dev/media/dash-video/adapter.d.ts +3 -15
  565. package/dist/dev/media/hls-audio/adapter.d.ts +3 -15
  566. package/dist/dev/media/hls-background-video/adapter.d.ts +8 -5
  567. package/dist/dev/media/hls-background-video/adapter.js.map +1 -1
  568. package/dist/dev/media/hls-video/adapter.d.ts +3 -15
  569. package/dist/dev/media/hlsjs-video/adapter.d.ts +3 -15
  570. package/dist/dev/media/mux-audio/hls-js.d.ts +3 -15
  571. package/dist/dev/media/mux-audio/mixin.js.map +1 -1
  572. package/dist/dev/media/mux-audio/spf.d.ts +3 -15
  573. package/dist/dev/media/mux-video/hls-js.d.ts +3 -15
  574. package/dist/dev/media/mux-video/mixin.js.map +1 -1
  575. package/dist/dev/media/mux-video/spf.d.ts +3 -15
  576. package/dist/dev/media/native-hls-video/adapter.d.ts +3 -15
  577. package/dist/dev/media/shaka-video/adapter.d.ts +3 -15
  578. package/dist/dev/media/spotify-audio/adapter.d.ts +3 -15
  579. package/dist/dev/media/tiktok-video/adapter.d.ts +3 -15
  580. package/dist/dev/media/twitch-video/adapter.d.ts +3 -15
  581. package/dist/dev/media/vimeo-video/adapter.d.ts +3 -15
  582. package/dist/dev/media/wistia-video/adapter.d.ts +1 -2
  583. package/dist/dev/media/youtube-video/adapter.d.ts +3 -15
  584. package/dist/dev/player/context.d.ts +34 -15
  585. package/dist/dev/player/context.js +9 -1
  586. package/dist/dev/player/context.js.map +1 -1
  587. package/dist/dev/player/controller.d.ts +3 -4
  588. package/dist/dev/player/controller.js.map +1 -1
  589. package/dist/dev/player/create-player.d.ts +5 -6
  590. package/dist/dev/player/create-player.js +2 -1
  591. package/dist/dev/player/create-player.js.map +1 -1
  592. package/dist/dev/player/element.js +47 -10
  593. package/dist/dev/player/element.js.map +1 -1
  594. package/dist/dev/presets/audio/compat-skin.d.ts +15 -0
  595. package/dist/dev/presets/audio/compat-skin.js +21 -0
  596. package/dist/dev/presets/audio/compat-skin.js.map +1 -0
  597. package/dist/dev/presets/audio/index.d.ts +3 -2
  598. package/dist/dev/presets/audio/index.js +3 -2
  599. package/dist/dev/presets/audio/neutral-skin.d.ts +15 -0
  600. package/dist/dev/presets/audio/neutral-skin.js +21 -0
  601. package/dist/dev/presets/audio/neutral-skin.js.map +1 -0
  602. package/dist/dev/presets/audio/player.d.ts +2 -3
  603. package/dist/dev/presets/audio/skin.d.ts +2 -3
  604. package/dist/dev/presets/audio/skin.js.map +1 -1
  605. package/dist/dev/presets/background/player.d.ts +2 -3
  606. package/dist/dev/presets/background/skin.d.ts +1 -2
  607. package/dist/dev/presets/live-audio/compat-skin.d.ts +15 -0
  608. package/dist/dev/presets/live-audio/compat-skin.js +21 -0
  609. package/dist/dev/presets/live-audio/compat-skin.js.map +1 -0
  610. package/dist/dev/presets/live-audio/index.d.ts +3 -2
  611. package/dist/dev/presets/live-audio/index.js +3 -2
  612. package/dist/dev/presets/live-audio/neutral-skin.d.ts +15 -0
  613. package/dist/dev/presets/live-audio/neutral-skin.js +21 -0
  614. package/dist/dev/presets/live-audio/neutral-skin.js.map +1 -0
  615. package/dist/dev/presets/live-audio/player.d.ts +2 -3
  616. package/dist/dev/presets/live-audio/skin.d.ts +2 -3
  617. package/dist/dev/presets/live-audio/skin.js.map +1 -1
  618. package/dist/dev/presets/live-video/compat-skin.d.ts +15 -0
  619. package/dist/dev/presets/live-video/compat-skin.js +21 -0
  620. package/dist/dev/presets/live-video/compat-skin.js.map +1 -0
  621. package/dist/dev/presets/live-video/index.d.ts +3 -2
  622. package/dist/dev/presets/live-video/index.js +3 -2
  623. package/dist/dev/presets/live-video/neutral-skin.d.ts +15 -0
  624. package/dist/dev/presets/live-video/neutral-skin.js +21 -0
  625. package/dist/dev/presets/live-video/neutral-skin.js.map +1 -0
  626. package/dist/dev/presets/live-video/player.d.ts +2 -3
  627. package/dist/dev/presets/live-video/skin.d.ts +2 -3
  628. package/dist/dev/presets/live-video/skin.js.map +1 -1
  629. package/dist/dev/presets/skin.d.ts +1 -2
  630. package/dist/dev/presets/video/compat-skin.d.ts +15 -0
  631. package/dist/dev/presets/video/compat-skin.js +21 -0
  632. package/dist/dev/presets/video/compat-skin.js.map +1 -0
  633. package/dist/dev/presets/video/index.d.ts +3 -2
  634. package/dist/dev/presets/video/index.js +3 -2
  635. package/dist/dev/presets/video/neutral-skin.d.ts +15 -0
  636. package/dist/dev/presets/video/neutral-skin.js +21 -0
  637. package/dist/dev/presets/video/neutral-skin.js.map +1 -0
  638. package/dist/dev/presets/video/player.d.ts +2 -3
  639. package/dist/dev/presets/video/skin.d.ts +2 -3
  640. package/dist/dev/presets/video/skin.js.map +1 -1
  641. package/dist/dev/store/media-attach-mixin.d.ts +6 -4
  642. package/dist/dev/store/media-attach-mixin.js +2 -0
  643. package/dist/dev/store/media-attach-mixin.js.map +1 -1
  644. package/dist/dev/store/types.d.ts +2 -4
  645. package/dist/dev/ui/airplay-button/element.d.ts +4 -5
  646. package/dist/dev/ui/airplay-button/element.js +1 -1
  647. package/dist/dev/ui/airplay-button/element.js.map +1 -1
  648. package/dist/dev/ui/alert-dialog/element.d.ts +1 -2
  649. package/dist/dev/ui/audio-track-radio-group/element.d.ts +4 -5
  650. package/dist/dev/ui/audio-track-radio-group/element.js.map +1 -1
  651. package/dist/dev/ui/buffering-indicator/element.d.ts +2 -2
  652. package/dist/dev/ui/buffering-indicator/element.js +4 -0
  653. package/dist/dev/ui/buffering-indicator/element.js.map +1 -1
  654. package/dist/dev/ui/captions-button/element.d.ts +7 -10
  655. package/dist/dev/ui/captions-button/element.js.map +1 -1
  656. package/dist/dev/ui/captions-radio-group/element.d.ts +4 -5
  657. package/dist/dev/ui/captions-radio-group/element.js.map +1 -1
  658. package/dist/dev/ui/cast-button/element.d.ts +3 -4
  659. package/dist/dev/ui/cast-button/element.js.map +1 -1
  660. package/dist/dev/ui/container/element.d.ts +1 -2
  661. package/dist/dev/ui/container/element.js.map +1 -1
  662. package/dist/dev/ui/context-part-element.d.ts +2 -3
  663. package/dist/dev/ui/context-part-element.js.map +1 -1
  664. package/dist/dev/ui/controls/backdrop.d.ts +1 -2
  665. package/dist/dev/ui/controls/content.d.ts +1 -2
  666. package/dist/dev/ui/controls/context.d.ts +1 -2
  667. package/dist/dev/ui/controls/element.d.ts +1 -2
  668. package/dist/dev/ui/controls/element.js.map +1 -1
  669. package/dist/dev/ui/controls/group.d.ts +1 -2
  670. package/dist/dev/ui/dialog/backdrop.d.ts +1 -2
  671. package/dist/dev/ui/dialog/close.d.ts +1 -2
  672. package/dist/dev/ui/dialog/close.js.map +1 -1
  673. package/dist/dev/ui/dialog/context.d.ts +4 -3
  674. package/dist/dev/ui/dialog/context.js +1 -0
  675. package/dist/dev/ui/dialog/context.js.map +1 -1
  676. package/dist/dev/ui/dialog/description.d.ts +1 -2
  677. package/dist/dev/ui/dialog/element.d.ts +5 -4
  678. package/dist/dev/ui/dialog/element.js +4 -2
  679. package/dist/dev/ui/dialog/element.js.map +1 -1
  680. package/dist/dev/ui/dialog/popup.d.ts +1 -2
  681. package/dist/dev/ui/dialog/popup.js.map +1 -1
  682. package/dist/dev/ui/dialog/title.d.ts +1 -2
  683. package/dist/dev/ui/error-dialog/element.d.ts +1 -2
  684. package/dist/dev/ui/error-dialog/element.js.map +1 -1
  685. package/dist/dev/ui/fullscreen-button/element.d.ts +3 -5
  686. package/dist/dev/ui/fullscreen-button/element.js.map +1 -1
  687. package/dist/dev/ui/gesture/element.d.ts +1 -2
  688. package/dist/dev/ui/gesture/element.js.map +1 -1
  689. package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.d.ts +2 -3
  690. package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.js.map +1 -1
  691. package/dist/dev/ui/hotkey/element.d.ts +1 -2
  692. package/dist/dev/ui/hotkey/element.js.map +1 -1
  693. package/dist/dev/ui/input-indicator/element.d.ts +5 -4
  694. package/dist/dev/ui/input-indicator/element.js.map +1 -1
  695. package/dist/dev/ui/input-indicator/live-indicator.d.ts +2 -3
  696. package/dist/dev/ui/input-indicator/live-indicator.js.map +1 -1
  697. package/dist/dev/ui/live-button/element.d.ts +4 -4
  698. package/dist/dev/ui/live-button/element.js.map +1 -1
  699. package/dist/dev/ui/media-button-element.d.ts +17 -8
  700. package/dist/dev/ui/media-button-element.js +7 -6
  701. package/dist/dev/ui/media-button-element.js.map +1 -1
  702. package/dist/dev/ui/media-ui-element.d.ts +15 -7
  703. package/dist/dev/ui/media-ui-element.js +6 -1
  704. package/dist/dev/ui/media-ui-element.js.map +1 -1
  705. package/dist/dev/ui/menu/checkbox-item.d.ts +1 -2
  706. package/dist/dev/ui/menu/checkbox-item.js.map +1 -1
  707. package/dist/dev/ui/menu/content.d.ts +1 -2
  708. package/dist/dev/ui/menu/content.js.map +1 -1
  709. package/dist/dev/ui/menu/context.d.ts +9 -5
  710. package/dist/dev/ui/menu/context.js +2 -0
  711. package/dist/dev/ui/menu/context.js.map +1 -1
  712. package/dist/dev/ui/menu/element.d.ts +1 -2
  713. package/dist/dev/ui/menu/element.js.map +1 -1
  714. package/dist/dev/ui/menu/group-controller.js.map +1 -1
  715. package/dist/dev/ui/menu/group-label.d.ts +1 -2
  716. package/dist/dev/ui/menu/group-label.js.map +1 -1
  717. package/dist/dev/ui/menu/group.d.ts +1 -2
  718. package/dist/dev/ui/menu/group.js.map +1 -1
  719. package/dist/dev/ui/menu/item-indicator.d.ts +1 -2
  720. package/dist/dev/ui/menu/item.d.ts +1 -2
  721. package/dist/dev/ui/menu/item.js.map +1 -1
  722. package/dist/dev/ui/menu/radio-group.d.ts +1 -2
  723. package/dist/dev/ui/menu/radio-group.js.map +1 -1
  724. package/dist/dev/ui/menu/radio-item.d.ts +1 -2
  725. package/dist/dev/ui/menu/radio-item.js.map +1 -1
  726. package/dist/dev/ui/menu/separator.d.ts +1 -2
  727. package/dist/dev/ui/mute-button/element.d.ts +3 -4
  728. package/dist/dev/ui/mute-button/element.js.map +1 -1
  729. package/dist/dev/ui/pip-button/element.d.ts +4 -6
  730. package/dist/dev/ui/pip-button/element.js.map +1 -1
  731. package/dist/dev/ui/play-button/element.d.ts +3 -5
  732. package/dist/dev/ui/play-button/element.js +1 -1
  733. package/dist/dev/ui/play-button/element.js.map +1 -1
  734. package/dist/dev/ui/playback-rate-button/element.d.ts +4 -5
  735. package/dist/dev/ui/playback-rate-button/element.js +4 -2
  736. package/dist/dev/ui/playback-rate-button/element.js.map +1 -1
  737. package/dist/dev/ui/playback-rate-radio-group/element.d.ts +4 -5
  738. package/dist/dev/ui/playback-rate-radio-group/element.js.map +1 -1
  739. package/dist/dev/ui/popover/element.d.ts +1 -2
  740. package/dist/dev/ui/popover/element.js +4 -2
  741. package/dist/dev/ui/popover/element.js.map +1 -1
  742. package/dist/dev/ui/position-controller.js.map +1 -1
  743. package/dist/dev/ui/poster/element.d.ts +1 -2
  744. package/dist/dev/ui/poster/element.js.map +1 -1
  745. package/dist/dev/ui/quality-radio-group/element.d.ts +4 -5
  746. package/dist/dev/ui/quality-radio-group/element.js.map +1 -1
  747. package/dist/dev/ui/radio-group/context.d.ts +4 -3
  748. package/dist/dev/ui/radio-group/context.js +1 -0
  749. package/dist/dev/ui/radio-group/context.js.map +1 -1
  750. package/dist/dev/ui/radio-group/element.d.ts +1 -2
  751. package/dist/dev/ui/radio-group/element.js.map +1 -1
  752. package/dist/dev/ui/radio-options/controller.js.map +1 -1
  753. package/dist/dev/ui/seek-button/element.d.ts +2 -3
  754. package/dist/dev/ui/seek-button/element.js.map +1 -1
  755. package/dist/dev/ui/seek-indicator/element.d.ts +3 -4
  756. package/dist/dev/ui/seek-indicator/element.js +7 -1
  757. package/dist/dev/ui/seek-indicator/element.js.map +1 -1
  758. package/dist/dev/ui/seek-indicator/value.d.ts +1 -2
  759. package/dist/dev/ui/slider/buffer.d.ts +1 -2
  760. package/dist/dev/ui/slider/context.d.ts +4 -3
  761. package/dist/dev/ui/slider/context.js +1 -0
  762. package/dist/dev/ui/slider/context.js.map +1 -1
  763. package/dist/dev/ui/slider/element.d.ts +1 -2
  764. package/dist/dev/ui/slider/element.js.map +1 -1
  765. package/dist/dev/ui/slider/events.d.ts +4 -3
  766. package/dist/dev/ui/slider/fill.d.ts +1 -2
  767. package/dist/dev/ui/slider/preview.d.ts +1 -2
  768. package/dist/dev/ui/slider/preview.js.map +1 -1
  769. package/dist/dev/ui/slider/thumb.d.ts +1 -2
  770. package/dist/dev/ui/slider/thumb.js.map +1 -1
  771. package/dist/dev/ui/slider/thumbnail.d.ts +1 -2
  772. package/dist/dev/ui/slider/thumbnail.js.map +1 -1
  773. package/dist/dev/ui/slider/track.d.ts +1 -2
  774. package/dist/dev/ui/slider/value.d.ts +1 -2
  775. package/dist/dev/ui/slider/value.js.map +1 -1
  776. package/dist/dev/ui/status-announcer/element.d.ts +1 -2
  777. package/dist/dev/ui/status-announcer/element.js.map +1 -1
  778. package/dist/dev/ui/status-indicator/element.d.ts +9 -4
  779. package/dist/dev/ui/status-indicator/element.js +14 -1
  780. package/dist/dev/ui/status-indicator/element.js.map +1 -1
  781. package/dist/dev/ui/status-indicator/value.d.ts +1 -2
  782. package/dist/dev/ui/text/element.d.ts +4 -3
  783. package/dist/dev/ui/text/element.js +1 -0
  784. package/dist/dev/ui/text/element.js.map +1 -1
  785. package/dist/dev/ui/thumbnail/element.d.ts +5 -6
  786. package/dist/dev/ui/thumbnail/element.js +3 -2
  787. package/dist/dev/ui/thumbnail/element.js.map +1 -1
  788. package/dist/dev/ui/time/element.d.ts +1 -2
  789. package/dist/dev/ui/time/element.js.map +1 -1
  790. package/dist/dev/ui/time/group.d.ts +1 -2
  791. package/dist/dev/ui/time/separator.d.ts +1 -2
  792. package/dist/dev/ui/time-slider/chapter-title.d.ts +1 -2
  793. package/dist/dev/ui/time-slider/chapter-title.js.map +1 -1
  794. package/dist/dev/ui/time-slider/chapters.d.ts +1 -2
  795. package/dist/dev/ui/time-slider/chapters.js.map +1 -1
  796. package/dist/dev/ui/time-slider/element.d.ts +1 -2
  797. package/dist/dev/ui/time-slider/element.js.map +1 -1
  798. package/dist/dev/ui/title/element.d.ts +1 -2
  799. package/dist/dev/ui/title/element.js.map +1 -1
  800. package/dist/dev/ui/tooltip/context.d.ts +2 -2
  801. package/dist/dev/ui/tooltip/context.js +1 -0
  802. package/dist/dev/ui/tooltip/context.js.map +1 -1
  803. package/dist/dev/ui/tooltip/element.d.ts +1 -2
  804. package/dist/dev/ui/tooltip/element.js +4 -2
  805. package/dist/dev/ui/tooltip/element.js.map +1 -1
  806. package/dist/dev/ui/tooltip/group.d.ts +1 -2
  807. package/dist/dev/ui/tooltip/group.js.map +1 -1
  808. package/dist/dev/ui/tooltip/label.d.ts +1 -2
  809. package/dist/dev/ui/tooltip/label.js.map +1 -1
  810. package/dist/dev/ui/tooltip/shortcut.d.ts +1 -2
  811. package/dist/dev/ui/ui-element.d.ts +3 -3
  812. package/dist/dev/ui/ui-element.js.map +1 -1
  813. package/dist/dev/ui/volume-indicator/element.d.ts +3 -4
  814. package/dist/dev/ui/volume-indicator/element.js.map +1 -1
  815. package/dist/dev/ui/volume-indicator/fill.d.ts +1 -2
  816. package/dist/dev/ui/volume-indicator/value.d.ts +1 -2
  817. package/dist/dev/ui/volume-popover/element.d.ts +1 -2
  818. package/dist/dev/ui/volume-popover/element.js +1 -1
  819. package/dist/dev/ui/volume-popover/element.js.map +1 -1
  820. package/dist/dev/ui/volume-slider/element.d.ts +1 -2
  821. package/dist/dev/ui/volume-slider/element.js +1 -1
  822. package/dist/dev/ui/volume-slider/element.js.map +1 -1
  823. package/dist/dev/version.d.ts +21 -0
  824. package/dist/dev/version.js +29 -0
  825. package/dist/dev/version.js.map +1 -0
  826. package/docs/README.md +1 -1
  827. package/docs/guides/autoplay.md +10 -21
  828. package/docs/guides/background-video.md +74 -7
  829. package/docs/guides/browser-support.md +48 -36
  830. package/docs/guides/build-your-own-component.md +5 -5
  831. package/docs/guides/captions.md +46 -6
  832. package/docs/guides/casting.md +24 -8
  833. package/docs/guides/cdn.md +11 -10
  834. package/docs/guides/content-security-policy.md +29 -5
  835. package/docs/guides/controls.md +25 -10
  836. package/docs/guides/customize-skins.md +2 -2
  837. package/docs/guides/features.md +3 -1
  838. package/docs/guides/fullscreen.md +35 -8
  839. package/docs/guides/installation-cdn.md +5 -9
  840. package/docs/guides/installation-shadcn.md +4 -8
  841. package/docs/guides/installation-svelte.md +5 -9
  842. package/docs/guides/installation-vue.md +5 -9
  843. package/docs/guides/installation.md +5 -9
  844. package/docs/guides/internationalization.md +37 -28
  845. package/docs/guides/keyboard-shortcuts.md +27 -15
  846. package/docs/guides/live-streams.md +51 -13
  847. package/docs/guides/llms.txt +7 -6
  848. package/docs/guides/media-sources.md +8 -5
  849. package/docs/guides/migrate-from-media-chrome.md +182 -51
  850. package/docs/guides/migrate-from-mux-player.md +191 -116
  851. package/docs/guides/migrate-from-plyr.md +171 -81
  852. package/docs/guides/migrate-from-video-js-8.md +255 -190
  853. package/docs/guides/migrate-from-vidstack.md +865 -0
  854. package/docs/guides/mux-data.md +23 -9
  855. package/docs/guides/picture-in-picture.md +22 -16
  856. package/docs/guides/playback-errors.md +10 -7
  857. package/docs/guides/poster.md +32 -11
  858. package/docs/guides/presets.md +15 -5
  859. package/docs/guides/quality.md +44 -5
  860. package/docs/guides/self-hosting.md +5 -5
  861. package/docs/guides/skins.md +6 -4
  862. package/docs/guides/thumbnails.md +24 -14
  863. package/docs/guides/ui-components.md +1 -1
  864. package/docs/guides/user-preferences.md +38 -15
  865. package/docs/guides/v10-roadmap.md +19 -54
  866. package/docs/llms.txt +46 -12
  867. package/docs/reference/api/create-i18n.md +3 -3
  868. package/docs/reference/api/create-translator.md +1 -1
  869. package/docs/reference/api/feature-audio-track.md +1 -1
  870. package/docs/reference/api/feature-controls.md +2 -2
  871. package/docs/reference/api/feature-fullscreen.md +1 -2
  872. package/docs/reference/api/feature-pip.md +3 -4
  873. package/docs/reference/api/feature-playback.md +2 -3
  874. package/docs/reference/api/feature-quality.md +2 -2
  875. package/docs/reference/api/feature-remote-playback.md +1 -1
  876. package/docs/reference/api/feature-source.md +2 -8
  877. package/docs/reference/api/feature-text-tracks.md +6 -8
  878. package/docs/reference/api/feature-volume.md +1 -1
  879. package/docs/reference/api/find-locale-keys.md +32 -0
  880. package/docs/reference/api/get-locale-key.md +32 -0
  881. package/docs/reference/api/html-create-player.md +24 -26
  882. package/docs/reference/api/i18n-controller.md +1 -1
  883. package/docs/reference/api/is-text.md +33 -0
  884. package/docs/reference/api/llms.txt +23 -2
  885. package/docs/reference/api/load-locale.md +36 -0
  886. package/docs/reference/api/media-capabilities.md +255 -0
  887. package/docs/reference/api/player-controller.md +39 -20
  888. package/docs/reference/api/player-store.md +112 -0
  889. package/docs/reference/api/preset-audio.md +116 -0
  890. package/docs/reference/api/preset-background.md +103 -0
  891. package/docs/reference/api/preset-live-audio.md +119 -0
  892. package/docs/reference/api/preset-live-video.md +124 -0
  893. package/docs/reference/api/preset-video.md +123 -0
  894. package/docs/reference/api/register-i18n.md +13 -0
  895. package/docs/reference/api/resolve-adapter-type.md +98 -0
  896. package/docs/reference/api/resolve-mime-type.md +48 -0
  897. package/docs/reference/api/resolve-translation.md +36 -0
  898. package/docs/reference/api/translate-text.md +56 -0
  899. package/docs/reference/api/translation-phrases.md +13 -0
  900. package/docs/reference/api/ui-element.md +296 -0
  901. package/docs/reference/components/audio-compat-skin.md +33 -0
  902. package/docs/reference/components/{audio-minimal-skin.md → audio-neutral-skin.md} +6 -6
  903. package/docs/reference/components/audio-skin.md +2 -2
  904. package/docs/reference/components/background-video-skin.md +1 -1
  905. package/docs/reference/components/background-video.md +1 -1
  906. package/docs/reference/components/captions-button.md +1 -1
  907. package/docs/reference/components/captions-radio-group.md +1 -1
  908. package/docs/reference/components/cloudflare-video.md +1 -1
  909. package/docs/reference/components/controls.md +2 -2
  910. package/docs/reference/components/dash-video.md +1 -1
  911. package/docs/reference/components/fullscreen-button.md +1 -1
  912. package/docs/reference/components/google-cast.md +4 -4
  913. package/docs/reference/components/hls-audio.md +1 -1
  914. package/docs/reference/components/hls-background-video.md +1 -1
  915. package/docs/reference/components/hls-video.md +1 -1
  916. package/docs/reference/components/hlsjs-video.md +2 -2
  917. package/docs/reference/components/icons.md +130 -0
  918. package/docs/reference/components/live-audio-compat-skin.md +35 -0
  919. package/docs/reference/components/{live-audio-minimal-skin.md → live-audio-neutral-skin.md} +6 -6
  920. package/docs/reference/components/live-audio-skin.md +2 -2
  921. package/docs/reference/components/live-video-compat-skin.md +41 -0
  922. package/docs/reference/components/{live-video-minimal-skin.md → live-video-neutral-skin.md} +6 -6
  923. package/docs/reference/components/live-video-skin.md +2 -2
  924. package/docs/reference/components/llms.txt +16 -6
  925. package/docs/reference/components/menu.md +7 -2
  926. package/docs/reference/components/mux-audio.md +2 -2
  927. package/docs/reference/components/mux-background-video.md +1 -1
  928. package/docs/reference/components/mux-data.md +4 -4
  929. package/docs/reference/components/mux-video.md +4 -4
  930. package/docs/reference/components/native-hls-video.md +1 -1
  931. package/docs/reference/components/pip-button.md +2 -2
  932. package/docs/reference/components/player.md +26 -2
  933. package/docs/reference/components/popover.md +6 -8
  934. package/docs/reference/components/shaka-video.md +1 -1
  935. package/docs/reference/components/spotify-audio.md +1 -1
  936. package/docs/reference/components/status-indicator.md +27 -4
  937. package/docs/reference/components/thumbnail.md +1 -1
  938. package/docs/reference/components/tiktok-video.md +1 -1
  939. package/docs/reference/components/twitch-video.md +1 -1
  940. package/docs/reference/components/video-compat-skin.md +45 -0
  941. package/docs/reference/components/{video-minimal-skin.md → video-neutral-skin.md} +6 -6
  942. package/docs/reference/components/video-skin.md +2 -2
  943. package/docs/reference/components/vimeo-video.md +1 -1
  944. package/docs/reference/components/wistia-video.md +1 -1
  945. package/docs/reference/components/youtube-video.md +1 -1
  946. package/package.json +54 -42
  947. package/dist/default/define/audio/minimal-skin.css +0 -2048
  948. package/dist/default/define/audio/minimal-skin.js +0 -6
  949. package/dist/default/define/audio/minimal-skin2.js +0 -4
  950. package/dist/default/define/live-audio/minimal-skin.css +0 -1378
  951. package/dist/default/define/live-audio/minimal-skin.js +0 -6
  952. package/dist/default/define/live-audio/minimal-skin2.js +0 -4
  953. package/dist/default/define/live-video/minimal-skin.css +0 -2311
  954. package/dist/default/define/live-video/minimal-skin.js +0 -6
  955. package/dist/default/define/live-video/minimal-skin2.js +0 -4
  956. package/dist/default/define/video/minimal-skin.css +0 -3232
  957. package/dist/default/define/video/minimal-skin.js +0 -6
  958. package/dist/default/define/video/minimal-skin2.js +0 -4
  959. package/dist/default/extensions/media-extension-element.js +0 -54
  960. package/dist/default/icons/element/minimal/index.js +0 -1
  961. package/dist/default/icons/minimal/index.js +0 -26
  962. package/dist/default/internal/skins/minimal-audio/skin.css +0 -1977
  963. package/dist/default/internal/skins/minimal-live-audio/skin.css +0 -1307
  964. package/dist/default/internal/skins/minimal-live-video/skin.css +0 -2240
  965. package/dist/default/internal/skins/minimal-video/skin.css +0 -3161
  966. package/dist/default/presets/audio/minimal-skin.js +0 -19
  967. package/dist/default/presets/live-audio/minimal-skin.js +0 -19
  968. package/dist/default/presets/live-video/minimal-skin.js +0 -19
  969. package/dist/default/presets/video/minimal-skin.js +0 -19
  970. package/dist/dev/define/audio/minimal-skin.css +0 -2048
  971. package/dist/dev/define/audio/minimal-skin.d.ts +0 -1
  972. package/dist/dev/define/audio/minimal-skin.js +0 -8
  973. package/dist/dev/define/audio/minimal-skin.js.map +0 -1
  974. package/dist/dev/define/audio/minimal-skin2.js +0 -6
  975. package/dist/dev/define/audio/minimal-skin2.js.map +0 -1
  976. package/dist/dev/define/live-audio/minimal-skin.css +0 -1378
  977. package/dist/dev/define/live-audio/minimal-skin.d.ts +0 -1
  978. package/dist/dev/define/live-audio/minimal-skin.js +0 -8
  979. package/dist/dev/define/live-audio/minimal-skin.js.map +0 -1
  980. package/dist/dev/define/live-audio/minimal-skin2.js +0 -6
  981. package/dist/dev/define/live-audio/minimal-skin2.js.map +0 -1
  982. package/dist/dev/define/live-video/minimal-skin.css +0 -2311
  983. package/dist/dev/define/live-video/minimal-skin.d.ts +0 -1
  984. package/dist/dev/define/live-video/minimal-skin.js +0 -8
  985. package/dist/dev/define/live-video/minimal-skin.js.map +0 -1
  986. package/dist/dev/define/live-video/minimal-skin2.js +0 -6
  987. package/dist/dev/define/live-video/minimal-skin2.js.map +0 -1
  988. package/dist/dev/define/video/minimal-skin.css +0 -3232
  989. package/dist/dev/define/video/minimal-skin.d.ts +0 -1
  990. package/dist/dev/define/video/minimal-skin.js +0 -8
  991. package/dist/dev/define/video/minimal-skin.js.map +0 -1
  992. package/dist/dev/define/video/minimal-skin2.js +0 -6
  993. package/dist/dev/define/video/minimal-skin2.js.map +0 -1
  994. package/dist/dev/extensions/media-extension-element.d.ts +0 -29
  995. package/dist/dev/extensions/media-extension-element.js +0 -56
  996. package/dist/dev/extensions/media-extension-element.js.map +0 -1
  997. package/dist/dev/icons/dist/html/minimal/index.d.ts +0 -29
  998. package/dist/dev/icons/element/minimal/index.d.ts +0 -1
  999. package/dist/dev/icons/element/minimal/index.js +0 -1
  1000. package/dist/dev/icons/minimal/index.js +0 -26
  1001. package/dist/dev/internal/skins/minimal-audio/skin.css +0 -1977
  1002. package/dist/dev/internal/skins/minimal-live-audio/skin.css +0 -1307
  1003. package/dist/dev/internal/skins/minimal-live-video/skin.css +0 -2240
  1004. package/dist/dev/internal/skins/minimal-video/skin.css +0 -3161
  1005. package/dist/dev/presets/audio/minimal-skin.d.ts +0 -16
  1006. package/dist/dev/presets/audio/minimal-skin.js +0 -21
  1007. package/dist/dev/presets/audio/minimal-skin.js.map +0 -1
  1008. package/dist/dev/presets/live-audio/minimal-skin.d.ts +0 -16
  1009. package/dist/dev/presets/live-audio/minimal-skin.js +0 -21
  1010. package/dist/dev/presets/live-audio/minimal-skin.js.map +0 -1
  1011. package/dist/dev/presets/live-video/minimal-skin.d.ts +0 -16
  1012. package/dist/dev/presets/live-video/minimal-skin.js +0 -21
  1013. package/dist/dev/presets/live-video/minimal-skin.js.map +0 -1
  1014. package/dist/dev/presets/video/minimal-skin.d.ts +0 -16
  1015. package/dist/dev/presets/video/minimal-skin.js +0 -21
  1016. package/dist/dev/presets/video/minimal-skin.js.map +0 -1
  1017. /package/dist/dev/define/audio/{minimal-ui.d.ts → neutral-ui.d.ts} +0 -0
  1018. /package/dist/dev/define/live-audio/{minimal-ui.d.ts → neutral-ui.d.ts} +0 -0
  1019. /package/dist/dev/define/live-video/{minimal-ui.d.ts → neutral-ui.d.ts} +0 -0
  1020. /package/dist/dev/define/video/{minimal-ui.d.ts → neutral-ui.d.ts} +0 -0
  1021. /package/dist/dev/icons/dist/element/{minimal → compat}/index.d.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  # Migrate from Mux Player
2
2
 
3
- Move a Mux Player embed to Video.js v10, splitting one element into a player, a media, and a skin
3
+ Move a Mux Player embed to Video.js v10 using a player, media component, skin, and analytics extension
4
4
 
5
5
  Mux Player combines HLS playback, UI, analytics, captions, remote playback, and keyboard shortcuts in one element. Video.js v10 composes those responsibilities from a player, media component, skin, and optional [extensions](./architecture.md).
6
6
 
@@ -10,47 +10,55 @@ This guide moves a working Mux Player embed to those pieces, then maps the setti
10
10
  >
11
11
  > Did you use Mux Player without controls as a hero, ambient loop, or decorative video? Go to [Add a background video](./background-video.md). It starts with a browser-playable video file, then covers the HLS and Mux background components.
12
12
 
13
- ## Before you migrate
13
+ ## AI Quickstart
14
14
 
15
- A few minutes of auditing tells you which sections of this guide apply to you:
15
+ Paste this prompt into your coding agent:
16
16
 
17
- - **List the Mux Player attributes or React props you set.** Compare them with the mapping tables below to make your migration checklist.
18
- - **Grep your codebase for `mux-player` selectors.** CSS rules and `querySelector` calls that reach into the element — `mux-player::part(…)`, `mux-player [role="slider"]`, `player.shadowRoot` — will silently stop matching after the swap. Plan to restyle with the skin’s custom properties or rebuild against Video.js components.
19
- - **Find your event listeners and imperative calls** (`play()`, `currentTime`, `addChapters`). Media APIs move to the media element; the rest is mapped under [Drive playback](#drive-playback).
20
- - **Note your theme and CSS variables.** Two skins replace Mux Player’s five themes, and `--accent-color` and friends have new names.
21
- - **Check your catalog for DRM or TS-packaged assets.** They decide which of the two Mux media flavors you can use; see [Which Mux media should you use?](#which-mux-media-should-you-use).
17
+ ```
18
+ Migrate this project's Mux Player player to Video.js v10 for HTML. Use @videojs/html or its CDN bundles for a page without a build step.
22
19
 
23
- ## Three pieces instead of one
20
+ Run `npx @videojs/cli agents skills` to get the Video.js skill installation instructions. Follow the printed steps for your agent. If they require a session reload, reload the session and continue with this prompt. If you can't run commands, use the installation instructions at https://github.com/videojs/skills. Use the skill throughout this migration.
24
21
 
25
- Mux Player packs three jobs into a single element. Video.js splits them up, so it helps to learn the names before you write any code.
22
+ Read the migration guide at https://videojs.org/docs/framework/html/guides/migrate-from-mux-player, including its Known gaps section. Inspect the existing player and list its media URLs, source formats, tracks, options, custom controls, event handlers, and integrations. Compare that list with the known gaps and report unsupported requirements before changing code. Keep the existing media URLs and required behavior throughout the migration.
26
23
 
27
- **The player** is the outer custom element. It holds state, hands that state to everything inside it, and draws no UI itself. Which state it holds depends on the [features](./features.md) it’s built from.
24
+ For installation guidance, read https://videojs.org/docs/framework/html/llms.txt and follow its link to the installation guide. Keep using that online index for a CDN installation.
28
25
 
29
- **The media** is the thing that plays the video. The Mux media is the one you want: it knows what a playback ID is and how to talk to Mux. Swap it for another [media component](./media-sources.md) and the rest of your player keeps working.
26
+ From the application root, run `npx @videojs/cli agents init` without flags to list installation options and their accepted values.
30
27
 
31
- **The skin** is the UI: the controls, the poster, the captions, the settings menu, the keyboard shortcuts. [Skins](./skins.md) are pre-built arrangements of smaller components, and you can use one as-is, restyle it, or take it apart.
28
+ Choose values for these options:
29
+ - --media and --source-url: the existing content and playback requirements.
30
+ - --method: the installation method.
31
+ - --preset, --skin, and --extensions: the player UI and integrations.
32
32
 
33
- So a Mux Player embed becomes a player wrapped around a skin wrapped around a media:
33
+ Add those options to `npx @videojs/cli agents init --framework html --project existing` and run the command to print the installation plan. Follow any version-mismatch notice. Both CLI commands print instructions without changing project files. Use the printed plan to install Video.js and configure the player.
34
34
 
35
- ```html
36
- <video-player>
37
- <video-skin>
38
- <mux-video></mux-video>
39
- </video-skin>
40
- </video-player>
35
+ After installing a package, switch to node_modules/@videojs/html/docs/llms.txt for documentation matching its version.
36
+
37
+ Implement the migration. Then verify playback, captions, controls, and any analytics integration on every browser the project supports.
41
38
  ```
42
39
 
43
- Everything else in this guide is about which of those three a Mux Player setting now belongs to.
40
+ ## Before you migrate
41
+
42
+ Make a migration checklist before changing your embed:
43
+
44
+ - **List the Mux Player attributes or React props you set.** Compare them with the mapping tables below.
45
+ - **Grep your codebase for `mux-player` selectors.** After the swap, CSS rules and `querySelector` calls that reach into the element stop matching, with no error. Look for patterns such as `mux-player::part(…)`, `mux-player [role="slider"]`, and `player.shadowRoot`. Restyle the UI with the skin’s custom properties or rebuild it with Video.js components.
46
+ - **Find your event listeners and imperative calls** (`play()`, `currentTime`, `addChapters`). Media APIs move to the media element; the rest is mapped under [Drive playback](#drive-playback).
47
+ - **Note your theme and CSS variables.** Compare your Mux Player theme with the two Video.js skins, and map its CSS variables.
48
+ - **Check [Known gaps](#known-gaps)** for features your app needs.
49
+ - **Check your catalog for MPEG-TS, raw ADTS AAC, AES-128, low-latency HLS, or DVR streams.** Check whether the SPF engine supports these requirements. If you use DRM, verify playback with whichever engine you choose. See [Which Mux media should you use?](#which-mux-media-should-you-use).
50
+
51
+ Before loading Video.js, remove Mux Player imports and CDN scripts, plus any other imports that register legacy Mux Video or Media Chrome elements. Then reload the page. These libraries share custom-element names such as `mux-video` and `media-play-button`. A name can only have one definition per document, and Video.js keeps an existing definition. If both players must remain during migration, use separate documents, such as an iframe.
44
52
 
45
53
  ## Your first player
46
54
 
47
- Here’s a typical Mux Player embed. A playback ID, a title and viewer ID for analytics, and a poster pulled from two seconds in.
55
+ The examples keep a playback ID, analytics metadata, and a poster from two seconds into the video. Replace `YOUR_PLAYBACK_ID` with your existing playback ID before running them.
48
56
 
49
57
  ```html
50
58
  <script src="https://cdn.jsdelivr.net/npm/@mux/mux-player" defer></script>
51
59
 
52
60
  <mux-player
53
- playback-id="EcHgOK9coz5K…"
61
+ playback-id="YOUR_PLAYBACK_ID"
54
62
  metadata-video-title="Test VOD"
55
63
  metadata-viewer-user-id="user-id-007"
56
64
  thumbnail-time="2"
@@ -60,19 +68,19 @@ Here’s a typical Mux Player embed. A playback ID, a title and viewer ID for an
60
68
  From the CDN, load the video [preset](./presets.md), the Mux media, and analytics:
61
69
 
62
70
  ```html
63
- <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.4/video.js"></script>
64
- <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.4/media/mux-video.js"></script>
65
- <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.4/extensions/mux-data.js"></script>
71
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0/video.js"></script>
72
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0/media/mux-video.js"></script>
73
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0/extensions/mux-data.js"></script>
66
74
 
67
75
  <video-player content-title="Test VOD">
68
76
  <video-skin style="aspect-ratio: 16 / 9">
69
77
  <mux-video
70
- src="https://stream.mux.com/EcHgOK9coz5K….m3u8"
78
+ src="https://stream.mux.com/YOUR_PLAYBACK_ID.m3u8"
71
79
  poster-time="2"
72
80
  playsinline
73
81
  crossorigin="anonymous"
74
82
  ></mux-video>
75
- <mux-data player-software-name="my-app"></mux-data>
83
+ <mux-data></mux-data>
76
84
  </video-skin>
77
85
  </video-player>
78
86
 
@@ -84,7 +92,7 @@ From the CDN, load the video [preset](./presets.md), the Mux media, and analytic
84
92
  </script>
85
93
  ```
86
94
 
87
- If you use a bundler instead of the CDN, the imports are the same three pieces plus the Mux Data extension:
95
+ With a bundler, install the HTML package, Mux media adapter, and Mux Data extension. Import the player, skin, media, and extension:
88
96
 
89
97
  ```bash
90
98
  npm install @videojs/html @videojs/mux-video @videojs/mux-data
@@ -99,28 +107,28 @@ import '@videojs/html/extensions/mux-data';
99
107
 
100
108
  > **Caution: Analytics changes from opt-out to opt-in**
101
109
  >
102
- > Mux Player monitors playback by default. Video.js sends no Mux Data beacons unless you add the `<mux-data>` extension shown above. Keep it when you want a behaviorally equivalent migration; omit it only when you intend to stop monitoring.
110
+ > Mux Player monitors playback by default. Video.js sends no Mux Data beacons unless you add the `<mux-data>` extension shown above. Keep the extension to preserve Mux Player’s monitoring. Leave it out only if you intend to stop monitoring.
103
111
 
104
- A few things worth calling out:
112
+ Preserve these behaviors when adapting the example:
105
113
 
106
- - **The skin has no size of its own**, so the examples give it one with an inline `aspect-ratio`. Any styling that sizes the skin works the same way, whether that’s a class of yours or a Tailwind utility like `aspect-video`. See [Move your layout styles](#move-your-layout-styles).
114
+ - **The skin has no size of its own**, so the examples give it one with an inline `aspect-ratio`. Any CSS that sizes the skin works, such as your own class or a Tailwind utility like `aspect-video`. See [Move your layout styles](#move-your-layout-styles).
107
115
  - **The Mux media supplies the poster.** It builds the image URL from the playback ID, and the skin displays it automatically. The example keeps the frame from two seconds in by configuring the Mux media. Set `poster` on the player only when you want to use your own URL.
108
- - **You didn’t add a storyboard track, and you get hover previews.** The Mux media adds and maintains the thumbnail track itself, and removes it for live streams, where storyboards don’t exist.
116
+ - **Thumbnail previews come from the Mux media.** The Mux media adds and maintains the thumbnail track itself, and removes it for live streams, where storyboards don’t exist.
109
117
  - **Analytics needs no environment key.** Mux resolves the environment from the playback ID. See [Mux Data](./mux-data.md).
110
- - **Chromecast is opt-in.** Follow [Cast to AirPlay and Chromecast](./casting.md) when you want it; leave the extension out when you don’t.
118
+ - **Chromecast is opt-in.** To add Chromecast, follow [Cast to AirPlay and Chromecast](./casting.md). Otherwise, leave the Google Cast extension out.
111
119
 
112
120
  ### Move your layout styles
113
121
 
114
122
  Mux Player was one visible, measurable element. Video.js separates player state from the visible surface.
115
123
 
116
- If you use `<video-skin>`, put width, height, aspect ratio, positioning, and DOM measurements on `<video-skin>`. Importing the skin registers the styles that make the media, controls, poster, and overlays fill and layer within it. The skin also makes `<video-player>` boxless.
124
+ If you use `<video-skin>`, put width, height, aspect ratio, positioning, and DOM measurements on `<video-skin>`. Importing the skin registers the styles that make the media, controls, poster, and overlays fill the skin and stack inside it. The skin also stops `<video-player>` from creating a layout box of its own.
117
125
 
118
126
  If you leave out `<video-skin>` to build your own UI, add a [`<media-container>`](../reference/components/player-container.md). Style and measure that element, and put overlays inside it:
119
127
 
120
128
  ```html
121
129
  <video-player>
122
130
  <media-container class="player-surface">
123
- <mux-video src="https://stream.mux.com/EcHgOK9coz5K….m3u8"></mux-video>
131
+ <mux-video src="https://stream.mux.com/YOUR_PLAYBACK_ID.m3u8"></mux-video>
124
132
  <my-overlay></my-overlay>
125
133
  </media-container>
126
134
  </video-player>
@@ -137,6 +145,27 @@ If you leave out `<video-skin>` to build your own UI, add a [`<media-container>`
137
145
 
138
146
  `<mux-video>` and the other custom video elements do not create their own layout box. They fill their parent, so size and measure `<media-container>`, not the video element.
139
147
 
148
+ The examples leave out the player software name and version. If your app already sets them, copy them to the Mux Data extension. Use `player-software-name` and `player-software-version` in HTML, or `playerSoftwareName` and `playerSoftwareVersion` in React. Preserve your existing Mux Data metadata as well.
149
+
150
+ ## Three pieces instead of one
151
+
152
+ Use these three pieces when deciding where each Mux Player setting belongs:
153
+
154
+ **The player** is the outer custom element. It holds state, hands that state to everything inside it, and draws no UI itself. Which state it holds depends on the [features](./features.md) it’s built from.
155
+
156
+ **The media** is the thing that plays the video. Use Mux media for Mux playback IDs and source settings. Choose another [media component](./media-sources.md) when changing providers, and check which capabilities it exposes.
157
+
158
+ **The skin** is the UI: the controls, the poster, the captions, the settings menu, the keyboard shortcuts. [Skins](./skins.md) are pre-built arrangements of smaller components, and you can use one as-is, restyle it, or add its source to your project and edit it.
159
+
160
+ ## Autoplay
161
+
162
+ Video.js uses native autoplay. Move Mux Player’s boolean autoplay setting to the media. For its string-valued modes:
163
+
164
+ - `muted`: set both `autoplay` and `muted` on the media (`autoPlay` and `muted` in React).
165
+ - `any`: on `loadstart`, call `play()` on the media. If the returned promise rejects, mute the media and call `play()` again. Implement this fallback in your app.
166
+
167
+ Keep a manual play control available if autoplay fails. See [Handle autoplay](./autoplay.md).
168
+
140
169
  ## Mux settings live in a source object
141
170
 
142
171
  Mux Player exposes Mux stream parameters as attributes such as `max-resolution`, `asset-start-time`, and `custom-domain`.
@@ -145,7 +174,7 @@ Video.js collects them into a single **source** object that describes what to pl
145
174
 
146
175
  ```js
147
176
  {
148
- playbackId: 'EcHgOK9coz5K…',
177
+ playbackId: 'YOUR_PLAYBACK_ID',
149
178
  playback: { maxResolution: '1080p', assetStartTime: 10, assetEndTime: 30 },
150
179
  poster: { time: 2, width: 1280 },
151
180
  }
@@ -153,16 +182,16 @@ Video.js collects them into a single **source** object that describes what to pl
153
182
 
154
183
  The groups map to the three URLs Mux serves. `playback` modifies the video stream, `poster` modifies the still image, and `storyboard` modifies the hover-preview track. Video.js builds all three URLs and converts your camel-case keys to the `snake_case` query parameters Mux expects, so `assetStartTime` goes out as `asset_start_time`.
155
184
 
156
- Assign it as a property, since an object has no attribute form:
185
+ Set it as the element’s `source` property because an attribute cannot hold an object:
157
186
 
158
187
  ```ts
159
- document.querySelector('mux-video')!.source = { playbackId: 'EcHgOK9coz5K…' };
188
+ document.querySelector('mux-video')!.source = { playbackId: 'YOUR_PLAYBACK_ID' };
160
189
  ```
161
190
 
162
- You can also skip the object entirely and set `src` to a full Mux URL. The element parses it back into a source, query parameters included, which is what you want in markup you can’t run JavaScript against:
191
+ You can also skip the object entirely and set `src` to a full Mux URL. The element parses the URL, including its query parameters, into a source. Use this form in markup where you cannot run JavaScript:
163
192
 
164
193
  ```html
165
- <mux-video src="https://stream.mux.com/EcHgOK9coz5K….m3u8?max_resolution=1080p"></mux-video>
194
+ <mux-video src="https://stream.mux.com/YOUR_PLAYBACK_ID.m3u8?max_resolution=1080p"></mux-video>
166
195
  ```
167
196
 
168
197
  There’s no `playback-id` attribute, so declarative markup uses the URL form.
@@ -177,18 +206,18 @@ Here’s where the Mux Player attributes land:
177
206
  | `rendition-order` | `source.playback.renditionOrder` |
178
207
  | `asset-start-time`, `asset-end-time` | `source.playback.assetStartTime`, `.assetEndTime` |
179
208
  | `program-start-time`, `program-end-time` | `source.playback.programStartTime`, `.programEndTime` |
180
- | `default-subtitles-lang` | `source.playback.defaultSubtitlesLang` |
209
+ | the `default_subtitles_lang` playback parameter | `source.playback.defaultSubtitlesLang` |
181
210
  | `playback-token` | `source.playback.token` |
182
211
  | `thumbnail-token`, `storyboard-token` | `source.poster.token`, `source.storyboard.token` |
183
212
  | `drm-token` | `source.drm.token` |
184
- | `thumbnail-time` | `source.poster.time` |
213
+ | `thumbnail-time` | `poster-time` on `<mux-video>`, or `source.poster.time` |
185
214
  | poster size, crop, rotation, format | `source.poster.width`, `.height`, `.fitMode`, `.rotate`, `.ext` |
186
215
 
187
- Signed playback behaves the way it does in Mux Player: a token replaces every other parameter in its group, so caps and clipping have to be baked into the token itself.
216
+ Signed playback behaves the way it does in Mux Player: a token replaces every other parameter in its group, so put resolution caps and clipping in the token itself.
188
217
 
189
218
  ## Analytics moves to its own extension
190
219
 
191
- Mux Player’s analytics settings become attributes or properties on the [Mux Data extension](../reference/components/mux-data.md), placed inside the player.
220
+ Render the [Mux Data extension](../reference/components/mux-data.md) inside the player, and move Mux Player’s analytics settings to its attributes or properties.
192
221
 
193
222
  | Mux Player | Video.js v10 |
194
223
  | --- | --- |
@@ -197,10 +226,10 @@ Mux Player’s analytics settings become attributes or properties on the [Mux Da
197
226
  | `disable-cookies` | `disable-cookies` |
198
227
  | `beacon-collection-domain` | `beacon-collection-domain` |
199
228
  | `player-software-name`, `player-software-version` | `player-software-name`, `player-software-version` |
200
- | `debug` | the `debug` property |
229
+ | `debug` | the `debug` attribute or property |
201
230
  | `disable-tracking` | omit the component |
202
231
 
203
- `metadata` is a property rather than an attribute because an object has no sensible string form.
232
+ Set `metadata` as a property because it takes an object, while attributes take strings.
204
233
 
205
234
  Your metadata keys don’t change. They’re the same `snake_case` names Mux Data has always taken, so the values port across untouched.
206
235
 
@@ -212,11 +241,11 @@ For analytics, use `metadata.video_title` on the Mux Data extension.
212
241
 
213
242
  For display, use `content-title` on the player.
214
243
 
215
- An asset titled in the Mux dashboard supplies its own: the Mux media loads the asset’s metadata and the player falls back to that title when none is set on it, so the display title is optional for Mux-hosted video.
244
+ Mux media loads the asset’s title from its metadata. If you omit the display title on the player, the player uses the title set in the Mux dashboard.
216
245
 
217
- The packaged video and live-video skins show the resolved title at the top of the player and fade it with the controls, so the embeds above already display it. The [`<media-title>`](../reference/components/title.md#styling) element sets `data-visible` while the controls are visible, so your skin overrides can move it differently. The audio skins have no title display.
246
+ The packaged video and live-video skins show the resolved title at the top of the player and fade it with the controls, so the embeds above already display it. The [`<media-title>`](../reference/components/title.md#styling) element sets `data-visible` while the controls are visible, so your skin overrides can style the title differently when the controls show or hide. The audio skins have no title display.
218
247
 
219
- A skin layout you added to your project, or a custom layout, shows the title only where you place it. Keep it inside the sized container from [Move your layout styles](#move-your-layout-styles) so it overlays the media:
248
+ In installed skin source or a custom layout, the title appears where you place the title component. Put the title component inside the sized container from [Move your layout styles](#move-your-layout-styles) so it overlays the media:
220
249
 
221
250
  ```js
222
251
  import '@videojs/html/ui/container';
@@ -226,38 +255,40 @@ import '@videojs/html/ui/title';
226
255
  ```html
227
256
  <video-player content-title="Test VOD">
228
257
  <media-container class="player-surface">
229
- <mux-video src="https://stream.mux.com/EcHgOK9coz5K….m3u8"></mux-video>
258
+ <mux-video src="https://stream.mux.com/YOUR_PLAYBACK_ID.m3u8"></mux-video>
230
259
  <media-title></media-title>
231
260
  </media-container>
232
261
  </video-player>
233
262
  ```
234
263
 
235
- `<mux-video>` supplies a poster from the playback ID, and `source.poster` controls the generated image. The skin displays it automatically. Pass `poster` to the player when you want to use your own URL:
264
+ `<mux-video>` supplies a poster from the playback ID, and `source.poster` controls the generated image. The skin displays it automatically. Pass `poster` to the player when you want to use your own URL.
265
+
266
+ To show a placeholder while the generated poster loads:
236
267
 
237
268
  ```html
238
- <video-player poster="https://image.mux.com/EcHgOK9coz5K…/thumbnail.webp?time=2">
269
+ <video-player>
239
270
  <video-skin>
240
- <mux-video src="https://stream.mux.com/EcHgOK9coz5K….m3u8"></mux-video>
271
+ <mux-video src="https://stream.mux.com/YOUR_PLAYBACK_ID.m3u8"></mux-video>
241
272
  <img
242
273
  slot="poster"
243
274
  alt=""
244
- style="background: url('data:image/webp;base64,…') center / contain no-repeat"
275
+ style="background: url('/placeholder.webp') center / contain no-repeat"
245
276
  />
246
277
  </video-skin>
247
278
  </video-player>
248
279
  ```
249
280
 
250
- The player supplies the real poster. The slotted image supplies Mux Player’s `placeholder` as its background while that poster loads.
281
+ Replace `/placeholder.webp` with your existing placeholder image URL or data URL. The slotted image shows the placeholder while the full poster loads. The Mux media supplies that full poster using your source settings and any thumbnail token.
251
282
 
252
- Mux serves the poster from its `thumbnail` endpoint, and `source.poster` configures that URL: `thumbnail-time` is `source.poster.time`, and the size, crop, rotation, and format options are `width`, `height`, `fitMode`, `rotate`, and `ext` beside it. Video.js converts those camel-case keys to the `snake_case` query parameters Mux expects. See [Add a poster and loading placeholder](./poster.md) for more examples or the [`<media-poster>`](../reference/components/poster.md) reference for the element itself.
283
+ Mux serves poster images from its `thumbnail` endpoint. Configure the image URL with `source.poster`. Move Mux Player’s `thumbnail-time` value to `poster-time` on `<mux-video>` or to `source.poster.time`. Set `width`, `height`, `fitMode`, `rotate`, and `ext` on `source.poster` to control image size, cropping, rotation, and format. Video.js converts those camel-case keys to the `snake_case` query parameters Mux expects. See [Add a poster and loading placeholder](./poster.md) for more examples or the [`<media-poster>`](../reference/components/poster.md) reference for the element itself.
253
284
 
254
285
  ## Customize your player
255
286
 
256
- Mux Player gives you attributes and documented CSS variables. Past that, you’re stuck. Video.js gives you three levels, and you should try them in order.
287
+ Choose the smallest customization that meets your existing UI requirements: a packaged skin, its CSS variables, or editable skin source.
257
288
 
258
289
  ### Level 1: pick a skin
259
290
 
260
- Two are packaged. The default skin is a modern, frosted look. The minimal skin is closer to a classic control bar. Both bring controls, tooltips, captions, keyboard shortcuts, touch gestures, and a settings menu that appears when there’s something to put in it. See [Skins](./skins.md).
291
+ Video.js has three packaged skins. The Default skin groups settings in a menu. The Neutral skin has a compact layout like a classic player control bar. The Compat skin uses plain surfaces and basic controls for broader browser support. All three bring controls, tooltips, captions, keyboard shortcuts, touch gestures, and a settings menu that appears when there’s something to put in it. See [Skins](./skins.md).
261
292
 
262
293
  ### Level 2: restyle it
263
294
 
@@ -275,89 +306,127 @@ video-skin {
275
306
  }
276
307
  ```
277
308
 
278
- `--media-accent-color` reaches the sliders, the active buttons, and the accent surfaces. Video.js derives a readable text color to sit on top of it; override that with `--media-accent-text-color` if you’d rather choose. `--media-border-radius` rounds the player, and `--media-scale-unit` scales the whole control bar at once. [Customize skins](./customize-skins.md#style-a-packaged-skin) has the full list.
309
+ `--media-accent-color` reaches the sliders, the active buttons, and the accent surfaces. Video.js picks a readable text color for content on the accent color. To choose that text color yourself, set `--media-accent-text-color`. `--media-border-radius` rounds the player’s corners. `--media-scale-unit` scales the whole control bar. [Customize skins](./customize-skins.md#style-a-packaged-skin) has the full list.
279
310
 
280
- The skins use a different visual design, so you may not need to replace Mux Player’s `primaryColor` and `secondaryColor` directly. Start with `--media-accent-color`. Restyle individual surfaces, or add the skin source to your project, only when you need a closer palette match.
311
+ The skins use a different visual design, so you may not need direct replacements for Mux Player’s primary and secondary colors. Start with `--media-accent-color`. Restyle individual surfaces, or add the skin source to your project, only when you need a closer palette match.
281
312
 
282
313
  ### Level 3: edit skin source
283
314
 
284
- For changes to controls, layout, or interactions, add the skin source to your project. Its components and styles become local files. [Customize skins](./customize-skins.md#style-skin-source) covers the setup and available skins.
315
+ For changes to controls, layout, or interactions, add the skin source to your project. Its TypeScript components and styles become local files that need a build step. A CDN-only page must add a build step before it can use this source. [Customize skins](./customize-skins.md#style-skin-source) covers the setup and available skins.
316
+
317
+ To migrate `forward-seek-offset` and `backward-seek-offset`, edit the installed skin’s hotkey and gesture declarations.
285
318
 
286
- This is the level that per-control tweaks need, and it’s a genuine step up in effort from a Mux Player attribute. `forward-seek-offset="30"` was one character. In Video.js, the skins bake their seek step into their keyboard shortcuts and gestures, so changing it means editing those lines:
319
+ Replace the existing seek declarations, including the `j` and `l` shortcuts, with ones that use your offsets. These examples use 30 seconds forward and backward:
287
320
 
288
321
  ```html
289
322
  <media-hotkey keys="ArrowRight" action="seekStep" value="30"></media-hotkey>
290
323
  <media-hotkey keys="ArrowLeft" action="seekStep" value="-30"></media-hotkey>
324
+ <media-hotkey keys="l" action="seekStep" value="30"></media-hotkey>
325
+ <media-hotkey keys="j" action="seekStep" value="-30"></media-hotkey>
291
326
  <media-gesture type="doubletap" action="seekStep" value="30" region="right"></media-gesture>
327
+ <media-gesture type="doubletap" action="seekStep" value="-30" region="left"></media-gesture>
292
328
  ```
293
329
 
294
- While you’re in there: neither packaged video skin includes skip *buttons*. Mux Player’s themes show them, so if your users expect them, add a [seek button](../reference/components/seek-button.md), which takes `seconds` and defaults to 30.
330
+ Neither packaged video skin includes skip buttons. To keep those controls from Mux Player, add a [seek button](../reference/components/seek-button.md), which takes `seconds` and defaults to 30.
295
331
 
296
- Removing a control is removing a line. That’s the trade you get for the extra setup.
332
+ To remove a control, remove it and its tooltip wrapper from the local controls layout.
297
333
 
298
- ## Read player state
334
+ ## Read and control the player
299
335
 
300
- `<mux-video>` is a real media element, so every media event you already listen for still fires on it: `play`, `timeupdate`, `ended`, `error`, and the rest. Mux Player listeners port directly. There are a few extras: `streamtypechange`, `targetlivewindowchange`, `sourcechange`, and `contentdatachange`.
336
+ `<mux-video>` is a real media element, so every media event you already listen for still fires on it: `play`, `timeupdate`, `ended`, `error`, and the rest. Keep your Mux Player listeners. `<mux-video>` also fires `streamtypechange`, `targetlivewindowchange`, `sourcechange`, and `contentdatachange`.
301
337
 
302
338
  For UI state rather than media state, use [`PlayerController`](../reference/api/player-controller.md) inside a custom element. Give it a selector for the feature you care about and it keeps your element in sync:
303
339
 
304
340
  ```js
305
- import { PlayerController, playerContext, ReactiveElement, selectTime } from '@videojs/html';
341
+ import { PlayerController, playerContext, selectTime, UIElement } from '@videojs/html';
306
342
 
307
- class MyElapsed extends ReactiveElement {
343
+ class MyElapsed extends UIElement {
308
344
  #time = new PlayerController(this, playerContext, selectTime);
345
+
346
+ update(changed) {
347
+ super.update(changed);
348
+ this.textContent = `Elapsed: ${(this.#time.value?.currentTime ?? 0).toFixed(1)} s`;
349
+ }
309
350
  }
351
+
352
+ customElements.define('my-elapsed', MyElapsed);
353
+ ```
354
+
355
+ Render it inside your existing `<video-player>` so it can read that player’s state:
356
+
357
+ ```html
358
+ <my-elapsed></my-elapsed>
310
359
  ```
311
360
 
312
361
  ### Drive playback
313
362
 
363
+ Use the [player store](../reference/api/player-store.md) for state and actions:
364
+
314
365
  | Mux Player | Video.js v10 |
315
366
  | --- | --- |
316
- | `player.play()`, `player.pause()` | the player’s `play`, `pause`, `togglePaused`, or `media.play()`, `media.pause()` |
367
+ | `player.play()`, `player.pause()` | the player’s `play` and `pause` actions, or `media.play()` and `media.pause()` |
317
368
  | `player.currentTime = 10` | the player’s `seek(10)`, or `media.currentTime = 10` |
318
- | `player.volume`, `player.muted` | the player’s `setVolume`, `toggleMuted`, or `media.volume`, `media.muted` |
369
+ | `player.volume` | Read `volume` from player state. Write it with `setVolume(value)`, which also unmutes for values above zero, or with `media.volume = value` to keep the mute state. |
370
+ | `player.muted` | `muted` in player state; write with `setMuted(value)` |
319
371
  | `player.playbackRate` | the player’s `setPlaybackRate`, or `media.playbackRate` |
320
- | `player.requestFullscreen()` | the player’s `requestFullscreen`, `exitFullscreen`, `toggleFullscreen` |
372
+ | `player.requestFullscreen()` | the player’s `requestFullscreen`, `exitFullscreen` |
321
373
  | `player.addChapters([…])` | a `<track kind="chapters">`, covered below |
322
374
 
323
- Control everything through the player: “the player’s” entries are store actions, reached the same way you read state above. Setting a standard media property directly works too — player state derives from the native media events, so the UI stays in sync either way.
375
+ Standard media properties update player state through media events. If the volume is `0`, `setMuted(false)` also sets it to `0.25`. Mux Player’s smart-unmute behavior carries over through `setMuted(false)`. To unmute and keep a zero volume, set `media.muted` directly.
376
+
377
+ Call actions on the player element’s `store` only after `player.store.target` is set, which means the media has attached. For example, wire seeking to a button:
378
+
379
+ ```html
380
+ <button id="seek-to-ten" type="button">Seek to 10 seconds</button>
381
+
382
+ <script type="module">
383
+ await customElements.whenDefined('video-player');
384
+ const player = document.querySelector('video-player');
385
+
386
+ document.querySelector('#seek-to-ten').addEventListener('click', () => {
387
+ if (!player.store.target) return;
388
+ player.store.seek(10);
389
+ });
390
+ </script>
391
+ ```
392
+
393
+ Store actions throw until the media attaches. Call fullscreen actions from a user interaction, such as a click handler.
324
394
 
325
395
  ## Which Mux media should you use?
326
396
 
327
- You can skip this section until you hit one of the two problems in it.
397
+ Choose and test the engine before migration, especially when your catalog uses DRM or TS-packaged media.
328
398
 
329
- `<mux-video>` comes in two flavors, backed by two different playback engines, and the import path chooses between them. Start with the default. The tradeoff: the `/spf` flavor is smaller and the `/hls-js` flavor is more compatible:
399
+ `<mux-video>` supports two playback engines: SPF and hls.js. Choose the engine by import path. The `/spf` import is smaller, and `/hls-js` is more compatible. The default import currently uses hls.js. Start with that default:
330
400
 
331
401
  | Import | Engine | When |
332
402
  | --- | --- | --- |
333
403
  | `.../media/mux-video` | hls.js | **The default. Start here.** |
334
- | `.../media/mux-video/spf` | SPF | You want a much smaller bundle and neither problem below applies. |
335
- | `.../media/mux-video/hls-js` | hls.js | You want to pin hls.js, and reach its instance and settings. |
404
+ | `.../media/mux-video/spf` | SPF | Your streams use fMP4/CMAF segments and fit the limitations below. |
405
+ | `.../media/mux-video/hls-js` | hls.js | Your app depends on hls.js and needs its instance or settings. |
336
406
 
337
- SPF is Video.js’s own playback engine, and it’s the reason v10 can be as small as it is. It doesn’t do two things hls.js does:
407
+ The SPF engine does not support MPEG-TS segments, raw ADTS AAC, or whole-segment AES-128 encryption. Keep the default for assets that need those formats. The SPF engine also lacks low-latency HLS support, and its DVR playback is experimental.
338
408
 
339
- - **TS-packaged media.** Some Mux assets are packaged as TS rather than CMAF. If any of your catalog is, stay on the default.
340
- - **DRM.** SPF doesn’t license protected content.
409
+ Both flavors support DRM through `source.drm`. Verify license exchange and playback with your protected assets on supported browsers before changing engines.
341
410
 
342
411
  All three imports register the same `<mux-video>` tag and accept the same source, so changing the engine is an import change. Load only one registration for that tag on a page.
343
412
 
344
- The default doesn’t promise which engine it uses, which is what leaves it free to change. Import `/hls-js` if your app depends on hls.js being the one. Otherwise take the default: it plays everything.
413
+ The default import currently uses hls.js, but its engine can change in a future release. Use `/hls-js` when your app depends on hls.js APIs. Test the chosen engine with your assets and supported browsers.
345
414
 
346
- The Mux audio component follows the same three paths, and pairs with the audio player and audio skins.
415
+ The Mux audio component has the same three import paths. Use it with the audio player and audio skins.
347
416
 
348
417
  ## Live streams
349
418
 
350
- Unlike Mux Player, you’ll have to pick a live preset yourself; it won’t switch automatically for you.
419
+ Mux Player switches to live controls automatically. In Video.js, choose the live preset yourself.
351
420
 
352
421
  Register the live preset and Mux media. From the CDN:
353
422
 
354
423
  ```html
355
- <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.4/live-video.js"></script>
356
- <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.4/media/mux-video.js"></script>
424
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0/live-video.js"></script>
425
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0/media/mux-video.js"></script>
357
426
 
358
427
  <live-video-player>
359
428
  <live-video-skin>
360
- <mux-video src="https://stream.mux.com/EcHgOK9coz5K….m3u8"></mux-video>
429
+ <mux-video src="https://stream.mux.com/YOUR_PLAYBACK_ID.m3u8"></mux-video>
361
430
  </live-video-skin>
362
431
  </live-video-player>
363
432
  ```
@@ -370,7 +439,9 @@ import '@videojs/html/live-video/skin';
370
439
  import '@videojs/html/media/mux-video';
371
440
  ```
372
441
 
373
- You get `targetLiveWindow` and `liveEdgeStart` in player state, plus a live button that jumps to the live edge. The live preset doesn’t include `streamType` state and doesn’t force a source to be live. The Mux media detects the manifest: `targetLiveWindow` is `NaN` for an on-demand or unknown source, `0` for a sliding live window, and `Infinity` for a live event with playback history. See [the live feature](../reference/api/feature-live.md).
442
+ You get `targetLiveWindow` and `liveEdgeStart` in player state, plus a live button that jumps to the live edge. The live preset doesn’t include `streamType` state and doesn’t force a source to be live. The Mux media reads the stream type from the manifest: `targetLiveWindow` is `NaN` for an on-demand or unknown source, `0` for a sliding live window, and `Infinity` for a live event with playback history. See [the live feature](../reference/api/feature-live.md).
443
+
444
+ The live skins have no time slider. To preserve DVR scrubbing, add one to custom UI or installed skin source; follow [the DVR setup](./live-streams.md#dvr-let-users-scrub-back).
374
445
 
375
446
  The live composition is narrower than the video one on purpose: it leaves out quality, audio-track, and playback-rate state. A live skin’s settings menu therefore holds captions and nothing else. If you need one of the omitted features on a live player, build your own player from a feature list rather than taking the preset’s.
376
447
 
@@ -381,14 +452,14 @@ Use [`createPlayer`](../reference/api/html-create-player.md) to build a player e
381
452
  The live skin already includes a live button. If you build your own controls, use that same component and style it to match your app. It keeps track of whether playback is live and returns viewers to the newest available point in the stream.
382
453
 
383
454
  ```html
384
- <script type="module">
385
- import '@videojs/html/ui/live-button';
386
- </script>
455
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0/ui/live-button.js"></script>
387
456
 
388
457
  <media-live-button class="station-live-button">On air</media-live-button>
389
458
  ```
390
459
 
391
- Do not rebuild this behavior from `duration` or set `currentTime` to `Infinity`.
460
+ With a bundler, import `@videojs/html/ui/live-button`. Render the button inside your custom player layout.
461
+
462
+ Do not rebuild this behavior by reading `duration` or by setting `currentTime` to `Infinity`.
392
463
 
393
464
  ### Troubleshoot live playback
394
465
 
@@ -424,61 +495,65 @@ To find the times a viewer can seek to, read `buffer.seekable`. It contains `[st
424
495
 
425
496
  ## The settings menu
426
497
 
427
- On a video player, the settings menu appears on its own when there’s something to put in it:
498
+ The video skins include a settings menu with the available quality, audio-track, captions, and playback-rate controls:
428
499
 
429
500
  | What | Component | Notes |
430
501
  | --- | --- | --- |
431
- | Quality | [Quality radio group](../reference/components/quality-radio-group.md) | Lets a viewer pick the video quality. To set the highest available quality instead, use `source.playback.maxResolution`. |
502
+ | Quality | [Quality radio group](../reference/components/quality-radio-group.md) | Lets a viewer pick the video quality. Use `source.playback.maxResolution` to cap the stream’s available resolution; it does not force playback at that resolution. |
432
503
  | Audio tracks | [Audio track radio group](../reference/components/audio-track-radio-group.md) | For multi-language audio. |
433
504
  | Captions | [Captions radio group](../reference/components/captions-radio-group.md) | Rendered by the browser. |
434
505
  | Speed | [Playback rate radio group](../reference/components/playback-rate-radio-group.md) | The rates are a fixed set — `0.2`, `0.5`, `0.7`, `1`, `1.2`, `1.5`, `1.7`, `2` — and you can’t choose your own yet ([#1404](https://github.com/videojs/v10/issues/1404)). |
435
506
 
436
- Caption *styling* is limited to the positioning custom properties the skins expose. There’s no equivalent of a text-track settings dialog.
507
+ When enabling captions without a previous selection in this player instance, `toggleSubtitles()` prefers a track matching `navigator.language`, then falls back to the first available caption or subtitle track. For an authored track that should show on load, add `default`. See [Show captions and subtitles](./captions.md).
508
+
509
+ Video.js has no viewer-facing text-track settings dialog. You can style browser-rendered captions with `::cue`.
437
510
 
438
511
  ## Chapters and cue points
439
512
 
440
- Chapters are content, not an API call. Add a chapters track inside your media and the skins segment the [time slider](../reference/components/time-slider.md) and show the chapter title on hover:
513
+ Add a chapters track with the `default` attribute inside your media. The skins then split the [time slider](../reference/components/time-slider.md) into chapter segments and show the chapter title on hover:
441
514
 
442
515
  ```html
443
- <mux-video src="https://stream.mux.com/EcHgOK9coz5K….m3u8">
516
+ <mux-video src="https://stream.mux.com/YOUR_PLAYBACK_ID.m3u8">
444
517
  <track kind="chapters" src="/chapters.vtt" default />
445
518
  </mux-video>
446
519
  ```
447
520
 
448
- There’s no `addChapters()`. If you were building that VTT on the fly, you’ll still need to, but you point the player at it instead of passing an array ([#1268](https://github.com/videojs/v10/issues/1268)).
521
+ To replace `addChapters()`, convert your chapter array to a WebVTT file and set its URL as the track’s `src` ([#1268](https://github.com/videojs/v10/issues/1268)).
449
522
 
450
523
  The time slider marks the segment containing the current playback time with `data-active`, so you can style the active segment. The player still has no active-chapter state, `chapterchange` event, or menu for jumping between chapters ([#1873](https://github.com/videojs/v10/issues/1873)). If UI outside the time slider needs the current chapter, derive it from `currentTime` and the read-only `chaptersCues` array. Cue points aren’t implemented at all ([#1442](https://github.com/videojs/v10/issues/1442)).
451
524
 
452
525
  ## Signed playback and DRM
453
526
 
454
- **Signed playback works today.** Follow Mux’s [secure video playback guide](https://www.mux.com/docs/guides/secure-video-playback) to create a signing key and generate these tokens on your server. Each token is a parameter in its own group, and Video.js checks each one’s audience before building a URL, so a token in the wrong slot produces no URL rather than a request Mux would reject:
527
+ For signed playback, follow Mux’s [secure video playback guide](https://www.mux.com/docs/guides/secure-video-playback?utm_source=videojs&utm_campaign=vjs10&utm_content=docs-content) to create a signing key and generate tokens on your server. In the example below, replace `YOUR_PLAYBACK_ID` with the signed asset’s playback ID. Replace each token placeholder with the matching server-generated token. Each token goes in its own group.
528
+
529
+ Video.js checks the audience of poster, storyboard, and DRM tokens before building their URLs. It passes playback tokens through for Mux to validate. A misplaced playback token still produces a stream request that Mux rejects:
455
530
 
456
531
  ```js
457
532
  {
458
- playbackId: 'EcHgOK9coz5K…',
459
- playback: { token: '…' }, // audience: v
460
- poster: { token: '…' }, // audience: t
461
- storyboard: { token: '…' }, // audience: s
533
+ playbackId: 'YOUR_PLAYBACK_ID',
534
+ playback: { token: 'PLAYBACK_TOKEN' }, // audience: v
535
+ poster: { token: 'THUMBNAIL_TOKEN' }, // audience: t
536
+ storyboard: { token: 'STORYBOARD_TOKEN' }, // audience: s
462
537
  }
463
538
  ```
464
539
 
465
540
  Signed playback needs its own poster token even when the Mux media would otherwise derive the poster from the playback ID. Put Mux’s thumbnail token at `source.poster.token`. If it is missing or has the wrong audience, the media cannot build a poster URL.
466
541
 
467
- Neither player refreshes tokens. Mux Player at least notices an expired one and shows a friendly message; Video.js doesn’t surface that yet ([#1432](https://github.com/videojs/v10/issues/1432)).
542
+ Neither player refreshes tokens. Mux Player detects an expired token and shows a message. Video.js does not report expired tokens yet ([#1432](https://github.com/videojs/v10/issues/1432)).
468
543
 
469
- **DRM works on the default Mux media** and on native HLS. Hand it a license token and Video.js derives the FairPlay, Widevine, and PlayReady license servers from it, along with the FairPlay application certificate:
544
+ For DRM on either Mux media flavor, supply a license token. Video.js derives the FairPlay, Widevine, and PlayReady license servers and the FairPlay application certificate:
470
545
 
471
546
  ```js
472
547
  {
473
- playbackId: 'EcHgOK9coz5K…',
474
- playback: { token: '…' },
475
- drm: { token: '…' }, // audience: d
548
+ playbackId: 'YOUR_PLAYBACK_ID',
549
+ playback: { token: 'PLAYBACK_TOKEN' },
550
+ drm: { token: 'DRM_TOKEN' }, // audience: d
476
551
  }
477
552
  ```
478
553
 
479
- DRM playback is always signed, so `drm.token` needs a `playback.token` beside it. For content Mux doesn’t license, name license servers yourself, keyed by key system; yours win over the derived ones key by key.
554
+ DRM playback is always signed, so set both `source.drm.token` and `source.playback.token`. For content Mux does not license, add your own license servers to `source.drm`, keyed by key system. For each key system you configure, your server replaces the derived server.
480
555
 
481
- The SPF flavor doesn’t license DRM ([#1776](https://github.com/videojs/v10/issues/1776)), which is one of the two reasons to stay on the default import.
556
+ The SPF flavor supports FairPlay, Widevine, and PlayReady through its EME license pipeline. DRM availability still depends on the browser, key system, and asset configuration.
482
557
 
483
558
  ## Access the media and playback engine
484
559
 
@@ -488,23 +563,23 @@ The SPF flavor doesn’t license DRM ([#1776](https://github.com/videojs/v10/iss
488
563
  | the hls.js instance | `.engine` on the `<mux-video>` element |
489
564
  | `prefer-playback` | `source.preferPlayback`, or pick [native HLS](../reference/components/native-hls-video.md) outright |
490
565
 
491
- `source.preferPlayback` is the closest mapping: set it to `'native'` and the Mux media hands playback to the browser’s own HLS support instead of building an MSE pipeline, which is what `prefer-playback="native"` did.
566
+ `source.preferPlayback` is the closest mapping. To match `prefer-playback="native"`, set it to `'native'`. The Mux media then uses the browser’s built-in HLS support instead of building an MSE pipeline.
492
567
 
493
568
  > **Caution: Treat engine access as an escape hatch**
494
569
  >
495
570
  > Reading `.engine` couples your app to hls.js and the `/hls-js` flavor. Prefer Video.js state, events, and media APIs when they cover your use case. Reach into the engine only for functionality Video.js doesn’t expose.
496
571
 
497
- Program Date Time has no convenience surface: no `getStartDate()`, no `currentPdt`. The player exposes `liveEdgeStart` and `targetLiveWindow`; for PDT itself, reach into the engine.
572
+ Video.js has no Program Date Time (PDT) helpers such as `getStartDate()` or `currentPdt`. The player exposes `liveEdgeStart` and `targetLiveWindow`. To read PDT, use the playback engine.
498
573
 
499
574
  ## Known gaps
500
575
 
501
- Ordered roughly by how many migrations they’ll touch.
576
+ Check these limitations against your required features:
502
577
 
503
- - Two skins, against Mux Player’s five themes, and no runtime theme switch. That’s a deliberate trade, fewer skins whose files you can add to your project, but it’s a real difference if you shipped `theme="classic"`.
578
+ - The two packaged skins do not reproduce Mux Player’s themes, and there is no runtime theme switch. Plan skin customization when preserving a theme such as `classic`.
504
579
  - Lazy loading (`loading="viewport|page"`) has no equivalent.
505
- - The controls auto-hide delay isn’t configurable ([#1728](https://github.com/videojs/v10/issues/1728)). Always-visible controls are available through `visibility="always"` on the controls component in a custom layout or a skin layout in your project.
506
- - Nothing persists between sessions: volume, captions language, speed, quality. That’s out of scope for GA ([#944](https://github.com/videojs/v10/issues/944)). Default subtitle language is tracked at [#1423](https://github.com/videojs/v10/issues/1423), though Mux users can set `source.playback.defaultSubtitlesLang` and let the HLS playlist decide.
507
- - Smaller conveniences without homes yet: debug mode ([#1406](https://github.com/videojs/v10/issues/1406)) and autoplay with a muted fallback ([#1039](https://github.com/videojs/v10/issues/1039)). Unmuting from zero volume already restores a sensible level, so Mux Player’s smart-unmute behavior carries over.
580
+ - The controls auto-hide delay isn’t configurable ([#1728](https://github.com/videojs/v10/issues/1728)). For always-visible controls, set `visibility="always"` on the controls component in a custom layout or installed skin source.
581
+ - Player preferences such as volume, captions language, speed, and quality are not persisted automatically ([#944](https://github.com/videojs/v10/issues/944)). Mux users can set `source.playback.defaultSubtitlesLang` so the HLS playlist sets the default subtitle language. For application-managed persistence, follow [Remember user preferences](./user-preferences.md).
582
+ - Debug mode has no equivalent yet ([#1406](https://github.com/videojs/v10/issues/1406)).
508
583
 
509
584
  ## See also
510
585