@videojs/html 10.0.0-beta.5 → 10.0.0-beta.7

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 (370) hide show
  1. package/cdn/audio-minimal.css +1 -1
  2. package/cdn/audio-minimal.dev.d.ts +1 -0
  3. package/cdn/audio-minimal.dev.js +9 -5328
  4. package/cdn/audio-minimal.dev.js.map +1 -1
  5. package/cdn/audio-minimal.js +1 -24
  6. package/cdn/audio-minimal.js.map +1 -1
  7. package/cdn/audio.css +1 -1
  8. package/cdn/audio.dev.d.ts +1 -0
  9. package/cdn/audio.dev.js +9 -5328
  10. package/cdn/audio.dev.js.map +1 -1
  11. package/cdn/audio.js +1 -24
  12. package/cdn/audio.js.map +1 -1
  13. package/cdn/background.css +1 -1
  14. package/cdn/background.dev.d.ts +1 -0
  15. package/cdn/background.dev.js +100 -2026
  16. package/cdn/background.dev.js.map +1 -1
  17. package/cdn/background.js +1 -18
  18. package/cdn/background.js.map +1 -1
  19. package/cdn/context-C_e06fGU.js +13 -0
  20. package/cdn/context-C_e06fGU.js.map +1 -0
  21. package/cdn/context-DTY0nOpS.js +98 -0
  22. package/cdn/context-DTY0nOpS.js.map +1 -0
  23. package/cdn/create-player-Dv7K1Ezk.js +3214 -0
  24. package/cdn/create-player-Dv7K1Ezk.js.map +1 -0
  25. package/cdn/create-player-QjiNZlh7.js +7 -0
  26. package/cdn/create-player-QjiNZlh7.js.map +1 -0
  27. package/cdn/default-GgKND7a8.js +2 -0
  28. package/cdn/default-GgKND7a8.js.map +1 -0
  29. package/cdn/default-cLso8BHO.js +28 -0
  30. package/cdn/default-cLso8BHO.js.map +1 -0
  31. package/cdn/listen-BXAYCbZA.js +9 -0
  32. package/cdn/listen-BXAYCbZA.js.map +1 -0
  33. package/cdn/listen-DX5vU4s4.js +2 -0
  34. package/cdn/listen-DX5vU4s4.js.map +1 -0
  35. package/cdn/media/dash-video.dev.d.ts +1 -0
  36. package/cdn/media/dash-video.dev.js +39165 -0
  37. package/cdn/media/dash-video.dev.js.map +1 -0
  38. package/cdn/media/dash-video.js +21 -0
  39. package/cdn/media/dash-video.js.map +1 -0
  40. package/cdn/media/hls-video.dev.d.ts +1 -0
  41. package/cdn/media/hls-video.dev.js +6 -376
  42. package/cdn/media/hls-video.dev.js.map +1 -1
  43. package/cdn/media/hls-video.js +21 -63
  44. package/cdn/media/hls-video.js.map +1 -1
  45. package/cdn/media/simple-hls-video.dev.d.ts +1 -0
  46. package/cdn/media/simple-hls-video.dev.js +6 -375
  47. package/cdn/media/simple-hls-video.dev.js.map +1 -1
  48. package/cdn/media/simple-hls-video.js +1 -43
  49. package/cdn/media/simple-hls-video.js.map +1 -1
  50. package/cdn/media-attach-mixin-ChyNp2eK.js +44 -0
  51. package/cdn/media-attach-mixin-ChyNp2eK.js.map +1 -0
  52. package/cdn/media-attach-mixin-tFNcHnvo.js +2 -0
  53. package/cdn/media-attach-mixin-tFNcHnvo.js.map +1 -0
  54. package/cdn/minimal-BJfleQcQ.js +2 -0
  55. package/cdn/minimal-BJfleQcQ.js.map +1 -0
  56. package/cdn/minimal-DBMdC_0I.js +28 -0
  57. package/cdn/minimal-DBMdC_0I.js.map +1 -0
  58. package/cdn/player-CztIlNio.js +2 -0
  59. package/cdn/player-CztIlNio.js.map +1 -0
  60. package/cdn/player-Dvj38jlr.js +15 -0
  61. package/cdn/player-Dvj38jlr.js.map +1 -0
  62. package/cdn/poster-C4WHg3BH.js +2 -0
  63. package/cdn/poster-C4WHg3BH.js.map +1 -0
  64. package/cdn/poster-O0SI05LC.js +195 -0
  65. package/cdn/poster-O0SI05LC.js.map +1 -0
  66. package/cdn/predicate-BG-dj_kF.js +26 -0
  67. package/cdn/predicate-BG-dj_kF.js.map +1 -0
  68. package/cdn/predicate-Y9jDHLpX.js +2 -0
  69. package/cdn/predicate-Y9jDHLpX.js.map +1 -0
  70. package/cdn/proxy-2oO2ph3m.js +47 -0
  71. package/cdn/proxy-2oO2ph3m.js.map +1 -0
  72. package/cdn/proxy-6KS6wy69.js +2 -0
  73. package/cdn/proxy-6KS6wy69.js.map +1 -0
  74. package/cdn/proxy-XzDf9gyk.js +66 -0
  75. package/cdn/proxy-XzDf9gyk.js.map +1 -0
  76. package/cdn/proxy-dR7IDk37.js +349 -0
  77. package/cdn/proxy-dR7IDk37.js.map +1 -0
  78. package/cdn/safe-define-B8lHgj_K.js +9 -0
  79. package/cdn/safe-define-B8lHgj_K.js.map +1 -0
  80. package/cdn/safe-define-GrHW3P9e.js +2 -0
  81. package/cdn/safe-define-GrHW3P9e.js.map +1 -0
  82. package/cdn/video-minimal.css +1 -1
  83. package/cdn/video-minimal.dev.d.ts +1 -0
  84. package/cdn/video-minimal.dev.js +24 -5642
  85. package/cdn/video-minimal.dev.js.map +1 -1
  86. package/cdn/video-minimal.js +1 -24
  87. package/cdn/video-minimal.js.map +1 -1
  88. package/cdn/video.css +1 -1
  89. package/cdn/video.dev.d.ts +1 -0
  90. package/cdn/video.dev.js +30 -5701
  91. package/cdn/video.dev.js.map +1 -1
  92. package/cdn/video.js +1 -24
  93. package/cdn/video.js.map +1 -1
  94. package/cdn/volume-slider-BqzTytgB.js +8 -0
  95. package/cdn/volume-slider-BqzTytgB.js.map +1 -0
  96. package/cdn/volume-slider-CfhOO9RM.js +2453 -0
  97. package/cdn/volume-slider-CfhOO9RM.js.map +1 -0
  98. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  99. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  100. package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
  101. package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  102. package/dist/default/_virtual/inline-css_src/define/base.js +1 -1
  103. package/dist/default/_virtual/inline-css_src/define/base.js.map +1 -1
  104. package/dist/default/_virtual/inline-css_src/define/shared.js +6 -0
  105. package/dist/default/_virtual/inline-css_src/define/shared.js.map +1 -0
  106. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  107. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  108. package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
  109. package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  110. package/dist/default/define/audio/minimal-skin.css +77 -24
  111. package/dist/default/define/audio/minimal-skin.js +1 -1
  112. package/dist/default/define/audio/minimal-skin.js.map +1 -1
  113. package/dist/default/define/audio/minimal-skin.tailwind.js +1 -1
  114. package/dist/default/define/audio/minimal-skin.tailwind.js.map +1 -1
  115. package/dist/default/define/audio/skin.css +74 -28
  116. package/dist/default/define/audio/skin.js +1 -1
  117. package/dist/default/define/audio/skin.js.map +1 -1
  118. package/dist/default/define/audio/skin.tailwind.js +3 -4
  119. package/dist/default/define/audio/skin.tailwind.js.map +1 -1
  120. package/dist/default/define/background/skin.css +1 -1
  121. package/dist/default/define/background/skin.js +1 -1
  122. package/dist/default/define/background/skin.js.map +1 -1
  123. package/dist/default/define/base.css +10 -12
  124. package/dist/default/define/media/dash-video.js +14 -0
  125. package/dist/default/define/media/dash-video.js.map +1 -0
  126. package/dist/default/define/shared.css +10 -0
  127. package/dist/default/define/skin-mixin.js +8 -3
  128. package/dist/default/define/skin-mixin.js.map +1 -1
  129. package/dist/default/define/video/minimal-skin.css +257 -79
  130. package/dist/default/define/video/minimal-skin.js +2 -1
  131. package/dist/default/define/video/minimal-skin.js.map +1 -1
  132. package/dist/default/define/video/minimal-skin.tailwind.js +5 -3
  133. package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
  134. package/dist/default/define/video/skin.css +242 -74
  135. package/dist/default/define/video/skin.js +2 -1
  136. package/dist/default/define/video/skin.js.map +1 -1
  137. package/dist/default/define/video/skin.tailwind.js +5 -3
  138. package/dist/default/define/video/skin.tailwind.js.map +1 -1
  139. package/dist/default/icons/dist/render/default/index.js +2 -1
  140. package/dist/default/icons/dist/render/default/index.js.map +1 -1
  141. package/dist/default/icons/dist/render/minimal/index.js +2 -1
  142. package/dist/default/icons/dist/render/minimal/index.js.map +1 -1
  143. package/dist/default/index.js +3 -2
  144. package/dist/default/media/background-video/index.js +5 -1
  145. package/dist/default/media/background-video/index.js.map +1 -1
  146. package/dist/default/media/container-element.js +5 -2
  147. package/dist/default/media/container-element.js.map +1 -1
  148. package/dist/default/media/dash-video/index.js +26 -0
  149. package/dist/default/media/dash-video/index.js.map +1 -0
  150. package/dist/default/media/hls-video/index.js +2 -1
  151. package/dist/default/media/hls-video/index.js.map +1 -1
  152. package/dist/default/media/simple-hls-video/index.js +2 -1
  153. package/dist/default/media/simple-hls-video/index.js.map +1 -1
  154. package/dist/default/player/context.js +6 -2
  155. package/dist/default/player/context.js.map +1 -1
  156. package/dist/default/player/create-player.js +11 -3
  157. package/dist/default/player/create-player.js.map +1 -1
  158. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +6 -5
  159. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  160. package/dist/default/skins/dist/default/default/tailwind/components/button.js +1 -1
  161. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  162. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
  163. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  164. package/dist/default/skins/dist/default/default/tailwind/components/error.js +1 -1
  165. package/dist/default/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  166. package/dist/default/skins/dist/default/default/tailwind/components/popup.js +3 -3
  167. package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  168. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +16 -0
  169. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  170. package/dist/default/skins/dist/default/default/tailwind/components/preview.js +13 -0
  171. package/dist/default/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  172. package/dist/default/skins/dist/default/default/tailwind/components/root.js +1 -1
  173. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  174. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +1 -1
  175. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  176. package/dist/default/skins/dist/default/default/tailwind/components/surface.js +1 -1
  177. package/dist/default/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  178. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +21 -15
  179. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  180. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +2 -2
  181. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  182. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +1 -1
  183. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  184. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  185. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  186. package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js +6 -0
  187. package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -0
  188. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +4 -3
  189. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  190. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
  191. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  192. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js +14 -0
  193. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  194. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +1 -1
  195. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  196. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +1 -1
  197. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  198. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  199. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  200. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +23 -15
  201. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  202. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +5 -0
  203. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  204. package/dist/default/store/container-mixin.js +16 -72
  205. package/dist/default/store/container-mixin.js.map +1 -1
  206. package/dist/default/store/media-attach-mixin.js +45 -0
  207. package/dist/default/store/media-attach-mixin.js.map +1 -0
  208. package/dist/default/store/provider-mixin.js +99 -9
  209. package/dist/default/store/provider-mixin.js.map +1 -1
  210. package/dist/default/ui/popover/popover-element.js +54 -3
  211. package/dist/default/ui/popover/popover-element.js.map +1 -1
  212. package/dist/default/ui/time-slider/time-slider-element.js +1 -1
  213. package/dist/default/ui/time-slider/time-slider-element.js.map +1 -1
  214. package/dist/default/ui/tooltip/tooltip-element.js +53 -3
  215. package/dist/default/ui/tooltip/tooltip-element.js.map +1 -1
  216. package/dist/default/ui/volume-slider/volume-slider-element.js +3 -3
  217. package/dist/default/ui/volume-slider/volume-slider-element.js.map +1 -1
  218. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  219. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  220. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
  221. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  222. package/dist/dev/_virtual/inline-css_src/define/base.js +1 -1
  223. package/dist/dev/_virtual/inline-css_src/define/base.js.map +1 -1
  224. package/dist/dev/_virtual/inline-css_src/define/shared.js +6 -0
  225. package/dist/dev/_virtual/inline-css_src/define/shared.js.map +1 -0
  226. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  227. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  228. package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
  229. package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  230. package/dist/dev/define/audio/minimal-skin.css +77 -24
  231. package/dist/dev/define/audio/minimal-skin.d.ts.map +1 -1
  232. package/dist/dev/define/audio/minimal-skin.js +2 -0
  233. package/dist/dev/define/audio/minimal-skin.js.map +1 -1
  234. package/dist/dev/define/audio/minimal-skin.tailwind.d.ts.map +1 -1
  235. package/dist/dev/define/audio/minimal-skin.tailwind.js +3 -1
  236. package/dist/dev/define/audio/minimal-skin.tailwind.js.map +1 -1
  237. package/dist/dev/define/audio/skin.css +74 -28
  238. package/dist/dev/define/audio/skin.d.ts.map +1 -1
  239. package/dist/dev/define/audio/skin.js +2 -0
  240. package/dist/dev/define/audio/skin.js.map +1 -1
  241. package/dist/dev/define/audio/skin.tailwind.d.ts.map +1 -1
  242. package/dist/dev/define/audio/skin.tailwind.js +5 -4
  243. package/dist/dev/define/audio/skin.tailwind.js.map +1 -1
  244. package/dist/dev/define/background/skin.css +1 -1
  245. package/dist/dev/define/background/skin.d.ts.map +1 -1
  246. package/dist/dev/define/background/skin.js +3 -1
  247. package/dist/dev/define/background/skin.js.map +1 -1
  248. package/dist/dev/define/base.css +10 -12
  249. package/dist/dev/define/media/dash-video.d.ts +14 -0
  250. package/dist/dev/define/media/dash-video.d.ts.map +1 -0
  251. package/dist/dev/define/media/dash-video.js +14 -0
  252. package/dist/dev/define/media/dash-video.js.map +1 -0
  253. package/dist/dev/define/shared.css +10 -0
  254. package/dist/dev/define/skin-mixin.d.ts.map +1 -1
  255. package/dist/dev/define/skin-mixin.js +8 -3
  256. package/dist/dev/define/skin-mixin.js.map +1 -1
  257. package/dist/dev/define/video/minimal-skin.css +257 -79
  258. package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
  259. package/dist/dev/define/video/minimal-skin.js +18 -2
  260. package/dist/dev/define/video/minimal-skin.js.map +1 -1
  261. package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
  262. package/dist/dev/define/video/minimal-skin.tailwind.js +22 -5
  263. package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
  264. package/dist/dev/define/video/skin.css +242 -74
  265. package/dist/dev/define/video/skin.d.ts.map +1 -1
  266. package/dist/dev/define/video/skin.js +15 -1
  267. package/dist/dev/define/video/skin.js.map +1 -1
  268. package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
  269. package/dist/dev/define/video/skin.tailwind.js +20 -5
  270. package/dist/dev/define/video/skin.tailwind.js.map +1 -1
  271. package/dist/dev/icons/dist/render/default/index.js +2 -1
  272. package/dist/dev/icons/dist/render/default/index.js.map +1 -1
  273. package/dist/dev/icons/dist/render/minimal/index.js +2 -1
  274. package/dist/dev/icons/dist/render/minimal/index.js.map +1 -1
  275. package/dist/dev/index.d.ts +5 -4
  276. package/dist/dev/index.js +3 -2
  277. package/dist/dev/media/background-video/index.d.ts +8 -1
  278. package/dist/dev/media/background-video/index.d.ts.map +1 -1
  279. package/dist/dev/media/background-video/index.js +5 -1
  280. package/dist/dev/media/background-video/index.js.map +1 -1
  281. package/dist/dev/media/container-element.js +5 -2
  282. package/dist/dev/media/container-element.js.map +1 -1
  283. package/dist/dev/media/dash-video/index.d.ts +13 -0
  284. package/dist/dev/media/dash-video/index.d.ts.map +1 -0
  285. package/dist/dev/media/dash-video/index.js +26 -0
  286. package/dist/dev/media/dash-video/index.js.map +1 -0
  287. package/dist/dev/media/hls-video/index.d.ts +2 -1
  288. package/dist/dev/media/hls-video/index.d.ts.map +1 -1
  289. package/dist/dev/media/hls-video/index.js +2 -1
  290. package/dist/dev/media/hls-video/index.js.map +1 -1
  291. package/dist/dev/media/simple-hls-video/index.d.ts +2 -1
  292. package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -1
  293. package/dist/dev/media/simple-hls-video/index.js +2 -1
  294. package/dist/dev/media/simple-hls-video/index.js.map +1 -1
  295. package/dist/dev/player/context.d.ts +16 -2
  296. package/dist/dev/player/context.d.ts.map +1 -1
  297. package/dist/dev/player/context.js +6 -2
  298. package/dist/dev/player/context.js.map +1 -1
  299. package/dist/dev/player/create-player.d.ts +1 -1
  300. package/dist/dev/player/create-player.js +11 -3
  301. package/dist/dev/player/create-player.js.map +1 -1
  302. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +6 -5
  303. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  304. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +1 -1
  305. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  306. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +1 -1
  307. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  308. package/dist/dev/skins/dist/default/default/tailwind/components/error.js +1 -1
  309. package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  310. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +3 -3
  311. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  312. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +16 -0
  313. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  314. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js +13 -0
  315. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  316. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +1 -1
  317. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  318. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +1 -1
  319. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  320. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js +1 -1
  321. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  322. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +21 -15
  323. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  324. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +2 -2
  325. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  326. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +1 -1
  327. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  328. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  329. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  330. package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js +6 -0
  331. package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -0
  332. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +4 -3
  333. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  334. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
  335. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  336. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js +14 -0
  337. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  338. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +1 -1
  339. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  340. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +1 -1
  341. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  342. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  343. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  344. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +23 -15
  345. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  346. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +5 -0
  347. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  348. package/dist/dev/store/container-mixin.d.ts +10 -5
  349. package/dist/dev/store/container-mixin.d.ts.map +1 -1
  350. package/dist/dev/store/container-mixin.js +16 -72
  351. package/dist/dev/store/container-mixin.js.map +1 -1
  352. package/dist/dev/store/media-attach-mixin.d.ts +19 -0
  353. package/dist/dev/store/media-attach-mixin.d.ts.map +1 -0
  354. package/dist/dev/store/media-attach-mixin.js +45 -0
  355. package/dist/dev/store/media-attach-mixin.js.map +1 -0
  356. package/dist/dev/store/provider-mixin.d.ts +19 -6
  357. package/dist/dev/store/provider-mixin.d.ts.map +1 -1
  358. package/dist/dev/store/provider-mixin.js +99 -9
  359. package/dist/dev/store/provider-mixin.js.map +1 -1
  360. package/dist/dev/ui/popover/popover-element.d.ts.map +1 -1
  361. package/dist/dev/ui/popover/popover-element.js +54 -3
  362. package/dist/dev/ui/popover/popover-element.js.map +1 -1
  363. package/dist/dev/ui/time-slider/time-slider-element.js +1 -1
  364. package/dist/dev/ui/time-slider/time-slider-element.js.map +1 -1
  365. package/dist/dev/ui/tooltip/tooltip-element.d.ts.map +1 -1
  366. package/dist/dev/ui/tooltip/tooltip-element.js +53 -3
  367. package/dist/dev/ui/tooltip/tooltip-element.js.map +1 -1
  368. package/dist/dev/ui/volume-slider/volume-slider-element.js +3 -3
  369. package/dist/dev/ui/volume-slider/volume-slider-element.js.map +1 -1
  370. package/package.json +20 -9
