@videojs/html 10.0.1 → 10.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/README.md +2 -2
  2. package/dist/default/define/audio/compat-skin.css +86 -60
  3. package/dist/default/define/audio/compat-skin2.js +1 -1
  4. package/dist/default/define/audio/neutral-skin.css +2 -11
  5. package/dist/default/define/audio/neutral-skin2.js +1 -1
  6. package/dist/default/define/audio/scaffold-skin.css +1754 -0
  7. package/dist/default/define/audio/scaffold-skin.js +6 -0
  8. package/dist/default/define/audio/scaffold-skin2.js +4 -0
  9. package/dist/default/define/audio/skin.css +0 -1
  10. package/dist/default/define/audio/skin2.js +1 -1
  11. package/dist/default/define/live-audio/compat-skin.css +86 -60
  12. package/dist/default/define/live-audio/compat-skin2.js +1 -1
  13. package/dist/default/define/live-audio/neutral-skin.css +0 -1
  14. package/dist/default/define/live-audio/neutral-skin2.js +1 -1
  15. package/dist/default/define/live-audio/scaffold-skin.css +1574 -0
  16. package/dist/default/define/live-audio/scaffold-skin.js +6 -0
  17. package/dist/default/define/live-audio/scaffold-skin2.js +4 -0
  18. package/dist/default/define/live-audio/skin.css +0 -1
  19. package/dist/default/define/live-audio/skin2.js +1 -1
  20. package/dist/default/define/live-video/compat-skin.css +75 -31
  21. package/dist/default/define/live-video/compat-skin2.js +1 -1
  22. package/dist/default/define/live-video/neutral-skin.css +20 -9
  23. package/dist/default/define/live-video/neutral-skin2.js +1 -1
  24. package/dist/default/define/live-video/scaffold-skin.css +1975 -0
  25. package/dist/default/define/live-video/scaffold-skin.js +6 -0
  26. package/dist/default/define/live-video/scaffold-skin2.js +4 -0
  27. package/dist/default/define/live-video/skin.css +18 -7
  28. package/dist/default/define/live-video/skin2.js +1 -1
  29. package/dist/default/define/media/playerjs-video.js +11 -0
  30. package/dist/default/define/video/compat-skin.css +75 -31
  31. package/dist/default/define/video/compat-skin2.js +1 -1
  32. package/dist/default/define/video/neutral-skin.css +28 -19
  33. package/dist/default/define/video/neutral-skin2.js +1 -1
  34. package/dist/default/define/video/scaffold-skin.css +2215 -0
  35. package/dist/default/define/video/scaffold-skin.js +6 -0
  36. package/dist/default/define/video/scaffold-skin2.js +4 -0
  37. package/dist/default/define/video/skin.css +24 -7
  38. package/dist/default/define/video/skin2.js +1 -1
  39. package/dist/default/extensions/mux-data/extension.js +1 -1
  40. package/dist/default/icons/dist/element/compat/icons.js +1 -1
  41. package/dist/default/icons/dist/element/index.js +1 -0
  42. package/dist/default/icons/dist/element/scaffold/icons.js +30 -0
  43. package/dist/default/icons/dist/element/scaffold/index.js +8 -0
  44. package/dist/default/icons/dist/html/compat/play.js +1 -1
  45. package/dist/default/icons/dist/html/scaffold/airplay-enter.js +4 -0
  46. package/dist/default/icons/dist/html/scaffold/airplay-exit.js +4 -0
  47. package/dist/default/icons/dist/html/scaffold/captions-off.js +4 -0
  48. package/dist/default/icons/dist/html/scaffold/captions-on.js +4 -0
  49. package/dist/default/icons/dist/html/scaffold/cast-enter.js +4 -0
  50. package/dist/default/icons/dist/html/scaffold/cast-exit.js +4 -0
  51. package/dist/default/icons/dist/html/scaffold/check.js +4 -0
  52. package/dist/default/icons/dist/html/scaffold/chevron.js +4 -0
  53. package/dist/default/icons/dist/html/scaffold/fullscreen-enter.js +4 -0
  54. package/dist/default/icons/dist/html/scaffold/fullscreen-exit.js +4 -0
  55. package/dist/default/icons/dist/html/scaffold/gear.js +4 -0
  56. package/dist/default/icons/dist/html/scaffold/pause.js +4 -0
  57. package/dist/default/icons/dist/html/scaffold/pip-enter.js +4 -0
  58. package/dist/default/icons/dist/html/scaffold/pip-exit.js +4 -0
  59. package/dist/default/icons/dist/html/scaffold/play.js +4 -0
  60. package/dist/default/icons/dist/html/scaffold/quality.js +4 -0
  61. package/dist/default/icons/dist/html/scaffold/restart.js +4 -0
  62. package/dist/default/icons/dist/html/scaffold/seek.js +4 -0
  63. package/dist/default/icons/dist/html/scaffold/speech.js +4 -0
  64. package/dist/default/icons/dist/html/scaffold/speed.js +4 -0
  65. package/dist/default/icons/dist/html/scaffold/spinner.js +4 -0
  66. package/dist/default/icons/dist/html/scaffold/switches.js +4 -0
  67. package/dist/default/icons/dist/html/scaffold/volume-high.js +4 -0
  68. package/dist/default/icons/dist/html/scaffold/volume-low.js +4 -0
  69. package/dist/default/icons/dist/html/scaffold/volume-off.js +4 -0
  70. package/dist/default/icons/element/scaffold/index.js +1 -0
  71. package/dist/default/icons/scaffold/index.js +26 -0
  72. package/dist/default/internal/skins/compat-audio/register.js +1 -10
  73. package/dist/default/internal/skins/compat-audio/skin.css +86 -60
  74. package/dist/default/internal/skins/compat-audio/template.js +26 -48
  75. package/dist/default/internal/skins/compat-live-audio/register.js +1 -10
  76. package/dist/default/internal/skins/compat-live-audio/skin.css +86 -60
  77. package/dist/default/internal/skins/compat-live-audio/template.js +7 -29
  78. package/dist/default/internal/skins/compat-live-video/skin.css +75 -31
  79. package/dist/default/internal/skins/compat-live-video/template.js +20 -18
  80. package/dist/default/internal/skins/compat-video/skin.css +75 -31
  81. package/dist/default/internal/skins/compat-video/template.js +34 -32
  82. package/dist/default/internal/skins/default-audio/skin.css +0 -1
  83. package/dist/default/internal/skins/default-audio/template.js +12 -12
  84. package/dist/default/internal/skins/default-live-audio/skin.css +0 -1
  85. package/dist/default/internal/skins/default-live-audio/template.js +5 -5
  86. package/dist/default/internal/skins/default-live-video/skin.css +18 -7
  87. package/dist/default/internal/skins/default-live-video/template.js +16 -16
  88. package/dist/default/internal/skins/default-video/skin.css +24 -7
  89. package/dist/default/internal/skins/default-video/template.js +26 -26
  90. package/dist/default/internal/skins/neutral-audio/skin.css +2 -11
  91. package/dist/default/internal/skins/neutral-audio/template.js +13 -13
  92. package/dist/default/internal/skins/neutral-live-audio/skin.css +0 -1
  93. package/dist/default/internal/skins/neutral-live-audio/template.js +5 -5
  94. package/dist/default/internal/skins/neutral-live-video/skin.css +20 -9
  95. package/dist/default/internal/skins/neutral-live-video/template.js +16 -16
  96. package/dist/default/internal/skins/neutral-video/skin.css +28 -19
  97. package/dist/default/internal/skins/neutral-video/template.js +27 -27
  98. package/dist/default/internal/skins/scaffold-audio/register.js +63 -0
  99. package/dist/default/internal/skins/scaffold-audio/skin.css +1722 -0
  100. package/dist/default/internal/skins/scaffold-audio/template.js +197 -0
  101. package/dist/default/internal/skins/scaffold-live-audio/register.js +43 -0
  102. package/dist/default/internal/skins/scaffold-live-audio/skin.css +1542 -0
  103. package/dist/default/internal/skins/scaffold-live-audio/template.js +94 -0
  104. package/dist/default/internal/skins/scaffold-live-video/register.js +86 -0
  105. package/dist/default/internal/skins/scaffold-live-video/skin.css +1943 -0
  106. package/dist/default/internal/skins/scaffold-live-video/template.js +241 -0
  107. package/dist/default/internal/skins/scaffold-video/register.js +115 -0
  108. package/dist/default/internal/skins/scaffold-video/skin.css +2183 -0
  109. package/dist/default/internal/skins/scaffold-video/template.js +461 -0
  110. package/dist/default/media/hls-audio/adapter.js +1 -1
  111. package/dist/default/media/hls-background-video/adapter.js +1 -1
  112. package/dist/default/media/hls-video/adapter.js +1 -1
  113. package/dist/default/media/playerjs-video/adapter.js +25 -0
  114. package/dist/default/presets/audio/index.js +2 -1
  115. package/dist/default/presets/audio/scaffold-skin.js +19 -0
  116. package/dist/default/presets/background/skin.js +0 -2
  117. package/dist/default/presets/live-audio/index.js +2 -1
  118. package/dist/default/presets/live-audio/scaffold-skin.js +19 -0
  119. package/dist/default/presets/live-video/index.js +2 -1
  120. package/dist/default/presets/live-video/scaffold-skin.js +19 -0
  121. package/dist/default/presets/skin.js +0 -11
  122. package/dist/default/presets/video/index.js +2 -1
  123. package/dist/default/presets/video/scaffold-skin.js +19 -0
  124. package/dist/default/ui/slider/element.js +3 -1
  125. package/dist/default/ui/time-slider/element.js +45 -9
  126. package/dist/default/ui/volume-slider/element.js +3 -1
  127. package/dist/default/version.js +1 -1
  128. package/dist/dev/define/audio/compat-skin.css +86 -60
  129. package/dist/dev/define/audio/compat-skin2.js +1 -1
  130. package/dist/dev/define/audio/compat-skin2.js.map +1 -1
  131. package/dist/dev/define/audio/neutral-skin.css +2 -11
  132. package/dist/dev/define/audio/neutral-skin2.js +1 -1
  133. package/dist/dev/define/audio/neutral-skin2.js.map +1 -1
  134. package/dist/dev/define/audio/scaffold-skin.css +1754 -0
  135. package/dist/dev/define/audio/scaffold-skin.d.ts +1 -0
  136. package/dist/dev/define/audio/scaffold-skin.js +8 -0
  137. package/dist/dev/define/audio/scaffold-skin.js.map +1 -0
  138. package/dist/dev/define/audio/scaffold-skin2.js +6 -0
  139. package/dist/dev/define/audio/scaffold-skin2.js.map +1 -0
  140. package/dist/dev/define/audio/skin.css +0 -1
  141. package/dist/dev/define/audio/skin2.js +1 -1
  142. package/dist/dev/define/audio/skin2.js.map +1 -1
  143. package/dist/dev/define/global.js.map +1 -1
  144. package/dist/dev/define/live-audio/compat-skin.css +86 -60
  145. package/dist/dev/define/live-audio/compat-skin2.js +1 -1
  146. package/dist/dev/define/live-audio/compat-skin2.js.map +1 -1
  147. package/dist/dev/define/live-audio/neutral-skin.css +0 -1
  148. package/dist/dev/define/live-audio/neutral-skin2.js +1 -1
  149. package/dist/dev/define/live-audio/neutral-skin2.js.map +1 -1
  150. package/dist/dev/define/live-audio/scaffold-skin.css +1574 -0
  151. package/dist/dev/define/live-audio/scaffold-skin.d.ts +1 -0
  152. package/dist/dev/define/live-audio/scaffold-skin.js +8 -0
  153. package/dist/dev/define/live-audio/scaffold-skin.js.map +1 -0
  154. package/dist/dev/define/live-audio/scaffold-skin2.js +6 -0
  155. package/dist/dev/define/live-audio/scaffold-skin2.js.map +1 -0
  156. package/dist/dev/define/live-audio/skin.css +0 -1
  157. package/dist/dev/define/live-audio/skin2.js +1 -1
  158. package/dist/dev/define/live-audio/skin2.js.map +1 -1
  159. package/dist/dev/define/live-video/compat-skin.css +75 -31
  160. package/dist/dev/define/live-video/compat-skin2.js +1 -1
  161. package/dist/dev/define/live-video/compat-skin2.js.map +1 -1
  162. package/dist/dev/define/live-video/neutral-skin.css +20 -9
  163. package/dist/dev/define/live-video/neutral-skin2.js +1 -1
  164. package/dist/dev/define/live-video/neutral-skin2.js.map +1 -1
  165. package/dist/dev/define/live-video/scaffold-skin.css +1975 -0
  166. package/dist/dev/define/live-video/scaffold-skin.d.ts +1 -0
  167. package/dist/dev/define/live-video/scaffold-skin.js +8 -0
  168. package/dist/dev/define/live-video/scaffold-skin.js.map +1 -0
  169. package/dist/dev/define/live-video/scaffold-skin2.js +6 -0
  170. package/dist/dev/define/live-video/scaffold-skin2.js.map +1 -0
  171. package/dist/dev/define/live-video/skin.css +18 -7
  172. package/dist/dev/define/live-video/skin2.js +1 -1
  173. package/dist/dev/define/live-video/skin2.js.map +1 -1
  174. package/dist/dev/define/media/playerjs-video.d.ts +15 -0
  175. package/dist/dev/define/media/playerjs-video.js +13 -0
  176. package/dist/dev/define/media/playerjs-video.js.map +1 -0
  177. package/dist/dev/define/video/compat-skin.css +75 -31
  178. package/dist/dev/define/video/compat-skin2.js +1 -1
  179. package/dist/dev/define/video/compat-skin2.js.map +1 -1
  180. package/dist/dev/define/video/neutral-skin.css +28 -19
  181. package/dist/dev/define/video/neutral-skin2.js +1 -1
  182. package/dist/dev/define/video/neutral-skin2.js.map +1 -1
  183. package/dist/dev/define/video/scaffold-skin.css +2215 -0
  184. package/dist/dev/define/video/scaffold-skin.d.ts +1 -0
  185. package/dist/dev/define/video/scaffold-skin.js +8 -0
  186. package/dist/dev/define/video/scaffold-skin.js.map +1 -0
  187. package/dist/dev/define/video/scaffold-skin2.js +6 -0
  188. package/dist/dev/define/video/scaffold-skin2.js.map +1 -0
  189. package/dist/dev/define/video/skin.css +24 -7
  190. package/dist/dev/define/video/skin2.js +1 -1
  191. package/dist/dev/define/video/skin2.js.map +1 -1
  192. package/dist/dev/extensions/mux-data/extension.d.ts +1 -1
  193. package/dist/dev/extensions/mux-data/extension.js +1 -1
  194. package/dist/dev/extensions/mux-data/extension.js.map +1 -1
  195. package/dist/dev/icons/dist/element/compat/icons.js +1 -1
  196. package/dist/dev/icons/dist/element/compat/icons.js.map +1 -1
  197. package/dist/dev/icons/dist/element/index.js +1 -0
  198. package/dist/dev/icons/dist/element/index.js.map +1 -1
  199. package/dist/dev/icons/dist/element/scaffold/icons.js +32 -0
  200. package/dist/dev/icons/dist/element/scaffold/icons.js.map +1 -0
  201. package/dist/dev/icons/dist/element/scaffold/index.d.ts +1 -0
  202. package/dist/dev/icons/dist/element/scaffold/index.js +10 -0
  203. package/dist/dev/icons/dist/element/scaffold/index.js.map +1 -0
  204. package/dist/dev/icons/dist/html/compat/play.js +1 -1
  205. package/dist/dev/icons/dist/html/compat/play.js.map +1 -1
  206. package/dist/dev/icons/dist/html/scaffold/airplay-enter.js +6 -0
  207. package/dist/dev/icons/dist/html/scaffold/airplay-enter.js.map +1 -0
  208. package/dist/dev/icons/dist/html/scaffold/airplay-exit.js +6 -0
  209. package/dist/dev/icons/dist/html/scaffold/airplay-exit.js.map +1 -0
  210. package/dist/dev/icons/dist/html/scaffold/captions-off.js +6 -0
  211. package/dist/dev/icons/dist/html/scaffold/captions-off.js.map +1 -0
  212. package/dist/dev/icons/dist/html/scaffold/captions-on.js +6 -0
  213. package/dist/dev/icons/dist/html/scaffold/captions-on.js.map +1 -0
  214. package/dist/dev/icons/dist/html/scaffold/cast-enter.js +6 -0
  215. package/dist/dev/icons/dist/html/scaffold/cast-enter.js.map +1 -0
  216. package/dist/dev/icons/dist/html/scaffold/cast-exit.js +6 -0
  217. package/dist/dev/icons/dist/html/scaffold/cast-exit.js.map +1 -0
  218. package/dist/dev/icons/dist/html/scaffold/check.js +6 -0
  219. package/dist/dev/icons/dist/html/scaffold/check.js.map +1 -0
  220. package/dist/dev/icons/dist/html/scaffold/chevron.js +6 -0
  221. package/dist/dev/icons/dist/html/scaffold/chevron.js.map +1 -0
  222. package/dist/dev/icons/dist/html/scaffold/fullscreen-enter.js +6 -0
  223. package/dist/dev/icons/dist/html/scaffold/fullscreen-enter.js.map +1 -0
  224. package/dist/dev/icons/dist/html/scaffold/fullscreen-exit.js +6 -0
  225. package/dist/dev/icons/dist/html/scaffold/fullscreen-exit.js.map +1 -0
  226. package/dist/dev/icons/dist/html/scaffold/gear.js +6 -0
  227. package/dist/dev/icons/dist/html/scaffold/gear.js.map +1 -0
  228. package/dist/dev/icons/dist/html/scaffold/index.d.ts +28 -0
  229. package/dist/dev/icons/dist/html/scaffold/pause.js +6 -0
  230. package/dist/dev/icons/dist/html/scaffold/pause.js.map +1 -0
  231. package/dist/dev/icons/dist/html/scaffold/pip-enter.js +6 -0
  232. package/dist/dev/icons/dist/html/scaffold/pip-enter.js.map +1 -0
  233. package/dist/dev/icons/dist/html/scaffold/pip-exit.js +6 -0
  234. package/dist/dev/icons/dist/html/scaffold/pip-exit.js.map +1 -0
  235. package/dist/dev/icons/dist/html/scaffold/play.js +6 -0
  236. package/dist/dev/icons/dist/html/scaffold/play.js.map +1 -0
  237. package/dist/dev/icons/dist/html/scaffold/quality.js +6 -0
  238. package/dist/dev/icons/dist/html/scaffold/quality.js.map +1 -0
  239. package/dist/dev/icons/dist/html/scaffold/restart.js +6 -0
  240. package/dist/dev/icons/dist/html/scaffold/restart.js.map +1 -0
  241. package/dist/dev/icons/dist/html/scaffold/seek.js +6 -0
  242. package/dist/dev/icons/dist/html/scaffold/seek.js.map +1 -0
  243. package/dist/dev/icons/dist/html/scaffold/speech.js +6 -0
  244. package/dist/dev/icons/dist/html/scaffold/speech.js.map +1 -0
  245. package/dist/dev/icons/dist/html/scaffold/speed.js +6 -0
  246. package/dist/dev/icons/dist/html/scaffold/speed.js.map +1 -0
  247. package/dist/dev/icons/dist/html/scaffold/spinner.js +6 -0
  248. package/dist/dev/icons/dist/html/scaffold/spinner.js.map +1 -0
  249. package/dist/dev/icons/dist/html/scaffold/switches.js +6 -0
  250. package/dist/dev/icons/dist/html/scaffold/switches.js.map +1 -0
  251. package/dist/dev/icons/dist/html/scaffold/volume-high.js +6 -0
  252. package/dist/dev/icons/dist/html/scaffold/volume-high.js.map +1 -0
  253. package/dist/dev/icons/dist/html/scaffold/volume-low.js +6 -0
  254. package/dist/dev/icons/dist/html/scaffold/volume-low.js.map +1 -0
  255. package/dist/dev/icons/dist/html/scaffold/volume-off.js +6 -0
  256. package/dist/dev/icons/dist/html/scaffold/volume-off.js.map +1 -0
  257. package/dist/dev/icons/element/scaffold/index.d.ts +1 -0
  258. package/dist/dev/icons/element/scaffold/index.js +1 -0
  259. package/dist/dev/icons/scaffold/index.d.ts +2 -0
  260. package/dist/dev/icons/scaffold/index.js +26 -0
  261. package/dist/dev/index.d.ts +3 -3
  262. package/dist/dev/internal/skins/compat-audio/register.d.ts +4 -5
  263. package/dist/dev/internal/skins/compat-audio/register.js +1 -10
  264. package/dist/dev/internal/skins/compat-audio/register.js.map +1 -1
  265. package/dist/dev/internal/skins/compat-audio/skin.css +86 -60
  266. package/dist/dev/internal/skins/compat-audio/template.js +26 -48
  267. package/dist/dev/internal/skins/compat-audio/template.js.map +1 -1
  268. package/dist/dev/internal/skins/compat-live-audio/register.d.ts +1 -2
  269. package/dist/dev/internal/skins/compat-live-audio/register.js +1 -10
  270. package/dist/dev/internal/skins/compat-live-audio/register.js.map +1 -1
  271. package/dist/dev/internal/skins/compat-live-audio/skin.css +86 -60
  272. package/dist/dev/internal/skins/compat-live-audio/template.js +7 -29
  273. package/dist/dev/internal/skins/compat-live-audio/template.js.map +1 -1
  274. package/dist/dev/internal/skins/compat-live-video/register.d.ts +3 -3
  275. package/dist/dev/internal/skins/compat-live-video/skin.css +75 -31
  276. package/dist/dev/internal/skins/compat-live-video/template.js +20 -18
  277. package/dist/dev/internal/skins/compat-live-video/template.js.map +1 -1
  278. package/dist/dev/internal/skins/compat-video/register.d.ts +6 -6
  279. package/dist/dev/internal/skins/compat-video/skin.css +75 -31
  280. package/dist/dev/internal/skins/compat-video/template.js +34 -32
  281. package/dist/dev/internal/skins/compat-video/template.js.map +1 -1
  282. package/dist/dev/internal/skins/default-audio/register.d.ts +3 -3
  283. package/dist/dev/internal/skins/default-audio/skin.css +0 -1
  284. package/dist/dev/internal/skins/default-audio/template.js +12 -12
  285. package/dist/dev/internal/skins/default-audio/template.js.map +1 -1
  286. package/dist/dev/internal/skins/default-live-audio/register.d.ts +1 -1
  287. package/dist/dev/internal/skins/default-live-audio/skin.css +0 -1
  288. package/dist/dev/internal/skins/default-live-audio/template.js +5 -5
  289. package/dist/dev/internal/skins/default-live-audio/template.js.map +1 -1
  290. package/dist/dev/internal/skins/default-live-video/register.d.ts +3 -3
  291. package/dist/dev/internal/skins/default-live-video/skin.css +18 -7
  292. package/dist/dev/internal/skins/default-live-video/template.js +16 -16
  293. package/dist/dev/internal/skins/default-live-video/template.js.map +1 -1
  294. package/dist/dev/internal/skins/default-video/register.d.ts +4 -4
  295. package/dist/dev/internal/skins/default-video/skin.css +24 -7
  296. package/dist/dev/internal/skins/default-video/template.js +26 -26
  297. package/dist/dev/internal/skins/default-video/template.js.map +1 -1
  298. package/dist/dev/internal/skins/neutral-audio/register.d.ts +5 -5
  299. package/dist/dev/internal/skins/neutral-audio/skin.css +2 -11
  300. package/dist/dev/internal/skins/neutral-audio/template.js +13 -13
  301. package/dist/dev/internal/skins/neutral-audio/template.js.map +1 -1
  302. package/dist/dev/internal/skins/neutral-live-audio/register.d.ts +1 -1
  303. package/dist/dev/internal/skins/neutral-live-audio/skin.css +0 -1
  304. package/dist/dev/internal/skins/neutral-live-audio/template.js +5 -5
  305. package/dist/dev/internal/skins/neutral-live-audio/template.js.map +1 -1
  306. package/dist/dev/internal/skins/neutral-live-video/register.d.ts +3 -3
  307. package/dist/dev/internal/skins/neutral-live-video/skin.css +20 -9
  308. package/dist/dev/internal/skins/neutral-live-video/template.js +16 -16
  309. package/dist/dev/internal/skins/neutral-live-video/template.js.map +1 -1
  310. package/dist/dev/internal/skins/neutral-video/register.d.ts +6 -6
  311. package/dist/dev/internal/skins/neutral-video/skin.css +28 -19
  312. package/dist/dev/internal/skins/neutral-video/template.js +27 -27
  313. package/dist/dev/internal/skins/neutral-video/template.js.map +1 -1
  314. package/dist/dev/internal/skins/scaffold-audio/register.d.ts +42 -0
  315. package/dist/dev/internal/skins/scaffold-audio/register.js +65 -0
  316. package/dist/dev/internal/skins/scaffold-audio/register.js.map +1 -0
  317. package/dist/dev/internal/skins/scaffold-audio/skin.css +1722 -0
  318. package/dist/dev/internal/skins/scaffold-audio/template.js +199 -0
  319. package/dist/dev/internal/skins/scaffold-audio/template.js.map +1 -0
  320. package/dist/dev/internal/skins/scaffold-live-audio/register.d.ts +26 -0
  321. package/dist/dev/internal/skins/scaffold-live-audio/register.js +45 -0
  322. package/dist/dev/internal/skins/scaffold-live-audio/register.js.map +1 -0
  323. package/dist/dev/internal/skins/scaffold-live-audio/skin.css +1542 -0
  324. package/dist/dev/internal/skins/scaffold-live-audio/template.js +96 -0
  325. package/dist/dev/internal/skins/scaffold-live-audio/template.js.map +1 -0
  326. package/dist/dev/internal/skins/scaffold-live-video/register.d.ts +45 -0
  327. package/dist/dev/internal/skins/scaffold-live-video/register.js +88 -0
  328. package/dist/dev/internal/skins/scaffold-live-video/register.js.map +1 -0
  329. package/dist/dev/internal/skins/scaffold-live-video/skin.css +1943 -0
  330. package/dist/dev/internal/skins/scaffold-live-video/template.js +243 -0
  331. package/dist/dev/internal/skins/scaffold-live-video/template.js.map +1 -0
  332. package/dist/dev/internal/skins/scaffold-video/register.d.ts +62 -0
  333. package/dist/dev/internal/skins/scaffold-video/register.js +117 -0
  334. package/dist/dev/internal/skins/scaffold-video/register.js.map +1 -0
  335. package/dist/dev/internal/skins/scaffold-video/skin.css +2183 -0
  336. package/dist/dev/internal/skins/scaffold-video/template.js +463 -0
  337. package/dist/dev/internal/skins/scaffold-video/template.js.map +1 -0
  338. package/dist/dev/media/hls-audio/adapter.d.ts +1 -1
  339. package/dist/dev/media/hls-audio/adapter.js +1 -1
  340. package/dist/dev/media/hls-audio/adapter.js.map +1 -1
  341. package/dist/dev/media/hls-background-video/adapter.d.ts +1 -1
  342. package/dist/dev/media/hls-background-video/adapter.js +1 -1
  343. package/dist/dev/media/hls-background-video/adapter.js.map +1 -1
  344. package/dist/dev/media/hls-video/adapter.d.ts +1 -1
  345. package/dist/dev/media/hls-video/adapter.js +1 -1
  346. package/dist/dev/media/hls-video/adapter.js.map +1 -1
  347. package/dist/dev/media/playerjs-video/adapter.d.ts +11 -0
  348. package/dist/dev/media/playerjs-video/adapter.js +61 -0
  349. package/dist/dev/media/playerjs-video/adapter.js.map +1 -0
  350. package/dist/dev/media/playerjs-video/index.d.ts +2 -0
  351. package/dist/dev/presets/audio/index.d.ts +2 -1
  352. package/dist/dev/presets/audio/index.js +2 -1
  353. package/dist/dev/presets/audio/scaffold-skin.d.ts +15 -0
  354. package/dist/dev/presets/audio/scaffold-skin.js +21 -0
  355. package/dist/dev/presets/audio/scaffold-skin.js.map +1 -0
  356. package/dist/dev/presets/background/skin.js +0 -2
  357. package/dist/dev/presets/background/skin.js.map +1 -1
  358. package/dist/dev/presets/live-audio/index.d.ts +2 -1
  359. package/dist/dev/presets/live-audio/index.js +2 -1
  360. package/dist/dev/presets/live-audio/scaffold-skin.d.ts +15 -0
  361. package/dist/dev/presets/live-audio/scaffold-skin.js +21 -0
  362. package/dist/dev/presets/live-audio/scaffold-skin.js.map +1 -0
  363. package/dist/dev/presets/live-video/index.d.ts +2 -1
  364. package/dist/dev/presets/live-video/index.js +2 -1
  365. package/dist/dev/presets/live-video/scaffold-skin.d.ts +15 -0
  366. package/dist/dev/presets/live-video/scaffold-skin.js +21 -0
  367. package/dist/dev/presets/live-video/scaffold-skin.js.map +1 -0
  368. package/dist/dev/presets/skin.js +0 -11
  369. package/dist/dev/presets/skin.js.map +1 -1
  370. package/dist/dev/presets/video/index.d.ts +2 -1
  371. package/dist/dev/presets/video/index.js +2 -1
  372. package/dist/dev/presets/video/scaffold-skin.d.ts +15 -0
  373. package/dist/dev/presets/video/scaffold-skin.js +21 -0
  374. package/dist/dev/presets/video/scaffold-skin.js.map +1 -0
  375. package/dist/dev/ui/slider/element.js +3 -1
  376. package/dist/dev/ui/slider/element.js.map +1 -1
  377. package/dist/dev/ui/time-slider/element.js +45 -9
  378. package/dist/dev/ui/time-slider/element.js.map +1 -1
  379. package/dist/dev/ui/volume-slider/element.js +3 -1
  380. package/dist/dev/ui/volume-slider/element.js.map +1 -1
  381. package/dist/dev/version.js +1 -1
  382. package/docs/README.md +1 -1
  383. package/docs/guides/browser-support.md +11 -11
  384. package/docs/guides/build-with-ai.md +1 -1
  385. package/docs/guides/build-your-own-skin.md +381 -0
  386. package/docs/guides/cdn.md +9 -9
  387. package/docs/guides/customize-skins.md +2 -1
  388. package/docs/guides/installation-cdn.md +4 -4
  389. package/docs/guides/installation-shadcn.md +3 -3
  390. package/docs/guides/installation-svelte.md +5 -5
  391. package/docs/guides/installation-vue.md +5 -5
  392. package/docs/guides/installation.md +5 -5
  393. package/docs/guides/internationalization.md +5 -5
  394. package/docs/guides/llms.txt +3 -2
  395. package/docs/guides/media-sources.md +1 -0
  396. package/docs/guides/migrate-from-media-chrome.md +4 -4
  397. package/docs/guides/migrate-from-mux-player.md +6 -6
  398. package/docs/guides/migrate-from-plyr.md +7 -7
  399. package/docs/guides/migrate-from-video-js-8.md +15 -7
  400. package/docs/guides/migrate-from-vidstack.md +3 -3
  401. package/docs/guides/migrate.md +2 -1
  402. package/docs/guides/presets.md +4 -4
  403. package/docs/guides/self-hosting.md +11 -8
  404. package/docs/guides/skins.md +6 -5
  405. package/docs/guides/v10-roadmap.md +2 -2
  406. package/docs/guides/why-videojs.md +3 -3
  407. package/docs/llms.txt +9 -3
  408. package/docs/reference/api/error-codes.md +1 -1
  409. package/docs/reference/api/llms.txt +1 -1
  410. package/docs/reference/api/preset-audio.md +1 -1
  411. package/docs/reference/api/preset-background.md +1 -1
  412. package/docs/reference/api/preset-live-audio.md +1 -1
  413. package/docs/reference/api/preset-live-video.md +1 -1
  414. package/docs/reference/api/preset-video.md +1 -1
  415. package/docs/reference/api/vjs8-legacy-init.md +2 -2
  416. package/docs/reference/components/audio-neutral-skin.md +1 -1
  417. package/docs/reference/components/audio-scaffold-skin.md +39 -0
  418. package/docs/reference/components/audio-skin.md +1 -1
  419. package/docs/reference/components/background-video-skin.md +1 -1
  420. package/docs/reference/components/background-video.md +1 -1
  421. package/docs/reference/components/cloudflare-video.md +1 -1
  422. package/docs/reference/components/dash-video.md +1 -1
  423. package/docs/reference/components/google-cast.md +1 -1
  424. package/docs/reference/components/hls-audio.md +2 -47
  425. package/docs/reference/components/hls-background-video.md +1 -1
  426. package/docs/reference/components/hls-video.md +7 -60
  427. package/docs/reference/components/hlsjs-video.md +11 -1
  428. package/docs/reference/components/icons.md +2 -1
  429. package/docs/reference/components/live-audio-neutral-skin.md +1 -1
  430. package/docs/reference/components/live-audio-scaffold-skin.md +41 -0
  431. package/docs/reference/components/live-audio-skin.md +1 -1
  432. package/docs/reference/components/live-video-neutral-skin.md +1 -1
  433. package/docs/reference/components/live-video-scaffold-skin.md +47 -0
  434. package/docs/reference/components/live-video-skin.md +1 -1
  435. package/docs/reference/components/llms.txt +6 -1
  436. package/docs/reference/components/mux-audio.md +1 -1
  437. package/docs/reference/components/mux-background-video.md +1 -1
  438. package/docs/reference/components/mux-data.md +4 -2
  439. package/docs/reference/components/mux-video.md +1 -1
  440. package/docs/reference/components/native-hls-video.md +1 -1
  441. package/docs/reference/components/playerjs-video.md +197 -0
  442. package/docs/reference/components/shaka-video.md +1 -1
  443. package/docs/reference/components/slider.md +2 -0
  444. package/docs/reference/components/spotify-audio.md +1 -1
  445. package/docs/reference/components/tiktok-video.md +1 -1
  446. package/docs/reference/components/time-slider.md +7 -5
  447. package/docs/reference/components/twitch-video.md +1 -1
  448. package/docs/reference/components/video-neutral-skin.md +1 -1
  449. package/docs/reference/components/video-scaffold-skin.md +51 -0
  450. package/docs/reference/components/video-skin.md +1 -1
  451. package/docs/reference/components/vimeo-video.md +1 -1
  452. package/docs/reference/components/volume-slider.md +8 -6
  453. package/docs/reference/components/wistia-video.md +5 -1
  454. package/docs/reference/components/youtube-video.md +2 -2
  455. package/package.json +46 -42
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/hls-video/adapter.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { HlsVideoAdapter } from '@videojs/spf/hls-video';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nexport class HlsVideo extends MediaAttachMixin(CustomMediaElement('video', HlsVideoAdapter)) {}\n"],"mappings":";;;;AAKA,IAAa,WAAb,cAA8B,iBAAiB,mBAAmB,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/hls-video/adapter.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { HlsVideoAdapter } from '@videojs/spf/adapters/hls-video';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nexport class HlsVideo extends MediaAttachMixin(CustomMediaElement('video', HlsVideoAdapter)) {}\n"],"mappings":";;;;AAKA,IAAa,WAAb,cAA8B,iBAAiB,mBAAmB,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { CustomMediaConstructor } from "../../index.js";
2
+ import { PlayerJsAdapter } from "@videojs/playerjs-video";
3
+ //#region src/media/playerjs-video/adapter.d.ts
4
+ declare const PlayerJsCustomMediaElement_base: CustomMediaConstructor<typeof PlayerJsAdapter>;
5
+ declare class PlayerJsCustomMediaElement extends PlayerJsCustomMediaElement_base {
6
+ static getTemplateHTML: (attrs: Record<string, string>) => string;
7
+ }
8
+ declare const PlayerJsVideo_base: typeof PlayerJsCustomMediaElement;
9
+ export declare class PlayerJsVideo extends PlayerJsVideo_base {}
10
+ //#endregion
11
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1,61 @@
1
+ import { MediaAttachMixin } from "../../store/media-attach-mixin.js";
2
+ import { CustomMediaElement } from "@videojs/media/dom";
3
+ import { escapeHtml } from "@videojs/utils/string";
4
+ import { PlayerJsAdapter, buildPlayerJsIframeSrc } from "@videojs/playerjs-video";
5
+ //#region src/media/playerjs-video/adapter.ts
6
+ var PlayerJsCustomMediaElement = class extends CustomMediaElement("iframe", PlayerJsAdapter) {
7
+ static {
8
+ this.getTemplateHTML = (attrs) => {
9
+ const initialSrc = buildPlayerJsIframeSrc(attrs.src ?? "", templateAttrsToEmbedProps(attrs));
10
+ return `
11
+ <style>
12
+ :host {
13
+ display: inline-block;
14
+ min-width: 300px;
15
+ min-height: 150px;
16
+ position: relative;
17
+ }
18
+ iframe {
19
+ position: absolute;
20
+ inset: 0;
21
+ width: 100%;
22
+ height: 100%;
23
+ border: 0;
24
+ }
25
+ /* A cross-origin frame swallows every pointer event, so the skin above it
26
+ never sees the hover that reveals the controls. Not every service lets
27
+ its chrome be hidden, so without controls the frame is kept out of
28
+ hit-testing as well. */
29
+ :host(:not([controls])) {
30
+ pointer-events: none;
31
+ }
32
+ </style>
33
+ <iframe
34
+ part="iframe"
35
+ title="Video player"
36
+ ${initialSrc ? ` src="${escapeHtml(initialSrc)}"` : ""}
37
+ allow="accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture"
38
+ allowfullscreen
39
+ frameborder="0"
40
+ width="100%"
41
+ height="100%"
42
+ referrerpolicy="${escapeHtml(attrs.referrerpolicy ?? "")}"
43
+ ></iframe>
44
+ `;
45
+ };
46
+ }
47
+ };
48
+ function templateAttrsToEmbedProps(attrs) {
49
+ return {
50
+ autoplay: attrs.autoplay !== void 0,
51
+ defaultMuted: attrs.muted !== void 0,
52
+ loop: attrs.loop !== void 0,
53
+ controls: attrs.controls !== void 0,
54
+ preload: attrs.preload ?? PlayerJsAdapter.defaultProps.preload
55
+ };
56
+ }
57
+ var PlayerJsVideo = class extends MediaAttachMixin(PlayerJsCustomMediaElement) {};
58
+ //#endregion
59
+ export { PlayerJsVideo };
60
+
61
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","names":[],"sources":["../../../../src/media/playerjs-video/adapter.ts"],"sourcesContent":["import { CustomMediaElement } from '@videojs/media/dom';\nimport { buildPlayerJsIframeSrc, PlayerJsAdapter, type PlayerJsAdapterProps } from '@videojs/playerjs-video';\nimport { escapeHtml } from '@videojs/utils/string';\n\nimport { MediaAttachMixin } from '../../store/media-attach-mixin';\n\nclass PlayerJsCustomMediaElement extends CustomMediaElement('iframe', PlayerJsAdapter) {\n static override getTemplateHTML = (attrs: Record<string, string>): string => {\n const initialSrc = buildPlayerJsIframeSrc(attrs.src ?? '', templateAttrsToEmbedProps(attrs));\n const srcAttr = initialSrc ? ` src=\"${escapeHtml(initialSrc)}\"` : '';\n\n return /*html*/ `\n <style>\n :host {\n display: inline-block;\n min-width: 300px;\n min-height: 150px;\n position: relative;\n }\n iframe {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n /* A cross-origin frame swallows every pointer event, so the skin above it\n never sees the hover that reveals the controls. Not every service lets\n its chrome be hidden, so without controls the frame is kept out of\n hit-testing as well. */\n :host(:not([controls])) {\n pointer-events: none;\n }\n </style>\n <iframe\n part=\"iframe\"\n title=\"Video player\"\n ${srcAttr}\n allow=\"accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen\n frameborder=\"0\"\n width=\"100%\"\n height=\"100%\"\n referrerpolicy=\"${escapeHtml(attrs.referrerpolicy ?? '')}\"\n ></iframe>\n `;\n };\n}\n\n// The props the embed URL is built from for the services the adapter recognizes. A URL differing from the one the\n// adapter builds would have it rebuild the frame on mount.\nfunction templateAttrsToEmbedProps(attrs: Record<string, string>): Partial<PlayerJsAdapterProps> {\n return {\n autoplay: attrs.autoplay !== undefined,\n defaultMuted: attrs.muted !== undefined,\n loop: attrs.loop !== undefined,\n controls: attrs.controls !== undefined,\n preload: (attrs.preload as PlayerJsAdapterProps['preload']) ?? PlayerJsAdapter.defaultProps.preload,\n };\n}\n\nexport class PlayerJsVideo extends MediaAttachMixin(PlayerJsCustomMediaElement) {}\n"],"mappings":";;;;;AAMA,IAAM,6BAAN,cAAyC,mBAAmB,UAAU,eAAe,CAAC,CAAC;;EAClD,KAAA,mBAAA,UAA0C;GAC3E,MAAM,aAAa,uBAAuB,MAAM,OAAO,IAAI,0BAA0B,KAAK,CAAC;GAG3F,OAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;UAFA,aAAa,SAAS,WAAW,UAAU,EAAE,KAAK,GA4BpD;;;;;;0BAMQ,WAAW,MAAM,kBAAkB,EAAE,EAAE;;;EAG/D;;AACF;AAIA,SAAS,0BAA0B,OAA8D;CAC/F,OAAO;EACL,UAAU,MAAM,aAAa,KAAA;EAC7B,cAAc,MAAM,UAAU,KAAA;EAC9B,MAAM,MAAM,SAAS,KAAA;EACrB,UAAU,MAAM,aAAa,KAAA;EAC7B,SAAU,MAAM,WAA+C,gBAAgB,aAAa;CAC9F;AACF;AAEA,IAAa,gBAAb,cAAmC,iBAAiB,0BAA0B,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { PlayerJsVideo } from "./adapter.js";
2
+ export { PlayerJsVideo };
@@ -1,6 +1,7 @@
1
1
  import { CompatAudioSkinElement } from "./compat-skin.js";
