@videojs/html 10.0.0-alpha.9 → 10.0.0-beta.2

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 (321) hide show
  1. package/README.md +2 -2
  2. package/cdn/audio-minimal.css +1 -0
  3. package/cdn/audio-minimal.dev.js +5360 -0
  4. package/cdn/audio-minimal.dev.js.map +1 -0
  5. package/cdn/audio-minimal.js +25 -0
  6. package/cdn/audio-minimal.js.map +1 -0
  7. package/cdn/audio.css +1 -0
  8. package/cdn/audio.dev.js +5351 -0
  9. package/cdn/audio.dev.js.map +1 -0
  10. package/cdn/audio.js +25 -0
  11. package/cdn/audio.js.map +1 -0
  12. package/cdn/background.css +1 -0
  13. package/cdn/background.dev.js +2057 -0
  14. package/cdn/background.dev.js.map +1 -0
  15. package/cdn/background.js +19 -0
  16. package/cdn/background.js.map +1 -0
  17. package/cdn/media/hls-video.dev.js +28728 -0
  18. package/cdn/media/hls-video.dev.js.map +1 -0
  19. package/cdn/media/hls-video.js +83 -0
  20. package/cdn/media/hls-video.js.map +1 -0
  21. package/cdn/media/simple-hls-video.dev.js +3796 -0
  22. package/cdn/media/simple-hls-video.dev.js.map +1 -0
  23. package/cdn/media/simple-hls-video.js +44 -0
  24. package/cdn/media/simple-hls-video.js.map +1 -0
  25. package/cdn/video-minimal.css +1 -0
  26. package/cdn/video-minimal.dev.js +5714 -0
  27. package/cdn/video-minimal.dev.js.map +1 -0
  28. package/cdn/video-minimal.js +25 -0
  29. package/cdn/video-minimal.js.map +1 -0
  30. package/cdn/video.css +1 -0
  31. package/cdn/video.dev.js +5782 -0
  32. package/cdn/video.dev.js.map +1 -0
  33. package/cdn/video.js +25 -0
  34. package/cdn/video.js.map +1 -0
  35. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +6 -0
  36. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -0
  37. package/dist/default/_virtual/inline-css_src/define/audio/skin.js +6 -0
  38. package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -0
  39. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +6 -0
  40. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -0
  41. package/dist/default/_virtual/inline-css_src/define/video/skin.js +6 -0
  42. package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -0
  43. package/dist/default/define/audio/minimal-skin.css +630 -5
  44. package/dist/default/define/audio/minimal-skin.js +19 -9
  45. package/dist/default/define/audio/minimal-skin.js.map +1 -1
  46. package/dist/default/define/audio/minimal-skin.tailwind.js +41 -0
  47. package/dist/default/define/audio/minimal-skin.tailwind.js.map +1 -0
  48. package/dist/default/define/audio/skin.css +655 -6
  49. package/dist/default/define/audio/skin.js +19 -9
  50. package/dist/default/define/audio/skin.js.map +1 -1
  51. package/dist/default/define/audio/skin.tailwind.js +40 -0
  52. package/dist/default/define/audio/skin.tailwind.js.map +1 -0
  53. package/dist/default/define/background/skin.js +1 -5
  54. package/dist/default/define/background/skin.js.map +1 -1
  55. package/dist/default/define/media/simple-hls-video.js +13 -0
  56. package/dist/default/define/media/simple-hls-video.js.map +1 -0
  57. package/dist/default/define/skin-mixin.js +39 -19
  58. package/dist/default/define/skin-mixin.js.map +1 -1
  59. package/dist/default/define/video/minimal-skin.css +353 -234
  60. package/dist/default/define/video/minimal-skin.js +7 -98
  61. package/dist/default/define/video/minimal-skin.js.map +1 -1
  62. package/dist/default/define/video/minimal-skin.tailwind.js +15 -99
  63. package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
  64. package/dist/default/define/video/skin.css +381 -259
  65. package/dist/default/define/video/skin.js +8 -92
  66. package/dist/default/define/video/skin.js.map +1 -1
  67. package/dist/default/define/video/skin.tailwind.js +12 -92
  68. package/dist/default/define/video/skin.tailwind.js.map +1 -1
  69. package/dist/default/icons/dist/render/default/index.js +13 -13
  70. package/dist/default/icons/dist/render/default/index.js.map +1 -1
  71. package/dist/default/icons/dist/render/minimal/index.js +13 -13
  72. package/dist/default/icons/dist/render/minimal/index.js.map +1 -1
  73. package/dist/default/media/background-video/index.js +1 -18
  74. package/dist/default/media/background-video/index.js.map +1 -1
  75. package/dist/default/media/simple-hls-video/index.js +21 -0
  76. package/dist/default/media/simple-hls-video/index.js.map +1 -0
  77. package/dist/default/player/create-player.js.map +1 -1
  78. package/dist/default/presets/audio.js +3 -1
  79. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +58 -0
  80. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -0
  81. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js +9 -0
  82. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js.map +1 -0
  83. package/dist/default/skins/dist/default/default/tailwind/components/button.js +12 -0
  84. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -0
  85. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +8 -0
  86. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -0
  87. package/dist/default/skins/dist/default/default/tailwind/components/error.js +15 -0
  88. package/dist/default/skins/dist/default/default/tailwind/components/error.js.map +1 -0
  89. package/dist/default/skins/dist/default/default/tailwind/components/icon-state.js +29 -0
  90. package/dist/default/skins/dist/default/default/tailwind/components/icon-state.js.map +1 -0
  91. package/dist/default/skins/dist/default/default/tailwind/components/icon.js +10 -0
  92. package/dist/default/skins/dist/default/default/tailwind/components/icon.js.map +1 -0
  93. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +8 -0
  94. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -0
  95. package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js +6 -0
  96. package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -0
  97. package/dist/default/skins/dist/default/default/tailwind/components/popup.js +13 -0
  98. package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -0
  99. package/dist/default/skins/dist/default/default/tailwind/components/root.js +8 -0
  100. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -0
  101. package/dist/default/skins/dist/default/default/tailwind/components/seek.js +11 -0
  102. package/dist/default/skins/dist/default/default/tailwind/components/seek.js.map +1 -0
  103. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +21 -0
  104. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -0
  105. package/dist/default/skins/dist/default/default/tailwind/components/surface.js +8 -0
  106. package/dist/default/skins/dist/default/default/tailwind/components/surface.js.map +1 -0
  107. package/dist/default/skins/dist/default/default/tailwind/components/time.js +10 -0
  108. package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -0
  109. package/dist/default/skins/dist/default/default/tailwind/components/tooltip-state.js +28 -0
  110. package/dist/default/skins/dist/default/default/tailwind/components/tooltip-state.js.map +1 -0
  111. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +55 -0
  112. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -0
  113. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +44 -0
  114. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -0
  115. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js +6 -0
  116. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -0
  117. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js +8 -0
  118. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -0
  119. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +12 -0
  120. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -0
  121. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +8 -0
  122. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -0
  123. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +15 -0
  124. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +1 -0
  125. package/dist/default/skins/dist/default/minimal/tailwind/components/icon-state.js +29 -0
  126. package/dist/default/skins/dist/default/minimal/tailwind/components/icon-state.js.map +1 -0
  127. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js +10 -0
  128. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -0
  129. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +8 -0
  130. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -0
  131. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +12 -0
  132. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -0
  133. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +8 -0
  134. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -0
  135. package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js +11 -0
  136. package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -0
  137. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +20 -0
  138. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -0
  139. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +14 -0
  140. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -0
  141. package/dist/default/skins/dist/default/minimal/tailwind/components/tooltip-state.js +28 -0
  142. package/dist/default/skins/dist/default/minimal/tailwind/components/tooltip-state.js.map +1 -0
  143. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +44 -0
  144. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -0
  145. package/dist/default/store/container-mixin.js +17 -3
  146. package/dist/default/store/container-mixin.js.map +1 -1
  147. package/dist/default/ui/popover/popover-element.js +3 -1
  148. package/dist/default/ui/popover/popover-element.js.map +1 -1
  149. package/dist/default/ui/slider/slider-element.js +3 -3
  150. package/dist/default/ui/slider/slider-element.js.map +1 -1
  151. package/dist/default/ui/time-slider/time-slider-element.js +3 -3
  152. package/dist/default/ui/time-slider/time-slider-element.js.map +1 -1
  153. package/dist/default/ui/tooltip/tooltip-element.js +3 -1
  154. package/dist/default/ui/tooltip/tooltip-element.js.map +1 -1
  155. package/dist/default/ui/volume-slider/volume-slider-element.js +3 -3
  156. package/dist/default/ui/volume-slider/volume-slider-element.js.map +1 -1
  157. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +6 -0
  158. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -0
  159. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +6 -0
  160. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -0
  161. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +6 -0
  162. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -0
  163. package/dist/dev/_virtual/inline-css_src/define/video/skin.js +6 -0
  164. package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -0
  165. package/dist/dev/define/audio/minimal-skin.css +630 -5
  166. package/dist/dev/define/audio/minimal-skin.d.ts +6 -2
  167. package/dist/dev/define/audio/minimal-skin.d.ts.map +1 -1
  168. package/dist/dev/define/audio/minimal-skin.js +97 -9
  169. package/dist/dev/define/audio/minimal-skin.js.map +1 -1
  170. package/dist/dev/define/audio/minimal-skin.tailwind.d.ts +20 -0
  171. package/dist/dev/define/audio/minimal-skin.tailwind.d.ts.map +1 -0
  172. package/dist/dev/define/audio/minimal-skin.tailwind.js +121 -0
  173. package/dist/dev/define/audio/minimal-skin.tailwind.js.map +1 -0
  174. package/dist/dev/define/audio/player.d.ts +0 -1
  175. package/dist/dev/define/audio/player.d.ts.map +1 -1
  176. package/dist/dev/define/audio/skin.css +655 -6
  177. package/dist/dev/define/audio/skin.d.ts +6 -2
  178. package/dist/dev/define/audio/skin.d.ts.map +1 -1
  179. package/dist/dev/define/audio/skin.js +88 -9
  180. package/dist/dev/define/audio/skin.js.map +1 -1
  181. package/dist/dev/define/audio/skin.tailwind.d.ts +20 -0
  182. package/dist/dev/define/audio/skin.tailwind.d.ts.map +1 -0
  183. package/dist/dev/define/audio/skin.tailwind.js +111 -0
  184. package/dist/dev/define/audio/skin.tailwind.js.map +1 -0
  185. package/dist/dev/define/background/player.d.ts +0 -1
  186. package/dist/dev/define/background/player.d.ts.map +1 -1
  187. package/dist/dev/define/media/simple-hls-video.d.ts +14 -0
  188. package/dist/dev/define/media/simple-hls-video.d.ts.map +1 -0
  189. package/dist/dev/define/media/simple-hls-video.js +13 -0
  190. package/dist/dev/define/media/simple-hls-video.js.map +1 -0
  191. package/dist/dev/define/skin-mixin.d.ts +12 -4
  192. package/dist/dev/define/skin-mixin.d.ts.map +1 -1
  193. package/dist/dev/define/skin-mixin.js +53 -19
  194. package/dist/dev/define/skin-mixin.js.map +1 -1
  195. package/dist/dev/define/video/minimal-skin.css +353 -234
  196. package/dist/dev/define/video/minimal-skin.d.ts +5 -14
  197. package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
  198. package/dist/dev/define/video/minimal-skin.js +46 -17
  199. package/dist/dev/define/video/minimal-skin.js.map +1 -1
  200. package/dist/dev/define/video/minimal-skin.tailwind.d.ts +4 -14
  201. package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
  202. package/dist/dev/define/video/minimal-skin.tailwind.js +77 -31
  203. package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
  204. package/dist/dev/define/video/player.d.ts +0 -1
  205. package/dist/dev/define/video/player.d.ts.map +1 -1
  206. package/dist/dev/define/video/skin.css +381 -259
  207. package/dist/dev/define/video/skin.d.ts +5 -14
  208. package/dist/dev/define/video/skin.d.ts.map +1 -1
  209. package/dist/dev/define/video/skin.js +46 -15
  210. package/dist/dev/define/video/skin.js.map +1 -1
  211. package/dist/dev/define/video/skin.tailwind.d.ts +4 -14
  212. package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
  213. package/dist/dev/define/video/skin.tailwind.js +71 -28
  214. package/dist/dev/define/video/skin.tailwind.js.map +1 -1
  215. package/dist/dev/icons/dist/render/default/index.js +13 -13
  216. package/dist/dev/icons/dist/render/default/index.js.map +1 -1
  217. package/dist/dev/icons/dist/render/minimal/index.js +13 -13
  218. package/dist/dev/icons/dist/render/minimal/index.js.map +1 -1
  219. package/dist/dev/index.d.ts +2 -2
  220. package/dist/dev/media/container-element.d.ts +0 -1
  221. package/dist/dev/media/container-element.d.ts.map +1 -1
  222. package/dist/dev/media/simple-hls-video/index.d.ts +11 -0
  223. package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -0
  224. package/dist/dev/media/simple-hls-video/index.js +21 -0
  225. package/dist/dev/media/simple-hls-video/index.js.map +1 -0
  226. package/dist/dev/player/create-player.d.ts +1 -1
  227. package/dist/dev/player/create-player.js.map +1 -1
  228. package/dist/dev/presets/audio.d.ts +3 -1
  229. package/dist/dev/presets/audio.js +3 -1
  230. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +58 -0
  231. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -0
  232. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js +9 -0
  233. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js.map +1 -0
  234. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +12 -0
  235. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -0
  236. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +8 -0
  237. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -0
  238. package/dist/dev/skins/dist/default/default/tailwind/components/error.js +15 -0
  239. package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +1 -0
  240. package/dist/dev/skins/dist/default/default/tailwind/components/icon-state.js +29 -0
  241. package/dist/dev/skins/dist/default/default/tailwind/components/icon-state.js.map +1 -0
  242. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js +10 -0
  243. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js.map +1 -0
  244. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +8 -0
  245. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -0
  246. package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js +6 -0
  247. package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -0
  248. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +13 -0
  249. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -0
  250. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +8 -0
  251. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -0
  252. package/dist/dev/skins/dist/default/default/tailwind/components/seek.js +11 -0
  253. package/dist/dev/skins/dist/default/default/tailwind/components/seek.js.map +1 -0
  254. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +21 -0
  255. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -0
  256. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js +8 -0
  257. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js.map +1 -0
  258. package/dist/dev/skins/dist/default/default/tailwind/components/time.js +10 -0
  259. package/dist/dev/skins/dist/default/default/tailwind/components/time.js.map +1 -0
  260. package/dist/dev/skins/dist/default/default/tailwind/components/tooltip-state.js +28 -0
  261. package/dist/dev/skins/dist/default/default/tailwind/components/tooltip-state.js.map +1 -0
  262. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +55 -0
  263. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -0
  264. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +44 -0
  265. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -0
  266. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js +6 -0
  267. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -0
  268. package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js +8 -0
  269. package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -0
  270. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +12 -0
  271. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -0
  272. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +8 -0
  273. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -0
  274. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +15 -0
  275. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +1 -0
  276. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js +29 -0
  277. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js.map +1 -0
  278. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js +10 -0
  279. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -0
  280. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +8 -0
  281. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -0
  282. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +12 -0
  283. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -0
  284. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +8 -0
  285. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +1 -0
  286. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js +11 -0
  287. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -0
  288. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +20 -0
  289. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -0
  290. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +14 -0
  291. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -0
  292. package/dist/dev/skins/dist/default/minimal/tailwind/components/tooltip-state.js +28 -0
  293. package/dist/dev/skins/dist/default/minimal/tailwind/components/tooltip-state.js.map +1 -0
  294. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +44 -0
  295. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -0
  296. package/dist/dev/store/container-mixin.d.ts +1 -1
  297. package/dist/dev/store/container-mixin.js +17 -3
  298. package/dist/dev/store/container-mixin.js.map +1 -1
  299. package/dist/dev/store/provider-mixin.d.ts +1 -1
  300. package/dist/dev/ui/popover/popover-element.js +3 -1
  301. package/dist/dev/ui/popover/popover-element.js.map +1 -1
  302. package/dist/dev/ui/slider/slider-element.d.ts.map +1 -1
  303. package/dist/dev/ui/slider/slider-element.js +3 -3
  304. package/dist/dev/ui/slider/slider-element.js.map +1 -1
  305. package/dist/dev/ui/time-slider/time-slider-element.d.ts.map +1 -1
  306. package/dist/dev/ui/time-slider/time-slider-element.js +3 -3
  307. package/dist/dev/ui/time-slider/time-slider-element.js.map +1 -1
  308. package/dist/dev/ui/tooltip/tooltip-element.js +3 -1
  309. package/dist/dev/ui/tooltip/tooltip-element.js.map +1 -1
  310. package/dist/dev/ui/volume-slider/volume-slider-element.d.ts.map +1 -1
  311. package/dist/dev/ui/volume-slider/volume-slider-element.js +3 -3
  312. package/dist/dev/ui/volume-slider/volume-slider-element.js.map +1 -1
  313. package/package.json +11 -8
  314. package/dist/default/skins/dist/default/video/default.tailwind.js +0 -90
  315. package/dist/default/skins/dist/default/video/default.tailwind.js.map +0 -1
  316. package/dist/default/skins/dist/default/video/minimal.tailwind.js +0 -86
  317. package/dist/default/skins/dist/default/video/minimal.tailwind.js.map +0 -1
  318. package/dist/dev/skins/dist/default/video/default.tailwind.js +0 -90
  319. package/dist/dev/skins/dist/default/video/default.tailwind.js.map +0 -1
  320. package/dist/dev/skins/dist/default/video/minimal.tailwind.js +0 -86
  321. package/dist/dev/skins/dist/default/video/minimal.tailwind.js.map +0 -1