@@ -9,7 +9,9 @@ import { icon, iconContainer, iconFlipped } from "../../skins/dist/default/minim
9
9
  import { seek } from "../../skins/dist/default/minimal/tailwind/components/seek.js";
10
10
  import { time } from "../../skins/dist/default/minimal/tailwind/components/time.js";
11
11
  import { overlay } from "../../skins/dist/default/minimal/tailwind/components/overlay.js";
12
- import { controls, popup, root, slider } from "../../skins/dist/default/minimal/tailwind/video.tailwind.js";
12
+ import { playbackRate } from "../../skins/dist/default/minimal/tailwind/components/playback-rate.js";
13
+ import { poster } from "../../skins/dist/default/minimal/tailwind/components/poster.js";
14
+ import { controls, popup, preview, root, slider } from "../../skins/dist/default/minimal/tailwind/video.tailwind.js";
13
15
  import "../media/container.js";
14
16
  import "../ui/buffering-indicator.js";
15
17
  import "../ui/captions-button.js";
@@ -20,13 +22,13 @@ import "../ui/pip-button.js";
20
22
  import "../ui/play-button.js";
21
23
  import "../ui/playback-rate-button.js";
22
24
  import "../ui/popover.js";
25
+ import "../ui/poster.js";
23
26
  import "../ui/seek-button.js";