2
+ import { ScaffoldAudioSkinElement } from "./scaffold-skin.js";
2
3
  import { AudioPlayerElement, PlayerController } from "./player.js";
3
4
  import { AudioSkinElement } from "./skin.js";
4
5
  import { NeutralAudioSkinElement } from "./neutral-skin.js";
5
6
  import { audioFeatures } from "@videojs/core/dom";
6
- export { AudioPlayerElement, AudioSkinElement, CompatAudioSkinElement, NeutralAudioSkinElement, PlayerController, audioFeatures };
7
+ export { AudioPlayerElement, AudioSkinElement, CompatAudioSkinElement, NeutralAudioSkinElement, PlayerController, ScaffoldAudioSkinElement, audioFeatures };
@@ -1,6 +1,7 @@
1
1
  import { CompatAudioSkinElement } from "./compat-skin.js";
2
2
  import { NeutralAudioSkinElement } from "./neutral-skin.js";
3
3
  import { AudioPlayerElement, PlayerController } from "./player.js";
4
+ import { ScaffoldAudioSkinElement } from "./scaffold-skin.js";
4
5
  import { AudioSkinElement } from "./skin.js";
5
6
  import { audioFeatures } from "@videojs/core/dom";
6
- export { AudioPlayerElement, AudioSkinElement, CompatAudioSkinElement, NeutralAudioSkinElement, PlayerController, audioFeatures };
7
+ export { AudioPlayerElement, AudioSkinElement, CompatAudioSkinElement, NeutralAudioSkinElement, PlayerController, ScaffoldAudioSkinElement, audioFeatures };
@@ -0,0 +1,15 @@
1
+ import { SkinElement } from "../skin.js";
2
+ //#region src/presets/audio/scaffold-skin.d.ts
3
+ /** Packaged scaffold audio UI registered as `<audio-scaffold-skin>`. */
4
+ export declare class ScaffoldAudioSkinElement extends SkinElement {
5
+ static readonly tagName = "audio-scaffold-skin";
6
+ static styles: import("@videojs/utils/dom").ShadowStyle;
7
+ static template: HTMLTemplateElement | null;
8
+ }
9
+ declare global {
10
+ interface HTMLElementTagNameMap {
11
+ [ScaffoldAudioSkinElement.tagName]: ScaffoldAudioSkinElement;
12
+ }
13
+ }
14
+ //#endregion
15
+ //# sourceMappingURL=scaffold-skin.d.ts.map
@@ -0,0 +1,21 @@
1
+ import { SkinElement } from "../skin.js";
2
+ import { template } from "../../internal/skins/scaffold-audio/template.js";
3
+ import scaffold_skin_default from "../../define/audio/scaffold-skin2.js";
4
+ import { createShadowStyle } from "@videojs/utils/dom";
5
+ //#region src/presets/audio/scaffold-skin.ts
6
+ /** Packaged scaffold audio UI registered as `<audio-scaffold-skin>`. */
7
+ var ScaffoldAudioSkinElement = class extends SkinElement {
8
+ static {
9
+ this.tagName = "audio-scaffold-skin";
10
+ }
11
+ static {
12
+ this.styles = createShadowStyle(scaffold_skin_default);
13
+ }
14
+ static {
15
+ this.template = template;
16
+ }
17
+ };
18
+ //#endregion
19
+ export { ScaffoldAudioSkinElement };
20
+
21
+ //# sourceMappingURL=scaffold-skin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-skin.js","names":["styles"],"sources":["../../../../src/presets/audio/scaffold-skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/scaffold-audio/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/audio/scaffold-skin.css?inline';\n\n/** Packaged scaffold audio UI registered as `<audio-scaffold-skin>`. */\nexport class ScaffoldAudioSkinElement extends SkinElement {\n static readonly tagName = 'audio-scaffold-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ScaffoldAudioSkinElement.tagName]: ScaffoldAudioSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,2BAAb,cAA8C,YAAY;;EAC9B,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,qBAAM;;;EACtB,KAAA,WAAA;;AACpB"}
@@ -1,5 +1,4 @@
1
1
  import skin_default from "../../define/background/skin2.js";