@@ -1,23 +1,14 @@
1
- import "../media/container.js";
2
- import "../ui/buffering-indicator.js";
3
- import "../ui/controls.js";
4
- import "../ui/fullscreen-button.js";
5
- import "../ui/mute-button.js";
6
- import "../ui/pip-button.js";
7
- import "../ui/play-button.js";
8
- import "../ui/playback-rate-button.js";
9
- import "../ui/popover.js";
10
- import "../ui/seek-button.js";
11
- import "../ui/time-slider.js";
12
- import "../ui/time.js";
13
- import "../ui/volume-slider.js";
14
1
  import { ReactiveElement } from "@videojs/element";
15
2
 
16
3
  //#region src/define/video/skin.d.ts
17
4
  declare function getTemplateHTML(): string;
18
- declare const VideoSkinElement_base: typeof ReactiveElement;
5
+ declare const VideoSkinElement_base: typeof ReactiveElement & {
6
+ shadowRootOptions: ShadowRootInit;
7
+ styles?: CSSStyleSheet;
8
+ };
19
9
  declare class VideoSkinElement extends VideoSkinElement_base {
20
10
  static readonly tagName = "video-skin";
11
+ static styles: CSSStyleSheet;
21
12
  static getTemplateHTML: typeof getTemplateHTML;
22
13
  }
