@videojs/html 10.0.0-rc.4 → 10.0.0-rc.5

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 (1020) hide show
  1. package/dist/default/define/audio/compat-skin.css +1923 -0
  2. package/dist/default/define/audio/compat-skin.js +6 -0
  3. package/dist/default/define/audio/compat-skin2.js +4 -0
  4. package/dist/default/define/audio/neutral-skin.css +1855 -0
  5. package/dist/default/define/audio/neutral-skin.js +6 -0
  6. package/dist/default/define/audio/neutral-skin2.js +4 -0
  7. package/dist/default/define/audio/{minimal-ui.js → neutral-ui.js} +1 -1
  8. package/dist/default/define/audio/skin.css +1220 -1411
  9. package/dist/default/define/audio/skin2.js +1 -1
  10. package/dist/default/define/background/skin.css +8 -19
  11. package/dist/default/define/global.css +5 -21
  12. package/dist/default/define/live-audio/compat-skin.css +1708 -0
  13. package/dist/default/define/live-audio/compat-skin.js +6 -0
  14. package/dist/default/define/live-audio/compat-skin2.js +4 -0
  15. package/dist/default/define/live-audio/neutral-skin.css +1270 -0
  16. package/dist/default/define/live-audio/neutral-skin.js +6 -0
  17. package/dist/default/define/live-audio/neutral-skin2.js +4 -0
  18. package/dist/default/define/live-audio/{minimal-ui.js → neutral-ui.js} +1 -1
  19. package/dist/default/define/live-audio/skin.css +849 -959
  20. package/dist/default/define/live-audio/skin2.js +1 -1
  21. package/dist/default/define/live-video/compat-skin.css +2251 -0
  22. package/dist/default/define/live-video/compat-skin.js +6 -0
  23. package/dist/default/define/live-video/compat-skin2.js +4 -0
  24. package/dist/default/define/live-video/neutral-skin.css +2101 -0
  25. package/dist/default/define/live-video/neutral-skin.js +6 -0
  26. package/dist/default/define/live-video/neutral-skin2.js +4 -0
  27. package/dist/default/define/live-video/{minimal-ui.js → neutral-ui.js} +1 -1
  28. package/dist/default/define/live-video/skin.css +1565 -1784
  29. package/dist/default/define/live-video/skin2.js +1 -1
  30. package/dist/default/define/media/dash-video.js +5 -1
  31. package/dist/default/define/media/shaka-video.js +1 -0
  32. package/dist/default/define/shadow.css +2 -12
  33. package/dist/default/define/video/compat-skin.css +2529 -0
  34. package/dist/default/define/video/compat-skin.js +6 -0
  35. package/dist/default/define/video/compat-skin2.js +4 -0
  36. package/dist/default/define/video/neutral-skin.css +2849 -0
  37. package/dist/default/define/video/neutral-skin.js +6 -0
  38. package/dist/default/define/video/neutral-skin2.js +4 -0
  39. package/dist/default/define/video/{minimal-ui.js → neutral-ui.js} +1 -1
  40. package/dist/default/define/video/skin.css +2046 -2454
  41. package/dist/default/define/video/skin2.js +1 -1
  42. package/dist/default/extensions/google-cast/extension.js +18 -17
  43. package/dist/default/extensions/mux-data/extension.js +24 -24
  44. package/dist/default/extensions/player-extension-element.js +49 -0
  45. package/dist/default/i18n/index.js +2 -2
  46. package/dist/default/i18n/locale.js +10 -2
  47. package/dist/default/i18n/provider-element.js +1 -0
  48. package/dist/default/i18n/provider-mixin.js +11 -9
  49. package/dist/default/i18n/render-text.js +5 -1
  50. package/dist/default/i18n/text/airplay.js +1 -0
  51. package/dist/default/i18n/text/buttons.js +1 -0
  52. package/dist/default/i18n/text/captions.js +1 -0
  53. package/dist/default/i18n/text/cast.js +1 -0
  54. package/dist/default/i18n/text/common.js +1 -0
  55. package/dist/default/i18n/text/container.js +1 -0
  56. package/dist/default/i18n/text/errors.js +1 -0
  57. package/dist/default/i18n/text/fullscreen.js +1 -0
  58. package/dist/default/i18n/text/live.js +1 -0
  59. package/dist/default/i18n/text/menu.js +1 -0
  60. package/dist/default/i18n/text/pip.js +1 -0
  61. package/dist/default/i18n/text/playback.js +1 -0
  62. package/dist/default/i18n/text/seek.js +1 -0
  63. package/dist/default/i18n/text/slider.js +1 -0
  64. package/dist/default/i18n/text/status.js +1 -0
  65. package/dist/default/i18n/text/time.js +1 -0
  66. package/dist/default/i18n/text/volume.js +1 -0
  67. package/dist/default/icons/compat/index.js +26 -0
  68. package/dist/default/icons/dist/element/compat/icons.js +30 -0
  69. package/dist/default/icons/dist/element/{minimal → compat}/index.js +2 -2
  70. package/dist/default/icons/dist/element/index.js +2 -1
  71. package/dist/default/icons/dist/element/{minimal → neutral}/icons.js +1 -1
  72. package/dist/default/icons/dist/element/neutral/index.js +8 -0
  73. package/dist/default/icons/dist/html/compat/airplay-enter.js +4 -0
  74. package/dist/default/icons/dist/html/compat/airplay-exit.js +4 -0
  75. package/dist/default/icons/dist/html/compat/captions-off.js +4 -0
  76. package/dist/default/icons/dist/html/compat/captions-on.js +4 -0
  77. package/dist/default/icons/dist/html/compat/cast-enter.js +4 -0
  78. package/dist/default/icons/dist/html/compat/cast-exit.js +4 -0
  79. package/dist/default/icons/dist/html/compat/check.js +4 -0
  80. package/dist/default/icons/dist/html/compat/chevron.js +4 -0
  81. package/dist/default/icons/dist/html/compat/fullscreen-enter.js +4 -0
  82. package/dist/default/icons/dist/html/compat/fullscreen-exit.js +4 -0
  83. package/dist/default/icons/dist/html/compat/gear.js +4 -0
  84. package/dist/default/icons/dist/html/compat/pause.js +4 -0
  85. package/dist/default/icons/dist/html/compat/pip-enter.js +4 -0
  86. package/dist/default/icons/dist/html/compat/pip-exit.js +4 -0
  87. package/dist/default/icons/dist/html/compat/play.js +4 -0
  88. package/dist/default/icons/dist/html/compat/quality.js +4 -0
  89. package/dist/default/icons/dist/html/compat/restart.js +4 -0
  90. package/dist/default/icons/dist/html/compat/seek.js +4 -0
  91. package/dist/default/icons/dist/html/compat/speech.js +4 -0
  92. package/dist/default/icons/dist/html/compat/speed.js +4 -0
  93. package/dist/default/icons/dist/html/{minimal → compat}/spinner.js +1 -1
  94. package/dist/default/icons/dist/html/compat/switches.js +4 -0
  95. package/dist/default/icons/dist/html/compat/volume-high.js +4 -0
  96. package/dist/default/icons/dist/html/compat/volume-low.js +4 -0
  97. package/dist/default/icons/dist/html/compat/volume-off.js +4 -0
  98. package/dist/default/icons/dist/html/{minimal → neutral}/airplay-enter.js +1 -1
  99. package/dist/default/icons/dist/html/{minimal → neutral}/airplay-exit.js +1 -1
  100. package/dist/default/icons/dist/html/{minimal → neutral}/captions-off.js +1 -1
  101. package/dist/default/icons/dist/html/{minimal → neutral}/captions-on.js +1 -1
  102. package/dist/default/icons/dist/html/{minimal → neutral}/cast-enter.js +1 -1
  103. package/dist/default/icons/dist/html/{minimal → neutral}/cast-exit.js +1 -1
  104. package/dist/default/icons/dist/html/{minimal → neutral}/check.js +1 -1
  105. package/dist/default/icons/dist/html/{minimal → neutral}/chevron.js +1 -1
  106. package/dist/default/icons/dist/html/{minimal → neutral}/fullscreen-enter.js +1 -1
  107. package/dist/default/icons/dist/html/{minimal → neutral}/fullscreen-exit.js +1 -1
  108. package/dist/default/icons/dist/html/{minimal → neutral}/gear.js +1 -1
  109. package/dist/default/icons/dist/html/{minimal → neutral}/pause.js +1 -1
  110. package/dist/default/icons/dist/html/{minimal → neutral}/pip-enter.js +1 -1
  111. package/dist/default/icons/dist/html/{minimal → neutral}/pip-exit.js +1 -1
  112. package/dist/default/icons/dist/html/{minimal → neutral}/play.js +1 -1
  113. package/dist/default/icons/dist/html/{minimal → neutral}/quality.js +1 -1
  114. package/dist/default/icons/dist/html/{minimal → neutral}/restart.js +1 -1
  115. package/dist/default/icons/dist/html/{minimal → neutral}/seek.js +1 -1
  116. package/dist/default/icons/dist/html/{minimal → neutral}/speech.js +1 -1
  117. package/dist/default/icons/dist/html/{minimal → neutral}/speed.js +1 -1
  118. package/dist/default/icons/dist/html/neutral/spinner.js +4 -0
  119. package/dist/default/icons/dist/html/{minimal → neutral}/switches.js +1 -1
  120. package/dist/default/icons/dist/html/{minimal → neutral}/volume-high.js +1 -1
  121. package/dist/default/icons/dist/html/{minimal → neutral}/volume-low.js +1 -1
  122. package/dist/default/icons/dist/html/{minimal → neutral}/volume-off.js +1 -1
  123. package/dist/default/icons/element/compat/index.js +1 -0
  124. package/dist/default/icons/element/neutral/index.js +1 -0
  125. package/dist/default/icons/neutral/index.js +26 -0
  126. package/dist/default/index.js +4 -3
  127. package/dist/default/internal/skins/compat-audio/register.js +70 -0
  128. package/dist/default/internal/skins/compat-audio/skin.css +1891 -0
  129. package/dist/default/internal/skins/compat-audio/template.js +215 -0
  130. package/dist/default/internal/skins/compat-live-audio/register.js +50 -0
  131. package/dist/default/internal/skins/compat-live-audio/skin.css +1676 -0
  132. package/dist/default/internal/skins/compat-live-audio/template.js +112 -0
  133. package/dist/default/internal/skins/compat-live-video/register.js +86 -0
  134. package/dist/default/internal/skins/compat-live-video/skin.css +2219 -0
  135. package/dist/default/internal/skins/compat-live-video/template.js +237 -0
  136. package/dist/default/internal/skins/compat-video/register.js +115 -0
  137. package/dist/default/internal/skins/compat-video/skin.css +2497 -0
  138. package/dist/default/internal/skins/compat-video/template.js +457 -0
  139. package/dist/default/internal/skins/default-audio/register.js +8 -8
  140. package/dist/default/internal/skins/default-audio/skin.css +1213 -1365
  141. package/dist/default/internal/skins/default-live-audio/register.js +4 -4
  142. package/dist/default/internal/skins/default-live-audio/skin.css +842 -913
  143. package/dist/default/internal/skins/default-live-video/register.js +8 -8
  144. package/dist/default/internal/skins/default-live-video/skin.css +1548 -1728
  145. package/dist/default/internal/skins/default-video/register.js +13 -13
  146. package/dist/default/internal/skins/default-video/skin.css +2034 -2403
  147. package/dist/default/internal/skins/{minimal-audio → neutral-audio}/register.js +20 -20
  148. package/dist/default/internal/skins/neutral-audio/skin.css +1823 -0
  149. package/dist/default/internal/skins/{minimal-audio → neutral-audio}/template.js +24 -24
  150. package/dist/default/internal/skins/{minimal-live-audio → neutral-live-audio}/register.js +13 -13
  151. package/dist/default/internal/skins/neutral-live-audio/skin.css +1238 -0
  152. package/dist/default/internal/skins/{minimal-live-audio → neutral-live-audio}/template.js +14 -14
  153. package/dist/default/internal/skins/{minimal-live-video → neutral-live-video}/register.js +28 -28
  154. package/dist/default/internal/skins/neutral-live-video/skin.css +2069 -0
  155. package/dist/default/internal/skins/{minimal-live-video → neutral-live-video}/template.js +47 -47
  156. package/dist/default/internal/skins/{minimal-video → neutral-video}/register.js +40 -40
  157. package/dist/default/internal/skins/neutral-video/skin.css +2817 -0
  158. package/dist/default/internal/skins/{minimal-video → neutral-video}/template.js +75 -75
  159. package/dist/default/player/context.js +9 -1
  160. package/dist/default/player/create-player.js +2 -1
  161. package/dist/default/player/element.js +47 -10
  162. package/dist/default/presets/audio/compat-skin.js +19 -0
  163. package/dist/default/presets/audio/index.js +3 -2
  164. package/dist/default/presets/audio/neutral-skin.js +19 -0
  165. package/dist/default/presets/live-audio/compat-skin.js +19 -0
  166. package/dist/default/presets/live-audio/index.js +3 -2
  167. package/dist/default/presets/live-audio/neutral-skin.js +19 -0
  168. package/dist/default/presets/live-video/compat-skin.js +19 -0
  169. package/dist/default/presets/live-video/index.js +3 -2
  170. package/dist/default/presets/live-video/neutral-skin.js +19 -0
  171. package/dist/default/presets/video/compat-skin.js +19 -0
  172. package/dist/default/presets/video/index.js +3 -2
  173. package/dist/default/presets/video/neutral-skin.js +19 -0
  174. package/dist/default/store/media-attach-mixin.js +2 -0
  175. package/dist/default/ui/airplay-button/element.js +1 -1
  176. package/dist/default/ui/buffering-indicator/element.js +4 -0
  177. package/dist/default/ui/dialog/context.js +1 -0
  178. package/dist/default/ui/dialog/element.js +4 -2
  179. package/dist/default/ui/media-button-element.js +7 -6
  180. package/dist/default/ui/media-ui-element.js +6 -1
  181. package/dist/default/ui/menu/context.js +2 -0
  182. package/dist/default/ui/play-button/element.js +1 -1
  183. package/dist/default/ui/playback-rate-button/element.js +4 -2
  184. package/dist/default/ui/popover/element.js +4 -2
  185. package/dist/default/ui/radio-group/context.js +1 -0
  186. package/dist/default/ui/seek-indicator/element.js +7 -1
  187. package/dist/default/ui/slider/context.js +1 -0
  188. package/dist/default/ui/status-indicator/element.js +14 -1
  189. package/dist/default/ui/text/element.js +1 -0
  190. package/dist/default/ui/thumbnail/element.js +3 -2
  191. package/dist/default/ui/tooltip/context.js +1 -0
  192. package/dist/default/ui/tooltip/element.js +4 -2
  193. package/dist/default/ui/volume-popover/element.js +1 -1
  194. package/dist/default/ui/volume-slider/element.js +1 -1
  195. package/dist/default/version.js +27 -0
  196. package/dist/dev/define/audio/compat-skin.css +1923 -0
  197. package/dist/dev/define/audio/compat-skin.d.ts +1 -0
  198. package/dist/dev/define/audio/compat-skin.js +8 -0
  199. package/dist/dev/define/audio/compat-skin.js.map +1 -0
  200. package/dist/dev/define/audio/compat-skin2.js +6 -0
  201. package/dist/dev/define/audio/compat-skin2.js.map +1 -0
  202. package/dist/dev/define/audio/neutral-skin.css +1855 -0
  203. package/dist/dev/define/audio/neutral-skin.d.ts +1 -0
  204. package/dist/dev/define/audio/neutral-skin.js +8 -0
  205. package/dist/dev/define/audio/neutral-skin.js.map +1 -0
  206. package/dist/dev/define/audio/neutral-skin2.js +6 -0
  207. package/dist/dev/define/audio/neutral-skin2.js.map +1 -0
  208. package/dist/dev/define/audio/{minimal-ui.js → neutral-ui.js} +2 -2
  209. package/dist/dev/define/audio/{minimal-ui.js.map → neutral-ui.js.map} +1 -1
  210. package/dist/dev/define/audio/skin.css +1220 -1411
  211. package/dist/dev/define/audio/skin2.js +1 -1
  212. package/dist/dev/define/audio/skin2.js.map +1 -1
  213. package/dist/dev/define/background/skin.css +8 -19
  214. package/dist/dev/define/global.css +5 -21
  215. package/dist/dev/define/live-audio/compat-skin.css +1708 -0
  216. package/dist/dev/define/live-audio/compat-skin.d.ts +1 -0
  217. package/dist/dev/define/live-audio/compat-skin.js +8 -0
  218. package/dist/dev/define/live-audio/compat-skin.js.map +1 -0
  219. package/dist/dev/define/live-audio/compat-skin2.js +6 -0
  220. package/dist/dev/define/live-audio/compat-skin2.js.map +1 -0
  221. package/dist/dev/define/live-audio/neutral-skin.css +1270 -0
  222. package/dist/dev/define/live-audio/neutral-skin.d.ts +1 -0
  223. package/dist/dev/define/live-audio/neutral-skin.js +8 -0
  224. package/dist/dev/define/live-audio/neutral-skin.js.map +1 -0
  225. package/dist/dev/define/live-audio/neutral-skin2.js +6 -0
  226. package/dist/dev/define/live-audio/neutral-skin2.js.map +1 -0
  227. package/dist/dev/define/live-audio/{minimal-ui.js → neutral-ui.js} +2 -2
  228. package/dist/dev/define/live-audio/{minimal-ui.js.map → neutral-ui.js.map} +1 -1
  229. package/dist/dev/define/live-audio/skin.css +849 -959
  230. package/dist/dev/define/live-audio/skin2.js +1 -1
  231. package/dist/dev/define/live-audio/skin2.js.map +1 -1
  232. package/dist/dev/define/live-video/compat-skin.css +2251 -0
  233. package/dist/dev/define/live-video/compat-skin.d.ts +1 -0
  234. package/dist/dev/define/live-video/compat-skin.js +8 -0
  235. package/dist/dev/define/live-video/compat-skin.js.map +1 -0
  236. package/dist/dev/define/live-video/compat-skin2.js +6 -0
  237. package/dist/dev/define/live-video/compat-skin2.js.map +1 -0
  238. package/dist/dev/define/live-video/neutral-skin.css +2101 -0
  239. package/dist/dev/define/live-video/neutral-skin.d.ts +1 -0
  240. package/dist/dev/define/live-video/neutral-skin.js +8 -0
  241. package/dist/dev/define/live-video/neutral-skin.js.map +1 -0
  242. package/dist/dev/define/live-video/neutral-skin2.js +6 -0
  243. package/dist/dev/define/live-video/neutral-skin2.js.map +1 -0
  244. package/dist/dev/define/live-video/{minimal-ui.js → neutral-ui.js} +2 -2
  245. package/dist/dev/define/live-video/{minimal-ui.js.map → neutral-ui.js.map} +1 -1
  246. package/dist/dev/define/live-video/skin.css +1565 -1784
  247. package/dist/dev/define/live-video/skin2.js +1 -1
  248. package/dist/dev/define/live-video/skin2.js.map +1 -1
  249. package/dist/dev/define/media/background-video.d.ts +1 -2
  250. package/dist/dev/define/media/cloudflare-video.d.ts +3 -2
  251. package/dist/dev/define/media/cloudflare-video.js.map +1 -1
  252. package/dist/dev/define/media/dash-video.d.ts +8 -3
  253. package/dist/dev/define/media/dash-video.js +5 -1
  254. package/dist/dev/define/media/dash-video.js.map +1 -1
  255. package/dist/dev/define/media/hls-audio.d.ts +1 -2
  256. package/dist/dev/define/media/hls-background-video.d.ts +1 -2
  257. package/dist/dev/define/media/hls-video.d.ts +1 -2
  258. package/dist/dev/define/media/hlsjs-video.d.ts +3 -2
  259. package/dist/dev/define/media/hlsjs-video.js.map +1 -1
  260. package/dist/dev/define/media/mux-audio/hls-js.d.ts +3 -2
  261. package/dist/dev/define/media/mux-audio/hls-js.js.map +1 -1
  262. package/dist/dev/define/media/mux-audio/index.d.ts +2 -2
  263. package/dist/dev/define/media/mux-audio/spf.d.ts +3 -2
  264. package/dist/dev/define/media/mux-audio/spf.js.map +1 -1
  265. package/dist/dev/define/media/mux-background-video.d.ts +1 -2
  266. package/dist/dev/define/media/mux-video/hls-js.d.ts +3 -2
  267. package/dist/dev/define/media/mux-video/hls-js.js.map +1 -1
  268. package/dist/dev/define/media/mux-video/index.d.ts +2 -2
  269. package/dist/dev/define/media/mux-video/spf.d.ts +3 -2
  270. package/dist/dev/define/media/mux-video/spf.js.map +1 -1
  271. package/dist/dev/define/media/native-hls-video.d.ts +3 -2
  272. package/dist/dev/define/media/native-hls-video.js.map +1 -1
  273. package/dist/dev/define/media/shaka-video.d.ts +4 -2
  274. package/dist/dev/define/media/shaka-video.js +1 -0
  275. package/dist/dev/define/media/shaka-video.js.map +1 -1
  276. package/dist/dev/define/media/spotify-audio.d.ts +3 -2
  277. package/dist/dev/define/media/spotify-audio.js.map +1 -1
  278. package/dist/dev/define/media/tiktok-video.d.ts +3 -2
  279. package/dist/dev/define/media/tiktok-video.js.map +1 -1
  280. package/dist/dev/define/media/twitch-video.d.ts +3 -2
  281. package/dist/dev/define/media/twitch-video.js.map +1 -1
  282. package/dist/dev/define/media/vimeo-video.d.ts +3 -2
  283. package/dist/dev/define/media/vimeo-video.js.map +1 -1
  284. package/dist/dev/define/media/wistia-video.d.ts +3 -2
  285. package/dist/dev/define/media/wistia-video.js.map +1 -1
  286. package/dist/dev/define/media/youtube-video.d.ts +3 -2
  287. package/dist/dev/define/media/youtube-video.js.map +1 -1
  288. package/dist/dev/define/shadow.css +2 -12
  289. package/dist/dev/define/ui/menu-radio-group.d.ts +1 -0
  290. package/dist/dev/define/ui/menu.d.ts +1 -0
  291. package/dist/dev/define/ui/popover.d.ts +1 -0
  292. package/dist/dev/define/video/compat-skin.css +2529 -0
  293. package/dist/dev/define/video/compat-skin.d.ts +1 -0
  294. package/dist/dev/define/video/compat-skin.js +8 -0
  295. package/dist/dev/define/video/compat-skin.js.map +1 -0
  296. package/dist/dev/define/video/compat-skin2.js +6 -0
  297. package/dist/dev/define/video/compat-skin2.js.map +1 -0
  298. package/dist/dev/define/video/neutral-skin.css +2849 -0
  299. package/dist/dev/define/video/neutral-skin.d.ts +1 -0
  300. package/dist/dev/define/video/neutral-skin.js +8 -0
  301. package/dist/dev/define/video/neutral-skin.js.map +1 -0
  302. package/dist/dev/define/video/neutral-skin2.js +6 -0
  303. package/dist/dev/define/video/neutral-skin2.js.map +1 -0
  304. package/dist/dev/define/video/{minimal-ui.js → neutral-ui.js} +2 -2
  305. package/dist/dev/define/video/{minimal-ui.js.map → neutral-ui.js.map} +1 -1
  306. package/dist/dev/define/video/skin.css +2046 -2454
  307. package/dist/dev/define/video/skin2.js +1 -1
  308. package/dist/dev/define/video/skin2.js.map +1 -1
  309. package/dist/dev/extensions/google-cast/extension.d.ts +8 -7
  310. package/dist/dev/extensions/google-cast/extension.js +18 -17
  311. package/dist/dev/extensions/google-cast/extension.js.map +1 -1
  312. package/dist/dev/extensions/mux-data/extension.d.ts +6 -6
  313. package/dist/dev/extensions/mux-data/extension.js +24 -24
  314. package/dist/dev/extensions/mux-data/extension.js.map +1 -1
  315. package/dist/dev/extensions/player-extension-element.d.ts +30 -0
  316. package/dist/dev/extensions/player-extension-element.js +51 -0
  317. package/dist/dev/extensions/player-extension-element.js.map +1 -0
  318. package/dist/dev/i18n/context.d.ts +4 -5
  319. package/dist/dev/i18n/controller.d.ts +3 -4
  320. package/dist/dev/i18n/controller.js.map +1 -1
  321. package/dist/dev/i18n/create-i18n.d.ts +3 -4
  322. package/dist/dev/i18n/index.d.ts +2 -2
  323. package/dist/dev/i18n/index.js +2 -2
  324. package/dist/dev/i18n/locale.d.ts +12 -5
  325. package/dist/dev/i18n/locale.js +10 -2
  326. package/dist/dev/i18n/locale.js.map +1 -1
  327. package/dist/dev/i18n/provider-element.d.ts +4 -3
  328. package/dist/dev/i18n/provider-element.js +1 -0
  329. package/dist/dev/i18n/provider-element.js.map +1 -1
  330. package/dist/dev/i18n/provider-mixin.d.ts +1 -2
  331. package/dist/dev/i18n/provider-mixin.js +11 -9
  332. package/dist/dev/i18n/provider-mixin.js.map +1 -1
  333. package/dist/dev/i18n/render-text.d.ts +6 -3
  334. package/dist/dev/i18n/render-text.js +5 -1
  335. package/dist/dev/i18n/render-text.js.map +1 -1
  336. package/dist/dev/i18n/text/airplay.d.ts +1 -0
  337. package/dist/dev/i18n/text/airplay.js +1 -0
  338. package/dist/dev/i18n/text/buttons.d.ts +1 -0
  339. package/dist/dev/i18n/text/buttons.js +1 -0
  340. package/dist/dev/i18n/text/captions.d.ts +1 -0
  341. package/dist/dev/i18n/text/captions.js +1 -0
  342. package/dist/dev/i18n/text/cast.d.ts +1 -0
  343. package/dist/dev/i18n/text/cast.js +1 -0
  344. package/dist/dev/i18n/text/common.d.ts +1 -0
  345. package/dist/dev/i18n/text/common.js +1 -0
  346. package/dist/dev/i18n/text/container.d.ts +1 -0
  347. package/dist/dev/i18n/text/container.js +1 -0
  348. package/dist/dev/i18n/text/errors.d.ts +1 -0
  349. package/dist/dev/i18n/text/errors.js +1 -0
  350. package/dist/dev/i18n/text/fullscreen.d.ts +1 -0
  351. package/dist/dev/i18n/text/fullscreen.js +1 -0
  352. package/dist/dev/i18n/text/live.d.ts +1 -0
  353. package/dist/dev/i18n/text/live.js +1 -0
  354. package/dist/dev/i18n/text/menu.d.ts +1 -0
  355. package/dist/dev/i18n/text/menu.js +1 -0
  356. package/dist/dev/i18n/text/pip.d.ts +1 -0
  357. package/dist/dev/i18n/text/pip.js +1 -0
  358. package/dist/dev/i18n/text/playback.d.ts +1 -0
  359. package/dist/dev/i18n/text/playback.js +1 -0
  360. package/dist/dev/i18n/text/seek.d.ts +1 -0
  361. package/dist/dev/i18n/text/seek.js +1 -0
  362. package/dist/dev/i18n/text/slider.d.ts +1 -0
  363. package/dist/dev/i18n/text/slider.js +1 -0
  364. package/dist/dev/i18n/text/status.d.ts +1 -0
  365. package/dist/dev/i18n/text/status.js +1 -0
  366. package/dist/dev/i18n/text/time.d.ts +1 -0
  367. package/dist/dev/i18n/text/time.js +1 -0
  368. package/dist/dev/i18n/text/volume.d.ts +1 -0
  369. package/dist/dev/i18n/text/volume.js +1 -0
  370. package/dist/dev/i18n/text-mixin.d.ts +1 -2
  371. package/dist/dev/i18n/text-mixin.js.map +1 -1
  372. package/dist/dev/i18n/types.d.ts +2 -3
  373. package/dist/dev/icons/{minimal → compat}/index.d.ts +1 -1
  374. package/dist/dev/icons/compat/index.js +26 -0
  375. package/dist/dev/icons/dist/element/base.d.ts +1 -2
  376. package/dist/dev/icons/dist/element/base.js.map +1 -1
  377. package/dist/dev/icons/dist/element/compat/icons.js +32 -0
  378. package/dist/dev/icons/dist/element/compat/icons.js.map +1 -0
  379. package/dist/dev/icons/dist/element/{minimal → compat}/index.js +2 -2
  380. package/dist/dev/icons/dist/element/compat/index.js.map +1 -0
  381. package/dist/dev/icons/dist/element/index.js +2 -1
  382. package/dist/dev/icons/dist/element/index.js.map +1 -1
  383. package/dist/dev/icons/dist/element/{minimal → neutral}/icons.js +1 -1
  384. package/dist/dev/icons/dist/element/{minimal → neutral}/icons.js.map +1 -1
  385. package/dist/dev/icons/dist/element/neutral/index.d.ts +1 -0
  386. package/dist/dev/icons/dist/element/neutral/index.js +10 -0
  387. package/dist/dev/icons/dist/element/{minimal → neutral}/index.js.map +1 -1
  388. package/dist/dev/icons/dist/html/compat/airplay-enter.js +6 -0
  389. package/dist/dev/icons/dist/html/compat/airplay-enter.js.map +1 -0
  390. package/dist/dev/icons/dist/html/compat/airplay-exit.js +6 -0
  391. package/dist/dev/icons/dist/html/compat/airplay-exit.js.map +1 -0
  392. package/dist/dev/icons/dist/html/compat/captions-off.js +6 -0
  393. package/dist/dev/icons/dist/html/compat/captions-off.js.map +1 -0
  394. package/dist/dev/icons/dist/html/compat/captions-on.js +6 -0
  395. package/dist/dev/icons/dist/html/compat/captions-on.js.map +1 -0
  396. package/dist/dev/icons/dist/html/compat/cast-enter.js +6 -0
  397. package/dist/dev/icons/dist/html/compat/cast-enter.js.map +1 -0
  398. package/dist/dev/icons/dist/html/compat/cast-exit.js +6 -0
  399. package/dist/dev/icons/dist/html/compat/cast-exit.js.map +1 -0
  400. package/dist/dev/icons/dist/html/compat/check.js +6 -0
  401. package/dist/dev/icons/dist/html/compat/check.js.map +1 -0
  402. package/dist/dev/icons/dist/html/compat/chevron.js +6 -0
  403. package/dist/dev/icons/dist/html/compat/chevron.js.map +1 -0
  404. package/dist/dev/icons/dist/html/compat/fullscreen-enter.js +6 -0
  405. package/dist/dev/icons/dist/html/compat/fullscreen-enter.js.map +1 -0
  406. package/dist/dev/icons/dist/html/compat/fullscreen-exit.js +6 -0
  407. package/dist/dev/icons/dist/html/compat/fullscreen-exit.js.map +1 -0
  408. package/dist/dev/icons/dist/html/compat/gear.js +6 -0
  409. package/dist/dev/icons/dist/html/compat/gear.js.map +1 -0
  410. package/dist/dev/icons/dist/html/compat/index.d.ts +28 -0
  411. package/dist/dev/icons/dist/html/compat/pause.js +6 -0
  412. package/dist/dev/icons/dist/html/compat/pause.js.map +1 -0
  413. package/dist/dev/icons/dist/html/compat/pip-enter.js +6 -0
  414. package/dist/dev/icons/dist/html/compat/pip-enter.js.map +1 -0
  415. package/dist/dev/icons/dist/html/compat/pip-exit.js +6 -0
  416. package/dist/dev/icons/dist/html/compat/pip-exit.js.map +1 -0
  417. package/dist/dev/icons/dist/html/compat/play.js +6 -0
  418. package/dist/dev/icons/dist/html/compat/play.js.map +1 -0
  419. package/dist/dev/icons/dist/html/compat/quality.js +6 -0
  420. package/dist/dev/icons/dist/html/compat/quality.js.map +1 -0
  421. package/dist/dev/icons/dist/html/compat/restart.js +6 -0
  422. package/dist/dev/icons/dist/html/compat/restart.js.map +1 -0
  423. package/dist/dev/icons/dist/html/compat/seek.js +6 -0
  424. package/dist/dev/icons/dist/html/compat/seek.js.map +1 -0
  425. package/dist/dev/icons/dist/html/compat/speech.js +6 -0
  426. package/dist/dev/icons/dist/html/compat/speech.js.map +1 -0
  427. package/dist/dev/icons/dist/html/compat/speed.js +6 -0
  428. package/dist/dev/icons/dist/html/compat/speed.js.map +1 -0
  429. package/dist/dev/icons/dist/html/{minimal → compat}/spinner.js +1 -1
  430. package/dist/dev/icons/dist/html/compat/spinner.js.map +1 -0
  431. package/dist/dev/icons/dist/html/compat/switches.js +6 -0
  432. package/dist/dev/icons/dist/html/compat/switches.js.map +1 -0
  433. package/dist/dev/icons/dist/html/compat/volume-high.js +6 -0
  434. package/dist/dev/icons/dist/html/compat/volume-high.js.map +1 -0
  435. package/dist/dev/icons/dist/html/compat/volume-low.js +6 -0
  436. package/dist/dev/icons/dist/html/compat/volume-low.js.map +1 -0
  437. package/dist/dev/icons/dist/html/compat/volume-off.js +6 -0
  438. package/dist/dev/icons/dist/html/compat/volume-off.js.map +1 -0
  439. package/dist/dev/icons/dist/html/default/index.d.ts +25 -26
  440. package/dist/dev/icons/dist/html/{minimal → neutral}/airplay-enter.js +1 -1
  441. package/dist/dev/icons/dist/html/{minimal → neutral}/airplay-enter.js.map +1 -1
  442. package/dist/dev/icons/dist/html/{minimal → neutral}/airplay-exit.js +1 -1
  443. package/dist/dev/icons/dist/html/{minimal → neutral}/airplay-exit.js.map +1 -1
  444. package/dist/dev/icons/dist/html/{minimal → neutral}/captions-off.js +1 -1
  445. package/dist/dev/icons/dist/html/{minimal → neutral}/captions-off.js.map +1 -1
  446. package/dist/dev/icons/dist/html/{minimal → neutral}/captions-on.js +1 -1
  447. package/dist/dev/icons/dist/html/{minimal → neutral}/captions-on.js.map +1 -1
  448. package/dist/dev/icons/dist/html/{minimal → neutral}/cast-enter.js +1 -1
  449. package/dist/dev/icons/dist/html/{minimal → neutral}/cast-enter.js.map +1 -1
  450. package/dist/dev/icons/dist/html/{minimal → neutral}/cast-exit.js +1 -1
  451. package/dist/dev/icons/dist/html/{minimal → neutral}/cast-exit.js.map +1 -1
  452. package/dist/dev/icons/dist/html/{minimal → neutral}/check.js +1 -1
  453. package/dist/dev/icons/dist/html/{minimal → neutral}/check.js.map +1 -1
  454. package/dist/dev/icons/dist/html/{minimal → neutral}/chevron.js +1 -1
  455. package/dist/dev/icons/dist/html/{minimal → neutral}/chevron.js.map +1 -1
  456. package/dist/dev/icons/dist/html/{minimal → neutral}/fullscreen-enter.js +1 -1
  457. package/dist/dev/icons/dist/html/{minimal → neutral}/fullscreen-enter.js.map +1 -1
  458. package/dist/dev/icons/dist/html/{minimal → neutral}/fullscreen-exit.js +1 -1
  459. package/dist/dev/icons/dist/html/{minimal → neutral}/fullscreen-exit.js.map +1 -1
  460. package/dist/dev/icons/dist/html/{minimal → neutral}/gear.js +1 -1
  461. package/dist/dev/icons/dist/html/{minimal → neutral}/gear.js.map +1 -1
  462. package/dist/dev/icons/dist/html/neutral/index.d.ts +28 -0
  463. package/dist/dev/icons/dist/html/{minimal → neutral}/pause.js +1 -1
  464. package/dist/dev/icons/dist/html/{minimal → neutral}/pause.js.map +1 -1
  465. package/dist/dev/icons/dist/html/{minimal → neutral}/pip-enter.js +1 -1
  466. package/dist/dev/icons/dist/html/{minimal → neutral}/pip-enter.js.map +1 -1
  467. package/dist/dev/icons/dist/html/{minimal → neutral}/pip-exit.js +1 -1
  468. package/dist/dev/icons/dist/html/{minimal → neutral}/pip-exit.js.map +1 -1
  469. package/dist/dev/icons/dist/html/{minimal → neutral}/play.js +1 -1
  470. package/dist/dev/icons/dist/html/{minimal → neutral}/play.js.map +1 -1
  471. package/dist/dev/icons/dist/html/{minimal → neutral}/quality.js +1 -1
  472. package/dist/dev/icons/dist/html/{minimal → neutral}/quality.js.map +1 -1
  473. package/dist/dev/icons/dist/html/{minimal → neutral}/restart.js +1 -1
  474. package/dist/dev/icons/dist/html/{minimal → neutral}/restart.js.map +1 -1
  475. package/dist/dev/icons/dist/html/{minimal → neutral}/seek.js +1 -1
  476. package/dist/dev/icons/dist/html/{minimal → neutral}/seek.js.map +1 -1
  477. package/dist/dev/icons/dist/html/{minimal → neutral}/speech.js +1 -1
  478. package/dist/dev/icons/dist/html/{minimal → neutral}/speech.js.map +1 -1
  479. package/dist/dev/icons/dist/html/{minimal → neutral}/speed.js +1 -1
  480. package/dist/dev/icons/dist/html/{minimal → neutral}/speed.js.map +1 -1
  481. package/dist/dev/icons/dist/html/neutral/spinner.js +6 -0
  482. package/dist/dev/icons/dist/html/{minimal → neutral}/spinner.js.map +1 -1
  483. package/dist/dev/icons/dist/html/{minimal → neutral}/switches.js +1 -1
  484. package/dist/dev/icons/dist/html/{minimal → neutral}/switches.js.map +1 -1
  485. package/dist/dev/icons/dist/html/{minimal → neutral}/volume-high.js +1 -1
  486. package/dist/dev/icons/dist/html/{minimal → neutral}/volume-high.js.map +1 -1
  487. package/dist/dev/icons/dist/html/{minimal → neutral}/volume-low.js +1 -1
  488. package/dist/dev/icons/dist/html/{minimal → neutral}/volume-low.js.map +1 -1
  489. package/dist/dev/icons/dist/html/{minimal → neutral}/volume-off.js +1 -1
  490. package/dist/dev/icons/dist/html/{minimal → neutral}/volume-off.js.map +1 -1
  491. package/dist/dev/icons/element/compat/index.d.ts +1 -0
  492. package/dist/dev/icons/element/compat/index.js +1 -0
  493. package/dist/dev/icons/element/neutral/index.d.ts +1 -0
  494. package/dist/dev/icons/element/neutral/index.js +1 -0
  495. package/dist/dev/icons/element/register/index.d.ts +1 -2
  496. package/dist/dev/icons/neutral/index.d.ts +2 -0
  497. package/dist/dev/icons/neutral/index.js +26 -0
  498. package/dist/dev/index.d.ts +12 -7
  499. package/dist/dev/index.js +4 -3
  500. package/dist/dev/internal/skins/compat-audio/register.d.ts +43 -0
  501. package/dist/dev/internal/skins/compat-audio/register.js +72 -0
  502. package/dist/dev/internal/skins/compat-audio/register.js.map +1 -0
  503. package/dist/dev/internal/skins/compat-audio/skin.css +1891 -0
  504. package/dist/dev/internal/skins/compat-audio/template.js +217 -0
  505. package/dist/dev/internal/skins/compat-audio/template.js.map +1 -0
  506. package/dist/dev/internal/skins/compat-live-audio/register.d.ts +27 -0
  507. package/dist/dev/internal/skins/compat-live-audio/register.js +52 -0
  508. package/dist/dev/internal/skins/compat-live-audio/register.js.map +1 -0
  509. package/dist/dev/internal/skins/compat-live-audio/skin.css +1676 -0
  510. package/dist/dev/internal/skins/compat-live-audio/template.js +114 -0
  511. package/dist/dev/internal/skins/compat-live-audio/template.js.map +1 -0
  512. package/dist/dev/internal/skins/compat-live-video/register.d.ts +45 -0
  513. package/dist/dev/internal/skins/compat-live-video/register.js +88 -0
  514. package/dist/dev/internal/skins/compat-live-video/register.js.map +1 -0
  515. package/dist/dev/internal/skins/compat-live-video/skin.css +2219 -0
  516. package/dist/dev/internal/skins/compat-live-video/template.js +239 -0
  517. package/dist/dev/internal/skins/compat-live-video/template.js.map +1 -0
  518. package/dist/dev/internal/skins/compat-video/register.d.ts +62 -0
  519. package/dist/dev/internal/skins/compat-video/register.js +117 -0
  520. package/dist/dev/internal/skins/compat-video/register.js.map +1 -0
  521. package/dist/dev/internal/skins/compat-video/skin.css +2497 -0
  522. package/dist/dev/internal/skins/compat-video/template.js +459 -0
  523. package/dist/dev/internal/skins/compat-video/template.js.map +1 -0
  524. package/dist/dev/internal/skins/default-audio/register.d.ts +12 -12
  525. package/dist/dev/internal/skins/default-audio/register.js +8 -8
  526. package/dist/dev/internal/skins/default-audio/skin.css +1213 -1365
  527. package/dist/dev/internal/skins/default-live-audio/register.d.ts +4 -4
  528. package/dist/dev/internal/skins/default-live-audio/register.js +4 -4
  529. package/dist/dev/internal/skins/default-live-audio/skin.css +842 -913
  530. package/dist/dev/internal/skins/default-live-video/register.d.ts +10 -10
  531. package/dist/dev/internal/skins/default-live-video/register.js +8 -8
  532. package/dist/dev/internal/skins/default-live-video/skin.css +1548 -1728
  533. package/dist/dev/internal/skins/default-video/register.d.ts +18 -18
  534. package/dist/dev/internal/skins/default-video/register.js +13 -13
  535. package/dist/dev/internal/skins/default-video/skin.css +2034 -2403
  536. package/dist/dev/internal/skins/{minimal-audio → neutral-audio}/register.d.ts +14 -14
  537. package/dist/dev/internal/skins/{minimal-audio → neutral-audio}/register.js +20 -20
  538. package/dist/dev/internal/skins/{minimal-audio → neutral-audio}/register.js.map +1 -1
  539. package/dist/dev/internal/skins/neutral-audio/skin.css +1823 -0
  540. package/dist/dev/internal/skins/{minimal-audio → neutral-audio}/template.js +24 -24
  541. package/dist/dev/internal/skins/{minimal-audio → neutral-audio}/template.js.map +1 -1
  542. package/dist/dev/internal/skins/{minimal-live-audio → neutral-live-audio}/register.d.ts +4 -4
  543. package/dist/dev/internal/skins/{minimal-live-audio → neutral-live-audio}/register.js +13 -13
  544. package/dist/dev/internal/skins/{minimal-live-audio → neutral-live-audio}/register.js.map +1 -1
  545. package/dist/dev/internal/skins/neutral-live-audio/skin.css +1238 -0
  546. package/dist/dev/internal/skins/{minimal-live-audio → neutral-live-audio}/template.js +14 -14
  547. package/dist/dev/internal/skins/{minimal-live-audio → neutral-live-audio}/template.js.map +1 -1
  548. package/dist/dev/internal/skins/{minimal-live-video → neutral-live-video}/register.d.ts +10 -10
  549. package/dist/dev/internal/skins/{minimal-live-video → neutral-live-video}/register.js +28 -28
  550. package/dist/dev/internal/skins/{minimal-live-video → neutral-live-video}/register.js.map +1 -1
  551. package/dist/dev/internal/skins/neutral-live-video/skin.css +2069 -0
  552. package/dist/dev/internal/skins/{minimal-live-video → neutral-live-video}/template.js +47 -47
  553. package/dist/dev/internal/skins/{minimal-live-video → neutral-live-video}/template.js.map +1 -1
  554. package/dist/dev/internal/skins/{minimal-video → neutral-video}/register.d.ts +20 -20
  555. package/dist/dev/internal/skins/{minimal-video → neutral-video}/register.js +40 -40
  556. package/dist/dev/internal/skins/{minimal-video → neutral-video}/register.js.map +1 -1
  557. package/dist/dev/internal/skins/neutral-video/skin.css +2817 -0
  558. package/dist/dev/internal/skins/{minimal-video → neutral-video}/template.js +75 -75
  559. package/dist/dev/internal/skins/{minimal-video → neutral-video}/template.js.map +1 -1
  560. package/dist/dev/media/background-video/adapter.d.ts +1 -2
  561. package/dist/dev/media/background-video/template.d.ts +1 -2
  562. package/dist/dev/media/cloudflare-video/adapter.d.ts +3 -15
  563. package/dist/dev/media/dash-video/adapter.d.ts +3 -15
  564. package/dist/dev/media/hls-audio/adapter.d.ts +3 -15
  565. package/dist/dev/media/hls-background-video/adapter.d.ts +8 -5
  566. package/dist/dev/media/hls-background-video/adapter.js.map +1 -1
  567. package/dist/dev/media/hls-video/adapter.d.ts +3 -15
  568. package/dist/dev/media/hlsjs-video/adapter.d.ts +3 -15
  569. package/dist/dev/media/mux-audio/hls-js.d.ts +3 -15
  570. package/dist/dev/media/mux-audio/mixin.js.map +1 -1
  571. package/dist/dev/media/mux-audio/spf.d.ts +3 -15
  572. package/dist/dev/media/mux-video/hls-js.d.ts +3 -15
  573. package/dist/dev/media/mux-video/mixin.js.map +1 -1
  574. package/dist/dev/media/mux-video/spf.d.ts +3 -15
  575. package/dist/dev/media/native-hls-video/adapter.d.ts +3 -15
  576. package/dist/dev/media/shaka-video/adapter.d.ts +3 -15
  577. package/dist/dev/media/spotify-audio/adapter.d.ts +3 -15
  578. package/dist/dev/media/tiktok-video/adapter.d.ts +3 -15
  579. package/dist/dev/media/twitch-video/adapter.d.ts +3 -15
  580. package/dist/dev/media/vimeo-video/adapter.d.ts +3 -15
  581. package/dist/dev/media/wistia-video/adapter.d.ts +1 -2
  582. package/dist/dev/media/youtube-video/adapter.d.ts +3 -15
  583. package/dist/dev/player/context.d.ts +34 -15
  584. package/dist/dev/player/context.js +9 -1
  585. package/dist/dev/player/context.js.map +1 -1
  586. package/dist/dev/player/controller.d.ts +3 -4
  587. package/dist/dev/player/controller.js.map +1 -1
  588. package/dist/dev/player/create-player.d.ts +5 -6
  589. package/dist/dev/player/create-player.js +2 -1
  590. package/dist/dev/player/create-player.js.map +1 -1
  591. package/dist/dev/player/element.js +47 -10
  592. package/dist/dev/player/element.js.map +1 -1
  593. package/dist/dev/presets/audio/compat-skin.d.ts +15 -0
  594. package/dist/dev/presets/audio/compat-skin.js +21 -0
  595. package/dist/dev/presets/audio/compat-skin.js.map +1 -0
  596. package/dist/dev/presets/audio/index.d.ts +3 -2
  597. package/dist/dev/presets/audio/index.js +3 -2
  598. package/dist/dev/presets/audio/neutral-skin.d.ts +15 -0
  599. package/dist/dev/presets/audio/neutral-skin.js +21 -0
  600. package/dist/dev/presets/audio/neutral-skin.js.map +1 -0
  601. package/dist/dev/presets/audio/player.d.ts +2 -3
  602. package/dist/dev/presets/audio/skin.d.ts +2 -3
  603. package/dist/dev/presets/audio/skin.js.map +1 -1
  604. package/dist/dev/presets/background/player.d.ts +2 -3
  605. package/dist/dev/presets/background/skin.d.ts +1 -2
  606. package/dist/dev/presets/live-audio/compat-skin.d.ts +15 -0
  607. package/dist/dev/presets/live-audio/compat-skin.js +21 -0
  608. package/dist/dev/presets/live-audio/compat-skin.js.map +1 -0
  609. package/dist/dev/presets/live-audio/index.d.ts +3 -2
  610. package/dist/dev/presets/live-audio/index.js +3 -2
  611. package/dist/dev/presets/live-audio/neutral-skin.d.ts +15 -0
  612. package/dist/dev/presets/live-audio/neutral-skin.js +21 -0
  613. package/dist/dev/presets/live-audio/neutral-skin.js.map +1 -0
  614. package/dist/dev/presets/live-audio/player.d.ts +2 -3
  615. package/dist/dev/presets/live-audio/skin.d.ts +2 -3
  616. package/dist/dev/presets/live-audio/skin.js.map +1 -1
  617. package/dist/dev/presets/live-video/compat-skin.d.ts +15 -0
  618. package/dist/dev/presets/live-video/compat-skin.js +21 -0
  619. package/dist/dev/presets/live-video/compat-skin.js.map +1 -0
  620. package/dist/dev/presets/live-video/index.d.ts +3 -2
  621. package/dist/dev/presets/live-video/index.js +3 -2
  622. package/dist/dev/presets/live-video/neutral-skin.d.ts +15 -0
  623. package/dist/dev/presets/live-video/neutral-skin.js +21 -0
  624. package/dist/dev/presets/live-video/neutral-skin.js.map +1 -0
  625. package/dist/dev/presets/live-video/player.d.ts +2 -3
  626. package/dist/dev/presets/live-video/skin.d.ts +2 -3
  627. package/dist/dev/presets/live-video/skin.js.map +1 -1
  628. package/dist/dev/presets/skin.d.ts +1 -2
  629. package/dist/dev/presets/video/compat-skin.d.ts +15 -0
  630. package/dist/dev/presets/video/compat-skin.js +21 -0
  631. package/dist/dev/presets/video/compat-skin.js.map +1 -0
  632. package/dist/dev/presets/video/index.d.ts +3 -2
  633. package/dist/dev/presets/video/index.js +3 -2
  634. package/dist/dev/presets/video/neutral-skin.d.ts +15 -0
  635. package/dist/dev/presets/video/neutral-skin.js +21 -0
  636. package/dist/dev/presets/video/neutral-skin.js.map +1 -0
  637. package/dist/dev/presets/video/player.d.ts +2 -3
  638. package/dist/dev/presets/video/skin.d.ts +2 -3
  639. package/dist/dev/presets/video/skin.js.map +1 -1
  640. package/dist/dev/store/media-attach-mixin.d.ts +6 -4
  641. package/dist/dev/store/media-attach-mixin.js +2 -0
  642. package/dist/dev/store/media-attach-mixin.js.map +1 -1
  643. package/dist/dev/store/types.d.ts +2 -4
  644. package/dist/dev/ui/airplay-button/element.d.ts +4 -5
  645. package/dist/dev/ui/airplay-button/element.js +1 -1
  646. package/dist/dev/ui/airplay-button/element.js.map +1 -1
  647. package/dist/dev/ui/alert-dialog/element.d.ts +1 -2
  648. package/dist/dev/ui/audio-track-radio-group/element.d.ts +4 -5
  649. package/dist/dev/ui/audio-track-radio-group/element.js.map +1 -1
  650. package/dist/dev/ui/buffering-indicator/element.d.ts +2 -2
  651. package/dist/dev/ui/buffering-indicator/element.js +4 -0
  652. package/dist/dev/ui/buffering-indicator/element.js.map +1 -1
  653. package/dist/dev/ui/captions-button/element.d.ts +7 -10
  654. package/dist/dev/ui/captions-button/element.js.map +1 -1
  655. package/dist/dev/ui/captions-radio-group/element.d.ts +4 -5
  656. package/dist/dev/ui/captions-radio-group/element.js.map +1 -1
  657. package/dist/dev/ui/cast-button/element.d.ts +3 -4
  658. package/dist/dev/ui/cast-button/element.js.map +1 -1
  659. package/dist/dev/ui/container/element.d.ts +1 -2
  660. package/dist/dev/ui/container/element.js.map +1 -1
  661. package/dist/dev/ui/context-part-element.d.ts +2 -3
  662. package/dist/dev/ui/context-part-element.js.map +1 -1
  663. package/dist/dev/ui/controls/backdrop.d.ts +1 -2
  664. package/dist/dev/ui/controls/content.d.ts +1 -2
  665. package/dist/dev/ui/controls/context.d.ts +1 -2
  666. package/dist/dev/ui/controls/element.d.ts +1 -2
  667. package/dist/dev/ui/controls/element.js.map +1 -1
  668. package/dist/dev/ui/controls/group.d.ts +1 -2
  669. package/dist/dev/ui/dialog/backdrop.d.ts +1 -2
  670. package/dist/dev/ui/dialog/close.d.ts +1 -2
  671. package/dist/dev/ui/dialog/close.js.map +1 -1
  672. package/dist/dev/ui/dialog/context.d.ts +4 -3
  673. package/dist/dev/ui/dialog/context.js +1 -0
  674. package/dist/dev/ui/dialog/context.js.map +1 -1
  675. package/dist/dev/ui/dialog/description.d.ts +1 -2
  676. package/dist/dev/ui/dialog/element.d.ts +5 -4
  677. package/dist/dev/ui/dialog/element.js +4 -2
  678. package/dist/dev/ui/dialog/element.js.map +1 -1
  679. package/dist/dev/ui/dialog/popup.d.ts +1 -2
  680. package/dist/dev/ui/dialog/popup.js.map +1 -1
  681. package/dist/dev/ui/dialog/title.d.ts +1 -2
  682. package/dist/dev/ui/error-dialog/element.d.ts +1 -2
  683. package/dist/dev/ui/error-dialog/element.js.map +1 -1
  684. package/dist/dev/ui/fullscreen-button/element.d.ts +3 -5
  685. package/dist/dev/ui/fullscreen-button/element.js.map +1 -1
  686. package/dist/dev/ui/gesture/element.d.ts +1 -2
  687. package/dist/dev/ui/gesture/element.js.map +1 -1
  688. package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.d.ts +2 -3
  689. package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.js.map +1 -1
  690. package/dist/dev/ui/hotkey/element.d.ts +1 -2
  691. package/dist/dev/ui/hotkey/element.js.map +1 -1
  692. package/dist/dev/ui/input-indicator/element.d.ts +5 -4
  693. package/dist/dev/ui/input-indicator/element.js.map +1 -1
  694. package/dist/dev/ui/input-indicator/live-indicator.d.ts +2 -3
  695. package/dist/dev/ui/input-indicator/live-indicator.js.map +1 -1
  696. package/dist/dev/ui/live-button/element.d.ts +4 -4
  697. package/dist/dev/ui/live-button/element.js.map +1 -1
  698. package/dist/dev/ui/media-button-element.d.ts +17 -8
  699. package/dist/dev/ui/media-button-element.js +7 -6
  700. package/dist/dev/ui/media-button-element.js.map +1 -1
  701. package/dist/dev/ui/media-ui-element.d.ts +15 -7
  702. package/dist/dev/ui/media-ui-element.js +6 -1
  703. package/dist/dev/ui/media-ui-element.js.map +1 -1
  704. package/dist/dev/ui/menu/checkbox-item.d.ts +1 -2
  705. package/dist/dev/ui/menu/checkbox-item.js.map +1 -1
  706. package/dist/dev/ui/menu/content.d.ts +1 -2
  707. package/dist/dev/ui/menu/content.js.map +1 -1
  708. package/dist/dev/ui/menu/context.d.ts +9 -5
  709. package/dist/dev/ui/menu/context.js +2 -0
  710. package/dist/dev/ui/menu/context.js.map +1 -1
  711. package/dist/dev/ui/menu/element.d.ts +1 -2
  712. package/dist/dev/ui/menu/element.js.map +1 -1
  713. package/dist/dev/ui/menu/group-controller.js.map +1 -1
  714. package/dist/dev/ui/menu/group-label.d.ts +1 -2
  715. package/dist/dev/ui/menu/group-label.js.map +1 -1
  716. package/dist/dev/ui/menu/group.d.ts +1 -2
  717. package/dist/dev/ui/menu/group.js.map +1 -1
  718. package/dist/dev/ui/menu/item-indicator.d.ts +1 -2
  719. package/dist/dev/ui/menu/item.d.ts +1 -2
  720. package/dist/dev/ui/menu/item.js.map +1 -1
  721. package/dist/dev/ui/menu/radio-group.d.ts +1 -2
  722. package/dist/dev/ui/menu/radio-group.js.map +1 -1
  723. package/dist/dev/ui/menu/radio-item.d.ts +1 -2
  724. package/dist/dev/ui/menu/radio-item.js.map +1 -1
  725. package/dist/dev/ui/menu/separator.d.ts +1 -2
  726. package/dist/dev/ui/mute-button/element.d.ts +3 -4
  727. package/dist/dev/ui/mute-button/element.js.map +1 -1
  728. package/dist/dev/ui/pip-button/element.d.ts +4 -6
  729. package/dist/dev/ui/pip-button/element.js.map +1 -1
  730. package/dist/dev/ui/play-button/element.d.ts +3 -5
  731. package/dist/dev/ui/play-button/element.js +1 -1
  732. package/dist/dev/ui/play-button/element.js.map +1 -1
  733. package/dist/dev/ui/playback-rate-button/element.d.ts +4 -5
  734. package/dist/dev/ui/playback-rate-button/element.js +4 -2
  735. package/dist/dev/ui/playback-rate-button/element.js.map +1 -1
  736. package/dist/dev/ui/playback-rate-radio-group/element.d.ts +4 -5
  737. package/dist/dev/ui/playback-rate-radio-group/element.js.map +1 -1
  738. package/dist/dev/ui/popover/element.d.ts +1 -2
  739. package/dist/dev/ui/popover/element.js +4 -2
  740. package/dist/dev/ui/popover/element.js.map +1 -1
  741. package/dist/dev/ui/position-controller.js.map +1 -1
  742. package/dist/dev/ui/poster/element.d.ts +1 -2
  743. package/dist/dev/ui/poster/element.js.map +1 -1
  744. package/dist/dev/ui/quality-radio-group/element.d.ts +4 -5
  745. package/dist/dev/ui/quality-radio-group/element.js.map +1 -1
  746. package/dist/dev/ui/radio-group/context.d.ts +4 -3
  747. package/dist/dev/ui/radio-group/context.js +1 -0
  748. package/dist/dev/ui/radio-group/context.js.map +1 -1
  749. package/dist/dev/ui/radio-group/element.d.ts +1 -2
  750. package/dist/dev/ui/radio-group/element.js.map +1 -1
  751. package/dist/dev/ui/radio-options/controller.js.map +1 -1
  752. package/dist/dev/ui/seek-button/element.d.ts +2 -3
  753. package/dist/dev/ui/seek-button/element.js.map +1 -1
  754. package/dist/dev/ui/seek-indicator/element.d.ts +3 -4
  755. package/dist/dev/ui/seek-indicator/element.js +7 -1
  756. package/dist/dev/ui/seek-indicator/element.js.map +1 -1
  757. package/dist/dev/ui/seek-indicator/value.d.ts +1 -2
  758. package/dist/dev/ui/slider/buffer.d.ts +1 -2
  759. package/dist/dev/ui/slider/context.d.ts +4 -3
  760. package/dist/dev/ui/slider/context.js +1 -0
  761. package/dist/dev/ui/slider/context.js.map +1 -1
  762. package/dist/dev/ui/slider/element.d.ts +1 -2
  763. package/dist/dev/ui/slider/element.js.map +1 -1
  764. package/dist/dev/ui/slider/events.d.ts +4 -3
  765. package/dist/dev/ui/slider/fill.d.ts +1 -2
  766. package/dist/dev/ui/slider/preview.d.ts +1 -2
  767. package/dist/dev/ui/slider/preview.js.map +1 -1
  768. package/dist/dev/ui/slider/thumb.d.ts +1 -2
  769. package/dist/dev/ui/slider/thumb.js.map +1 -1
  770. package/dist/dev/ui/slider/thumbnail.d.ts +1 -2
  771. package/dist/dev/ui/slider/thumbnail.js.map +1 -1
  772. package/dist/dev/ui/slider/track.d.ts +1 -2
  773. package/dist/dev/ui/slider/value.d.ts +1 -2
  774. package/dist/dev/ui/slider/value.js.map +1 -1
  775. package/dist/dev/ui/status-announcer/element.d.ts +1 -2
  776. package/dist/dev/ui/status-announcer/element.js.map +1 -1
  777. package/dist/dev/ui/status-indicator/element.d.ts +9 -4
  778. package/dist/dev/ui/status-indicator/element.js +14 -1
  779. package/dist/dev/ui/status-indicator/element.js.map +1 -1
  780. package/dist/dev/ui/status-indicator/value.d.ts +1 -2
  781. package/dist/dev/ui/text/element.d.ts +4 -3
  782. package/dist/dev/ui/text/element.js +1 -0
  783. package/dist/dev/ui/text/element.js.map +1 -1
  784. package/dist/dev/ui/thumbnail/element.d.ts +5 -6
  785. package/dist/dev/ui/thumbnail/element.js +3 -2
  786. package/dist/dev/ui/thumbnail/element.js.map +1 -1
  787. package/dist/dev/ui/time/element.d.ts +1 -2
  788. package/dist/dev/ui/time/element.js.map +1 -1
  789. package/dist/dev/ui/time/group.d.ts +1 -2
  790. package/dist/dev/ui/time/separator.d.ts +1 -2
  791. package/dist/dev/ui/time-slider/chapter-title.d.ts +1 -2
  792. package/dist/dev/ui/time-slider/chapter-title.js.map +1 -1
  793. package/dist/dev/ui/time-slider/chapters.d.ts +1 -2
  794. package/dist/dev/ui/time-slider/chapters.js.map +1 -1
  795. package/dist/dev/ui/time-slider/element.d.ts +1 -2
  796. package/dist/dev/ui/time-slider/element.js.map +1 -1
  797. package/dist/dev/ui/title/element.d.ts +1 -2
  798. package/dist/dev/ui/title/element.js.map +1 -1
  799. package/dist/dev/ui/tooltip/context.d.ts +2 -2
  800. package/dist/dev/ui/tooltip/context.js +1 -0
  801. package/dist/dev/ui/tooltip/context.js.map +1 -1
  802. package/dist/dev/ui/tooltip/element.d.ts +1 -2
  803. package/dist/dev/ui/tooltip/element.js +4 -2
  804. package/dist/dev/ui/tooltip/element.js.map +1 -1
  805. package/dist/dev/ui/tooltip/group.d.ts +1 -2
  806. package/dist/dev/ui/tooltip/group.js.map +1 -1
  807. package/dist/dev/ui/tooltip/label.d.ts +1 -2
  808. package/dist/dev/ui/tooltip/label.js.map +1 -1
  809. package/dist/dev/ui/tooltip/shortcut.d.ts +1 -2
  810. package/dist/dev/ui/ui-element.d.ts +3 -3
  811. package/dist/dev/ui/ui-element.js.map +1 -1
  812. package/dist/dev/ui/volume-indicator/element.d.ts +3 -4
  813. package/dist/dev/ui/volume-indicator/element.js.map +1 -1
  814. package/dist/dev/ui/volume-indicator/fill.d.ts +1 -2
  815. package/dist/dev/ui/volume-indicator/value.d.ts +1 -2
  816. package/dist/dev/ui/volume-popover/element.d.ts +1 -2
  817. package/dist/dev/ui/volume-popover/element.js +1 -1
  818. package/dist/dev/ui/volume-popover/element.js.map +1 -1
  819. package/dist/dev/ui/volume-slider/element.d.ts +1 -2
  820. package/dist/dev/ui/volume-slider/element.js +1 -1
  821. package/dist/dev/ui/volume-slider/element.js.map +1 -1
  822. package/dist/dev/version.d.ts +21 -0
  823. package/dist/dev/version.js +29 -0
  824. package/dist/dev/version.js.map +1 -0
  825. package/docs/README.md +1 -1
  826. package/docs/guides/autoplay.md +10 -21
  827. package/docs/guides/background-video.md +74 -7
  828. package/docs/guides/browser-support.md +48 -36
  829. package/docs/guides/build-your-own-component.md +5 -5
  830. package/docs/guides/captions.md +46 -6
  831. package/docs/guides/casting.md +24 -8
  832. package/docs/guides/cdn.md +11 -10
  833. package/docs/guides/content-security-policy.md +29 -5
  834. package/docs/guides/controls.md +25 -10
  835. package/docs/guides/customize-skins.md +2 -2
  836. package/docs/guides/features.md +3 -1
  837. package/docs/guides/fullscreen.md +35 -8
  838. package/docs/guides/installation-cdn.md +5 -5
  839. package/docs/guides/installation-shadcn.md +4 -4
  840. package/docs/guides/installation-svelte.md +5 -5
  841. package/docs/guides/installation-vue.md +5 -5
  842. package/docs/guides/installation.md +5 -5
  843. package/docs/guides/internationalization.md +37 -28
  844. package/docs/guides/keyboard-shortcuts.md +27 -15
  845. package/docs/guides/live-streams.md +51 -13
  846. package/docs/guides/llms.txt +6 -5
  847. package/docs/guides/media-sources.md +8 -5
  848. package/docs/guides/migrate-from-media-chrome.md +182 -51
  849. package/docs/guides/migrate-from-mux-player.md +191 -116
  850. package/docs/guides/migrate-from-plyr.md +171 -81
  851. package/docs/guides/migrate-from-video-js-8.md +255 -190
  852. package/docs/guides/migrate-from-vidstack.md +865 -0
  853. package/docs/guides/mux-data.md +23 -9
  854. package/docs/guides/picture-in-picture.md +22 -16
  855. package/docs/guides/playback-errors.md +10 -7
  856. package/docs/guides/poster.md +32 -11
  857. package/docs/guides/presets.md +15 -5
  858. package/docs/guides/quality.md +44 -5
  859. package/docs/guides/self-hosting.md +5 -5
  860. package/docs/guides/skins.md +6 -4
  861. package/docs/guides/thumbnails.md +24 -14
  862. package/docs/guides/ui-components.md +1 -1
  863. package/docs/guides/user-preferences.md +38 -15
  864. package/docs/guides/v10-roadmap.md +1 -1
  865. package/docs/llms.txt +45 -11
  866. package/docs/reference/api/create-i18n.md +3 -3
  867. package/docs/reference/api/create-translator.md +1 -1
  868. package/docs/reference/api/feature-audio-track.md +1 -1
  869. package/docs/reference/api/feature-controls.md +2 -2
  870. package/docs/reference/api/feature-fullscreen.md +1 -2
  871. package/docs/reference/api/feature-pip.md +3 -4
  872. package/docs/reference/api/feature-playback.md +2 -3
  873. package/docs/reference/api/feature-quality.md +2 -2
  874. package/docs/reference/api/feature-remote-playback.md +1 -1
  875. package/docs/reference/api/feature-source.md +2 -8
  876. package/docs/reference/api/feature-text-tracks.md +6 -8
  877. package/docs/reference/api/feature-volume.md +1 -1
  878. package/docs/reference/api/find-locale-keys.md +32 -0
  879. package/docs/reference/api/get-locale-key.md +32 -0
  880. package/docs/reference/api/html-create-player.md +24 -26
  881. package/docs/reference/api/i18n-controller.md +1 -1
  882. package/docs/reference/api/is-text.md +33 -0
  883. package/docs/reference/api/llms.txt +23 -2
  884. package/docs/reference/api/load-locale.md +36 -0
  885. package/docs/reference/api/media-capabilities.md +255 -0
  886. package/docs/reference/api/player-controller.md +39 -20
  887. package/docs/reference/api/player-store.md +112 -0
  888. package/docs/reference/api/preset-audio.md +116 -0
  889. package/docs/reference/api/preset-background.md +103 -0
  890. package/docs/reference/api/preset-live-audio.md +119 -0
  891. package/docs/reference/api/preset-live-video.md +124 -0
  892. package/docs/reference/api/preset-video.md +123 -0
  893. package/docs/reference/api/register-i18n.md +13 -0
  894. package/docs/reference/api/resolve-adapter-type.md +98 -0
  895. package/docs/reference/api/resolve-mime-type.md +48 -0
  896. package/docs/reference/api/resolve-translation.md +36 -0
  897. package/docs/reference/api/translate-text.md +56 -0
  898. package/docs/reference/api/translation-phrases.md +13 -0
  899. package/docs/reference/api/ui-element.md +296 -0
  900. package/docs/reference/components/audio-compat-skin.md +33 -0
  901. package/docs/reference/components/{audio-minimal-skin.md → audio-neutral-skin.md} +6 -6
  902. package/docs/reference/components/audio-skin.md +2 -2
  903. package/docs/reference/components/background-video-skin.md +1 -1
  904. package/docs/reference/components/background-video.md +1 -1
  905. package/docs/reference/components/captions-button.md +1 -1
  906. package/docs/reference/components/captions-radio-group.md +1 -1
  907. package/docs/reference/components/cloudflare-video.md +1 -1
  908. package/docs/reference/components/controls.md +2 -2
  909. package/docs/reference/components/dash-video.md +1 -1
  910. package/docs/reference/components/fullscreen-button.md +1 -1
  911. package/docs/reference/components/google-cast.md +4 -4
  912. package/docs/reference/components/hls-audio.md +1 -1
  913. package/docs/reference/components/hls-background-video.md +1 -1
  914. package/docs/reference/components/hls-video.md +1 -1
  915. package/docs/reference/components/hlsjs-video.md +2 -2
  916. package/docs/reference/components/icons.md +130 -0
  917. package/docs/reference/components/live-audio-compat-skin.md +35 -0
  918. package/docs/reference/components/{live-audio-minimal-skin.md → live-audio-neutral-skin.md} +6 -6
  919. package/docs/reference/components/live-audio-skin.md +2 -2
  920. package/docs/reference/components/live-video-compat-skin.md +41 -0
  921. package/docs/reference/components/{live-video-minimal-skin.md → live-video-neutral-skin.md} +6 -6
  922. package/docs/reference/components/live-video-skin.md +2 -2
  923. package/docs/reference/components/llms.txt +16 -6
  924. package/docs/reference/components/menu.md +7 -2
  925. package/docs/reference/components/mux-audio.md +2 -2
  926. package/docs/reference/components/mux-background-video.md +1 -1
  927. package/docs/reference/components/mux-data.md +4 -4
  928. package/docs/reference/components/mux-video.md +4 -4
  929. package/docs/reference/components/native-hls-video.md +1 -1
  930. package/docs/reference/components/pip-button.md +2 -2
  931. package/docs/reference/components/player.md +26 -2
  932. package/docs/reference/components/popover.md +6 -8
  933. package/docs/reference/components/shaka-video.md +1 -1
  934. package/docs/reference/components/spotify-audio.md +1 -1
  935. package/docs/reference/components/status-indicator.md +27 -4
  936. package/docs/reference/components/thumbnail.md +1 -1
  937. package/docs/reference/components/tiktok-video.md +1 -1
  938. package/docs/reference/components/twitch-video.md +1 -1
  939. package/docs/reference/components/video-compat-skin.md +45 -0
  940. package/docs/reference/components/{video-minimal-skin.md → video-neutral-skin.md} +6 -6
  941. package/docs/reference/components/video-skin.md +2 -2
  942. package/docs/reference/components/vimeo-video.md +1 -1
  943. package/docs/reference/components/wistia-video.md +1 -1
  944. package/docs/reference/components/youtube-video.md +1 -1
  945. package/package.json +54 -42
  946. package/dist/default/define/audio/minimal-skin.css +0 -2048
  947. package/dist/default/define/audio/minimal-skin.js +0 -6
  948. package/dist/default/define/audio/minimal-skin2.js +0 -4
  949. package/dist/default/define/live-audio/minimal-skin.css +0 -1378
  950. package/dist/default/define/live-audio/minimal-skin.js +0 -6
  951. package/dist/default/define/live-audio/minimal-skin2.js +0 -4
  952. package/dist/default/define/live-video/minimal-skin.css +0 -2311
  953. package/dist/default/define/live-video/minimal-skin.js +0 -6
  954. package/dist/default/define/live-video/minimal-skin2.js +0 -4
  955. package/dist/default/define/video/minimal-skin.css +0 -3232
  956. package/dist/default/define/video/minimal-skin.js +0 -6
  957. package/dist/default/define/video/minimal-skin2.js +0 -4
  958. package/dist/default/extensions/media-extension-element.js +0 -54
  959. package/dist/default/icons/element/minimal/index.js +0 -1
  960. package/dist/default/icons/minimal/index.js +0 -26
  961. package/dist/default/internal/skins/minimal-audio/skin.css +0 -1977
  962. package/dist/default/internal/skins/minimal-live-audio/skin.css +0 -1307
  963. package/dist/default/internal/skins/minimal-live-video/skin.css +0 -2240
  964. package/dist/default/internal/skins/minimal-video/skin.css +0 -3161
  965. package/dist/default/presets/audio/minimal-skin.js +0 -19
  966. package/dist/default/presets/live-audio/minimal-skin.js +0 -19
  967. package/dist/default/presets/live-video/minimal-skin.js +0 -19
  968. package/dist/default/presets/video/minimal-skin.js +0 -19
  969. package/dist/dev/define/audio/minimal-skin.css +0 -2048
  970. package/dist/dev/define/audio/minimal-skin.d.ts +0 -1
  971. package/dist/dev/define/audio/minimal-skin.js +0 -8
  972. package/dist/dev/define/audio/minimal-skin.js.map +0 -1
  973. package/dist/dev/define/audio/minimal-skin2.js +0 -6
  974. package/dist/dev/define/audio/minimal-skin2.js.map +0 -1
  975. package/dist/dev/define/live-audio/minimal-skin.css +0 -1378
  976. package/dist/dev/define/live-audio/minimal-skin.d.ts +0 -1
  977. package/dist/dev/define/live-audio/minimal-skin.js +0 -8
  978. package/dist/dev/define/live-audio/minimal-skin.js.map +0 -1
  979. package/dist/dev/define/live-audio/minimal-skin2.js +0 -6
  980. package/dist/dev/define/live-audio/minimal-skin2.js.map +0 -1
  981. package/dist/dev/define/live-video/minimal-skin.css +0 -2311
  982. package/dist/dev/define/live-video/minimal-skin.d.ts +0 -1
  983. package/dist/dev/define/live-video/minimal-skin.js +0 -8
  984. package/dist/dev/define/live-video/minimal-skin.js.map +0 -1
  985. package/dist/dev/define/live-video/minimal-skin2.js +0 -6
  986. package/dist/dev/define/live-video/minimal-skin2.js.map +0 -1
  987. package/dist/dev/define/video/minimal-skin.css +0 -3232
  988. package/dist/dev/define/video/minimal-skin.d.ts +0 -1
  989. package/dist/dev/define/video/minimal-skin.js +0 -8
  990. package/dist/dev/define/video/minimal-skin.js.map +0 -1
  991. package/dist/dev/define/video/minimal-skin2.js +0 -6
  992. package/dist/dev/define/video/minimal-skin2.js.map +0 -1
  993. package/dist/dev/extensions/media-extension-element.d.ts +0 -29
  994. package/dist/dev/extensions/media-extension-element.js +0 -56
  995. package/dist/dev/extensions/media-extension-element.js.map +0 -1
  996. package/dist/dev/icons/dist/html/minimal/index.d.ts +0 -29
  997. package/dist/dev/icons/element/minimal/index.d.ts +0 -1
  998. package/dist/dev/icons/element/minimal/index.js +0 -1
  999. package/dist/dev/icons/minimal/index.js +0 -26
  1000. package/dist/dev/internal/skins/minimal-audio/skin.css +0 -1977
  1001. package/dist/dev/internal/skins/minimal-live-audio/skin.css +0 -1307
  1002. package/dist/dev/internal/skins/minimal-live-video/skin.css +0 -2240
  1003. package/dist/dev/internal/skins/minimal-video/skin.css +0 -3161
  1004. package/dist/dev/presets/audio/minimal-skin.d.ts +0 -16
  1005. package/dist/dev/presets/audio/minimal-skin.js +0 -21
  1006. package/dist/dev/presets/audio/minimal-skin.js.map +0 -1
  1007. package/dist/dev/presets/live-audio/minimal-skin.d.ts +0 -16
  1008. package/dist/dev/presets/live-audio/minimal-skin.js +0 -21
  1009. package/dist/dev/presets/live-audio/minimal-skin.js.map +0 -1
  1010. package/dist/dev/presets/live-video/minimal-skin.d.ts +0 -16
  1011. package/dist/dev/presets/live-video/minimal-skin.js +0 -21
  1012. package/dist/dev/presets/live-video/minimal-skin.js.map +0 -1
  1013. package/dist/dev/presets/video/minimal-skin.d.ts +0 -16
  1014. package/dist/dev/presets/video/minimal-skin.js +0 -21
  1015. package/dist/dev/presets/video/minimal-skin.js.map +0 -1
  1016. /package/dist/dev/define/audio/{minimal-ui.d.ts → neutral-ui.d.ts} +0 -0
  1017. /package/dist/dev/define/live-audio/{minimal-ui.d.ts → neutral-ui.d.ts} +0 -0
  1018. /package/dist/dev/define/live-video/{minimal-ui.d.ts → neutral-ui.d.ts} +0 -0
  1019. /package/dist/dev/define/video/{minimal-ui.d.ts → neutral-ui.d.ts} +0 -0
  1020. /package/dist/dev/icons/dist/element/{minimal → compat}/index.d.ts +0 -0