24
27
  import "../ui/time.js";
25
28
  import "../ui/time-slider.js";
26
29
  import "../ui/tooltip.js";
27
30
  import "../ui/tooltip-group.js";
28
31
  import "../ui/volume-slider.js";
29
- import { playbackRate } from "../../skins/dist/default/default/tailwind/components/playback-rate.js";
30
32
  import { ReactiveElement } from "@videojs/element";
31
33
  import { cn } from "@videojs/utils/style";
32
34
 
@@ -35,14 +37,20 @@ const SEEK_TIME = 10;
35
37
  function getTemplateHTML() {
36
38
  return `
37
39
  <media-container class="${root(true)}">
40
+ <!-- @deprecated slot="media" is no longer required, use the default slot instead -->
38
41
  <slot name="media"></slot>
42
+ <slot></slot>
43
+
44
+ <media-poster class="${poster(true)}">
45
+ <slot name="poster"></slot>
46
+ </media-poster>
39
47
 
40
48
  <media-buffering-indicator class="${bufferingIndicator}">
41
49
  ${renderIcon("spinner")}
42
50
  </media-buffering-indicator>
43
51
 
44
52
  <media-controls data-controls="" class="${controls}">
45
- <media-tooltip-group class="contents">
53
+ <media-tooltip-group>
46
54
  <div class="${buttonGroup}">
47
55
  <span class="${tooltipState.play.wrapper}">
48
56
  <media-play-button commandfor="play-tooltip" class="${cn(button.base, button.icon, iconState.play.button)}">
@@ -91,6 +99,14 @@ function getTemplateHTML() {
91
99
  <media-slider-buffer class="${cn(slider.fill.base, slider.fill.buffer)}"></media-slider-buffer>
92
100
  </media-slider-track>
93
101
  <media-slider-thumb class="${cn(slider.thumb.base, slider.thumb.interactive)}"></media-slider-thumb>
102
+
103
+ <div class="${preview.root}">
104
+ <div class="${preview.thumbnailWrapper}">
105
+ <media-slider-thumbnail class="${preview.thumbnail}"></media-slider-thumbnail>
106
+ </div>
107
+ <media-slider-value type="pointer" class="${preview.timestamp}"></media-slider-value>
108
+ ${renderIcon("spinner", { class: cn(icon, preview.spinner) })}
109
+ </div>
94
110
  </media-time-slider>
95
111
  </div>
96
112
 
@@ -128,8 +144,9 @@ function getTemplateHTML() {
128
144
  </span>
129
145
 
130
146
  <span class="${tooltipState.pip.wrapper}">
131
- <media-pip-button commandfor="pip-tooltip" class="${cn(button.base, button.icon)}">
132
- ${renderIcon("pip", { class: icon })}
147
+ <media-pip-button commandfor="pip-tooltip" class="${cn(button.base, button.icon, iconState.pip.button)}">
148
+ ${renderIcon("pip-enter", { class: cn(icon, iconState.pip.off) })}
149
+ ${renderIcon("pip-exit", { class: cn(icon, iconState.pip.on) })}
133
150
  </media-pip-button>
134
151
  <media-tooltip id="pip-tooltip" side="top" class="${cn(popup.tooltip)}">
135
152
  <span class="${tooltipState.pip.enter}">Enter picture-in-picture</span>
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.tailwind.js","names":[],"sources":["../../../../src/define/video/minimal-skin.tailwind.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render/minimal';\nimport {\n bufferingIndicator,\n button,\n buttonGroup,\n controls,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n overlay,\n popup,\n root,\n seek,\n slider,\n time,\n tooltipState,\n} from '@videojs/skins/minimal/tailwind/video.tailwind';\nimport { cn } from '@videojs/utils/style';\nimport { SkinMixin } from '../skin-mixin';\n\n// Side-effect imports: register all custom elements used in the template.\nimport '../media/container';\nimport '../ui/buffering-indicator';\nimport '../ui/captions-button';\nimport '../ui/controls';\nimport '../ui/fullscreen-button';\nimport '../ui/mute-button';\nimport '../ui/pip-button';\nimport '../ui/play-button';\nimport '../ui/playback-rate-button';\nimport '../ui/popover';\nimport '../ui/seek-button';\nimport '../ui/time';\nimport '../ui/time-slider';\nimport '../ui/tooltip';\nimport '../ui/tooltip-group';\nimport '../ui/volume-slider';\nimport { playbackRate } from '@videojs/skins/default/tailwind/video.tailwind';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"${root(true)}\">\n <slot name=\"media\"></slot>\n\n <media-buffering-indicator class=\"${bufferingIndicator}\">\n ${renderIcon('spinner')}\n </media-buffering-indicator>\n\n <media-controls data-controls=\"\" class=\"${controls}\">\n <media-tooltip-group class=\"contents\">\n <div class=\"${buttonGroup}\">\n <span class=\"${tooltipState.play.wrapper}\">\n <media-play-button commandfor=\"play-tooltip\" class=\"${cn(button.base, button.icon, iconState.play.button)}\">\n ${renderIcon('restart', { class: cn(icon, iconState.play.restart) })}\n ${renderIcon('play', { class: cn(icon, iconState.play.play) })}\n ${renderIcon('pause', { class: cn(icon, iconState.play.pause) })}\n </media-play-button>\n <media-tooltip id=\"play-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.play.replay}\">Replay</span>\n <span class=\"${tooltipState.play.play}\">Play</span>\n <span class=\"${tooltipState.play.pause}\">Pause</span>\n </media-tooltip>\n </span>\n\n <media-seek-button commandfor=\"seek-backward-tooltip\" seconds=\"${-SEEK_TIME}\" class=\"${cn(button.base, button.icon, seek.button)}\">\n <span class=\"${iconContainer}\">\n ${renderIcon('seek', { class: cn(icon, iconFlipped) })}\n <span class=\"${cn(seek.label, seek.labelBackward)}\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-backward-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Seek backward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-forward-tooltip\" seconds=\"${SEEK_TIME}\" class=\"${cn(button.base, button.icon, seek.button)}\">\n <span class=\"${iconContainer}\">\n ${renderIcon('seek', { class: icon })}\n <span class=\"${cn(seek.label, seek.labelForward)}\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-forward-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Seek forward ${SEEK_TIME} seconds\n </media-tooltip>\n </div>\n\n <div class=\"${time.controls}\">\n <media-time-group class=\"${time.group}\">\n <media-time type=\"current\" class=\"${time.current}\"></media-time>\n <media-time-separator class=\"${time.separator}\"></media-time-separator>\n <media-time type=\"duration\" class=\"${time.duration}\"></media-time>\n </media-time-group>\n\n <media-time-slider class=\"${slider.root}\">\n <media-slider-track class=\"${slider.track}\">\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n <media-slider-buffer class=\"${cn(slider.fill.base, slider.fill.buffer)}\"></media-slider-buffer>\n </media-slider-track>\n <media-slider-thumb class=\"${cn(slider.thumb.base, slider.thumb.interactive)}\"></media-slider-thumb>\n </media-time-slider>\n </div>\n\n <div class=\"${buttonGroup}\">\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"${cn(button.base, button.icon, playbackRate.button)}\">\n </media-playback-rate-button>\n <media-tooltip id=\"playback-rate-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Toggle playback rate\n </media-tooltip>\n\n <media-mute-button commandfor=\"video-volume-popover\" class=\"${cn(button.base, button.icon, iconState.mute.button)}\">\n ${renderIcon('volume-off', { class: cn(icon, iconState.mute.volumeOff) })}\n ${renderIcon('volume-low', { class: cn(icon, iconState.mute.volumeLow) })}\n ${renderIcon('volume-high', { class: cn(icon, iconState.mute.volumeHigh) })}\n </media-mute-button>\n\n <media-popover id=\"video-volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"top\" class=\"${cn(popup.volume)}\">\n <media-volume-slider class=\"${slider.root}\" orientation=\"vertical\" thumb-alignment=\"edge\">\n <media-slider-track class=\"${slider.track}\">\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n </media-slider-track>\n <media-slider-thumb class=\"${slider.thumb.base}\"></media-slider-thumb>\n </media-volume-slider>\n </media-popover>\n\n <span class=\"${tooltipState.captions.wrapper}\">\n <media-captions-button commandfor=\"captions-tooltip\" class=\"${cn(button.base, button.icon, iconState.captions.button)}\">\n ${renderIcon('captions-off', { class: cn(icon, iconState.captions.off) })}\n ${renderIcon('captions-on', { class: cn(icon, iconState.captions.on) })}\n </media-captions-button>\n <media-tooltip id=\"captions-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.captions.enable}\">Enable captions</span>\n <span class=\"${tooltipState.captions.disable}\">Disable captions</span>\n </media-tooltip>\n </span>\n\n <span class=\"${tooltipState.pip.wrapper}\">\n <media-pip-button commandfor=\"pip-tooltip\" class=\"${cn(button.base, button.icon)}\">\n ${renderIcon('pip', { class: icon })}\n </media-pip-button>\n <media-tooltip id=\"pip-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.pip.enter}\">Enter picture-in-picture</span>\n <span class=\"${tooltipState.pip.exit}\">Exit picture-in-picture</span>\n </media-tooltip>\n </span>\n\n <span class=\"${tooltipState.fullscreen.wrapper}\">\n <media-fullscreen-button commandfor=\"fullscreen-tooltip\" class=\"${cn(button.base, button.icon, iconState.fullscreen.button)}\">\n ${renderIcon('fullscreen-enter', { class: cn(icon, iconState.fullscreen.enter) })}\n ${renderIcon('fullscreen-exit', { class: cn(icon, iconState.fullscreen.exit) })}\n </media-fullscreen-button>\n <media-tooltip id=\"fullscreen-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.fullscreen.enter}\">Enter fullscreen</span>\n <span class=\"${tooltipState.fullscreen.exit}\">Exit fullscreen</span>\n </media-tooltip>\n </span>\n </div>\n </media-tooltip-group>\n </media-controls>\n\n <div class=\"${overlay}\"></div>\n </media-container>\n `;\n}\n\nexport class MinimalVideoSkinTailwindElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'video-minimal-skin-tailwind';\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(MinimalVideoSkinTailwindElement.tagName, MinimalVideoSkinTailwindElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [MinimalVideoSkinTailwindElement.tagName]: MinimalVideoSkinTailwindElement;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"minimal-skin.tailwind.js","names":[],"sources":["../../../../src/define/video/minimal-skin.tailwind.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render/minimal';\nimport {\n bufferingIndicator,\n button,\n buttonGroup,\n controls,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n overlay,\n playbackRate,\n popup,\n poster,\n preview,\n root,\n seek,\n slider,\n time,\n tooltipState,\n} from '@videojs/skins/minimal/tailwind/video.tailwind';\nimport { cn } from '@videojs/utils/style';\nimport { SkinMixin } from '../skin-mixin';\n\n// Side-effect imports: register all custom elements used in the template.\nimport '../media/container';\nimport '../ui/buffering-indicator';\nimport '../ui/captions-button';\nimport '../ui/controls';\nimport '../ui/fullscreen-button';\nimport '../ui/mute-button';\nimport '../ui/pip-button';\nimport '../ui/play-button';\nimport '../ui/playback-rate-button';\nimport '../ui/popover';\nimport '../ui/poster';\nimport '../ui/seek-button';\nimport '../ui/time';\nimport '../ui/time-slider';\nimport '../ui/tooltip';\nimport '../ui/tooltip-group';\nimport '../ui/volume-slider';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"${root(true)}\">\n <!-- @deprecated slot=\"media\" is no longer required, use the default slot instead -->\n <slot name=\"media\"></slot>\n <slot></slot>\n\n <media-poster class=\"${poster(true)}\">\n <slot name=\"poster\"></slot>\n </media-poster>\n\n <media-buffering-indicator class=\"${bufferingIndicator}\">\n ${renderIcon('spinner')}\n </media-buffering-indicator>\n\n <media-controls data-controls=\"\" class=\"${controls}\">\n <media-tooltip-group>\n <div class=\"${buttonGroup}\">\n <span class=\"${tooltipState.play.wrapper}\">\n <media-play-button commandfor=\"play-tooltip\" class=\"${cn(button.base, button.icon, iconState.play.button)}\">\n ${renderIcon('restart', { class: cn(icon, iconState.play.restart) })}\n ${renderIcon('play', { class: cn(icon, iconState.play.play) })}\n ${renderIcon('pause', { class: cn(icon, iconState.play.pause) })}\n </media-play-button>\n <media-tooltip id=\"play-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.play.replay}\">Replay</span>\n <span class=\"${tooltipState.play.play}\">Play</span>\n <span class=\"${tooltipState.play.pause}\">Pause</span>\n </media-tooltip>\n </span>\n\n <media-seek-button commandfor=\"seek-backward-tooltip\" seconds=\"${-SEEK_TIME}\" class=\"${cn(button.base, button.icon, seek.button)}\">\n <span class=\"${iconContainer}\">\n ${renderIcon('seek', { class: cn(icon, iconFlipped) })}\n <span class=\"${cn(seek.label, seek.labelBackward)}\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-backward-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Seek backward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-forward-tooltip\" seconds=\"${SEEK_TIME}\" class=\"${cn(button.base, button.icon, seek.button)}\">\n <span class=\"${iconContainer}\">\n ${renderIcon('seek', { class: icon })}\n <span class=\"${cn(seek.label, seek.labelForward)}\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-forward-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Seek forward ${SEEK_TIME} seconds\n </media-tooltip>\n </div>\n\n <div class=\"${time.controls}\">\n <media-time-group class=\"${time.group}\">\n <media-time type=\"current\" class=\"${time.current}\"></media-time>\n <media-time-separator class=\"${time.separator}\"></media-time-separator>\n <media-time type=\"duration\" class=\"${time.duration}\"></media-time>\n </media-time-group>\n\n <media-time-slider class=\"${slider.root}\">\n <media-slider-track class=\"${slider.track}\">\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n <media-slider-buffer class=\"${cn(slider.fill.base, slider.fill.buffer)}\"></media-slider-buffer>\n </media-slider-track>\n <media-slider-thumb class=\"${cn(slider.thumb.base, slider.thumb.interactive)}\"></media-slider-thumb>\n\n <div class=\"${preview.root}\">\n <div class=\"${preview.thumbnailWrapper}\">\n <media-slider-thumbnail class=\"${preview.thumbnail}\"></media-slider-thumbnail>\n </div>\n <media-slider-value type=\"pointer\" class=\"${preview.timestamp}\"></media-slider-value>\n ${renderIcon('spinner', { class: cn(icon, preview.spinner) })}\n </div>\n </media-time-slider>\n </div>\n\n <div class=\"${buttonGroup}\">\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"${cn(button.base, button.icon, playbackRate.button)}\">\n </media-playback-rate-button>\n <media-tooltip id=\"playback-rate-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Toggle playback rate\n </media-tooltip>\n\n <media-mute-button commandfor=\"video-volume-popover\" class=\"${cn(button.base, button.icon, iconState.mute.button)}\">\n ${renderIcon('volume-off', { class: cn(icon, iconState.mute.volumeOff) })}\n ${renderIcon('volume-low', { class: cn(icon, iconState.mute.volumeLow) })}\n ${renderIcon('volume-high', { class: cn(icon, iconState.mute.volumeHigh) })}\n </media-mute-button>\n\n <media-popover id=\"video-volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"top\" class=\"${cn(popup.volume)}\">\n <media-volume-slider class=\"${slider.root}\" orientation=\"vertical\" thumb-alignment=\"edge\">\n <media-slider-track class=\"${slider.track}\">\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n </media-slider-track>\n <media-slider-thumb class=\"${slider.thumb.base}\"></media-slider-thumb>\n </media-volume-slider>\n </media-popover>\n\n <span class=\"${tooltipState.captions.wrapper}\">\n <media-captions-button commandfor=\"captions-tooltip\" class=\"${cn(button.base, button.icon, iconState.captions.button)}\">\n ${renderIcon('captions-off', { class: cn(icon, iconState.captions.off) })}\n ${renderIcon('captions-on', { class: cn(icon, iconState.captions.on) })}\n </media-captions-button>\n <media-tooltip id=\"captions-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.captions.enable}\">Enable captions</span>\n <span class=\"${tooltipState.captions.disable}\">Disable captions</span>\n </media-tooltip>\n </span>\n\n <span class=\"${tooltipState.pip.wrapper}\">\n <media-pip-button commandfor=\"pip-tooltip\" class=\"${cn(button.base, button.icon, iconState.pip.button)}\">\n ${renderIcon('pip-enter', { class: cn(icon, iconState.pip.off) })}\n ${renderIcon('pip-exit', { class: cn(icon, iconState.pip.on) })}\n </media-pip-button>\n <media-tooltip id=\"pip-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.pip.enter}\">Enter picture-in-picture</span>\n <span class=\"${tooltipState.pip.exit}\">Exit picture-in-picture</span>\n </media-tooltip>\n </span>\n\n <span class=\"${tooltipState.fullscreen.wrapper}\">\n <media-fullscreen-button commandfor=\"fullscreen-tooltip\" class=\"${cn(button.base, button.icon, iconState.fullscreen.button)}\">\n ${renderIcon('fullscreen-enter', { class: cn(icon, iconState.fullscreen.enter) })}\n ${renderIcon('fullscreen-exit', { class: cn(icon, iconState.fullscreen.exit) })}\n </media-fullscreen-button>\n <media-tooltip id=\"fullscreen-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.fullscreen.enter}\">Enter fullscreen</span>\n <span class=\"${tooltipState.fullscreen.exit}\">Exit fullscreen</span>\n </media-tooltip>\n </span>\n </div>\n </media-tooltip-group>\n </media-controls>\n\n <div class=\"${overlay}\"></div>\n </media-container>\n `;\n}\n\nexport class MinimalVideoSkinTailwindElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'video-minimal-skin-tailwind';\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(MinimalVideoSkinTailwindElement.tagName, MinimalVideoSkinTailwindElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [MinimalVideoSkinTailwindElement.tagName]: MinimalVideoSkinTailwindElement;\n }\n}\n"],"mappings":"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"}
@@ -16,6 +16,8 @@
16
16
  .media-button--mute .media-icon--volume-high,