23
14
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"skin.d.ts","names":[],"sources":["../../../../src/define/video/skin.ts"],"mappings":";;;;;;;;;;;;;;;;iBAqBS,eAAA,CAAA;AAAA,cAAe,qBAAA;cA8FX,gBAAA,SAAyB,qBAAA;EAAA,gBACpB,OAAA;EAAA,OACT,eAAA,SAAe,eAAA;AAAA;AAAA,QAKhB,MAAA;EAAA,UACI,qBAAA;IAAA,CACP,gBAAA,CAAiB,OAAA,GAAU,gBAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"skin.d.ts","names":[],"sources":["../../../../src/define/video/skin.ts"],"mappings":";;;iBAwBS,eAAA,CAAA;AAAA,cAAe,qBAAA;;;;cAuHX,gBAAA,SAAyB,qBAAA;EAAA,gBACpB,OAAA;EAAA,OACT,MAAA,EAAM,aAAA;EAAA,OACN,eAAA,SAAe,eAAA;AAAA;AAAA,QAKhB,MAAA;EAAA,UACI,qBAAA;IAAA,CACP,gBAAA,CAAiB,OAAA,GAAU,gBAAA;EAAA;AAAA"}
@@ -1,6 +1,7 @@
1
- import { SkinMixin } from "../skin-mixin.js";
1
+ import { SkinMixin, createStyles } from "../skin-mixin.js";
2
2
  import "../media/container.js";
3
3
  import "../ui/buffering-indicator.js";
4
+ import "../ui/captions-button.js";
4
5
  import "../ui/controls.js";
5
6
  import "../ui/fullscreen-button.js";
6
7
  import "../ui/mute-button.js";
@@ -11,15 +12,19 @@ import "../ui/popover.js";
11
12
  import "../ui/seek-button.js";
12
13
  import "../ui/time.js";
13
14
  import "../ui/time-slider.js";
15
+ import "../ui/tooltip.js";
14
16
  import "../ui/volume-slider.js";
15
17
  import { renderIcon } from "../../icons/dist/render/default/index.js";
18
+ import skin_default from "../../_virtual/inline-css_src/define/video/skin.js";
16
19
  import { ReactiveElement } from "@videojs/element";
17
20
 
18
21
  //#region src/define/video/skin.ts
19
22
  const SEEK_TIME = 10;
20
23
  function getTemplateHTML() {
21
24
  return `
22
- <media-container class="media-default-skin">
25
+ <media-container class="media-default-skin media-default-skin--video">
26
+ <slot name="media"></slot>
27
+
23
28
  <media-buffering-indicator class="media-buffering-indicator">
24
29
  <div class="media-surface">
25
30
  ${renderIcon("spinner", { class: "media-icon" })}
@@ -39,25 +44,36 @@ function getTemplateHTML() {
39
44
  </div>-->
40
45
 
41
46
  <media-controls class="media-surface media-controls">
42
- <media-play-button class="media-button media-button--icon media-button--play">
47
+ <media-play-button commandfor="play-tooltip" class="media-button media-button--icon media-button--play">
43
48
  ${renderIcon("restart", { class: "media-icon media-icon--restart" })}
44
49
  ${renderIcon("play", { class: "media-icon media-icon--play" })}
45
50
  ${renderIcon("pause", { class: "media-icon media-icon--pause" })}
46
51
  </media-play-button>
52
+ <media-tooltip id="play-tooltip" side="top" class="media-surface media-tooltip">
53
+ <span class="media-tooltip-label media-tooltip-label--replay">Replay</span>
54
+ <span class="media-tooltip-label media-tooltip-label--play">Play</span>
55
+ <span class="media-tooltip-label media-tooltip-label--pause">Pause</span>
56
+ </media-tooltip>
47
57
 
48
- <media-seek-button seconds="${-SEEK_TIME}" class="media-button media-button--icon media-button--seek">
58
+ <media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="media-button media-button--icon media-button--seek">
49
59
  <span class="media-icon__container">
50
60
  ${renderIcon("seek", { class: "media-icon media-icon--flipped" })}
51
61
  <span class="media-icon__label">${SEEK_TIME}</span>
52
62
  </span>
53
63
  </media-seek-button>
64
+ <media-tooltip id="seek-backward-tooltip" side="top" class="media-surface media-tooltip">
65
+ Seek backward ${SEEK_TIME} seconds
66
+ </media-tooltip>
54
67
 
55
- <media-seek-button seconds="${SEEK_TIME}" class="media-button media-button--icon media-button--seek">
68
+ <media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="media-button media-button--icon media-button--seek">
56
69
  <span class="media-icon__container">
57
70
  ${renderIcon("seek", { class: "media-icon" })}
58
71
  <span class="media-icon__label">${SEEK_TIME}</span>
59
72
  </span>
60
73
  </media-seek-button>
74
+ <media-tooltip id="seek-forward-tooltip" side="top" class="media-surface media-tooltip">
75
+ Seek forward ${SEEK_TIME} seconds
76
+ </media-tooltip>
61
77
 
62
78
  <media-time-group class="media-time">
63
79
  <media-time type="current" class="media-time__value"></media-time>
@@ -71,16 +87,18 @@ function getTemplateHTML() {
71
87
  <media-time type="duration" class="media-time__value"></media-time>
72
88
  </media-time-group>
73
89
 
74
- <media-playback-rate-button class="media-button media-button--icon media-button--playback-rate">
75
- </media-playback-rate-button>
90
+ <media-playback-rate-button commandfor="playback-rate-tooltip" class="media-button media-button--icon media-button--playback-rate"></media-playback-rate-button>
91
+ <media-tooltip id="playback-rate-tooltip" side="top" class="media-surface media-tooltip">
92
+ Toggle playback rate
93
+ </media-tooltip>
76
94
 
77
- <media-mute-button commandfor="volume-popover" class="media-button media-button--icon media-button--mute">
95
+ <media-mute-button commandfor="video-volume-popover" class="media-button media-button--icon media-button--mute">
78
96
  ${renderIcon("volume-off", { class: "media-icon media-icon--volume-off" })}
79
97
  ${renderIcon("volume-low", { class: "media-icon media-icon--volume-low" })}
80
98
  ${renderIcon("volume-high", { class: "media-icon media-icon--volume-high" })}
81
99
  </media-mute-button>
82
100
 
83
- <media-popover id="volume-popover" open-on-hover delay="200" close-delay="100" side="top" class="media-surface media-popup media-popup--volume media-popup-animation">
101
+ <media-popover id="video-volume-popover" open-on-hover delay="200" close-delay="100" side="top" class="media-surface media-popover media-popover--volume">
84
102
  <media-volume-slider class="media-slider" orientation="vertical" thumb-alignment="edge">
85
103
  <media-slider-track class="media-slider__track">
86
104
  <media-slider-fill class="media-slider__fill"></media-slider-fill>
@@ -89,24 +107,34 @@ function getTemplateHTML() {
89
107
  </media-volume-slider>
90
108
  </media-popover>
91
109
 
92
- <!--<button type="button" class="media-button media-button--icon media-button--captions" aria-label="Captions">
110
+ <media-captions-button commandfor="captions-tooltip" class="media-button media-button--icon media-button--captions">
93
111
  ${renderIcon("captions-off", { class: "media-icon media-icon--captions-off" })}
94
112
  ${renderIcon("captions-on", { class: "media-icon media-icon--captions-on" })}
95
- </button>-->
113
+ </media-captions-button>
114
+ <media-tooltip id="captions-tooltip" side="top" class="media-surface media-tooltip">
115
+ <span class="media-tooltip-label media-tooltip-label--enable-captions">Enable captions</span>
116
+ <span class="media-tooltip-label media-tooltip-label--disable-captions">Disable captions</span>
117
+ </media-tooltip>
96
118
 
97
- <media-pip-button class="media-button media-button--icon">
119
+ <media-pip-button commandfor="pip-tooltip" class="media-button media-button--icon">
98
120
  ${renderIcon("pip", { class: "media-icon" })}
99
121
  </media-pip-button>
122
+ <media-tooltip id="pip-tooltip" side="top" class="media-surface media-tooltip">
123
+ <span class="media-tooltip-label media-tooltip-label--enter-pip">Enter picture-in-picture</span>
124
+ <span class="media-tooltip-label media-tooltip-label--exit-pip">Exit picture-in-picture</span>
125
+ </media-tooltip>
100
126
 
101
- <media-fullscreen-button class="media-button media-button--icon media-button--fullscreen">
127
+ <media-fullscreen-button commandfor="fullscreen-tooltip" class="media-button media-button--icon media-button--fullscreen">
102
128
  ${renderIcon("fullscreen-enter", { class: "media-icon media-icon--fullscreen-enter" })}
103
129
  ${renderIcon("fullscreen-exit", { class: "media-icon media-icon--fullscreen-exit" })}
104
130
  </media-fullscreen-button>
131
+ <media-tooltip id="fullscreen-tooltip" side="top" class="media-surface media-tooltip">
132
+ <span class="media-tooltip-label media-tooltip-label--enter-fullscreen">Enter fullscreen</span>
133
+ <span class="media-tooltip-label media-tooltip-label--exit-fullscreen">Exit fullscreen</span>
134
+ </media-tooltip>
105
135
  </media-controls>
106
136
 
107
137
  <div class="media-overlay"></div>
108
-
109
- <slot name="media"></slot>
110
138
  </media-container>
111
139
  `;
112
140
  }