2
- import { SKIN_HELP_TEXT, SKIN_HELP_URL } from "@videojs/core";
3
2
  import { ReactiveElement } from "@videojs/element";
4
3
  import { ensureGlobalStyle } from "@videojs/utils/dom";
5
4
  //#region src/presets/background/skin.ts
@@ -11,7 +10,6 @@ function getTemplateHTML() {
11
10
  <slot name="media"></slot>
12
11
  <slot></slot>
13
12
  </media-container>
14
- <a rel="help" href="${SKIN_HELP_URL}" hidden>${SKIN_HELP_TEXT}</a>
15
13
  `;
16
14
  }
17
15
  var BackgroundVideoSkinElement = class BackgroundVideoSkinElement extends ReactiveElement {
@@ -1 +1 @@
1
- {"version":3,"file":"skin.js","names":["styles"],"sources":["../../../../src/presets/background/skin.ts"],"sourcesContent":["import { SKIN_HELP_TEXT, SKIN_HELP_URL } from '@videojs/core';\nimport { ReactiveElement } from '@videojs/element';\nimport { ensureGlobalStyle } from '@videojs/utils/dom';\n\nimport styles from '../../define/background/skin.css?inline';\n\nconst STYLES_ID = '__media-background-styles';\n\nfunction getTemplateHTML() {\n return /* html */ `\n <media-container>\n <!-- @deprecated slot=\"media\" is no longer required, use the default slot instead -->\n <slot name=\"media\"></slot>\n <slot></slot>\n </media-container>\n <a rel=\"help\" href=\"${SKIN_HELP_URL}\" hidden>${SKIN_HELP_TEXT}</a>\n `;\n}\n\nexport class BackgroundVideoSkinElement extends ReactiveElement {\n static readonly tagName = 'background-video-skin';\n static shadowRootOptions: ShadowRootInit = { mode: 'open' };\n static getTemplateHTML = getTemplateHTML;\n\n constructor() {\n super();\n\n ensureGlobalStyle(STYLES_ID, styles);\n\n if (!this.shadowRoot) {\n this.attachShadow(BackgroundVideoSkinElement.shadowRootOptions);\n this.shadowRoot!.innerHTML = getTemplateHTML();\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [BackgroundVideoSkinElement.tagName]: BackgroundVideoSkinElement;\n }\n}\n"],"mappings":";;;;;AAMA,MAAM,YAAY;AAElB,SAAS,kBAAkB;CACzB,OAAkB;;;;;;0BAMM,cAAc,WAAW,eAAe;;AAElE;AAEA,IAAa,6BAAb,MAAa,mCAAmC,gBAAgB;;EACpC,KAAA,UAAA;;;EACiB,KAAA,oBAAA,EAAE,MAAM,OAAO;;;EACjC,KAAA,kBAAA;;CAEzB,cAAc;EACZ,MAAM;EAEN,kBAAkB,WAAWA,YAAM;EAEnC,IAAI,CAAC,KAAK,YAAY;GACpB,KAAK,aAAa,2BAA2B,iBAAiB;GAC9D,KAAK,WAAY,YAAY,gBAAgB;EAC/C;CACF;AACF"}
1
+ {"version":3,"file":"skin.js","names":["styles"],"sources":["../../../../src/presets/background/skin.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { ensureGlobalStyle } from '@videojs/utils/dom';\n\nimport styles from '../../define/background/skin.css?inline';\n\nconst STYLES_ID = '__media-background-styles';\n\nfunction getTemplateHTML() {\n return /* html */ `\n <media-container>\n <!-- @deprecated slot=\"media\" is no longer required, use the default slot instead -->\n <slot name=\"media\"></slot>\n <slot></slot>\n </media-container>\n `;\n}\n\nexport class BackgroundVideoSkinElement extends ReactiveElement {\n static readonly tagName = 'background-video-skin';\n static shadowRootOptions: ShadowRootInit = { mode: 'open' };\n static getTemplateHTML = getTemplateHTML;\n\n constructor() {\n super();\n\n ensureGlobalStyle(STYLES_ID, styles);\n\n if (!this.shadowRoot) {\n this.attachShadow(BackgroundVideoSkinElement.shadowRootOptions);\n this.shadowRoot!.innerHTML = getTemplateHTML();\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [BackgroundVideoSkinElement.tagName]: BackgroundVideoSkinElement;\n }\n}\n"],"mappings":";;;;AAKA,MAAM,YAAY;AAElB,SAAS,kBAAkB;CACzB,OAAkB;;;;;;;AAOpB;AAEA,IAAa,6BAAb,MAAa,mCAAmC,gBAAgB;;EACpC,KAAA,UAAA;;;EACiB,KAAA,oBAAA,EAAE,MAAM,OAAO;;;EACjC,KAAA,kBAAA;;CAEzB,cAAc;EACZ,MAAM;EAEN,kBAAkB,WAAWA,YAAM;EAEnC,IAAI,CAAC,KAAK,YAAY;GACpB,KAAK,aAAa,2BAA2B,iBAAiB;GAC9D,KAAK,WAAY,YAAY,gBAAgB;EAC/C;CACF;AACF"}
@@ -1,6 +1,7 @@
1
1
  import { CompatLiveAudioSkinElement } from "./compat-skin.js";