17
17
  .media-button--fullscreen .media-icon--fullscreen-enter,
18
18
  .media-button--fullscreen .media-icon--fullscreen-exit,
19
+ .media-button--pip .media-icon--pip-enter,
20
+ .media-button--pip .media-icon--pip-exit,
19
21
  .media-button--captions .media-icon--captions-off,
20
22
  .media-button--captions .media-icon--captions-on {
21
23
  display: none;
@@ -40,6 +42,10 @@
40
42
  .media-button--fullscreen:not([data-fullscreen]) .media-icon--fullscreen-enter,
41
43
  /* Fullscreen: fullscreen → exit */
42
44
  .media-button--fullscreen[data-fullscreen] .media-icon--fullscreen-exit,
45
+ /* Picture-in-Picture: not active → enter */
46
+ .media-button--pip:not([data-pip]) .media-icon--pip-enter,
47
+ /* Picture-in-Picture: active → exit */
48
+ .media-button--pip[data-pip] .media-icon--pip-exit,
43
49
  /* Captions: not active → captions off */
44
50
  .media-button--captions:not([data-active]) .media-icon--captions-off,
45
51
  /* Captions: active → captions on */
@@ -100,7 +106,6 @@
100
106
  .media-default-skin *::before,
101
107
  .media-default-skin *::after {
102
108
  box-sizing: border-box;
103
- margin: 0;
104
109
  }
105
110
  .media-default-skin img,
106
111
  .media-default-skin video,
@@ -150,7 +155,7 @@
150
155
  background-color: var(--media-surface-background-color);
151
156
  backdrop-filter: var(--media-surface-backdrop-filter);
152
157
  box-shadow:
153
- inset 0 0 0 1px var(--media-surface-inner-border-color),
158
+ 0 0 0 1px var(--media-surface-outer-border-color),
154
159
  0 1px 3px 0 var(--media-surface-shadow-color),
155
160
  0 1px 2px -1px var(--media-surface-shadow-color);
156
161
 
@@ -161,7 +166,7 @@
161
166
  inset: 0;
162
167
  z-index: 10;
163
168
  border-radius: inherit;
164
- box-shadow: 0 0 0 1px var(--media-surface-outer-border-color);
169
+ box-shadow: inset 0 0 0 1px var(--media-surface-inner-border-color);
165
170
  pointer-events: none;
166
171
  }