@@ -114,6 +142,9 @@ var VideoSkinElement = class extends SkinMixin(ReactiveElement) {
114
142
  static {
115
143
  this.tagName = "video-skin";
116
144
  }
145
+ static {
146
+ this.styles = createStyles(skin_default);
147
+ }
117
148
  static {
118
149
  this.getTemplateHTML = getTemplateHTML;
119
150
  }
@@ -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 { 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/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/volume-slider';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"media-default-skin\">\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 <!--<div class=\"media-error\" role=\"alertdialog\" aria-labelledby=\"media-error-title\" aria-describedby=\"media-error-description\">\n <div class=\"media-error__dialog media-surface\">\n <div class=\"media-error__content\">\n <p id=\"media-error-title\" class=\"media-error__title\">Something went wrong.</p>\n <p id=\"media-error-description\" class=\"media-error__description\">An error occurred while trying to play the video. Please try again.</p>\n </div>\n <div class=\"media-error__actions\">\n <button type=\"button\" class=\"media-button\">OK</button>\n </div>\n </div>\n </div>-->\n\n <media-controls class=\"media-surface media-controls\">\n <media-play-button 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\n <media-seek-button 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\n <media-seek-button 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\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 </media-time-slider>\n <media-time type=\"duration\" class=\"media-time__value\"></media-time>\n </media-time-group>\n\n <media-playback-rate-button class=\"media-button media-button--icon media-button--playback-rate\">\n </media-playback-rate-button>\n\n <media-mute-button commandfor=\"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=\"volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"top\" class=\"media-surface media-popup media-popup--volume media-popup-animation\">\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 <!--<button type=\"button\" class=\"media-button media-button--icon media-button--captions\" aria-label=\"Captions\">\n ${renderIcon('captions-off', { class: 'media-icon media-icon--captions-off' })}\n ${renderIcon('captions-on', { class: 'media-icon media-icon--captions-on' })}\n </button>-->\n\n <media-pip-button class=\"media-button media-button--icon\">\n ${renderIcon('pip', { class: 'media-icon' })}\n </media-pip-button>\n\n <media-fullscreen-button 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-controls>\n\n <div class=\"media-overlay\"></div>\n\n <slot name=\"media\"></slot>\n </media-container>\n `;\n}\n\nexport class VideoSkinElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'video-skin';\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":";;;;;;;;;;;;;;;;;;AAmBA,MAAM,YAAY;AAElB,SAAS,kBAAkB;AACzB,QAAgB;;;;YAIN,WAAW,WAAW,EAAE,OAAO,cAAc,CAAC,CAAC;;;;;;;;;;;;;;;;;;YAkB/C,WAAW,WAAW,EAAE,OAAO,kCAAkC,CAAC,CAAC;YACnE,WAAW,QAAQ,EAAE,OAAO,+BAA+B,CAAC,CAAC;YAC7D,WAAW,SAAS,EAAE,OAAO,gCAAgC,CAAC,CAAC;;;sCAGrC,CAAC,UAAU;;cAEnC,WAAW,QAAQ,EAAE,OAAO,kCAAkC,CAAC,CAAC;8CAChC,UAAU;;;;sCAIlB,UAAU;;cAElC,WAAW,QAAQ,EAAE,OAAO,cAAc,CAAC,CAAC;8CACZ,UAAU;;;;;;;;;;;;;;;;;;;;YAoB5C,WAAW,cAAc,EAAE,OAAO,qCAAqC,CAAC,CAAC;YACzE,WAAW,cAAc,EAAE,OAAO,qCAAqC,CAAC,CAAC;YACzE,WAAW,eAAe,EAAE,OAAO,sCAAsC,CAAC,CAAC;;;;;;;;;;;;;YAa3E,WAAW,gBAAgB,EAAE,OAAO,uCAAuC,CAAC,CAAC;YAC7E,WAAW,eAAe,EAAE,OAAO,sCAAsC,CAAC,CAAC;;;;YAI3E,WAAW,OAAO,EAAE,OAAO,cAAc,CAAC,CAAC;;;;YAI3C,WAAW,oBAAoB,EAAE,OAAO,2CAA2C,CAAC,CAAC;YACrF,WAAW,mBAAmB,EAAE,OAAO,0CAA0C,CAAC,CAAC;;;;;;;;;;AAW/F,IAAa,mBAAb,cAAsC,UAAU,gBAAgB,CAAC;;iBACrC;;;yBACD;;;AAG3B,eAAe,OAAO,iBAAiB,SAAS,iBAAiB"}
1
+ {"version":3,"file":"skin.js","names":["styles"],"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/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 <!--<div class=\"media-error\" role=\"alertdialog\" aria-labelledby=\"media-error-title\" aria-describedby=\"media-error-description\">\n <div class=\"media-error__dialog media-surface\">\n <div class=\"media-error__content\">\n <p id=\"media-error-title\" class=\"media-error__title\">Something went wrong.</p>\n <p id=\"media-error-description\" class=\"media-error__description\">An error occurred while trying to play the video. Please try again.</p>\n </div>\n <div class=\"media-error__actions\">\n <button type=\"button\" class=\"media-button\">OK</button>\n </div>\n </div>\n </div>-->\n\n <media-controls class=\"media-surface media-controls\">\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 </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\">\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-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":";;;;;;;;;;;;;;;;;;;;;AAsBA,MAAM,YAAY;AAElB,SAAS,kBAAkB;AACzB,QAAgB;;;;;;YAMN,WAAW,WAAW,EAAE,OAAO,cAAc,CAAC,CAAC;;;;;;;;;;;;;;;;;;YAkB/C,WAAW,WAAW,EAAE,OAAO,kCAAkC,CAAC,CAAC;YACnE,WAAW,QAAQ,EAAE,OAAO,+BAA+B,CAAC,CAAC;YAC7D,WAAW,SAAS,EAAE,OAAO,gCAAgC,CAAC,CAAC;;;;;;;;yEAQF,CAAC,UAAU;;cAEtE,WAAW,QAAQ,EAAE,OAAO,kCAAkC,CAAC,CAAC;8CAChC,UAAU;;;;0BAI9B,UAAU;;;wEAGoC,UAAU;;cAEpE,WAAW,QAAQ,EAAE,OAAO,cAAc,CAAC,CAAC;8CACZ,UAAU;;;;yBAI/B,UAAU;;;;;;;;;;;;;;;;;;;;;YAqBvB,WAAW,cAAc,EAAE,OAAO,qCAAqC,CAAC,CAAC;YACzE,WAAW,cAAc,EAAE,OAAO,qCAAqC,CAAC,CAAC;YACzE,WAAW,eAAe,EAAE,OAAO,sCAAsC,CAAC,CAAC;;;;;;;;;;;;;YAa3E,WAAW,gBAAgB,EAAE,OAAO,uCAAuC,CAAC,CAAC;YAC7E,WAAW,eAAe,EAAE,OAAO,sCAAsC,CAAC,CAAC;;;;;;;;YAQ3E,WAAW,OAAO,EAAE,OAAO,cAAc,CAAC,CAAC;;;;;;;;YAQ3C,WAAW,oBAAoB,EAAE,OAAO,2CAA2C,CAAC,CAAC;YACrF,WAAW,mBAAmB,EAAE,OAAO,0CAA0C,CAAC,CAAC;;;;;;;;;;;;AAa/F,IAAa,mBAAb,cAAsC,UAAU,gBAAgB,CAAC;;iBACrC;;;gBACV,aAAaA,aAAO;;;yBACX;;;AAG3B,eAAe,OAAO,iBAAiB,SAAS,iBAAiB"}
@@ -1,21 +1,11 @@
1
- import "../media/container.js";
2
- import "../ui/buffering-indicator.js";
3
- import "../ui/controls.js";
4
- import "../ui/fullscreen-button.js";
5
- import "../ui/mute-button.js";
6
- import "../ui/pip-button.js";
7
- import "../ui/play-button.js";
8
- import "../ui/playback-rate-button.js";
9
- import "../ui/popover.js";
10
- import "../ui/seek-button.js";
11
- import "../ui/time-slider.js";
12
- import "../ui/time.js";
13
- import "../ui/volume-slider.js";
14
1
  import { ReactiveElement } from "@videojs/element";
15
2
 
16
3
  //#region src/define/video/skin.tailwind.d.ts
17
4
  declare function getTemplateHTML(): string;
18
- declare const VideoSkinTailwindElement_base: typeof ReactiveElement;
5
+ declare const VideoSkinTailwindElement_base: typeof ReactiveElement & {
6
+ shadowRootOptions: ShadowRootInit;
7
+ styles?: CSSStyleSheet;
8
+ };
19
9
  declare class VideoSkinTailwindElement extends VideoSkinTailwindElement_base {
20
10
  static readonly tagName = "video-skin-tailwind";
21
11
  static getTemplateHTML: typeof getTemplateHTML;
@@ -1 +1 @@
1
- {"version":3,"file":"skin.tailwind.d.ts","names":[],"sources":["../../../../src/define/video/skin.tailwind.ts"],"mappings":";;;;;;;;;;;;;;;;iBAuCS,eAAA,CAAA;AAAA,cAAe,6BAAA;cA8FX,wBAAA,SAAiC,6BAAA;EAAA,gBAC5B,OAAA;EAAA,OACT,eAAA,SAAe,eAAA;AAAA;AAAA,QAKhB,MAAA;EAAA,UACI,qBAAA;IAAA,CACP,wBAAA,CAAyB,OAAA,GAAU,wBAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"skin.tailwind.d.ts","names":[],"sources":["../../../../src/define/video/skin.tailwind.ts"],"mappings":";;;iBA0CS,eAAA,CAAA;AAAA,cAAe,6BAAA;;;;cA+HX,wBAAA,SAAiC,6BAAA;EAAA,gBAC5B,OAAA;EAAA,OACT,eAAA,SAAe,eAAA;AAAA;AAAA,QAKhB,MAAA;EAAA,UACI,qBAAA;IAAA,CACP,wBAAA,CAAyB,OAAA,GAAU,wBAAA;EAAA;AAAA"}
@@ -1,6 +1,7 @@
1
1
  import { SkinMixin } from "../skin-mixin.js";
2
2
  import "../media/container.js";
3
3
  import "../ui/buffering-indicator.js";
4
+ import "../ui/captions-button.js";
4
5
  import "../ui/controls.js";
5
6
  import "../ui/fullscreen-button.js";
6
7
  import "../ui/mute-button.js";
@@ -11,8 +12,17 @@ import "../ui/popover.js";
11
12
  import "../ui/seek-button.js";
12
13
  import "../ui/time.js";
13
14
  import "../ui/time-slider.js";
15
+ import "../ui/tooltip.js";
14
16
  import "../ui/volume-slider.js";
15
- import { bufferingIndicator, button, controls, error, icon, iconContainer, iconFlipped, iconState, overlay, playbackRate, popup, root, seek, slider, time } from "../../skins/dist/default/video/default.tailwind.js";
17
+ import { button } from "../../skins/dist/default/default/tailwind/components/button.js";
18
+ import { icon, iconContainer, iconFlipped } from "../../skins/dist/default/default/tailwind/components/icon.js";
19
+ import { playbackRate } from "../../skins/dist/default/default/tailwind/components/playback-rate.js";
20
+ import { seek } from "../../skins/dist/default/default/tailwind/components/seek.js";
21
+ import { time } from "../../skins/dist/default/default/tailwind/components/time.js";
22
+ import { iconState } from "../../skins/dist/default/default/tailwind/components/icon-state.js";
23
+ import { overlay } from "../../skins/dist/default/default/tailwind/components/overlay.js";
24
+ import { tooltipState } from "../../skins/dist/default/default/tailwind/components/tooltip-state.js";
25
+ import { bufferingIndicator, controls, error, popup, root, slider } from "../../skins/dist/default/default/tailwind/video.tailwind.js";
16
26
  import { renderIcon } from "../../icons/dist/render/default/index.js";
17
27
  import { ReactiveElement } from "@videojs/element";
18
28
  import { cn } from "@videojs/utils/style";
@@ -21,14 +31,16 @@ import { cn } from "@videojs/utils/style";
21
31
  const SEEK_TIME = 10;
22
32
  function getTemplateHTML() {
23
33
  return `
24
- <media-container class="${root}">
34
+ <media-container class="${root(true)}">
35
+ <slot name="media"></slot>
36
+
25
37
  <media-buffering-indicator class="${bufferingIndicator.root}">
26
38
  <div class="${bufferingIndicator.container}">
27
39
  ${renderIcon("spinner")}
28
40
  </div>
29
41
  </media-buffering-indicator>
30
42
 
31
- <div class="${error.root}" role="alertdialog" aria-labelledby="media-error-title" aria-describedby="media-error-description">
43
+ <!--<div class="${error.root}" role="alertdialog" aria-labelledby="media-error-title" aria-describedby="media-error-description">
32
44
  <div class="${error.dialog}">
33
45
  <div class="${error.content}">
34
46
  <p id="media-error-title" class="${error.title}">Something went wrong.</p>
@@ -38,28 +50,41 @@ function getTemplateHTML() {
38
50
  <button type="button" class="${cn(button.base, button.default)}">OK</button>
39
51
  </div>
40
52
  </div>
41
- </div>
53
+ </div>-->
42
54
 
43
55
  <media-controls data-controls="" class="${controls}">
44
- <media-play-button class="${cn(button.base, button.icon, iconState.play.button)}">
45
- ${renderIcon("restart", { class: cn(icon, iconState.play.restart) })}
46
- ${renderIcon("play", { class: cn(icon, iconState.play.play) })}
47
- ${renderIcon("pause", { class: cn(icon, iconState.play.pause) })}
48
- </media-play-button>
56
+ <span class="${tooltipState.play.wrapper}">
57
+ <media-play-button commandfor="play-tooltip" class="${cn(button.base, button.icon, iconState.play.button)}">
58
+ ${renderIcon("restart", { class: cn(icon, iconState.play.restart) })}
59
+ ${renderIcon("play", { class: cn(icon, iconState.play.play) })}
60
+ ${renderIcon("pause", { class: cn(icon, iconState.play.pause) })}
61
+ </media-play-button>
62
+ <media-tooltip id="play-tooltip" side="top" class="${cn(popup.tooltip)}">
63
+ <span class="${tooltipState.play.replay}">Replay</span>
64
+ <span class="${tooltipState.play.play}">Play</span>
65
+ <span class="${tooltipState.play.pause}">Pause</span>
66
+ </media-tooltip>
67
+ </span>
49
68
 
50
- <media-seek-button seconds="${-SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}">
69
+ <media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}">
51
70
  <span class="${iconContainer}">
52
71
  ${renderIcon("seek", { class: cn(icon, iconFlipped) })}
53
72
  <span class="${cn(seek.label, seek.labelBackward)}">${SEEK_TIME}</span>
54
73
  </span>
55
74
  </media-seek-button>
75
+ <media-tooltip id="seek-backward-tooltip" side="top" class="${cn(popup.tooltip)}">
76
+ Seek backward ${SEEK_TIME} seconds
77
+ </media-tooltip>
56
78
 
57
- <media-seek-button seconds="${SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}">
79
+ <media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}">
58
80
  <span class="${iconContainer}">
59
81
  ${renderIcon("seek", { class: icon })}
60
82
  <span class="${cn(seek.label, seek.labelForward)}">${SEEK_TIME}</span>
61
83
  </span>
62
84
  </media-seek-button>
85
+ <media-tooltip id="seek-forward-tooltip" side="top" class="${cn(popup.tooltip)}">
86
+ Seek forward ${SEEK_TIME} seconds
87
+ </media-tooltip>
63
88
 
64
89
  <media-time-group class="${time.group}">
65
90
  <media-time type="current" class="${time.current}"></media-time>
@@ -73,16 +98,18 @@ function getTemplateHTML() {
73
98
  <media-time type="duration" class="${time.duration}"></media-time>
74
99
  </media-time-group>
75
100
 
76
- <media-playback-rate-button class="${cn(button.base, button.icon, playbackRate.button)}">
77
- </media-playback-rate-button>
101
+ <media-playback-rate-button commandfor="playback-rate-tooltip" class="${cn(button.base, button.icon, playbackRate.button)}"></media-playback-rate-button>
102
+ <media-tooltip id="playback-rate-tooltip" side="top" class="${cn(popup.tooltip)}">
103
+ Toggle playback rate
104
+ </media-tooltip>
78
105
 
79
- <media-mute-button commandfor="volume-popover" class="${cn(button.base, button.icon, iconState.mute.button)}">
106
+ <media-mute-button commandfor="video-volume-popover" class="${cn(button.base, button.icon, iconState.mute.button)}">
80
107
  ${renderIcon("volume-off", { class: cn(icon, iconState.mute.volumeOff) })}
81
108
  ${renderIcon("volume-low", { class: cn(icon, iconState.mute.volumeLow) })}
82
109
  ${renderIcon("volume-high", { class: cn(icon, iconState.mute.volumeHigh) })}
83
110
  </media-mute-button>
84
111
 
85
- <media-popover id="volume-popover" open-on-hover delay="200" close-delay="100" side="top" class="${cn(popup.base, popup.volume)}">
112
+ <media-popover id="video-volume-popover" open-on-hover delay="200" close-delay="100" side="top" class="${cn(popup.popover, popup.volume)}">
86
113
  <media-volume-slider class="${slider.root}" orientation="vertical" thumb-alignment="edge">
87
114
  <media-slider-track class="${slider.track}">
88
115
  <media-slider-fill class="${cn(slider.fill.base, slider.fill.fill)}"></media-slider-fill>
@@ -91,24 +118,40 @@ function getTemplateHTML() {
91
118
  </media-volume-slider>
92
119
  </media-popover>
93
120
 
94
- <!--<button type="button" class="${cn(button.base, button.icon)}" aria-label="Captions">
95
- ${renderIcon("captions-off", { class: icon })}
96
- ${renderIcon("captions-on", { class: icon })}
97
- </button>-->
121
+ <span class="${tooltipState.captions.wrapper}">
122
+ <media-captions-button commandfor="captions-tooltip" class="${cn(button.base, button.icon, iconState.captions.button)}">
123
+ ${renderIcon("captions-off", { class: cn(icon, iconState.captions.off) })}
124
+ ${renderIcon("captions-on", { class: cn(icon, iconState.captions.on) })}
125
+ </media-captions-button>
126
+ <media-tooltip id="captions-tooltip" side="top" class="${cn(popup.tooltip)}">
127
+ <span class="${tooltipState.captions.enable}">Enable captions</span>
128
+ <span class="${tooltipState.captions.disable}">Disable captions</span>
129
+ </media-tooltip>
130
+ </span>
98
131
 
99
- <media-pip-button class="${cn(button.base, button.icon)}">
100
- ${renderIcon("pip", { class: icon })}
101
- </media-pip-button>
132
+ <span class="${tooltipState.pip.wrapper}">
133
+ <media-pip-button commandfor="pip-tooltip" class="${cn(button.base, button.icon)}">
134
+ ${renderIcon("pip", { class: icon })}
135
+ </media-pip-button>
136
+ <media-tooltip id="pip-tooltip" side="top" class="${cn(popup.tooltip)}">
137
+ <span class="${tooltipState.pip.enter}">Enter picture-in-picture</span>
138
+ <span class="${tooltipState.pip.exit}">Exit picture-in-picture</span>
139
+ </media-tooltip>
140
+ </span>
102
141
 
103
- <media-fullscreen-button class="${cn(button.base, button.icon, iconState.fullscreen.button)}">
104
- ${renderIcon("fullscreen-enter", { class: cn(icon, iconState.fullscreen.enter) })}
105
- ${renderIcon("fullscreen-exit", { class: cn(icon, iconState.fullscreen.exit) })}
106
- </media-fullscreen-button>
142
+ <span class="${tooltipState.fullscreen.wrapper}">
143
+ <media-fullscreen-button commandfor="fullscreen-tooltip" class="${cn(button.base, button.icon, iconState.fullscreen.button)}">
144
+ ${renderIcon("fullscreen-enter", { class: cn(icon, iconState.fullscreen.enter) })}
145
+ ${renderIcon("fullscreen-exit", { class: cn(icon, iconState.fullscreen.exit) })}
146
+ </media-fullscreen-button>
147
+ <media-tooltip id="fullscreen-tooltip" side="top" class="${cn(popup.tooltip)}">
148
+ <span class="${tooltipState.fullscreen.enter}">Enter fullscreen</span>
149
+ <span class="${tooltipState.fullscreen.exit}">Exit fullscreen</span>
150
+ </media-tooltip>
151
+ </span>
107
152
  </media-controls>
108
153
 
109
154
  <div class="${overlay}"></div>
110
-
111
- <slot name="media"></slot>
112
155
  </media-container>
113
156
  `;
114
157
  }
@@ -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 error,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n overlay,\n playbackRate,\n popup,\n root,\n seek,\n slider,\n time,\n} from '@videojs/skins/video/default.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/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/volume-slider';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"${root}\">\n <media-buffering-indicator class=\"${bufferingIndicator.root}\">\n <div class=\"${bufferingIndicator.container}\">\n ${renderIcon('spinner')}\n </div>\n </media-buffering-indicator>\n\n <div class=\"${error.root}\" role=\"alertdialog\" aria-labelledby=\"media-error-title\" aria-describedby=\"media-error-description\">\n <div class=\"${error.dialog}\">\n <div class=\"${error.content}\">\n <p id=\"media-error-title\" class=\"${error.title}\">Something went wrong.</p>\n <p id=\"media-error-description\" class=\"${error.description}\">An error occurred while trying to play the video. Please try again.</p>\n </div>\n <div class=\"${error.actions}\">\n <button type=\"button\" class=\"${cn(button.base, button.default)}\">OK</button>\n </div>\n </div>\n </div>\n\n <media-controls data-controls=\"\" class=\"${controls}\">\n <media-play-button 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\n <media-seek-button 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\n <media-seek-button 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\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 </media-time-slider>\n <media-time type=\"duration\" class=\"${time.duration}\"></media-time>\n </media-time-group>\n\n <media-playback-rate-button class=\"${cn(button.base, button.icon, playbackRate.button)}\">\n </media-playback-rate-button>\n\n <media-mute-button commandfor=\"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=\"volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"top\" class=\"${cn(popup.base, 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 <!--<button type=\"button\" class=\"${cn(button.base, button.icon)}\" aria-label=\"Captions\">\n ${renderIcon('captions-off', { class: icon })}\n ${renderIcon('captions-on', { class: icon })}\n </button>-->\n\n <media-pip-button class=\"${cn(button.base, button.icon)}\">\n ${renderIcon('pip', { class: icon })}\n </media-pip-button>\n\n <media-fullscreen-button 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-controls>\n\n <div class=\"${overlay}\"></div>\n\n <slot name=\"media\"></slot>\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":";;;;;;;;;;;;;;;;;;;;AAqCA,MAAM,YAAY;AAElB,SAAS,kBAAkB;AACzB,QAAgB;8BACY,KAAK;0CACO,mBAAmB,KAAK;sBAC5C,mBAAmB,UAAU;YACvC,WAAW,UAAU,CAAC;;;;oBAId,MAAM,KAAK;sBACT,MAAM,OAAO;wBACX,MAAM,QAAQ;+CACS,MAAM,MAAM;qDACN,MAAM,YAAY;;wBAE/C,MAAM,QAAQ;2CACK,GAAG,OAAO,MAAM,OAAO,QAAQ,CAAC;;;;;gDAK3B,SAAS;oCACrB,GAAG,OAAO,MAAM,OAAO,MAAM,UAAU,KAAK,OAAO,CAAC;YAC5E,WAAW,WAAW,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,QAAQ,EAAE,CAAC,CAAC;YACnE,WAAW,QAAQ,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,KAAK,EAAE,CAAC,CAAC;YAC7D,WAAW,SAAS,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,MAAM,EAAE,CAAC,CAAC;;;sCAGrC,CAAC,UAAU,WAAW,GAAG,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,CAAC;yBAC7E,cAAc;cACzB,WAAW,QAAQ,EAAE,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC,CAAC;2BACxC,GAAG,KAAK,OAAO,KAAK,cAAc,CAAC,IAAI,UAAU;;;;sCAItC,UAAU,WAAW,GAAG,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,CAAC;yBAC5E,cAAc;cACzB,WAAW,QAAQ,EAAE,OAAO,MAAM,CAAC,CAAC;2BACvB,GAAG,KAAK,OAAO,KAAK,aAAa,CAAC,IAAI,UAAU;;;;mCAIxC,KAAK,MAAM;8CACA,KAAK,QAAQ;sCACrB,OAAO,KAAK;yCACT,OAAO,MAAM;0CACZ,GAAG,OAAO,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;4CACrC,GAAG,OAAO,KAAK,MAAM,OAAO,KAAK,OAAO,CAAC;;yCAE5C,GAAG,OAAO,MAAM,MAAM,OAAO,MAAM,YAAY,CAAC;;+CAE1C,KAAK,SAAS;;;6CAGhB,GAAG,OAAO,MAAM,OAAO,MAAM,aAAa,OAAO,CAAC;;;gEAG/B,GAAG,OAAO,MAAM,OAAO,MAAM,UAAU,KAAK,OAAO,CAAC;YACxG,WAAW,cAAc,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,UAAU,EAAE,CAAC,CAAC;YACxE,WAAW,cAAc,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,UAAU,EAAE,CAAC,CAAC;YACxE,WAAW,eAAe,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,WAAW,EAAE,CAAC,CAAC;;;2GAGqB,GAAG,MAAM,MAAM,MAAM,OAAO,CAAC;wCAChG,OAAO,KAAK;yCACX,OAAO,MAAM;0CACZ,GAAG,OAAO,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;;yCAExC,GAAG,OAAO,MAAM,MAAM,OAAO,MAAM,WAAW,CAAC;;;;2CAI7C,GAAG,OAAO,MAAM,OAAO,KAAK,CAAC;YAC5D,WAAW,gBAAgB,EAAE,OAAO,MAAM,CAAC,CAAC;YAC5C,WAAW,eAAe,EAAE,OAAO,MAAM,CAAC,CAAC;;;mCAGpB,GAAG,OAAO,MAAM,OAAO,KAAK,CAAC;YACpD,WAAW,OAAO,EAAE,OAAO,MAAM,CAAC,CAAC;;;0CAGL,GAAG,OAAO,MAAM,OAAO,MAAM,UAAU,WAAW,OAAO,CAAC;YACxF,WAAW,oBAAoB,EAAE,OAAO,GAAG,MAAM,UAAU,WAAW,MAAM,EAAE,CAAC,CAAC;YAChF,WAAW,mBAAmB,EAAE,OAAO,GAAG,MAAM,UAAU,WAAW,KAAK,EAAE,CAAC,CAAC;;;;oBAItE,QAAQ;;;;;;AAO5B,IAAa,2BAAb,cAA8C,UAAU,gBAAgB,CAAC;;iBAC7C;;;yBACD;;;AAG3B,eAAe,OAAO,yBAAyB,SAAS,yBAAyB"}
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 error,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n overlay,\n playbackRate,\n popup,\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/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 <!--<div class=\"${error.root}\" role=\"alertdialog\" aria-labelledby=\"media-error-title\" aria-describedby=\"media-error-description\">\n <div class=\"${error.dialog}\">\n <div class=\"${error.content}\">\n <p id=\"media-error-title\" class=\"${error.title}\">Something went wrong.</p>\n <p id=\"media-error-description\" class=\"${error.description}\">An error occurred while trying to play the video. Please try again.</p>\n </div>\n <div class=\"${error.actions}\">\n <button type=\"button\" class=\"${cn(button.base, button.default)}\">OK</button>\n </div>\n </div>\n </div>-->\n\n <media-controls data-controls=\"\" class=\"${controls}\">\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 </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-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,18 +1,18 @@
1
1
  //#region ../icons/dist/render/default/index.js
2
2
  const icons = {
3
- "captions-off": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" viewBox="0 0 18 18"><rect width="16" height="12" x="1" y="3" stroke="currentColor" stroke-width="2" rx="3"/><rect width="3" height="2" x="3" y="8" fill="currentColor" rx="1"/><rect width="2" height="2" x="13" y="8" fill="currentColor" rx="1"/><rect width="4" height="2" x="11" y="11" fill="currentColor" rx="1"/><rect width="5" height="2" x="7" y="8" fill="currentColor" rx="1"/><rect width="7" height="2" x="3" y="11" fill="currentColor" rx="1"/></svg>`,
4
- "captions-on": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" viewBox="0 0 18 18"><path fill="currentColor" d="M15 2a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3zM4 11a1 1 0 1 0 0 2h5a1 1 0 1 0 0-2zm8 0a1 1 0 1 0 0 2h2a1 1 0 1 0 0-2zM4 8a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2zm4 0a1 1 0 0 0 0 2h3a1 1 0 1 0 0-2zm6 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/></svg>`,
5
- "fullscreen-enter": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" 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
- "fullscreen-exit": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" 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
- "pause": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" 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" 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>`,
9
- "play": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" 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
- "restart": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" 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
- "seek": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" 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>`,
12
- "spinner": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 18 18"><rect width="2" height="5" x="8" y=".5" opacity=".5" rx="1"><animate attributeName="opacity" begin="0s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect><rect width="2" height="5" x="12.243" y="2.257" opacity=".45" rx="1" transform="rotate(45 13.243 4.757)"><animate attributeName="opacity" begin="0.125s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect><rect width="5" height="2" x="12.5" y="8" opacity=".4" rx="1"><animate attributeName="opacity" begin="0.25s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect><rect width="5" height="2" x="10.743" y="12.243" opacity=".35" rx="1" transform="rotate(45 13.243 13.243)"><animate attributeName="opacity" begin="0.375s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect><rect width="2" height="5" x="8" y="12.5" opacity=".3" rx="1"><animate attributeName="opacity" begin="0.5s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect><rect width="2" height="5" x="3.757" y="10.743" opacity=".25" rx="1" transform="rotate(45 4.757 13.243)"><animate attributeName="opacity" begin="0.625s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect><rect width="5" height="2" x=".5" y="8" opacity=".15" rx="1"><animate attributeName="opacity" begin="0.75s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect><rect width="5" height="2" x="2.257" y="3.757" opacity=".1" rx="1" transform="rotate(45 4.757 4.757)"><animate attributeName="opacity" begin="0.875s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect></svg>`,
13
- "volume-high": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" viewBox="0 0 18 18"><path fill="currentColor" d="M15.6 3.3c-.4-.4-1-.4-1.4 0s-.4 1 0 1.4C15.4 5.9 16 7.4 16 9s-.6 3.1-1.8 4.3c-.4.4-.4 1 0 1.4.2.2.5.3.7.3.3 0 .5-.1.7-.3C17.1 13.2 18 11.2 18 9s-.9-4.2-2.4-5.7"/><path fill="currentColor" d="M.714 6.008h3.072l4.071-3.857c.5-.376 1.143 0 1.143.601V15.28c0 .602-.643.903-1.143.602l-4.071-3.858H.714c-.428 0-.714-.3-.714-.752V6.76c0-.451.286-.752.714-.752m10.568.59a.91.91 0 0 1 0-1.316.91.91 0 0 1 1.316 0c1.203 1.203 1.47 2.216 1.522 3.208q.012.255.011.51c0 1.16-.358 2.733-1.533 3.803a.7.7 0 0 1-.298.156c-.382.106-.873-.011-1.018-.156a.91.91 0 0 1 0-1.316c.57-.57.995-1.551.995-2.487 0-.944-.26-1.667-.995-2.402"/></svg>`,
14
- "volume-low": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" viewBox="0 0 18 18"><path fill="currentColor" d="M.714 6.008h3.072l4.071-3.857c.5-.376 1.143 0 1.143.601V15.28c0 .602-.643.903-1.143.602l-4.071-3.858H.714c-.428 0-.714-.3-.714-.752V6.76c0-.451.286-.752.714-.752m10.568.59a.91.91 0 0 1 0-1.316.91.91 0 0 1 1.316 0c1.203 1.203 1.47 2.216 1.522 3.208q.012.255.011.51c0 1.16-.358 2.733-1.533 3.803a.7.7 0 0 1-.298.156c-.382.106-.873-.011-1.018-.156a.91.91 0 0 1 0-1.316c.57-.57.995-1.551.995-2.487 0-.944-.26-1.667-.995-2.402"/></svg>`,
15
- "volume-off": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" viewBox="0 0 18 18"><path fill="currentColor" d="M.714 6.008h3.072l4.071-3.857c.5-.376 1.143 0 1.143.601V15.28c0 .602-.643.903-1.143.602l-4.071-3.858H.714c-.428 0-.714-.3-.714-.752V6.76c0-.451.286-.752.714-.752M14.5 7.586l-1.768-1.768a1 1 0 1 0-1.414 1.414L13.085 9l-1.767 1.768a1 1 0 0 0 1.414 1.414l1.768-1.768 1.768 1.768a1 1 0 0 0 1.414-1.414L15.914 9l1.768-1.768a1 1 0 0 0-1.414-1.414z"/></svg>`
3
+ "captions-off": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" aria-hidden="true" viewBox="0 0 18 18"><rect width="16" height="12" x="1" y="3" stroke="currentColor" stroke-width="2" rx="3"/><rect width="3" height="2" x="3" y="8" fill="currentColor" rx="1"/><rect width="2" height="2" x="13" y="8" fill="currentColor" rx="1"/><rect width="4" height="2" x="11" y="11" fill="currentColor" rx="1"/><rect width="5" height="2" x="7" y="8" fill="currentColor" rx="1"/><rect width="7" height="2" x="3" y="11" fill="currentColor" rx="1"/></svg>`,
4
+ "captions-on": `<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="M15 2a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3zM4 11a1 1 0 1 0 0 2h5a1 1 0 1 0 0-2zm8 0a1 1 0 1 0 0 2h2a1 1 0 1 0 0-2zM4 8a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2zm4 0a1 1 0 0 0 0 2h3a1 1 0 1 0 0-2zm6 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/></svg>`,
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
+ "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
+ "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>`,
9
+ "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
+ "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
+ "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>`,
12
+ "spinner": `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" aria-hidden="true" viewBox="0 0 18 18"><rect width="2" height="5" x="8" y=".5" opacity=".5" rx="1"><animate attributeName="opacity" begin="0s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect><rect width="2" height="5" x="12.243" y="2.257" opacity=".45" rx="1" transform="rotate(45 13.243 4.757)"><animate attributeName="opacity" begin="0.125s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect><rect width="5" height="2" x="12.5" y="8" opacity=".4" rx="1"><animate attributeName="opacity" begin="0.25s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect><rect width="5" height="2" x="10.743" y="12.243" opacity=".35" rx="1" transform="rotate(45 13.243 13.243)"><animate attributeName="opacity" begin="0.375s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect><rect width="2" height="5" x="8" y="12.5" opacity=".3" rx="1"><animate attributeName="opacity" begin="0.5s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect><rect width="2" height="5" x="3.757" y="10.743" opacity=".25" rx="1" transform="rotate(45 4.757 13.243)"><animate attributeName="opacity" begin="0.625s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect><rect width="5" height="2" x=".5" y="8" opacity=".15" rx="1"><animate attributeName="opacity" begin="0.75s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect><rect width="5" height="2" x="2.257" y="3.757" opacity=".1" rx="1" transform="rotate(45 4.757 4.757)"><animate attributeName="opacity" begin="0.875s" calcMode="linear" dur="1s" repeatCount="indefinite" values="1;0"/></rect></svg>`,
13
+ "volume-high": `<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="M15.6 3.3c-.4-.4-1-.4-1.4 0s-.4 1 0 1.4C15.4 5.9 16 7.4 16 9s-.6 3.1-1.8 4.3c-.4.4-.4 1 0 1.4.2.2.5.3.7.3.3 0 .5-.1.7-.3C17.1 13.2 18 11.2 18 9s-.9-4.2-2.4-5.7"/><path fill="currentColor" d="M.714 6.008h3.072l4.071-3.857c.5-.376 1.143 0 1.143.601V15.28c0 .602-.643.903-1.143.602l-4.071-3.858H.714c-.428 0-.714-.3-.714-.752V6.76c0-.451.286-.752.714-.752m10.568.59a.91.91 0 0 1 0-1.316.91.91 0 0 1 1.316 0c1.203 1.203 1.47 2.216 1.522 3.208q.012.255.011.51c0 1.16-.358 2.733-1.533 3.803a.7.7 0 0 1-.298.156c-.382.106-.873-.011-1.018-.156a.91.91 0 0 1 0-1.316c.57-.57.995-1.551.995-2.487 0-.944-.26-1.667-.995-2.402"/></svg>`,
14
+ "volume-low": `<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="M.714 6.008h3.072l4.071-3.857c.5-.376 1.143 0 1.143.601V15.28c0 .602-.643.903-1.143.602l-4.071-3.858H.714c-.428 0-.714-.3-.714-.752V6.76c0-.451.286-.752.714-.752m10.568.59a.91.91 0 0 1 0-1.316.91.91 0 0 1 1.316 0c1.203 1.203 1.47 2.216 1.522 3.208q.012.255.011.51c0 1.16-.358 2.733-1.533 3.803a.7.7 0 0 1-.298.156c-.382.106-.873-.011-1.018-.156a.91.91 0 0 1 0-1.316c.57-.57.995-1.551.995-2.487 0-.944-.26-1.667-.995-2.402"/></svg>`,
15
+ "volume-off": `<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="M.714 6.008h3.072l4.071-3.857c.5-.376 1.143 0 1.143.601V15.28c0 .602-.643.903-1.143.602l-4.071-3.858H.714c-.428 0-.714-.3-.714-.752V6.76c0-.451.286-.752.714-.752M14.5 7.586l-1.768-1.768a1 1 0 1 0-1.414 1.414L13.085 9l-1.767 1.768a1 1 0 0 0 1.414 1.414l1.768-1.768 1.768 1.768a1 1 0 0 0 1.414-1.414L15.914 9l1.768-1.768a1 1 0 0 0-1.414-1.414z"/></svg>`
16
16
  };
17
17
  function renderIcon(name, attrs) {
18
18
  const svg = icons[name];