@@ -8,7 +8,7 @@ Present the player fullscreen with custom controls intact, and lock screen orien
8
8
 
9
9
  ## Recommended approach
10
10
 
11
- Add a [`<media-fullscreen-button>`](../reference/components/fullscreen-button.md) inside the player container. It requests fullscreen on the container, so everything inside it — controls, captions, overlays — stays visible in the fullscreen presentation.
11
+ Add a [`<media-fullscreen-button>`](../reference/components/fullscreen-button.md) inside the player container. When element fullscreen is supported, it presents the whole container, including controls, captions, and overlays. On iPhone Safari, it uses the native video presentation instead.
12
12
 
13
13
  **index.html**
14
14
 
@@ -76,13 +76,15 @@ import '@videojs/html/ui/fullscreen-button';
76
76
 
77
77
  The [fullscreen feature](../reference/api/feature-fullscreen.md) tracks fullscreen state and provides the actions:
78
78
 
79
- - `fullscreen` is `true` while the player is fullscreen, from any path — your button, native controls, or the platform presentation.
79
+ - `isFullscreen` is `true` while the player is fullscreen, from any path — your button, native controls, or the platform presentation.
80
80
  - `fullscreenAvailability` is `'available'`, `'unavailable'`, or `'unsupported'`. It starts as `'unavailable'`, then settles to `'available'` or `'unsupported'` when the feature attaches to a media element.