2
+ import { ScaffoldLiveAudioSkinElement } from "./scaffold-skin.js";
2
3
  import { LiveAudioPlayerElement, PlayerController } from "./player.js";
3
4
  import { LiveAudioSkinElement } from "./skin.js";
4
5
  import { NeutralLiveAudioSkinElement } from "./neutral-skin.js";
5
6
  import { liveAudioFeatures } from "@videojs/core/dom";
6
- export { CompatLiveAudioSkinElement, LiveAudioPlayerElement, LiveAudioSkinElement, NeutralLiveAudioSkinElement, PlayerController, liveAudioFeatures };
7
+ export { CompatLiveAudioSkinElement, LiveAudioPlayerElement, LiveAudioSkinElement, NeutralLiveAudioSkinElement, PlayerController, ScaffoldLiveAudioSkinElement, liveAudioFeatures };
@@ -1,6 +1,7 @@
1
1
  import { CompatLiveAudioSkinElement } from "./compat-skin.js";
2
2
  import { NeutralLiveAudioSkinElement } from "./neutral-skin.js";
3
3
  import { LiveAudioPlayerElement, PlayerController } from "./player.js";
4
+ import { ScaffoldLiveAudioSkinElement } from "./scaffold-skin.js";
4
5
  import { LiveAudioSkinElement } from "./skin.js";