167
172
 
@@ -183,45 +188,20 @@
183
188
  display: block;
184
189
  width: 100%;
185
190
  height: 100%;
191
+ object-fit: var(--media-object-fit, contain);
192
+ object-position: var(--media-object-position, center);
186
193
  }
187
194
  .media-default-skin ::slotted(video) {
188
- border-radius: var(--media-border-radius, 2rem);
195
+ border-radius: var(--media-video-border-radius);
189
196
  }
190
197
  .media-default-skin video {
191
198
  border-radius: inherit;
192
199
  }
193
200
 
194
- /* ==========================================================================
195
- Poster Image
196
- ========================================================================== */
197
-
198
- .media-default-skin > img {
199
- position: absolute;
200
- inset: 0;
201
- width: 100%;
202
- height: 100%;
203
- border-radius: inherit;
204
- object-fit: cover;
205
- transition: opacity 0.25s;
206
- pointer-events: none;
207
-
208
- &:not([data-visible]) {
209
- opacity: 0;
210
- }
211
- }
212
-
213
- /* ==========================================================================
214
- Fullscreen
215
- ========================================================================== */
216
-
217
- .media-default-skin:fullscreen video,
218
201
  .media-default-skin:fullscreen ::slotted(video),
219
- .media-default-skin:fullscreen > img {
202
+ .media-default-skin:fullscreen video {
220
203
  object-fit: contain;
221
204
  }
222
- .media-default-skin:fullscreen ::slotted(video) {
223
- border-radius: 0;
224
- }
225
205
 
226
206
  /* ==========================================================================
227
207
  Overlay / Scrim
@@ -307,7 +287,7 @@
307
287
  border-radius: 1.75rem;
308
288
  color: oklch(1 0 0);
309
289
  font-size: 0.875rem;
310
- transition-property: opacity, transform;
290
+ transition-property: opacity, scale;
311
291
  transition-duration: 500ms;
312
292
  transition-delay: 100ms;
313
293
  transition-timing-function: linear(
@@ -333,7 +313,7 @@
333
313
  .media-default-skin .media-error[data-starting-style] .media-error__dialog,
334
314
  .media-default-skin .media-error[data-ending-style] .media-error__dialog {
335
315
  opacity: 0;
336
- transform: scale(0.5);
316
+ scale: 0.5;
337
317
  }
338
318
 
339
319
  .media-default-skin .media-error__content {
@@ -350,6 +330,7 @@
350
330
 
351
331
  .media-default-skin .media-error__description {
352
332
  opacity: 0.7;
333
+ overflow-wrap: anywhere;
353
334
  }
354
335
 
355
336
  .media-default-skin .media-error__actions {
@@ -372,12 +353,12 @@
372
353
  gap: 0.075rem;
373
354
  padding: 0.175rem;
374
355
  border-radius: calc(infinity * 1px);
375
- --media-controls-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.25));
356
+ --media-controls-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.15));
376
357
  --media-controls-current-shadow-color-subtle: oklch(
377
358
  from var(--media-controls-current-shadow-color) l c h /
378
359
  calc(alpha * 0.4)
379
360
  );
380
- text-shadow: 0 0 1px var(--media-controls-current-shadow-color);
361
+ text-shadow: 0 1px 0 var(--media-controls-current-shadow-color);
381
362
 
382
363
  @container media-root (width > 40rem) {
383
364
  gap: 0.125rem;
@@ -429,11 +410,12 @@
429
410
  color: oklch(0 0 0);
430
411
  font-weight: 500;
431
412
  text-align: center;
432
- transition-property: background-color, color, outline-offset, transform;
413
+ transition-property: background-color, color, outline-offset, scale;
433
414
  transition-duration: 150ms;
434
415
  transition-timing-function: ease-out;
435
416
  cursor: pointer;
436
417
  user-select: none;
418
+ touch-action: manipulation;
437
419
 
438
420
  &:focus-visible {
439
421
  outline-color: oklch(62.3% 0.214 259.815);
@@ -469,7 +451,7 @@
469
451
  }
470
452
 
471
453
  &:active {
472
- transform: scale(0.9);
454
+ scale: 0.9;
473
455
  }
474
456
 
475
457
  & .media-icon {
@@ -531,6 +513,100 @@
531
513
  scale: -1 1;
532
514
  }
533
515
 
516
+ /* ==========================================================================
517
+ Poster Image
518
+ ========================================================================== */
519
+
520
+ .media-default-skin media-poster,
521
+ .media-default-skin > img {
522
+ position: absolute;
523
+ inset: 0;
524
+ width: 100%;
525
+ height: 100%;
526
+ transition: opacity 0.25s;
527
+ pointer-events: none;
528
+ }
529
+ .media-default-skin media-poster:not([data-visible]),
530
+ .media-default-skin > img:not([data-visible]) {
531
+ opacity: 0;
532
+ }
533
+ .media-default-skin media-poster ::slotted(img) {
534
+ position: absolute;
535
+ inset: 0;
536
+ width: 100%;
537
+ height: 100%;
538
+ object-fit: var(--media-object-fit, contain);
539
+ object-position: var(--media-object-position, center);
540
+ border-radius: var(--media-video-border-radius);
541
+ }
542
+ .media-default-skin > img {
543
+ object-fit: var(--media-object-fit, contain);
544
+ object-position: var(--media-object-position, center);
545
+ border-radius: inherit;
546
+ }
547
+
548
+ .media-default-skin:fullscreen media-poster ::slotted(img),
549
+ .media-default-skin:fullscreen > img {
550
+ object-fit: contain;
551
+ }
552
+
553
+ /* ==========================================================================
554
+ Media preview
555
+ ========================================================================== */
556
+ .media-default-skin .media-preview {
557
+ background-color: oklch(0 0 0 / 0.9);
558
+ border-radius: 0.75rem;
559
+
560
+ & .media-preview__thumbnail {
561
+ display: block;
562
+ position: relative;
563
+ border-radius: inherit;
564
+ overflow: clip;
565
+
566
+ &::after {
567
+ content: "";
568
+ position: absolute;
569
+ inset: 0;
570
+ border-radius: inherit;
571
+ background-image: linear-gradient(to top, oklch(0 0 0 / 0.8), oklch(0 0 0 / 0.3), oklch(0 0 0 / 0));
572
+ }
573
+ }
574
+
575
+ & .media-preview__timestamp {
576
+ position: absolute;
577
+ bottom: 0.5rem;
578
+ inset-inline: 0;
579
+ text-align: center;
580
+ font-variant-numeric: tabular-nums;
581
+ }
582
+
583
+ & .media-overlay {
584
+ opacity: 1;
585
+ }
586
+
587
+ & .media-preview__spinner {
588
+ position: absolute;
589
+ top: 50%;
590
+ left: 50%;
591
+ translate: -50% -50%;
592
+ opacity: 0;
593
+ }
594
+
595
+ & .media-preview__thumbnail,
596
+ & .media-preview__spinner {
597
+ transition: opacity 150ms ease-out;
598
+ }
599
+
600
+ &:has(.media-preview__thumbnail[data-loading]) {
601
+ & .media-preview__thumbnail {
602
+ opacity: 0;
603
+ }
604
+ & .media-preview__spinner {
605
+ opacity: 1;
606
+ }
607
+ }
608
+ }
609
+
534
610
  /* ==========================================================================
535
611
  Slider
536
612
  ========================================================================== */
@@ -543,6 +619,7 @@
543
619
  flex: 1;
544
620
  border-radius: calc(infinity * 1px);
545
621
  outline: none;
622
+ cursor: pointer;
546
623
 
547
624
  &[data-orientation="horizontal"] {
548
625
  min-width: 5rem;
@@ -579,7 +656,7 @@
579
656
  .media-default-skin .media-slider__thumb {
580
657
  z-index: 10;
581
658
  position: absolute;
582
- transform: translate(-50%, -50%);
659
+ translate: -50% -50%;
583
660
  width: 0.625rem;
584
661
  height: 0.625rem;
585
662
  background-color: currentColor;
@@ -675,11 +752,6 @@
675
752
  }
676
753
  }
677
754
 
678
- /* Time display within slider */
679
- .media-default-skin .media-slider__time-display {
680
- font-variant-numeric: tabular-nums;
681
- }
682
-
683
755
  /* ==========================================================================
684
756
  Popups & Tooltips
685
757
  ========================================================================== */
@@ -690,13 +762,13 @@
690
762
  border: 0;
691
763
  color: inherit;
692
764
  overflow: visible;
693
- transition-property: transform, scale, opacity, filter;
694
- transition-duration: 200ms;
765
+ transition-property: scale, opacity, filter;
766
+ transition-duration: 150ms;
695
767
 
696
768
  &[data-starting-style],
697
769
  &[data-ending-style] {
698
770
  opacity: 0;
699
- transform: scale(0);
771
+ scale: 0.5;
700
772
  filter: blur(8px);
701
773
  }
702
774
 
@@ -716,14 +788,58 @@
716
788
  &[data-side="right"] {
717
789
  transform-origin: left;
718
790
  }
791
+
792
+ /* Safe area between trigger and popup */
793
+ &::before {
794
+ content: "";
795
+ position: absolute;
796
+ pointer-events: inherit;
797
+ }
798
+
799
+ &[data-side="top"]::before,
800
+ &[data-side="bottom"]::before {
801
+ width: 100%;
802
+ inset-inline: 0;
803
+ }
804
+ &[data-side="top"]::before {
805
+ top: 100%;
806
+ }
807
+ &[data-side="bottom"]::before {
808
+ bottom: 100%;
809
+ }
810
+
811
+ &[data-side="left"]::before,
812
+ &[data-side="right"]::before {
813
+ height: 100%;
814
+ inset-block: 0;
815
+ }
816
+ &[data-side="left"]::before {
817
+ left: 100%;
818
+ }
819
+ &[data-side="right"]::before {
820
+ right: 100%;
821
+ }
719
822
  }