81
- - `requestFullscreen()`, `exitFullscreen()`, and `toggleFullscreen()` change the presentation. Requests target the player container when the Fullscreen API is available, falling back to the media element’s native presentation otherwise.
81
+ - `requestFullscreen()` and `exitFullscreen()` change the presentation. When the Fullscreen API is available, requests target the player container. Otherwise they fall back to the media element’s native presentation.
82
82
 
83
83
  Fullscreen and picture-in-picture are exclusive: requesting fullscreen exits an active picture-in-picture presentation first.
84
84
 
85
- Style fullscreen state through the container’s `:fullscreen` pseudo-class, or through the `fullscreen` state in components.
85
+ Style fullscreen state through the container’s `:fullscreen` pseudo-class, the button’s `data-fullscreen` attribute, or `isFullscreen` in player state.
86
+
87
+ The built-in button hides when `fullscreenAvailability` is not `'available'`. Use the same check for custom controls and handle rejected requests. When the attached media has no supported fullscreen method, the action resolves without changing the presentation.
86
88
 
87
89
  ## Availability and constraints
88
90
 
@@ -97,13 +99,34 @@ Style fullscreen state through the container’s `:fullscreen` pseudo-class, or
97
99
 
98
100
  Add `orientationLockFeature` to lock screen orientation while the player is fullscreen. It isn’t part of `videoFeatures`, so the preset `<video-player>` doesn’t include it. It locks to `landscape` by default and unlocks on exit.