5
6
  import { liveAudioFeatures } from "@videojs/core/dom";
6
- export { CompatLiveAudioSkinElement, LiveAudioPlayerElement, LiveAudioSkinElement, NeutralLiveAudioSkinElement, PlayerController, liveAudioFeatures };
7
+ export { CompatLiveAudioSkinElement, LiveAudioPlayerElement, LiveAudioSkinElement, NeutralLiveAudioSkinElement, PlayerController, ScaffoldLiveAudioSkinElement, liveAudioFeatures };
@@ -0,0 +1,15 @@
1
+ import { SkinElement } from "../skin.js";
2
+ //#region src/presets/live-audio/scaffold-skin.d.ts
3
+ /** Packaged scaffold live-audio UI registered as `<live-audio-scaffold-skin>`. */
4
+ export declare class ScaffoldLiveAudioSkinElement extends SkinElement {
5
+ static readonly tagName = "live-audio-scaffold-skin";
6
+ static styles: import("@videojs/utils/dom").ShadowStyle;
7
+ static template: HTMLTemplateElement | null;
8
+ }
9
+ declare global {
10
+ interface HTMLElementTagNameMap {
11
+ [ScaffoldLiveAudioSkinElement.tagName]: ScaffoldLiveAudioSkinElement;
12
+ }
13
+ }
14
+ //#endregion
15
+ //# sourceMappingURL=scaffold-skin.d.ts.map
@@ -0,0 +1,21 @@
1
+ import { SkinElement } from "../skin.js";
2
+ import { template } from "../../internal/skins/scaffold-live-audio/template.js";
3
+ import scaffold_skin_default from "../../define/live-audio/scaffold-skin2.js";
4
+ import { createShadowStyle } from "@videojs/utils/dom";
5
+ //#region src/presets/live-audio/scaffold-skin.ts
6
+ /** Packaged scaffold live-audio UI registered as `<live-audio-scaffold-skin>`. */
7
+ var ScaffoldLiveAudioSkinElement = class extends SkinElement {
8
+ static {
9
+ this.tagName = "live-audio-scaffold-skin";
10
+ }
11
+ static {
12
+ this.styles = createShadowStyle(scaffold_skin_default);
13
+ }
14
+ static {
15
+ this.template = template;
16
+ }
17
+ };
18
+ //#endregion
19
+ export { ScaffoldLiveAudioSkinElement };
20
+
21
+ //# sourceMappingURL=scaffold-skin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-skin.js","names":["styles"],"sources":["../../../../src/presets/live-audio/scaffold-skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/scaffold-live-audio/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/live-audio/scaffold-skin.css?inline';\n\n/** Packaged scaffold live-audio UI registered as `<live-audio-scaffold-skin>`. */\nexport class ScaffoldLiveAudioSkinElement extends SkinElement {\n static readonly tagName = 'live-audio-scaffold-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ScaffoldLiveAudioSkinElement.tagName]: ScaffoldLiveAudioSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,+BAAb,cAAkD,YAAY;;EAClC,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,qBAAM;;;EACtB,KAAA,WAAA;;AACpB"}
@@ -1,6 +1,7 @@
1
1
  import { CompatLiveVideoSkinElement } from "./compat-skin.js";
2
+ import { ScaffoldLiveVideoSkinElement } from "./scaffold-skin.js";
2
3
  import { LiveVideoPlayerElement, PlayerController } from "./player.js";
3
4
  import { LiveVideoSkinElement } from "./skin.js";
4
5
  import { NeutralLiveVideoSkinElement } from "./neutral-skin.js";
5
6
  import { liveVideoFeatures } from "@videojs/core/dom";