720
823
 
721
824
  .media-default-skin .media-popover {
722
825
  --media-popover-side-offset: 0.5rem;
826
+
827
+ &[data-side="top"]::before,
828
+ &[data-side="bottom"]::before {
829
+ height: var(--media-popover-side-offset);
830
+ }
831
+ &[data-side="left"]::before,
832
+ &[data-side="right"]::before {
833
+ width: var(--media-popover-side-offset);
834
+ }
723
835
  }
724
836
  .media-default-skin .media-popover--volume {
725
837
  padding: 0.625rem 0.25rem;
726
838
  border-radius: calc(infinity * 1px);
839
+
840
+ &:has(media-volume-slider[data-availability="unsupported"]) {
841
+ display: none;
842
+ }
727
843
  }
728
844
 
729
845
  .media-default-skin .media-tooltip {
@@ -731,7 +847,16 @@
731
847
  border-radius: calc(infinity * 1px);
732
848
  font-size: 0.75rem;
733
849
  white-space: nowrap;
734
- --media-tooltip-side-offset: 0.5rem;
850
+ --media-tooltip-side-offset: 0.75rem;
851
+
852
+ &[data-side="top"]::before,
853
+ &[data-side="bottom"]::before {
854
+ height: var(--media-tooltip-side-offset);
855
+ }
856
+ &[data-side="left"]::before,
857
+ &[data-side="right"]::before {
858
+ width: var(--media-tooltip-side-offset);
859
+ }
735
860
  }