99
101
 
100
- Compose a player with `orientationLockFeature` in its feature list through [`createPlayer`](../reference/api/html-create-player.md); the prebuilt `<video-player>` element doesn’t include it.
102
+ Register a custom player tag with [`createPlayer`](../reference/api/html-create-player.md):
103
+
104
+ ```html
105
+ <orientation-player>
106
+ <media-container>
107
+ <video src="https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4" muted playsinline></video>
108
+ <media-fullscreen-button>Fullscreen</media-fullscreen-button>
109
+ </media-container>
110
+ </orientation-player>
111
+ <script type="module">
112
+ import { createPlayer, orientationLockFeature } from '@videojs/html';
113
+ import { videoFeatures } from '@videojs/html/video';
114
+ import '@videojs/html/ui/container';
115
+ import '@videojs/html/ui/fullscreen-button';
116
+
117
+ const { PlayerElement } = createPlayer({
118
+ features: [...videoFeatures, orientationLockFeature],
119
+ });
120
+
121
+ customElements.define('orientation-player', PlayerElement);
122
+ </script>
123
+ ```
101
124
 
102
125
  To lock to something other than `landscape`, set the `orientation-lock-type` attribute on the player. See the [orientation lock feature](../reference/api/feature-orientation-lock.md) reference for details.