6
- export { CompatLiveVideoSkinElement, LiveVideoPlayerElement, LiveVideoSkinElement, NeutralLiveVideoSkinElement, PlayerController, liveVideoFeatures };
7
+ export { CompatLiveVideoSkinElement, LiveVideoPlayerElement, LiveVideoSkinElement, NeutralLiveVideoSkinElement, PlayerController, ScaffoldLiveVideoSkinElement, liveVideoFeatures };
@@ -1,6 +1,7 @@
1
1
  import { CompatLiveVideoSkinElement } from "./compat-skin.js";
2
2
  import { NeutralLiveVideoSkinElement } from "./neutral-skin.js";
3
3
  import { LiveVideoPlayerElement, PlayerController } from "./player.js";
4
+ import { ScaffoldLiveVideoSkinElement } from "./scaffold-skin.js";
4
5
  import { LiveVideoSkinElement } from "./skin.js";
5
6
  import { liveVideoFeatures } from "@videojs/core/dom";
6
- export { CompatLiveVideoSkinElement, LiveVideoPlayerElement, LiveVideoSkinElement, NeutralLiveVideoSkinElement, PlayerController, liveVideoFeatures };
7
+ export { CompatLiveVideoSkinElement, LiveVideoPlayerElement, LiveVideoSkinElement, NeutralLiveVideoSkinElement, PlayerController, ScaffoldLiveVideoSkinElement, liveVideoFeatures };
@@ -0,0 +1,15 @@
1
+ import { SkinElement } from "../skin.js";
2
+ //#region src/presets/live-video/scaffold-skin.d.ts
3
+ /** Packaged scaffold live-video UI registered as `<live-video-scaffold-skin>`. */
4
+ export declare class ScaffoldLiveVideoSkinElement extends SkinElement {
5
+ static readonly tagName = "live-video-scaffold-skin";
6
+ static styles: import("@videojs/utils/dom").ShadowStyle;
7
+ static template: HTMLTemplateElement | null;
8
+ }
9
+ declare global {
10
+ interface HTMLElementTagNameMap {
11
+ [ScaffoldLiveVideoSkinElement.tagName]: ScaffoldLiveVideoSkinElement;
12
+ }
13
+ }
14
+ //#endregion
15
+ //# sourceMappingURL=scaffold-skin.d.ts.map
@@ -0,0 +1,21 @@
1
+ import { SkinElement } from "../skin.js";
2
+ import { template } from "../../internal/skins/scaffold-live-video/template.js";
3
+ import scaffold_skin_default from "../../define/live-video/scaffold-skin2.js";
4
+ import { createShadowStyle } from "@videojs/utils/dom";
5
+ //#region src/presets/live-video/scaffold-skin.ts
6
+ /** Packaged scaffold live-video UI registered as `<live-video-scaffold-skin>`. */
7
+ var ScaffoldLiveVideoSkinElement = class extends SkinElement {
8
+ static {
9
+ this.tagName = "live-video-scaffold-skin";
10
+ }
11
+ static {
12
+ this.styles = createShadowStyle(scaffold_skin_default);
13
+ }
14
+ static {
15
+ this.template = template;
16
+ }
17
+ };
18
+ //#endregion
19
+ export { ScaffoldLiveVideoSkinElement };
20
+
21
+ //# sourceMappingURL=scaffold-skin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-skin.js","names":["styles"],"sources":["../../../../src/presets/live-video/scaffold-skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/scaffold-live-video/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/live-video/scaffold-skin.css?inline';\n\n/** Packaged scaffold live-video UI registered as `<live-video-scaffold-skin>`. */\nexport class ScaffoldLiveVideoSkinElement extends SkinElement {\n static readonly tagName = 'live-video-scaffold-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ScaffoldLiveVideoSkinElement.tagName]: ScaffoldLiveVideoSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,+BAAb,cAAkD,YAAY;;EAClC,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,qBAAM;;;EACtB,KAAA,WAAA;;AACpB"}
@@ -1,6 +1,5 @@
1
1
  import global_default from "../define/global.js";
2
2
  import shadow_default from "../define/shadow.js";
3
- import { SKIN_HELP_TEXT, SKIN_HELP_URL } from "@videojs/core";
4
3
  import { ReactiveElement } from "@videojs/element";
5
4
  import { applyShadowStyles, createShadowStyle, ensureGlobalStyle, renderTemplate } from "@videojs/utils/dom";
6
5
  //#region src/presets/skin.ts
@@ -21,22 +20,12 @@ var SkinElement = class extends ReactiveElement {
21
20
  const ctor = this.constructor;
22
21
  this.attachShadow(ctor.shadowRootOptions);
23
22
  if (ctor.template) renderTemplate(this.shadowRoot, ctor.template);
24
- this.shadowRoot.append(createHelpLink(this.ownerDocument));
25
23
  const sheets = [shadowSheet];
26
24
  if (ctor.styles) sheets.push(ctor.styles);
27
25
  applyShadowStyles(this.shadowRoot, sheets);
28
26
  }
29
27
  }
30
28
  };
31
- /** Every packaged skin links to the page that explains what the player is. See `SKIN_HELP_URL`. */
32
- function createHelpLink(doc) {
33
- const link = doc.createElement("a");
34
- link.rel = "help";
35
- link.href = SKIN_HELP_URL;
36
- link.hidden = true;
37
- link.textContent = SKIN_HELP_TEXT;
38
- return link;
39
- }
40
29
  //#endregion
41
30
  export { SkinElement };
42
31
 
@@ -1 +1 @@
1
- {"version":3,"file":"skin.js","names":["shadowStyles","globalStyles"],"sources":["../../../src/presets/skin.ts"],"sourcesContent":["import { SKIN_HELP_TEXT, SKIN_HELP_URL } from '@videojs/core';\nimport { ReactiveElement } from '@videojs/element';\nimport {\n applyShadowStyles,\n createShadowStyle,\n ensureGlobalStyle,\n renderTemplate,\n type ShadowStyle,\n} from '@videojs/utils/dom';\n\nimport globalStyles from '../define/global.css?inline';\nimport shadowStyles from '../define/shadow.css?inline';\n\nconst STYLES_ID = '__media-styles';\nconst shadowSheet = createShadowStyle(shadowStyles);\n\n/**\n * Base element for skin definitions. Attaches a shadow root, clones `static template` into it, and applies shared +\n * per-skin styles via `adoptedStyleSheets` (or `<style>` fallback).\n */\nexport class SkinElement extends ReactiveElement {\n static shadowRootOptions: ShadowRootInit = { mode: 'open' };\n static styles?: ShadowStyle;\n static template?: HTMLTemplateElement | null;\n\n constructor() {\n super();\n\n ensureGlobalStyle(STYLES_ID, globalStyles);\n\n if (!this.shadowRoot) {\n const ctor = this.constructor as typeof SkinElement;\n\n this.attachShadow(ctor.shadowRootOptions);\n\n if (ctor.template) {\n renderTemplate(this.shadowRoot!, ctor.template);\n }\n\n this.shadowRoot!.append(createHelpLink(this.ownerDocument));\n\n const sheets: ShadowStyle[] = [shadowSheet];\n\n if (ctor.styles) {\n sheets.push(ctor.styles);\n }\n\n applyShadowStyles(this.shadowRoot!, sheets);\n }\n }\n}\n\n/** Every packaged skin links to the page that explains what the player is. See `SKIN_HELP_URL`. */\nfunction createHelpLink(doc: Document): HTMLAnchorElement {\n const link = doc.createElement('a');\n\n link.rel = 'help';\n link.href = SKIN_HELP_URL;\n link.hidden = true;\n link.textContent = SKIN_HELP_TEXT;\n\n return link;\n}\n"],"mappings":";;;;;;AAaA,MAAM,YAAY;AAClB,MAAM,cAAc,kBAAkBA,cAAY;;;;;AAMlD,IAAa,cAAb,cAAiC,gBAAgB;;EACJ,KAAA,oBAAA,EAAE,MAAM,OAAO;;CAI1D,cAAc;EACZ,MAAM;EAEN,kBAAkB,WAAWC,cAAY;EAEzC,IAAI,CAAC,KAAK,YAAY;GACpB,MAAM,OAAO,KAAK;GAElB,KAAK,aAAa,KAAK,iBAAiB;GAExC,IAAI,KAAK,UACP,eAAe,KAAK,YAAa,KAAK,QAAQ;GAGhD,KAAK,WAAY,OAAO,eAAe,KAAK,aAAa,CAAC;GAE1D,MAAM,SAAwB,CAAC,WAAW;GAE1C,IAAI,KAAK,QACP,OAAO,KAAK,KAAK,MAAM;GAGzB,kBAAkB,KAAK,YAAa,MAAM;EAC5C;CACF;AACF;;AAGA,SAAS,eAAe,KAAkC;CACxD,MAAM,OAAO,IAAI,cAAc,GAAG;CAElC,KAAK,MAAM;CACX,KAAK,OAAO;CACZ,KAAK,SAAS;CACd,KAAK,cAAc;CAEnB,OAAO;AACT"}
1
+ {"version":3,"file":"skin.js","names":["shadowStyles","globalStyles"],"sources":["../../../src/presets/skin.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport {\n applyShadowStyles,\n createShadowStyle,\n ensureGlobalStyle,\n renderTemplate,\n type ShadowStyle,\n} from '@videojs/utils/dom';\n\nimport globalStyles from '../define/global.css?inline';\nimport shadowStyles from '../define/shadow.css?inline';\n\nconst STYLES_ID = '__media-styles';\nconst shadowSheet = createShadowStyle(shadowStyles);\n\n/**\n * Base element for skin definitions. Attaches a shadow root, clones `static template` into it, and applies shared +\n * per-skin styles via `adoptedStyleSheets` (or `<style>` fallback).\n */\nexport class SkinElement extends ReactiveElement {\n static shadowRootOptions: ShadowRootInit = { mode: 'open' };\n static styles?: ShadowStyle;\n static template?: HTMLTemplateElement | null;\n\n constructor() {\n super();\n\n ensureGlobalStyle(STYLES_ID, globalStyles);\n\n if (!this.shadowRoot) {\n const ctor = this.constructor as typeof SkinElement;\n\n this.attachShadow(ctor.shadowRootOptions);\n\n if (ctor.template) {\n renderTemplate(this.shadowRoot!, ctor.template);\n }\n\n const sheets: ShadowStyle[] = [shadowSheet];\n\n if (ctor.styles) {\n sheets.push(ctor.styles);\n }\n\n applyShadowStyles(this.shadowRoot!, sheets);\n }\n }\n}\n"],"mappings":";;;;;AAYA,MAAM,YAAY;AAClB,MAAM,cAAc,kBAAkBA,cAAY;;;;;AAMlD,IAAa,cAAb,cAAiC,gBAAgB;;EACJ,KAAA,oBAAA,EAAE,MAAM,OAAO;;CAI1D,cAAc;EACZ,MAAM;EAEN,kBAAkB,WAAWC,cAAY;EAEzC,IAAI,CAAC,KAAK,YAAY;GACpB,MAAM,OAAO,KAAK;GAElB,KAAK,aAAa,KAAK,iBAAiB;GAExC,IAAI,KAAK,UACP,eAAe,KAAK,YAAa,KAAK,QAAQ;GAGhD,MAAM,SAAwB,CAAC,WAAW;GAE1C,IAAI,KAAK,QACP,OAAO,KAAK,KAAK,MAAM;GAGzB,kBAAkB,KAAK,YAAa,MAAM;EAC5C;CACF;AACF"}
@@ -1,6 +1,7 @@
1
1
  import { CompatVideoSkinElement } from "./compat-skin.js";
