@videojs/html 10.0.0-beta.6 → 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 (326) 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 -5336
  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 -5336
  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 -378
  42. package/cdn/media/hls-video.dev.js.map +1 -1
  43. package/cdn/media/hls-video.js +21 -65
  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 -377
  47. package/cdn/media/simple-hls-video.dev.js.map +1 -1
  48. package/cdn/media/simple-hls-video.js +1 -45
  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 +16 -5650
  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 +24 -5709
  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 +22 -20
  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 +19 -22
  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 +7 -7
  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 +6 -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 +101 -71
  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 +4 -2
  133. package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
  134. package/dist/default/define/video/skin.css +98 -72
  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 +4 -2
  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/controls.js +1 -1
  161. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  162. package/dist/default/skins/dist/default/default/tailwind/components/error.js +1 -1
  163. package/dist/default/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  164. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +16 -0
  165. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  166. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +6 -5
  167. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  168. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +1 -1
  169. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  170. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  171. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  172. package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js +6 -0
  173. package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -0
  174. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
  175. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  176. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  177. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  178. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +6 -4
  179. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  180. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +5 -0
  181. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  182. package/dist/default/store/container-mixin.js +16 -72
  183. package/dist/default/store/container-mixin.js.map +1 -1
  184. package/dist/default/store/media-attach-mixin.js +45 -0
  185. package/dist/default/store/media-attach-mixin.js.map +1 -0
  186. package/dist/default/store/provider-mixin.js +99 -9
  187. package/dist/default/store/provider-mixin.js.map +1 -1
  188. package/dist/default/ui/popover/popover-element.js +54 -3
  189. package/dist/default/ui/popover/popover-element.js.map +1 -1
  190. package/dist/default/ui/time-slider/time-slider-element.js +1 -1
  191. package/dist/default/ui/time-slider/time-slider-element.js.map +1 -1
  192. package/dist/default/ui/tooltip/tooltip-element.js +53 -3
  193. package/dist/default/ui/tooltip/tooltip-element.js.map +1 -1
  194. package/dist/default/ui/volume-slider/volume-slider-element.js +3 -3
  195. package/dist/default/ui/volume-slider/volume-slider-element.js.map +1 -1
  196. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  197. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  198. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
  199. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  200. package/dist/dev/_virtual/inline-css_src/define/base.js +1 -1
  201. package/dist/dev/_virtual/inline-css_src/define/base.js.map +1 -1
  202. package/dist/dev/_virtual/inline-css_src/define/shared.js +6 -0
  203. package/dist/dev/_virtual/inline-css_src/define/shared.js.map +1 -0
  204. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  205. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  206. package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
  207. package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  208. package/dist/dev/define/audio/minimal-skin.css +22 -20
  209. package/dist/dev/define/audio/minimal-skin.d.ts.map +1 -1
  210. package/dist/dev/define/audio/minimal-skin.js +2 -0
  211. package/dist/dev/define/audio/minimal-skin.js.map +1 -1
  212. package/dist/dev/define/audio/minimal-skin.tailwind.d.ts.map +1 -1
  213. package/dist/dev/define/audio/minimal-skin.tailwind.js +3 -1
  214. package/dist/dev/define/audio/minimal-skin.tailwind.js.map +1 -1
  215. package/dist/dev/define/audio/skin.css +19 -22
  216. package/dist/dev/define/audio/skin.d.ts.map +1 -1
  217. package/dist/dev/define/audio/skin.js +2 -0
  218. package/dist/dev/define/audio/skin.js.map +1 -1
  219. package/dist/dev/define/audio/skin.tailwind.d.ts.map +1 -1
  220. package/dist/dev/define/audio/skin.tailwind.js +5 -4
  221. package/dist/dev/define/audio/skin.tailwind.js.map +1 -1
  222. package/dist/dev/define/background/skin.css +1 -1
  223. package/dist/dev/define/background/skin.d.ts.map +1 -1
  224. package/dist/dev/define/background/skin.js +3 -1
  225. package/dist/dev/define/background/skin.js.map +1 -1
  226. package/dist/dev/define/base.css +7 -7
  227. package/dist/dev/define/media/dash-video.d.ts +14 -0
  228. package/dist/dev/define/media/dash-video.d.ts.map +1 -0
  229. package/dist/dev/define/media/dash-video.js +14 -0
  230. package/dist/dev/define/media/dash-video.js.map +1 -0
  231. package/dist/dev/define/shared.css +6 -0
  232. package/dist/dev/define/skin-mixin.d.ts.map +1 -1
  233. package/dist/dev/define/skin-mixin.js +8 -3
  234. package/dist/dev/define/skin-mixin.js.map +1 -1
  235. package/dist/dev/define/video/minimal-skin.css +101 -71
  236. package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
  237. package/dist/dev/define/video/minimal-skin.js +10 -2
  238. package/dist/dev/define/video/minimal-skin.js.map +1 -1
  239. package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
  240. package/dist/dev/define/video/minimal-skin.tailwind.js +13 -4
  241. package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
  242. package/dist/dev/define/video/skin.css +98 -72
  243. package/dist/dev/define/video/skin.d.ts.map +1 -1
  244. package/dist/dev/define/video/skin.js +9 -1
  245. package/dist/dev/define/video/skin.js.map +1 -1
  246. package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
  247. package/dist/dev/define/video/skin.tailwind.js +13 -4
  248. package/dist/dev/define/video/skin.tailwind.js.map +1 -1
  249. package/dist/dev/icons/dist/render/default/index.js +2 -1
  250. package/dist/dev/icons/dist/render/default/index.js.map +1 -1
  251. package/dist/dev/icons/dist/render/minimal/index.js +2 -1
  252. package/dist/dev/icons/dist/render/minimal/index.js.map +1 -1
  253. package/dist/dev/index.d.ts +5 -4
  254. package/dist/dev/index.js +3 -2
  255. package/dist/dev/media/background-video/index.d.ts +8 -1
  256. package/dist/dev/media/background-video/index.d.ts.map +1 -1
  257. package/dist/dev/media/background-video/index.js +5 -1
  258. package/dist/dev/media/background-video/index.js.map +1 -1
  259. package/dist/dev/media/container-element.js +5 -2
  260. package/dist/dev/media/container-element.js.map +1 -1
  261. package/dist/dev/media/dash-video/index.d.ts +13 -0
  262. package/dist/dev/media/dash-video/index.d.ts.map +1 -0
  263. package/dist/dev/media/dash-video/index.js +26 -0
  264. package/dist/dev/media/dash-video/index.js.map +1 -0
  265. package/dist/dev/media/hls-video/index.d.ts +2 -1
  266. package/dist/dev/media/hls-video/index.d.ts.map +1 -1
  267. package/dist/dev/media/hls-video/index.js +2 -1
  268. package/dist/dev/media/hls-video/index.js.map +1 -1
  269. package/dist/dev/media/simple-hls-video/index.d.ts +2 -1
  270. package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -1
  271. package/dist/dev/media/simple-hls-video/index.js +2 -1
  272. package/dist/dev/media/simple-hls-video/index.js.map +1 -1
  273. package/dist/dev/player/context.d.ts +16 -2
  274. package/dist/dev/player/context.d.ts.map +1 -1
  275. package/dist/dev/player/context.js +6 -2
  276. package/dist/dev/player/context.js.map +1 -1
  277. package/dist/dev/player/create-player.d.ts +1 -1
  278. package/dist/dev/player/create-player.js +11 -3
  279. package/dist/dev/player/create-player.js.map +1 -1
  280. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +6 -5
  281. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  282. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +1 -1
  283. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  284. package/dist/dev/skins/dist/default/default/tailwind/components/error.js +1 -1
  285. package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  286. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +16 -0
  287. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  288. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +6 -5
  289. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  290. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +1 -1
  291. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  292. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  293. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  294. package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js +6 -0
  295. package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -0
  296. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
  297. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  298. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  299. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  300. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +6 -4
  301. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  302. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +5 -0
  303. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  304. package/dist/dev/store/container-mixin.d.ts +10 -5
  305. package/dist/dev/store/container-mixin.d.ts.map +1 -1
  306. package/dist/dev/store/container-mixin.js +16 -72
  307. package/dist/dev/store/container-mixin.js.map +1 -1
  308. package/dist/dev/store/media-attach-mixin.d.ts +19 -0
  309. package/dist/dev/store/media-attach-mixin.d.ts.map +1 -0
  310. package/dist/dev/store/media-attach-mixin.js +45 -0
  311. package/dist/dev/store/media-attach-mixin.js.map +1 -0
  312. package/dist/dev/store/provider-mixin.d.ts +19 -6
  313. package/dist/dev/store/provider-mixin.d.ts.map +1 -1
  314. package/dist/dev/store/provider-mixin.js +99 -9
  315. package/dist/dev/store/provider-mixin.js.map +1 -1
  316. package/dist/dev/ui/popover/popover-element.d.ts.map +1 -1
  317. package/dist/dev/ui/popover/popover-element.js +54 -3
  318. package/dist/dev/ui/popover/popover-element.js.map +1 -1
  319. package/dist/dev/ui/time-slider/time-slider-element.js +1 -1
  320. package/dist/dev/ui/time-slider/time-slider-element.js.map +1 -1
  321. package/dist/dev/ui/tooltip/tooltip-element.d.ts.map +1 -1
  322. package/dist/dev/ui/tooltip/tooltip-element.js +53 -3
  323. package/dist/dev/ui/tooltip/tooltip-element.js.map +1 -1
  324. package/dist/dev/ui/volume-slider/volume-slider-element.js +3 -3
  325. package/dist/dev/ui/volume-slider/volume-slider-element.js.map +1 -1
  326. package/package.json +20 -9