103
126
 
104
127
  ### Double-click to toggle
105
128
 
106
- Use the `<media-gesture>` element — the default skins ship this exact binding. Keep the button as the accessible path; gestures are a pointer-only shortcut.
129
+ Use the `<media-gesture>` element — the packaged skins ship this exact binding. Keep the button as the accessible path; gestures are a pointer-only shortcut.
107
130
 
108
131
  ```html
109
132
  <media-gesture type="doubletap" action="toggleFullscreen" region="center"></media-gesture>
@@ -112,13 +135,17 @@ Use the `<media-gesture>` element — the default skins ship this exact binding.
112
135
  </script>
113
136
  ```
114
137
 
115
- `region="center"` keeps the gesture off the left and right thirds, which the default skins reserve for double-tap seeking. See [Add keyboard shortcuts and gestures](./keyboard-shortcuts.md) for the full gesture surface.
138
+ With left, center, and right double-tap bindings for the same pointer type, `region="center"` covers the middle third, as in the on-demand video skins. A center-only double-tap binding covers the whole surface. See [Add keyboard shortcuts and gestures](./keyboard-shortcuts.md) for region behavior.
116
139
 
117
140
  ## Troubleshooting
118
141
 
142
+ ### The fullscreen button doesn’t render
143
+
144
+ The button hides while `fullscreenAvailability` is `'unavailable'` or `'unsupported'`. Wait for media attachment, check browser support, and confirm that an embedding iframe permits fullscreen with `allow="fullscreen"`.
145
+
119
146
  ### The fullscreen request is rejected