2
+ import { ScaffoldVideoSkinElement } from "./scaffold-skin.js";
2
3
  import { NeutralVideoSkinElement } from "./neutral-skin.js";
3
4
  import { PlayerController, VideoPlayerElement } from "./player.js";
4
5
  import { VideoSkinElement } from "./skin.js";
5
6
  import { videoFeatures } from "@videojs/core/dom";
6
- export { CompatVideoSkinElement, NeutralVideoSkinElement, PlayerController, VideoPlayerElement, VideoSkinElement, videoFeatures };
7
+ export { CompatVideoSkinElement, NeutralVideoSkinElement, PlayerController, ScaffoldVideoSkinElement, VideoPlayerElement, VideoSkinElement, videoFeatures };
@@ -1,6 +1,7 @@
1
1
  import { CompatVideoSkinElement } from "./compat-skin.js";
2
2
  import { NeutralVideoSkinElement } from "./neutral-skin.js";
3
3
  import { PlayerController, VideoPlayerElement } from "./player.js";
4
+ import { ScaffoldVideoSkinElement } from "./scaffold-skin.js";
4
5
  import { VideoSkinElement } from "./skin.js";
5
6
  import { videoFeatures } from "@videojs/core/dom";
6
- export { CompatVideoSkinElement, NeutralVideoSkinElement, PlayerController, VideoPlayerElement, VideoSkinElement, videoFeatures };
7
+ export { CompatVideoSkinElement, NeutralVideoSkinElement, PlayerController, ScaffoldVideoSkinElement, VideoPlayerElement, VideoSkinElement, videoFeatures };
@@ -0,0 +1,15 @@
1
+ import { SkinElement } from "../skin.js";
2
+ //#region src/presets/video/scaffold-skin.d.ts
3
+ /** Packaged scaffold video UI registered as `<video-scaffold-skin>`. */
4
+ export declare class ScaffoldVideoSkinElement extends SkinElement {
5
+ static readonly tagName = "video-scaffold-skin";
6
+ static styles: import("@videojs/utils/dom").ShadowStyle;
7
+ static template: HTMLTemplateElement | null;
8
+ }
9
+ declare global {
10
+ interface HTMLElementTagNameMap {
11
+ [ScaffoldVideoSkinElement.tagName]: ScaffoldVideoSkinElement;
12
+ }
13
+ }
14
+ //#endregion
15
+ //# sourceMappingURL=scaffold-skin.d.ts.map
@@ -0,0 +1,21 @@
1
+ import { SkinElement } from "../skin.js";
2
+ import { template } from "../../internal/skins/scaffold-video/template.js";
3
+ import scaffold_skin_default from "../../define/video/scaffold-skin2.js";
4
+ import { createShadowStyle } from "@videojs/utils/dom";
5
+ //#region src/presets/video/scaffold-skin.ts
6
+ /** Packaged scaffold video UI registered as `<video-scaffold-skin>`. */
7
+ var ScaffoldVideoSkinElement = class extends SkinElement {
8
+ static {
9
+ this.tagName = "video-scaffold-skin";
10
+ }
11
+ static {
12
+ this.styles = createShadowStyle(scaffold_skin_default);
13
+ }
14
+ static {
15
+ this.template = template;
16
+ }
17
+ };
18
+ //#endregion
19
+ export { ScaffoldVideoSkinElement };
20
+
21
+ //# sourceMappingURL=scaffold-skin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-skin.js","names":["styles"],"sources":["../../../../src/presets/video/scaffold-skin.ts"],"sourcesContent":["import { createShadowStyle } from '@videojs/utils/dom';\n\nimport { template } from '../../internal/skins/scaffold-video/template';\nimport { SkinElement } from '../skin';\n\nimport styles from '../../define/video/scaffold-skin.css?inline';\n\n/** Packaged scaffold video UI registered as `<video-scaffold-skin>`. */\nexport class ScaffoldVideoSkinElement extends SkinElement {\n static readonly tagName = 'video-scaffold-skin';\n static styles = createShadowStyle(styles);\n static template = template;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ScaffoldVideoSkinElement.tagName]: ScaffoldVideoSkinElement;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,2BAAb,cAA8C,YAAY;;EAC9B,KAAA,UAAA;;;EACV,KAAA,SAAA,kBAAkBA,qBAAM;;;EACtB,KAAA,WAAA;;AACpB"}
@@ -103,7 +103,9 @@ var SliderElement = class extends UIElement {
103
103
  this.dispatchEvent(new CustomEvent("drag-end", { bubbles: true }));
104
104
  },
105
105
  adjustPercent: (raw, thumbSize, trackSize) => this.#core.adjustPercentForAlignment(raw, thumbSize, trackSize),
106
- onResize: () => this.requestUpdate()
106
+ onResize: () => {
107
+ if (this.thumbAlignment === "edge") this.requestUpdate();
108
+ }
107
109
  });