736
861
 
737
862
  /* ==========================================================================
@@ -739,30 +864,24 @@
739
864
  ========================================================================== */
740
865
 
741
866
  .media-default-skin {
742
- --media-caption-track-delay: 600ms;
867
+ --media-caption-track-duration: var(--media-controls-transition-duration);
868
+ --media-caption-track-delay: calc(var(--media-controls-transition-delay) + 25ms);
743
869
  --media-caption-track-y: -0.5rem;
744
870
 
745
871
  &:has(.media-controls[data-visible]) {
746
- --media-caption-track-delay: 25ms;
747
872
  --media-caption-track-y: -3.5rem;
748
873
  }
749
874
  }
750
875
 
751
876
  .media-default-skin video::-webkit-media-text-track-container {
752
- /* NOTE: The delay must account for the controls delay/duration */
753
- transition: transform 150ms ease-out;
877
+ transition: translate var(--media-caption-track-duration) ease-out;
754
878
  transition-delay: var(--media-caption-track-delay);
755
- transform: translateY(var(--media-caption-track-y)) scale(0.98);
879
+ translate: 0 var(--media-caption-track-y);
880
+ scale: 0.98;
756
881
  z-index: 1;
757
882
  font-family: inherit;
758
883
  }
759
884
 
760
- @media (prefers-reduced-motion: reduce) {
761
- .media-default-skin video::-webkit-media-text-track-container {
762
- transition-duration: 50ms;
763
- }
764
- }
765
-
766
885
 