120
147
 
121
- The request didn’t come from a user gesture, fullscreen is unsupported, or an embedding iframe lacks `allow="fullscreen"`.
148
+ Call the action directly from a click handler and check that an embedding iframe permits fullscreen with `allow="fullscreen"`. Handle the returned promise’s rejection. To detect unsupported fullscreen, check `fullscreenAvailability`; an unsupported request can resolve without entering fullscreen.
122
149
 
123
150
  ### Custom controls disappear in fullscreen on iPhone
124
151
 
@@ -10,7 +10,7 @@ Video.js can run directly from browser-ready files on jsDelivr. This HTML-only p
10
10
 
11
11
  > **Tip: Coming from another player?**
12
12
  >
13
- > Follow the migration guide for [Video.js 8](./migrate-from-video-js-8.md), [Mux Player](./migrate-from-mux-player.md), [Plyr](./migrate-from-plyr.md), or [Media Chrome](./migrate-from-media-chrome.md). Each maps your existing setup onto Video.js v10 instead of starting from scratch.
13
+ > Follow the migration guide for [Video.js 8](./migrate-from-video-js-8.md), [Mux Player](./migrate-from-mux-player.md), [Plyr](./migrate-from-plyr.md), [Media Chrome](./migrate-from-media-chrome.md), or [Vidstack](./migrate-from-vidstack.md). Each maps your existing setup onto Video.js v10 instead of starting from scratch.
14
14
 
15
15
  ## AI Quickstart
16
16
 
@@ -34,7 +34,7 @@ npx @videojs/cli agents init
34
34
 
35
35
  - `project`: Whether to adapt the current project or scaffold a new one. New projects need a named app setup. Values: `new`, `existing`. Default: existing.
36
36
  - `preset`: The player configuration and control set. Values: `video`, `audio`, `live-video`, `live-audio`, `background-video`. Default: video.
37
- - `skin`: The visual skin. Minimal has cleaner surfaces and the same controls as Default. Values: `default`, `minimal`, `none`. Default: default. Applies when preset is not background-video.
37
+ - `skin`: The visual skin. Neutral has cleaner surfaces and the same controls as Default. Values: `default`, `neutral`, `compat`, `none`. Default: default. Applies when preset is not background-video.
38
38
  - `media`: The media source or playback adapter. See the preset compatibility map below. Values: `background-video`, `hls-background-video`, `cloudflare`, `dash`, `hls`, `html5-audio`, `html5-video`, `mux-audio`, `mux-background-video`, `mux-video`, `spotify`, `tiktok`, `twitch`, `vimeo`, `youtube`. Default: the selected preset's first compatible media source.
39
39
  - `extensions`: A comma-separated list of optional player extensions compatible with the selected player. Pass `none` when no extension is needed. Values: `none`, `google-cast`, `mux-data`. Default: mux-data for Mux media; none otherwise (reported as defaulted).
40
40
  - `source-url`: The http:// or https:// media URL placed in the generated player example. Pass `demo` to choose the Video.js demo source for the selected media explicitly. Default: the Video.js demo source for the selected media (reported as defaulted).
@@ -48,7 +48,7 @@ Run the command above without flags to see the corresponding CLI flags for every
48
48
  1. **Inspect the project.** Read package.json, framework config, and lockfiles to infer the framework, app setup, and package manager. React installs @videojs/react; HTML, Vue, and Svelte install @videojs/html.
49
49
  2. **Choose the starting point.** Use existing when adapting a compatible project. Use new only when the user wants a new app or the intended workspace has no app. Confirm the choice when the workspace and request do not make it clear.
50
50
  3. **Choose the player.** Use video unless the request signals another experience: audio, music, or podcasts use audio; a live stream uses live-video or live-audio; a muted, looping decorative video uses background-video. Ask only when those signals conflict.
51
- 4. **Choose the skin.** Use default unless the request asks for a minimal, cleaner, or more subtle look, which uses minimal; both contain the same controls. Use none only when the project builds its own controls. Ask only when those signals conflict.
51
+ 4. **Choose the skin.** Use default unless the request asks for a minimal, cleaner, or more subtle look, which uses neutral; both contain the same controls. Use none only when the project builds its own controls. Ask only when those signals conflict.
52
52
  5. **Choose the media.** Infer the adapter from the source when possible. Mux wins for Mux playback URLs: stream.mux.com/\<playback-id>.m3u8 or a bare playback ID uses mux-video, mux-audio, or mux-background-video rather than hls. Mux static renditions such as .mp4 or .m4a files use html5-video or html5-audio. Other .m3u8 URLs use hls.
53
53
  6. **Choose extensions.** Mux Data is included by default for Mux video and audio sources. Add Google Cast when a standard or live video player with a ready-made skin should cast a compatible source. Use none when no extension is needed.
54
54
  7. **Choose how to install.** This guide uses CDN scripts for plain HTML. Use an existing page when one is available, and scaffold a minimal Vite app only when no app exists.
@@ -93,7 +93,7 @@ Defaulted options: project, preset, skin, source-url, media, extensions, templat
93
93
  ## Reproduce or change these instructions
94
94
 
95
95
  ```sh
96
- npx @videojs/cli@10.0.0-rc.4 agents init --method cdn --framework html --project existing --preset video --skin default --media html5-video --extensions none --source-url https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4 --template none
96
+ npx @videojs/cli@10.0.0-rc.5 agents init --method cdn --framework html --project existing --preset video --skin default --media html5-video --extensions none --source-url https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4 --template none
97
97
  ```
98
98
 
99
99
  ## Load Video.js
@@ -105,7 +105,7 @@ Add these module scripts to the page head. Module scripts are deferred, so they
105
105
  _Merge this into the page `<head>`._
106
106
 
107
107
  ```html
108
- <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.4/video.js"></script>
108
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.5/video.js"></script>
109
109
  ```
110
110
 
111
111
  ## Add your player
@@ -10,7 +10,7 @@ Use Shadcn to add a Video.js skin's components, layout, styles, and interactions
10
10
 
11
11
  > **Tip: Coming from another player?**
12
12
  >
13
- > Follow the HTML migration guide for [Video.js 8](./migrate-from-video-js-8.md), [Mux Player](./migrate-from-mux-player.md), [Plyr](./migrate-from-plyr.md), or [Media Chrome](./migrate-from-media-chrome.md). Each maps your existing setup onto Video.js v10 instead of starting from scratch.
13
+ > Follow the HTML migration guide for [Video.js 8](./migrate-from-video-js-8.md), [Mux Player](./migrate-from-mux-player.md), [Plyr](./migrate-from-plyr.md), [Media Chrome](./migrate-from-media-chrome.md), or [Vidstack](./migrate-from-vidstack.md). Each maps your existing setup onto Video.js v10 instead of starting from scratch.
14
14
 
15
15
  ## AI Quickstart
16
16
 
@@ -35,7 +35,7 @@ npx @videojs/cli agents init
35
35
  - `framework`: The application framework that will host the player. React installs @videojs/react; HTML, Vue, and Svelte install @videojs/html. Values: `react`, `html`. Default: react.
36
36
  - `project`: Whether to adapt the current project or scaffold a new one. New projects need a named app setup. Values: `new`, `existing`. Default: existing.
37
37
  - `preset`: The player configuration and control set. Values: `video`, `audio`, `live-video`, `live-audio`. Default: video.
38
- - `skin`: The visual skin. Minimal has cleaner surfaces and the same controls as Default. Values: `default`, `minimal`. Default: default. Applies when preset is not background-video.
38
+ - `skin`: The visual skin. Neutral has cleaner surfaces and the same controls as Default. Values: `default`, `neutral`, `compat`. Default: default. Applies when preset is not background-video.
39
39
  - `media`: The media source or playback adapter. See the preset compatibility map below. Values: `background-video`, `hls-background-video`, `cloudflare`, `dash`, `hls`, `html5-audio`, `html5-video`, `mux-audio`, `mux-background-video`, `mux-video`, `spotify`, `tiktok`, `twitch`, `vimeo`, `youtube`. Default: the selected preset's first compatible media source.
40
40
  - `extensions`: A comma-separated list of optional player extensions compatible with the selected player. Pass `none` when no extension is needed. Values: `none`, `google-cast`, `mux-data`. Default: mux-data for Mux media; none otherwise (reported as defaulted).
41
41
  - `source-url`: The http:// or https:// media URL placed in the generated player example. Pass `demo` to choose the Video.js demo source for the selected media explicitly. Default: the Video.js demo source for the selected media (reported as defaulted).
@@ -50,7 +50,7 @@ Run the command above without flags to see the corresponding CLI flags for every
50
50
  1. **Inspect the project.** Read package.json, framework config, and lockfiles to infer the framework, app setup, and package manager. React installs @videojs/react; HTML, Vue, and Svelte install @videojs/html.
51
51
  2. **Choose the starting point.** Use existing when adapting a compatible project. Use new only when the user wants a new app or the intended workspace has no app. Confirm the choice when the workspace and request do not make it clear.
52
52
  3. **Choose the player.** Use video unless the request signals another experience: audio, music, or podcasts use audio; a live stream uses live-video or live-audio; a muted, looping decorative video uses background-video. Ask only when those signals conflict.
53
- 4. **Choose the skin.** Use default unless the request asks for a minimal, cleaner, or more subtle look, which uses minimal; both contain the same controls. Ask only when those signals conflict.
53
+ 4. **Choose the skin.** Use default unless the request asks for a minimal, cleaner, or more subtle look, which uses neutral; both contain the same controls. Ask only when those signals conflict.
54
54
  5. **Choose the media.** Infer the adapter from the source when possible. Mux wins for Mux playback URLs: stream.mux.com/\<playback-id>.m3u8 or a bare playback ID uses mux-video, mux-audio, or mux-background-video rather than hls. Mux static renditions such as .mp4 or .m4a files use html5-video or html5-audio. Other .m3u8 URLs use hls.
55
55
  6. **Choose extensions.** Mux Data is included by default for Mux video and audio sources. Add Google Cast when a standard or live video player with a ready-made skin should cast a compatible source. Use none when no extension is needed.
56
56
  7. **Choose how to install.** This guide uses Shadcn to copy editable skin source. React uses the React source catalog; plain HTML uses the HTML source catalog. Vue and Svelte use packaged modules.
@@ -98,7 +98,7 @@ Defaulted options: project, preset, skin, source-url, media, extensions, templat
98
98
  ## Reproduce or change these instructions
99
99
 
100
100
  ```sh
101
- npx @videojs/cli@10.0.0-rc.4 agents init --method shadcn --framework html --project existing --preset video --skin default --media html5-video --extensions none --source-url https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4 --package-manager pnpm --template vite --styling css
101
+ npx @videojs/cli@10.0.0-rc.5 agents init --method shadcn --framework html --project existing --preset video --skin default --media html5-video --extensions none --source-url https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4 --package-manager pnpm --template vite --styling css
102
102
  ```
103
103
 
104
104
  ## Configure app aliases
@@ -10,7 +10,7 @@ Svelte apps built with Vite, Astro, or SvelteKit use Video.js HTML custom elemen
10
10
 
11
11
  > **Tip: Coming from another player?**
12
12
  >
13
- > Follow the migration guide for [Video.js 8](./migrate-from-video-js-8.md), [Mux Player](./migrate-from-mux-player.md), [Plyr](./migrate-from-plyr.md), or [Media Chrome](./migrate-from-media-chrome.md). Each maps your existing setup onto Video.js v10 instead of starting from scratch.
13
+ > Follow the migration guide for [Video.js 8](./migrate-from-video-js-8.md), [Mux Player](./migrate-from-mux-player.md), [Plyr](./migrate-from-plyr.md), [Media Chrome](./migrate-from-media-chrome.md), or [Vidstack](./migrate-from-vidstack.md). Each maps your existing setup onto Video.js v10 instead of starting from scratch.
14
14
 
15
15
  ## AI Quickstart
16
16
 
@@ -34,7 +34,7 @@ npx @videojs/cli agents init
34
34
 
35
35
  - `project`: Whether to adapt the current project or scaffold a new one. New projects need a named app setup. Values: `new`, `existing`. Default: existing.
36
36
  - `preset`: The player configuration and control set. Values: `video`, `audio`, `live-video`, `live-audio`, `background-video`. Default: video.
37
- - `skin`: The visual skin. Minimal has cleaner surfaces and the same controls as Default. Values: `default`, `minimal`, `none`. Default: default. Applies when preset is not background-video.
37
+ - `skin`: The visual skin. Neutral has cleaner surfaces and the same controls as Default. Values: `default`, `neutral`, `compat`, `none`. Default: default. Applies when preset is not background-video.
38
38
  - `media`: The media source or playback adapter. See the preset compatibility map below. Values: `background-video`, `hls-background-video`, `cloudflare`, `dash`, `hls`, `html5-audio`, `html5-video`, `mux-audio`, `mux-background-video`, `mux-video`, `spotify`, `tiktok`, `twitch`, `vimeo`, `youtube`. Default: the selected preset's first compatible media source.
39
39
  - `extensions`: A comma-separated list of optional player extensions compatible with the selected player. Pass `none` when no extension is needed. Values: `none`, `google-cast`, `mux-data`. Default: mux-data for Mux media; none otherwise (reported as defaulted).
40
40
  - `source-url`: The http:// or https:// media URL placed in the generated player example. Pass `demo` to choose the Video.js demo source for the selected media explicitly. Default: the Video.js demo source for the selected media (reported as defaulted).
@@ -48,7 +48,7 @@ Run the command above without flags to see the corresponding CLI flags for every
48
48
  1. **Inspect the project.** Read package.json, framework config, and lockfiles to infer the framework, app setup, and package manager. React installs @videojs/react; HTML, Vue, and Svelte install @videojs/html.