108
110
  applyElementProps(this, this.#slider.rootProps, { signal });
109
111
  applyStyles(this, this.#slider.rootStyle);
@@ -1 +1 @@
1
- {"version":3,"file":"element.js","names":[],"sources":["../../../../src/ui/slider/element.ts"],"sourcesContent":["import { SliderCore, SliderDataAttrs, type SliderProps } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createSlider,\n getSliderCSSVars,\n type SliderApi,\n selectControls,\n} from '@videojs/core/dom';\nimport { type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport { applyStyles } from '@videojs/utils/dom';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { UIElement } from '../ui-element';\nimport { sliderContext } from './context';\n\n/**\n * @fires value-change - Fired while the slider value changes during an interaction.\n * @fires value-commit - Fired when an interaction commits the slider value.\n * @fires drag-start - Fired when a pointer drag starts.\n * @fires drag-end - Fired when a pointer drag ends.\n */\nexport class SliderElement extends UIElement {\n static readonly tagName = 'media-slider';\n\n static override properties = {\n label: { type: String },\n value: { type: Number },\n min: { type: Number },\n max: { type: Number },\n step: { type: Number },\n largeStep: { type: Number, attribute: 'large-step' },\n orientation: { type: String },\n disabled: { type: Boolean },\n thumbAlignment: { type: String, attribute: 'thumb-alignment' },\n } satisfies PropertyDeclarationMap<keyof SliderProps>;\n\n label: Text | string = '';\n value = SliderCore.defaultProps.value;\n min = SliderCore.defaultProps.min;\n max = SliderCore.defaultProps.max;\n step = SliderCore.defaultProps.step;\n largeStep = SliderCore.defaultProps.largeStep;\n orientation = SliderCore.defaultProps.orientation;\n disabled = SliderCore.defaultProps.disabled;\n thumbAlignment = SliderCore.defaultProps.thumbAlignment;\n\n readonly #core = new SliderCore();\n readonly #controlsState = new PlayerController(this, playerContext, selectControls);\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #provider = new ContextProvider(this, { context: sliderContext });\n\n #slider: SliderApi | null = null;\n #disconnect: AbortController | null = null;\n #releaseControlsLock: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.destroyed) return;\n\n this.#disconnect = new AbortController();\n const signal = this.#disconnect.signal;\n\n this.#slider = createSlider({\n getElement: () => this,\n getThumbElement: () => this.querySelector<HTMLElement>('media-slider-thumb'),\n getOrientation: () => this.orientation,\n isDisabled: () => this.disabled,\n getPercent: () => this.#core.percentFromValue(this.value),\n getStepPercent: () => this.#core.getStepPercent(),\n getLargeStepPercent: () => this.#core.getLargeStepPercent(),\n onValueChange: (percent) => {\n this.value = this.#core.valueFromPercent(percent);\n this.dispatchEvent(new CustomEvent('value-change', { detail: { value: this.value }, bubbles: true }));\n },\n onValueCommit: (percent) => {\n this.value = this.#core.valueFromPercent(percent);\n this.dispatchEvent(new CustomEvent('value-commit', { detail: { value: this.value }, bubbles: true }));\n },\n onPressStart: () => {\n this.#releaseControlsLock ??= this.#controlsState.value?.requestControlsLock() ?? null;\n },\n onPressEnd: () => this.#releaseControlsVisibilityLock(),\n onDragStart: () => {\n this.dispatchEvent(new CustomEvent('drag-start', { bubbles: true }));\n },\n onDragEnd: () => {\n this.dispatchEvent(new CustomEvent('drag-end', { bubbles: true }));\n },\n adjustPercent: (raw, thumbSize, trackSize) => this.#core.adjustPercentForAlignment(raw, thumbSize, trackSize),\n onResize: () => this.requestUpdate(),\n });\n\n applyElementProps(this, this.#slider.rootProps, { signal });\n applyStyles(this, this.#slider.rootStyle);\n this.#slider.input.subscribe(() => this.requestUpdate(), { signal });\n }\n\n override disconnectedCallback(): void {\n this.#releaseControlsVisibilityLock();\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n override destroyCallback(): void {\n this.#releaseControlsVisibilityLock();\n this.#slider?.destroy();\n super.destroyCallback();\n }\n\n #releaseControlsVisibilityLock(): void {\n this.#releaseControlsLock?.();\n this.#releaseControlsLock = null;\n }\n\n protected override willUpdate(_changed: PropertyValues): void {\n super.willUpdate(_changed);\n this.#core.setProps(this);\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n if (!this.#slider) return;\n\n this.#core.setInput(this.#slider.input.current);\n const state = this.#core.getSliderState(this.value);\n\n const cssVars = getSliderCSSVars(this.#slider.adjustForAlignment(state));\n\n applyStyles(this, cssVars);\n\n // Apply state data attributes to the root element.\n applyStateDataAttrs(this, state, SliderDataAttrs);\n\n // Provide context to child elements (thumb, value, track, etc.).\n this.#provider.setValue({\n state,\n stateAttrMap: SliderDataAttrs,\n pointerValue: this.#core.valueFromPercent(state.pointerPercent),\n thumbAttrs: (() => {\n const attrs = this.#core.getAttrs(state);\n\n return { ...attrs, 'aria-label': translateText(attrs['aria-label'], this.#i18n.value) };\n })(),\n thumbProps: this.#slider.thumbProps,\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"element.js","names":[],"sources":["../../../../src/ui/slider/element.ts"],"sourcesContent":["import { SliderCore, SliderDataAttrs, type SliderProps } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createSlider,\n getSliderCSSVars,\n type SliderApi,\n selectControls,\n} from '@videojs/core/dom';\nimport { type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport { applyStyles } from '@videojs/utils/dom';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/controller';\nimport { UIElement } from '../ui-element';\nimport { sliderContext } from './context';\n\n/**\n * @fires value-change - Fired while the slider value changes during an interaction.\n * @fires value-commit - Fired when an interaction commits the slider value.\n * @fires drag-start - Fired when a pointer drag starts.\n * @fires drag-end - Fired when a pointer drag ends.\n */\nexport class SliderElement extends UIElement {\n static readonly tagName = 'media-slider';\n\n static override properties = {\n label: { type: String },\n value: { type: Number },\n min: { type: Number },\n max: { type: Number },\n step: { type: Number },\n largeStep: { type: Number, attribute: 'large-step' },\n orientation: { type: String },\n disabled: { type: Boolean },\n thumbAlignment: { type: String, attribute: 'thumb-alignment' },\n } satisfies PropertyDeclarationMap<keyof SliderProps>;\n\n label: Text | string = '';\n value = SliderCore.defaultProps.value;\n min = SliderCore.defaultProps.min;\n max = SliderCore.defaultProps.max;\n step = SliderCore.defaultProps.step;\n largeStep = SliderCore.defaultProps.largeStep;\n orientation = SliderCore.defaultProps.orientation;\n disabled = SliderCore.defaultProps.disabled;\n thumbAlignment = SliderCore.defaultProps.thumbAlignment;\n\n readonly #core = new SliderCore();\n readonly #controlsState = new PlayerController(this, playerContext, selectControls);\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #provider = new ContextProvider(this, { context: sliderContext });\n\n #slider: SliderApi | null = null;\n #disconnect: AbortController | null = null;\n #releaseControlsLock: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.destroyed) return;\n\n this.#disconnect = new AbortController();\n const signal = this.#disconnect.signal;\n\n this.#slider = createSlider({\n getElement: () => this,\n getThumbElement: () => this.querySelector<HTMLElement>('media-slider-thumb'),\n getOrientation: () => this.orientation,\n isDisabled: () => this.disabled,\n getPercent: () => this.#core.percentFromValue(this.value),\n getStepPercent: () => this.#core.getStepPercent(),\n getLargeStepPercent: () => this.#core.getLargeStepPercent(),\n onValueChange: (percent) => {\n this.value = this.#core.valueFromPercent(percent);\n this.dispatchEvent(new CustomEvent('value-change', { detail: { value: this.value }, bubbles: true }));\n },\n onValueCommit: (percent) => {\n this.value = this.#core.valueFromPercent(percent);\n this.dispatchEvent(new CustomEvent('value-commit', { detail: { value: this.value }, bubbles: true }));\n },\n onPressStart: () => {\n this.#releaseControlsLock ??= this.#controlsState.value?.requestControlsLock() ?? null;\n },\n onPressEnd: () => this.#releaseControlsVisibilityLock(),\n onDragStart: () => {\n this.dispatchEvent(new CustomEvent('drag-start', { bubbles: true }));\n },\n onDragEnd: () => {\n this.dispatchEvent(new CustomEvent('drag-end', { bubbles: true }));\n },\n adjustPercent: (raw, thumbSize, trackSize) => this.#core.adjustPercentForAlignment(raw, thumbSize, trackSize),\n // Only edge alignment depends on the slider's size.\n onResize: () => {\n if (this.thumbAlignment === 'edge') this.requestUpdate();\n },\n });\n\n applyElementProps(this, this.#slider.rootProps, { signal });\n applyStyles(this, this.#slider.rootStyle);\n this.#slider.input.subscribe(() => this.requestUpdate(), { signal });\n }\n\n override disconnectedCallback(): void {\n this.#releaseControlsVisibilityLock();\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n override destroyCallback(): void {\n this.#releaseControlsVisibilityLock();\n this.#slider?.destroy();\n super.destroyCallback();\n }\n\n #releaseControlsVisibilityLock(): void {\n this.#releaseControlsLock?.();\n this.#releaseControlsLock = null;\n }\n\n protected override willUpdate(_changed: PropertyValues): void {\n super.willUpdate(_changed);\n this.#core.setProps(this);\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n if (!this.#slider) return;\n\n this.#core.setInput(this.#slider.input.current);\n const state = this.#core.getSliderState(this.value);\n\n const cssVars = getSliderCSSVars(this.#slider.adjustForAlignment(state));\n\n applyStyles(this, cssVars);\n\n // Apply state data attributes to the root element.\n applyStateDataAttrs(this, state, SliderDataAttrs);\n\n // Provide context to child elements (thumb, value, track, etc.).\n this.#provider.setValue({\n state,\n stateAttrMap: SliderDataAttrs,\n pointerValue: this.#core.valueFromPercent(state.pointerPercent),\n thumbAttrs: (() => {\n const attrs = this.#core.getAttrs(state);\n\n return { ...attrs, 'aria-label': translateText(attrs['aria-label'], this.#i18n.value) };\n })(),\n thumbProps: this.#slider.thumbProps,\n });\n }\n}\n"],"mappings":"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"}
@@ -4,9 +4,9 @@ import { playerContext } from "../../player/context.js";
4
4
  import { PlayerController } from "../../player/controller.js";
5
5
  import { UIElement } from "../ui-element.js";
6
6
  import { sliderContext } from "../slider/context.js";
7
- import { TimeSliderCore, TimeSliderDataAttrs } from "@videojs/core";
8
- import { applyElementProps, applyStateDataAttrs, createSlider, getTimeSliderCSSVars, logMissingFeature, selectBuffer, selectControls, selectPlayback, selectTime } from "@videojs/core/dom";
9
- import { hasTimeRange } from "@videojs/media";
7
+ import { SliderCSSVars, TimeSliderCore, TimeSliderDataAttrs } from "@videojs/core";
8
+ import { applyElementProps, applyStateDataAttrs, createSlider, createTimeSliderSeek, getTimeSliderCSSVars, logMissingFeature, selectBuffer, selectControls, selectPlayback, selectTime } from "@videojs/core/dom";
9
+ import { hasTimeRange, isMediaPlaying } from "@videojs/media";
10
10
  import { ContextProvider } from "@videojs/element/context";
11
11
  import { translateText } from "@videojs/core/i18n";
12
12
  import { applyStyles } from "@videojs/utils/dom";
@@ -33,7 +33,9 @@ var TimeSliderElement = class extends UIElement {
33
33
  this.#timeState = new PlayerController(this, playerContext, selectTime);
34
34
  this.#bufferState = new PlayerController(this, playerContext, selectBuffer);
35
35
  this.#playbackState = new PlayerController(this, playerContext, selectPlayback);
36
+ this.#seek = createTimeSliderSeek(SliderCSSVars.fill);
36
37
  this.#i18n = new I18nController(this, i18nContext);
38
+ this.#cssVars = {};
37
39
  this.#slider = null;
38
40
  this.#disconnect = null;
39
41
  this.#releaseControlsLock = null;
@@ -71,7 +73,9 @@ var TimeSliderElement = class extends UIElement {
71
73
  #timeState;
72
74
  #bufferState;
73
75
  #playbackState;
76
+ #seek;
74
77
  #i18n;
78
+ #cssVars;
75
79
  #slider;
76
80
  #disconnect;
77
81
  #releaseControlsLock;
@@ -80,6 +84,15 @@ var TimeSliderElement = class extends UIElement {
80
84
  if (this.destroyed) return;
81
85
  this.#disconnect = new AbortController();
82
86
  const signal = this.#disconnect.signal;
87
+ let dragSeekPercent;
88
+ const seek = (percent) => {
89
+ const media = this.#timeState.value;
90
+ if (media) {
91
+ const time = this.#core.rawValueFromPercent(percent);
92
+ this.#seek.seek(percent);
93
+ media.seek(time);
94
+ }
95
+ };
83
96
  this.#slider = createSlider({
84
97
  getElement: () => this,
85
98
  getThumbElement: () => this.querySelector("media-slider-thumb"),
@@ -102,9 +115,14 @@ var TimeSliderElement = class extends UIElement {
102
115
  },
103
116
  getStepPercent: () => this.#core.getStepPercent(),
104
117
  getLargeStepPercent: () => this.#core.getLargeStepPercent(),
118
+ onValueChange: (percent) => {
119
+ if (!this.#slider?.input.current.dragging || percent === dragSeekPercent) return;
120
+ dragSeekPercent = percent;
121
+ seek(percent);
122
+ },
105
123
  onValueCommit: (percent) => {
106
- const media = this.#timeState.value;
107
- if (media) media.seek(this.#core.rawValueFromPercent(percent));
124
+ if (percent !== dragSeekPercent) seek(percent);
125
+ dragSeekPercent = void 0;
108
126
  },
109
127
  changeThrottle: this.changeThrottle,
110
128
  onPressStart: () => {
@@ -120,16 +138,20 @@ var TimeSliderElement = class extends UIElement {
120
138
  this.dispatchEvent(new CustomEvent("drag-end", { bubbles: true }));
121
139
  },
122
140
  adjustPercent: (raw, thumbSize, trackSize) => this.#core.adjustPercentForAlignment(raw, thumbSize, trackSize),
123
- onResize: () => this.requestUpdate()
141
+ onResize: () => {
142
+ if (this.thumbAlignment === "edge") this.requestUpdate();
143
+ }
124
144
  });
125
145
  applyElementProps(this, this.#slider.rootProps, { signal });
126
146
  applyStyles(this, this.#slider.rootStyle);
127
147
  this.#slider.input.subscribe(() => this.requestUpdate(), { signal });
148
+ this.#seek.state.subscribe(() => this.requestUpdate(), { signal });
128
149
  if (!this.#timeState.value) logMissingFeature(this.localName, this.#timeState.displayName);
129
150
  }
130
151
  disconnectedCallback() {
131
152
  this.#releaseControlsVisibilityLock();
132
153
  this.#resumeIfDragPaused();
154
+ this.#seek.destroy();
133
155
  super.disconnectedCallback();
134
156
  this.#disconnect?.abort();
135
157
  this.#disconnect = null;
@@ -137,6 +159,7 @@ var TimeSliderElement = class extends UIElement {
137
159
  destroyCallback() {
138
160
  this.#releaseControlsVisibilityLock();
139
161
  this.#resumeIfDragPaused();
162
+ this.#seek.destroy();
140
163
  this.#slider?.destroy();
141
164
  super.destroyCallback();
142
165
  }
@@ -166,7 +189,11 @@ var TimeSliderElement = class extends UIElement {
166
189
  if (!this.#slider) return;
167
190
  const time = this.#timeState.value;
168
191
  const buffer = this.#bufferState.value;
169
- if (!time) return;
192
+ if (!time) {
193
+ this.#seek.destroy();
194
+ this.removeAttribute("data-playing");
195
+ return;
196
+ }
170
197
  this.#core.setInput(this.#slider.input.current);
171
198
  const media = {
172
199
  ...time,
@@ -177,9 +204,18 @@ var TimeSliderElement = class extends UIElement {
177
204
  };
178
205
  this.#core.setMedia(media);
179
206
  const state = this.#core.getState();
180
- const cssVars = getTimeSliderCSSVars(this.#slider.adjustForAlignment(state));
207
+ this.#seek.update(state.seeking, state.fillPercent, this);
208
+ const percent = this.#seek.state.current.percent;
209
+ this.toggleAttribute("data-playing", isMediaPlaying(this.#playbackState.value) && !state.disabled && !state.dragging && !state.seeking && percent === void 0);
210
+ const fill = percent === void 0 || state.dragging || state.disabled ? state : {
211
+ ...state,
212
+ fillPercent: percent
213
+ };
214
+ const cssVars = getTimeSliderCSSVars(this.#slider.adjustForAlignment(fill));
215
+ const styles = Object.fromEntries(Object.entries(cssVars).filter(([name, value]) => this.#cssVars[name] !== value));
216
+ applyStyles(this, styles);
217
+ this.#cssVars = cssVars;
181
218
  const thumbAttrs = this.#core.getAttrs(state);
182
- applyStyles(this, cssVars);
183
219
  applyStateDataAttrs(this, state, TimeSliderDataAttrs);
184
220
  this.#provider.setValue({
185
221
  state,