@@ -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 */
@@ -192,30 +198,6 @@
192
198
  border-radius: inherit;
193
199
  }
194
200
 
195
- /* ==========================================================================
196
- Poster Image
197
- ========================================================================== */
198
-
199
- .media-default-skin > img {
200
- position: absolute;
201
- inset: 0;
202
- width: 100%;
203
- height: 100%;
204
- object-fit: var(--media-object-fit, contain);
205
- object-position: var(--media-object-position, center);
206
- transition: opacity 0.25s;
207
- pointer-events: none;
208
- border-radius: inherit;
209
-
210
- &:not([data-visible]) {
211
- opacity: 0;
212
- }
213
- }
214
-
215
- /* ==========================================================================
216
- Fullscreen
217
- ========================================================================== */
218
-
219
201
  .media-default-skin:fullscreen ::slotted(video),
220
202
  .media-default-skin:fullscreen video {
221
203
  object-fit: contain;
@@ -305,7 +287,7 @@
305
287
  border-radius: 1.75rem;
306
288
  color: oklch(1 0 0);
307
289
  font-size: 0.875rem;
308
- transition-property: opacity, transform;
290
+ transition-property: opacity, scale;
309
291
  transition-duration: 500ms;
310
292
  transition-delay: 100ms;
311
293
  transition-timing-function: linear(
@@ -331,7 +313,7 @@
331
313
  .media-default-skin .media-error[data-starting-style] .media-error__dialog,
332
314
  .media-default-skin .media-error[data-ending-style] .media-error__dialog {
333
315
  opacity: 0;
334
- transform: scale(0.5);
316
+ scale: 0.5;
335
317
  }
336
318
 
337
319
  .media-default-skin .media-error__content {
@@ -348,6 +330,7 @@
348
330
 
349
331
  .media-default-skin .media-error__description {
350
332
  opacity: 0.7;
333
+ overflow-wrap: anywhere;
351
334
  }
352
335
 
353
336
  .media-default-skin .media-error__actions {
@@ -370,12 +353,12 @@
370
353
  gap: 0.075rem;
371
354
  padding: 0.175rem;
372
355
  border-radius: calc(infinity * 1px);
373
- --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));
374
357
  --media-controls-current-shadow-color-subtle: oklch(
375
358
  from var(--media-controls-current-shadow-color) l c h /
376
359
  calc(alpha * 0.4)
377
360
  );
378
- text-shadow: 0 0 1px var(--media-controls-current-shadow-color);
361
+ text-shadow: 0 1px 0 var(--media-controls-current-shadow-color);
379
362
 
380
363
  @container media-root (width > 40rem) {
381
364
  gap: 0.125rem;
@@ -427,7 +410,7 @@
427
410
  color: oklch(0 0 0);
428
411
  font-weight: 500;
429
412
  text-align: center;
430
- transition-property: background-color, color, outline-offset, transform;
413
+ transition-property: background-color, color, outline-offset, scale;
431
414
  transition-duration: 150ms;
432
415
  transition-timing-function: ease-out;
433
416
  cursor: pointer;
@@ -468,7 +451,7 @@
468
451
  }
469
452
 
470
453
  &:active {
471
- transform: scale(0.9);
454
+ scale: 0.9;
472
455
  }
473
456
 
474
457
  & .media-icon {
@@ -530,6 +513,43 @@
530
513
  scale: -1 1;
531
514
  }
532
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
+
533
553
  /* ==========================================================================
534
554
  Media preview
535
555
  ========================================================================== */
@@ -568,7 +588,7 @@
568
588
  position: absolute;
569
589
  top: 50%;
570
590
  left: 50%;
571
- transform: translate(-50%, -50%);
591
+ translate: -50% -50%;
572
592
  opacity: 0;
573
593
  }
574
594
 
@@ -636,7 +656,7 @@
636
656
  .media-default-skin .media-slider__thumb {
637
657
  z-index: 10;
638
658
  position: absolute;
639
- transform: translate(-50%, -50%);
659
+ translate: -50% -50%;
640
660
  width: 0.625rem;
641
661
  height: 0.625rem;
642
662
  background-color: currentColor;
@@ -742,13 +762,13 @@
742
762
  border: 0;
743
763
  color: inherit;
744
764
  overflow: visible;
745
- transition-property: transform, scale, opacity, filter;
765
+ transition-property: scale, opacity, filter;
746
766
  transition-duration: 150ms;
747
767
 
748
768
  &[data-starting-style],
749
769
  &[data-ending-style] {
750
770
  opacity: 0;
751
- transform: scale(0.5);
771
+ scale: 0.5;
752
772
  filter: blur(8px);
753
773
  }
754
774
 
@@ -816,6 +836,10 @@
816
836
  .media-default-skin .media-popover--volume {
817
837
  padding: 0.625rem 0.25rem;
818
838
  border-radius: calc(infinity * 1px);
839
+
840
+ &:has(media-volume-slider[data-availability="unsupported"]) {
841
+ display: none;
842
+ }
819
843
  }
820
844
 
821
845
  .media-default-skin .media-tooltip {
@@ -840,35 +864,24 @@
840
864
  ========================================================================== */
841
865
 
842
866
  .media-default-skin {
843
- --media-caption-track-duration: 150ms;
844
- --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);
845
869
  --media-caption-track-y: -0.5rem;
846
870
 
847
871
  &:has(.media-controls[data-visible]) {
848
- --media-caption-track-delay: 25ms;
849
872
  --media-caption-track-y: -3.5rem;
850
873
  }
851
-
852
- @media (prefers-reduced-motion: reduce) {
853
- --media-caption-track-duration: 50ms;
854
- }
855
874
  }
856
875
 
857
876
  .media-default-skin video::-webkit-media-text-track-container {
858
- /* NOTE: The delay must account for the controls delay/duration */
859
- transition: transform var(--media-caption-track-duration) ease-out;
877
+ transition: translate var(--media-caption-track-duration) ease-out;
860
878
  transition-delay: var(--media-caption-track-delay);
861
- transform: translateY(var(--media-caption-track-y)) scale(0.98);
879
+ translate: 0 var(--media-caption-track-y);
880
+ scale: 0.98;
862
881
  z-index: 1;
863
882
  font-family: inherit;
864
883
  }
865
884
 
866
- @media (prefers-reduced-motion: reduce) {
867
- .media-default-skin video::-webkit-media-text-track-container {
868
- transition-duration: 50ms;
869
- }
870
- }
871
-
872
885
 
873
886
  /* ==========================================================================
874
887
  Root
@@ -883,9 +896,25 @@
883
896
  --media-surface-shadow-color: oklch(0 0 0 / 0.15);
884
897
  --media-surface-backdrop-filter: blur(16px) saturate(1.5);
885
898
  --media-video-border-radius: var(--media-border-radius, 2rem);
899
+ --media-controls-transition-duration: 100ms;
900
+ --media-controls-transition-delay: 0ms;
886
901
 
887
902
  @media (prefers-color-scheme: dark) {
888
- --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
+ }
889
918
  }
890
919
 
891
920
  /* Inner border ring */
@@ -913,43 +942,46 @@
913
942
  bottom: 0.75rem;
914
943
  inset-inline: 0.75rem;
915
944
  z-index: 10;
916
- color: oklch(1 0 0);
917
-
918
- will-change: scale, transform, filter, opacity;
945
+ color: var(--media-color-primary, oklch(1 0 0));
919
946
  transition-timing-function: ease-out;
947
+ transition-duration: var(--media-controls-transition-duration);
948
+ transition-delay: var(--media-controls-transition-delay);
920
949
  transform-origin: bottom;
921
950
 
922
951
  @media (pointer: fine) {
923
- transition-property: scale, transform, filter, opacity;
924
- transition-duration: 100ms;
925
- 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;
926
959
  }
927
960
 
928
961
  &:not([data-visible]) {
929
962
  opacity: 0;
930
963
  pointer-events: none;
931
964
  scale: 0.9;
932
- filter: blur(8px);
933
965
 
934
966
  @media (pointer: fine) {
935
- transition-duration: 300ms;
936
- transition-delay: 500ms;
967
+ filter: blur(8px);
937
968
 
938
969
  @media (prefers-reduced-motion: reduce) {
939
- transition-duration: 100ms;
970
+ filter: blur(0);
940
971
  }
941
972
  }
942
973
 
943
974
  @media (prefers-reduced-motion: reduce) {
944
975
  scale: 1;
945
- filter: blur(0);
946
976
  }
947
977
  }
948
978
  }
949
979
 
950
980
  /* Hide cursor when controls are hidden in fullscreen */
951
- .media-default-skin--video:fullscreen:has(.media-controls:not([data-visible])) {
952
- cursor: none;
981
+ @media (pointer: fine) {
982
+ .media-default-skin--video:fullscreen:has(.media-controls:not([data-visible])) {
983
+ cursor: none;
984
+ }
953
985
  }
954
986
 
955
987
  /* ==========================================================================
@@ -971,7 +1003,9 @@
971
1003
  filter: blur(8px);
972
1004
  transition-property: scale, opacity, filter;
973
1005
  transition-duration: 150ms;
1006
+ transition-timing-function: ease-out;
974
1007
  transform-origin: bottom;
1008
+ pointer-events: none;
975
1009
 
976
1010
  & .media-preview__thumbnail {
977
1011
  max-width: 11rem;
@@ -987,11 +1021,3 @@
987
1021
  filter: blur(0);
988
1022
  }
989
1023
 
990
- media-tooltip-group {
991
- display: contents;
992
- }
993
-
994
- :host {
995
- display: grid;
996
- }
997
-
@@ -9,6 +9,7 @@ import "../ui/pip-button.js";
9
9
  import "../ui/play-button.js";
10
10
  import "../ui/playback-rate-button.js";
11
11
  import "../ui/popover.js";
12
+ import "../ui/poster.js";
12
13
  import "../ui/seek-button.js";
13
14
  import "../ui/time.js";
14
15
  import "../ui/time-slider.js";
@@ -22,7 +23,7 @@ import { ReactiveElement } from "@videojs/element";
22
23
  //#region src/define/video/skin.ts
23
24
  const SEEK_TIME = 10;
24
25
  function getTemplateHTML() {
25
- return `<media-container class="media-default-skin media-default-skin--video"><slot name="media"></slot><media-buffering-indicator class="media-buffering-indicator"><div class="media-surface"> ${renderIcon("spinner", { class: "media-icon" })} </div></media-buffering-indicator><media-controls class="media-surface media-controls"><media-tooltip-group><media-play-button commandfor="play-tooltip" class="media-button media-button--icon media-button--play"> ${renderIcon("restart", { class: "media-icon media-icon--restart" })} ${renderIcon("play", { class: "media-icon media-icon--play" })} ${renderIcon("pause", { class: "media-icon media-icon--pause" })} </media-play-button><media-tooltip id="play-tooltip" side="top" class="media-surface media-tooltip"><span class="media-tooltip-label media-tooltip-label--replay">Replay</span><span class="media-tooltip-label media-tooltip-label--play">Play</span><span class="media-tooltip-label media-tooltip-label--pause">Pause</span></media-tooltip><media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="media-button media-button--icon media-button--seek"><span class="media-icon__container"> ${renderIcon("seek", { class: "media-icon media-icon--flipped" })} <span class="media-icon__label">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-backward-tooltip" side="top" class="media-surface media-tooltip"> Seek backward ${SEEK_TIME} seconds </media-tooltip><media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="media-button media-button--icon media-button--seek"><span class="media-icon__container"> ${renderIcon("seek", { class: "media-icon" })} <span class="media-icon__label">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-forward-tooltip" side="top" class="media-surface media-tooltip"> Seek forward ${SEEK_TIME} seconds </media-tooltip><media-time-group class="media-time"><media-time type="current" class="media-time__value"></media-time><media-time-slider class="media-slider"><media-slider-track class="media-slider__track"><media-slider-fill class="media-slider__fill"></media-slider-fill><media-slider-buffer class="media-slider__buffer"></media-slider-buffer></media-slider-track><media-slider-thumb class="media-slider__thumb"></media-slider-thumb><div class="media-surface media-preview media-slider__preview"><media-slider-thumbnail class="media-preview__thumbnail"></media-slider-thumbnail><media-slider-value type="pointer" class="media-preview__timestamp"></media-slider-value> ${renderIcon("spinner", { class: "media-preview__spinner media-icon" })} </div></media-time-slider><media-time type="duration" class="media-time__value"></media-time></media-time-group><media-playback-rate-button commandfor="playback-rate-tooltip" class="media-button media-button--icon media-button--playback-rate"></media-playback-rate-button><media-tooltip id="playback-rate-tooltip" side="top" class="media-surface media-tooltip"> Toggle playback rate </media-tooltip><media-mute-button commandfor="video-volume-popover" class="media-button media-button--icon media-button--mute"> ${renderIcon("volume-off", { class: "media-icon media-icon--volume-off" })} ${renderIcon("volume-low", { class: "media-icon media-icon--volume-low" })} ${renderIcon("volume-high", { class: "media-icon media-icon--volume-high" })} </media-mute-button><media-popover id="video-volume-popover" open-on-hover delay="200" close-delay="100" side="top" class="media-surface media-popover media-popover--volume"><media-volume-slider class="media-slider" orientation="vertical" thumb-alignment="edge"><media-slider-track class="media-slider__track"><media-slider-fill class="media-slider__fill"></media-slider-fill></media-slider-track><media-slider-thumb class="media-slider__thumb media-slider__thumb--persistent"></media-slider-thumb></media-volume-slider></media-popover><media-captions-button commandfor="captions-tooltip" class="media-button media-button--icon media-button--captions"> ${renderIcon("captions-off", { class: "media-icon media-icon--captions-off" })} ${renderIcon("captions-on", { class: "media-icon media-icon--captions-on" })} </media-captions-button><media-tooltip id="captions-tooltip" side="top" class="media-surface media-tooltip"><span class="media-tooltip-label media-tooltip-label--enable-captions">Enable captions</span><span class="media-tooltip-label media-tooltip-label--disable-captions">Disable captions</span></media-tooltip><media-pip-button commandfor="pip-tooltip" class="media-button media-button--icon media-button--pip"> ${renderIcon("pip", { class: "media-icon" })} </media-pip-button><media-tooltip id="pip-tooltip" side="top" class="media-surface media-tooltip"><span class="media-tooltip-label media-tooltip-label--enter-pip">Enter picture-in-picture</span><span class="media-tooltip-label media-tooltip-label--exit-pip">Exit picture-in-picture</span></media-tooltip><media-fullscreen-button commandfor="fullscreen-tooltip" class="media-button media-button--icon media-button--fullscreen"> ${renderIcon("fullscreen-enter", { class: "media-icon media-icon--fullscreen-enter" })} ${renderIcon("fullscreen-exit", { class: "media-icon media-icon--fullscreen-exit" })} </media-fullscreen-button><media-tooltip id="fullscreen-tooltip" side="top" class="media-surface media-tooltip"><span class="media-tooltip-label media-tooltip-label--enter-fullscreen">Enter fullscreen</span><span class="media-tooltip-label media-tooltip-label--exit-fullscreen">Exit fullscreen</span></media-tooltip></media-tooltip-group></media-controls><div class="media-overlay"></div></media-container>`;
26
+ return `<media-container class="media-default-skin media-default-skin--video"><slot name="media"></slot><slot></slot><media-poster><slot name="poster"></slot></media-poster><media-buffering-indicator class="media-buffering-indicator"><div class="media-surface"> ${renderIcon("spinner", { class: "media-icon" })} </div></media-buffering-indicator><media-controls class="media-surface media-controls"><media-tooltip-group><media-play-button commandfor="play-tooltip" class="media-button media-button--icon media-button--play"> ${renderIcon("restart", { class: "media-icon media-icon--restart" })} ${renderIcon("play", { class: "media-icon media-icon--play" })} ${renderIcon("pause", { class: "media-icon media-icon--pause" })} </media-play-button><media-tooltip id="play-tooltip" side="top" class="media-surface media-tooltip"><span class="media-tooltip-label media-tooltip-label--replay">Replay</span><span class="media-tooltip-label media-tooltip-label--play">Play</span><span class="media-tooltip-label media-tooltip-label--pause">Pause</span></media-tooltip><media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="media-button media-button--icon media-button--seek"><span class="media-icon__container"> ${renderIcon("seek", { class: "media-icon media-icon--flipped" })} <span class="media-icon__label">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-backward-tooltip" side="top" class="media-surface media-tooltip"> Seek backward ${SEEK_TIME} seconds </media-tooltip><media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="media-button media-button--icon media-button--seek"><span class="media-icon__container"> ${renderIcon("seek", { class: "media-icon" })} <span class="media-icon__label">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-forward-tooltip" side="top" class="media-surface media-tooltip"> Seek forward ${SEEK_TIME} seconds </media-tooltip><media-time-group class="media-time"><media-time type="current" class="media-time__value"></media-time><media-time-slider class="media-slider"><media-slider-track class="media-slider__track"><media-slider-fill class="media-slider__fill"></media-slider-fill><media-slider-buffer class="media-slider__buffer"></media-slider-buffer></media-slider-track><media-slider-thumb class="media-slider__thumb"></media-slider-thumb><div class="media-surface media-preview media-slider__preview"><media-slider-thumbnail class="media-preview__thumbnail"></media-slider-thumbnail><media-slider-value type="pointer" class="media-preview__timestamp"></media-slider-value> ${renderIcon("spinner", { class: "media-preview__spinner media-icon" })} </div></media-time-slider><media-time type="duration" class="media-time__value"></media-time></media-time-group><media-playback-rate-button commandfor="playback-rate-tooltip" class="media-button media-button--icon media-button--playback-rate"></media-playback-rate-button><media-tooltip id="playback-rate-tooltip" side="top" class="media-surface media-tooltip"> Toggle playback rate </media-tooltip><media-mute-button commandfor="video-volume-popover" class="media-button media-button--icon media-button--mute"> ${renderIcon("volume-off", { class: "media-icon media-icon--volume-off" })} ${renderIcon("volume-low", { class: "media-icon media-icon--volume-low" })} ${renderIcon("volume-high", { class: "media-icon media-icon--volume-high" })} </media-mute-button><media-popover id="video-volume-popover" open-on-hover delay="200" close-delay="100" side="top" class="media-surface media-popover media-popover--volume"><media-volume-slider class="media-slider" orientation="vertical" thumb-alignment="edge"><media-slider-track class="media-slider__track"><media-slider-fill class="media-slider__fill"></media-slider-fill></media-slider-track><media-slider-thumb class="media-slider__thumb media-slider__thumb--persistent"></media-slider-thumb></media-volume-slider></media-popover><media-captions-button commandfor="captions-tooltip" class="media-button media-button--icon media-button--captions"> ${renderIcon("captions-off", { class: "media-icon media-icon--captions-off" })} ${renderIcon("captions-on", { class: "media-icon media-icon--captions-on" })} </media-captions-button><media-tooltip id="captions-tooltip" side="top" class="media-surface media-tooltip"><span class="media-tooltip-label media-tooltip-label--enable-captions">Enable captions</span><span class="media-tooltip-label media-tooltip-label--disable-captions">Disable captions</span></media-tooltip><media-pip-button commandfor="pip-tooltip" class="media-button media-button--icon media-button--pip"> ${renderIcon("pip-enter", { class: "media-icon media-icon--pip-enter" })} ${renderIcon("pip-exit", { class: "media-icon media-icon--pip-exit" })} </media-pip-button><media-tooltip id="pip-tooltip" side="top" class="media-surface media-tooltip"><span class="media-tooltip-label media-tooltip-label--enter-pip">Enter picture-in-picture</span><span class="media-tooltip-label media-tooltip-label--exit-pip">Exit picture-in-picture</span></media-tooltip><media-fullscreen-button commandfor="fullscreen-tooltip" class="media-button media-button--icon media-button--fullscreen"> ${renderIcon("fullscreen-enter", { class: "media-icon media-icon--fullscreen-enter" })} ${renderIcon("fullscreen-exit", { class: "media-icon media-icon--fullscreen-exit" })} </media-fullscreen-button><media-tooltip id="fullscreen-tooltip" side="top" class="media-surface media-tooltip"><span class="media-tooltip-label media-tooltip-label--enter-fullscreen">Enter fullscreen</span><span class="media-tooltip-label media-tooltip-label--exit-fullscreen">Exit fullscreen</span></media-tooltip></media-tooltip-group></media-controls><div class="media-overlay"></div></media-container>`;
26
27
  }
27
28
  var VideoSkinElement = class extends SkinMixin(ReactiveElement) {
28
29
  static {
@@ -1 +1 @@
1
- {"version":3,"file":"skin.js","names":[],"sources":["../../../../src/define/video/skin.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render';\nimport { createStyles, SkinMixin } from '../skin-mixin';\nimport styles from './skin.css?inline';\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';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"media-default-skin media-default-skin--video\">\n <slot name=\"media\"></slot>\n\n <media-buffering-indicator class=\"media-buffering-indicator\">\n <div class=\"media-surface\">\n ${renderIcon('spinner', { class: 'media-icon' })}\n </div>\n </media-buffering-indicator>\n\n <media-controls class=\"media-surface media-controls\">\n <media-tooltip-group>\n <media-play-button commandfor=\"play-tooltip\" class=\"media-button media-button--icon media-button--play\">\n ${renderIcon('restart', { class: 'media-icon media-icon--restart' })}\n ${renderIcon('play', { class: 'media-icon media-icon--play' })}\n ${renderIcon('pause', { class: 'media-icon media-icon--pause' })}\n </media-play-button>\n <media-tooltip id=\"play-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--replay\">Replay</span>\n <span class=\"media-tooltip-label media-tooltip-label--play\">Play</span>\n <span class=\"media-tooltip-label media-tooltip-label--pause\">Pause</span>\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-backward-tooltip\" seconds=\"${-SEEK_TIME}\" class=\"media-button media-button--icon media-button--seek\">\n <span class=\"media-icon__container\">\n ${renderIcon('seek', { class: 'media-icon media-icon--flipped' })}\n <span class=\"media-icon__label\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-backward-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n Seek backward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-forward-tooltip\" seconds=\"${SEEK_TIME}\" class=\"media-button media-button--icon media-button--seek\">\n <span class=\"media-icon__container\">\n ${renderIcon('seek', { class: 'media-icon' })}\n <span class=\"media-icon__label\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-forward-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n Seek forward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-time-group class=\"media-time\">\n <media-time type=\"current\" class=\"media-time__value\"></media-time>\n <media-time-slider class=\"media-slider\">\n <media-slider-track class=\"media-slider__track\">\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n <media-slider-buffer class=\"media-slider__buffer\"></media-slider-buffer>\n </media-slider-track>\n <media-slider-thumb class=\"media-slider__thumb\"></media-slider-thumb>\n\n <div class=\"media-surface media-preview media-slider__preview\">\n <media-slider-thumbnail class=\"media-preview__thumbnail\"></media-slider-thumbnail>\n <media-slider-value type=\"pointer\" class=\"media-preview__timestamp\"></media-slider-value>\n ${renderIcon('spinner', { class: 'media-preview__spinner media-icon' })}\n </div>\n </media-time-slider>\n <media-time type=\"duration\" class=\"media-time__value\"></media-time>\n </media-time-group>\n\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"media-button media-button--icon media-button--playback-rate\"></media-playback-rate-button>\n <media-tooltip id=\"playback-rate-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n Toggle playback rate\n </media-tooltip>\n\n <media-mute-button commandfor=\"video-volume-popover\" class=\"media-button media-button--icon media-button--mute\">\n ${renderIcon('volume-off', { class: 'media-icon media-icon--volume-off' })}\n ${renderIcon('volume-low', { class: 'media-icon media-icon--volume-low' })}\n ${renderIcon('volume-high', { class: 'media-icon media-icon--volume-high' })}\n </media-mute-button>\n\n <media-popover id=\"video-volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"top\" class=\"media-surface media-popover media-popover--volume\">\n <media-volume-slider class=\"media-slider\" orientation=\"vertical\" thumb-alignment=\"edge\">\n <media-slider-track class=\"media-slider__track\">\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n </media-slider-track>\n <media-slider-thumb class=\"media-slider__thumb media-slider__thumb--persistent\"></media-slider-thumb>\n </media-volume-slider>\n </media-popover>\n\n <media-captions-button commandfor=\"captions-tooltip\" class=\"media-button media-button--icon media-button--captions\">\n ${renderIcon('captions-off', { class: 'media-icon media-icon--captions-off' })}\n ${renderIcon('captions-on', { class: 'media-icon media-icon--captions-on' })}\n </media-captions-button>\n <media-tooltip id=\"captions-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--enable-captions\">Enable captions</span>\n <span class=\"media-tooltip-label media-tooltip-label--disable-captions\">Disable captions</span>\n </media-tooltip>\n\n <media-pip-button commandfor=\"pip-tooltip\" class=\"media-button media-button--icon media-button--pip\">\n ${renderIcon('pip', { class: 'media-icon' })}\n </media-pip-button>\n <media-tooltip id=\"pip-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--enter-pip\">Enter picture-in-picture</span>\n <span class=\"media-tooltip-label media-tooltip-label--exit-pip\">Exit picture-in-picture</span>\n </media-tooltip>\n\n <media-fullscreen-button commandfor=\"fullscreen-tooltip\" class=\"media-button media-button--icon media-button--fullscreen\">\n ${renderIcon('fullscreen-enter', { class: 'media-icon media-icon--fullscreen-enter' })}\n ${renderIcon('fullscreen-exit', { class: 'media-icon media-icon--fullscreen-exit' })}\n </media-fullscreen-button>\n <media-tooltip id=\"fullscreen-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--enter-fullscreen\">Enter fullscreen</span>\n <span class=\"media-tooltip-label media-tooltip-label--exit-fullscreen\">Exit fullscreen</span>\n </media-tooltip>\n </media-tooltip-group>\n </media-controls>\n\n <div class=\"media-overlay\"></div>\n </media-container>\n `;\n}\n\nexport class VideoSkinElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'video-skin';\n static styles = createStyles(styles);\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(VideoSkinElement.tagName, VideoSkinElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VideoSkinElement.tagName]: VideoSkinElement;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAM,YAAY;AAElB,SAAS,kBAAkB;AACzB,QAAgB,4LAAA,WAAA,WAAA,EAAA,OAAA,cAAA,CAAA,CAAA,wNAAA,WAAA,WAAA,EAAA,OAAA,kCAAA,CAAA,CAAA,GAAA,WAAA,QAAA,EAAA,OAAA,+BAAA,CAAA,CAAA,GAAA,WAAA,SAAA,EAAA,OAAA,gCAAA,CAAA,CAAA,iZAAA,CAAA,UAAA,oGAAA,WAAA,QAAA,EAAA,OAAA,kCAAA,CAAA,CAAA,mCAAA,UAAA,4IAAA,UAAA,yFAAA,UAAA,oGAAA,WAAA,QAAA,EAAA,OAAA,cAAA,CAAA,CAAA,mCAAA,UAAA,0IAAA,UAAA,yqBAAA,WAAA,WAAA,EAAA,OAAA,qCAAA,CAAA,CAAA,mgBAAA,WAAA,cAAA,EAAA,OAAA,qCAAA,CAAA,CAAA,GAAA,WAAA,cAAA,EAAA,OAAA,qCAAA,CAAA,CAAA,GAAA,WAAA,eAAA,EAAA,OAAA,sCAAA,CAAA,CAAA,gpBAAA,WAAA,gBAAA,EAAA,OAAA,uCAAA,CAAA,CAAA,GAAA,WAAA,eAAA,EAAA,OAAA,sCAAA,CAAA,CAAA,iaAAA,WAAA,OAAA,EAAA,OAAA,cAAA,CAAA,CAAA,8aAAA,WAAA,oBAAA,EAAA,OAAA,2CAAA,CAAA,CAAA,GAAA,WAAA,mBAAA,EAAA,OAAA,0CAAA,CAAA,CAAA;;;;iBAIK;;;gBACL,aAAQ,aAAQ;;;yBACV"}
1
+ {"version":3,"file":"skin.js","names":[],"sources":["../../../../src/define/video/skin.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render';\nimport { createStyles, SkinMixin } from '../skin-mixin';\nimport styles from './skin.css?inline';\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=\"media-default-skin media-default-skin--video\">\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>\n <slot name=\"poster\"></slot>\n </media-poster>\n\n <media-buffering-indicator class=\"media-buffering-indicator\">\n <div class=\"media-surface\">\n ${renderIcon('spinner', { class: 'media-icon' })}\n </div>\n </media-buffering-indicator>\n\n <media-controls class=\"media-surface media-controls\">\n <media-tooltip-group>\n <media-play-button commandfor=\"play-tooltip\" class=\"media-button media-button--icon media-button--play\">\n ${renderIcon('restart', { class: 'media-icon media-icon--restart' })}\n ${renderIcon('play', { class: 'media-icon media-icon--play' })}\n ${renderIcon('pause', { class: 'media-icon media-icon--pause' })}\n </media-play-button>\n <media-tooltip id=\"play-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--replay\">Replay</span>\n <span class=\"media-tooltip-label media-tooltip-label--play\">Play</span>\n <span class=\"media-tooltip-label media-tooltip-label--pause\">Pause</span>\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-backward-tooltip\" seconds=\"${-SEEK_TIME}\" class=\"media-button media-button--icon media-button--seek\">\n <span class=\"media-icon__container\">\n ${renderIcon('seek', { class: 'media-icon media-icon--flipped' })}\n <span class=\"media-icon__label\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-backward-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n Seek backward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-forward-tooltip\" seconds=\"${SEEK_TIME}\" class=\"media-button media-button--icon media-button--seek\">\n <span class=\"media-icon__container\">\n ${renderIcon('seek', { class: 'media-icon' })}\n <span class=\"media-icon__label\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-forward-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n Seek forward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-time-group class=\"media-time\">\n <media-time type=\"current\" class=\"media-time__value\"></media-time>\n <media-time-slider class=\"media-slider\">\n <media-slider-track class=\"media-slider__track\">\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n <media-slider-buffer class=\"media-slider__buffer\"></media-slider-buffer>\n </media-slider-track>\n <media-slider-thumb class=\"media-slider__thumb\"></media-slider-thumb>\n\n <div class=\"media-surface media-preview media-slider__preview\">\n <media-slider-thumbnail class=\"media-preview__thumbnail\"></media-slider-thumbnail>\n <media-slider-value type=\"pointer\" class=\"media-preview__timestamp\"></media-slider-value>\n ${renderIcon('spinner', { class: 'media-preview__spinner media-icon' })}\n </div>\n </media-time-slider>\n <media-time type=\"duration\" class=\"media-time__value\"></media-time>\n </media-time-group>\n\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"media-button media-button--icon media-button--playback-rate\"></media-playback-rate-button>\n <media-tooltip id=\"playback-rate-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n Toggle playback rate\n </media-tooltip>\n\n <media-mute-button commandfor=\"video-volume-popover\" class=\"media-button media-button--icon media-button--mute\">\n ${renderIcon('volume-off', { class: 'media-icon media-icon--volume-off' })}\n ${renderIcon('volume-low', { class: 'media-icon media-icon--volume-low' })}\n ${renderIcon('volume-high', { class: 'media-icon media-icon--volume-high' })}\n </media-mute-button>\n\n <media-popover id=\"video-volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"top\" class=\"media-surface media-popover media-popover--volume\">\n <media-volume-slider class=\"media-slider\" orientation=\"vertical\" thumb-alignment=\"edge\">\n <media-slider-track class=\"media-slider__track\">\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n </media-slider-track>\n <media-slider-thumb class=\"media-slider__thumb media-slider__thumb--persistent\"></media-slider-thumb>\n </media-volume-slider>\n </media-popover>\n\n <media-captions-button commandfor=\"captions-tooltip\" class=\"media-button media-button--icon media-button--captions\">\n ${renderIcon('captions-off', { class: 'media-icon media-icon--captions-off' })}\n ${renderIcon('captions-on', { class: 'media-icon media-icon--captions-on' })}\n </media-captions-button>\n <media-tooltip id=\"captions-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--enable-captions\">Enable captions</span>\n <span class=\"media-tooltip-label media-tooltip-label--disable-captions\">Disable captions</span>\n </media-tooltip>\n\n <media-pip-button commandfor=\"pip-tooltip\" class=\"media-button media-button--icon media-button--pip\">\n ${renderIcon('pip-enter', { class: 'media-icon media-icon--pip-enter' })}\n ${renderIcon('pip-exit', { class: 'media-icon media-icon--pip-exit' })}\n </media-pip-button>\n <media-tooltip id=\"pip-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--enter-pip\">Enter picture-in-picture</span>\n <span class=\"media-tooltip-label media-tooltip-label--exit-pip\">Exit picture-in-picture</span>\n </media-tooltip>\n\n <media-fullscreen-button commandfor=\"fullscreen-tooltip\" class=\"media-button media-button--icon media-button--fullscreen\">\n ${renderIcon('fullscreen-enter', { class: 'media-icon media-icon--fullscreen-enter' })}\n ${renderIcon('fullscreen-exit', { class: 'media-icon media-icon--fullscreen-exit' })}\n </media-fullscreen-button>\n <media-tooltip id=\"fullscreen-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--enter-fullscreen\">Enter fullscreen</span>\n <span class=\"media-tooltip-label media-tooltip-label--exit-fullscreen\">Exit fullscreen</span>\n </media-tooltip>\n </media-tooltip-group>\n </media-controls>\n\n <div class=\"media-overlay\"></div>\n </media-container>\n `;\n}\n\nexport class VideoSkinElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'video-skin';\n static styles = createStyles(styles);\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(VideoSkinElement.tagName, VideoSkinElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VideoSkinElement.tagName]: VideoSkinElement;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAwBA,MAAM,YAAY;AAElB,SAAS,kBAAkB;AACzB,QAAgB,iQAAA,WAAA,WAAA,EAAA,OAAA,cAAA,CAAA,CAAA,wNAAA,WAAA,WAAA,EAAA,OAAA,kCAAA,CAAA,CAAA,GAAA,WAAA,QAAA,EAAA,OAAA,+BAAA,CAAA,CAAA,GAAA,WAAA,SAAA,EAAA,OAAA,gCAAA,CAAA,CAAA,iZAAA,CAAA,UAAA,oGAAA,WAAA,QAAA,EAAA,OAAA,kCAAA,CAAA,CAAA,mCAAA,UAAA,4IAAA,UAAA,yFAAA,UAAA,oGAAA,WAAA,QAAA,EAAA,OAAA,cAAA,CAAA,CAAA,mCAAA,UAAA,0IAAA,UAAA,yqBAAA,WAAA,WAAA,EAAA,OAAA,qCAAA,CAAA,CAAA,mgBAAA,WAAA,cAAA,EAAA,OAAA,qCAAA,CAAA,CAAA,GAAA,WAAA,cAAA,EAAA,OAAA,qCAAA,CAAA,CAAA,GAAA,WAAA,eAAA,EAAA,OAAA,sCAAA,CAAA,CAAA,gpBAAA,WAAA,gBAAA,EAAA,OAAA,uCAAA,CAAA,CAAA,GAAA,WAAA,eAAA,EAAA,OAAA,sCAAA,CAAA,CAAA,iaAAA,WAAA,aAAA,EAAA,OAAA,oCAAA,CAAA,CAAA,GAAA,WAAA,YAAA,EAAA,OAAA,mCAAA,CAAA,CAAA,8aAAA,WAAA,oBAAA,EAAA,OAAA,2CAAA,CAAA,CAAA,GAAA,WAAA,mBAAA,EAAA,OAAA,0CAAA,CAAA,CAAA;;AAGlB,IAAY,mBAAZ,cAA+B,UAAA,gBAAA,CAAA;;iBACb;;;;;;yBAEC"}
@@ -11,27 +11,29 @@ import "../ui/pip-button.js";
11
11
  import "../ui/play-button.js";
12
12
  import "../ui/playback-rate-button.js";
13
13
  import "../ui/popover.js";
14
+ import "../ui/poster.js";
14
15
  import "../ui/seek-button.js";
15
16
  import "../ui/time.js";
16
17
  import "../ui/time-slider.js";
17
18
  import "../ui/tooltip.js";
18
19
  import "../ui/tooltip-group.js";
19
20
  import "../ui/volume-slider.js";
21
+ import { renderIcon } from "../../icons/dist/render/default/index.js";
20
22
  import { button } from "../../skins/dist/default/default/tailwind/components/button.js";
21
23
  import { icon, iconContainer, iconFlipped } from "../../skins/dist/default/default/tailwind/components/icon.js";
22
24
  import { playbackRate } from "../../skins/dist/default/default/tailwind/components/playback-rate.js";
23
25
  import { seek } from "../../skins/dist/default/default/tailwind/components/seek.js";
24
26
  import { time } from "../../skins/dist/default/default/tailwind/components/time.js";
25
27
  import { overlay } from "../../skins/dist/default/default/tailwind/components/overlay.js";
28
+ import { poster } from "../../skins/dist/default/default/tailwind/components/poster.js";
26
29
  import { bufferingIndicator, controls, popup, preview, root, slider } from "../../skins/dist/default/default/tailwind/video.tailwind.js";
27
- import { renderIcon } from "../../icons/dist/render/default/index.js";
28
30
  import { ReactiveElement } from "@videojs/element";
29
31
  import { cn } from "@videojs/utils/style";
30
32
 
31
33
  //#region src/define/video/skin.tailwind.ts
32
34
  const SEEK_TIME = 10;
33
35
  function getTemplateHTML() {
34
- return `<media-container class="${root(true)}"><slot name="media"></slot><media-buffering-indicator class="${bufferingIndicator.root}"><div class="${bufferingIndicator.container}"> ${renderIcon("spinner")} </div></media-buffering-indicator><media-controls data-controls="" class="${controls}"><media-tooltip-group class="contents"><span class="${tooltipState.play.wrapper}"><media-play-button commandfor="play-tooltip" class="${cn(button.base, button.icon, iconState.play.button)}"> ${renderIcon("restart", { class: cn(icon, iconState.play.restart) })} ${renderIcon("play", { class: cn(icon, iconState.play.play) })} ${renderIcon("pause", { class: cn(icon, iconState.play.pause) })} </media-play-button><media-tooltip id="play-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.play.replay}">Replay</span><span class="${tooltipState.play.play}">Play</span><span class="${tooltipState.play.pause}">Pause</span></media-tooltip></span><media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}"><span class="${iconContainer}"> ${renderIcon("seek", { class: cn(icon, iconFlipped) })} <span class="${cn(seek.label, seek.labelBackward)}">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-backward-tooltip" side="top" class="${cn(popup.tooltip)}"> Seek backward ${SEEK_TIME} seconds </media-tooltip><media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}"><span class="${iconContainer}"> ${renderIcon("seek", { class: icon })} <span class="${cn(seek.label, seek.labelForward)}">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-forward-tooltip" side="top" class="${cn(popup.tooltip)}"> Seek forward ${SEEK_TIME} seconds </media-tooltip><media-time-group class="${time.group}"><media-time type="current" class="${time.current}"></media-time><media-time-slider class="${slider.root}"><media-slider-track class="${slider.track}"><media-slider-fill class="${cn(slider.fill.base, slider.fill.fill)}"></media-slider-fill><media-slider-buffer class="${cn(slider.fill.base, slider.fill.buffer)}"></media-slider-buffer></media-slider-track><media-slider-thumb class="${cn(slider.thumb.base, slider.thumb.interactive)}"></media-slider-thumb><div class="${preview.root}"><media-slider-thumbnail class="${preview.thumbnail}"></media-slider-thumbnail><media-slider-value type="pointer" class="${preview.timestamp}"></media-slider-value> ${renderIcon("spinner", { class: cn(icon, preview.spinner) })} </div></media-time-slider><media-time type="duration" class="${time.duration}"></media-time></media-time-group><media-playback-rate-button commandfor="playback-rate-tooltip" class="${cn(button.base, button.icon, playbackRate.button)}"></media-playback-rate-button><media-tooltip id="playback-rate-tooltip" side="top" class="${cn(popup.tooltip)}"> Toggle playback rate </media-tooltip><media-mute-button commandfor="video-volume-popover" class="${cn(button.base, button.icon, iconState.mute.button)}"> ${renderIcon("volume-off", { class: cn(icon, iconState.mute.volumeOff) })} ${renderIcon("volume-low", { class: cn(icon, iconState.mute.volumeLow) })} ${renderIcon("volume-high", { class: cn(icon, iconState.mute.volumeHigh) })} </media-mute-button><media-popover id="video-volume-popover" open-on-hover delay="200" close-delay="100" side="top" class="${cn(popup.popover, popup.volume)}"><media-volume-slider class="${slider.root}" orientation="vertical" thumb-alignment="edge"><media-slider-track class="${slider.track}"><media-slider-fill class="${cn(slider.fill.base, slider.fill.fill)}"></media-slider-fill></media-slider-track><media-slider-thumb class="${cn(slider.thumb.base, slider.thumb.persistent)}"></media-slider-thumb></media-volume-slider></media-popover><span class="${tooltipState.captions.wrapper}"><media-captions-button commandfor="captions-tooltip" class="${cn(button.base, button.icon, iconState.captions.button)}"> ${renderIcon("captions-off", { class: cn(icon, iconState.captions.off) })} ${renderIcon("captions-on", { class: cn(icon, iconState.captions.on) })} </media-captions-button><media-tooltip id="captions-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.captions.enable}">Enable captions</span><span class="${tooltipState.captions.disable}">Disable captions</span></media-tooltip></span><span class="${tooltipState.pip.wrapper}"><media-pip-button commandfor="pip-tooltip" class="${cn(button.base, button.icon)}"> ${renderIcon("pip", { class: icon })} </media-pip-button><media-tooltip id="pip-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.pip.enter}">Enter picture-in-picture</span><span class="${tooltipState.pip.exit}">Exit picture-in-picture</span></media-tooltip></span><span class="${tooltipState.fullscreen.wrapper}"><media-fullscreen-button commandfor="fullscreen-tooltip" class="${cn(button.base, button.icon, iconState.fullscreen.button)}"> ${renderIcon("fullscreen-enter", { class: cn(icon, iconState.fullscreen.enter) })} ${renderIcon("fullscreen-exit", { class: cn(icon, iconState.fullscreen.exit) })} </media-fullscreen-button><media-tooltip id="fullscreen-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.fullscreen.enter}">Enter fullscreen</span><span class="${tooltipState.fullscreen.exit}">Exit fullscreen</span></media-tooltip></span></media-tooltip-group></media-controls><div class="${overlay}"></div></media-container>`;
36
+ return `<media-container class="${root(true)}"><slot name="media"></slot><slot></slot><media-poster class="${poster(true)}"><slot name="poster"></slot></media-poster><media-buffering-indicator class="${bufferingIndicator.root}"><div class="${bufferingIndicator.container}"> ${renderIcon("spinner")} </div></media-buffering-indicator><media-controls data-controls="" class="${controls}"><media-tooltip-group><span class="${tooltipState.play.wrapper}"><media-play-button commandfor="play-tooltip" class="${cn(button.base, button.icon, iconState.play.button)}"> ${renderIcon("restart", { class: cn(icon, iconState.play.restart) })} ${renderIcon("play", { class: cn(icon, iconState.play.play) })} ${renderIcon("pause", { class: cn(icon, iconState.play.pause) })} </media-play-button><media-tooltip id="play-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.play.replay}">Replay</span><span class="${tooltipState.play.play}">Play</span><span class="${tooltipState.play.pause}">Pause</span></media-tooltip></span><media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}"><span class="${iconContainer}"> ${renderIcon("seek", { class: cn(icon, iconFlipped) })} <span class="${cn(seek.label, seek.labelBackward)}">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-backward-tooltip" side="top" class="${cn(popup.tooltip)}"> Seek backward ${SEEK_TIME} seconds </media-tooltip><media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}"><span class="${iconContainer}"> ${renderIcon("seek", { class: icon })} <span class="${cn(seek.label, seek.labelForward)}">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-forward-tooltip" side="top" class="${cn(popup.tooltip)}"> Seek forward ${SEEK_TIME} seconds </media-tooltip><media-time-group class="${time.group}"><media-time type="current" class="${time.current}"></media-time><media-time-slider class="${slider.root}"><media-slider-track class="${slider.track}"><media-slider-fill class="${cn(slider.fill.base, slider.fill.fill)}"></media-slider-fill><media-slider-buffer class="${cn(slider.fill.base, slider.fill.buffer)}"></media-slider-buffer></media-slider-track><media-slider-thumb class="${cn(slider.thumb.base, slider.thumb.interactive)}"></media-slider-thumb><div class="${preview.root}"><media-slider-thumbnail class="${preview.thumbnail}"></media-slider-thumbnail><media-slider-value type="pointer" class="${preview.timestamp}"></media-slider-value> ${renderIcon("spinner", { class: cn(icon, preview.spinner) })} </div></media-time-slider><media-time type="duration" class="${time.duration}"></media-time></media-time-group><media-playback-rate-button commandfor="playback-rate-tooltip" class="${cn(button.base, button.icon, playbackRate.button)}"></media-playback-rate-button><media-tooltip id="playback-rate-tooltip" side="top" class="${cn(popup.tooltip)}"> Toggle playback rate </media-tooltip><media-mute-button commandfor="video-volume-popover" class="${cn(button.base, button.icon, iconState.mute.button)}"> ${renderIcon("volume-off", { class: cn(icon, iconState.mute.volumeOff) })} ${renderIcon("volume-low", { class: cn(icon, iconState.mute.volumeLow) })} ${renderIcon("volume-high", { class: cn(icon, iconState.mute.volumeHigh) })} </media-mute-button><media-popover id="video-volume-popover" open-on-hover delay="200" close-delay="100" side="top" class="${cn(popup.popover, popup.volume)}"><media-volume-slider class="${slider.root}" orientation="vertical" thumb-alignment="edge"><media-slider-track class="${slider.track}"><media-slider-fill class="${cn(slider.fill.base, slider.fill.fill)}"></media-slider-fill></media-slider-track><media-slider-thumb class="${cn(slider.thumb.base, slider.thumb.persistent)}"></media-slider-thumb></media-volume-slider></media-popover><span class="${tooltipState.captions.wrapper}"><media-captions-button commandfor="captions-tooltip" class="${cn(button.base, button.icon, iconState.captions.button)}"> ${renderIcon("captions-off", { class: cn(icon, iconState.captions.off) })} ${renderIcon("captions-on", { class: cn(icon, iconState.captions.on) })} </media-captions-button><media-tooltip id="captions-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.captions.enable}">Enable captions</span><span class="${tooltipState.captions.disable}">Disable captions</span></media-tooltip></span><span class="${tooltipState.pip.wrapper}"><media-pip-button commandfor="pip-tooltip" class="${cn(button.base, button.icon, iconState.pip.button)}"> ${renderIcon("pip-enter", { class: cn(icon, iconState.pip.off) })} ${renderIcon("pip-exit", { class: cn(icon, iconState.pip.on) })} </media-pip-button><media-tooltip id="pip-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.pip.enter}">Enter picture-in-picture</span><span class="${tooltipState.pip.exit}">Exit picture-in-picture</span></media-tooltip></span><span class="${tooltipState.fullscreen.wrapper}"><media-fullscreen-button commandfor="fullscreen-tooltip" class="${cn(button.base, button.icon, iconState.fullscreen.button)}"> ${renderIcon("fullscreen-enter", { class: cn(icon, iconState.fullscreen.enter) })} ${renderIcon("fullscreen-exit", { class: cn(icon, iconState.fullscreen.exit) })} </media-fullscreen-button><media-tooltip id="fullscreen-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.fullscreen.enter}">Enter fullscreen</span><span class="${tooltipState.fullscreen.exit}">Exit fullscreen</span></media-tooltip></span></media-tooltip-group></media-controls><div class="${overlay}"></div></media-container>`;
35
37
  }
36
38
  var VideoSkinTailwindElement = class extends SkinMixin(ReactiveElement) {
37
39
  static {
@@ -1 +1 @@
1
- {"version":3,"file":"skin.tailwind.js","names":[],"sources":["../../../../src/define/video/skin.tailwind.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render';\nimport {\n bufferingIndicator,\n button,\n controls,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n overlay,\n playbackRate,\n popup,\n preview,\n root,\n seek,\n slider,\n time,\n tooltipState,\n} from '@videojs/skins/default/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';\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.root}\">\n <div class=\"${bufferingIndicator.container}\">\n ${renderIcon('spinner')}\n </div>\n </media-buffering-indicator>\n\n <media-controls data-controls=\"\" class=\"${controls}\">\n <media-tooltip-group class=\"contents\">\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\n <media-time-group class=\"${time.group}\">\n <media-time type=\"current\" class=\"${time.current}\"></media-time>\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 <media-slider-thumbnail class=\"${preview.thumbnail}\"></media-slider-thumbnail>\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 <media-time type=\"duration\" class=\"${time.duration}\"></media-time>\n </media-time-group>\n\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"${cn(button.base, button.icon, playbackRate.button)}\"></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.popover, 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=\"${cn(slider.thumb.base, slider.thumb.persistent)}\"></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 </media-tooltip-group>\n </media-controls>\n\n <div class=\"${overlay}\"></div>\n </media-container>\n `;\n}\n\nexport class VideoSkinTailwindElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'video-skin-tailwind';\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(VideoSkinTailwindElement.tagName, VideoSkinTailwindElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VideoSkinTailwindElement.tagName]: VideoSkinTailwindElement;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"skin.tailwind.js","names":[],"sources":["../../../../src/define/video/skin.tailwind.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render';\nimport {\n bufferingIndicator,\n button,\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/default/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.root}\">\n <div class=\"${bufferingIndicator.container}\">\n ${renderIcon('spinner')}\n </div>\n </media-buffering-indicator>\n\n <media-controls data-controls=\"\" class=\"${controls}\">\n <media-tooltip-group>\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\n <media-time-group class=\"${time.group}\">\n <media-time type=\"current\" class=\"${time.current}\"></media-time>\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 <media-slider-thumbnail class=\"${preview.thumbnail}\"></media-slider-thumbnail>\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 <media-time type=\"duration\" class=\"${time.duration}\"></media-time>\n </media-time-group>\n\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"${cn(button.base, button.icon, playbackRate.button)}\"></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.popover, 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=\"${cn(slider.thumb.base, slider.thumb.persistent)}\"></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 </media-tooltip-group>\n </media-controls>\n\n <div class=\"${overlay}\"></div>\n </media-container>\n `;\n}\n\nexport class VideoSkinTailwindElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'video-skin-tailwind';\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(VideoSkinTailwindElement.tagName, VideoSkinTailwindElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VideoSkinTailwindElement.tagName]: VideoSkinTailwindElement;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,MAAM,YAAY;AAElB,SAAS,kBAAkB;AACzB,QAAgB,2BAAA,KAAA,KAAA,CAAA,gEAAA,OAAA,KAAA,CAAA,gFAAA,mBAAA,KAAA,gBAAA,mBAAA,UAAA,KAAA,WAAA,UAAA,CAAA,6EAAA,SAAA,sCAAA,aAAA,KAAA,QAAA,wDAAA,GAAA,OAAA,MAAA,OAAA,MAAA,UAAA,KAAA,OAAA,CAAA,KAAA,WAAA,WAAA,EAAA,OAAA,GAAA,MAAA,UAAA,KAAA,QAAA,EAAA,CAAA,CAAA,GAAA,WAAA,QAAA,EAAA,OAAA,GAAA,MAAA,UAAA,KAAA,KAAA,EAAA,CAAA,CAAA,GAAA,WAAA,SAAA,EAAA,OAAA,GAAA,MAAA,UAAA,KAAA,MAAA,EAAA,CAAA,CAAA,0EAAA,GAAA,MAAA,QAAA,CAAA,iBAAA,aAAA,KAAA,OAAA,8BAAA,aAAA,KAAA,KAAA,4BAAA,aAAA,KAAA,MAAA,sGAAA,CAAA,UAAA,WAAA,GAAA,OAAA,MAAA,OAAA,MAAA,KAAA,OAAA,CAAA,iBAAA,cAAA,KAAA,WAAA,QAAA,EAAA,OAAA,GAAA,MAAA,YAAA,EAAA,CAAA,CAAA,gBAAA,GAAA,KAAA,OAAA,KAAA,cAAA,CAAA,IAAA,UAAA,gGAAA,GAAA,MAAA,QAAA,CAAA,mBAAA,UAAA,yFAAA,UAAA,WAAA,GAAA,OAAA,MAAA,OAAA,MAAA,KAAA,OAAA,CAAA,iBAAA,cAAA,KAAA,WAAA,QAAA,EAAA,OAAA,MAAA,CAAA,CAAA,gBAAA,GAAA,KAAA,OAAA,KAAA,aAAA,CAAA,IAAA,UAAA,+FAAA,GAAA,MAAA,QAAA,CAAA,kBAAA,UAAA,oDAAA,KAAA,MAAA,sCAAA,KAAA,QAAA,2CAAA,OAAA,KAAA,+BAAA,OAAA,MAAA,8BAAA,GAAA,OAAA,KAAA,MAAA,OAAA,KAAA,KAAA,CAAA,oDAAA,GAAA,OAAA,KAAA,MAAA,OAAA,KAAA,OAAA,CAAA,0EAAA,GAAA,OAAA,MAAA,MAAA,OAAA,MAAA,YAAA,CAAA,qCAAA,QAAA,KAAA,mCAAA,QAAA,UAAA,uEAAA,QAAA,UAAA,0BAAA,WAAA,WAAA,EAAA,OAAA,GAAA,MAAA,QAAA,QAAA,EAAA,CAAA,CAAA,gEAAA,KAAA,SAAA,0GAAA,GAAA,OAAA,MAAA,OAAA,MAAA,aAAA,OAAA,CAAA,6FAAA,GAAA,MAAA,QAAA,CAAA,sGAAA,GAAA,OAAA,MAAA,OAAA,MAAA,UAAA,KAAA,OAAA,CAAA,KAAA,WAAA,cAAA,EAAA,OAAA,GAAA,MAAA,UAAA,KAAA,UAAA,EAAA,CAAA,CAAA,GAAA,WAAA,cAAA,EAAA,OAAA,GAAA,MAAA,UAAA,KAAA,UAAA,EAAA,CAAA,CAAA,GAAA,WAAA,eAAA,EAAA,OAAA,GAAA,MAAA,UAAA,KAAA,WAAA,EAAA,CAAA,CAAA,8HAAA,GAAA,MAAA,SAAA,MAAA,OAAA,CAAA,gCAAA,OAAA,KAAA,6EAAA,OAAA,MAAA,8BAAA,GAAA,OAAA,KAAA,MAAA,OAAA,KAAA,KAAA,CAAA,wEAAA,GAAA,OAAA,MAAA,MAAA,OAAA,MAAA,WAAA,CAAA,4EAAA,aAAA,SAAA,QAAA,gEAAA,GAAA,OAAA,MAAA,OAAA,MAAA,UAAA,SAAA,OAAA,CAAA,KAAA,WAAA,gBAAA,EAAA,OAAA,GAAA,MAAA,UAAA,SAAA,IAAA,EAAA,CAAA,CAAA,GAAA,WAAA,eAAA,EAAA,OAAA,GAAA,MAAA,UAAA,SAAA,GAAA,EAAA,CAAA,CAAA,kFAAA,GAAA,MAAA,QAAA,CAAA,iBAAA,aAAA,SAAA,OAAA,uCAAA,aAAA,SAAA,QAAA,+DAAA,aAAA,IAAA,QAAA,sDAAA,GAAA,OAAA,MAAA,OAAA,MAAA,UAAA,IAAA,OAAA,CAAA,KAAA,WAAA,aAAA,EAAA,OAAA,GAAA,MAAA,UAAA,IAAA,IAAA,EAAA,CAAA,CAAA,GAAA,WAAA,YAAA,EAAA,OAAA,GAAA,MAAA,UAAA,IAAA,GAAA,EAAA,CAAA,CAAA,wEAAA,GAAA,MAAA,QAAA,CAAA,iBAAA,aAAA,IAAA,MAAA,gDAAA,aAAA,IAAA,KAAA,sEAAA,aAAA,WAAA,QAAA,oEAAA,GAAA,OAAA,MAAA,OAAA,MAAA,UAAA,WAAA,OAAA,CAAA,KAAA,WAAA,oBAAA,EAAA,OAAA,GAAA,MAAA,UAAA,WAAA,MAAA,EAAA,CAAA,CAAA,GAAA,WAAA,mBAAA,EAAA,OAAA,GAAA,MAAA,UAAA,WAAA,KAAA,EAAA,CAAA,CAAA,sFAAA,GAAA,MAAA,QAAA,CAAA,iBAAA,aAAA,WAAA,MAAA,wCAAA,aAAA,WAAA,KAAA,oGAAA,QAAA;;AAGlB,IAAY,2BAAZ,cAA+B,UAAA,gBAAA,CAAA;;iBACb;;;;;;AAIlB,eAAc,OAAM,yBAAA,SAAA,yBAAA"}
@@ -5,7 +5,8 @@ const icons = {
5
5
  "fullscreen-enter": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" aria-hidden="true" viewBox="0 0 18 18"><path fill="currentColor" d="M9.57 3.617A1 1 0 0 0 8.646 3H4c-.552 0-1 .449-1 1v4.646a.996.996 0 0 0 1.001 1 1 1 0 0 0 .706-.293l4.647-4.647a1 1 0 0 0 .216-1.089m4.812 4.812a1 1 0 0 0-1.089.217l-4.647 4.647a.998.998 0 0 0 .708 1.706H14c.552 0 1-.449 1-1V9.353a1 1 0 0 0-.618-.924"/></svg>`,
6
6
  "fullscreen-exit": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" aria-hidden="true" viewBox="0 0 18 18"><path fill="currentColor" d="M7.883 1.93a.99.99 0 0 0-1.09.217L2.146 6.793A.998.998 0 0 0 2.853 8.5H7.5c.551 0 1-.449 1-1V2.854a1 1 0 0 0-.617-.924m7.263 7.57H10.5c-.551 0-1 .449-1 1v4.646a.996.996 0 0 0 1.001 1.001 1 1 0 0 0 .706-.293l4.646-4.646a.998.998 0 0 0-.707-1.707z"/></svg>`,
7
7
  "pause": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" aria-hidden="true" viewBox="0 0 18 18"><rect width="5" height="14" x="2" y="2" fill="currentColor" rx="1.75"/><rect width="5" height="14" x="11" y="2" fill="currentColor" rx="1.75"/></svg>`,
8
- "pip": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" aria-hidden="true" viewBox="0 0 18 18"><path fill="currentColor" d="M13 2a4 4 0 0 1 4 4v2.035A3.5 3.5 0 0 0 16.5 8H15V6.273C15 5.018 13.96 4 12.679 4H4.32C3.04 4 2 5.018 2 6.273v5.454C2 12.982 3.04 14 4.321 14H6v1.5q0 .255.035.5H4a4 4 0 0 1-4-4V6a4 4 0 0 1 4-4z"/><rect width="10" height="7" x="8" y="10" fill="currentColor" rx="2"/></svg>`,
8
+ "pip-enter": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" aria-hidden="true" viewBox="0 0 18 18"><path fill="currentColor" d="M13 2a4 4 0 0 1 4 4v2.035A3.5 3.5 0 0 0 16.5 8H15V6.273C15 5.018 13.96 4 12.679 4H4.32C3.04 4 2 5.018 2 6.273v5.454C2 12.982 3.04 14 4.321 14H6v1.5q0 .255.035.5H4a4 4 0 0 1-4-4V6a4 4 0 0 1 4-4z"/><rect width="10" height="7" x="8" y="10" fill="currentColor" rx="2"/><path fill="currentColor" d="M7.129 5.547a.6.6 0 0 0-.656.13L3.677 8.473A.6.6 0 0 0 4.102 9.5h2.796c.332 0 .602-.27.602-.602V6.103a.6.6 0 0 0-.371-.556"/></svg>`,
9
+ "pip-exit": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" aria-hidden="true" viewBox="0 0 18 18"><path fill="currentColor" d="M13 2a4 4 0 0 1 4 4v2.036A3.5 3.5 0 0 0 16.5 8H15V6.273C15 5.018 13.96 4 12.679 4H4.32C3.04 4 2 5.018 2 6.273v5.454C2 12.982 3.04 14 4.321 14H6v1.5q0 .255.036.5H4a4 4 0 0 1-4-4V6a4 4 0 0 1 4-4z"/><rect width="10" height="7" x="8" y="10" fill="currentColor" rx="2"/><path fill="currentColor" d="M4.871 10.454a.6.6 0 0 0 .656-.131l2.796-2.796A.6.6 0 0 0 7.898 6.5H5.102a.603.603 0 0 0-.602.602v2.795a.6.6 0 0 0 .371.556"/></svg>`,
9
10
  "play": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" aria-hidden="true" viewBox="0 0 18 18"><path fill="currentColor" d="m14.051 10.723-7.985 4.964a1.98 1.98 0 0 1-2.758-.638A2.06 2.06 0 0 1 3 13.964V4.036C3 2.91 3.895 2 5 2c.377 0 .747.109 1.066.313l7.985 4.964a2.057 2.057 0 0 1 .627 2.808c-.16.257-.373.475-.627.637"/></svg>`,
10
11
  "restart": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" aria-hidden="true" viewBox="0 0 18 18"><path fill="currentColor" d="M9 17a8 8 0 0 1-8-8h2a6 6 0 1 0 1.287-3.713l1.286 1.286A.25.25 0 0 1 5.396 7H1.25A.25.25 0 0 1 1 6.75V2.604a.25.25 0 0 1 .427-.177l1.438 1.438A8 8 0 1 1 9 17"/><path fill="currentColor" d="m11.61 9.639-3.331 2.07a.826.826 0 0 1-1.15-.266.86.86 0 0 1-.129-.452V6.849C7 6.38 7.374 6 7.834 6c.158 0 .312.045.445.13l3.331 2.071a.858.858 0 0 1 0 1.438"/></svg>`,
11
12
  "seek": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" aria-hidden="true" viewBox="0 0 18 18"><path fill="currentColor" d="M1 9c0 2.21.895 4.21 2.343 5.657l1.414-1.414a6 6 0 1 1 8.956-7.956l-1.286 1.286a.25.25 0 0 0 .177.427h4.146a.25.25 0 0 0 .25-.25V2.604a.25.25 0 0 0-.427-.177l-1.438 1.438A8 8 0 0 0 1 9"/></svg>`,