49
49
  2. **Choose the starting point.** Use existing when adapting a compatible project. Use new only when the user wants a new app or the intended workspace has no app. Confirm the choice when the workspace and request do not make it clear.
50
50
  3. **Choose the player.** Use video unless the request signals another experience: audio, music, or podcasts use audio; a live stream uses live-video or live-audio; a muted, looping decorative video uses background-video. Ask only when those signals conflict.
51
- 4. **Choose the skin.** Use default unless the request asks for a minimal, cleaner, or more subtle look, which uses minimal; both contain the same controls. Use none only when the project builds its own controls. Ask only when those signals conflict.
51
+ 4. **Choose the skin.** Use default unless the request asks for a minimal, cleaner, or more subtle look, which uses neutral; both contain the same controls. Use none only when the project builds its own controls. Ask only when those signals conflict.
52
52
  5. **Choose the media.** Infer the adapter from the source when possible. Mux wins for Mux playback URLs: stream.mux.com/\<playback-id>.m3u8 or a bare playback ID uses mux-video, mux-audio, or mux-background-video rather than hls. Mux static renditions such as .mp4 or .m4a files use html5-video or html5-audio. Other .m3u8 URLs use hls.
53
53
  6. **Choose extensions.** Mux Data is included by default for Mux video and audio sources. Add Google Cast when a standard or live video player with a ready-made skin should cast a compatible source. Use none when no extension is needed.
54
54
  7. **Choose how to install.** This guide uses packaged modules, which need a bundler. Match the package manager to the project lockfile. For an existing HTML site without a build step, use CDN scripts instead.
@@ -94,13 +94,13 @@ Defaulted options: project, preset, skin, source-url, media, extensions, templat
94
94
  ## Reproduce or change these instructions
95
95
 
96
96
  ```sh
97
- npx @videojs/cli@10.0.0-rc.4 agents init --method packaged --framework svelte --project existing --preset video --skin default --media html5-video --extensions none --source-url https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4 --package-manager pnpm --template vite
97
+ npx @videojs/cli@10.0.0-rc.5 agents init --method packaged --framework svelte --project existing --preset video --skin default --media html5-video --extensions none --source-url https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4 --package-manager pnpm --template vite
98
98
  ```
99
99
 
100
100
  ## Install the packages
101
101
 
102
102
  ```bash
103
- pnpm add @videojs/html@10.0.0-rc.4
103
+ pnpm add @videojs/html@10.0.0-rc.5
104
104
  ```
105
105
 
106
106
  ## Add your player
@@ -10,7 +10,7 @@ Vue apps built with Vite, Astro, or Nuxt use Video.js HTML custom elements direc
10
10
 
11
11
  > **Tip: Coming from another player?**
12
12
  >
13
- > Follow the migration guide for [Video.js 8](./migrate-from-video-js-8.md), [Mux Player](./migrate-from-mux-player.md), [Plyr](./migrate-from-plyr.md), or [Media Chrome](./migrate-from-media-chrome.md). Each maps your existing setup onto Video.js v10 instead of starting from scratch.
13
+ > Follow the migration guide for [Video.js 8](./migrate-from-video-js-8.md), [Mux Player](./migrate-from-mux-player.md), [Plyr](./migrate-from-plyr.md), [Media Chrome](./migrate-from-media-chrome.md), or [Vidstack](./migrate-from-vidstack.md). Each maps your existing setup onto Video.js v10 instead of starting from scratch.
14
14
 
15
15
  ## AI Quickstart
16
16
 
@@ -34,7 +34,7 @@ npx @videojs/cli agents init
34
34
 
35
35
  - `project`: Whether to adapt the current project or scaffold a new one. New projects need a named app setup. Values: `new`, `existing`. Default: existing.
36
36
  - `preset`: The player configuration and control set. Values: `video`, `audio`, `live-video`, `live-audio`, `background-video`. Default: video.
37
- - `skin`: The visual skin. Minimal has cleaner surfaces and the same controls as Default. Values: `default`, `minimal`, `none`. Default: default. Applies when preset is not background-video.
37
+ - `skin`: The visual skin. Neutral has cleaner surfaces and the same controls as Default. Values: `default`, `neutral`, `compat`, `none`. Default: default. Applies when preset is not background-video.
38
38
  - `media`: The media source or playback adapter. See the preset compatibility map below. Values: `background-video`, `hls-background-video`, `cloudflare`, `dash`, `hls`, `html5-audio`, `html5-video`, `mux-audio`, `mux-background-video`, `mux-video`, `spotify`, `tiktok`, `twitch`, `vimeo`, `youtube`. Default: the selected preset's first compatible media source.
39
39
  - `extensions`: A comma-separated list of optional player extensions compatible with the selected player. Pass `none` when no extension is needed. Values: `none`, `google-cast`, `mux-data`. Default: mux-data for Mux media; none otherwise (reported as defaulted).
40
40
  - `source-url`: The http:// or https:// media URL placed in the generated player example. Pass `demo` to choose the Video.js demo source for the selected media explicitly. Default: the Video.js demo source for the selected media (reported as defaulted).
@@ -48,7 +48,7 @@ Run the command above without flags to see the corresponding CLI flags for every
48
48
  1. **Inspect the project.** Read package.json, framework config, and lockfiles to infer the framework, app setup, and package manager. React installs @videojs/react; HTML, Vue, and Svelte install @videojs/html.
49
49
  2. **Choose the starting point.** Use existing when adapting a compatible project. Use new only when the user wants a new app or the intended workspace has no app. Confirm the choice when the workspace and request do not make it clear.
50
50
  3. **Choose the player.** Use video unless the request signals another experience: audio, music, or podcasts use audio; a live stream uses live-video or live-audio; a muted, looping decorative video uses background-video. Ask only when those signals conflict.
51
- 4. **Choose the skin.** Use default unless the request asks for a minimal, cleaner, or more subtle look, which uses minimal; both contain the same controls. Use none only when the project builds its own controls. Ask only when those signals conflict.
51
+ 4. **Choose the skin.** Use default unless the request asks for a minimal, cleaner, or more subtle look, which uses neutral; both contain the same controls. Use none only when the project builds its own controls. Ask only when those signals conflict.
52
52
  5. **Choose the media.** Infer the adapter from the source when possible. Mux wins for Mux playback URLs: stream.mux.com/\<playback-id>.m3u8 or a bare playback ID uses mux-video, mux-audio, or mux-background-video rather than hls. Mux static renditions such as .mp4 or .m4a files use html5-video or html5-audio. Other .m3u8 URLs use hls.
53
53
  6. **Choose extensions.** Mux Data is included by default for Mux video and audio sources. Add Google Cast when a standard or live video player with a ready-made skin should cast a compatible source. Use none when no extension is needed.
54
54
  7. **Choose how to install.** This guide uses packaged modules, which need a bundler. Match the package manager to the project lockfile. For an existing HTML site without a build step, use CDN scripts instead.
@@ -94,13 +94,13 @@ Defaulted options: project, preset, skin, source-url, media, extensions, templat
94
94
  ## Reproduce or change these instructions
95
95
 
96
96
  ```sh
97
- npx @videojs/cli@10.0.0-rc.4 agents init --method packaged --framework vue --project existing --preset video --skin default --media html5-video --extensions none --source-url https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4 --package-manager pnpm --template vite
97
+ npx @videojs/cli@10.0.0-rc.5 agents init --method packaged --framework vue --project existing --preset video --skin default --media html5-video --extensions none --source-url https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4 --package-manager pnpm --template vite
98
98
  ```
99
99
 
100
100
  ## Install the packages
101
101
 
102
102
  ```bash
103
- pnpm add @videojs/html@10.0.0-rc.4
103
+ pnpm add @videojs/html@10.0.0-rc.5
104
104
  ```
105
105
 
106
106
  ## Register custom elements
@@ -10,7 +10,7 @@ Video.js is an **HTML video player built on custom elements**: lightweight, fram
10
10
 
11
11
  > **Tip: Coming from another player?**
12
12
  >
13
- > Follow the migration guide for [Video.js 8](./migrate-from-video-js-8.md), [Mux Player](./migrate-from-mux-player.md), [Plyr](./migrate-from-plyr.md), or [Media Chrome](./migrate-from-media-chrome.md). Each maps your existing setup onto Video.js v10 instead of starting from scratch.
13
+ > Follow the migration guide for [Video.js 8](./migrate-from-video-js-8.md), [Mux Player](./migrate-from-mux-player.md), [Plyr](./migrate-from-plyr.md), [Media Chrome](./migrate-from-media-chrome.md), or [Vidstack](./migrate-from-vidstack.md). Each maps your existing setup onto Video.js v10 instead of starting from scratch.
14
14
 
15
15
  ## AI Quickstart
16
16
 
@@ -34,7 +34,7 @@ npx @videojs/cli agents init
34
34
 
35
35
  - `project`: Whether to adapt the current project or scaffold a new one. New projects need a named app setup. Values: `new`, `existing`. Default: existing.
36
36
  - `preset`: The player configuration and control set. Values: `video`, `audio`, `live-video`, `live-audio`, `background-video`. Default: video.
37
- - `skin`: The visual skin. Minimal has cleaner surfaces and the same controls as Default. Values: `default`, `minimal`, `none`. Default: default. Applies when preset is not background-video.
37
+ - `skin`: The visual skin. Neutral has cleaner surfaces and the same controls as Default. Values: `default`, `neutral`, `compat`, `none`. Default: default. Applies when preset is not background-video.
38
38
  - `media`: The media source or playback adapter. See the preset compatibility map below. Values: `background-video`, `hls-background-video`, `cloudflare`, `dash`, `hls`, `html5-audio`, `html5-video`, `mux-audio`, `mux-background-video`, `mux-video`, `spotify`, `tiktok`, `twitch`, `vimeo`, `youtube`. Default: the selected preset's first compatible media source.
39
39
  - `extensions`: A comma-separated list of optional player extensions compatible with the selected player. Pass `none` when no extension is needed. Values: `none`, `google-cast`, `mux-data`. Default: mux-data for Mux media; none otherwise (reported as defaulted).
40
40
  - `source-url`: The http:// or https:// media URL placed in the generated player example. Pass `demo` to choose the Video.js demo source for the selected media explicitly. Default: the Video.js demo source for the selected media (reported as defaulted).
@@ -48,7 +48,7 @@ Run the command above without flags to see the corresponding CLI flags for every
48
48
  1. **Inspect the project.** Read package.json, framework config, and lockfiles to infer the framework, app setup, and package manager. React installs @videojs/react; HTML, Vue, and Svelte install @videojs/html.
49
49
  2. **Choose the starting point.** Use existing when adapting a compatible project. Use new only when the user wants a new app or the intended workspace has no app. Confirm the choice when the workspace and request do not make it clear.
50
50
  3. **Choose the player.** Use video unless the request signals another experience: audio, music, or podcasts use audio; a live stream uses live-video or live-audio; a muted, looping decorative video uses background-video. Ask only when those signals conflict.
51
- 4. **Choose the skin.** Use default unless the request asks for a minimal, cleaner, or more subtle look, which uses minimal; both contain the same controls. Use none only when the project builds its own controls. Ask only when those signals conflict.
51
+ 4. **Choose the skin.** Use default unless the request asks for a minimal, cleaner, or more subtle look, which uses neutral; both contain the same controls. Use none only when the project builds its own controls. Ask only when those signals conflict.
52
52
  5. **Choose the media.** Infer the adapter from the source when possible. Mux wins for Mux playback URLs: stream.mux.com/\<playback-id>.m3u8 or a bare playback ID uses mux-video, mux-audio, or mux-background-video rather than hls. Mux static renditions such as .mp4 or .m4a files use html5-video or html5-audio. Other .m3u8 URLs use hls.
53
53
  6. **Choose extensions.** Mux Data is included by default for Mux video and audio sources. Add Google Cast when a standard or live video player with a ready-made skin should cast a compatible source. Use none when no extension is needed.
54
54
  7. **Choose how to install.** This guide uses packaged modules, which need a bundler. Match the package manager to the project lockfile. For an existing HTML site without a build step, use CDN scripts instead.
@@ -96,13 +96,13 @@ Defaulted options: project, preset, skin, source-url, media, extensions, templat
96
96
  ## Reproduce or change these instructions
97
97
 
98
98
  ```sh
99
- npx @videojs/cli@10.0.0-rc.4 agents init --method packaged --framework html --project existing --preset video --skin default --media html5-video --extensions none --source-url https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4 --package-manager pnpm --template vite
99
+ npx @videojs/cli@10.0.0-rc.5 agents init --method packaged --framework html --project existing --preset video --skin default --media html5-video --extensions none --source-url https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4 --package-manager pnpm --template vite
100
100
  ```
101
101
 
102
102
  ## Install the packages
103
103
 
104
104
  ```bash
105
- pnpm add @videojs/html@10.0.0-rc.4
105
+ pnpm add @videojs/html@10.0.0-rc.5
106
106
  ```
107
107
 
108
108
  ## Add your player
@@ -6,7 +6,7 @@ Translate every player label, tooltip, and screen-reader announcement. The playe
6
6
 
7
7
  ## Recommended approach
8
8
 
9
- Wrap the player in the i18n provider. It resolves the locale from your page’s `lang` attribute (or an explicit override), lazy-loads the matching locale pack, and every component label follows.
9
+ Wrap the player in the i18n provider. It resolves the locale from your page’s `lang` attribute or an explicit override, then lazy-loads the matching locale pack. Every component label follows that locale.
10
10
 
11
11
  ```html
12
12
  <media-i18n lang="ja">
@@ -19,6 +19,7 @@ Wrap the player in the i18n provider. It resolves the locale from your page’s
19
19
  <script type="module">
20
20
  import '@videojs/html/i18n';
21
21
  import '@videojs/html/video/player';
22
+ import '@videojs/html/ui/container';
22
23
  </script>
23
24
  ```
24
25
 
@@ -77,10 +78,11 @@ Pick a language and every label follows — no remount:
77
78
  **index.ts**
78
79
 