767
886
  /* ==========================================================================
768
887
  Root
@@ -776,9 +895,26 @@
776
895
  --media-surface-outer-border-color: oklch(0 0 0 / 0.1);
777
896
  --media-surface-shadow-color: oklch(0 0 0 / 0.15);
778
897
  --media-surface-backdrop-filter: blur(16px) saturate(1.5);
898
+ --media-video-border-radius: var(--media-border-radius, 2rem);
899
+ --media-controls-transition-duration: 100ms;
900
+ --media-controls-transition-delay: 0ms;
779
901
 
780
902
  @media (prefers-color-scheme: dark) {
781
- --media-border-color: oklch(1 0 0 / 0.1);
903
+ --media-border-color: oklch(1 0 0 / 0.15);
904
+ }
905
+
906
+ &:has(.media-controls:not([data-visible])) {
907
+ /* Slight delay to hide controls on non-touch devices after interaction */
908
+ @media (pointer: fine) {
909
+ --media-controls-transition-delay: 500ms;
910
+ --media-controls-transition-duration: 300ms;
911
+ }
912
+ @media (pointer: coarse) {
913
+ --media-controls-transition-duration: 150ms;
914
+ }
915
+ @media (prefers-reduced-motion: reduce) {
916
+ --media-controls-transition-duration: 100ms;
917
+ }
782
918
  }
783
919
 
784
920
  /* Inner border ring */
@@ -793,7 +929,7 @@
793
929
  }
794
930
 
795
931
  &:fullscreen {
796
- border-radius: 0;
932
+ --media-border-radius: 0;
797
933
  }
798
934
  }
799
935
 
@@ -806,40 +942,48 @@
806
942
  bottom: 0.75rem;
807
943
  inset-inline: 0.75rem;
808
944
  z-index: 10;
809
- color: oklch(1 0 0);
810
-
811
- will-change: scale, transform, filter, opacity;
945
+ color: var(--media-color-primary, oklch(1 0 0));
812
946
  transition-timing-function: ease-out;
947
+ transition-duration: var(--media-controls-transition-duration);
948
+ transition-delay: var(--media-controls-transition-delay);
813
949
  transform-origin: bottom;
814
950
 
815
951
  @media (pointer: fine) {
816
- transition-property: scale, transform, filter, opacity;
817
- transition-duration: 100ms;
818
- transition-delay: 0ms;
952
+ will-change: scale, filter, opacity;
953
+ transition-property: scale, filter, opacity;
954
+ }
955
+
956
+ @media (pointer: coarse) {
957
+ will-change: scale, opacity;
958
+ transition-property: scale, opacity;
819
959
  }
820
960
 
821
961
  &:not([data-visible]) {
822
962
  opacity: 0;
823
963
  pointer-events: none;
824
964
  scale: 0.9;
825
- filter: blur(8px);
826
965
 
827
966
  @media (pointer: fine) {
828
- transition-duration: 300ms;
829
- transition-delay: 500ms;
967
+ filter: blur(8px);
830
968
 
831
969
  @media (prefers-reduced-motion: reduce) {
832
- transition-duration: 100ms;
970
+ filter: blur(0);
833
971
  }
834
972
  }
835
973
 
836
974
  @media (prefers-reduced-motion: reduce) {
837
975
  scale: 1;
838
- filter: blur(0);
839
976
  }
840
977
  }
841
978
  }
842
979
 
980
+ /* Hide cursor when controls are hidden in fullscreen */
981
+ @media (pointer: fine) {
982
+ .media-default-skin--video:fullscreen:has(.media-controls:not([data-visible])) {
983
+ cursor: none;
984
+ }
985
+ }
986
+
843
987
  /* ==========================================================================
844
988
  Sliders
845
989
  ========================================================================== */
@@ -849,7 +993,31 @@
849
993
  box-shadow: 0 0 0 1px oklch(0 0 0 / 0.05);
850
994
  }
851
995
 
852
- media-tooltip-group {
853
- display: contents;
996
+ .media-default-skin .media-slider__preview {
997
+ position: absolute;
998
+ left: var(--media-slider-pointer);
999
+ bottom: calc(100% + 1.2rem);
1000
+ translate: -50%;
1001
+ opacity: 0;
1002
+ scale: 0.8;
1003
+ filter: blur(8px);
1004
+ transition-property: scale, opacity, filter;
1005
+ transition-duration: 150ms;
1006
+ transition-timing-function: ease-out;
1007
+ transform-origin: bottom;
1008
+ pointer-events: none;
1009
+
1010
+ & .media-preview__thumbnail {
1011
+ max-width: 11rem;
1012
+ }
1013
+
1014
+ &:has(.media-preview__thumbnail[data-loading]) {
1015
+ max-height: 6rem;
1016
+ }
1017
+ }
1018
+ .media-default-skin .media-slider[data-pointing] .media-slider__preview:has([role="img"]:not([data-hidden])) {
1019
+ opacity: 1;
1020
+ scale: 1;
1021
+ filter: blur(0);
854
1022
  }
855
1023
 
@@ -1 +1 @@
1
- {"version":3,"file":"skin.d.ts","names":[],"sources":["../../../../src/define/video/skin.ts"],"mappings":";;;iBAyBS,eAAA,CAAA;AAAA,cAAe,qBAAA;;;;cA6GX,gBAAA,SAAyB,qBAAA;EAAA,gBACpB,OAAA;EAAA,OACT,MAAA,EAAM,aAAA;EAAA,OACN,eAAA,SAAe,eAAA;AAAA;AAAA,QAKhB,MAAA;EAAA,UACI,qBAAA;IAAA,CACP,gBAAA,CAAiB,OAAA,GAAU,gBAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"skin.d.ts","names":[],"sources":["../../../../src/define/video/skin.ts"],"mappings":";;;iBA0BS,eAAA,CAAA;AAAA,cAAe,qBAAA;;;;cA0HX,gBAAA,SAAyB,qBAAA;EAAA,gBACpB,OAAA;EAAA,OACT,MAAA,EAAM,aAAA;EAAA,OACN,eAAA,SAAe,eAAA;AAAA;AAAA,QAKhB,MAAA;EAAA,UACI,qBAAA;IAAA,CACP,gBAAA,CAAiB,OAAA,GAAU,gBAAA;EAAA;AAAA"}