79
80
  ```ts
80
- import { LOCALES } from '@videojs/html/i18n';
81
+ import '@videojs/html/i18n';
81
82
  import '@videojs/html/video/player';
82
83
  import '@videojs/html/video/skin';
83
84
 
85
+ const locales = ['en', 'es', 'fr', 'de', 'ja', 'ar'];
84
86
  const languageNames = new Intl.DisplayNames(['en'], { type: 'language' });
85
87
  const initializedDemos = new WeakSet<HTMLElement>();
86
88
 
@@ -93,7 +95,7 @@ function initializeDemos(): void {
93
95
  const select = demo.querySelector('select');
94
96
  const provider = demo.querySelector('media-i18n');
95
97
 
96
- for (const locale of ['en', ...LOCALES]) {
98
+ for (const locale of locales) {
97
99
  const option = document.createElement('option');
98
100
 
99
101
  option.value = locale;
@@ -113,15 +115,19 @@ document.addEventListener('astro:page-load', initializeDemos);
113
115
 
114
116
  ## How it works
115
117
 
116
- - Component labels are text descriptors — a translation key plus its English default — so everything renders in English with no setup and switches language when a translator is present. Keys are stable: `buttons.play` stays `buttons.play` even if the English wording changes.
117
- - The provider resolves the locale: explicit `lang` on `<media-i18n>` first, then the nearest ancestor `lang` attribute, then `'en'`. It re-resolves when the page’s `lang` changes.
118
- - The provider lazy-loads the pack for the resolved locale automatically and keeps it in a layer above the shared registry ([`registerI18n`](../reference/api/register-i18n.md)). Translations merge along a fallback chain that follows the [BCP 47](https://www.rfc-editor.org/rfc/rfc5646) parent tags — `es-MX` checks `es`, then `en` — so a regional pack only has to carry the text that differs from its parent.
119
- - Each piece of text resolves from the first source that has it:
120
- 1. Registered custom translations
121
- 2. A built-in locale pack
122
- 3. The component’s English fallback
123
- - `registerI18n(locale, translations)` **merges**: each call adds or replaces keys for that locale without wiping prior registrations, and later registrations win for the same key. Register a locale before the provider resolves it — a pack the provider already lazy-loaded sits above the registry and hides registry entries for that locale. Overriding a handful of strings is the same call as registering a full locale.
124
- - When no shipped pack matches the locale, the provider can fall back to the browser’s on-device Translation API to machine-translate the English catalogue, with placeholders preserved.
118
+ Component labels carry a translation key and an English default. The provider loads the resolved locale’s pack on demand. Locale fallback follows [BCP 47](https://www.rfc-editor.org/rfc/rfc5646) parent tags: `es-MX` checks `es`, then `en`.
119
+
120
+ `<media-i18n>` uses its own `lang`, then the nearest ancestor’s `lang`, then `'en'`. It follows changes to the ancestor language when its own `lang` is omitted.
121
+
122
+ Each label uses the first available value:
123
+
124
+ 1. The shared registry
125
+ 2. The lazy-loaded locale pack
126
+ 3. The component’s English default
127
+
128
+ [`registerI18n(locale, translations)`](../reference/api/register-i18n.md) adds or replaces keys in the shared registry. Mounted providers pick up later registrations. Registering any strings for a locale prevents its pack from loading automatically. For partial global overrides, import the locale’s `/register` entry first, as shown below. This keeps the full translation available after a locale switch or provider remount.
129
+
130
+ When no shipped pack matches, the provider can use the browser’s on-device Translation API. Supply your own translations when you need reviewed wording or consistent availability across browsers.
125
131
 
126
132
  Translate your own UI with the same machinery:
127
133
 
@@ -135,7 +141,7 @@ The element’s text content is the English default; the `token` selects the tra
135
141
 
136
142
  - English is built in; every other locale is a lazy-loaded pack.
137
143
  - Locale tags are [BCP 47](https://www.rfc-editor.org/rfc/rfc5646) (`es`, `pt-BR`).
138
- - Translation keys are namespaced strings (`buttons.play`, `errors.network`, `menu.quality`); the full list lives at [Translation phrases](../reference/api/translation-phrases.md) and is typed, so typos in `registerI18n` objects fail in TypeScript. The translator itself accepts any string; a mistyped `t()` key falls back to its `default`.
144
+ - Translation keys are namespaced strings (`buttons.play`, `errors.network`, `menu.quality`). The full list is in [Translation phrases](../reference/api/translation-phrases.md). The keys are typed, so typos in `registerI18n` objects fail in TypeScript. The translator itself accepts any string; a mistyped `t()` key falls back to its `default`.
139
145
  - Some strings interpolate parameters; custom translations must keep the placeholders:
140
146
 
141
147
  ```ts
@@ -159,16 +165,16 @@ import { registerI18n } from '@videojs/html/i18n';
159
165
  registerI18n('ja', { buttons: { play: '再生', pause: '一時停止' } });
160
166
  ```
161
167
 
162
- Only the keys you pass change; the rest of the `ja` pack stays intact. Keep the `/register` import first: it must run before `<media-i18n>` upgrades, or the provider lazy-loads the shipped pack and that pack hides your overrides.
168
+ Import the full pack before registering partial overrides so the remaining labels stay in Japanese. If you register overrides after the pack lazy-loads, they apply immediately. After a locale switch or remount, the provider will not reload the pack, so the remaining labels can fall back to English. Importing `/register` first preserves those labels.
163
169
 
164
170
  ### Register your own locale
165
171
 
166
- Registered packs are partial: missing keys fall back through the locale chain to a shipped pack or English.
172
+ Register strings for a locale your application supports. Missing keys fall back to registered parent strings, then a shipped parent pack, then English. For example, register a few `es-MX` labels and the `es` pack supplies the rest. If the tag has its own shipped pack, registering strings for it prevents that pack from loading. Use the full-pack pattern above for that case.
167
173
 
168
174
  ```ts
169
175
  import { registerI18n, type Translations } from '@videojs/html/i18n';
170
176
 
171
- const es = {
177
+ const esMX = {
172
178
  buttons: {
173
179
  play: 'Reproducir',
174
180
  pause: 'Pausa',
@@ -177,12 +183,12 @@ const es = {
177
183
  },
178
184
  } satisfies Partial<Translations>;
179
185
 
180
- registerI18n('es', es);
186
+ registerI18n('es-MX', esMX);
181
187
  ```
182
188
 
183
189
  ### Register a pack with the bundle
184
190
 
185
- Skip lazy loading by registering a shipped locale at startup with a side-effect import. First paint is synchronous in that language:
191
+ Skip lazy loading by registering a shipped locale at startup with a side-effect import. Labels render in that language on first paint:
186
192
 
187
193
  ```ts
188
194
  import '@videojs/html/i18n/locales/ja/register';
@@ -193,23 +199,24 @@ import '@videojs/html/i18n/locales/ja/register';
193
199
  CDN locale modules call `registerI18n` on import. Pin every URL to the same version:
194
200
 
195
201
  ```html
196
- <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.4/locales/es.js"></script>
197
- <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.4/video.js"></script>
202
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.5/locales/es.js"></script>
203
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.5/video.js"></script>
198
204
  ```
199
205
 
200
- For custom strings, import `registerI18n` from the version-pinned `i18n.js` that matches your player script. The player’s chunks import that exact URL, so a different or unversioned URL loads a second copy of the module with its own registry, and your strings never reach the player. Load your module before the player script so the strings are registered when the elements upgrade:
206
+ Use the same pinned version for your locale pack, `i18n.js`, and player script. Copies loaded in the same window share a registry; matching versions keeps their translation keys and APIs compatible. Import the full locale pack before partial overrides, and register before the player loads to translate the first render:
201
207
 
202
208
  **my-locale.js**
203
209
 
204
210
  ```js
205
- import { registerI18n } from 'https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.4/i18n.js';
211
+ import 'https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.5/locales/es.js';
212
+ import { registerI18n } from 'https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.5/i18n.js';
206
213
 
207
214
  registerI18n('es', { buttons: { play: 'Reproducir', pause: 'Pausa' } });
208
215
  ```
209
216
 
210
217
  ```html
211
218
  <script type="module" src="/my-locale.js"></script>
212
- <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.4/video.js"></script>
219
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-rc.5/video.js"></script>
213
220
  ```
214
221
 
215
222
  ### Switch locale at runtime
@@ -220,7 +227,7 @@ The simplest switch updates the document language and lets providers pick it up
220
227
  document.documentElement.lang = 'fr';
221
228
  ```
222
229
 
223
- Ambient switching only applies when `<media-i18n>` has no explicit `lang` attribute. To switch explicitly, set the provider’s `lang`:
230
+ Switching through the document language works only when `<media-i18n>` has no explicit `lang` attribute. To switch explicitly, set the provider’s `lang`:
224
231
 
225
232
  ```js
226
233
  document.querySelector('media-i18n').lang = 'fr';
@@ -252,7 +259,7 @@ Providers without an explicit locale inherit ambient document language and direc
252
259
  <html lang="ar" dir="rtl">
253
260
  ```
254
261
 
255
- RTL preserves playback control ordering and time-semantic media icons while mirroring menu motion and navigation chevrons. Horizontal time and volume sliders retain a physical left-to-right value scale: Left Arrow decreases the value, Right Arrow increases it, and the minimum remains on the left.
262
+ In RTL layouts, playback controls keep their order and time-related media icons keep their direction. Menu motion and navigation chevrons mirror. Horizontal time and volume sliders retain a physical left-to-right value scale: Left Arrow decreases the value, Right Arrow increases it, and the minimum remains on the left.
256
263
 
257
264
  ### Replace a component’s visible text
258
265
 
@@ -275,8 +282,10 @@ Render the document language on the server (`<html lang="es">`) and make transla
275
282
  Emit `lang`, wrap the player with `<media-i18n>`, and register packs in the entry module loaded before custom elements upgrade:
276
283
 
277
284
  ```ts
278
- import '@videojs/html/video/player';
279
285
  import '@videojs/html/i18n/locales/es/register';
286
+ import '@videojs/html/i18n';
287
+ import '@videojs/html/video/player';
288
+ import '@videojs/html/ui/container';
280
289
  ```
281
290
 
282
291
  > **Caution**
@@ -287,11 +296,11 @@ import '@videojs/html/i18n/locales/es/register';
287
296
 
288
297
  ### Labels stay in English
289
298
 
290
- No provider is mounted, or the locale never resolved: check the `locale`/`lang` value and that it matches a shipped pack (regional tags fall back — `pt-BR` works; a bare unknown tag falls through to English).
299
+ Check that a provider is mounted and that its `locale`/`lang` value matches a shipped pack. Regional tags fall back to their base language, so `pt-BR` works. An unmatched language falls back to English unless the browser’s Translation API supplies translations; register your own pack for consistent coverage.
291
300
 
292
301
  ### Some strings are translated, others aren’t
293
302
 
294
- A partial override or partial pack: missing keys fall back through the locale chain to English. Fill in the missing keys with `registerI18n`.
303
+ If you registered partial global overrides before the locale pack loaded, the loader skips that pack. Import its `/register` entry before your overrides. For a custom locale, supply missing keys in your pack; they fall back to English until you do.
295
304
 
296
305
  ### Translations flash in after load or after switching
297
306
 
@@ -10,7 +10,7 @@ Add keyboard shortcuts and pointer gestures to the player declaratively, with on
10
10
 
11
11
  ## Recommended approach
12
12
 
13
- Declare shortcuts with `<media-hotkey>` and gestures with `<media-gesture>` inside the player container. Each maps an input to a player action; the prebuilt skins ship a full set.
13
+ Declare shortcuts with `<media-hotkey>` and gestures with `<media-gesture>` inside the player container. Each maps an input to a player action. The packaged skins include bindings suited to their player preset.
14
14
 
15
15
  ```html
16
16
  <video-player>
@@ -31,39 +31,51 @@ Declare shortcuts with `<media-hotkey>` and gestures with `<media-gesture>` insi
31
31
  </video-player>
32
32
  <script type="module">
33
33
  import '@videojs/html/video/player';
34
+ import '@videojs/html/ui/container';
34
35
  import '@videojs/html/ui/hotkey';
35
- import { GestureElement } from '@videojs/html';
36
-
37
- // Gesture has no standalone define entry; register the element directly.
38
- customElements.define(GestureElement.tagName, GestureElement);
36
+ import '@videojs/html/ui/gesture';
39
37
  </script>
40
38
  ```
41
39
 
42
40
  ## How it works
43
41
 
44
- - `<media-hotkey>` binds keys to player actions: `togglePaused`, `toggleMuted`, `toggleFullscreen`, `toggleSubtitles`, `togglePictureInPicture`, `seekStep`, `volumeStep`, `seekToPercent`, `speedUp`, and `speedDown`. Step actions have shared defaults and accept a custom `value`. The actions call the same feature state actions your components use.
45
- - `<media-gesture>` binds pointer input — `tap` and `doubletap` — to the same actions, minus `seekToPercent` and plus `toggleControls`. Bindings are scoped by `pointer` (`mouse` or `touch`) and `region` (`left`, `center`, `right`) — regions split the container’s width, not the rendered video’s — so double-tap-left rewinds while double-tap-right skips forward.
46
- - `<media-status-announcer>` announces action results to screen readers, and the input indicator components render transient on-screen feedback (volume level, captions on/off) the way native players do. The prebuilt skins wire these up.
42
+ - `<media-hotkey>` binds keys to player actions: `togglePaused`, `toggleMuted`, `toggleFullscreen`, `toggleSubtitles`, `togglePictureInPicture`, `seekStep`, `volumeStep`, `seekToPercent`, `speedUp`, and `speedDown`. `seekStep` and `volumeStep` use a default step unless you pass a custom `value`. These input actions call the feature actions your components use; for example, `toggleFullscreen` chooses `requestFullscreen` or `exitFullscreen` based on `isFullscreen`.
43
+ - `<media-gesture>` binds `tap` and `doubletap` to the same actions. Gestures also support `toggleControls`; `seekToPercent` is available only to hotkeys. Scope each binding with `pointer` (`mouse` or `touch`) and `region` (`left`, `center`, `right`). For example, a double tap on the left can rewind while a double tap on the right skips forward.
44
+ - `<media-status-announcer>` announces action results to screen readers. The input indicator components show brief on-screen feedback, such as volume level or captions on and off, the way native players do. The packaged skins include both.
45
+
46
+ The on-demand video skins bind these keys:
47
+
48
+ - Space and `k`: play and pause
49
+ - `m`: mute
50
+ - `f`: fullscreen
51
+ - `c`: captions
52
+ - `i`: picture-in-picture
53
+ - Left and Right arrows, `j` and `l`: seek 10 seconds
54
+ - Up and Down arrows: volume
55
+ - `0`–`9`: jump to a percentage
56
+ - `<` and `>`: speed
57
+
58
+ Live video skins keep the playback, mute, volume, fullscreen, captions, and picture-in-picture shortcuts. They omit seeking and speed shortcuts.
47
59
 
48
- The prebuilt skins bind the conventional set: Space and `k` toggle playback, `m` mutes, `f` fullscreens, `c` toggles captions, `i` toggles picture-in-picture, arrows seek and change volume, `j`/`l` seek in larger steps, `0`–`9` jump to a percentage, and `<`/`>` change speed.
60
+ How the container splits into regions depends on which regions you bind for the same gesture type and pointer type. Left and right bindings divide the container into halves. Adding a center binding divides it into thirds. A center-only binding covers the whole container; a left-only or right-only binding covers that half. These regions use the container’s width, not the rendered video’s width.
49
61
 
50
62
  ## Availability and constraints
51
63
 
52
64
  - Hotkeys listen on the player container by default, so multiple players on a page don’t fight over keys. Pass `target="document"` on a hotkey to make it page-wide — appropriate only when one player owns the page.
53
65
  - Typing is protected: while focus is in an editable field, single-key bindings are skipped automatically. Modifier combinations (for example `Ctrl+Shift+f`) still fire.
54
66
  - Repeatable actions (seeking, volume) fire on held keys; toggle actions don’t repeat.
55
- - Touch tap-to-toggle-controls and tap-to-pause are mutually exclusive per pointer type — the skins pause on mouse tap and toggle controls on touch tap, matching platform conventions.
56
- - Gestures and the built-in touch handling coordinate through one recognizer; register gestures declaratively instead of adding raw pointer listeners next to them.
67
+ - Use only one of `toggleControls` and `togglePaused` for tap bindings with the same pointer type. The packaged skins pause on a mouse tap and toggle controls on a touch tap, matching platform conventions.
68
+ - Declared gestures and the built-in touch handling share one recognizer. Use the gesture components to add bindings. Extra raw pointer listeners can toggle controls twice.
57
69
 
58
70
  ## Common variations
59
71
 
60
72
  ### Customize a shortcut
61
73
 
62
- Render your own `<media-hotkey>` set instead of a skin’s: every binding is just an element, so add, remove, or re-key them freely.
74
+ For a packaged skin, [add the skin source to your project](./customize-skins.md#style-skin-source) and edit its `<media-hotkey>` declarations. Adding another binding alongside the packaged skin does not replace its bindings. For a custom UI, edit your own `<media-hotkey>` set directly.
63
75
 
64
76
  ### Seek step size
65
77
 
66
- `seekStep` takes its step from `value` — match your content: 5 seconds for short clips, 15 or 30 for long-form.
78
+ Set the `seekStep` distance with `value`. Match it to your content: 5 seconds for short clips, 15 or 30 seconds for long-form video.
67
79
 
68
80
  ## Troubleshooting
69
81
 
@@ -73,11 +85,11 @@ Focus is outside the player container. Click the player first, or move focus int
73
85
 
74
86
  ### Double-tap seek also toggles pause
75
87
 
76
- Regions overlap: keep single-tap `togglePaused` on `center` only, and double-tap seek on `left` and `right`, as in the skin defaults.
88
+ The built-in recognizer delays a matching single tap and cancels it when a double tap occurs. Check that your tap and double-tap bindings use compatible `pointer` filters. Remove separate click handlers that also toggle playback, and avoid native video controls on the same gesture surface.
77
89
 
78
90
  ### No visual feedback on keyboard actions
79
91
 
80
- The input indicator components render that feedback; use a prebuilt skin or add `<media-status-announcer>` and the indicator components from the skin source to a custom UI.
92
+ The input indicator components render that feedback; use a packaged skin or add `<media-status-announcer>` and the indicator components from the skin source to a custom UI.
81
93
 
82
94
  ## Related pages
83
95